mirror of
https://github.com/openprose/prose.git
synced 2026-09-19 05:55:05 +08:00
27ac01e8f0
Production-ready DX + release prep for the reactor CLI (packages/reactor-cli): - `reactor init [dir]`: scaffold a minimal .prose project (gateway + responsibility) + reactor.yml (sandbox.mode:none, a static-connector gateway) + .gitignore for .reactor/ + a project README. Keyless (no model surface); refuses to clobber without --force. `reactor compile --check` RECOGNIZES the scaffold (real contract-set fingerprint -> stale, not the no-contracts error), and the contracts compile to a mountable IR under a fake provider. - doctor polish: now reports the project sandbox mode (+ Docker availability when mode:docker), state-dir writability, and compiled-IR freshness (no-contracts/absent/stale/fresh). `--live` probes one smoke render by dynamic-importing the live checks from the agent-render barrel (correction #8); key PRESENCE is reported, never printed. Added `--json`. Stays keyless on the report path (live deps reached only via dynamic import under --live). - README: quickstart, full command reference + documented exit codes, the compile -> run -> serve reference-client narrative, the cost-scales-with- surprise story, across-reactor --concurrency semantics, and the Change-B within-reactor-parallelism deferral note. examples/ (quickstart + gateway-connector) run end-to-end offline from a fresh checkout, guarded by an examples gate. - npm pack is CLEAN: split the test compile into dist-test (tsconfig.test.json) so the production `build` (tsconfig.build.json) excludes the test suite; the published artifact ships dist/ + README.md + examples/ only — no test scaffolding. bin wired to dist/cli.js. Gate: CLI offline 76/76/0 (init + doctor + examples suites added); SDK offline 421/414/0/7 (no regression, SDK untouched). --help for every command; init/doctor recognized + honest keyless. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
quickstart example
A gateway (inbox) + a responsibility (digest) — the smallest end-to-end shape
with a real edge. This is what reactor init scaffolds.
Offline (no key needed)
reactor doctor # honest health report (sandbox none, IR absent)
reactor compile --check # exits 1 (stale): the project is recognized, not yet compiled
Live (needs OPENROUTER_API_KEY + @openai/agents + zod)
reactor compile # run the compile sessions -> IR cache
reactor topology # offline now: the compiled DAG (inbox -> digest)
reactor run # boot, drain, print dispositions + cost
reactor status # standing compile cost + run cost
digest subscribes to inbox's items facet, so when the inbox set moves the
digest re-renders — and only then.