Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 0 additions & 48 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,51 +65,3 @@ jobs:
--ignore-filename-regex
'(/rustc/|/target/|/.cargo/(registry|git)/|/.rustup/toolchains/|/(tests|examples|benches)/)'
--fail-under-lines 90

chrome-extension:
name: Chrome Extension
runs-on: ubuntu-latest
defaults:
run:
working-directory: extension
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false

- uses: actions/setup-node@v7
with:
node-version: 24
cache: npm
cache-dependency-path: extension/package-lock.json

- name: Install dependencies
run: npm ci

- name: Lint, typecheck, unit test, and build
run: npm run verify

- name: Install Playwright Chromium
run: npx playwright install --with-deps chromium

- name: Run extension end-to-end tests
run: npm run test:e2e

- name: Build deterministic release archive
run: npm run package

- name: Upload release archive
uses: actions/upload-artifact@v7
with:
name: tinyflows-chrome-extension
path: |
extension/artifacts/*.zip
extension/artifacts/*.sha256

- name: Upload Playwright traces on failure
if: failure()
uses: actions/upload-artifact@v7
with:
name: chrome-extension-playwright-traces
path: extension/test-results/
if-no-files-found: ignore
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
needs it and should not have to pull in a process runner and an HTTP client to
get it. Still re-exported from `caps::host::mocks`.

### Removed

- **Breaking: the Chrome workflow companion has been removed.** The
`chrome-extension` feature, `tinyflows::browser` and `tinyflows::companion`
modules, companion CLI, MV3 extension package, browser protocol fixtures, and
their dedicated CI job no longer ship. This also removes the crate's `axum`
dependency. Browser automation remains a host concern that can be exposed
through the existing `ToolInvoker` capability.

### Fixed

- A node that failed once and then **succeeded on retry** is no longer reported
Expand Down
110 changes: 0 additions & 110 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 1 addition & 12 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ repository = "https://github.com/tinyhumansai/tinyflows"
homepage = "https://github.com/tinyhumansai/tinyflows"
documentation = "https://docs.rs/tinyflows"
keywords = ["automation", "workflow", "orchestration", "pipeline"]
categories = ["command-line-utilities", "development-tools"]
categories = ["development-tools"]
# Anchored with a leading `/` so a bare name like `README.md` doesn't also match
# nested files (e.g. the gitignored `local/**/README.md`) and leak them into the
# published package.
Expand All @@ -26,14 +26,8 @@ include = [
"/Cargo.toml",
"/README.md",
"/LICENSE",
"/extension/dist/**",
]

[[bin]]
name = "tinyflows"
path = "src/main.rs"
required-features = ["chrome-extension"]

[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
Expand All @@ -44,7 +38,6 @@ futures-util = { version = "0.3", default-features = false, features = ["async-a
getrandom = "0.4"
tracing = { version = "0.1", default-features = false, features = ["std"] }
tokio = { version = "1", features = ["macros", "rt-multi-thread", "sync", "time"] }
axum = { version = "0.8", default-features = false, features = ["http1", "json", "ws"], optional = true }
reqwest = { version = "0.13", default-features = false, features = ["json"], optional = true }
# `caps::host` only: hashing an author-supplied state key (and namespace) into
# one safe path component, and staging a script in a temporary directory.
Expand All @@ -67,10 +60,6 @@ jaq-json = { version = "2.0.1", features = ["serde"] }
# and examples. Mocks are always available inside this crate's own tests.
default = []
mock = []
# Off by default; enables the Chrome browser protocol, native HTTP/WebSocket
# companion, and the `tinyflows` companion CLI. The core engine has no listener
# or HTTP client unless a host selects this feature (or `host-caps` below).
chrome-extension = ["dep:axum", "dep:reqwest", "tokio/net"]
# Off by default; enables `caps::host` — ready-made capability implementations
# for a host that runs scripts as child processes of itself and keeps state on
# its own disk. Off by default because a host with a sandbox wants none of it,
Expand Down
20 changes: 1 addition & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,6 @@ Rust 2024 · MSRV 1.85 · `#![forbid(unsafe_code)]` · GPL-3.0-or-later.
secrets; the crate never sees them.
- Versioned wire format: graph `schema_version` and per-node `type_version`, with
a `migrate` framework for load-time upgrades.
- Optional Chrome workflow companion (behind the `chrome-extension` Cargo
feature): a native loopback relay and MV3 extension
execute explicit `tool_call` nodes with `slug: "browser"` in user-shared tabs,
while every other tool remains with the embedding host's invoker.

## How it works

```text
Expand Down Expand Up @@ -397,22 +392,9 @@ Install Rust 1.85 or newer with [rustup](https://rustup.rs/), then:
```sh
cargo build
cargo test # unit + compiler + engine tests (mocks auto-available)
cargo test --all-features # also exercises optional host and Chrome support
```

The Chrome extension is a separate local package:

```sh
cd extension
npm ci
npm run verify
npm run test:e2e
npm run package
cargo test --all-features # also exercises optional host support
```

See [Chrome workflow companion](docs/chrome-extension.md) for installation,
pairing, the browser node contract, and the security boundary.

The crate is `#![forbid(unsafe_code)]` and fully documented
(`#![warn(missing_docs)]`). The CI gate is:

Expand Down
Loading