@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,17 @@
|
|
|
1
|
+
import { type Component, type TUI } from '@earendil-works/pi-tui';
|
|
2
|
+
import type { AttachPalette } from '../config.js';
|
|
3
|
+
/** A random line, never the one the previous whip used. */
|
|
4
|
+
export declare function randomWhipMessage(messages: readonly string[]): string;
|
|
5
|
+
/** A 20-frame, 12-row header animation that gives the focused agent a playful nudge. */
|
|
6
|
+
export declare class WhipAnimation implements Component {
|
|
7
|
+
private readonly tui;
|
|
8
|
+
private readonly pal;
|
|
9
|
+
private frame;
|
|
10
|
+
private timer;
|
|
11
|
+
constructor(tui: TUI, pal: Pick<AttachPalette, 'accent'>);
|
|
12
|
+
play(): void;
|
|
13
|
+
dispose(): void;
|
|
14
|
+
render(width: number): string[];
|
|
15
|
+
invalidate(): void;
|
|
16
|
+
private stop;
|
|
17
|
+
}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
// session/whip.ts — viewer-local Sisyphus whip animation and steering cues.
|
|
2
|
+
import { truncateToWidth } from '@earendil-works/pi-tui';
|
|
3
|
+
const FRAME_MS = 40;
|
|
4
|
+
const WHIP_FRAMES = [
|
|
5
|
+
[
|
|
6
|
+
"",
|
|
7
|
+
"",
|
|
8
|
+
"",
|
|
9
|
+
"",
|
|
10
|
+
"",
|
|
11
|
+
"",
|
|
12
|
+
"",
|
|
13
|
+
"\u001b[1m⡄\u001b[22m",
|
|
14
|
+
"\u001b[1m⠃\u001b[22m",
|
|
15
|
+
"\u001b[1m⢀\u001b[22m\u001b[1m⡠\u001b[22m/⢤⡀",
|
|
16
|
+
"\u001b[1m⠋\u001b[22m ⠑⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄",
|
|
17
|
+
""
|
|
18
|
+
],
|
|
19
|
+
[
|
|
20
|
+
"",
|
|
21
|
+
"",
|
|
22
|
+
"",
|
|
23
|
+
"",
|
|
24
|
+
"",
|
|
25
|
+
"",
|
|
26
|
+
"",
|
|
27
|
+
"\u001b[1m⡄\u001b[22m",
|
|
28
|
+
"\u001b[1m⠃\u001b[22m",
|
|
29
|
+
"\u001b[1m⢀\u001b[22m\u001b[1m⡠\u001b[22m/⠔⠒⠦⠤⣄⣀",
|
|
30
|
+
"\u001b[1m⠋\u001b[22m ⠈⠉⠓⠒⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄",
|
|
31
|
+
""
|
|
32
|
+
],
|
|
33
|
+
[
|
|
34
|
+
"",
|
|
35
|
+
"",
|
|
36
|
+
"",
|
|
37
|
+
"",
|
|
38
|
+
"",
|
|
39
|
+
"",
|
|
40
|
+
"",
|
|
41
|
+
"\u001b[1m⣦\u001b[22m",
|
|
42
|
+
"\u001b[1m⡟\u001b[22m\u001b[1m⢀\u001b[22m/⠔⠒⠦⠤⣄⣀⡀",
|
|
43
|
+
"\u001b[1m⣧\u001b[22m\u001b[1m⠎\u001b[22m ⠉⠙⠒⠦⠤⣄⣀",
|
|
44
|
+
"\u001b[1m⠏\u001b[22m ⠉⠙⠒⠒⠦⠤⠤⠤⠤⠤⠤⠤⠄",
|
|
45
|
+
""
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
"",
|
|
49
|
+
"",
|
|
50
|
+
"",
|
|
51
|
+
"",
|
|
52
|
+
"",
|
|
53
|
+
"",
|
|
54
|
+
"",
|
|
55
|
+
"\u001b[1m⣦\u001b[22m ⡤⠤⠤⢤⣀⡀",
|
|
56
|
+
"\u001b[1m⡟\u001b[22m\u001b[1m⢀\u001b[22m/⠜ ⠉⠙⠒⠦⠤⢄⣀⡀",
|
|
57
|
+
"\u001b[1m⣧\u001b[22m\u001b[1m⠎\u001b[22m ⠉⠉⠑⠒⠦⠤⢄⣀⡀",
|
|
58
|
+
"\u001b[1m⠏\u001b[22m ⠈⠉⠑⠒⠆",
|
|
59
|
+
""
|
|
60
|
+
],
|
|
61
|
+
[
|
|
62
|
+
"",
|
|
63
|
+
"",
|
|
64
|
+
"",
|
|
65
|
+
"",
|
|
66
|
+
"",
|
|
67
|
+
"",
|
|
68
|
+
" ⡤⠤⠤⠤⣄⣀",
|
|
69
|
+
"\u001b[1m⣴\u001b[22m\u001b[1m⢰\u001b[22m/⠜ ⠈⠉⠓⠦⢤⣀",
|
|
70
|
+
"\u001b[1m⢿\u001b[22m\u001b[1m⣼\u001b[22m\u001b[1m⡇\u001b[22m ⠈⠑⠦⣄⡀",
|
|
71
|
+
"\u001b[1m⢸\u001b[22m\u001b[1m⣿\u001b[22m\u001b[1m⠃\u001b[22m ⠉⠓⠦⠤⣀⣀",
|
|
72
|
+
"\u001b[1m⢸\u001b[22m\u001b[1m⣿\u001b[22m ⠈⠉⠉⠓⠒⠆",
|
|
73
|
+
" \u001b[1m⠛\u001b[22m"
|
|
74
|
+
],
|
|
75
|
+
[
|
|
76
|
+
"",
|
|
77
|
+
"",
|
|
78
|
+
"",
|
|
79
|
+
"",
|
|
80
|
+
"",
|
|
81
|
+
" ⡤⠤⠤⠤⣄⣀",
|
|
82
|
+
" \u001b[1m⠠\u001b[22m/⠜ ⠈⠉⠓⠦⢤⣀",
|
|
83
|
+
"\u001b[1m⢤\u001b[22m \u001b[1m⣿\u001b[22m ⠈⠙⠲⢤⡀",
|
|
84
|
+
" \u001b[1m⢣\u001b[22m\u001b[1m⢻\u001b[22m\u001b[1m⡆\u001b[22m ⠈⠑⠦⢄⡀",
|
|
85
|
+
" \u001b[1m⢻\u001b[22m\u001b[1m⡇\u001b[22m ⠈⠑⠢⢄⡀",
|
|
86
|
+
" \u001b[1m⠈\u001b[22m\u001b[1m⠛\u001b[22m ⠈⠑⠆",
|
|
87
|
+
""
|
|
88
|
+
],
|
|
89
|
+
[
|
|
90
|
+
"",
|
|
91
|
+
"",
|
|
92
|
+
"",
|
|
93
|
+
"",
|
|
94
|
+
" ⡤⠤⠤⠤⣄⣀",
|
|
95
|
+
" /⠜ ⠈⠉⠓⠦⢤⣀",
|
|
96
|
+
" \u001b[1m⢸\u001b[22m\u001b[1m⡀\u001b[22m ⠈⠙⠲⢤⡀",
|
|
97
|
+
"\u001b[1m⠤\u001b[22m\u001b[1m⣄\u001b[22m \u001b[1m⢇\u001b[22m ⠈⠑⠦⢄⡀",
|
|
98
|
+
" \u001b[1m⠈\u001b[22m\u001b[1m⠓\u001b[22m\u001b[1m⢼\u001b[22m\u001b[1m⡄\u001b[22m ⠈⠑⠢⢄⡀",
|
|
99
|
+
" ⠈⠑⠆",
|
|
100
|
+
"",
|
|
101
|
+
""
|
|
102
|
+
],
|
|
103
|
+
[
|
|
104
|
+
"",
|
|
105
|
+
"",
|
|
106
|
+
"",
|
|
107
|
+
" ⣀⡠⠤⠤⠤⠤⠤⠤⣄⣀",
|
|
108
|
+
" ⣠⠔⠚⠉ ⠈⠉⠓⠦⢤⣀",
|
|
109
|
+
" /⠜⠁ ⠈⠙⠦⣀",
|
|
110
|
+
" \u001b[1m⢸\u001b[22m\u001b[1m⡀\u001b[22m ⠈⢧",
|
|
111
|
+
"\u001b[1m⠤\u001b[22m\u001b[1m⣄\u001b[22m \u001b[1m⢇\u001b[22m ⡇",
|
|
112
|
+
" \u001b[1m⠈\u001b[22m\u001b[1m⠓\u001b[22m\u001b[1m⢼\u001b[22m\u001b[1m⡄\u001b[22m ⡇",
|
|
113
|
+
" ⠇",
|
|
114
|
+
"",
|
|
115
|
+
""
|
|
116
|
+
],
|
|
117
|
+
[
|
|
118
|
+
"",
|
|
119
|
+
" ⢀⣠⠤⠤⠤⠤⠤⣄⣀",
|
|
120
|
+
" ⣠⠔⠊⠁ ⠈⠙⠦⣄",
|
|
121
|
+
" ⢀⡴⠋ ⠈⢳⡀",
|
|
122
|
+
" ⣠⠔⠋ ⢧",
|
|
123
|
+
" /⠜⠁ ⡎",
|
|
124
|
+
" \u001b[1m⢸\u001b[22m\u001b[1m⡀\u001b[22m ⢠⠃",
|
|
125
|
+
"\u001b[1m⠤\u001b[22m\u001b[1m⣄\u001b[22m \u001b[1m⢇\u001b[22m ⠜",
|
|
126
|
+
" \u001b[1m⠈\u001b[22m\u001b[1m⠓\u001b[22m\u001b[1m⢼\u001b[22m\u001b[1m⡄\u001b[22m",
|
|
127
|
+
"",
|
|
128
|
+
"",
|
|
129
|
+
""
|
|
130
|
+
],
|
|
131
|
+
[
|
|
132
|
+
" ⣀⡤⠤⢤⡀",
|
|
133
|
+
" ⣀⡤⠔⠋⠁ ⢧",
|
|
134
|
+
" ⣠⠔⠋⠁ ⢸",
|
|
135
|
+
" ⣠⠞⠁ ⡜",
|
|
136
|
+
" ⢀⠜⠁ ⡼⠁",
|
|
137
|
+
" \u001b[1m⠠\u001b[22m/⠔⠁ ⠜⠁",
|
|
138
|
+
" \u001b[1m⣿\u001b[22m",
|
|
139
|
+
"\u001b[1m⢤\u001b[22m\u001b[1m⡀\u001b[22m \u001b[1m⣿\u001b[22m",
|
|
140
|
+
" \u001b[1m⠙\u001b[22m\u001b[1m⢦\u001b[22m\u001b[1m⣹\u001b[22m\u001b[1m⡇\u001b[22m",
|
|
141
|
+
" \u001b[1m⠙\u001b[22m\u001b[1m⠃\u001b[22m",
|
|
142
|
+
"",
|
|
143
|
+
""
|
|
144
|
+
],
|
|
145
|
+
[
|
|
146
|
+
" ⣀⡤⠤⢤⡀",
|
|
147
|
+
" ⣀⡤⠔⠋⠁ ⡇",
|
|
148
|
+
" ⣠⣴⠯⠕⠒⠒⠲⠤⠤⠔⠚⠁",
|
|
149
|
+
" ⢠⠔⠒⠦⠤⠔⣲⠟⠁",
|
|
150
|
+
" ⠜ ⢀⠜⠁",
|
|
151
|
+
" \u001b[1m⠠\u001b[22m/⠔⠁",
|
|
152
|
+
" \u001b[1m⣿\u001b[22m",
|
|
153
|
+
"\u001b[1m⢤\u001b[22m\u001b[1m⡀\u001b[22m \u001b[1m⣿\u001b[22m",
|
|
154
|
+
" \u001b[1m⠙\u001b[22m\u001b[1m⢦\u001b[22m\u001b[1m⣹\u001b[22m\u001b[1m⡇\u001b[22m",
|
|
155
|
+
" \u001b[1m⠙\u001b[22m\u001b[1m⠃\u001b[22m",
|
|
156
|
+
"",
|
|
157
|
+
""
|
|
158
|
+
],
|
|
159
|
+
[
|
|
160
|
+
" ⣀⡤⠤⢤⡀",
|
|
161
|
+
" ⣀⡤⠔⠋⠁ ⡇",
|
|
162
|
+
" ⣠⣴⠯⠕⠒⠒⠲⠤⠤⠔⠚⠁",
|
|
163
|
+
" ⢠⠔⠒⠦⠤⠔⣲⠟⠁",
|
|
164
|
+
" ⠜ ⢀⠜⠁",
|
|
165
|
+
" \u001b[1m⠠\u001b[22m/⠔⠁",
|
|
166
|
+
" \u001b[1m⣿\u001b[22m",
|
|
167
|
+
"\u001b[1m⢤\u001b[22m\u001b[1m⡀\u001b[22m \u001b[1m⣿\u001b[22m",
|
|
168
|
+
" \u001b[1m⠙\u001b[22m\u001b[1m⢦\u001b[22m\u001b[1m⣹\u001b[22m\u001b[1m⡇\u001b[22m",
|
|
169
|
+
" \u001b[1m⠙\u001b[22m\u001b[1m⠃\u001b[22m",
|
|
170
|
+
"",
|
|
171
|
+
""
|
|
172
|
+
],
|
|
173
|
+
[
|
|
174
|
+
"",
|
|
175
|
+
"",
|
|
176
|
+
"",
|
|
177
|
+
"",
|
|
178
|
+
"",
|
|
179
|
+
"",
|
|
180
|
+
"",
|
|
181
|
+
"\u001b[1m⠤\u001b[22m\u001b[1m⣄\u001b[22m ⢀⣠⠤⠔⠒⠒⠒⠒⠒⠒⠒⠦⠤⠤⠤⠤⠤⠤⠤⠄",
|
|
182
|
+
" \u001b[1m⠈\u001b[22m\u001b[1m⠓\u001b[22m\u001b[1m⢤\u001b[22m\u001b[1m⣀\u001b[22m\u001b[1m⣀\u001b[22m\u001b[1m⠤\u001b[22m\u001b[1m⠤\u001b[22m/⠔⠊⠁",
|
|
183
|
+
"",
|
|
184
|
+
"",
|
|
185
|
+
""
|
|
186
|
+
],
|
|
187
|
+
[
|
|
188
|
+
"",
|
|
189
|
+
"",
|
|
190
|
+
"",
|
|
191
|
+
"",
|
|
192
|
+
"",
|
|
193
|
+
"",
|
|
194
|
+
" \\\\|/",
|
|
195
|
+
"\u001b[1m⠤\u001b[22m\u001b[1m⣄\u001b[22m ⢀⣠⠤⠔⠒⠒⠒⠒⠒⠒⠒⠦⠤⠤⠤⠤-*-",
|
|
196
|
+
" \u001b[1m⠈\u001b[22m\u001b[1m⠓\u001b[22m\u001b[1m⢤\u001b[22m\u001b[1m⣀\u001b[22m\u001b[1m⣀\u001b[22m\u001b[1m⠤\u001b[22m\u001b[1m⠤\u001b[22m/⠔⠊⠁ /|\\\\",
|
|
197
|
+
"",
|
|
198
|
+
"",
|
|
199
|
+
""
|
|
200
|
+
],
|
|
201
|
+
[
|
|
202
|
+
"",
|
|
203
|
+
"",
|
|
204
|
+
"",
|
|
205
|
+
"",
|
|
206
|
+
"",
|
|
207
|
+
"",
|
|
208
|
+
"",
|
|
209
|
+
"\u001b[1m⢤\u001b[22m\u001b[1m⡀\u001b[22m",
|
|
210
|
+
" \u001b[1m⠳\u001b[22m\u001b[1m⡀\u001b[22m \u001b[1m⣠\u001b[22m/⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄ ',.",
|
|
211
|
+
" \u001b[1m⠹\u001b[22m\u001b[1m⣄\u001b[22m\u001b[1m⡤\u001b[22m\u001b[1m⠋\u001b[22m . .",
|
|
212
|
+
" \u001b[1m⠉\u001b[22m",
|
|
213
|
+
""
|
|
214
|
+
],
|
|
215
|
+
[
|
|
216
|
+
"",
|
|
217
|
+
"",
|
|
218
|
+
"",
|
|
219
|
+
"",
|
|
220
|
+
"",
|
|
221
|
+
"",
|
|
222
|
+
"",
|
|
223
|
+
"\u001b[1m⣴\u001b[22m",
|
|
224
|
+
"\u001b[1m⢻\u001b[22m\u001b[1m⡆\u001b[22m",
|
|
225
|
+
"\u001b[1m⢸\u001b[22m\u001b[1m⡇\u001b[22m \u001b[1m⣠\u001b[22m/⠔⠒⠒⠦⠤⣄⣀",
|
|
226
|
+
" \u001b[1m⣿\u001b[22m\u001b[1m⣠\u001b[22m\u001b[1m⠞\u001b[22m\u001b[1m⠁\u001b[22m ⠈⠉⠓⠒⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄ . .",
|
|
227
|
+
" \u001b[1m⠛\u001b[22m\u001b[1m⠁\u001b[22m"
|
|
228
|
+
],
|
|
229
|
+
[
|
|
230
|
+
"",
|
|
231
|
+
"",
|
|
232
|
+
"",
|
|
233
|
+
"",
|
|
234
|
+
"",
|
|
235
|
+
"",
|
|
236
|
+
"",
|
|
237
|
+
"\u001b[1m⣦\u001b[22m",
|
|
238
|
+
"\u001b[1m⡿\u001b[22m",
|
|
239
|
+
"\u001b[1m⡇\u001b[22m \u001b[1m⣠\u001b[22m/⢤⡀",
|
|
240
|
+
"\u001b[1m⣧\u001b[22m\u001b[1m⠞\u001b[22m\u001b[1m⠁\u001b[22m ⠉⠓⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄",
|
|
241
|
+
"\u001b[1m⠁\u001b[22m"
|
|
242
|
+
],
|
|
243
|
+
[
|
|
244
|
+
"",
|
|
245
|
+
"",
|
|
246
|
+
"",
|
|
247
|
+
"",
|
|
248
|
+
"",
|
|
249
|
+
"",
|
|
250
|
+
"",
|
|
251
|
+
"\u001b[1m⡄\u001b[22m",
|
|
252
|
+
"\u001b[1m⠃\u001b[22m",
|
|
253
|
+
"\u001b[1m⢀\u001b[22m\u001b[1m⡠\u001b[22m/⢤",
|
|
254
|
+
"\u001b[1m⠋\u001b[22m ⠈⠓⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄",
|
|
255
|
+
""
|
|
256
|
+
],
|
|
257
|
+
[
|
|
258
|
+
"",
|
|
259
|
+
"",
|
|
260
|
+
"",
|
|
261
|
+
"",
|
|
262
|
+
"",
|
|
263
|
+
"",
|
|
264
|
+
"",
|
|
265
|
+
"\u001b[1m⡄\u001b[22m",
|
|
266
|
+
"\u001b[1m⠃\u001b[22m",
|
|
267
|
+
"\u001b[1m⢀\u001b[22m\u001b[1m⡠\u001b[22m/⢤⡀",
|
|
268
|
+
"\u001b[1m⠋\u001b[22m ⠑⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄",
|
|
269
|
+
""
|
|
270
|
+
],
|
|
271
|
+
[
|
|
272
|
+
"",
|
|
273
|
+
"",
|
|
274
|
+
"",
|
|
275
|
+
"",
|
|
276
|
+
"",
|
|
277
|
+
"",
|
|
278
|
+
"",
|
|
279
|
+
"\u001b[1m⡄\u001b[22m",
|
|
280
|
+
"\u001b[1m⠃\u001b[22m",
|
|
281
|
+
"\u001b[1m⢀\u001b[22m\u001b[1m⡠\u001b[22m/⢤⡀",
|
|
282
|
+
"\u001b[1m⠋\u001b[22m ⠑⠦⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠄",
|
|
283
|
+
""
|
|
284
|
+
]
|
|
285
|
+
];
|
|
286
|
+
let lastMessage;
|
|
287
|
+
/** A random line, never the one the previous whip used. */
|
|
288
|
+
export function randomWhipMessage(messages) {
|
|
289
|
+
const choices = messages.filter((message) => message !== lastMessage);
|
|
290
|
+
const message = choices[Math.floor(Math.random() * choices.length)];
|
|
291
|
+
lastMessage = message;
|
|
292
|
+
return message;
|
|
293
|
+
}
|
|
294
|
+
/** A 20-frame, 12-row header animation that gives the focused agent a playful nudge. */
|
|
295
|
+
export class WhipAnimation {
|
|
296
|
+
tui;
|
|
297
|
+
pal;
|
|
298
|
+
frame = -1;
|
|
299
|
+
timer;
|
|
300
|
+
constructor(tui, pal) {
|
|
301
|
+
this.tui = tui;
|
|
302
|
+
this.pal = pal;
|
|
303
|
+
}
|
|
304
|
+
play() {
|
|
305
|
+
this.stop();
|
|
306
|
+
this.frame = 0;
|
|
307
|
+
this.tui.requestRender();
|
|
308
|
+
this.timer = setInterval(() => {
|
|
309
|
+
this.frame++;
|
|
310
|
+
if (this.frame < WHIP_FRAMES.length) {
|
|
311
|
+
this.tui.requestRender();
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
this.stop();
|
|
315
|
+
}, FRAME_MS);
|
|
316
|
+
}
|
|
317
|
+
dispose() {
|
|
318
|
+
this.stop();
|
|
319
|
+
}
|
|
320
|
+
render(width) {
|
|
321
|
+
if (this.frame < 0)
|
|
322
|
+
return [];
|
|
323
|
+
const span = Math.max(0, width);
|
|
324
|
+
return WHIP_FRAMES[this.frame].map((line) => truncateToWidth(this.pal.accent(line), span, '', true));
|
|
325
|
+
}
|
|
326
|
+
invalidate() { }
|
|
327
|
+
stop() {
|
|
328
|
+
if (this.timer !== undefined)
|
|
329
|
+
clearInterval(this.timer);
|
|
330
|
+
this.timer = undefined;
|
|
331
|
+
this.frame = -1;
|
|
332
|
+
this.tui.requestRender();
|
|
333
|
+
}
|
|
334
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AutocompleteItem, SlashCommand } from '@earendil-works/pi-tui';
|
|
2
|
+
import type { CopyTarget } from '../render/transcript-copy.js';
|
|
2
3
|
import type { BrokerSnapshot, ClientRole, ClientToBroker } from '../../../core/runtime/broker-protocol.js';
|
|
3
4
|
/** Everything a slash handler needs: the frame sink, a notice sink, the latest
|
|
4
5
|
* engine state (for read-only commands like `/session`), and the cwd (for the
|
|
@@ -38,6 +39,10 @@ export interface SlashContext {
|
|
|
38
39
|
* registers `/graph` as a stub that calls this hook. Unit C/Q owns the overlay
|
|
39
40
|
* itself and populates this; when absent `/graph` notifies it isn't wired yet. */
|
|
40
41
|
onGraph?: () => void;
|
|
42
|
+
/** Toggle the human inbox surface from `/inbox`. */
|
|
43
|
+
onInbox?: () => void;
|
|
44
|
+
/** Toggle the in-process Help overlay from `/hotkeys`. */
|
|
45
|
+
onHelp?: () => void;
|
|
41
46
|
/** Detach this viewer (`/quit`). A viewer quit DETACHES — it tears down the
|
|
42
47
|
* local TUI/socket and leaves the shared engine running. Wired by viewer.ts to
|
|
43
48
|
* `teardown('detach')`; without it `/quit` cannot actually exit (just sending
|
|
@@ -47,6 +52,8 @@ export interface SlashContext {
|
|
|
47
52
|
/** Copy the last assistant message to the clipboard (`/copy`). Wired by
|
|
48
53
|
* viewer.ts (it owns the ChatView that holds the text + the clipboard writer). */
|
|
49
54
|
onCopy?: () => void;
|
|
55
|
+
/** Copy one viewer-local transcript target. */
|
|
56
|
+
onCopyTarget?: (target: CopyTarget) => void;
|
|
50
57
|
/** OPTIONAL native-picker openers — the InputController fills these from its
|
|
51
58
|
* read-op request channel. When absent (channel unwired) the value-picker
|
|
52
59
|
* builtins fall back to the text-arg notice. */
|
|
@@ -75,11 +82,16 @@ export interface SlashContext {
|
|
|
75
82
|
* viewer-local render state (ChatView owns it), so it is safe for an observer
|
|
76
83
|
* and for a remote attach. Absent → the command notifies it is unwired. */
|
|
77
84
|
onFoldTools?: () => void;
|
|
85
|
+
/** Toggle mouse wheel scrolling reporting on/off. Viewer-local render state
|
|
86
|
+
* (MouseReporting owns the reporting state and the hardware toggle), so it is
|
|
87
|
+
* safe for an observer and for a remote attach. Absent → the command notifies
|
|
88
|
+
* it is unwired. */
|
|
89
|
+
onToggleMouse?: () => void;
|
|
78
90
|
}
|
|
79
91
|
/** Canvas slash-commands — implemented NATIVE in the viewer, the ONLY live host:
|
|
80
92
|
* the broker binds mode:'rpc', so broker pi-extensions never run their
|
|
81
93
|
* interactive (mode==='tui') paths. `/promote` triggers a turn after shelling
|
|
82
|
-
* `crtr node promote`; `/resume-node
|
|
94
|
+
* `crtr node promote`; `/resume-node` and `/context` each shell a `crtr`
|
|
83
95
|
* subcommand via `tmux display-popup` (the viewer runs inside a tmux pane);
|
|
84
96
|
* `/graph` toggles the in-process overlay. Exported so the editor folds these
|
|
85
97
|
* into the slash autocomplete list. */
|
|
@@ -27,32 +27,35 @@ import { surfaceTmuxStyleArgs } from '../../../core/runtime/surface-bg.js';
|
|
|
27
27
|
/** Canvas slash-commands — implemented NATIVE in the viewer, the ONLY live host:
|
|
28
28
|
* the broker binds mode:'rpc', so broker pi-extensions never run their
|
|
29
29
|
* interactive (mode==='tui') paths. `/promote` triggers a turn after shelling
|
|
30
|
-
* `crtr node promote`; `/resume-node
|
|
30
|
+
* `crtr node promote`; `/resume-node` and `/context` each shell a `crtr`
|
|
31
31
|
* subcommand via `tmux display-popup` (the viewer runs inside a tmux pane);
|
|
32
32
|
* `/graph` toggles the in-process overlay. Exported so the editor folds these
|
|
33
33
|
* into the slash autocomplete list. */
|
|
34
34
|
export const CANVAS_SLASH_COMMANDS = [
|
|
35
35
|
{ name: 'clear', description: 'Clear the conversation and free context — a fresh, empty session (like /new)' },
|
|
36
36
|
{ name: 'graph', description: 'Toggle the canvas GRAPH view (your local subscription tree)' },
|
|
37
|
+
{ name: 'inbox', description: 'Toggle the human inbox — pending asks and reviews for you' },
|
|
37
38
|
{ name: 'promote', description: 'Promote this node to an orchestrator — /promote, or /promote <kind> to specialize' },
|
|
38
39
|
{ name: 'resume-node', description: 'Open the canvas navigator (search/scope/sort/tree) and resume the chosen node' },
|
|
39
|
-
{ name: 'view', description: 'Open a view in a popup — bare for the picker, or /view <name> to open that view directly' },
|
|
40
40
|
{ name: 'context', description: 'Browse this node + its subscriptions’ context dirs in a read-only nvim popup' },
|
|
41
41
|
{ name: 'node-metadata', description: 'Inspect this node — identity, lifecycle, runtime, graph, artifacts, paths, and agent surfaces' },
|
|
42
42
|
{ name: 'mcp', description: 'MCP servers — status from the adapter’s config/cache; Enter (or /mcp <server>) connects, reconnects, or re-auths' },
|
|
43
43
|
{ name: 'rename', description: 'Rename this node everywhere — node row, viewer window, session chip, tmux pane: /rename <name>' },
|
|
44
44
|
{ name: 'color', description: 'Color this node — tmux pane outline + name chip: /color <color> (red, blue, #rrggbb, …) or /color none' },
|
|
45
|
-
{ name: '
|
|
45
|
+
{ name: 'mouse', description: 'Toggle mouse wheel scrolling — off restores tmux drag-select and copy-mode mouse' },
|
|
46
|
+
{ name: 'copy-message', description: 'Copy the newest message visible in the transcript viewport' },
|
|
47
|
+
{ name: 'copy-tool', description: 'Copy the newest tool call output' },
|
|
48
|
+
{ name: 'copy-transcript', description: 'Copy every copyable transcript block' },
|
|
49
|
+
{ name: 'fold-tools', description: 'View setting — fold every FINISHED tool call to its single call line (Alt+C → z → f)' },
|
|
46
50
|
];
|
|
47
51
|
const CANVAS_NAMES = new Set(CANVAS_SLASH_COMMANDS.map((c) => c.name));
|
|
48
52
|
/** Native canvas commands that shell a LOCAL `crtr` mutation or read against
|
|
49
|
-
* `ctx.nodeId` — unsafe for a remote attach
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
|
|
55
|
-
const REMOTE_UNSAFE_CANVAS_NAMES = new Set(['promote', 'resume-node', 'context', 'node-metadata', 'rename', 'clear', 'mcp']);
|
|
53
|
+
* `ctx.nodeId` — unsafe for a remote attach: `/promote` shells `crtr node
|
|
54
|
+
* promote --node` locally, `/resume-node` opens local `crtr canvas browse`
|
|
55
|
+
* whose Enter path focuses a local node, and `/context` opens local `crtr node
|
|
56
|
+
* inspect context`. `/graph` stays available because its in-process overlay
|
|
57
|
+
* handles remote canvases directly. */
|
|
58
|
+
const REMOTE_UNSAFE_CANVAS_NAMES = new Set(['promote', 'resume-node', 'context', 'node-metadata', 'rename', 'clear', 'mcp', 'inbox']);
|
|
56
59
|
/** Native canvas commands an OBSERVER may not run — the ones that drive the
|
|
57
60
|
* engine or mutate the node, whether by frame or by shelling the crtr CLI:
|
|
58
61
|
* `/clear` sends `new_session`; `/promote` shells `crtr node promote` and then
|
|
@@ -63,7 +66,7 @@ const REMOTE_UNSAFE_CANVAS_NAMES = new Set(['promote', 'resume-node', 'context',
|
|
|
63
66
|
* `/graph` (in-process overlay), `/context` and `/node-metadata` (read-only
|
|
64
67
|
* inspection popups), `/color` (this pane's tmux border + this viewer's name
|
|
65
68
|
* chip). */
|
|
66
|
-
const OBSERVER_UNSAFE_CANVAS_NAMES = new Set(['clear', 'promote', 'rename', 'resume-node', '
|
|
69
|
+
const OBSERVER_UNSAFE_CANVAS_NAMES = new Set(['clear', 'promote', 'rename', 'resume-node', 'mcp']);
|
|
67
70
|
/** tmux named colours accepted by `/color` (plus `colourN`/`#rrggbb`, validated
|
|
68
71
|
* by pattern). Mirrors tmux's colour-name table so a typo is rejected with the
|
|
69
72
|
* options rather than silently ignored by tmux. */
|
|
@@ -301,10 +304,14 @@ export function dispatchSlashCommand(text, ctx) {
|
|
|
301
304
|
case 'changelog':
|
|
302
305
|
ctx.notify('/changelog: see https://github.com/earendil-works/pi for release notes (no bundled changelog in this build)');
|
|
303
306
|
return true;
|
|
304
|
-
// --- recognized builtins with no Phase-4 wire path --------------------
|
|
305
307
|
case 'hotkeys':
|
|
306
|
-
ctx.
|
|
308
|
+
if (ctx.onHelp) {
|
|
309
|
+
ctx.onHelp();
|
|
310
|
+
return true;
|
|
311
|
+
}
|
|
312
|
+
ctx.notify('/hotkeys is not available in this viewer');
|
|
307
313
|
return true;
|
|
314
|
+
// --- recognized builtins with no Phase-4 wire path --------------------
|
|
308
315
|
default:
|
|
309
316
|
// A builtin we listed but didn't special-case: treat as unsupported
|
|
310
317
|
// rather than leak it to the LLM as literal text.
|
|
@@ -359,6 +366,12 @@ function dispatchCanvasCommand(name, arg, ctx) {
|
|
|
359
366
|
else
|
|
360
367
|
ctx.notify('The GRAPH overlay is not wired into the viewer yet');
|
|
361
368
|
return true;
|
|
369
|
+
case 'inbox':
|
|
370
|
+
if (ctx.onInbox)
|
|
371
|
+
ctx.onInbox();
|
|
372
|
+
else
|
|
373
|
+
ctx.notify('The inbox surface is not wired into the viewer yet');
|
|
374
|
+
return true;
|
|
362
375
|
case 'promote':
|
|
363
376
|
promoteNode(arg, ctx);
|
|
364
377
|
return true;
|
|
@@ -366,10 +379,6 @@ function dispatchCanvasCommand(name, arg, ctx) {
|
|
|
366
379
|
// Open the full-screen canvas navigator as a popup; on Enter it focuses the
|
|
367
380
|
// chosen node back into THIS pane via `crtr surface node focus`.
|
|
368
381
|
return resumeNode(ctx);
|
|
369
|
-
case 'view':
|
|
370
|
-
// Bare `/view` opens the picker, `/view <name>` opens that view directly —
|
|
371
|
-
// each as a self-contained popup (no node-focus, no return-pane).
|
|
372
|
-
return openView(arg, ctx);
|
|
373
382
|
case 'mcp':
|
|
374
383
|
// MCP server status panel — viewer-local reads of the adapter's on-disk
|
|
375
384
|
// config sources/cache (see overlays/mcp.ts); the actions (connect /
|
|
@@ -402,6 +411,31 @@ function dispatchCanvasCommand(name, arg, ctx) {
|
|
|
402
411
|
else
|
|
403
412
|
ctx.notify('The fold-tools view setting is not wired into this viewer');
|
|
404
413
|
return true;
|
|
414
|
+
case 'mouse':
|
|
415
|
+
// Viewer-local render state only — no frame, no CLI, no node mutation.
|
|
416
|
+
if (ctx.onToggleMouse)
|
|
417
|
+
ctx.onToggleMouse();
|
|
418
|
+
else
|
|
419
|
+
ctx.notify('Mouse reporting is not wired into this viewer');
|
|
420
|
+
return true;
|
|
421
|
+
case 'copy-message':
|
|
422
|
+
if (ctx.onCopyTarget)
|
|
423
|
+
ctx.onCopyTarget('message');
|
|
424
|
+
else
|
|
425
|
+
ctx.notify('/copy-message is not available in this viewer');
|
|
426
|
+
return true;
|
|
427
|
+
case 'copy-tool':
|
|
428
|
+
if (ctx.onCopyTarget)
|
|
429
|
+
ctx.onCopyTarget('tool');
|
|
430
|
+
else
|
|
431
|
+
ctx.notify('/copy-tool is not available in this viewer');
|
|
432
|
+
return true;
|
|
433
|
+
case 'copy-transcript':
|
|
434
|
+
if (ctx.onCopyTarget)
|
|
435
|
+
ctx.onCopyTarget('transcript');
|
|
436
|
+
else
|
|
437
|
+
ctx.notify('/copy-transcript is not available in this viewer');
|
|
438
|
+
return true;
|
|
405
439
|
default:
|
|
406
440
|
ctx.notify(`/${name} is not available in attach`);
|
|
407
441
|
return true;
|
|
@@ -587,18 +621,6 @@ function resumeNode(ctx) {
|
|
|
587
621
|
popup(cmd);
|
|
588
622
|
return true;
|
|
589
623
|
}
|
|
590
|
-
/** `/view [name]`. Bare opens the picker; with a name it opens that view directly. Self-contained
|
|
591
|
-
* popup — no node-focus, no return-pane. */
|
|
592
|
-
function openView(arg, ctx) {
|
|
593
|
-
if (process.env['TMUX'] === undefined) {
|
|
594
|
-
ctx.notify('/view needs tmux');
|
|
595
|
-
return true;
|
|
596
|
-
}
|
|
597
|
-
const name = arg.trim();
|
|
598
|
-
const cmd = name === '' ? 'crtr surface view pick' : `crtr surface view run ${shellQuote(name)}`;
|
|
599
|
-
popup(cmd);
|
|
600
|
-
return true;
|
|
601
|
-
}
|
|
602
624
|
/** `/context`. Opens `crtr node inspect context` as a popup — a
|
|
603
625
|
* read-only nvim explorer over this node's + its subscriptions' context dirs.
|
|
604
626
|
* Self-contained popup — no node-focus, no return-pane. */
|