paseo-room 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +42 -20
  2. package/dist/index.js +290 -170
  3. package/dist/index.js.map +1 -1
  4. package/dist/plugin-assets/paseo-plugin.json +1 -1
  5. package/dist/prompts/contract/supervisor.md +22 -1
  6. package/dist/prompts/runtime/handoff-request.md +5 -4
  7. package/dist/prompts/runtime/successor-kickoff.md +3 -2
  8. package/dist/runtime-plugin/client/attention-settings.tsx +74 -47
  9. package/dist/runtime-plugin/client/context-settings.tsx +28 -3
  10. package/dist/runtime-plugin/client/data.ts +9 -0
  11. package/dist/runtime-plugin/client/effort-settings.tsx +38 -27
  12. package/dist/runtime-plugin/client/kit.tsx +88 -4
  13. package/dist/runtime-plugin/client/model.ts +217 -26
  14. package/dist/runtime-plugin/client/pills.ts +3 -1
  15. package/dist/runtime-plugin/client/record.tsx +177 -52
  16. package/dist/runtime-plugin/client/room.tsx +174 -109
  17. package/dist/runtime-plugin/client/time.ts +41 -1
  18. package/dist/runtime-plugin/client/views.tsx +42 -33
  19. package/dist/runtime-plugin/paseo-plugin.json +1 -1
  20. package/dist/runtime-plugin/server/attention/delivery.ts +21 -6
  21. package/dist/runtime-plugin/server/attention/engine.ts +28 -8
  22. package/dist/runtime-plugin/server/attention/log.ts +68 -3
  23. package/dist/runtime-plugin/server/attention/observer.ts +42 -10
  24. package/dist/runtime-plugin/server/attention/succession-store.ts +8 -2
  25. package/dist/runtime-plugin/server/attention/succession.ts +87 -17
  26. package/dist/runtime-plugin/server/brief.ts +9 -12
  27. package/dist/runtime-plugin/server/context.ts +2 -1
  28. package/dist/runtime-plugin/server/contracts/actions.ts +11 -4
  29. package/dist/runtime-plugin/server/controller.ts +29 -14
  30. package/dist/runtime-plugin/server/domain/state.ts +7 -3
  31. package/dist/runtime-plugin/server/events/schema.ts +3 -0
  32. package/dist/runtime-plugin/server/git.ts +8 -4
  33. package/dist/runtime-plugin/server/handlers/actions.ts +27 -8
  34. package/dist/runtime-plugin/server/notices.ts +136 -50
  35. package/dist/runtime-plugin/server/panel.ts +120 -0
  36. package/dist/runtime-plugin/server/paseo-port.ts +23 -0
  37. package/dist/runtime-plugin/server/recovery.ts +2 -5
  38. package/dist/runtime-plugin/server/rpc.ts +39 -12
  39. package/dist/runtime-plugin/server/store/project.ts +29 -10
  40. package/dist/runtime-plugin/server/tools.ts +7 -3
  41. package/dist/runtime-plugin/shared/identity.ts +31 -10
  42. package/dist/runtime-plugin/shared/names.ts +16 -0
  43. package/dist/runtime-plugin/shared/panel.ts +34 -0
  44. package/dist/runtime-plugin/shared/policy.ts +5 -1
  45. package/dist/runtime-plugin/shared/rpc-contracts.ts +1 -1
  46. package/dist/runtime-plugin/shared/seat-context.ts +4 -0
  47. package/dist/runtime-plugin/shared/states.ts +6 -0
  48. package/package.json +1 -1
package/README.md CHANGED
@@ -73,9 +73,9 @@ starts, its exit code is preserved; a signal is returned using the conventional
73
73
  - A running Paseo daemon with CLI and daemon on the same version. Codex requires
74
74
  **0.8.0-beta.1 or newer**; any selection containing Claude or Pi requires **0.8.0 or newer**.
75
75
  Claude also requires Paseo plugins to be enabled explicitly: the generated trusted server plugin
76
- is the strong contract carrier, and `paseo-room` never enables plugins for you. The plugin is
77
- version-bounded to `>=0.8.0 <0.10.0`. `paseo-room` checks compatibility before touching anything,
78
- and never installs or upgrades Paseo.
76
+ is the strong contract carrier, and `paseo-room` never enables plugins for you. The plugin
77
+ requires Paseo `>=0.8.0` and has no upper bound. `paseo-room` checks compatibility before
78
+ touching anything, and never installs or upgrades Paseo.
79
79
  - An initialised Codex home (`~/.codex/config.toml`) and/or Claude Code home (`~/.claude`).
