@north-light/crouter 0.3.173 → 0.3.175
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/bin/runtime-selector.mjs +8 -1
- package/dist/api/__tests__/{client.test.js → serial/client.test.js} +2 -135
- package/dist/api/client.d.ts +12 -21
- package/dist/api/client.js +22 -31
- package/dist/api/dto/broker-ops.d.ts +158 -0
- package/dist/api/dto/broker-ops.js +6 -0
- package/dist/api/dto/crons.d.ts +6 -0
- package/dist/api/dto/human.d.ts +7 -1
- package/dist/api/dto/inbox.d.ts +1 -71
- package/dist/api/dto/inbox.js +1 -9
- package/dist/api/dto/nodes.d.ts +6 -7
- package/dist/api/dto/reviews.d.ts +1 -11
- package/dist/api/routes.d.ts +7 -4
- package/dist/api/routes.js +8 -5
- package/dist/build-root.js +3 -3
- package/dist/builtin-memory/04-base-worker.md +1 -4
- package/dist/builtin-memory/05-kinds/advisor/00-base.md +1 -5
- package/dist/builtin-memory/05-kinds/advisor/01-orchestrator.md +2 -7
- package/dist/builtin-memory/05-kinds/design/00-base.md +1 -6
- package/dist/builtin-memory/05-kinds/developer/00-base.md +1 -6
- package/dist/builtin-memory/05-kinds/explore/00-base.md +1 -4
- package/dist/builtin-memory/05-kinds/explore/01-orchestrator.md +1 -2
- package/dist/builtin-memory/05-kinds/general/00-base.md +1 -3
- package/dist/builtin-memory/05-kinds/plan/00-base.md +1 -6
- package/dist/builtin-memory/05-kinds/plan/reviewers/00-base.md +1 -2
- package/dist/builtin-memory/05-kinds/plan/reviewers/architecture-fit.md +1 -3
- package/dist/builtin-memory/05-kinds/plan/reviewers/code-smells.md +1 -3
- package/dist/builtin-memory/05-kinds/plan/reviewers/pattern-consistency.md +1 -3
- package/dist/builtin-memory/05-kinds/plan/reviewers/requirements-coverage.md +1 -3
- package/dist/builtin-memory/05-kinds/plan/reviewers/security.md +1 -4
- package/dist/builtin-memory/05-kinds/review/companion/00-base.md +2 -3
- package/dist/builtin-memory/05-kinds/spec/00-base.md +1 -2
- package/dist/builtin-memory/advisor/council.md +1 -6
- package/dist/builtin-memory/design.md +2 -7
- package/dist/builtin-memory/development.md +9 -14
- package/dist/builtin-memory/internal/marketplaces.md +2 -6
- package/dist/builtin-memory/internal/nodes-and-canvas.md +1 -1
- package/dist/builtin-memory/internal/plugins.md +2 -8
- package/dist/builtin-memory/internal/storage-tiers.md +1 -2
- package/dist/builtin-memory/testing.md +41 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/{provider-rotation.test.ts → serial/provider-rotation.test.ts} +27 -179
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/claude-plugin-commands.ts +5 -15
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/frontmatter-rules/index.ts +1 -28
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/memory-slash-commands.ts +43 -88
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.js +7 -1
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +9 -1
- package/dist/cli.js +2 -2
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.js +37 -131
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +71 -152
- package/dist/clients/attach/__tests__/context-message.test.js +16 -174
- package/dist/clients/attach/__tests__/crtr-output.test.js +36 -2069
- package/dist/clients/attach/__tests__/diagram.test.js +2 -2
- package/dist/clients/attach/__tests__/edit-diff.test.js +0 -4
- package/dist/clients/attach/__tests__/file-review-focus.test.js +2 -1
- package/dist/clients/attach/__tests__/group-activity.test.js +40 -229
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.js +26 -76
- package/dist/clients/attach/__tests__/prompt-preview.test.js +4 -70
- package/dist/clients/attach/__tests__/ref-autocomplete.test.js +11 -125
- package/dist/clients/attach/__tests__/titled-editor-preview.test.js +14 -205
- package/dist/clients/attach/command.d.ts +2 -1
- package/dist/clients/attach/command.js +81 -76
- package/dist/clients/attach/input/capabilities.d.ts +27 -0
- package/dist/clients/attach/input/capabilities.js +96 -0
- package/dist/clients/attach/input/controller.d.ts +20 -182
- package/dist/clients/attach/input/controller.js +128 -537
- package/dist/clients/attach/input/overlay-owner.d.ts +41 -0
- package/dist/clients/attach/input/overlay-owner.js +199 -0
- package/dist/clients/attach/overlays/file-review.d.ts +0 -4
- package/dist/clients/attach/overlays/file-review.js +13 -5
- package/dist/clients/attach/overlays/graph.js +2 -10
- package/dist/clients/attach/render/chat-view.d.ts +4 -3
- package/dist/clients/attach/render/chat-view.js +39 -33
- package/dist/clients/attach/render/group-activity.d.ts +1 -0
- package/dist/clients/attach/render/group-activity.js +20 -13
- package/dist/clients/attach/render/group-recap.js +12 -3
- package/dist/clients/attach/session/connection.js +9 -15
- package/dist/clients/attach/session/editor-inventory.d.ts +6 -5
- package/dist/clients/attach/session/editor-inventory.js +7 -8
- package/dist/clients/attach/session/file-links.d.ts +13 -0
- package/dist/clients/attach/session/file-links.js +107 -0
- package/dist/clients/attach/session/frame.d.ts +3 -0
- package/dist/clients/attach/session/frame.js +10 -1
- package/dist/clients/attach/session/frames.js +2 -3
- package/dist/clients/attach/session/input-wiring.d.ts +4 -1
- package/dist/clients/attach/session/input-wiring.js +15 -14
- package/dist/clients/attach/session/mouse.d.ts +6 -1
- package/dist/clients/attach/session/mouse.js +8 -5
- package/dist/clients/attach/session/profile-files.js +18 -12
- package/dist/clients/attach/session/reconnect.js +1 -1
- package/dist/clients/attach/session/state-sync.js +1 -2
- package/dist/clients/attach/session/surface-host.d.ts +3 -2
- package/dist/clients/attach/session/surface-host.js +4 -4
- package/dist/clients/attach/slash/dispatch.d.ts +8 -31
- package/dist/clients/attach/slash/dispatch.js +34 -81
- package/dist/clients/attach/viewer.js +820 -860
- package/dist/clients/conversation/projection.d.ts +79 -0
- package/dist/clients/conversation/projection.js +341 -0
- package/dist/clients/inbox/__tests__/serial/inbox-controller.test.js +159 -0
- package/dist/clients/inbox/__tests__/serial/mount-panel.test.js +151 -0
- package/dist/clients/inbox/controller.d.ts +0 -4
- package/dist/clients/inbox/controller.js +0 -2
- package/dist/clients/inbox/review/__tests__/review-core.test.js +4 -293
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.js +100 -0
- package/dist/clients/inbox/review/comments-client.d.ts +3 -2
- package/dist/clients/inbox/review/comments-client.js +12 -12
- package/dist/clients/inbox/review/companion-pane.d.ts +30 -0
- package/dist/clients/inbox/review/companion-pane.js +86 -0
- package/dist/clients/inbox/review/document-surface.d.ts +182 -0
- package/dist/clients/inbox/review/{document-region.js → document-surface.js} +252 -48
- package/dist/clients/inbox/review/frame.js +5 -4
- package/dist/clients/inbox/review/launch.d.ts +8 -8
- package/dist/clients/inbox/review/launch.js +52 -92
- package/dist/clients/inbox/review/nvim.d.ts +2 -0
- package/dist/clients/inbox/review/nvim.js +14 -12
- package/dist/clients/inbox/review/review-client.d.ts +12 -8
- package/dist/clients/inbox/review/review-client.js +46 -35
- package/dist/clients/inbox/review-adapter.d.ts +3 -10
- package/dist/clients/inbox/review-adapter.js +27 -19
- package/dist/clients/inbox/surface.d.ts +0 -4
- package/dist/clients/inbox/surface.js +0 -2
- package/dist/clients/surfaces/host.d.ts +11 -3
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.js +7 -34
- package/dist/commands/__tests__/human.test.js +11 -322
- package/dist/commands/api-client.d.ts +5 -5
- package/dist/commands/api-client.js +6 -85
- package/dist/commands/canvas-browse.js +3 -29
- package/dist/commands/canvas-config.js +1 -1
- package/dist/commands/canvas-use.js +3 -3
- package/dist/commands/canvas.js +1 -1
- package/dist/commands/cron.js +5 -1
- package/dist/commands/human/queue.d.ts +0 -4
- package/dist/commands/human/queue.js +7 -40
- package/dist/commands/memory/list.d.ts +14 -0
- package/dist/commands/memory/list.js +35 -31
- package/dist/commands/memory/read.d.ts +7 -0
- package/dist/commands/memory/read.js +14 -8
- package/dist/commands/memory/write.js +13 -12
- package/dist/commands/node/bash.d.ts +1 -0
- package/dist/commands/node/bash.js +198 -0
- package/dist/commands/node/create.d.ts +23 -0
- package/dist/commands/node/create.js +207 -0
- package/dist/commands/node/inspect.d.ts +2 -0
- package/dist/commands/node/inspect.js +302 -0
- package/dist/commands/node/lifecycle.d.ts +4 -0
- package/dist/commands/node/lifecycle.js +415 -0
- package/dist/commands/node/message.d.ts +1 -0
- package/dist/commands/node/message.js +164 -0
- package/dist/commands/node/pyramid.d.ts +2 -0
- package/dist/commands/node/pyramid.js +79 -0
- package/dist/commands/node/subscription.d.ts +1 -0
- package/dist/commands/node/subscription.js +82 -0
- package/dist/commands/node/wait.d.ts +1 -0
- package/dist/commands/node/wait.js +159 -0
- package/dist/commands/node-lifecycle-revive.js +10 -57
- package/dist/commands/node.d.ts +0 -42
- package/dist/commands/node.js +11 -2065
- package/dist/commands/search.js +1 -1
- package/dist/commands/surface/node/cycle.d.ts +1 -0
- package/dist/commands/surface/node/cycle.js +83 -0
- package/dist/commands/surface/node/focus.d.ts +1 -0
- package/dist/commands/surface/node/focus.js +67 -0
- package/dist/commands/surface/node/id.d.ts +1 -0
- package/dist/commands/surface/node/id.js +38 -0
- package/dist/commands/surface/node/pin.d.ts +1 -0
- package/dist/commands/surface/node/pin.js +42 -0
- package/dist/commands/surface/node/placement.d.ts +46 -0
- package/dist/commands/surface/node/placement.js +124 -0
- package/dist/commands/surface-node.js +4 -1
- package/dist/commands/surface-reload.js +1 -2
- package/dist/commands/surface-tmux-spread.js +1 -1
- package/dist/commands/surface.js +5 -20
- package/dist/commands/sys/__tests__/setup-core.test.js +18 -271
- package/dist/commands/sys/config.js +6 -6
- package/dist/commands/sys/logs.js +1 -1
- package/dist/commands/sys/panels/broker-limits-panel.d.ts +17 -0
- package/dist/commands/sys/panels/broker-limits-panel.js +104 -0
- package/dist/commands/sys/panels/dependencies-panel.d.ts +14 -0
- package/dist/commands/sys/panels/dependencies-panel.js +80 -0
- package/dist/commands/sys/panels/keybindings-panel.d.ts +56 -0
- package/dist/commands/sys/panels/keybindings-panel.js +703 -0
- package/dist/commands/sys/panels/keys-panel.d.ts +16 -0
- package/dist/commands/sys/panels/keys-panel.js +60 -0
- package/dist/commands/sys/panels/models-panel.d.ts +77 -0
- package/dist/commands/sys/panels/models-panel.js +647 -0
- package/dist/commands/sys/panels/panel.d.ts +45 -0
- package/dist/commands/sys/panels/panel.js +137 -0
- package/dist/commands/sys/panels/plugins-panel.d.ts +16 -0
- package/dist/commands/sys/panels/plugins-panel.js +80 -0
- package/dist/commands/sys/panels/prefs-panel.d.ts +21 -0
- package/dist/commands/sys/panels/prefs-panel.js +85 -0
- package/dist/commands/sys/panels/provider-panel.d.ts +62 -0
- package/dist/commands/sys/panels/provider-panel.js +538 -0
- package/dist/commands/sys/settings-shell.d.ts +55 -0
- package/dist/commands/sys/settings-shell.js +400 -0
- package/dist/commands/sys/settings.d.ts +2 -0
- package/dist/commands/sys/settings.js +31 -0
- package/dist/commands/sys/setup-core.d.ts +3 -33
- package/dist/commands/sys/setup-core.js +27 -78
- package/dist/commands/sys/setup-settings-runner.d.ts +24 -0
- package/dist/commands/sys/setup-settings-runner.js +63 -0
- package/dist/commands/sys/setup-wizard.d.ts +26 -125
- package/dist/commands/sys/setup-wizard.js +209 -2473
- package/dist/commands/sys/setup.js +5 -7
- package/dist/commands/sys.js +3 -2
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +50 -0
- package/dist/core/__tests__/broker-launch-candidates.test.js +20 -9
- package/dist/core/__tests__/broker-preflight.test.js +1 -1
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +108 -27
- package/dist/core/__tests__/canvas-inbox-watcher.test.js +14 -0
- package/dist/core/__tests__/canvas.test.js +2 -36
- package/dist/core/__tests__/close.test.js +14 -3
- package/dist/core/__tests__/context-intro.test.js +32 -143
- package/dist/core/__tests__/cron-broker-capacity.test.js +22 -3
- package/dist/core/__tests__/daemon-boot.test.js +2 -20
- package/dist/core/__tests__/daemon-wedge.test.js +1 -1
- package/dist/core/__tests__/dead-node-policy-table.test.js +1 -18
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +1 -1
- package/dist/core/__tests__/fixtures/fake-engine.js +2 -2
- package/dist/core/__tests__/fixtures/fake-pi-host.js +2 -2
- package/dist/core/__tests__/focuses.test.js +4 -98
- package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -3
- package/dist/core/__tests__/helpers/broker-clients.js +0 -14
- package/dist/core/__tests__/helpers/harness.d.ts +0 -8
- package/dist/core/__tests__/helpers/harness.js +7 -87
- package/dist/core/__tests__/helpers/viewer-panes.js +1 -1
- package/dist/core/__tests__/inline-memory-refs.test.js +5 -134
- package/dist/core/__tests__/kickoff.test.js +1 -1
- package/dist/core/__tests__/memory-resolver-precedence.test.js +29 -1
- package/dist/core/__tests__/migration.test.js +35 -48
- package/dist/core/__tests__/on-read-dedup-resume.test.js +22 -12
- package/dist/core/__tests__/passive-subscription.test.js +26 -49
- package/dist/core/__tests__/preview-registry-sync.test.js +1 -2
- package/dist/core/__tests__/prune.test.js +94 -1
- package/dist/core/__tests__/review-model-floor.test.js +0 -32
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +255 -0
- package/dist/core/__tests__/{full → seam}/broker-attach-stream.test.js +39 -7
- package/dist/core/__tests__/{full → seam}/broker-crash-teardown.test.js +30 -29
- package/dist/core/__tests__/{full → seam}/broker-pane-resolution.test.js +54 -5
- package/dist/core/__tests__/{full → seam}/broker-provider-retry.test.js +134 -82
- package/dist/core/__tests__/{full → seam}/broker-whip-interrupt.test.js +15 -4
- package/dist/core/__tests__/{full/idle-release-settlement.test.js → seam/dormancy-release.test.js} +69 -17
- package/dist/core/__tests__/{full/yield-message-transaction.test.js → seam/yield-refresh-transaction.test.js} +31 -9
- package/dist/core/__tests__/secrets.test.js +1 -7
- package/dist/core/__tests__/{broker-fork-seam.test.js → serial/broker-fork-seam.test.js} +58 -7
- package/dist/core/__tests__/{broker-sdk-wiring.test.js → serial/broker-sdk-wiring.test.js} +18 -162
- package/dist/core/__tests__/{broker-snapshot-history.test.js → serial/broker-snapshot-history.test.js} +9 -9
- package/dist/core/__tests__/{command-plugins.test.js → serial/command-plugins.test.js} +105 -15
- package/dist/core/__tests__/{deferred-no-wake.test.js → serial/deferred-no-wake.test.js} +23 -20
- package/dist/core/__tests__/{flagship-lifecycle.test.js → serial/flagship-lifecycle.test.js} +7 -7
- package/dist/core/__tests__/{host-teardown-process-group.test.js → serial/host-teardown-process-group.test.js} +6 -6
- package/dist/core/__tests__/{human-deliver-e2e.test.js → serial/human-deliver-e2e.test.js} +12 -12
- package/dist/core/__tests__/{live-mutation.test.js → serial/live-mutation.test.js} +5 -5
- package/dist/core/__tests__/{refresh-stall-recycle.test.js → serial/refresh-stall-recycle.test.js} +5 -14
- package/dist/core/__tests__/{revive.test.js → serial/revive.test.js} +15 -100
- package/dist/core/__tests__/{spawn-root.test.js → serial/spawn-root.test.js} +32 -15
- package/dist/core/__tests__/serial/subscription-delivery.test.js +126 -0
- package/dist/core/__tests__/serial/tmux-surface.test.js +256 -0
- package/dist/core/__tests__/{worktree.test.js → serial/worktree.test.js} +15 -15
- package/dist/core/__tests__/session-model.test.js +0 -18
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +9 -0
- package/dist/core/__tests__/watchdog-abort-arms-retry.test.js +50 -0
- package/dist/core/broker-client/__tests__/transport-relay.test.js +15 -16
- package/dist/core/broker-client/__tests__/transport-socket.test.js +28 -0
- package/dist/core/broker-client/client.d.ts +2 -2
- package/dist/core/broker-client/client.js +4 -7
- package/dist/core/broker-client/transport-relay.d.ts +13 -19
- package/dist/core/broker-client/transport-relay.js +19 -34
- package/dist/core/broker-client/transport-socket.d.ts +2 -2
- package/dist/core/broker-client/transport-socket.js +9 -2
- package/dist/core/broker-client/transport.d.ts +7 -3
- package/dist/core/broker-client/transport.js +4 -4
- package/dist/core/canvas/__tests__/attention.test.js +1 -18
- package/dist/core/canvas/__tests__/remote-canvas-source.test.js +7 -64
- package/dist/core/canvas/__tests__/remote-transport.test.js +2 -3
- package/dist/core/canvas/__tests__/render-remote.test.js +7 -52
- package/dist/core/canvas/browse/app.d.ts +2 -17
- package/dist/core/canvas/browse/app.js +16 -88
- package/dist/core/canvas/browse/model.d.ts +0 -4
- package/dist/core/canvas/browse/model.js +1 -12
- package/dist/core/canvas/browse/render.js +6 -3
- package/dist/core/canvas/crons.d.ts +8 -5
- package/dist/core/canvas/crons.js +7 -6
- package/dist/core/canvas/extensions.d.ts +7 -3
- package/dist/core/canvas/extensions.js +16 -4
- package/dist/core/canvas/nav-model.d.ts +0 -4
- package/dist/core/canvas/nav-model.js +2 -14
- package/dist/core/canvas/node-order.d.ts +3 -0
- package/dist/core/canvas/node-order.js +12 -0
- package/dist/core/canvas/remote-canvas-source.d.ts +3 -6
- package/dist/core/canvas/remote-canvas-source.js +8 -15
- package/dist/core/command.js +11 -4
- package/dist/core/config.js +3 -1
- package/dist/core/events/envelope.js +1 -1
- package/dist/core/events/read.js +7 -21
- package/dist/core/events/source.d.ts +0 -2
- package/dist/core/events/source.js +0 -16
- package/dist/core/events/types.d.ts +1 -1
- package/dist/core/fault-classifier.d.ts +1 -1
- package/dist/core/feed/passive.d.ts +0 -11
- package/dist/core/feed/passive.js +1 -62
- package/dist/core/human/__tests__/{inbox-core.test.js → serial/inbox-core.test.js} +6 -6
- package/dist/core/keybindings/__tests__/resolve.test.js +1 -96
- package/dist/core/keybindings/background-bash.js +3 -4
- package/dist/core/keybindings/catalog.js +1 -1
- package/dist/core/memory/inline-ref-grammar.js +3 -3
- package/dist/core/memory-resolver.d.ts +11 -25
- package/dist/core/memory-resolver.js +51 -33
- package/dist/core/model-routes.d.ts +15 -0
- package/dist/core/model-routes.js +12 -0
- package/dist/core/pool-credential-store.js +1 -1
- package/dist/core/preview-registry.js +8 -9
- package/dist/core/profiles/__tests__/root-profile.test.js +4 -14
- package/dist/core/review/realize.d.ts +0 -13
- package/dist/core/review/realize.js +0 -40
- package/dist/core/review/types.d.ts +1 -1
- package/dist/core/runtime/__tests__/engine-route.test.js +2 -2
- package/dist/core/runtime/bearings.js +1 -11
- package/dist/core/runtime/broker/client-registry.d.ts +33 -0
- package/dist/core/runtime/broker/client-registry.js +164 -0
- package/dist/core/runtime/broker/daemon-ops.d.ts +19 -0
- package/dist/core/runtime/broker/daemon-ops.js +49 -0
- package/dist/core/runtime/broker/event-projection.d.ts +42 -0
- package/dist/core/runtime/broker/event-projection.js +178 -0
- package/dist/core/runtime/broker/fault-retry.d.ts +39 -0
- package/dist/core/runtime/broker/fault-retry.js +277 -0
- package/dist/core/runtime/broker/frame-dispatch.d.ts +238 -0
- package/dist/core/runtime/broker/frame-dispatch.js +1537 -0
- package/dist/core/runtime/broker/inbox.d.ts +22 -0
- package/dist/core/runtime/broker/inbox.js +167 -0
- package/dist/core/runtime/broker/passive.d.ts +16 -0
- package/dist/core/runtime/broker/passive.js +44 -0
- package/dist/core/runtime/broker/read-ops.d.ts +23 -0
- package/dist/core/runtime/broker/read-ops.js +150 -0
- package/dist/core/runtime/broker/rebind.d.ts +74 -0
- package/dist/core/runtime/broker/rebind.js +211 -0
- package/dist/core/runtime/broker/tool-groups.d.ts +39 -0
- package/dist/core/runtime/broker/tool-groups.js +244 -0
- package/dist/core/runtime/broker-extension-render.d.ts +11 -0
- package/dist/core/runtime/broker-extension-render.js +181 -0
- package/dist/core/runtime/broker-persona-guidance.d.ts +13 -0
- package/dist/core/runtime/broker-persona-guidance.js +58 -0
- package/dist/core/runtime/broker-protocol.d.ts +1 -1
- package/dist/core/runtime/broker-protocol.js +1 -1
- package/dist/core/runtime/broker.d.ts +5 -196
- package/dist/core/runtime/broker.js +276 -3059
- package/dist/core/runtime/canvas-extensions.js +11 -2
- package/dist/core/runtime/fault.js +1 -1
- package/dist/core/runtime/model-selection.d.ts +9 -0
- package/dist/core/runtime/model-selection.js +12 -0
- package/dist/core/runtime/model-swap.d.ts +3 -3
- package/dist/core/runtime/model-swap.js +33 -25
- package/dist/core/runtime/placement-tmux.d.ts +3 -14
- package/dist/core/runtime/placement-tmux.js +11 -80
- package/dist/core/runtime/placement.d.ts +4 -2
- package/dist/core/runtime/placement.js +7 -12
- package/dist/core/runtime/promote.d.ts +14 -1
- package/dist/core/runtime/promote.js +1 -1
- package/dist/core/runtime/reset.d.ts +1 -1
- package/dist/core/runtime/roadmap.js +1 -1
- package/dist/core/runtime/spawn.d.ts +8 -0
- package/dist/core/runtime/spawn.js +36 -6
- package/dist/core/runtime/stop-guard.d.ts +4 -3
- package/dist/core/runtime/stop-guard.js +36 -18
- package/dist/core/runtime/stop-signals.d.ts +4 -1
- package/dist/core/runtime/stream-watchdog.js +4 -5
- package/dist/core/runtime/structured-output.d.ts +15 -2
- package/dist/core/runtime/structured-output.js +35 -12
- package/dist/core/runtime/tmux-bindings.d.ts +25 -0
- package/dist/core/runtime/tmux-bindings.js +682 -0
- package/dist/core/runtime/tmux-chrome.d.ts +2 -1
- package/dist/core/runtime/tmux-chrome.js +3 -2
- package/dist/core/runtime/{tmux.d.ts → tmux-driver.d.ts} +18 -26
- package/dist/core/runtime/tmux-driver.js +598 -0
- package/dist/core/runtime/view-socket.d.ts +14 -0
- package/dist/core/runtime/view-socket.js +83 -0
- package/dist/core/session-model/session-state.d.ts +1 -2
- package/dist/core/session-model/session-state.js +5 -8
- package/dist/core/spawn.d.ts +1 -1
- package/dist/core/spawn.js +2 -2
- package/dist/core/substrate/gate.d.ts +1 -1
- package/dist/core/substrate/on-read-pure.d.ts +7 -0
- package/dist/core/substrate/on-read-pure.js +272 -0
- package/dist/core/termrender/termrender.js +32 -2
- package/dist/core/user-settings.d.ts +23 -1
- package/dist/core/user-settings.js +18 -1
- package/dist/daemon/api/__tests__/node-model-validation.test.js +134 -0
- package/dist/daemon/api/__tests__/review-terminal-conflict.test.js +98 -0
- package/dist/daemon/api/__tests__/{full → seam}/api-server.test.js +6 -48
- package/dist/daemon/api/__tests__/{full → seam}/b10-attach-modelauth.test.js +17 -44
- package/dist/daemon/api/__tests__/{full/push-parity.test.js → seam/leaf-api-parity.test.js} +61 -42
- package/dist/daemon/api/bridge.js +40 -81
- package/dist/daemon/api/handlers/broker-ops.d.ts +2 -0
- package/dist/daemon/api/handlers/broker-ops.js +383 -0
- package/dist/daemon/api/handlers/crons.js +9 -4
- package/dist/daemon/api/handlers/files.js +6 -7
- package/dist/daemon/api/handlers/inbox.js +2 -340
- package/dist/daemon/api/handlers/nodes.d.ts +10 -1
- package/dist/daemon/api/handlers/nodes.js +74 -39
- package/dist/daemon/api/handlers/review-comments.js +5 -1
- package/dist/daemon/api/handlers/reviews.js +0 -19
- package/dist/daemon/api/map.js +25 -4
- package/dist/daemon/api/router.js +2 -3
- package/dist/daemon/api/server.js +5 -7
- package/dist/daemon/cron-run.d.ts +4 -0
- package/dist/daemon/cron-run.js +30 -13
- package/dist/daemon/crtrd.d.ts +3 -58
- package/dist/daemon/crtrd.js +28 -1244
- package/dist/daemon/manage.js +0 -1
- package/dist/daemon/reconcilers/broker-supervision.d.ts +50 -0
- package/dist/daemon/reconcilers/broker-supervision.js +549 -0
- package/dist/daemon/reconcilers/cron-lane.d.ts +10 -0
- package/dist/daemon/reconcilers/cron-lane.js +32 -0
- package/dist/daemon/reconcilers/dormant-inbox.d.ts +18 -0
- package/dist/daemon/reconcilers/dormant-inbox.js +143 -0
- package/dist/daemon/reconcilers/storage-maintenance.d.ts +22 -0
- package/dist/daemon/reconcilers/storage-maintenance.js +213 -0
- package/dist/daemon/review/finish.js +2 -5
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +34 -53
- package/dist/pi-extensions/__tests__/canvas-recap.test.js +16 -113
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +72 -99
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +29 -12
- package/dist/pi-extensions/broker-local.d.ts +20 -0
- package/dist/pi-extensions/broker-local.js +89 -0
- package/dist/pi-extensions/canvas-context-intro.d.ts +3 -3
- package/dist/pi-extensions/canvas-context-intro.js +22 -11
- package/dist/pi-extensions/canvas-doc-substrate.js +17 -34
- package/dist/pi-extensions/canvas-goal-capture.js +7 -12
- package/dist/pi-extensions/canvas-inbox-watcher.js +124 -139
- package/dist/pi-extensions/canvas-passive-context.d.ts +3 -3
- package/dist/pi-extensions/canvas-passive-context.js +22 -18
- package/dist/pi-extensions/canvas-recap.d.ts +2 -2
- package/dist/pi-extensions/canvas-recap.js +48 -21
- package/dist/pi-extensions/canvas-review-boundary.js +10 -4
- package/dist/pi-extensions/canvas-stophook.d.ts +0 -5
- package/dist/pi-extensions/canvas-stophook.js +149 -431
- package/dist/pi-extensions/canvas-structured-output.js +52 -30
- package/dist/pi-extensions/envelope-merge.d.ts +13 -0
- package/dist/pi-extensions/envelope-merge.js +29 -0
- package/dist/shared/working-activity.d.ts +3 -2
- package/dist/shared/working-activity.js +3 -2
- package/dist/types.d.ts +6 -5
- package/dist/types.js +2 -2
- package/docs/compat/hearth-crtr-v1.md +4 -12
- package/docs/compat/hearth-crtr-v2.md +3 -11
- package/docs/compat/hearth-crtr-v3.md +4 -12
- package/docs/compat/hearth-crtr-v4.md +3 -11
- package/docs/compat/hearth-crtr-v5.md +3 -11
- package/docs/public-api.md +3 -7
- package/package.json +7 -49
- package/runtime.lock.json +2766 -14533
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/claude-plugin-commands.test.ts +0 -49
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/memory-slash-commands.test.ts +0 -194
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/statusline.test.ts +0 -68
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/frontmatter-rules/test.ts +0 -119
- package/dist/clients/attach/__tests__/attach-chrome-remote.test.js +0 -439
- package/dist/clients/attach/__tests__/attach-keybindings.test.js +0 -170
- package/dist/clients/attach/__tests__/crtr-output-coverage.test.js +0 -57
- package/dist/clients/attach/__tests__/editor-frame-title.test.js +0 -19
- package/dist/clients/attach/__tests__/input-controller-extension-command.test.js +0 -32
- package/dist/clients/attach/__tests__/markdown-headings.test.js +0 -35
- package/dist/clients/attach/__tests__/session-identity-refresh.test.js +0 -32
- package/dist/clients/conversation/conversation.d.ts +0 -65
- package/dist/clients/conversation/conversation.js +0 -318
- package/dist/clients/conversation/frames.d.ts +0 -30
- package/dist/clients/conversation/frames.js +0 -52
- package/dist/clients/conversation/region.d.ts +0 -51
- package/dist/clients/conversation/region.js +0 -265
- package/dist/clients/inbox/__tests__/inbox-controller.test.js +0 -247
- package/dist/clients/inbox/__tests__/mount-panel.test.js +0 -776
- package/dist/clients/inbox/review/__tests__/remap.test.js +0 -196
- package/dist/clients/inbox/review/columns.d.ts +0 -22
- package/dist/clients/inbox/review/columns.js +0 -40
- package/dist/clients/inbox/review/composition.d.ts +0 -60
- package/dist/clients/inbox/review/composition.js +0 -278
- package/dist/clients/inbox/review/document-region.d.ts +0 -120
- package/dist/clients/surfaces/region.d.ts +0 -16
- package/dist/clients/web/__tests__/push-engine.test.js +0 -158
- package/dist/clients/web/__tests__/push-registry.test.d.ts +0 -1
- package/dist/clients/web/__tests__/push-registry.test.js +0 -177
- package/dist/clients/web/dev-server.d.ts +0 -7
- package/dist/clients/web/dev-server.js +0 -46
- package/dist/clients/web/events.d.ts +0 -19
- package/dist/clients/web/events.js +0 -163
- package/dist/clients/web/push-engine.d.ts +0 -44
- package/dist/clients/web/push-engine.js +0 -125
- package/dist/clients/web/push-registry.d.ts +0 -85
- package/dist/clients/web/push-registry.js +0 -373
- package/dist/clients/web/server.d.ts +0 -19
- package/dist/clients/web/server.js +0 -661
- package/dist/clients/web/web-client/shared/protocol.d.ts +0 -214
- package/dist/clients/web/web-client/shared/protocol.js +0 -8
- package/dist/clients/web/web-cmd.d.ts +0 -2
- package/dist/clients/web/web-cmd.js +0 -141
- package/dist/commands/__tests__/api-canvas-source.test.d.ts +0 -1
- package/dist/commands/__tests__/api-canvas-source.test.js +0 -37
- package/dist/commands/__tests__/canvas-config.test.d.ts +0 -1
- package/dist/commands/__tests__/canvas-config.test.js +0 -107
- package/dist/commands/__tests__/node-no-kickoff-flag.test.d.ts +0 -1
- package/dist/commands/__tests__/node-no-kickoff-flag.test.js +0 -73
- package/dist/commands/__tests__/node-worktree-flag.test.d.ts +0 -1
- package/dist/commands/__tests__/node-worktree-flag.test.js +0 -49
- package/dist/commands/__tests__/search-contents.test.d.ts +0 -1
- package/dist/commands/__tests__/search-contents.test.js +0 -52
- package/dist/commands/memory/__tests__/lint.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/lint.test.js +0 -15
- package/dist/commands/sys/__tests__/config-broker-thresholds.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/config-broker-thresholds.test.js +0 -95
- package/dist/commands/sys/__tests__/config-keybindings.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/config-keybindings.test.js +0 -55
- package/dist/commands/sys/__tests__/helpers/setup-runtime.d.ts +0 -5
- package/dist/commands/sys/__tests__/helpers/setup-runtime.js +0 -19
- package/dist/commands/sys/__tests__/setup-front-door.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/setup-front-door.test.js +0 -102
- package/dist/commands/sys/__tests__/setup-models.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/setup-models.test.js +0 -205
- package/dist/commands/sys/__tests__/setup-providers-viewport.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/setup-providers-viewport.test.js +0 -155
- package/dist/commands/sys/__tests__/sync-deps.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/sync-deps.test.js +0 -179
- package/dist/commands/sys/__tests__/sync-import.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/sync-import.test.js +0 -315
- package/dist/core/__tests__/base-worker-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/base-worker-prompt.test.js +0 -57
- package/dist/core/__tests__/command-plugins-surfaces.test.d.ts +0 -1
- package/dist/core/__tests__/command-plugins-surfaces.test.js +0 -359
- package/dist/core/__tests__/connection-reconnect-resume.test.d.ts +0 -1
- package/dist/core/__tests__/connection-reconnect-resume.test.js +0 -36
- package/dist/core/__tests__/finalization-migration.test.d.ts +0 -1
- package/dist/core/__tests__/finalization-migration.test.js +0 -38
- package/dist/core/__tests__/fixtures/extra-extension.d.ts +0 -1
- package/dist/core/__tests__/fixtures/extra-extension.js +0 -3
- package/dist/core/__tests__/fixtures/spawn-proof-target.test.d.ts +0 -1
- package/dist/core/__tests__/fixtures/spawn-proof-target.test.js +0 -15
- package/dist/core/__tests__/fork.test.d.ts +0 -1
- package/dist/core/__tests__/fork.test.js +0 -108
- package/dist/core/__tests__/full/broker-attach-limits.test.d.ts +0 -1
- package/dist/core/__tests__/full/broker-attach-limits.test.js +0 -147
- package/dist/core/__tests__/full/broker-deliver-ack.test.d.ts +0 -1
- package/dist/core/__tests__/full/broker-deliver-ack.test.js +0 -73
- package/dist/core/__tests__/full/broker-dialogs.test.d.ts +0 -1
- package/dist/core/__tests__/full/broker-dialogs.test.js +0 -180
- package/dist/core/__tests__/full/broker-display-snapshot.test.d.ts +0 -1
- package/dist/core/__tests__/full/broker-display-snapshot.test.js +0 -75
- package/dist/core/__tests__/full/broker-dormant-wake.test.d.ts +0 -1
- package/dist/core/__tests__/full/broker-dormant-wake.test.js +0 -130
- package/dist/core/__tests__/full/broker-model-changed-broadcast.test.d.ts +0 -1
- package/dist/core/__tests__/full/broker-model-changed-broadcast.test.js +0 -57
- package/dist/core/__tests__/full/broker-navigate-tree-rewelcome.test.d.ts +0 -1
- package/dist/core/__tests__/full/broker-navigate-tree-rewelcome.test.js +0 -80
- package/dist/core/__tests__/full/cascade-close.test.d.ts +0 -1
- package/dist/core/__tests__/full/cascade-close.test.js +0 -240
- package/dist/core/__tests__/full/detach-focus.test.d.ts +0 -1
- package/dist/core/__tests__/full/detach-focus.test.js +0 -126
- package/dist/core/__tests__/full/idle-release-settlement.test.d.ts +0 -1
- package/dist/core/__tests__/full/issue-146-yield-spawn-focus.test.d.ts +0 -1
- package/dist/core/__tests__/full/issue-146-yield-spawn-focus.test.js +0 -107
- package/dist/core/__tests__/full/park-clock-release.test.d.ts +0 -1
- package/dist/core/__tests__/full/park-clock-release.test.js +0 -56
- package/dist/core/__tests__/full/yield-message-transaction.test.d.ts +0 -1
- package/dist/core/__tests__/memory-index-render.test.d.ts +0 -1
- package/dist/core/__tests__/memory-index-render.test.js +0 -60
- package/dist/core/__tests__/model-routes.test.d.ts +0 -1
- package/dist/core/__tests__/model-routes.test.js +0 -41
- package/dist/core/__tests__/on-read-identity.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-identity.test.js +0 -61
- package/dist/core/__tests__/phase4-review-migration.test.d.ts +0 -1
- package/dist/core/__tests__/phase4-review-migration.test.js +0 -100
- package/dist/core/__tests__/prune-to-limit.test.d.ts +0 -1
- package/dist/core/__tests__/prune-to-limit.test.js +0 -126
- package/dist/core/__tests__/reset.test.d.ts +0 -1
- package/dist/core/__tests__/reset.test.js +0 -69
- package/dist/core/__tests__/spawn-no-kickoff.test.d.ts +0 -1
- package/dist/core/__tests__/spawn-no-kickoff.test.js +0 -115
- package/dist/core/__tests__/steer-note.test.d.ts +0 -1
- package/dist/core/__tests__/steer-note.test.js +0 -41
- package/dist/core/__tests__/subcommand-tier.test.d.ts +0 -1
- package/dist/core/__tests__/subcommand-tier.test.js +0 -99
- package/dist/core/__tests__/subscription-delivery.test.js +0 -211
- package/dist/core/__tests__/test-runner-cheap-sharding.test.d.ts +0 -1
- package/dist/core/__tests__/test-runner-cheap-sharding.test.js +0 -97
- package/dist/core/__tests__/tmux-surface.test.js +0 -484
- package/dist/core/__tests__/wake-bearings.test.d.ts +0 -1
- package/dist/core/__tests__/wake-bearings.test.js +0 -102
- package/dist/core/canvas/__tests__/remote-event-stream.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-event-stream.test.js +0 -146
- package/dist/core/canvas/__tests__/source-resolve.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/source-resolve.test.js +0 -77
- package/dist/core/canvas/browse/__tests__/model.test.d.ts +0 -1
- package/dist/core/canvas/browse/__tests__/model.test.js +0 -290
- package/dist/core/canvas/browse/__tests__/rebuild-coalescer.test.d.ts +0 -1
- package/dist/core/canvas/browse/__tests__/rebuild-coalescer.test.js +0 -134
- package/dist/core/canvas/browse/__tests__/render.test.d.ts +0 -1
- package/dist/core/canvas/browse/__tests__/render.test.js +0 -111
- package/dist/core/canvas/browse/rebuild-coalescer.d.ts +0 -7
- package/dist/core/canvas/browse/rebuild-coalescer.js +0 -61
- package/dist/core/canvas/remote-event-stream.d.ts +0 -24
- package/dist/core/canvas/remote-event-stream.js +0 -94
- package/dist/core/feed/__tests__/coalesce-human.test.d.ts +0 -1
- package/dist/core/feed/__tests__/coalesce-human.test.js +0 -36
- package/dist/core/feed/__tests__/empty-node-guard.test.d.ts +0 -1
- package/dist/core/feed/__tests__/empty-node-guard.test.js +0 -45
- package/dist/core/host-exports/__tests__/export-prunes-boot-skill.test.d.ts +0 -1
- package/dist/core/host-exports/__tests__/export-prunes-boot-skill.test.js +0 -84
- package/dist/core/human/__tests__/visible-paths.test.d.ts +0 -1
- package/dist/core/human/__tests__/visible-paths.test.js +0 -28
- package/dist/core/keybindings/__tests__/inbox-affordance.test.d.ts +0 -1
- package/dist/core/keybindings/__tests__/inbox-affordance.test.js +0 -38
- package/dist/core/review/__tests__/project.test.d.ts +0 -1
- package/dist/core/review/__tests__/project.test.js +0 -71
- package/dist/core/runtime/__tests__/command-expansion.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/command-expansion.test.js +0 -25
- package/dist/core/runtime/__tests__/session-visibility.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/session-visibility.test.js +0 -119
- package/dist/core/runtime/__tests__/spawn-at-given-id.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/spawn-at-given-id.test.js +0 -34
- package/dist/core/runtime/tmux.js +0 -1314
- package/dist/daemon/api/__tests__/full/push-parity.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/full/worktree-parity.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/full/worktree-parity.test.js +0 -160
- package/dist/daemon/api/__tests__/inbox.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/inbox.test.js +0 -489
- package/dist/web-client/apple-touch-icon.png +0 -0
- package/dist/web-client/assets/fragment-mono-latin-400-normal-BYwT3kSJ.woff +0 -0
- package/dist/web-client/assets/fragment-mono-latin-400-normal-yxdJ5AmL.woff2 +0 -0
- package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-BbKYyvR9.woff2 +0 -0
- package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-CT4YFKeK.woff +0 -0
- package/dist/web-client/assets/index-CCPaLeW7.css +0 -2
- package/dist/web-client/assets/index-kyOWsnZK.js +0 -86
- package/dist/web-client/assets/martian-mono-cyrillic-wght-normal-B84CD5C_.woff2 +0 -0
- package/dist/web-client/assets/martian-mono-latin-ext-wght-normal-DlL6xMw5.woff2 +0 -0
- package/dist/web-client/assets/martian-mono-latin-wght-normal-5W32yIyr.woff2 +0 -0
- package/dist/web-client/assets/workbox-window.prod.es5-Bd17z0YL.js +0 -2
- package/dist/web-client/icon-192.png +0 -0
- package/dist/web-client/icon-512.png +0 -0
- package/dist/web-client/icon-maskable-512.png +0 -0
- package/dist/web-client/index.html +0 -17
- package/dist/web-client/manifest.webmanifest +0 -1
- package/dist/web-client/sw.js +0 -1
- /package/dist/api/__tests__/{client.test.d.ts → serial/client.test.d.ts} +0 -0
- /package/dist/clients/inbox/__tests__/{inbox-controller.test.d.ts → serial/inbox-controller.test.d.ts} +0 -0
- /package/dist/clients/inbox/__tests__/{mount-panel.test.d.ts → serial/mount-panel.test.d.ts} +0 -0
- /package/dist/clients/{attach/__tests__/attach-chrome-remote.test.d.ts → inbox/review/__tests__/teardown-notice.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/attach-keybindings.test.d.ts → core/__tests__/broker-extension-canvas-db-boundary.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/crtr-output-coverage.test.d.ts → core/__tests__/seam/broker-attach-multiclient.test.d.ts} +0 -0
- /package/dist/core/__tests__/{full → seam}/broker-attach-stream.test.d.ts +0 -0
- /package/dist/core/__tests__/{full → seam}/broker-crash-teardown.test.d.ts +0 -0
- /package/dist/core/__tests__/{full → seam}/broker-pane-resolution.test.d.ts +0 -0
- /package/dist/core/__tests__/{full → seam}/broker-provider-retry.test.d.ts +0 -0
- /package/dist/core/__tests__/{full → seam}/broker-whip-interrupt.test.d.ts +0 -0
- /package/dist/{clients/attach/__tests__/editor-frame-title.test.d.ts → core/__tests__/seam/dormancy-release.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/input-controller-extension-command.test.d.ts → core/__tests__/seam/yield-refresh-transaction.test.d.ts} +0 -0
- /package/dist/core/__tests__/{broker-fork-seam.test.d.ts → serial/broker-fork-seam.test.d.ts} +0 -0
- /package/dist/core/__tests__/{broker-sdk-wiring.test.d.ts → serial/broker-sdk-wiring.test.d.ts} +0 -0
- /package/dist/core/__tests__/{broker-snapshot-history.test.d.ts → serial/broker-snapshot-history.test.d.ts} +0 -0
- /package/dist/core/__tests__/{command-plugins.test.d.ts → serial/command-plugins.test.d.ts} +0 -0
- /package/dist/core/__tests__/{deferred-no-wake.test.d.ts → serial/deferred-no-wake.test.d.ts} +0 -0
- /package/dist/core/__tests__/{flagship-lifecycle.test.d.ts → serial/flagship-lifecycle.test.d.ts} +0 -0
- /package/dist/core/__tests__/{host-teardown-process-group.test.d.ts → serial/host-teardown-process-group.test.d.ts} +0 -0
- /package/dist/core/__tests__/{human-deliver-e2e.test.d.ts → serial/human-deliver-e2e.test.d.ts} +0 -0
- /package/dist/core/__tests__/{live-mutation.test.d.ts → serial/live-mutation.test.d.ts} +0 -0
- /package/dist/core/__tests__/{refresh-stall-recycle.test.d.ts → serial/refresh-stall-recycle.test.d.ts} +0 -0
- /package/dist/core/__tests__/{revive.test.d.ts → serial/revive.test.d.ts} +0 -0
- /package/dist/core/__tests__/{spawn-root.test.d.ts → serial/spawn-root.test.d.ts} +0 -0
- /package/dist/core/__tests__/{subscription-delivery.test.d.ts → serial/subscription-delivery.test.d.ts} +0 -0
- /package/dist/core/__tests__/{tmux-surface.test.d.ts → serial/tmux-surface.test.d.ts} +0 -0
- /package/dist/core/__tests__/{worktree.test.d.ts → serial/worktree.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/markdown-headings.test.d.ts → core/__tests__/watchdog-abort-arms-retry.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/session-identity-refresh.test.d.ts → core/broker-client/__tests__/transport-socket.test.d.ts} +0 -0
- /package/dist/core/human/__tests__/{inbox-core.test.d.ts → serial/inbox-core.test.d.ts} +0 -0
- /package/dist/{clients/inbox/review/__tests__/remap.test.d.ts → daemon/api/__tests__/node-model-validation.test.d.ts} +0 -0
- /package/dist/{clients/surfaces/region.js → daemon/api/__tests__/review-terminal-conflict.test.d.ts} +0 -0
- /package/dist/daemon/api/__tests__/{full → seam}/api-server.test.d.ts +0 -0
- /package/dist/daemon/api/__tests__/{full → seam}/b10-attach-modelauth.test.d.ts +0 -0
- /package/dist/{clients/web/__tests__/push-engine.test.d.ts → daemon/api/__tests__/seam/leaf-api-parity.test.d.ts} +0 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/** Build the one authority for a viewer session. Remote viewers are observers
|
|
2
|
+
* even when a caller supplied a controller role; keep that invariant local to
|
|
3
|
+
* this construction boundary. */
|
|
4
|
+
export function createViewerCapabilities(input) {
|
|
5
|
+
const remote = input.remote;
|
|
6
|
+
const role = remote ? 'observer' : input.role;
|
|
7
|
+
const permittedOperations = new Set();
|
|
8
|
+
// Viewer-local reads and inspection remain available to a local observer.
|
|
9
|
+
if (!remote) {
|
|
10
|
+
permittedOperations.add('local-canvas-inspect');
|
|
11
|
+
permittedOperations.add('canvas-inbox');
|
|
12
|
+
}
|
|
13
|
+
if (role === 'controller') {
|
|
14
|
+
permittedOperations.add('engine-drive');
|
|
15
|
+
permittedOperations.add('dequeue');
|
|
16
|
+
permittedOperations.add('wake-dormant');
|
|
17
|
+
permittedOperations.add('auth');
|
|
18
|
+
permittedOperations.add('canvas-resume');
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
role,
|
|
22
|
+
remote,
|
|
23
|
+
nodeId: input.nodeId,
|
|
24
|
+
profileId: input.profileId,
|
|
25
|
+
permittedOperations,
|
|
26
|
+
permits: (operation) => permittedOperations.has(operation),
|
|
27
|
+
refusal: (operation, command) => {
|
|
28
|
+
if (permittedOperations.has(operation))
|
|
29
|
+
return undefined;
|
|
30
|
+
const prefix = command === undefined ? '' : `/${command} `;
|
|
31
|
+
if (remote && (operation === 'canvas-resume' || operation === 'local-canvas-inspect' || operation === 'canvas-inbox')) {
|
|
32
|
+
return `${prefix}is not available for a remote attach (--canvas) — it acts on this machine's local canvas`;
|
|
33
|
+
}
|
|
34
|
+
if (remote)
|
|
35
|
+
return `${prefix}is not available for a remote attach (--canvas) — view-only`;
|
|
36
|
+
return `${prefix}is not available to a read-only observer attach (--observer) — it would drive this node`;
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** The slash dispatcher asks the capability model for a command's operation;
|
|
41
|
+
* commands with no returned operation are viewer-local/read-only. */
|
|
42
|
+
export function viewerOperationForFrame(frame) {
|
|
43
|
+
switch (frame.type) {
|
|
44
|
+
case 'prompt':
|
|
45
|
+
case 'steer':
|
|
46
|
+
case 'follow_up':
|
|
47
|
+
case 'abort':
|
|
48
|
+
case 'bash':
|
|
49
|
+
case 'set_model':
|
|
50
|
+
case 'cycle_model':
|
|
51
|
+
case 'cycle_ladder':
|
|
52
|
+
case 'cycle_thinking':
|
|
53
|
+
case 'set_thinking_level':
|
|
54
|
+
case 'set_auto_retry':
|
|
55
|
+
case 'set_auto_compaction':
|
|
56
|
+
case 'compact':
|
|
57
|
+
case 'new_session':
|
|
58
|
+
case 'switch_session':
|
|
59
|
+
case 'fork':
|
|
60
|
+
case 'set_session_name':
|
|
61
|
+
case 'navigate_tree':
|
|
62
|
+
case 'reload':
|
|
63
|
+
case 'export':
|
|
64
|
+
case 'clone':
|
|
65
|
+
case 'share':
|
|
66
|
+
case 'reload_auth': return 'engine-drive';
|
|
67
|
+
default: return undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export function viewerOperationForSlash(name, builtin, canvas) {
|
|
71
|
+
if (canvas) {
|
|
72
|
+
switch (name) {
|
|
73
|
+
case 'resume-node': return 'canvas-resume';
|
|
74
|
+
case 'context':
|
|
75
|
+
case 'node-metadata': return 'local-canvas-inspect';
|
|
76
|
+
case 'inbox': return 'canvas-inbox';
|
|
77
|
+
case 'clear':
|
|
78
|
+
case 'promote':
|
|
79
|
+
case 'rename':
|
|
80
|
+
case 'mcp': return 'engine-drive';
|
|
81
|
+
default: return undefined;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (!builtin)
|
|
85
|
+
return undefined;
|
|
86
|
+
switch (name) {
|
|
87
|
+
case 'copy':
|
|
88
|
+
case 'session':
|
|
89
|
+
case 'changelog':
|
|
90
|
+
case 'hotkeys':
|
|
91
|
+
case 'quit': return undefined;
|
|
92
|
+
case 'login':
|
|
93
|
+
case 'logout': return 'auth';
|
|
94
|
+
default: return 'engine-drive';
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -1,98 +1,35 @@
|
|
|
1
1
|
import type { CustomEditor } from '@earendil-works/pi-coding-agent';
|
|
2
2
|
import type { Component, KeybindingsManager, TUI } from '@earendil-works/pi-tui';
|
|
3
|
-
import { type BrokerDataFrame, type
|
|
4
|
-
import type { CopyTarget } from '../render/transcript-copy.js';
|
|
3
|
+
import { type BrokerDataFrame, type BrokerSnapshot, type ClientToBroker, type RpcExtensionUIRequest, type RpcExtensionUIResponse } from '../../../core/runtime/broker-protocol.js';
|
|
5
4
|
import type { ReadOpRequest } from '../../../core/broker-client/index.js';
|
|
6
|
-
import
|
|
5
|
+
import type { CopyTarget } from '../render/transcript-copy.js';
|
|
6
|
+
import { type ViewerCapabilities } from './capabilities.js';
|
|
7
|
+
import { InputOverlayOwner } from './overlay-owner.js';
|
|
7
8
|
export interface InputControllerHooks {
|
|
8
|
-
/** Send a command frame to the broker. */
|
|
9
9
|
onCommand: (frame: ClientToBroker) => void;
|
|
10
|
-
|
|
11
|
-
onDialogResponse: (resp: RpcExtensionUIResponse) => void;
|
|
12
|
-
/** OPTIONAL (additive to the fixed interface): surface a transient notice in
|
|
13
|
-
* the viewer. The InputController does not own the layout (T5/T7 do), so it
|
|
14
|
-
* reports notices up the same way it reports commands. Absent → notices are
|
|
15
|
-
* dropped silently. */
|
|
10
|
+
onDialogResponse: (response: RpcExtensionUIResponse) => void;
|
|
16
11
|
onNotice?: (message: string) => void;
|
|
17
|
-
/** OPTIONAL: the canvas node this viewer is attached to — forwarded to the
|
|
18
|
-
* slash context so `/promote` targets it (Unit Q wires it from runAttach). */
|
|
19
|
-
nodeId?: string;
|
|
20
|
-
/** OPTIONAL: the attached node's profile identity — forwarded to `/resume-node`
|
|
21
|
-
* so canvas browse opens scoped to this profile. */
|
|
22
|
-
profileId?: string;
|
|
23
|
-
/** OPTIONAL: true for a REMOTE attach (`crtr surface attach --canvas`) —
|
|
24
|
-
* forwarded to the slash context so it can structurally omit/no-op the
|
|
25
|
-
* local-only native canvas commands (`/promote`, `/resume-node`, `/context`),
|
|
26
|
-
* and (with {@link InputControllerHooks.role}) one half of the drive gate.
|
|
27
|
-
* Defaults to `false` (local, unchanged) when absent. */
|
|
28
|
-
remote?: boolean;
|
|
29
|
-
/** OPTIONAL: this viewer's FIXED capability, resolved once for the hello
|
|
30
|
-
* handshake (`resolveHelloRole`) and never renegotiated. `'observer'` makes
|
|
31
|
-
* the viewer read-only: no drive frame is emitted, while reads (`onRequest`,
|
|
32
|
-
* `get_commands`, the pickers' fetches) stay live. Absent → `'controller'`. */
|
|
33
|
-
role?: ClientRole;
|
|
34
|
-
/** OPTIONAL: toggle the GRAPH overlay — forwarded to the slash context so
|
|
35
|
-
* `/graph` opens/closes it (Unit Q wires it from runAttach). */
|
|
36
12
|
onGraph?: () => void;
|
|
37
|
-
/** OPTIONAL: toggle the human inbox surface — forwarded to the slash context so `/inbox` opens/closes it. */
|
|
38
13
|
onInbox?: () => void;
|
|
39
|
-
/** OPTIONAL: toggle the Help overlay — forwarded to the slash context so
|
|
40
|
-
* `/hotkeys` opens/closes it. */
|
|
41
14
|
onHelp?: () => void;
|
|
42
|
-
/** OPTIONAL: detach the viewer — forwarded to the slash context so `/quit`
|
|
43
|
-
* tears down the TUI/socket (the engine keeps running). Wired by viewer.ts. */
|
|
44
15
|
onQuit?: () => void;
|
|
45
|
-
/** OPTIONAL: copy the last assistant message to the clipboard — forwarded to
|
|
46
|
-
* the slash context so `/copy` works. Wired by viewer.ts (it owns ChatView). */
|
|
47
16
|
onCopy?: () => void;
|
|
48
|
-
/** OPTIONAL: copy a viewer-local transcript target — forwarded to the slash
|
|
49
|
-
* context so `/copy-message`, `/copy-tool`, and `/copy-transcript` work. */
|
|
50
17
|
onCopyTarget?: (target: CopyTarget) => void;
|
|
51
|
-
/** OPTIONAL: toggle mouse wheel reporting — forwarded to the slash context so
|
|
52
|
-
* `/mouse` can change viewer-local mouse state. */
|
|
53
18
|
onToggleMouse?: () => void;
|
|
54
|
-
/** OPTIONAL: recolor the editor's name chip — forwarded to the slash context
|
|
55
|
-
* so `/color` paints it (`null` clears). Wired by viewer.ts (it owns the
|
|
56
|
-
* TitledEditor). */
|
|
57
19
|
onColor?: (color: string | null) => void;
|
|
58
|
-
/** OPTIONAL: open the focused node's metadata dossier. */
|
|
59
20
|
onNodeMetadata?: () => void;
|
|
60
|
-
/** OPTIONAL: Ctrl+O / app.tools.expand — flip global tool-output expansion in
|
|
61
|
-
* the render layer (ChatView owns the components). Absent → the key no-ops. */
|
|
62
21
|
onToggleToolsExpand?: () => void;
|
|
63
|
-
/** OPTIONAL: `/fold-tools` — flip the "fold finished tool calls" view setting.
|
|
64
|
-
* Absent → the command notifies it is unwired. */
|
|
65
22
|
onFoldTools?: () => void;
|
|
66
|
-
/** OPTIONAL: Ctrl+T / app.thinking.toggle — flip thinking-block visibility in
|
|
67
|
-
* the render layer. Absent → the key no-ops. */
|
|
68
23
|
onToggleThinking?: () => void;
|
|
69
|
-
/** OPTIONAL: issue a correlated read-op and resolve with the broker's `data`
|
|
70
|
-
* reply. MUST be wired by viewer.ts (`onRequest: (f) => socket.request(f)`)
|
|
71
|
-
* for the native pickers to work; when absent every picker degrades to a
|
|
72
|
-
* text-arg notice. */
|
|
73
24
|
onRequest?: (frame: ReadOpRequest) => Promise<BrokerDataFrame>;
|
|
74
|
-
/** OPTIONAL pair: mount/unmount a native picker INLINE in the viewer's layout
|
|
75
|
-
* (viewer.ts slots it directly under the editor). When BOTH are wired,
|
|
76
|
-
* showPicker uses them instead of a centered overlay; absent → overlay
|
|
77
|
-
* fallback. The controller stays layout-agnostic either way (T5/T7 own it). */
|
|
78
25
|
onMountPicker?: (component: Component) => void;
|
|
79
26
|
onUnmountPicker?: () => void;
|
|
80
|
-
/**
|
|
27
|
+
/** Viewer-local auth entry points. Their presence is an affordance, not
|
|
28
|
+
* permission; input-wiring supplies them only when capabilities permit auth. */
|
|
81
29
|
openLoginPicker?: () => void;
|
|
82
|
-
/** OPTIONAL: open the native /logout provider picker (viewer-local auth flow). */
|
|
83
30
|
openLogoutPicker?: () => void;
|
|
84
|
-
/** OPTIONAL: true while the attached node is DORMANT (no live broker to drive).
|
|
85
|
-
* When true, a submitted prompt has no socket to reach, so `handleSubmit`
|
|
86
|
-
* routes it through {@link onDormantSubmit} (a wake message) instead of
|
|
87
|
-
* emitting into a dead socket. Wired by viewer.ts's reconnect supervisor. */
|
|
88
31
|
isDormant?: () => boolean;
|
|
89
|
-
/** OPTIONAL: deliver `text` as an inbox message that WAKES the dormant node
|
|
90
|
-
* (revive + deliver), so the still-open viewer's input box just works. Wired
|
|
91
|
-
* by viewer.ts to `cliClient().sendMessage`; absent (e.g. remote attach) →
|
|
92
|
-
* the dormant-submit path is disabled and prompts fall through as before. */
|
|
93
32
|
onDormantSubmit?: (text: string) => void;
|
|
94
|
-
/** OPTIONAL: a real prompt or steer was accepted from the editor, including a
|
|
95
|
-
* dormant wake-message submit. Slash commands and bash submissions do not fire it. */
|
|
96
33
|
onPromptSent?: () => void;
|
|
97
34
|
}
|
|
98
35
|
export declare class InputController {
|
|
@@ -100,133 +37,34 @@ export declare class InputController {
|
|
|
100
37
|
private readonly editor;
|
|
101
38
|
private readonly keybindings;
|
|
102
39
|
private readonly hooks;
|
|
103
|
-
|
|
104
|
-
private
|
|
105
|
-
/** The request id of {@link dialog} — so a broker-driven `extension_ui_dismiss`
|
|
106
|
-
* tears down ONLY the matching overlay (correlated dismissal), never an
|
|
107
|
-
* unrelated one. */
|
|
108
|
-
private dialogId;
|
|
109
|
-
/** The currently-open native picker overlay, if any (for supersede/dismiss). */
|
|
110
|
-
private picker;
|
|
111
|
-
/** Monotonic open counter — a slow read-op reply whose `seq` is no longer the
|
|
112
|
-
* latest is dropped, so an earlier picker never pops over a later request. */
|
|
113
|
-
private openSeq;
|
|
114
|
-
/** Latest engine state from `welcome`/`session_info_changed` (for `/session`). */
|
|
40
|
+
private readonly capabilities;
|
|
41
|
+
private readonly overlays;
|
|
115
42
|
private state;
|
|
116
|
-
/** Timestamp of the last lone Esc, for double-tap → tree detection (0 = none). */
|
|
117
43
|
private lastEscapeAt;
|
|
118
|
-
/** Pasted-image registry: placeholder ordinal → temp-file path. The editor
|
|
119
|
-
* shows a clean `[Image #N]` token instead of the ugly temp path; on submit
|
|
120
|
-
* each token is expanded back to its path so the agent reads it off disk.
|
|
121
|
-
* Cleared whenever the editor is emptied (send / clear). */
|
|
122
44
|
private pastedImages;
|
|
123
|
-
/** Monotonic paste counter — the `N` in `[Image #N]`. */
|
|
124
45
|
private pasteSeq;
|
|
125
|
-
constructor(tui: TUI, editor: CustomEditor, keybindings: KeybindingsManager, hooks: InputControllerHooks);
|
|
126
|
-
/** Why this viewer may not mutate the engine, or `undefined` when it may. The
|
|
127
|
-
* ONE capability gate: a remote attach and an `--observer` attach are both
|
|
128
|
-
* read-only, and the role is fixed at hello, so this answer cannot change
|
|
129
|
-
* mid-session. */
|
|
130
|
-
private readOnlyReason;
|
|
131
|
-
/** Central choke point for every command frame the input layer emits (direct
|
|
132
|
-
* keybindings, emitDrive, and the slash-command/picker `send` sink). Returns
|
|
133
|
-
* false when the gate refused the frame, so callers stop without emitting
|
|
134
|
-
* it. A writable local attach is byte-for-byte unchanged. */
|
|
135
|
-
private emitCommand;
|
|
136
|
-
/** The model-ladder keybinding (alt+m / alt+shift+m), which viewer.ts's global
|
|
137
|
-
* key listener owns rather than the editor's action table. Public so that
|
|
138
|
-
* binding rides the gate above instead of going straight to the socket. */
|
|
46
|
+
constructor(tui: TUI, editor: CustomEditor, keybindings: KeybindingsManager, hooks: InputControllerHooks, capabilities: ViewerCapabilities);
|
|
139
47
|
cycleLadder(direction: 'forward' | 'backward'): void;
|
|
140
|
-
/** Send viewer-owned text without touching the editor or its history. The
|
|
141
|
-
* broker aborts an active turn before starting this prompt, so a whip never
|
|
142
|
-
* waits in pi's steering queue behind the work it is meant to replace. */
|
|
143
48
|
sendInterrupting(text: string): boolean;
|
|
144
|
-
|
|
145
|
-
* answer back to the broker; non-blocking notify requests become the viewer's
|
|
146
|
-
* normal notice line and NOTHING else — a notify must never tear down an
|
|
147
|
-
* unrelated blocking dialog whose broker request is still pending. A dialog is
|
|
148
|
-
* torn down only by (a) a NEW blocking dialog superseding it, (b) its own
|
|
149
|
-
* answer, or (c) a correlated {@link dismissDialog}
|
|
150
|
-
* from the broker (the request was aborted/timed out out-of-band). */
|
|
151
|
-
attachDialog(req: RpcExtensionUIRequest): void;
|
|
152
|
-
/** Broker-driven correlated dismissal: the broker resolved this request itself
|
|
153
|
-
* (its request was aborted out-of-band — e.g. a local OAuth loopback callback
|
|
154
|
-
* won the race against this manual-paste dialog — or its timeout fired). Tear
|
|
155
|
-
* down ONLY the overlay whose id matches; leave any other dialog untouched. */
|
|
49
|
+
attachDialog(request: RpcExtensionUIRequest): void;
|
|
156
50
|
dismissDialog(id: string): void;
|
|
157
|
-
/** Feed the latest engine state so read-only commands (e.g. `/session`) report
|
|
158
|
-
* current values. Optional; the controller works without it. */
|
|
159
51
|
setState(state: BrokerSnapshot['state']): void;
|
|
52
|
+
openFileReviewPicker(candidates: string[], cwd: string, onChoose: (file: string) => void): void;
|
|
53
|
+
/** Retained as a narrow delegate for auth affordances wired by the session. */
|
|
54
|
+
openAuthPicker(prepare: Parameters<InputOverlayOwner['openAuthPicker']>[0]): Promise<void>;
|
|
55
|
+
private readonly send;
|
|
56
|
+
private emitCommand;
|
|
57
|
+
private readOnlyLabel;
|
|
160
58
|
private wire;
|
|
161
59
|
private slashContext;
|
|
162
|
-
/** Send a command frame to the broker (picker selection sink). */
|
|
163
|
-
private send;
|
|
164
|
-
/** Fetch a picker payload (narrowed on `kind`), then build + show its overlay
|
|
165
|
-
* iff this open is still the latest (m4: a stale slow reply is dropped). Any
|
|
166
|
-
* failure — unwired channel, wrong kind, request error, or a throwing builder
|
|
167
|
-
* — surfaces a notice instead of an unhandled rejection (m5). */
|
|
168
|
-
private openPicker;
|
|
169
|
-
/** Show a picker built by `build` (given a `close` that tears it down).
|
|
170
|
-
* Mounted INLINE under the editor when viewer.ts wires onMountPicker/
|
|
171
|
-
* onUnmountPicker (the integrated chrome path); otherwise falls back to a
|
|
172
|
-
* centered overlay. Supersedes any picker already on screen. Routes focus to
|
|
173
|
-
* the builder's declared focus target (an inner list for fork/settings) and
|
|
174
|
-
* ALWAYS restores editor focus on close — `OverlayHandle.hide()` only
|
|
175
|
-
* auto-restores when the OUTER component held focus, which is not the case
|
|
176
|
-
* once we focus an inner child. A throwing builder is caught into a notice (m5). */
|
|
177
|
-
private showPicker;
|
|
178
|
-
private openModelPicker;
|
|
179
|
-
/** Unlike the other pickers, the session picker opens IMMEDIATELY — its
|
|
180
|
-
* component owns async loaders (with a Loading header), so the multi-second
|
|
181
|
-
* session-dir scan runs off the open path instead of blocking it. */
|
|
182
|
-
private openSessionPicker;
|
|
183
|
-
private openTreePicker;
|
|
184
|
-
private openForkPicker;
|
|
185
|
-
private openSettingsPicker;
|
|
186
|
-
private openScopedModelsPicker;
|
|
187
|
-
/** `/mcp` — the MCP server status panel. Viewer-local (no read-op): the rows
|
|
188
|
-
* come from the adapter's on-disk config sources + tool cache
|
|
189
|
-
* (overlays/mcp.ts), and the actions (connect / auth-start) ride a `prompt`
|
|
190
|
-
* frame to the engine, where the adapter runtime actually lives. With a
|
|
191
|
-
* server name (`/mcp <server>`), act on that server directly. */
|
|
192
|
-
private openMcpPicker;
|
|
193
|
-
/** Open the transcript-backed file-review picker. The caller owns the popup
|
|
194
|
-
* process and cursor insertion; this controller only owns picker lifetime. */
|
|
195
|
-
openFileReviewPicker(candidates: string[], cwd: string, onChoose: (file: string) => void): void;
|
|
196
|
-
/** Open a viewer-local auth picker (login/logout) — uses the same showPicker
|
|
197
|
-
* machinery as read-op pickers, but with a locally-built component (no read-op
|
|
198
|
-
* request; auth operations are viewer-local in tmux-local attach). `prepare`
|
|
199
|
-
* is async because provider status is async; superseded opens drop on openSeq. */
|
|
200
|
-
openAuthPicker(prepare: () => Promise<(controls: PickerControls) => Picker>): Promise<void>;
|
|
201
60
|
private handleSubmit;
|
|
202
61
|
private handleFollowUp;
|
|
203
|
-
/** Replace every `[Image #N]` token with the temp-file path of the image the
|
|
204
|
-
* user pasted, so the agent receives a readable path even though the editor
|
|
205
|
-
* only ever showed the clean placeholder. Unknown ordinals are left as-is. */
|
|
206
|
-
private expandImagePlaceholders;
|
|
207
|
-
/** Drop the pasted-image registry and reset the ordinal counter — called once
|
|
208
|
-
* a submit has consumed the editor text. */
|
|
209
|
-
private clearPastedImages;
|
|
210
|
-
/** Ctrl+G / app.editor.external — open the current editor text in $VISUAL/$EDITOR
|
|
211
|
-
* and load the saved result back. Ported from pi's `openExternalEditor`: stop
|
|
212
|
-
* the TUI to release the terminal, run the editor with inherited stdio, and on
|
|
213
|
-
* a clean exit (status 0) replace the editor text; the socket keeps running in
|
|
214
|
-
* the background throughout. */
|
|
215
|
-
private openExternalEditor;
|
|
216
|
-
/** Alt+Up / app.message.dequeue — clear the broker's queued steering + follow-up
|
|
217
|
-
* messages and restore them to the editor, prepended to any in-progress text
|
|
218
|
-
* (pi's `restoreQueuedMessagesToEditor`: queued text first, joined by blank
|
|
219
|
-
* lines). A read-AND-mutate op over the correlated request channel. */
|
|
220
62
|
private handleDequeue;
|
|
221
|
-
/** Send a drive frame iff the WHOLE encoded frame fits under MAX_FRAME_BYTES
|
|
222
|
-
* (the broker destroys the socket on any line over its 24 MiB read cap). Over
|
|
223
|
-
* the ceiling → notify + refuse without sending a socket-destroying overflow. */
|
|
224
63
|
private emitDrive;
|
|
225
64
|
private handlePaste;
|
|
226
|
-
/** Register an image path in the paste registry and splice a clean `[Image #N]`
|
|
227
|
-
* token into the editor at the caret instead of the raw path. On submit the
|
|
228
|
-
* token is expanded back to the path (see expandImagePlaceholders), so the
|
|
229
|
-
* agent reads the image off disk. Shared by clipboard paste and drag-drop. */
|
|
230
65
|
private attachImage;
|
|
66
|
+
private expandImagePlaceholders;
|
|
67
|
+
private clearPastedImages;
|
|
68
|
+
private openExternalEditor;
|
|
231
69
|
private notify;
|
|
232
70
|
}
|