@north-light/crouter 0.3.170 → 0.3.172
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.
- package/dist/api/client.d.ts +37 -11
- package/dist/api/client.js +84 -15
- package/dist/api/dto/human.d.ts +53 -39
- package/dist/api/dto/human.js +2 -3
- package/dist/api/dto/inbox.d.ts +0 -1
- package/dist/api/dto/nodes.d.ts +12 -0
- package/dist/api/dto/review-comments.d.ts +137 -0
- package/dist/api/dto/review-comments.js +5 -0
- package/dist/api/dto/reviews.d.ts +109 -0
- package/dist/api/dto/reviews.js +5 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +2 -0
- package/dist/api/routes.d.ts +17 -4
- package/dist/api/routes.js +21 -5
- package/dist/build-root.d.ts +1 -16
- package/dist/build-root.js +1 -25
- package/dist/builtin-memory/00-runtime-base.md +7 -5
- package/dist/builtin-memory/04-base-worker.md +1 -1
- package/dist/builtin-memory/04-orchestration-kernel.md +7 -7
- package/dist/builtin-memory/05-kinds/design/00-base.md +1 -1
- package/dist/builtin-memory/05-kinds/design/01-orchestrator.md +1 -1
- package/dist/builtin-memory/05-kinds/developer/00-base.md +1 -1
- package/dist/builtin-memory/05-kinds/explore/00-base.md +1 -1
- package/dist/builtin-memory/05-kinds/plan/00-base.md +1 -1
- package/dist/builtin-memory/05-kinds/plan/01-orchestrator.md +1 -1
- package/dist/builtin-memory/05-kinds/review/00-base.md +1 -1
- package/dist/builtin-memory/05-kinds/review/companion/00-base.md +20 -0
- package/dist/builtin-memory/05-kinds/spec/00-base.md +3 -7
- package/dist/builtin-memory/05-kinds/spec/01-orchestrator.md +3 -3
- package/dist/builtin-memory/05-kinds/spec/requirements.md +3 -3
- package/dist/builtin-memory/design.md +2 -2
- package/dist/builtin-memory/insights/capture.md +50 -0
- package/dist/builtin-memory/insights/init.md +45 -0
- package/dist/builtin-memory/insights/listen.md +9 -0
- package/dist/builtin-memory/internal/agent-shaping.md +2 -2
- package/dist/builtin-memory/internal/nodes-and-canvas.md +1 -1
- package/dist/builtin-memory/internal/plugins.md +12 -11
- package/dist/builtin-memory/internal/storage-tiers.md +2 -2
- package/dist/builtin-memory/{planning.md → plan/roadmap.md} +3 -3
- package/dist/builtin-memory/plan.md +19 -0
- package/dist/builtin-memory/spec/guide.md +38 -0
- package/dist/builtin-memory/spec/requirements.md +31 -0
- package/dist/builtin-memory/spec/roadmap.md +35 -0
- package/dist/builtin-memory/spec.md +10 -86
- package/dist/builtin-pi-packages/pi-crtr-extensions/README.md +3 -4
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/provider-rotation.test.ts +49 -5
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.d.ts +56 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.js +920 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +221 -156
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/statusline.ts +4 -5
- package/dist/cli.js +2 -6
- package/dist/clients/attach/__tests__/attach-chrome-remote.test.js +7 -35
- package/dist/clients/attach/__tests__/attach-keybindings.test.js +32 -16
- package/dist/clients/attach/__tests__/context-message.test.js +142 -6
- package/dist/clients/attach/__tests__/crtr-output.test.js +29 -45
- package/dist/clients/attach/__tests__/diagram.test.js +1 -1
- package/dist/clients/attach/__tests__/file-review-focus.test.js +48 -0
- package/dist/clients/attach/__tests__/group-activity.test.js +266 -0
- package/dist/clients/attach/__tests__/input-controller-extension-command.test.js +32 -0
- package/dist/clients/attach/__tests__/session-identity-refresh.test.js +32 -0
- package/dist/clients/attach/__tests__/titled-editor-preview.test.js +1 -2
- package/dist/clients/attach/chrome/header.d.ts +10 -0
- package/dist/clients/attach/chrome/header.js +30 -0
- package/dist/clients/attach/chrome/recap.d.ts +7 -0
- package/dist/clients/attach/chrome/recap.js +19 -0
- package/dist/clients/attach/chrome/status-line.d.ts +3 -0
- package/dist/clients/attach/chrome/status-line.js +5 -0
- package/dist/clients/attach/chrome/widgets.js +11 -21
- package/dist/clients/attach/command.js +11 -7
- package/dist/clients/attach/config.d.ts +4 -0
- package/dist/clients/attach/config.js +3 -0
- package/dist/clients/attach/input/controller.d.ts +19 -0
- package/dist/clients/attach/input/controller.js +62 -28
- package/dist/clients/attach/input/titled-editor.d.ts +0 -4
- package/dist/clients/attach/input/titled-editor.js +2 -10
- package/dist/clients/attach/overlays/file-review.d.ts +9 -5
- package/dist/clients/attach/overlays/file-review.js +9 -70
- package/dist/clients/attach/overlays/help.d.ts +33 -0
- package/dist/clients/attach/overlays/help.js +204 -0
- package/dist/clients/attach/render/activity-slot.d.ts +4 -0
- package/dist/clients/attach/render/activity-slot.js +13 -0
- package/dist/clients/attach/render/chat-view.d.ts +117 -12
- package/dist/clients/attach/render/chat-view.js +604 -135
- package/dist/clients/attach/render/context-message.d.ts +2 -1
- package/dist/clients/attach/render/context-message.js +17 -13
- package/dist/clients/attach/render/crtr-output.js +1 -3
- package/dist/clients/attach/render/diagram.js +2 -2
- package/dist/clients/attach/render/edit-diff.d.ts +4 -1
- package/dist/clients/attach/render/edit-diff.js +7 -11
- package/dist/clients/attach/render/group-activity.d.ts +32 -0
- package/dist/clients/attach/render/group-activity.js +206 -0
- package/dist/clients/attach/render/group-recap.d.ts +10 -0
- package/dist/clients/attach/render/group-recap.js +93 -0
- package/dist/clients/attach/render/html-markdown.d.ts +17 -0
- package/dist/clients/attach/render/html-markdown.js +228 -0
- package/dist/clients/attach/render/measured-container.d.ts +96 -0
- package/dist/clients/attach/render/measured-container.js +322 -0
- package/dist/clients/attach/render/scroll-animation.d.ts +8 -0
- package/dist/clients/attach/render/scroll-animation.js +80 -0
- package/dist/clients/attach/render/tool-calls.js +6 -6
- package/dist/clients/attach/render/transcript-copy.d.ts +9 -0
- package/dist/clients/attach/render/transcript-copy.js +81 -0
- package/dist/clients/attach/render/viewport.d.ts +29 -0
- package/dist/clients/attach/render/viewport.js +159 -0
- package/dist/clients/attach/session/bindings.d.ts +10 -7
- package/dist/clients/attach/session/bindings.js +23 -8
- package/dist/clients/attach/session/connection.js +4 -5
- package/dist/clients/attach/session/context.d.ts +6 -4
- package/dist/clients/attach/session/frame.d.ts +34 -0
- package/dist/clients/attach/session/frame.js +176 -0
- package/dist/clients/attach/session/frames.d.ts +4 -1
- package/dist/clients/attach/session/frames.js +14 -1
- package/dist/clients/attach/session/identity.js +4 -3
- package/dist/clients/attach/session/input-wiring.d.ts +14 -4
- package/dist/clients/attach/session/input-wiring.js +15 -13
- package/dist/clients/attach/session/invariant.d.ts +9 -0
- package/dist/clients/attach/session/invariant.js +15 -0
- package/dist/clients/attach/session/keys.d.ts +10 -2
- package/dist/clients/attach/session/keys.js +13 -5
- package/dist/clients/attach/session/layout.d.ts +10 -8
- package/dist/clients/attach/session/layout.js +33 -34
- package/dist/clients/attach/session/mouse.d.ts +18 -0
- package/dist/clients/attach/session/mouse.js +64 -0
- package/dist/clients/attach/session/pane-tag.d.ts +3 -0
- package/dist/clients/attach/session/pane-tag.js +51 -8
- package/dist/clients/attach/session/reconnect.d.ts +3 -0
- package/dist/clients/attach/session/reconnect.js +42 -5
- package/dist/clients/attach/session/surface-frame.d.ts +20 -0
- package/dist/clients/attach/session/surface-frame.js +73 -0
- package/dist/clients/attach/session/surface-host.d.ts +64 -0
- package/dist/clients/attach/session/surface-host.js +255 -0
- package/dist/clients/attach/session/whip.d.ts +17 -0
- package/dist/clients/attach/session/whip.js +334 -0
- package/dist/clients/attach/slash/dispatch.d.ts +13 -1
- package/dist/clients/attach/slash/dispatch.js +51 -29
- package/dist/clients/attach/viewer.js +907 -819
- package/dist/clients/conversation/conversation.d.ts +65 -0
- package/dist/clients/conversation/conversation.js +318 -0
- package/dist/clients/conversation/frames.d.ts +30 -0
- package/dist/clients/conversation/frames.js +52 -0
- package/dist/clients/conversation/region.d.ts +51 -0
- package/dist/clients/conversation/region.js +265 -0
- package/dist/clients/conversation/submit.d.ts +38 -0
- package/dist/clients/conversation/submit.js +51 -0
- package/dist/clients/inbox/__tests__/inbox-controller.test.js +247 -0
- package/dist/clients/inbox/__tests__/mount-panel.test.js +776 -0
- package/dist/clients/inbox/controller.d.ts +79 -0
- package/dist/clients/inbox/controller.js +448 -0
- package/dist/clients/inbox/deck-adapter.d.ts +29 -0
- package/dist/clients/inbox/deck-adapter.js +62 -0
- package/dist/clients/inbox/layout.d.ts +8 -0
- package/dist/clients/inbox/layout.js +9 -0
- package/dist/clients/inbox/resolve.d.ts +10 -0
- package/dist/clients/inbox/resolve.js +34 -0
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +29 -0
- package/dist/clients/inbox/review/__tests__/remap.test.js +196 -0
- package/dist/clients/inbox/review/__tests__/review-core.test.js +341 -0
- package/dist/clients/inbox/review/anchors.d.ts +41 -0
- package/dist/clients/inbox/review/anchors.js +89 -0
- package/dist/clients/inbox/review/columns.d.ts +22 -0
- package/dist/clients/inbox/review/columns.js +40 -0
- package/dist/clients/inbox/review/comments-client.d.ts +66 -0
- package/dist/clients/inbox/review/comments-client.js +98 -0
- package/dist/clients/inbox/review/composition.d.ts +60 -0
- package/dist/clients/inbox/review/composition.js +278 -0
- package/dist/clients/inbox/review/document-region.d.ts +120 -0
- package/dist/clients/inbox/review/document-region.js +902 -0
- package/dist/clients/inbox/review/frame.d.ts +45 -0
- package/dist/clients/inbox/review/frame.js +215 -0
- package/dist/clients/inbox/review/keys.d.ts +67 -0
- package/dist/clients/inbox/review/keys.js +130 -0
- package/dist/clients/inbox/review/launch.d.ts +10 -0
- package/dist/clients/inbox/review/launch.js +129 -0
- package/dist/clients/inbox/review/live-source.d.ts +24 -0
- package/dist/clients/inbox/review/live-source.js +160 -0
- package/dist/clients/inbox/review/nvim.d.ts +13 -0
- package/dist/clients/inbox/review/nvim.js +42 -0
- package/dist/clients/inbox/review/remap.d.ts +51 -0
- package/dist/clients/inbox/review/remap.js +157 -0
- package/dist/clients/inbox/review/review-client.d.ts +30 -0
- package/dist/clients/inbox/review/review-client.js +107 -0
- package/dist/clients/inbox/review/roundtrip.d.ts +5 -0
- package/dist/clients/inbox/review/roundtrip.js +36 -0
- package/dist/clients/inbox/review/state.d.ts +143 -0
- package/dist/clients/inbox/review/state.js +282 -0
- package/dist/clients/inbox/review-adapter.d.ts +29 -0
- package/dist/clients/inbox/review-adapter.js +92 -0
- package/dist/clients/inbox/review-visibility.d.ts +5 -0
- package/dist/clients/inbox/review-visibility.js +19 -0
- package/dist/clients/inbox/surface.d.ts +19 -0
- package/dist/clients/inbox/surface.js +128 -0
- package/dist/clients/inbox/tui/ansi.d.ts +66 -0
- package/dist/clients/inbox/tui/ansi.js +317 -0
- package/dist/clients/inbox/tui/clipboard.d.ts +2 -0
- package/dist/clients/inbox/tui/clipboard.js +26 -0
- package/dist/clients/inbox/tui/input.d.ts +7 -0
- package/dist/clients/inbox/tui/input.js +653 -0
- package/dist/clients/inbox/tui/keys.d.ts +28 -0
- package/dist/clients/inbox/tui/keys.js +111 -0
- package/dist/clients/inbox/tui/panel.d.ts +2 -0
- package/dist/clients/inbox/tui/panel.js +217 -0
- package/dist/clients/inbox/tui/render.d.ts +37 -0
- package/dist/clients/inbox/tui/render.js +476 -0
- package/dist/clients/inbox/tui/types.d.ts +57 -0
- package/dist/clients/inbox/tui/types.js +1 -0
- package/dist/clients/inbox/tui.d.ts +6 -0
- package/dist/clients/inbox/tui.js +74 -0
- package/dist/clients/surfaces/host.d.ts +66 -0
- package/dist/clients/surfaces/host.js +1 -0
- package/dist/clients/surfaces/region.d.ts +16 -0
- package/dist/clients/surfaces/region.js +1 -0
- package/dist/clients/web/__tests__/push-engine.test.js +14 -158
- package/dist/clients/web/dev-server.d.ts +3 -3
- package/dist/clients/web/dev-server.js +9 -23
- package/dist/clients/web/events.js +4 -6
- package/dist/clients/web/push-engine.d.ts +2 -66
- package/dist/clients/web/push-engine.js +30 -161
- package/dist/clients/web/push-registry.d.ts +0 -4
- package/dist/clients/web/push-registry.js +2 -7
- package/dist/clients/web/server.js +3 -35
- package/dist/clients/web/web-client/shared/protocol.d.ts +0 -108
- package/dist/clients/web/web-cmd.js +2 -2
- package/dist/commands/__tests__/human.test.js +27 -15
- package/dist/commands/api-client.js +3 -3
- package/dist/commands/canvas-browse.js +1 -1
- package/dist/commands/canvas-issue.js +1 -1
- package/dist/commands/canvas-use.js +1 -1
- package/dist/commands/human/doc.d.ts +2 -0
- package/dist/commands/human/doc.js +98 -0
- package/dist/commands/human/inbox.d.ts +2 -0
- package/dist/commands/human/inbox.js +101 -0
- package/dist/commands/human/prompts.d.ts +2 -3
- package/dist/commands/human/prompts.js +27 -180
- package/dist/commands/human/queue.d.ts +1 -5
- package/dist/commands/human/queue.js +54 -216
- package/dist/commands/human/review.d.ts +2 -0
- package/dist/commands/human/review.js +298 -0
- package/dist/commands/human/shared.d.ts +2 -69
- package/dist/commands/human/shared.js +1 -181
- package/dist/commands/human.js +15 -20
- package/dist/commands/memory/__tests__/lint.test.d.ts +1 -0
- package/dist/commands/memory/__tests__/lint.test.js +15 -0
- package/dist/commands/memory/delete.js +2 -2
- package/dist/commands/memory/lint.d.ts +1 -0
- package/dist/commands/memory/lint.js +21 -3
- package/dist/commands/memory/read.js +4 -4
- package/dist/commands/node.js +8 -7
- package/dist/commands/pkg/plugin-manage.js +143 -68
- package/dist/commands/surface-inspect.js +2 -2
- package/dist/commands/surface.js +6 -12
- package/dist/commands/sys/__tests__/setup-core.test.js +9 -5
- package/dist/commands/sys/__tests__/setup-front-door.test.js +7 -42
- package/dist/commands/sys/config.js +29 -3
- package/dist/commands/sys/feedback.js +1 -1
- package/dist/commands/sys/setup-core.d.ts +12 -11
- package/dist/commands/sys/setup-core.js +55 -46
- package/dist/commands/sys/setup-wizard.d.ts +4 -1
- package/dist/commands/sys/setup-wizard.js +50 -9
- package/dist/commands/sys/sync-deps.js +1 -1
- package/dist/commands/sys.js +4 -6
- package/dist/core/__tests__/broker-sdk-wiring.test.js +6 -1
- package/dist/core/__tests__/broker-snapshot-history.test.js +9 -1
- package/dist/core/__tests__/dead-node-policy-table.test.js +3 -4
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +8 -5
- package/dist/core/__tests__/fixtures/fake-engine.js +28 -2
- package/dist/core/__tests__/full/broker-provider-retry.test.js +87 -2
- package/dist/core/__tests__/full/broker-whip-interrupt.test.d.ts +1 -0
- package/dist/core/__tests__/full/broker-whip-interrupt.test.js +39 -0
- package/dist/core/__tests__/full/detach-focus.test.js +1 -1
- package/dist/core/__tests__/human-deliver-e2e.test.js +64 -64
- package/dist/core/__tests__/human-deliver.test.js +71 -345
- package/dist/core/__tests__/inline-memory-refs.test.js +2 -12
- package/dist/core/__tests__/memory-resolver-precedence.test.js +12 -15
- package/dist/core/__tests__/migration.test.js +10 -0
- package/dist/core/__tests__/model-pin-durability.test.js +14 -0
- package/dist/core/__tests__/phase4-review-migration.test.d.ts +1 -0
- package/dist/core/__tests__/phase4-review-migration.test.js +100 -0
- package/dist/core/__tests__/phase4-review-store.test.d.ts +1 -0
- package/dist/core/__tests__/phase4-review-store.test.js +143 -0
- package/dist/core/__tests__/remote-canvas-target.test.js +2 -2
- package/dist/core/__tests__/revive.test.js +22 -53
- package/dist/core/__tests__/session-cycles.test.js +48 -18
- package/dist/core/__tests__/spawn-no-kickoff.test.js +8 -12
- package/dist/core/__tests__/stop-guard.test.js +16 -1
- package/dist/core/__tests__/tmux-surface.test.js +21 -25
- package/dist/core/asset-root.d.ts +7 -0
- package/dist/core/asset-root.js +18 -0
- package/dist/core/broker-client/client.d.ts +0 -7
- package/dist/core/broker-client/client.js +4 -10
- package/dist/core/broker-client/transport-relay.d.ts +3 -4
- package/dist/core/broker-client/transport-relay.js +3 -4
- package/dist/core/canvas/__tests__/attention.test.js +1 -1
- package/dist/core/canvas/__tests__/remote-canvas-source.test.js +1 -1
- package/dist/core/canvas/__tests__/remote-transport.test.d.ts +1 -0
- package/dist/core/{view/__tests__/transport-remote.test.js → canvas/__tests__/remote-transport.test.js} +2 -2
- package/dist/core/canvas/__tests__/render-remote.test.js +1 -1
- package/dist/core/canvas/attention.js +4 -4
- package/dist/core/canvas/canvas.d.ts +6 -11
- package/dist/core/canvas/canvas.js +11 -33
- package/dist/core/canvas/db.js +207 -38
- package/dist/core/canvas/extensions.d.ts +1 -1
- package/dist/core/canvas/extensions.js +8 -1
- package/dist/core/canvas/index.d.ts +0 -1
- package/dist/core/canvas/index.js +0 -1
- package/dist/core/canvas/nav-model.d.ts +1 -1
- package/dist/core/canvas/nav-model.js +1 -1
- package/dist/core/canvas/paths.d.ts +5 -0
- package/dist/core/canvas/paths.js +16 -0
- package/dist/core/canvas/remote-canvas-source.js +2 -2
- package/dist/core/canvas/remote-transport.d.ts +7 -0
- package/dist/core/{view/transport-remote.js → canvas/remote-transport.js} +3 -4
- package/dist/core/canvas/source.js +1 -1
- package/dist/core/canvas/status-glyph.js +4 -12
- package/dist/core/canvas/types.d.ts +10 -35
- package/dist/core/clipboard-text.d.ts +8 -0
- package/dist/core/clipboard-text.js +18 -0
- package/dist/core/command-manifests/registry.d.ts +1 -3
- package/dist/core/command-plugins/bundle.d.ts +29 -0
- package/dist/core/command-plugins/bundle.js +198 -0
- package/dist/core/command-plugins/discovery.d.ts +0 -8
- package/dist/core/command-plugins/discovery.js +2 -39
- package/dist/core/command-plugins/transport/http-fetch.d.ts +4 -30
- package/dist/core/command-plugins/transport/http-fetch.js +17 -95
- package/dist/core/command.d.ts +1 -13
- package/dist/core/command.js +1 -16
- package/dist/core/config.d.ts +4 -0
- package/dist/core/config.js +28 -3
- package/dist/core/document-lines.d.ts +4 -0
- package/dist/core/document-lines.js +6 -0
- package/dist/core/feed/feed.d.ts +2 -0
- package/dist/core/feed/feed.js +11 -7
- package/dist/core/human/__tests__/inbox-cancel-worker.d.ts +1 -0
- package/dist/core/human/__tests__/inbox-cancel-worker.js +7 -0
- package/dist/core/human/__tests__/inbox-claim-worker.d.ts +1 -0
- package/dist/core/human/__tests__/inbox-claim-worker.js +17 -0
- package/dist/core/human/__tests__/inbox-core.test.d.ts +1 -0
- package/dist/core/human/__tests__/inbox-core.test.js +144 -0
- package/dist/core/human/__tests__/inbox-stale-claim-worker.d.ts +1 -0
- package/dist/core/human/__tests__/inbox-stale-claim-worker.js +8 -0
- package/dist/core/human/__tests__/visible-paths.test.d.ts +1 -0
- package/dist/{clients/attach → core/human}/__tests__/visible-paths.test.js +9 -0
- package/dist/core/human/claim.d.ts +23 -0
- package/dist/core/human/claim.js +67 -0
- package/dist/core/human/convention.d.ts +30 -0
- package/dist/core/human/convention.js +202 -0
- package/dist/core/human/deck-factories.d.ts +8 -0
- package/dist/core/human/deck-factories.js +15 -0
- package/dist/core/human/deck-schema.d.ts +70 -0
- package/dist/core/human/deck-schema.js +92 -0
- package/dist/core/human/root.d.ts +7 -0
- package/dist/core/human/root.js +37 -0
- package/dist/core/human/scan.d.ts +3 -0
- package/dist/core/human/scan.js +76 -0
- package/dist/core/human/summary.d.ts +8 -0
- package/dist/core/human/summary.js +44 -0
- package/dist/core/human/tickets.d.ts +49 -0
- package/dist/core/human/tickets.js +190 -0
- package/dist/core/human/types.d.ts +136 -0
- package/dist/core/human/types.js +5 -0
- package/dist/{clients/attach → core/human}/visible-paths.d.ts +1 -1
- package/dist/{clients/attach → core/human}/visible-paths.js +3 -2
- package/dist/core/inspector/chrome.d.ts +6 -0
- package/dist/core/inspector/chrome.js +14 -0
- package/dist/core/inspector/contract.d.ts +105 -0
- package/dist/core/inspector/contract.js +1 -0
- package/dist/core/inspector/core.d.ts +4 -5
- package/dist/core/inspector/core.js +3 -5
- package/dist/core/inspector/host.d.ts +46 -0
- package/dist/core/{tui → inspector}/host.js +42 -208
- package/dist/core/inspector/text.d.ts +2 -2
- package/dist/core/inspector/transport.d.ts +6 -0
- package/dist/core/inspector/transport.js +36 -0
- package/dist/core/inspector/tui.d.ts +2 -2
- package/dist/core/inspector/tui.js +15 -15
- package/dist/core/keybindings/__tests__/inbox-affordance.test.js +11 -11
- package/dist/core/keybindings/__tests__/resolve.test.js +10 -19
- package/dist/core/keybindings/attach-control.d.ts +9 -3
- package/dist/core/keybindings/attach-control.js +3 -1
- package/dist/core/keybindings/catalog.d.ts +6 -5
- package/dist/core/keybindings/catalog.js +61 -133
- package/dist/core/keybindings/inbox.d.ts +5 -6
- package/dist/core/keybindings/inbox.js +9 -10
- package/dist/core/keybindings/index.d.ts +3 -3
- package/dist/core/keybindings/index.js +3 -3
- package/dist/core/keybindings/persistence.d.ts +5 -1
- package/dist/core/keybindings/persistence.js +24 -6
- package/dist/core/keybindings/resolve.d.ts +6 -0
- package/dist/core/keybindings/resolve.js +10 -3
- package/dist/core/memory/inline-ref-grammar.js +2 -3
- package/dist/core/memory-resolver.d.ts +27 -29
- package/dist/core/memory-resolver.js +45 -39
- package/dist/core/model-routes.d.ts +33 -0
- package/dist/core/model-routes.js +42 -3
- package/dist/core/preview-registry.js +17 -55
- package/dist/core/profiles/select.js +3 -3
- package/dist/core/{view/remote-canvas-target.d.ts → remote-canvas-target.d.ts} +2 -2
- package/dist/core/{view/remote-canvas-target.js → remote-canvas-target.js} +4 -4
- package/dist/core/review/__tests__/capture-origin.test.d.ts +1 -0
- package/dist/core/review/__tests__/capture-origin.test.js +139 -0
- package/dist/core/review/__tests__/comments.test.d.ts +1 -0
- package/dist/core/review/__tests__/comments.test.js +98 -0
- package/dist/core/review/__tests__/project.test.d.ts +1 -0
- package/dist/core/review/__tests__/project.test.js +71 -0
- package/dist/core/review/__tests__/remap.test.d.ts +1 -0
- package/dist/core/review/__tests__/remap.test.js +159 -0
- package/dist/core/review/__tests__/stage-identity.test.d.ts +1 -0
- package/dist/core/review/__tests__/stage-identity.test.js +140 -0
- package/dist/core/review/birth.d.ts +7 -0
- package/dist/core/review/birth.js +23 -0
- package/dist/core/review/comments.d.ts +69 -0
- package/dist/core/review/comments.js +295 -0
- package/dist/core/review/companion.d.ts +35 -0
- package/dist/core/review/companion.js +205 -0
- package/dist/core/review/document.d.ts +27 -0
- package/dist/core/review/document.js +138 -0
- package/dist/core/review/project.d.ts +13 -0
- package/dist/core/review/project.js +58 -0
- package/dist/core/review/realize.d.ts +19 -0
- package/dist/core/review/realize.js +217 -0
- package/dist/core/review/remap.d.ts +24 -0
- package/dist/core/review/remap.js +156 -0
- package/dist/core/review/signal.d.ts +5 -0
- package/dist/core/review/signal.js +31 -0
- package/dist/core/review/stage.d.ts +26 -0
- package/dist/core/review/stage.js +184 -0
- package/dist/core/review/store.d.ts +46 -0
- package/dist/core/review/store.js +163 -0
- package/dist/core/review/ticket-filter.d.ts +17 -0
- package/dist/core/review/ticket-filter.js +32 -0
- package/dist/core/review/types.d.ts +130 -0
- package/dist/core/review/types.js +23 -0
- package/dist/core/runtime/__tests__/session-visibility.test.d.ts +1 -0
- package/dist/core/runtime/__tests__/session-visibility.test.js +119 -0
- package/dist/core/runtime/bearings.d.ts +5 -17
- package/dist/core/runtime/bearings.js +88 -71
- package/dist/core/runtime/broker-protocol.d.ts +31 -8
- package/dist/core/runtime/broker.d.ts +15 -1
- package/dist/core/runtime/broker.js +573 -141
- package/dist/core/runtime/canvas-extensions.d.ts +4 -5
- package/dist/core/runtime/canvas-extensions.js +5 -5
- package/dist/core/runtime/front-door.js +4 -4
- package/dist/core/runtime/headless-pi.d.ts +24 -0
- package/dist/core/runtime/headless-pi.js +152 -0
- package/dist/core/runtime/kickoff.d.ts +1 -5
- package/dist/core/runtime/kickoff.js +1 -5
- package/dist/core/runtime/model-registry.d.ts +3 -0
- package/dist/core/runtime/model-registry.js +13 -0
- package/dist/core/runtime/naming-persist.d.ts +4 -0
- package/dist/core/runtime/naming-persist.js +27 -1
- package/dist/core/runtime/naming.d.ts +17 -12
- package/dist/core/runtime/naming.js +91 -140
- package/dist/core/runtime/node-read.js +19 -10
- package/dist/core/runtime/nodes.d.ts +9 -14
- package/dist/core/runtime/nodes.js +3 -53
- package/dist/core/runtime/package-health.d.ts +6 -21
- package/dist/core/runtime/package-health.js +12 -123
- package/dist/core/runtime/placement-tmux.d.ts +2 -1
- package/dist/core/runtime/placement-tmux.js +6 -4
- package/dist/core/runtime/placement.d.ts +1 -0
- package/dist/core/runtime/placement.js +4 -8
- package/dist/core/runtime/promote.js +3 -0
- package/dist/core/runtime/recap.d.ts +2 -7
- package/dist/core/runtime/recap.js +35 -69
- package/dist/core/runtime/revive.js +34 -77
- package/dist/core/runtime/session-cycles.d.ts +4 -0
- package/dist/core/runtime/session-cycles.js +14 -1
- package/dist/core/runtime/session-visibility.d.ts +37 -0
- package/dist/core/runtime/session-visibility.js +83 -0
- package/dist/core/runtime/spawn.js +10 -22
- package/dist/core/runtime/stop-guard.d.ts +1 -1
- package/dist/core/runtime/stop-guard.js +18 -13
- package/dist/core/runtime/surface-bg.js +1 -1
- package/dist/core/runtime/tmux-chrome.d.ts +1 -1
- package/dist/core/runtime/tmux-chrome.js +1 -1
- package/dist/core/runtime/tmux.d.ts +35 -7
- package/dist/core/runtime/tmux.js +439 -62
- package/dist/core/runtime/tool-group-summary.d.ts +19 -0
- package/dist/core/runtime/tool-group-summary.js +88 -0
- package/dist/core/scope.d.ts +2 -7
- package/dist/core/scope.js +9 -35
- package/dist/core/substrate/schema.d.ts +2 -2
- package/dist/core/termrender/code-doc.d.ts +12 -0
- package/dist/core/termrender/code-doc.js +92 -0
- package/dist/core/termrender/display.d.ts +12 -0
- package/dist/core/termrender/display.js +19 -0
- package/dist/core/termrender/termrender.d.ts +73 -0
- package/dist/core/termrender/termrender.js +795 -0
- package/dist/core/termrender/version.d.ts +1 -0
- package/dist/core/termrender/version.js +1 -0
- package/dist/core/tui/terminal.js +1 -2
- package/dist/core/user-settings.d.ts +71 -3
- package/dist/core/user-settings.js +83 -1
- package/dist/daemon/api/__tests__/inbox.test.js +44 -133
- package/dist/daemon/api/handlers/human.d.ts +0 -10
- package/dist/daemon/api/handlers/human.js +104 -702
- package/dist/daemon/api/handlers/inbox.js +113 -142
- package/dist/daemon/api/handlers/review-comments.d.ts +2 -0
- package/dist/daemon/api/handlers/review-comments.js +500 -0
- package/dist/daemon/api/handlers/reviews.d.ts +2 -0
- package/dist/daemon/api/handlers/reviews.js +287 -0
- package/dist/daemon/api/map.d.ts +22 -7
- package/dist/daemon/api/map.js +159 -11
- package/dist/daemon/api/server.js +4 -0
- package/dist/daemon/cron-run.js +6 -9
- package/dist/daemon/crtrd.js +17 -33
- package/dist/daemon/fleet.d.ts +1 -8
- package/dist/daemon/fleet.js +4 -30
- package/dist/daemon/human/finish.d.ts +14 -0
- package/dist/daemon/human/finish.js +115 -0
- package/dist/daemon/human/sweep.d.ts +6 -0
- package/dist/daemon/human/sweep.js +49 -0
- package/dist/daemon/messaging/node-message.d.ts +18 -0
- package/dist/daemon/messaging/node-message.js +70 -0
- package/dist/daemon/review/comment-notify.d.ts +26 -0
- package/dist/daemon/review/comment-notify.js +107 -0
- package/dist/daemon/review/deliver.d.ts +7 -0
- package/dist/daemon/review/deliver.js +56 -0
- package/dist/daemon/review/finish.d.ts +22 -0
- package/dist/daemon/review/finish.js +254 -0
- package/dist/daemon/review/sweep.d.ts +11 -0
- package/dist/daemon/review/sweep.js +120 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -2
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +42 -64
- package/dist/pi-extensions/__tests__/canvas-recap.test.d.ts +1 -0
- package/dist/pi-extensions/__tests__/canvas-recap.test.js +159 -0
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +16 -38
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.d.ts +1 -0
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +63 -0
- package/dist/pi-extensions/canvas-context-intro.d.ts +8 -11
- package/dist/pi-extensions/canvas-context-intro.js +50 -104
- package/dist/pi-extensions/canvas-recap.d.ts +15 -2
- package/dist/pi-extensions/canvas-recap.js +192 -69
- package/dist/pi-extensions/canvas-review-boundary.d.ts +59 -0
- package/dist/pi-extensions/canvas-review-boundary.js +81 -0
- package/dist/pi-extensions/canvas-stophook.d.ts +3 -3
- package/dist/pi-extensions/canvas-stophook.js +78 -128
- package/dist/pi-extensions/canvas-structured-output.js +52 -8
- package/dist/shared/generated-context.d.ts +29 -4
- package/dist/shared/generated-context.js +122 -7
- package/dist/shared/tool-groups.d.ts +23 -0
- package/dist/shared/tool-groups.js +60 -0
- package/dist/shared/working-activity.d.ts +8 -0
- package/dist/shared/working-activity.js +26 -0
- package/dist/types.d.ts +36 -2
- package/dist/types.js +51 -0
- package/dist/web-client/assets/index-CCPaLeW7.css +2 -0
- package/dist/web-client/assets/index-kyOWsnZK.js +86 -0
- package/dist/web-client/index.html +2 -2
- package/dist/web-client/sw.js +1 -1
- package/docs/compat/hearth-crtr-v4.md +2 -2
- package/docs/compat/hearth-crtr-v5.md +4 -2
- package/docs/public-api.md +3 -3
- package/package.json +21 -14
- package/runtime.lock.json +4661 -1453
- package/scripts/postinstall.mjs +15 -2
- package/dist/builtin-pi-packages/pi-mode-switch/README.md +0 -36
- package/dist/builtin-pi-packages/pi-mode-switch/bin/mode +0 -36
- package/dist/builtin-pi-packages/pi-mode-switch/extensions/index.ts +0 -449
- package/dist/builtin-pi-packages/pi-mode-switch/package.json +0 -14
- package/dist/builtin-pi-packages/pi-mode-switch/tsconfig.json +0 -9
- package/dist/builtin-views/_lib/states.mjs +0 -161
- package/dist/builtin-views/canvas/core.mjs +0 -657
- package/dist/builtin-views/canvas/text.mjs +0 -58
- package/dist/builtin-views/canvas/tui.mjs +0 -168
- package/dist/builtin-views/canvas/web.jsx +0 -121
- package/dist/builtin-views/chat/core.mjs +0 -684
- package/dist/builtin-views/chat/text.mjs +0 -101
- package/dist/builtin-views/chat/tui.mjs +0 -360
- package/dist/builtin-views/chat/web.jsx +0 -362
- package/dist/builtin-views/git-pr/core.mjs +0 -673
- package/dist/builtin-views/git-pr/text.mjs +0 -84
- package/dist/builtin-views/git-pr/tui.mjs +0 -301
- package/dist/builtin-views/git-pr/web.jsx +0 -216
- package/dist/builtin-views/inbox/_lib/render.mjs +0 -175
- package/dist/builtin-views/inbox/core.mjs +0 -1273
- package/dist/builtin-views/inbox/text.mjs +0 -73
- package/dist/builtin-views/inbox/tui.mjs +0 -314
- package/dist/builtin-views/inbox/web.jsx +0 -188
- package/dist/builtin-views/linkedin/core.mjs +0 -906
- package/dist/builtin-views/linkedin/text.mjs +0 -69
- package/dist/builtin-views/linkedin/tui.mjs +0 -413
- package/dist/builtin-views/linkedin/web.jsx +0 -206
- package/dist/builtin-views/prompt-review/core.mjs +0 -735
- package/dist/builtin-views/prompt-review/text.mjs +0 -15
- package/dist/builtin-views/prompt-review/tui.mjs +0 -196
- package/dist/builtin-views/prompt-review/web.jsx +0 -484
- package/dist/builtin-views/workspace-sidebar/__tests__/core.test.js +0 -50
- package/dist/builtin-views/workspace-sidebar/__tests__/core.test.ts +0 -53
- package/dist/builtin-views/workspace-sidebar/core.mjs +0 -670
- package/dist/builtin-views/workspace-sidebar/text.mjs +0 -53
- package/dist/builtin-views/workspace-sidebar/tui.mjs +0 -141
- package/dist/builtin-views/workspace-sidebar/web.jsx +0 -109
- package/dist/clients/attach/session/mode.d.ts +0 -25
- package/dist/clients/attach/session/mode.js +0 -97
- package/dist/commands/sys/promptstudio.d.ts +0 -2
- package/dist/commands/sys/promptstudio.js +0 -65
- package/dist/commands/view-cycle.d.ts +0 -2
- package/dist/commands/view-cycle.js +0 -130
- package/dist/commands/view-list.d.ts +0 -2
- package/dist/commands/view-list.js +0 -66
- package/dist/commands/view-new.d.ts +0 -2
- package/dist/commands/view-new.js +0 -74
- package/dist/commands/view-pick.d.ts +0 -6
- package/dist/commands/view-pick.js +0 -129
- package/dist/commands/view-run.d.ts +0 -2
- package/dist/commands/view-run.js +0 -214
- package/dist/commands/view.d.ts +0 -2
- package/dist/commands/view.js +0 -31
- package/dist/commands/workspace.d.ts +0 -2
- package/dist/commands/workspace.js +0 -165
- package/dist/core/__tests__/chat-view-reconnect.test.js +0 -105
- package/dist/core/__tests__/full/consult-startup-failure.test.js +0 -124
- package/dist/core/canvas/__tests__/human-work-outbox.test.js +0 -123
- package/dist/core/canvas/human-work-outbox.d.ts +0 -73
- package/dist/core/canvas/human-work-outbox.js +0 -261
- package/dist/core/command-plugins/store.d.ts +0 -16
- package/dist/core/command-plugins/store.js +0 -64
- package/dist/core/keybindings/__tests__/bespoke-consumers.test.js +0 -40
- package/dist/core/runtime/fault-recovery-nudge.d.ts +0 -3
- package/dist/core/runtime/fault-recovery-nudge.js +0 -3
- package/dist/core/tui/__tests__/host-keybindings.test.js +0 -113
- package/dist/core/tui/host.d.ts +0 -66
- package/dist/core/view/__tests__/transport-cache.test.js +0 -62
- package/dist/core/view/bridge.d.ts +0 -10
- package/dist/core/view/bridge.js +0 -31
- package/dist/core/view/chrome.d.ts +0 -9
- package/dist/core/view/chrome.js +0 -22
- package/dist/core/view/contract.d.ts +0 -205
- package/dist/core/view/contract.js +0 -23
- package/dist/core/view/loader.d.ts +0 -31
- package/dist/core/view/loader.js +0 -188
- package/dist/core/view/stream-local.d.ts +0 -3
- package/dist/core/view/stream-local.js +0 -231
- package/dist/core/view/transport-cache.d.ts +0 -8
- package/dist/core/view/transport-cache.js +0 -38
- package/dist/core/view/transport-local.d.ts +0 -7
- package/dist/core/view/transport-local.js +0 -83
- package/dist/core/view/transport-remote.d.ts +0 -2
- package/dist/core/view/transport.d.ts +0 -10
- package/dist/core/view/transport.js +0 -15
- package/dist/pi-extensions/naming-tool.d.ts +0 -24
- package/dist/pi-extensions/naming-tool.js +0 -67
- package/dist/prompts/view.d.ts +0 -7
- package/dist/prompts/view.js +0 -172
- package/dist/web/ViewChrome.d.ts +0 -7
- package/dist/web/ViewChrome.js +0 -28
- package/dist/web/ViewPane.d.ts +0 -39
- package/dist/web/ViewPane.js +0 -48
- package/dist/web/index.d.ts +0 -8
- package/dist/web/index.js +0 -22
- package/dist/web/runtime.d.ts +0 -39
- package/dist/web/runtime.js +0 -232
- package/dist/web/states.d.ts +0 -24
- package/dist/web/states.js +0 -24
- package/dist/web/transport-http.d.ts +0 -5
- package/dist/web/transport-http.js +0 -34
- package/dist/web/transport-stream.d.ts +0 -3
- package/dist/web/transport-stream.js +0 -204
- package/dist/web-client/assets/index-U_NZ66VE.js +0 -79
- package/dist/web-client/assets/index-aaeu4adv.css +0 -2
- /package/dist/{builtin-views/workspace-sidebar/__tests__/core.test.d.ts → clients/attach/__tests__/file-review-focus.test.d.ts} +0 -0
- /package/dist/clients/attach/__tests__/{visible-paths.test.d.ts → group-activity.test.d.ts} +0 -0
- /package/dist/{core/__tests__/chat-view-reconnect.test.d.ts → clients/attach/__tests__/input-controller-extension-command.test.d.ts} +0 -0
- /package/dist/{core/__tests__/full/consult-startup-failure.test.d.ts → clients/attach/__tests__/session-identity-refresh.test.d.ts} +0 -0
- /package/dist/{core/canvas/__tests__/human-work-outbox.test.d.ts → clients/inbox/__tests__/inbox-controller.test.d.ts} +0 -0
- /package/dist/{core/keybindings/__tests__/bespoke-consumers.test.d.ts → clients/inbox/__tests__/mount-panel.test.d.ts} +0 -0
- /package/dist/{core/tui/__tests__/host-keybindings.test.d.ts → clients/inbox/review/__tests__/editor-roundtrip.test.d.ts} +0 -0
- /package/dist/{core/view/__tests__/transport-cache.test.d.ts → clients/inbox/review/__tests__/remap.test.d.ts} +0 -0
- /package/dist/{core/view/__tests__/transport-remote.test.d.ts → clients/inbox/review/__tests__/review-core.test.d.ts} +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// Run with: node --import tsx/esm --test src/core/runtime/__tests__/session-visibility.test.ts
|
|
2
|
+
//
|
|
3
|
+
// This table keeps the review companion transcript boundary a pure, cheap
|
|
4
|
+
// regression surface: ordinary snapshots are untouched, a persisted marker
|
|
5
|
+
// wins from its first occurrence, and markerless companions expose nothing.
|
|
6
|
+
import { test } from 'node:test';
|
|
7
|
+
import assert from 'node:assert/strict';
|
|
8
|
+
import { boundaryRootedTree, REVIEW_BOUNDARY_CUSTOM_TYPE, visibleMessages } from '../session-visibility.js';
|
|
9
|
+
function message(fields) {
|
|
10
|
+
return fields;
|
|
11
|
+
}
|
|
12
|
+
function contentOf(item) {
|
|
13
|
+
return item.content;
|
|
14
|
+
}
|
|
15
|
+
const boundary = message({
|
|
16
|
+
role: 'custom',
|
|
17
|
+
customType: REVIEW_BOUNDARY_CUSTOM_TYPE,
|
|
18
|
+
content: 'review boundary',
|
|
19
|
+
display: true,
|
|
20
|
+
timestamp: 2,
|
|
21
|
+
});
|
|
22
|
+
const cycleDivider = message({
|
|
23
|
+
role: 'custom',
|
|
24
|
+
customType: 'crtr-cycle-divider',
|
|
25
|
+
content: 'cycle 2 begins',
|
|
26
|
+
display: true,
|
|
27
|
+
timestamp: 3,
|
|
28
|
+
});
|
|
29
|
+
const cases = [
|
|
30
|
+
{
|
|
31
|
+
name: 'first marker wins even when it is not first, and preserves later cycle dividers',
|
|
32
|
+
messages: [
|
|
33
|
+
message({ role: 'user', content: 'inherited origin context', timestamp: 0 }),
|
|
34
|
+
message({ role: 'assistant', content: 'inherited answer', timestamp: 1 }),
|
|
35
|
+
boundary,
|
|
36
|
+
message({ role: 'user', content: 'review message', timestamp: 2 }),
|
|
37
|
+
cycleDivider,
|
|
38
|
+
message({ role: 'assistant', content: 'later cycle message', timestamp: 4 }),
|
|
39
|
+
],
|
|
40
|
+
reviewCompanion: true,
|
|
41
|
+
assertResult: (_input, result) => {
|
|
42
|
+
assert.deepEqual(result, [boundary, message({ role: 'user', content: 'review message', timestamp: 2 }), cycleDivider, message({ role: 'assistant', content: 'later cycle message', timestamp: 4 })]);
|
|
43
|
+
assert.equal(result[0], boundary);
|
|
44
|
+
assert.ok(!result.some((item) => contentOf(item) === 'inherited origin context'));
|
|
45
|
+
assert.ok(!result.some((item) => contentOf(item) === 'inherited answer'));
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'ordinary nodes return the exact input reference without a marker',
|
|
50
|
+
messages: [
|
|
51
|
+
message({ role: 'user', content: 'ordinary message', timestamp: 0 }),
|
|
52
|
+
cycleDivider,
|
|
53
|
+
],
|
|
54
|
+
reviewCompanion: false,
|
|
55
|
+
assertResult: (input, result) => {
|
|
56
|
+
assert.strictEqual(result, input);
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'a markerless companion replaces only a compaction summary with a synthetic boundary',
|
|
61
|
+
messages: [
|
|
62
|
+
message({
|
|
63
|
+
role: 'compactionSummary',
|
|
64
|
+
content: 'summary may include inherited origin context',
|
|
65
|
+
timestamp: 7,
|
|
66
|
+
}),
|
|
67
|
+
message({ role: 'user', content: 'post-compaction review message', timestamp: 8 }),
|
|
68
|
+
],
|
|
69
|
+
reviewCompanion: true,
|
|
70
|
+
assertResult: (_input, result) => {
|
|
71
|
+
assert.deepEqual(result, [
|
|
72
|
+
message({
|
|
73
|
+
role: 'custom',
|
|
74
|
+
customType: REVIEW_BOUNDARY_CUSTOM_TYPE,
|
|
75
|
+
content: 'Earlier conversation with the origin is not shown.',
|
|
76
|
+
display: true,
|
|
77
|
+
timestamp: 7,
|
|
78
|
+
}),
|
|
79
|
+
message({ role: 'user', content: 'post-compaction review message', timestamp: 8 }),
|
|
80
|
+
]);
|
|
81
|
+
assert.ok(!result.some((item) => contentOf(item) === 'summary may include inherited origin context'));
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
for (const testCase of cases) {
|
|
86
|
+
test(`visibleMessages: ${testCase.name}`, () => {
|
|
87
|
+
const input = testCase.messages;
|
|
88
|
+
const result = visibleMessages(input, { reviewCompanion: testCase.reviewCompanion });
|
|
89
|
+
testCase.assertResult(input, result);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function treeNode(id, entry, children = []) {
|
|
93
|
+
return { entry: { id, ...entry }, children };
|
|
94
|
+
}
|
|
95
|
+
test('visibleMessages: every markerless non-compaction shape remains synthetic-only', () => {
|
|
96
|
+
const result = visibleMessages([message({ role: 'user', content: 'inherited context', timestamp: 5 })], { reviewCompanion: true });
|
|
97
|
+
assert.equal(result.length, 1);
|
|
98
|
+
assert.equal(result[0]?.customType, REVIEW_BOUNDARY_CUSTOM_TYPE);
|
|
99
|
+
});
|
|
100
|
+
test('boundaryRootedTree drops inherited ancestors and preserves only boundary descendants', () => {
|
|
101
|
+
const tree = [
|
|
102
|
+
treeNode('origin', { type: 'message', message: { role: 'user', content: 'PREBOUNDARY_CANARY' } }, [
|
|
103
|
+
treeNode('inherited-reply', { type: 'message', message: { role: 'assistant', content: 'inherited reply' } }, [
|
|
104
|
+
treeNode('boundary', { type: 'custom_message', customType: REVIEW_BOUNDARY_CUSTOM_TYPE, content: 'review boundary', display: true }, [
|
|
105
|
+
treeNode('review-user', { type: 'message', message: { role: 'user', content: 'review finding' } }),
|
|
106
|
+
treeNode('review-assistant', { type: 'message', message: { role: 'assistant', content: 'review resolution' } }),
|
|
107
|
+
]),
|
|
108
|
+
]),
|
|
109
|
+
]),
|
|
110
|
+
];
|
|
111
|
+
const result = boundaryRootedTree(tree);
|
|
112
|
+
assert.deepEqual(result.map((node) => node.entry.id), ['boundary']);
|
|
113
|
+
assert.deepEqual(result[0]?.children.map((node) => node.entry.id), ['review-user', 'review-assistant']);
|
|
114
|
+
assert.equal(JSON.stringify(result).includes('PREBOUNDARY_CANARY'), false);
|
|
115
|
+
});
|
|
116
|
+
test('boundaryRootedTree returns no picker tree for a markerless companion', () => {
|
|
117
|
+
const tree = [treeNode('origin', { type: 'message', message: { role: 'user', content: 'PREBOUNDARY_CANARY' } })];
|
|
118
|
+
assert.deepEqual(boundaryRootedTree(tree), []);
|
|
119
|
+
});
|
|
@@ -32,22 +32,6 @@ export declare function orchestratorContextNote(nodeId: string): string;
|
|
|
32
32
|
* `● you`, then its immediate children. Returns '' for a lone root with no
|
|
33
33
|
* children (nothing to map). Exported for testing. */
|
|
34
34
|
export declare function buildGraphMap(nodeId: string): string;
|
|
35
|
-
/** Minimal identity needed to render the assertion before a node is persisted.
|
|
36
|
-
* Private human-work birth uses this to freeze the exact kickoff in the same
|
|
37
|
-
* metadata write that creates the node, before any broker can exist. */
|
|
38
|
-
export interface IdentityAssertionInput {
|
|
39
|
-
node_id: string;
|
|
40
|
-
kind: string;
|
|
41
|
-
mode: string;
|
|
42
|
-
fork_from?: string | null;
|
|
43
|
-
}
|
|
44
|
-
/** Render the identity assertion for a known or not-yet-persisted node. A fork
|
|
45
|
-
* copies the source's first-person conversation, so its kickoff names the new
|
|
46
|
-
* identity and treats the inherited narrative as reference material. */
|
|
47
|
-
export declare function buildIdentityAssertionFor(meta: IdentityAssertionInput): string;
|
|
48
|
-
/** The identity assertion injected at session start for an already-persisted
|
|
49
|
-
* node. Exported for tests and spawn-time fork kickoff construction. */
|
|
50
|
-
export declare function buildIdentityAssertion(nodeId: string): string;
|
|
51
35
|
/** Why a node was born or woken, as carried from the fired cron to the
|
|
52
36
|
* injection seam. `ownerName` is the armer's resolved display name when it
|
|
53
37
|
* still exists (a reaped cron's armer renders as a bare id, never crashes). */
|
|
@@ -77,7 +61,11 @@ export declare function cronWakeOrigin(c: Cron, kind: WakeOrigin['kind']): WakeO
|
|
|
77
61
|
* carry the signal, and a raw ISO instant is noise an agent cannot cheaply turn
|
|
78
62
|
* into an elapsed delta. */
|
|
79
63
|
export declare function buildWakeBearings(origin: WakeOrigin): string;
|
|
80
|
-
/** The
|
|
64
|
+
/** The node-scoped update for a fork whose copied branch already contains a
|
|
65
|
+
* full crouter baseline. Shared project and operating context stays in the
|
|
66
|
+
* inherited branch; this block replaces only source-owned facts. */
|
|
67
|
+
export declare function buildForkBearings(nodeId: string): string;
|
|
68
|
+
/** The full boot intro, four top-level sections:
|
|
81
69
|
*
|
|
82
70
|
* 1. `<crtr-bearings>` — the orienting facts about THIS node: the identity
|
|
83
71
|
* assertion (always first, so it overrides any copied-in persona), then a
|
|
@@ -1,44 +1,14 @@
|
|
|
1
|
-
// bearings.ts —
|
|
2
|
-
// the <memory kind="knowledge"> catalog that rides beside it), shared by the
|
|
3
|
-
// paths that deliver it so they can never drift:
|
|
1
|
+
// bearings.ts — session orientation shared by every delivery path.
|
|
4
2
|
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
// ONLY for a fork, disowns the source's copied first-person narrative as
|
|
12
|
-
// inherited context — the fix for the `--fork-from` bug where a fork copies
|
|
13
|
-
// the source's whole conversation and then impersonates it. A non-fork
|
|
14
|
-
// node's bearings are its FIRST entry, so there is nothing earlier to
|
|
15
|
-
// disown; it gets only the declarative identity line. The message also
|
|
16
|
-
// carries the <project_context> block (buildProjectContextBlock), which is
|
|
17
|
-
// now only the <environment> snapshot: a host/runtime line (platform,
|
|
18
|
-
// hostname, node, tmux-or-not), the cwd dir listing, and git status.
|
|
19
|
-
// Project guidance rides the document substrate instead: a workspace's
|
|
20
|
-
// `.crouter/memory/INDEX.md` declares `applies-to: "."` and surfaces through
|
|
21
|
-
// an <auto-loaded-context> block when cwd/profile mounts that workspace;
|
|
22
|
-
// ordinary boot-routed knowledge remains in the <memory kind="knowledge">
|
|
23
|
-
// block below. No parallel project-context loader lives here (see
|
|
24
|
-
// `crtr memory read taste/document-substrate`);
|
|
25
|
-
// • promote.ts folds orchestratorContextNote() into the promotion guidance
|
|
26
|
-
// dump, so a node that becomes an orchestrator MID-LIFE gets the
|
|
27
|
-
// orchestrator framing it never received at spawn — it spawned as a base
|
|
28
|
-
// worker, and the bearings already in its history carry only the base note.
|
|
3
|
+
// A conversation with no inherited crouter bearings receives the full baseline:
|
|
4
|
+
// node identity and graph position, context-directory guidance, routed knowledge,
|
|
5
|
+
// auto-loaded project docs, situational context, and the current environment.
|
|
6
|
+
// A fork whose copied branch already carries that baseline receives only
|
|
7
|
+
// buildForkBearings(): the new node-scoped facts that supersede its source's
|
|
8
|
+
// identity. The copied baseline remains useful reference without being repeated.
|
|
29
9
|
//
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
// worth a shared reference, NOT a task tracker, and NOT a "future memory-wiped
|
|
33
|
-
// you" stash (a terminal worker has no future cycle — that framing only makes
|
|
34
|
-
// sense once a node is a resident orchestrator). The `<memory kind="knowledge">`
|
|
35
|
-
// block (substrate knowledge docs + node-local docs) rides as a SIBLING of
|
|
36
|
-
// <crtr-bearings> — never nested under the context dir, which would imply the
|
|
37
|
-
// catalog belongs to that one directory rather than spanning all memory scopes.
|
|
38
|
-
//
|
|
39
|
-
// Orchestrator addendum (gated on orchestrator MODE): the dir ALSO survives
|
|
40
|
-
// refresh cycles, so it is where a future cycle of the orchestrator resumes.
|
|
41
|
-
// This across-cycles note is the ONE thing a terminal worker's bearings drop.
|
|
10
|
+
// promote.ts separately delivers orchestratorContextNote() when a base node
|
|
11
|
+
// becomes an orchestrator after birth.
|
|
42
12
|
import { contextDir, getNode, fullName, isSafeNodeId, subscriptionsOf, } from '../canvas/index.js';
|
|
43
13
|
import { execSync } from 'node:child_process';
|
|
44
14
|
import { readdirSync } from 'node:fs';
|
|
@@ -292,39 +262,22 @@ export function buildGraphMap(nodeId) {
|
|
|
292
262
|
}
|
|
293
263
|
return lines.join('\n');
|
|
294
264
|
}
|
|
295
|
-
/**
|
|
296
|
-
*
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
const lines = [`You are node ${
|
|
300
|
-
const forkFrom = meta
|
|
265
|
+
/** The identity assertion injected at session start. A fork names its source
|
|
266
|
+
* while treating the copied first-person narrative as reference. */
|
|
267
|
+
function buildIdentityAssertion(nodeId) {
|
|
268
|
+
const meta = getNode(nodeId);
|
|
269
|
+
const lines = [`You are node ${nodeId} — kind ${meta?.kind ?? 'general'}, mode ${meta?.mode ?? 'base'}.`];
|
|
270
|
+
const forkFrom = meta?.fork_from;
|
|
301
271
|
if (forkFrom !== undefined && forkFrom !== null && forkFrom !== '') {
|
|
302
|
-
//
|
|
303
|
-
//
|
|
304
|
-
// requires a safe node-id segment and throws on an arbitrary path, so only
|
|
305
|
-
// call it when forkFrom actually looks like a node id.
|
|
272
|
+
// A known node id carries its human label. Paths and session ids remain
|
|
273
|
+
// opaque provenance rather than being passed to the node-id lookup.
|
|
306
274
|
const src = isSafeNodeId(forkFrom) ? getNode(forkFrom) : null;
|
|
307
275
|
const sourceLabel = src !== null ? `${forkFrom} ("${fullName(src)}")` : forkFrom;
|
|
308
|
-
lines.push('', `You are a FORK of ${sourceLabel}
|
|
309
|
-
`
|
|
310
|
-
'conversation is THEIR first-person history — inherited reference material, not your own ' +
|
|
311
|
-
'past. Do not speak or act as them, do not continue their task as if it were yours, and do ' +
|
|
312
|
-
'not "monitor yourself" as though you were a child they spawned. You inherit none of the ' +
|
|
313
|
-
'source node’s graph edges and are not responsible for monitoring or managing its children.');
|
|
276
|
+
lines.push('', `You are a new FORK of ${sourceLabel}, not ${sourceLabel}. Pi copied the earlier conversation ` +
|
|
277
|
+
`into this session. Treat that first-person history as reference material, not your own past.`);
|
|
314
278
|
}
|
|
315
279
|
return lines.join('\n');
|
|
316
280
|
}
|
|
317
|
-
/** The identity assertion injected at session start for an already-persisted
|
|
318
|
-
* node. Exported for tests and spawn-time fork kickoff construction. */
|
|
319
|
-
export function buildIdentityAssertion(nodeId) {
|
|
320
|
-
const meta = getNode(nodeId);
|
|
321
|
-
return buildIdentityAssertionFor({
|
|
322
|
-
node_id: nodeId,
|
|
323
|
-
kind: meta?.kind ?? 'general',
|
|
324
|
-
mode: meta?.mode ?? 'base',
|
|
325
|
-
fork_from: meta?.fork_from,
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
281
|
/** The armer rendered for prose, ROLE-explicit so a newborn never mistakes the
|
|
329
282
|
* id for its own: `node <id> ("<name>")` when the name resolved, `node <id>
|
|
330
283
|
* (now gone)` when the armer was reaped, `an unknown node` only if the owner id
|
|
@@ -380,7 +333,72 @@ export function buildWakeBearings(origin) {
|
|
|
380
333
|
`${armer} to fire now. You are its only run, not a recurring job. Your task follows.`;
|
|
381
334
|
return `<crtr-wake>\n${body}\n</crtr-wake>`;
|
|
382
335
|
}
|
|
383
|
-
|
|
336
|
+
function managedWorktreeNote(node) {
|
|
337
|
+
const wt = node?.managed_worktree;
|
|
338
|
+
if (wt?.state !== 'open')
|
|
339
|
+
return '';
|
|
340
|
+
return `Branch: \`${wt.branch}\`\nWorktree: \`${wt.path}\`\nBase: \`${wt.base_ref}\` @ \`${wt.base_sha}\`\nCommit work here. Land it with \`crtr node worktree close\` before finishing. Auto-drop applies only when the worktree is clean (no uncommitted changes) and nothing remains to land (zero commits ahead of the base, or its commits are already contained in the base); unlanded commits (commits not already contained in the base) or uncommitted changes require an explicit close/landing decision.`;
|
|
341
|
+
}
|
|
342
|
+
/** The review-companion block — rendered ONLY when a node carries its immutable
|
|
343
|
+
* review binding. Names the target file (the document under review), clarifies
|
|
344
|
+
* that inherited context belongs to the origin node and is not visible to the
|
|
345
|
+
* person, and notes that the visible transcript begins at the boundary marker
|
|
346
|
+
* above. */
|
|
347
|
+
function reviewCompanionBlock(meta) {
|
|
348
|
+
if (meta?.review_binding === undefined || meta?.review_binding === null)
|
|
349
|
+
return '';
|
|
350
|
+
const targetFile = meta.review_binding.target_file;
|
|
351
|
+
return (`You exist for one human review of \`${targetFile}\`. The inherited conversation belongs to ` +
|
|
352
|
+
`the origin node, not you — carry only the context needed for this review. The person's visible ` +
|
|
353
|
+
`transcript begins at the boundary marker above; everything earlier is context they cannot see.`);
|
|
354
|
+
}
|
|
355
|
+
/** The node-scoped update for a fork whose copied branch already contains a
|
|
356
|
+
* full crouter baseline. Shared project and operating context stays in the
|
|
357
|
+
* inherited branch; this block replaces only source-owned facts. */
|
|
358
|
+
export function buildForkBearings(nodeId) {
|
|
359
|
+
const node = getNode(nodeId);
|
|
360
|
+
const bearings = [
|
|
361
|
+
'<crtr-bearings>',
|
|
362
|
+
buildIdentityAssertion(nodeId),
|
|
363
|
+
'',
|
|
364
|
+
'The source node’s earlier task, graph position, lifecycle, children, schedules, worktree, situational context, and context-directory path do not carry over. Shared conversation, project, and operating context remain reference material.',
|
|
365
|
+
'',
|
|
366
|
+
'## Your node now',
|
|
367
|
+
`Lifecycle: ${node?.lifecycle ?? 'terminal'}.`,
|
|
368
|
+
];
|
|
369
|
+
const map = buildGraphMap(nodeId);
|
|
370
|
+
if (map === '') {
|
|
371
|
+
bearings.push('Canvas: independent root with no parent or inherited graph edges.');
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
bearings.push('', map);
|
|
375
|
+
}
|
|
376
|
+
bearings.push(`Context directory: \`${contextDir(nodeId)}\` (\`$CRTR_CONTEXT_DIR\`). Use this path in place of every source-node context path above.`);
|
|
377
|
+
const forkFrom = node?.fork_from;
|
|
378
|
+
const source = forkFrom !== undefined && forkFrom !== null && isSafeNodeId(forkFrom)
|
|
379
|
+
? getNode(forkFrom)
|
|
380
|
+
: null;
|
|
381
|
+
if (node !== null && (source === null || source.cwd !== node.cwd)) {
|
|
382
|
+
bearings.push(`Working directory: \`${node.cwd}\`.`);
|
|
383
|
+
}
|
|
384
|
+
if (node !== null && (source === null || source.profile_id !== node.profile_id)) {
|
|
385
|
+
const profileSection = profileNote(nodeId);
|
|
386
|
+
if (profileSection !== '')
|
|
387
|
+
bearings.push(profileSection);
|
|
388
|
+
}
|
|
389
|
+
const worktree = managedWorktreeNote(node);
|
|
390
|
+
if (worktree !== '')
|
|
391
|
+
bearings.push('', '## Your managed worktree', worktree);
|
|
392
|
+
if (node?.mode === 'orchestrator')
|
|
393
|
+
bearings.push('', orchestratorContextNote(nodeId));
|
|
394
|
+
const review = reviewCompanionBlock(node);
|
|
395
|
+
if (review !== '')
|
|
396
|
+
bearings.push('', review);
|
|
397
|
+
bearings.push('', 'The first real user message after these bearings is your mandate.', '</crtr-bearings>');
|
|
398
|
+
const situational = situationalContextBlock(nodeId);
|
|
399
|
+
return [bearings.join('\n'), situational].filter((s) => s !== '').join('\n');
|
|
400
|
+
}
|
|
401
|
+
/** The full boot intro, four top-level sections:
|
|
384
402
|
*
|
|
385
403
|
* 1. `<crtr-bearings>` — the orienting facts about THIS node: the identity
|
|
386
404
|
* assertion (always first, so it overrides any copied-in persona), then a
|
|
@@ -407,10 +425,9 @@ export function buildContextBearings(nodeId) {
|
|
|
407
425
|
const profileSection = profileNote(nodeId);
|
|
408
426
|
if (profileSection !== '')
|
|
409
427
|
bearings.push('', profileSection);
|
|
410
|
-
const
|
|
411
|
-
if (
|
|
412
|
-
bearings.push('', '## Your managed worktree',
|
|
413
|
-
}
|
|
428
|
+
const worktree = managedWorktreeNote(node);
|
|
429
|
+
if (worktree !== '')
|
|
430
|
+
bearings.push('', '## Your managed worktree', worktree);
|
|
414
431
|
// Orchestrator-only: the across-cycles framing (a terminal has no future cycle).
|
|
415
432
|
if (node?.mode === 'orchestrator')
|
|
416
433
|
bearings.push('', orchestratorContextNote(nodeId));
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AgentSession, AgentSessionEvent, RpcExtensionUIRequest, RpcExtensionUIResponse, RpcSessionState, SessionEntry, SessionInfo, SettingsConfig, SessionStats } from '@earendil-works/pi-coding-agent';
|
|
2
2
|
import type { Api, ImageContent, Model } from '@earendil-works/pi-ai';
|
|
3
3
|
import type { BrokerErrorFrame } from '../../api/dto/broker.js';
|
|
4
|
+
import type { ToolGroupSummary } from '../../shared/tool-groups.js';
|
|
4
5
|
/** pi's own RPC types, re-exported unchanged. `broker-protocol` stays the one
|
|
5
6
|
* import site for the wire union; the shapes themselves are pi's, versioned by
|
|
6
7
|
* pi, so a pi change is a compile error here instead of silent drift. */
|
|
@@ -45,6 +46,14 @@ export interface BrokerSnapshot {
|
|
|
45
46
|
}>;
|
|
46
47
|
title: string | undefined;
|
|
47
48
|
};
|
|
49
|
+
/** Broker-owned summaries keyed by the first tool-call id in each group.
|
|
50
|
+
* Structured objects with bullets, nodesSpawned, and filesEdited.
|
|
51
|
+
* Optional so snapshots from an older live runtime remain readable. */
|
|
52
|
+
toolGroupSummaries?: Record<string, ToolGroupSummary>;
|
|
53
|
+
/** The broker-selected normal activity label for the current turn. Optional so
|
|
54
|
+
* viewers can still attach to an older live runtime; they fall back to
|
|
55
|
+
* `Working...` when it is absent. */
|
|
56
|
+
workingActivity?: string;
|
|
48
57
|
}
|
|
49
58
|
/** Opens the connection and FIXES this client's role for its lifetime. A repeated
|
|
50
59
|
* `hello` on an already-helloed socket never changes the established role. */
|
|
@@ -67,6 +76,8 @@ export interface PromptFrame {
|
|
|
67
76
|
type: 'prompt';
|
|
68
77
|
text: string;
|
|
69
78
|
images?: ImageContent[];
|
|
79
|
+
/** Abort the active turn before starting this prompt. Used by the attach viewer's whip action so its command replaces, rather than joins, in-flight work. */
|
|
80
|
+
interrupt?: true;
|
|
70
81
|
}
|
|
71
82
|
export interface SteerFrame {
|
|
72
83
|
type: 'steer';
|
|
@@ -309,16 +320,16 @@ export interface CloneFrame {
|
|
|
309
320
|
export interface ShareFrame {
|
|
310
321
|
type: 'share';
|
|
311
322
|
}
|
|
312
|
-
/** Reload credentials +
|
|
313
|
-
* Open to any client — reload_auth is an idempotent
|
|
314
|
-
* steer the conversation, so the daemon's
|
|
315
|
-
* live broker) can trigger it from an
|
|
316
|
-
*
|
|
317
|
-
*
|
|
323
|
+
/** Reload credentials + the local model-runtime availability snapshot after a
|
|
324
|
+
* viewer-side auth change. Open to any client — reload_auth is an idempotent
|
|
325
|
+
* local re-read that doesn't steer the conversation, so the daemon's
|
|
326
|
+
* canvas-wide fan (one /login → every live broker) can trigger it from an
|
|
327
|
+
* observer connection. The broker refreshes with network catalogs disabled,
|
|
328
|
+
* then reconciles eligible logical routes before admitting the next idle prompt. */
|
|
318
329
|
export interface ReloadAuthFrame {
|
|
319
330
|
type: 'reload_auth';
|
|
320
331
|
}
|
|
321
|
-
/** Read live source coordinates for an ask-time
|
|
332
|
+
/** Read live source coordinates for an ask-time human fork. This is an
|
|
322
333
|
* observer-safe getter only: it never creates a branch, switches a session, or
|
|
323
334
|
* changes the source manager. */
|
|
324
335
|
export interface GetHumanForkCoordinatesFrame {
|
|
@@ -349,6 +360,11 @@ export interface WelcomeFrame {
|
|
|
349
360
|
* the other four learn nothing); the PAYLOAD is pi's — `Model`, exactly what
|
|
350
361
|
* pi's own `set_model` response carries and what `snapshot.state.model` holds.
|
|
351
362
|
* Undefined when the engine has none. */
|
|
363
|
+
export interface WorkingActivityFrame {
|
|
364
|
+
type: 'working_activity';
|
|
365
|
+
/** Full display label selected from the user's configured gerunds. */
|
|
366
|
+
activity: string;
|
|
367
|
+
}
|
|
352
368
|
export interface ModelChangedFrame {
|
|
353
369
|
type: 'model_changed';
|
|
354
370
|
model: Model<any> | undefined;
|
|
@@ -563,10 +579,17 @@ export interface ExtensionUIDismissFrame {
|
|
|
563
579
|
type: 'extension_ui_dismiss';
|
|
564
580
|
id: string;
|
|
565
581
|
}
|
|
582
|
+
/** A completed broker-side tool-group summary. The viewer owns presentation;
|
|
583
|
+
* this frame carries the durable group key and structured summary object. */
|
|
584
|
+
export interface ToolGroupSummaryFrame {
|
|
585
|
+
type: 'tool_group_summary';
|
|
586
|
+
key: string;
|
|
587
|
+
summary: ToolGroupSummary;
|
|
588
|
+
}
|
|
566
589
|
/** Everything the broker can send. Live `AgentSessionEvent`s are relayed
|
|
567
590
|
* verbatim (the broker adds nothing); the broker's own control frames carry
|
|
568
591
|
* non-colliding `type` discriminants. */
|
|
569
|
-
export type BrokerToClient = WelcomeFrame | ModelChangedFrame | ErrorFrame | AckFrame | BrokerDataFrame | BashStartFrame | BashOutputFrame | BashEndFrame | ExtensionUIRequestFrame | ExtensionUIDismissFrame | AgentSessionEvent;
|
|
592
|
+
export type BrokerToClient = WelcomeFrame | WorkingActivityFrame | ModelChangedFrame | ErrorFrame | AckFrame | BrokerDataFrame | BashStartFrame | BashOutputFrame | BashEndFrame | ExtensionUIRequestFrame | ExtensionUIDismissFrame | ToolGroupSummaryFrame | AgentSessionEvent;
|
|
570
593
|
/** Encode one frame as a single newline-terminated JSON line. */
|
|
571
594
|
export declare function encodeFrame(frame: ClientToBroker | BrokerToClient): string;
|
|
572
595
|
/** Byte bounds for a {@link FrameDecoder} (C5). */
|
|
@@ -5,6 +5,15 @@ import { type BrokerSdkConfig } from './launch.js';
|
|
|
5
5
|
import { type BrokerEngine } from './broker-sdk.js';
|
|
6
6
|
import { type KnownStreamWaitControl } from './stream-watchdog.js';
|
|
7
7
|
import { FrameDecoder, type BrokerSnapshot, type BrokerToClient, type ClientRole, type RpcExtensionUIRequest, type RpcExtensionUIResponse } from './broker-protocol.js';
|
|
8
|
+
/** A review companion may only navigate or fork within a branch whose ancestry
|
|
9
|
+
* has crossed its durable transcript boundary. The broker sends this typed local
|
|
10
|
+
* failure as a dedicated error frame without invoking pi's tree mutation. */
|
|
11
|
+
export declare const REVIEW_BOUNDARY_NAVIGATION_CODE = "review_boundary_navigation";
|
|
12
|
+
export declare class ReviewBoundaryNavigationError extends Error {
|
|
13
|
+
readonly targetId: string;
|
|
14
|
+
readonly code = "review_boundary_navigation";
|
|
15
|
+
constructor(targetId: string);
|
|
16
|
+
}
|
|
8
17
|
/**
|
|
9
18
|
* The pinned pi SDK never yields `session.model === undefined` for a model-less
|
|
10
19
|
* boot: Agent.createMutableAgentState() falls back to a hardcoded
|
|
@@ -74,6 +83,11 @@ export declare function isLeadingEngineCommand(text: string, session: {
|
|
|
74
83
|
name: string;
|
|
75
84
|
}>;
|
|
76
85
|
}): boolean;
|
|
86
|
+
/** A `steer` frame normally maps directly to pi's steer queue. Engine commands,
|
|
87
|
+
* skills, and templates must instead pass through prompt()'s leading-command
|
|
88
|
+
* preflight; with streamingBehavior:'steer', ordinary expanded text still lands
|
|
89
|
+
* in the same queue. */
|
|
90
|
+
export declare function resolveSteerCall(text: string, session: Parameters<typeof isLeadingEngineCommand>[1]): 'prompt' | 'steer';
|
|
77
91
|
/**
|
|
78
92
|
* Enumerate every leading-token STRING this session's engine would
|
|
79
93
|
* independently consume as a leading command/skill/template dispatch BEFORE
|
|
@@ -205,7 +219,7 @@ interface PendingDialog {
|
|
|
205
219
|
* bash children. No-op before the session is built or after a clean dispose. */
|
|
206
220
|
export declare function disposeActiveSession(): void;
|
|
207
221
|
export declare function runBroker(nodeId: string, startupAt?: bigint, startupTs?: string): Promise<void>;
|
|
208
|
-
export declare function snapshotMessages(session: CreateAgentSessionResult['session']): BrokerSnapshot['messages'];
|
|
222
|
+
export declare function snapshotMessages(session: CreateAgentSessionResult['session'], reviewCompanion?: boolean): BrokerSnapshot['messages'];
|
|
209
223
|
export declare function buildBrokerSession(engine: BrokerEngine, cfg: BrokerSdkConfig): Promise<{
|
|
210
224
|
session: CreateAgentSessionResult['session'];
|
|
211
225
|
services: AgentSessionServices;
|