80
80
  Codex must be new enough for `codex debug models` to print its JSON model catalog: the room
81
81
  seats Codex only if it can generate the scrubbed catalog copy.
@@ -98,7 +98,7 @@ starts, its exit code is preserved; a signal is returned using the conventional
98
98
  SKILL.md, references/ # procedure plus a scaffold loaded only when the skill runs
99
99
  room/skill-projections/<agent>/lead/ # exact Lead skill aggregate for each seated agent
100
100
  plugin/ # Claude only: trusted creation-time system-prompt append carrier
101
- paseo-plugin.json # accepts Paseo >=0.8.0 <0.10.0
101
+ paseo-plugin.json # accepts Paseo >=0.8.0
102
102
  index.server.ts, server/ # exact provider map + generated role contracts
103
103
  roles/codex/<role>/
104
104
  config.toml # your config.toml + the room's overrides
@@ -620,9 +620,10 @@ npx paseo-room verify
620
620
  - **Trust.** Like the carrier, the runtime is trusted, unsandboxed code running in your daemon.
621
621
  Enable Paseo plugins yourself; `paseo-room` never does. It is not an operating-system sandbox and
622
622
  cannot stop a process running as your user.
623
- - **Range.** Runtime requires Paseo `>=0.8.0 <0.10.0`. `0.8.0` and `0.9.1` are both live-qualified
624
- points, so a daemon outside that range is refused for runtime while the baseline room keeps
625
- working.
623
+ - **Range.** Runtime requires Paseo `>=0.8.0`, with no upper bound: Paseo releases faster than each
624
+ release could be checked first, so a newer one is accepted unread. `0.8.0` and `0.9.1` are
625
+ live-qualified, and `0.10.1` was compared file by file with `0.9.2`. If a release breaks the
626
+ plugin, Paseo reports it `failed` and `verify` fails with the load error.
626
627
  - **Lead** gains room tools such as `assignment_create`, `assignment_dispatch`, `assignment_answer`,
627
628
  `assignment_accept`, `gate_run`, and for isolated writers `workspace_close` and `lease_reclaim`.
628
629
  `assignment_create` refuses a base that is not a commit of the repository (`base_unknown`).
@@ -648,6 +649,8 @@ npx paseo-room verify
648
649
  Room seats › Seat context** sets marks per role, as a share of each seat's own model window:
649
650
  - *Lead · report at* (30%): past it, the Lead's Supervisor gets one fact line and the panel shows
650
651
  it with **Replace Lead…**, so you can hand over to a fresh Lead rather than let this one compact.
652
+ The Supervisor may then replace that Lead itself, as below. Turning the mark off leaves
653
+ replacing a Lead to you alone.
651
654
  - *compact at* (Lead 50%, Supervisor and Peer off): a room Claude seat gets
652
655
  `CLAUDE_CODE_AUTO_COMPACT_WINDOW` when its session opens, at creation or on a resume after a
653
656
  daemon restart, so Claude compacts at that share instead of near the end of a 1M window. An open
@@ -667,18 +670,28 @@ npx paseo-room verify
667
670
  cleans or stashes, and releases a writer only after Paseo proves the Peer archived.
668
671
  - **State** lives under `~/.paseo-room/runtime/v1` as append-only event files. Setup never edits it.
669
672
  - **The Room runtime panel** (sidebar item, and a workspace panel that opens on its own project)
670
- puts what needs you first. Below that come your projects, ordered by status, then your
671
- Supervisors.
672
- - A project shows its Supervisor, its Lead and Peer seats (each opens its agent in Paseo, and
673
- shows the model and thinking option it runs with) and its runtime record: assignments, isolated
674
- writers, findings and recovery.
673
+ puts what needs you first. Below that come your projects, then your Supervisors.
674
+ - Each project is one line: a status mark whose shape says it (needs a look, working, idle, or
675
+ asleep — its sessions closed, resumed by opening one or a message), then what it is doing, such
676
+ as *Lead idle · 1 of 2 Peers working · 3 open · 1 waiting on Lead*, and when it last did
677
+ something. Projects needing a look come first, then working, idle and asleep ones, the most
678
+ recently active first. Projects with no live seat fold into one *inactive* line, unless
679
+ dispatched work there is still undecided or a Lead replacement is in progress.
680
+ - A project shows who watches it, its Lead and Peer seats (each opens its agent in Paseo, and
681
+ shows the model and thinking option it runs with, the worktree or main checkout it works in, and
682
+ its context as a bar with a tick at its mark), recent activity (dispatches, handbacks, gates and
683
+ decisions, with who did them), and its assignments: open ones first, the most recently updated on
684
+ top, and finished ones by day with when they settled and how long they took, twenty at a time.
685
+ An assignment shows its brief, Peer, evidence and history.
675
686
  - Starting a Supervisor, adding a repository, starting a Lead for a project that has none, and
