@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
|
@@ -3,17 +3,16 @@ export declare const CANVAS_INBOX_WATCHER_PATH: string;
|
|
|
3
3
|
export declare const CANVAS_RECAP_PATH: string;
|
|
4
4
|
export declare const CANVAS_GOAL_CAPTURE_PATH: string;
|
|
5
5
|
export declare const CANVAS_PASSIVE_CONTEXT_PATH: string;
|
|
6
|
+
export declare const CANVAS_REVIEW_BOUNDARY_PATH: string;
|
|
6
7
|
export declare const CANVAS_CONTEXT_INTRO_PATH: string;
|
|
7
8
|
export declare const CANVAS_TOOL_GUIDE_PATH: string;
|
|
8
9
|
export declare const CANVAS_DOC_SUBSTRATE_PATH: string;
|
|
9
10
|
export declare const CANVAS_STRUCTURED_OUTPUT_PATH: string;
|
|
10
11
|
export declare const CANVAS_BASH_VALVE_PATH: string;
|
|
11
|
-
/** NOT a canvas extension — loaded only by the headless namer subprocess
|
|
12
|
-
* (`runtime/naming.ts`) to give it a constrained-schema `name_session` tool.
|
|
13
|
-
* Deliberately absent from CANVAS_EXTENSIONS: a node must never carry it. */
|
|
14
|
-
export declare const NAMING_TOOL_PATH: string;
|
|
15
12
|
/** The canvas extensions every node loads, in order. The inbox watcher commits
|
|
16
|
-
* its cursor at agent_settled before the stophook checks it for idle release.
|
|
13
|
+
* its cursor at agent_settled before the stophook checks it for idle release.
|
|
14
|
+
* The review boundary must run before the stophook commits companion session
|
|
15
|
+
* coordinates, and before the context intro appends fork bearings. */
|
|
17
16
|
export declare const CANVAS_EXTENSIONS: string[];
|
|
18
17
|
/** Preserve the invariant: mandatory extensions are always present exactly once.
|
|
19
18
|
*
|
|
@@ -15,19 +15,19 @@ export const CANVAS_INBOX_WATCHER_PATH = resolveExtension('canvas-inbox-watcher'
|
|
|
15
15
|
export const CANVAS_RECAP_PATH = resolveExtension('canvas-recap');
|
|
16
16
|
export const CANVAS_GOAL_CAPTURE_PATH = resolveExtension('canvas-goal-capture');
|
|
17
17
|
export const CANVAS_PASSIVE_CONTEXT_PATH = resolveExtension('canvas-passive-context');
|
|
18
|
+
export const CANVAS_REVIEW_BOUNDARY_PATH = resolveExtension('canvas-review-boundary');
|
|
18
19
|
export const CANVAS_CONTEXT_INTRO_PATH = resolveExtension('canvas-context-intro');
|
|
19
20
|
export const CANVAS_TOOL_GUIDE_PATH = resolveExtension('canvas-tool-guide');
|
|
20
21
|
export const CANVAS_DOC_SUBSTRATE_PATH = resolveExtension('canvas-doc-substrate');
|
|
21
22
|
export const CANVAS_STRUCTURED_OUTPUT_PATH = resolveExtension('canvas-structured-output');
|
|
22
23
|
export const CANVAS_BASH_VALVE_PATH = resolveExtension('canvas-bash-valve');
|
|
23
|
-
/** NOT a canvas extension — loaded only by the headless namer subprocess
|
|
24
|
-
* (`runtime/naming.ts`) to give it a constrained-schema `name_session` tool.
|
|
25
|
-
* Deliberately absent from CANVAS_EXTENSIONS: a node must never carry it. */
|
|
26
|
-
export const NAMING_TOOL_PATH = resolveExtension('naming-tool');
|
|
27
24
|
/** The canvas extensions every node loads, in order. The inbox watcher commits
|
|
28
|
-
* its cursor at agent_settled before the stophook checks it for idle release.
|
|
25
|
+
* its cursor at agent_settled before the stophook checks it for idle release.
|
|
26
|
+
* The review boundary must run before the stophook commits companion session
|
|
27
|
+
* coordinates, and before the context intro appends fork bearings. */
|
|
29
28
|
export const CANVAS_EXTENSIONS = [
|
|
30
29
|
CANVAS_INBOX_WATCHER_PATH,
|
|
30
|
+
CANVAS_REVIEW_BOUNDARY_PATH,
|
|
31
31
|
CANVAS_STOPHOOK_PATH,
|
|
32
32
|
CANVAS_RECAP_PATH,
|
|
33
33
|
CANVAS_GOAL_CAPTURE_PATH,
|
|
@@ -151,7 +151,7 @@ export async function maybeBootRoot(argv) {
|
|
|
151
151
|
// Unambiguous front-door launch → boot a resident root inline (exec pi in
|
|
152
152
|
// this terminal). Does not return. Load the heavy boot-path deps lazily now
|
|
153
153
|
// that we've committed to booting (see the import note at the top of file).
|
|
154
|
-
const [{ bootRoot }, { resumeRoot }, {
|
|
154
|
+
const [{ bootRoot }, { resumeRoot }, { rendererWarning, missingPackageWarning, piAgentDir }] = await Promise.all([
|
|
155
155
|
import('./boot-root.js'),
|
|
156
156
|
import('./resume-root.js'),
|
|
157
157
|
import('./package-health.js'),
|
|
@@ -164,9 +164,9 @@ export async function maybeBootRoot(argv) {
|
|
|
164
164
|
const warn = missingPackageWarning(piAgentDir());
|
|
165
165
|
if (warn !== null)
|
|
166
166
|
process.stderr.write(`\n${warn}\n\n`);
|
|
167
|
-
const
|
|
168
|
-
if (
|
|
169
|
-
process.stderr.write(`\n${
|
|
167
|
+
const rendererWarn = rendererWarning();
|
|
168
|
+
if (rendererWarn !== null)
|
|
169
|
+
process.stderr.write(`\n${rendererWarn}\n\n`);
|
|
170
170
|
}
|
|
171
171
|
catch {
|
|
172
172
|
/* best-effort diagnostic — never block a boot */
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ConstrainedSamplingConfig } from '@earendil-works/pi-ai';
|
|
2
|
+
import type { TSchema } from 'typebox';
|
|
3
|
+
export interface HeadlessTool {
|
|
4
|
+
name: string;
|
|
5
|
+
label: string;
|
|
6
|
+
description: string;
|
|
7
|
+
parameters: TSchema;
|
|
8
|
+
constrainedSampling?: false | ConstrainedSamplingConfig;
|
|
9
|
+
}
|
|
10
|
+
export interface HeadlessRequest {
|
|
11
|
+
systemPrompt: string;
|
|
12
|
+
userPrompt: string;
|
|
13
|
+
modelSpec: string;
|
|
14
|
+
/** Logical `family/strength` intent. Omit for a concrete model request. */
|
|
15
|
+
modelIntent?: string;
|
|
16
|
+
timeoutMs: number;
|
|
17
|
+
tool?: HeadlessTool;
|
|
18
|
+
}
|
|
19
|
+
/** Run a one-shot call whose only output channel is one structured tool call. */
|
|
20
|
+
export declare function headlessToolCall(request: HeadlessRequest & {
|
|
21
|
+
tool: HeadlessTool;
|
|
22
|
+
}): Promise<unknown>;
|
|
23
|
+
/** Run a one-shot call and return the final assistant text. */
|
|
24
|
+
export declare function headlessText(request: HeadlessRequest): Promise<string>;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// Isolated in-process Pi one-shots for lightweight model work.
|
|
2
|
+
//
|
|
3
|
+
// Each call uses crouter's credential pool and route policy, an in-memory session,
|
|
4
|
+
// and only the inline provider-rotation extension. No conversation resources or
|
|
5
|
+
// canvas lifecycle hooks enter the helper session.
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { PoolCredentialStore } from '../pool-credential-store.js';
|
|
8
|
+
import { modelRequestFromConfig, selectInitialModelRoute } from '../model-routes.js';
|
|
9
|
+
function lastAssistantText(messages) {
|
|
10
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
11
|
+
const message = messages[i];
|
|
12
|
+
if (message?.role !== 'assistant')
|
|
13
|
+
continue;
|
|
14
|
+
if (typeof message.content === 'string')
|
|
15
|
+
return message.content.trim();
|
|
16
|
+
if (!Array.isArray(message.content))
|
|
17
|
+
continue;
|
|
18
|
+
const text = message.content
|
|
19
|
+
.map((part) => {
|
|
20
|
+
const value = part;
|
|
21
|
+
return value.type === 'text' && typeof value.text === 'string' ? value.text : '';
|
|
22
|
+
})
|
|
23
|
+
.join('')
|
|
24
|
+
.trim();
|
|
25
|
+
if (text !== '')
|
|
26
|
+
return text;
|
|
27
|
+
}
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
async function runHeadless(request, fallback, collect) {
|
|
31
|
+
let session;
|
|
32
|
+
let disposed = false;
|
|
33
|
+
let timedOut = false;
|
|
34
|
+
let timeout;
|
|
35
|
+
const disposeSession = (abort) => {
|
|
36
|
+
if (session === undefined || disposed)
|
|
37
|
+
return;
|
|
38
|
+
disposed = true;
|
|
39
|
+
if (abort)
|
|
40
|
+
void session.abort().catch(() => undefined);
|
|
41
|
+
session.dispose();
|
|
42
|
+
};
|
|
43
|
+
const deadline = new Promise((resolve) => {
|
|
44
|
+
timeout = setTimeout(() => {
|
|
45
|
+
timedOut = true;
|
|
46
|
+
disposeSession(true);
|
|
47
|
+
resolve(fallback);
|
|
48
|
+
}, request.timeoutMs);
|
|
49
|
+
});
|
|
50
|
+
const run = (async () => {
|
|
51
|
+
try {
|
|
52
|
+
const [sdk, rotation] = await Promise.all([
|
|
53
|
+
import('@earendil-works/pi-coding-agent'),
|
|
54
|
+
import('../../builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.js'),
|
|
55
|
+
]);
|
|
56
|
+
if (timedOut)
|
|
57
|
+
return fallback;
|
|
58
|
+
const nodeCwd = process.env['CRTR_NODE_CWD'] ?? process.cwd();
|
|
59
|
+
const profileId = process.env['CRTR_PROFILE_ID'];
|
|
60
|
+
const agentDir = sdk.getAgentDir();
|
|
61
|
+
const modelRuntime = await sdk.ModelRuntime.create({
|
|
62
|
+
credentials: new PoolCredentialStore(join(agentDir, 'auth.json')),
|
|
63
|
+
modelsPath: join(agentDir, 'models.json'),
|
|
64
|
+
});
|
|
65
|
+
if (timedOut)
|
|
66
|
+
return fallback;
|
|
67
|
+
const services = await sdk.createAgentSessionServices({
|
|
68
|
+
cwd: nodeCwd,
|
|
69
|
+
agentDir,
|
|
70
|
+
modelRuntime,
|
|
71
|
+
settingsManager: sdk.SettingsManager.inMemory(),
|
|
72
|
+
resourceLoaderOptions: {
|
|
73
|
+
noExtensions: true,
|
|
74
|
+
noContextFiles: true,
|
|
75
|
+
noSkills: true,
|
|
76
|
+
noPromptTemplates: true,
|
|
77
|
+
noThemes: true,
|
|
78
|
+
systemPrompt: request.systemPrompt,
|
|
79
|
+
extensionFactories: [rotation.createProviderRotationExtension({
|
|
80
|
+
modelIntent: request.modelIntent,
|
|
81
|
+
nodeCwd,
|
|
82
|
+
profileId,
|
|
83
|
+
})],
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
if (timedOut)
|
|
87
|
+
return fallback;
|
|
88
|
+
const modelRequest = modelRequestFromConfig(request.modelSpec, request.modelIntent, false);
|
|
89
|
+
if (modelRequest === undefined)
|
|
90
|
+
return fallback;
|
|
91
|
+
const selected = selectInitialModelRoute(modelRequest, new sdk.ModelRegistry(services.modelRuntime), {
|
|
92
|
+
cwd: nodeCwd,
|
|
93
|
+
profileId,
|
|
94
|
+
}).selected;
|
|
95
|
+
if (selected === undefined)
|
|
96
|
+
return fallback;
|
|
97
|
+
let captured;
|
|
98
|
+
const tool = request.tool;
|
|
99
|
+
const customTool = tool === undefined ? undefined : sdk.defineTool({
|
|
100
|
+
name: tool.name,
|
|
101
|
+
label: tool.label,
|
|
102
|
+
description: tool.description,
|
|
103
|
+
parameters: tool.parameters,
|
|
104
|
+
...(tool.constrainedSampling === undefined ? {} : { constrainedSampling: tool.constrainedSampling }),
|
|
105
|
+
async execute(_toolCallId, params) {
|
|
106
|
+
captured = params;
|
|
107
|
+
return {
|
|
108
|
+
content: [{ type: 'text', text: 'Recorded.' }],
|
|
109
|
+
details: { recorded: true },
|
|
110
|
+
terminate: true,
|
|
111
|
+
};
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
({ session } = await sdk.createAgentSessionFromServices({
|
|
115
|
+
services,
|
|
116
|
+
sessionManager: sdk.SessionManager.inMemory(nodeCwd),
|
|
117
|
+
model: selected.model,
|
|
118
|
+
thinkingLevel: 'off',
|
|
119
|
+
...(tool === undefined
|
|
120
|
+
? { noTools: 'all' }
|
|
121
|
+
: { tools: [tool.name], customTools: [customTool] }),
|
|
122
|
+
}));
|
|
123
|
+
if (timedOut)
|
|
124
|
+
return fallback;
|
|
125
|
+
await session.bindExtensions({});
|
|
126
|
+
if (timedOut)
|
|
127
|
+
return fallback;
|
|
128
|
+
await session.prompt(request.userPrompt);
|
|
129
|
+
return timedOut ? fallback : collect(session, captured);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return fallback;
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
disposeSession(false);
|
|
136
|
+
}
|
|
137
|
+
})();
|
|
138
|
+
try {
|
|
139
|
+
return await Promise.race([run, deadline]);
|
|
140
|
+
}
|
|
141
|
+
finally {
|
|
142
|
+
clearTimeout(timeout);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/** Run a one-shot call whose only output channel is one structured tool call. */
|
|
146
|
+
export function headlessToolCall(request) {
|
|
147
|
+
return runHeadless(request, null, (_session, captured) => captured);
|
|
148
|
+
}
|
|
149
|
+
/** Run a one-shot call and return the final assistant text. */
|
|
150
|
+
export function headlessText(request) {
|
|
151
|
+
return runHeadless(request, '', (session) => lastAssistantText(session.messages));
|
|
152
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type NodeMeta } from '../canvas/index.js';
|
|
2
2
|
import { type WakeOrigin } from './bearings.js';
|
|
3
|
-
export { REVIVE_KICKOFF_SENTINEL } from '../../shared/generated-context.js';
|
|
3
|
+
export { REVIVE_KICKOFF_SENTINEL, RUNTIME_RESTART_CONTINUATION, } from '../../shared/generated-context.js';
|
|
4
4
|
/** The goal file — the prompt/task a node was spawned with, persisted at birth
|
|
5
5
|
* so a fresh revive can re-read its mandate. */
|
|
6
6
|
export declare function goalPath(nodeId: string): string;
|
|
@@ -16,10 +16,6 @@ export declare function captureGoalIfAbsent(nodeId: string, text: string): boole
|
|
|
16
16
|
/** Sentinel opening the fresh-revive kickoff message (see buildReviveKickoff).
|
|
17
17
|
* The goal-capture extension and attached renderers share its pure definition,
|
|
18
18
|
* so the same exact contract controls both prompt exclusion and display. */
|
|
19
|
-
/** Injected only when a broker cleanly persisted an aborted in-flight turn
|
|
20
|
-
* before a daemon restart. The transcript already carries the full picture, so
|
|
21
|
-
* this is a bare nudge — a longer explanation only destabilizes the resume. */
|
|
22
|
-
export declare const RUNTIME_RESTART_CONTINUATION = "continue";
|
|
23
19
|
/** The yield-message file — a short note `crtr node yield` records for the next
|
|
24
20
|
* fresh/cycling revive ("on wake, do X"). It remains durable through failed
|
|
25
21
|
* launch attempts and is cleared only when session_start confirms a boot. */
|
|
@@ -25,7 +25,7 @@ import { buildWakeBearings } from './bearings.js';
|
|
|
25
25
|
import { personaDrift, commitPersonaAck } from './persona.js';
|
|
26
26
|
import { readInboxSince, readCursor, writeCursor, coalesce, } from '../feed/inbox.js';
|
|
27
27
|
import { REVIVE_KICKOFF_SENTINEL } from '../../shared/generated-context.js';
|
|
28
|
-
export { REVIVE_KICKOFF_SENTINEL } from '../../shared/generated-context.js';
|
|
28
|
+
export { REVIVE_KICKOFF_SENTINEL, RUNTIME_RESTART_CONTINUATION, } from '../../shared/generated-context.js';
|
|
29
29
|
// ---------------------------------------------------------------------------
|
|
30
30
|
// Companion context files: the goal (the spawning mandate) and the one-shot
|
|
31
31
|
// yield message (a note from the prior self to the revived self).
|
|
@@ -65,10 +65,6 @@ export function captureGoalIfAbsent(nodeId, text) {
|
|
|
65
65
|
/** Sentinel opening the fresh-revive kickoff message (see buildReviveKickoff).
|
|
66
66
|
* The goal-capture extension and attached renderers share its pure definition,
|
|
67
67
|
* so the same exact contract controls both prompt exclusion and display. */
|
|
68
|
-
/** Injected only when a broker cleanly persisted an aborted in-flight turn
|
|
69
|
-
* before a daemon restart. The transcript already carries the full picture, so
|
|
70
|
-
* this is a bare nudge — a longer explanation only destabilizes the resume. */
|
|
71
|
-
export const RUNTIME_RESTART_CONTINUATION = 'continue';
|
|
72
68
|
/** The yield-message file — a short note `crtr node yield` records for the next
|
|
73
69
|
* fresh/cycling revive ("on wake, do X"). It remains durable through failed
|
|
74
70
|
* launch attempts and is cleared only when session_start confirms a boot. */
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { ModelRegistry, ModelRuntime } from '@earendil-works/pi-coding-agent';
|
|
3
|
+
import { PoolCredentialStore } from '../pool-credential-store.js';
|
|
4
|
+
import { piAgentDir } from './package-health.js';
|
|
5
|
+
/** Open pi's credential-backed model registry for runtime model resolution. */
|
|
6
|
+
export async function openModelRegistry() {
|
|
7
|
+
const agentDir = piAgentDir();
|
|
8
|
+
const runtime = await ModelRuntime.create({
|
|
9
|
+
credentials: new PoolCredentialStore(join(agentDir, 'auth.json')),
|
|
10
|
+
modelsPath: join(agentDir, 'models.json'),
|
|
11
|
+
});
|
|
12
|
+
return new ModelRegistry(runtime);
|
|
13
|
+
}
|
|
@@ -10,3 +10,7 @@ import type { NodeMeta } from '../canvas/index.js';
|
|
|
10
10
|
* pi.setSessionName(editorLabel(meta)) so the LIVE editor label updates in the
|
|
11
11
|
* same session, instead of waiting for the next revive/cycle. */
|
|
12
12
|
export declare function generateAndPersistName(nodeId: string, prompt: string, onNamed?: (meta: NodeMeta) => void): void;
|
|
13
|
+
/** Re-name an automatically titled node from its current conversation. The caller
|
|
14
|
+
* supplies the guard that distinguishes the original generated editor title from
|
|
15
|
+
* a title a person changed while this headless request was in flight. */
|
|
16
|
+
export declare function regenerateAndPersistName(nodeId: string, conversation: string, isStillAutomatic: () => boolean, onNamed?: (meta: NodeMeta) => void): void;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// in canvas state. This one function is the only naming path that writes to a
|
|
6
6
|
// node's meta, so it lives here — broker-side (canvas-goal-capture), never on a
|
|
7
7
|
// CLI leaf's import graph.
|
|
8
|
-
import { headlessName, sanitizeSessionName, slugFromPrompt } from './naming.js';
|
|
8
|
+
import { headlessName, headlessNameFromConversation, sanitizeSessionName, slugFromPrompt } from './naming.js';
|
|
9
9
|
import { getNode, updateNode } from '../canvas/index.js';
|
|
10
10
|
/** Asynchronously generate a name for `prompt` and persist it to the node's
|
|
11
11
|
* meta as `description` + `icon` — only if the node has none yet (so a later
|
|
@@ -40,3 +40,29 @@ export function generateAndPersistName(nodeId, prompt, onNamed) {
|
|
|
40
40
|
};
|
|
41
41
|
void headlessName(body).then(persist);
|
|
42
42
|
}
|
|
43
|
+
/** Re-name an automatically titled node from its current conversation. The caller
|
|
44
|
+
* supplies the guard that distinguishes the original generated editor title from
|
|
45
|
+
* a title a person changed while this headless request was in flight. */
|
|
46
|
+
export function regenerateAndPersistName(nodeId, conversation, isStillAutomatic, onNamed) {
|
|
47
|
+
const body = (conversation ?? '').trim();
|
|
48
|
+
if (body === '')
|
|
49
|
+
return;
|
|
50
|
+
const persist = (generated) => {
|
|
51
|
+
try {
|
|
52
|
+
if (!isStillAutomatic())
|
|
53
|
+
return;
|
|
54
|
+
const meta = getNode(nodeId);
|
|
55
|
+
if (meta === null)
|
|
56
|
+
return;
|
|
57
|
+
const clean = sanitizeSessionName(generated.name);
|
|
58
|
+
const description = clean !== '' ? clean : slugFromPrompt(body);
|
|
59
|
+
const icon = generated.icon.trim();
|
|
60
|
+
const updated = updateNode(nodeId, { description, icon: icon !== '' ? icon : undefined });
|
|
61
|
+
onNamed?.(updated);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// best-effort
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
void headlessNameFromConversation(body).then(persist);
|
|
68
|
+
}
|
|
@@ -5,6 +5,12 @@ export declare function sanitizeSessionName(raw: string): string;
|
|
|
5
5
|
/** Local fallback: derive a name straight from the prompt (no pi call). Drops
|
|
6
6
|
* stop-words, takes the first few content words. */
|
|
7
7
|
export declare function slugFromPrompt(prompt: string): string;
|
|
8
|
+
/** The namer's model: the `light` rung of the DEFAULT provider's ladder, with
|
|
9
|
+
* any thinking suffix stripped because the one-shot session uses thinking off.
|
|
10
|
+
* Reading the ladder rather than pinning a concrete model id keeps naming working for a
|
|
11
|
+
* user who never configured Anthropic: an OpenAI default provider resolves to
|
|
12
|
+
* its own light rung. `CRTR_NAME_MODEL` still overrides. */
|
|
13
|
+
export declare function lightModel(overrideEnv?: string): string;
|
|
8
14
|
/** A generated session name: the kebab-case handle plus the Nerd Font glyph the
|
|
9
15
|
* namer chose for it. `icon` is '' when the model returned nothing usable —
|
|
10
16
|
* every surface renders the name alone in that case. */
|
|
@@ -24,23 +30,22 @@ export interface SessionName {
|
|
|
24
30
|
* `nf-fa-bug`, a bare ASCII letter, and anything multi-glyph, all of which
|
|
25
31
|
* would render as noise or tofu in a label. */
|
|
26
32
|
export declare function sanitizeIcon(raw: string): string;
|
|
27
|
-
/** Ask
|
|
28
|
-
* to a sanitized SessionName, or `{name:'',icon:''}` on
|
|
29
|
-
*
|
|
30
|
-
* a local slug. Owns the subprocess mechanics — crucially it hands pi an
|
|
31
|
-
* immediate stdin EOF: `pi -p` reads stdin, and execFile's default stdin is an
|
|
32
|
-
* OPEN pipe that never closes, so without this pi blocks waiting for EOF and
|
|
33
|
-
* the call exits non-zero (the regression that silently lost every LLM name to
|
|
34
|
-
* the slug fallback).
|
|
33
|
+
/** Ask Pi headlessly for a structured {name, icon} for `body`, async. Resolves
|
|
34
|
+
* to a sanitized SessionName, or `{name:'',icon:''}` on timeout, a missing tool
|
|
35
|
+
* call, or a malformed emission so the caller can fall back to a local slug.
|
|
35
36
|
*
|
|
36
37
|
* Exported (not just for tests): the canvas-coupled persistence wrapper
|
|
37
38
|
* generateAndPersistName lives in naming-persist.ts to keep this module
|
|
38
39
|
* canvas-free, and imports this pure helper. */
|
|
39
|
-
export declare function headlessName(body: string): Promise<SessionName>;
|
|
40
|
+
export declare function headlessName(body: string, sourceCap?: number): Promise<SessionName>;
|
|
41
|
+
/** Generate a name from a bounded conversation source rather than a single
|
|
42
|
+
* kickoff message. The caller owns selecting representative conversation text;
|
|
43
|
+
* this cap keeps the one-shot prompt compact. */
|
|
44
|
+
export declare function headlessNameFromConversation(conversation: string): Promise<SessionName>;
|
|
40
45
|
/** A filesystem-safe slug for the `.todos/<slug>.md` fallback path: lowercase,
|
|
41
46
|
* [a-z0-9] kept, everything else → single hyphen, clamped to 8 words. */
|
|
42
47
|
export declare function titleSlug(title: string): string;
|
|
43
|
-
/** Ask
|
|
44
|
-
* generated title, or a local first-line fallback on
|
|
45
|
-
*
|
|
48
|
+
/** Ask Pi headlessly for a one-line issue title for `note`. Resolves to the
|
|
49
|
+
* generated title, or a local first-line fallback on timeout or empty output.
|
|
50
|
+
* Async; never throws. */
|
|
46
51
|
export declare function generateIssueTitle(note: string): Promise<string>;
|