676
- assigning a Supervisor are guided forms.
687
+ assigning a Supervisor are guided forms. The bell and people icons open the two settings
688
+ screens.
677
689
  - The design notes are in [docs/design/runtime-panel-ux.md](docs/design/runtime-panel-ux.md).
678
690
  - **Settings › Room seats** shows which account each seat is signed in to (email, plan and
679
691
  organization for Claude; login method for Codex; for Pi, only whether a credential file exists).
680
692
  It runs each seat's own `claude auth status` or `codex login status` when you open it or press
681
- Refresh, and never reads a credential file. A seat linked to another home's login is flagged.
693
+ Refresh, and never reads a credential file. A seat linked to another home's login is flagged, and
694
+ when seats sign in as more than one account, each gets a letter (*account A*, *account B*).
682
695
 
683
696
  ### Room attention: what reaches a Supervisor
684
697
 
@@ -734,8 +747,17 @@ learn only when you ask it to check.
734
747
  before the archive stays on the project's screen for a day, with the reason.
735
748
  - Paseo archives the seats in the Lead's workspace with it; the runtime archives them too when the
736
749
  Lead is not running, when Paseo would take none.
737
- - **Settings › Room attention.** Here you turn letters on or off, change their thresholds, and
738
- configure the optional **attention sensor**.
750
+ - **The Supervisor may do the same**, but only for a Lead of its own project that is past its
751
+ rotation mark, through the runtime's `lead_replace_*` tools. The runtime refuses a Lead below
752
+ the mark and applies the same quiet-point checks. The Supervisor reviews the handoff against the
753
+ repository, confirms it, and tells you which Lead now owns the project. The panel shows a
754
+ replacement the Supervisor started, and you may cancel it until it completes. Any other reason to
755
+ replace a Lead stays yours.
756
+ - **Settings › Room attention.** Here you turn letters on or off, see what reached Supervisors in
757
+ the last 24 hours (letters by level, incidents, Lead turns by what was decided, and the ratings you
758
+ or a Supervisor gave), change when a Supervisor is told and how often, and configure the optional
759
+ **attention sensor** in the order it is set up: mode and state, connection, privacy, then the
760
+ shadow evaluation beside the switch that lets it assist.
739
761
  - The sensor speaks the System One HTTP shape, with [TypeSafe Jev](https://docs.typesafe.ai/)
740
762
  first and any compatible or self-hosted endpoint after it. It is `off` by default.
741
763
  - Without a TypeSafe key, use Jev through OpenRouter: endpoint
@@ -766,7 +788,7 @@ and the refusal is final for that dispatch — narrow or sequence the work:
766
788
 
767
789
  | Code | Why |
768
790
  |---|---|
769
- | `worktree_unqualified` | the daemon's version has not passed live qualification for worktree dispatch |
791
+ | `worktree_unqualified` | the daemon is older than `0.9.1`, the first Paseo release worktree dispatch was qualified on, or runs a prerelease |
770
792
  | `worktree_setup_unobservable` | `paseo.json` at the base declares `worktree.setup`, which Paseo runs where the runtime cannot see it finish |
771
793
  | `scope_not_canonical` | a `writeScope` or `serialOnly` item is not a repository-relative path or `*`/`?`/`**` glob |
772
794
  | `writer_exclusive` | a writer is still active in Lead's workspace (or, the other way round, isolated writers are active) |
@@ -789,9 +811,9 @@ the same worktree at the next lease epoch; the old Peer's late reports are refus
789
811
  the Human form of both, only where the runtime would accept it, and asks twice before discarding
790
812
  work.
791
813
 
792
- Worktree dispatch is enabled per daemon version, only after the live qualification in the Phase 2
793
- delta §9 passes on that version; `0.9.1` is qualified. On any other version the runtime refuses
794
- `worktree_unqualified` and dispatch without isolation still works.
814
+ Worktree dispatch is enabled on every Paseo release the runtime accepts from `0.9.1`, the release
815
+ that passed the live qualification in the Phase 2 delta §9. An earlier release, or a prerelease or
816
+ build-stamped version, refuses `worktree_unqualified`, and dispatch without isolation still works.
795
817
 
796
818
  To stop using it, finish, close or abandon the recorded work, then run setup **without**
797
819
  `--runtime`. Setup refuses while anything is still active or uncertain — including an isolated