@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
|
@@ -13,42 +13,42 @@ export class ReviewDocumentError extends Error {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
/** The terminal's complete daemon seam for one review's comment projection. */
|
|
16
|
-
export function createCommentAuthority(reviewId) {
|
|
16
|
+
export function createCommentAuthority(reviewId, request) {
|
|
17
17
|
return {
|
|
18
18
|
async anchorBase() {
|
|
19
|
-
const base = await cliClient().getReviewDocumentBase(reviewId);
|
|
19
|
+
const base = await request(() => cliClient().getReviewDocumentBase(reviewId));
|
|
20
20
|
return { file: base.file, text: base.anchor_base_text, docHash: base.anchor_base_sha256 };
|
|
21
21
|
},
|
|
22
22
|
async list() {
|
|
23
|
-
const listed = await cliClient().listReviewComments(reviewId, { status: 'all' });
|
|
23
|
+
const listed = await request(() => cliClient().listReviewComments(reviewId, { status: 'all' }));
|
|
24
24
|
return listed.comments.map(projectComment);
|
|
25
25
|
},
|
|
26
26
|
async create(p) {
|
|
27
|
-
await translateDocumentError(() => cliClient().createReviewComment(reviewId, {
|
|
27
|
+
await translateDocumentError(() => request(() => cliClient().createReviewComment(reviewId, {
|
|
28
28
|
text: p.text,
|
|
29
29
|
anchor: { line: p.line, end_line: p.endLine },
|
|
30
30
|
doc_hash: p.docHash,
|
|
31
31
|
actor_node_id: null,
|
|
32
|
-
}));
|
|
32
|
+
})));
|
|
33
33
|
},
|
|
34
34
|
async edit(p) {
|
|
35
|
-
await translateDocumentError(() => cliClient().editReviewComment(p.id, {
|
|
35
|
+
await translateDocumentError(() => request(() => cliClient().editReviewComment(p.id, {
|
|
36
36
|
text: p.text,
|
|
37
37
|
if_revision: p.ifRevision,
|
|
38
38
|
actor_node_id: null,
|
|
39
|
-
}));
|
|
39
|
+
})));
|
|
40
40
|
},
|
|
41
41
|
async resolve(id) {
|
|
42
|
-
await translateDocumentError(() => cliClient().resolveReviewComment(id, { actor_node_id: null }));
|
|
42
|
+
await translateDocumentError(() => request(() => cliClient().resolveReviewComment(id, { actor_node_id: null })));
|
|
43
43
|
},
|
|
44
44
|
async reopen(id) {
|
|
45
|
-
await translateDocumentError(() => cliClient().reopenReviewComment(id, { actor_node_id: null }));
|
|
45
|
+
await translateDocumentError(() => request(() => cliClient().reopenReviewComment(id, { actor_node_id: null })));
|
|
46
46
|
},
|
|
47
47
|
async remove(id) {
|
|
48
|
-
await translateDocumentError(() => cliClient().deleteReviewComment(id, { actor_node_id: null }));
|
|
48
|
+
await translateDocumentError(() => request(() => cliClient().deleteReviewComment(id, { actor_node_id: null })));
|
|
49
49
|
},
|
|
50
50
|
async remapRanges(p) {
|
|
51
|
-
await translateDocumentError(() => cliClient().updateReviewCommentRanges(reviewId, {
|
|
51
|
+
await translateDocumentError(() => request(() => cliClient().updateReviewCommentRanges(reviewId, {
|
|
52
52
|
from_doc_hash: p.fromDocHash,
|
|
53
53
|
to_doc_hash: p.toDocHash,
|
|
54
54
|
entries: p.entries.map((entry) => 'detached' in entry
|
|
@@ -57,7 +57,7 @@ export function createCommentAuthority(reviewId) {
|
|
|
57
57
|
comment_id: entry.id,
|
|
58
58
|
anchor: { line: entry.anchor.line, end_line: entry.anchor.endLine },
|
|
59
59
|
}),
|
|
60
|
-
}));
|
|
60
|
+
})));
|
|
61
61
|
},
|
|
62
62
|
onChanged(fn) {
|
|
63
63
|
return watchReviewActivity(fn);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare const SPLIT_MIN_COLS = 99;
|
|
2
|
+
export declare const MIN_COMPANION_COLS = 40;
|
|
3
|
+
export declare const MIN_COMPANION_ROWS = 12;
|
|
4
|
+
export declare const COMPANION_WIDTH_RATIO = 0.42;
|
|
5
|
+
export declare const COMPANION_HEIGHT_RATIO = 0.4;
|
|
6
|
+
export type CompanionPaneOrigin = 'opened' | 'adopted';
|
|
7
|
+
export type CompanionPaneResult = {
|
|
8
|
+
ok: true;
|
|
9
|
+
paneId: string;
|
|
10
|
+
origin: CompanionPaneOrigin;
|
|
11
|
+
} | {
|
|
12
|
+
ok: false;
|
|
13
|
+
reason: 'no_tmux' | 'no_caller_pane' | 'split_refused';
|
|
14
|
+
};
|
|
15
|
+
/** Open or adopt a companion pane for a review. Adoption succeeds only when
|
|
16
|
+
* an existing validated-live companion viewer pane exists; otherwise, a
|
|
17
|
+
* fresh pane is split beside the caller. */
|
|
18
|
+
export declare function openCompanionPane(args: {
|
|
19
|
+
companionNodeId: string;
|
|
20
|
+
cwd: string;
|
|
21
|
+
callerPane: string | undefined;
|
|
22
|
+
}): CompanionPaneResult;
|
|
23
|
+
/** True while tmux can still describe `paneId` and its process is alive.
|
|
24
|
+
* Deliberately tag-free: a companion pane carries `@crtr_node` only once its
|
|
25
|
+
* viewer has connected, so a tag check would call a still-booting pane dead
|
|
26
|
+
* and let a duplicate be split beside it. */
|
|
27
|
+
export declare function companionPaneLive(paneId: string): boolean;
|
|
28
|
+
/** Kill the pane only when it still exists AND still carries
|
|
29
|
+
* `@crtr_node === companionNodeId`. */
|
|
30
|
+
export declare function closeCompanionPane(paneId: string, companionNodeId: string): void;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// companion-pane.ts — review-side tmux policy for the companion pane.
|
|
2
|
+
//
|
|
3
|
+
// Pure placement over the existing tmux driver verbs; no daemon calls, no
|
|
4
|
+
// review knowledge beyond the ids it is handed.
|
|
5
|
+
import { inTmux, liveViewerPanes, paneRunning, paneSize, splitWindow, paneExists, getPaneOption, closePane, } from '../../../core/runtime/placement-tmux.js';
|
|
6
|
+
import { viewerEnv } from '../../../commands/surface/node/placement.js';
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// Constants
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
export const SPLIT_MIN_COLS = 99;
|
|
11
|
+
export const MIN_COMPANION_COLS = 40;
|
|
12
|
+
export const MIN_COMPANION_ROWS = 12;
|
|
13
|
+
export const COMPANION_WIDTH_RATIO = 0.42;
|
|
14
|
+
export const COMPANION_HEIGHT_RATIO = 0.40;
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Pane lifecycle
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
/** Open or adopt a companion pane for a review. Adoption succeeds only when
|
|
19
|
+
* an existing validated-live companion viewer pane exists; otherwise, a
|
|
20
|
+
* fresh pane is split beside the caller. */
|
|
21
|
+
export function openCompanionPane(args) {
|
|
22
|
+
const { companionNodeId, cwd, callerPane } = args;
|
|
23
|
+
// 1. Check if we're in tmux.
|
|
24
|
+
if (!inTmux())
|
|
25
|
+
return { ok: false, reason: 'no_tmux' };
|
|
26
|
+
// 2. Adopt: scan for an existing live companion viewer pane.
|
|
27
|
+
const allPanes = liveViewerPanes();
|
|
28
|
+
const candidatePanes = allPanes
|
|
29
|
+
.filter((p) => p.nodeId === companionNodeId && paneRunning(p.pane))
|
|
30
|
+
.sort((a, b) => b.stampMs - a.stampMs);
|
|
31
|
+
if (candidatePanes.length > 0) {
|
|
32
|
+
const adopted = candidatePanes[0];
|
|
33
|
+
return { ok: true, paneId: adopted.pane, origin: 'adopted' };
|
|
34
|
+
}
|
|
35
|
+
// 3. Check for a valid caller pane.
|
|
36
|
+
if (callerPane === undefined || callerPane === '') {
|
|
37
|
+
return { ok: false, reason: 'no_caller_pane' };
|
|
38
|
+
}
|
|
39
|
+
// 4. Get the caller pane's size.
|
|
40
|
+
const size = paneSize(callerPane);
|
|
41
|
+
if (size === null) {
|
|
42
|
+
return { ok: false, reason: 'split_refused' };
|
|
43
|
+
}
|
|
44
|
+
// 5. Decide direction and companion size.
|
|
45
|
+
let vertical;
|
|
46
|
+
let companionSize;
|
|
47
|
+
if (size.cols >= SPLIT_MIN_COLS) {
|
|
48
|
+
// Horizontal split: companion on the right.
|
|
49
|
+
vertical = false;
|
|
50
|
+
companionSize = Math.max(MIN_COMPANION_COLS, Math.round(size.cols * COMPANION_WIDTH_RATIO));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// Vertical split: companion below.
|
|
54
|
+
vertical = true;
|
|
55
|
+
companionSize = Math.max(MIN_COMPANION_ROWS, Math.round(size.rows * COMPANION_HEIGHT_RATIO));
|
|
56
|
+
}
|
|
57
|
+
// 6. Split the window and get the new pane id.
|
|
58
|
+
const newPaneId = splitWindow(callerPane, {
|
|
59
|
+
cwd,
|
|
60
|
+
env: viewerEnv(),
|
|
61
|
+
command: `crtr surface attach to ${companionNodeId}`,
|
|
62
|
+
vertical,
|
|
63
|
+
size: companionSize,
|
|
64
|
+
});
|
|
65
|
+
if (newPaneId === null) {
|
|
66
|
+
return { ok: false, reason: 'split_refused' };
|
|
67
|
+
}
|
|
68
|
+
return { ok: true, paneId: newPaneId, origin: 'opened' };
|
|
69
|
+
}
|
|
70
|
+
/** True while tmux can still describe `paneId` and its process is alive.
|
|
71
|
+
* Deliberately tag-free: a companion pane carries `@crtr_node` only once its
|
|
72
|
+
* viewer has connected, so a tag check would call a still-booting pane dead
|
|
73
|
+
* and let a duplicate be split beside it. */
|
|
74
|
+
export function companionPaneLive(paneId) {
|
|
75
|
+
return paneExists(paneId) && paneRunning(paneId);
|
|
76
|
+
}
|
|
77
|
+
/** Kill the pane only when it still exists AND still carries
|
|
78
|
+
* `@crtr_node === companionNodeId`. */
|
|
79
|
+
export function closeCompanionPane(paneId, companionNodeId) {
|
|
80
|
+
if (!paneExists(paneId))
|
|
81
|
+
return;
|
|
82
|
+
const currentNodeId = getPaneOption(paneId, '@crtr_node');
|
|
83
|
+
if (currentNodeId !== companionNodeId)
|
|
84
|
+
return;
|
|
85
|
+
closePane(paneId);
|
|
86
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { SurfaceComponent, SurfaceHandle, SurfaceNoticeOptions } from '../../surfaces/host.js';
|
|
2
|
+
import { type CommentAuthority } from './comments-client.js';
|
|
3
|
+
import type { LiveSource } from './live-source.js';
|
|
4
|
+
import type { ResolvedReview } from './review-client.js';
|
|
5
|
+
/** What the surface's owner supplies for everything outside the document.
|
|
6
|
+
*
|
|
7
|
+
* `submit` exists because the approved leader table keeps `space s` on the
|
|
8
|
+
* document while the review lifecycle adapter belongs to the owner: the
|
|
9
|
+
* surface reports the intent, the owner runs `reviewClient.submit`. */
|
|
10
|
+
export interface ReviewSurfaceServices {
|
|
11
|
+
notice(text: string, opts?: SurfaceNoticeOptions): void;
|
|
12
|
+
suspendForChild(): () => void;
|
|
13
|
+
requestClose(): void;
|
|
14
|
+
submit(): void;
|
|
15
|
+
cancel(): void;
|
|
16
|
+
}
|
|
17
|
+
export interface ReviewDocumentSurfaceOptions {
|
|
18
|
+
review: ResolvedReview;
|
|
19
|
+
source: LiveSource;
|
|
20
|
+
comments: CommentAuthority;
|
|
21
|
+
/** `host.capabilities.selfPane` — the pane the companion splits against. */
|
|
22
|
+
callerPane: string | undefined;
|
|
23
|
+
services: ReviewSurfaceServices;
|
|
24
|
+
}
|
|
25
|
+
/** The one mounted review surface: existing review rendering and navigation
|
|
26
|
+
* over a live file, with comments projected from the daemon and ranges
|
|
27
|
+
* remapped by this terminal as the file changes, plus a status row naming the
|
|
28
|
+
* companion pane the conversation lives in. */
|
|
29
|
+
export declare class ReviewDocumentSurface implements SurfaceComponent {
|
|
30
|
+
private readonly absFile;
|
|
31
|
+
private readonly fileLabel;
|
|
32
|
+
private readonly companionNodeId;
|
|
33
|
+
private readonly companionCwd;
|
|
34
|
+
private readonly callerPane;
|
|
35
|
+
private readonly kind;
|
|
36
|
+
private readonly source;
|
|
37
|
+
private readonly comments;
|
|
38
|
+
private readonly services;
|
|
39
|
+
private readonly unsubscribeComments;
|
|
40
|
+
private readonly ready;
|
|
41
|
+
private cols;
|
|
42
|
+
/** Rows the host assigned this surface; the document frame renders one
|
|
43
|
+
* fewer, because the last line is this surface's status row. */
|
|
44
|
+
private hostRows;
|
|
45
|
+
/** The `hostRows` the current state was last reflowed against. A height
|
|
46
|
+
* change matters as much as a width one: `reflow` is what re-runs
|
|
47
|
+
* `ensureAnchorVisible` against the new body height, so a pane shrink
|
|
48
|
+
* cannot strand the active anchor below the visible body. */
|
|
49
|
+
private flowedRows;
|
|
50
|
+
private _focused;
|
|
51
|
+
private closed;
|
|
52
|
+
private spaceArmed;
|
|
53
|
+
private escapeConfirmArmed;
|
|
54
|
+
private cancelArmed;
|
|
55
|
+
private tornDown;
|
|
56
|
+
/** The disposition {@link teardown} stated, kept only while there was no
|
|
57
|
+
* handle to close: the mount that follows disposes every standing notice,
|
|
58
|
+
* so {@link setHandle} states it again once the surface is gone. */
|
|
59
|
+
private tornDownNotice;
|
|
60
|
+
private handle;
|
|
61
|
+
/** The companion pane this surface is bound to, and how it came to be.
|
|
62
|
+
* `paneOrigin` is status-row copy only: teardown reads `paneId`. */
|
|
63
|
+
private paneId;
|
|
64
|
+
private paneOrigin;
|
|
65
|
+
private state;
|
|
66
|
+
private cache;
|
|
67
|
+
/** Every non-deleted comment the daemon currently projects, newest last. */
|
|
68
|
+
private projection;
|
|
69
|
+
private status;
|
|
70
|
+
/** This surface's own error/summary state — never a host notice (D1). */
|
|
71
|
+
private problem;
|
|
72
|
+
private composeAnchorLost;
|
|
73
|
+
/** Serializes base-hash transitions so B→C cannot overtake A→B. */
|
|
74
|
+
private remapChain;
|
|
75
|
+
constructor(opts: ReviewDocumentSurfaceOptions);
|
|
76
|
+
/** Resolves once the daemon coordinate base has been aligned to the file on
|
|
77
|
+
* disk. The owner may await it so the first painted frame already carries
|
|
78
|
+
* current ranges; painting earlier shows only a preparing line, never a
|
|
79
|
+
* comment at a coordinate the daemon has not accepted. */
|
|
80
|
+
open(): Promise<void>;
|
|
81
|
+
hasUnsentCompose(): boolean;
|
|
82
|
+
get focused(): boolean;
|
|
83
|
+
set focused(value: boolean);
|
|
84
|
+
setRows(rows: number): void;
|
|
85
|
+
/** Exactly the rows the host assigned: the document frame, then this
|
|
86
|
+
* surface's status row. The document is capped at {@link DOC_MAX_COLS} and
|
|
87
|
+
* every line is padded out to the full pane width. */
|
|
88
|
+
render(width: number): string[];
|
|
89
|
+
/** Rows the document frame itself owns. */
|
|
90
|
+
private get rows();
|
|
91
|
+
private renderDocument;
|
|
92
|
+
/** The surface consumes every chunk: nothing typed into a mounted review may
|
|
93
|
+
* reach the transcript beneath it. Esc is the one key this surface answers
|
|
94
|
+
* itself — it closes the review unless an unsent comment holds it open. */
|
|
95
|
+
handleInput(data: string): void;
|
|
96
|
+
/** True when the document's own modes took the chunk. */
|
|
97
|
+
private consume;
|
|
98
|
+
/** A mounted review consumes every notch, ready or not: the transcript
|
|
99
|
+
* beneath it must never scroll while the document stands over it. */
|
|
100
|
+
handleWheel(direction: 'up' | 'down', lines: number): boolean;
|
|
101
|
+
/** Repaints are scheduled by the host; this surface never draws directly. */
|
|
102
|
+
invalidate(): void;
|
|
103
|
+
/** The mounted handle is this surface's repaint and close channel, and the
|
|
104
|
+
* host's close is what releases the document's resources. */
|
|
105
|
+
setHandle(handle: SurfaceHandle): void;
|
|
106
|
+
/** The status row's left segment: this document's state in one line. */
|
|
107
|
+
private summary;
|
|
108
|
+
/** The status row's right segment: where the companion conversation is. */
|
|
109
|
+
private companionSegment;
|
|
110
|
+
private statusRow;
|
|
111
|
+
/** Bind the conversation's pane, opening one only when this surface holds no
|
|
112
|
+
* live pane already and there is no live companion viewer to adopt. A second
|
|
113
|
+
* call therefore keeps the bound pane, whatever state its viewer is in. */
|
|
114
|
+
openCompanion(): void;
|
|
115
|
+
/** The one path out of a review that has reached a terminal state — approved,
|
|
116
|
+
* canceled here, or decided elsewhere. The pane goes with the review, never
|
|
117
|
+
* with Esc: closing the document leaves the conversation standing so the
|
|
118
|
+
* review can be re-opened over it. Idempotent. The disposition is stated
|
|
119
|
+
* only after the close, because the host's restoring close disposes every
|
|
120
|
+
* notice raised over the closing surface — a notice raised first would die
|
|
121
|
+
* with the surface and the disposition would never paint. */
|
|
122
|
+
teardown(notice: string): void;
|
|
123
|
+
/** Releases this surface's render cache and stops every projected repaint.
|
|
124
|
+
* This surface closes the source it was handed; that close stops its watcher.
|
|
125
|
+
* The companion pane deliberately survives: only {@link teardown} closes it. */
|
|
126
|
+
close(): void;
|
|
127
|
+
/** Bring the daemon's comment coordinates onto the bytes now on disk, then
|
|
128
|
+
* build the first state from what the daemon accepted. The zero-comment case
|
|
129
|
+
* still submits its batch: the base digest itself is what advances, and a
|
|
130
|
+
* later create against current bytes is rejected until it does. */
|
|
131
|
+
private align;
|
|
132
|
+
private movedSince;
|
|
133
|
+
/** Re-derive this surface from the daemon's own coordinate base. The only
|
|
134
|
+
* honest recovery once a batch is rejected: the local map that produced it
|
|
135
|
+
* is no longer a true description of what the daemon holds. */
|
|
136
|
+
private realign;
|
|
137
|
+
private buildState;
|
|
138
|
+
private onSourceChanged;
|
|
139
|
+
/** One transaction covering every non-deleted comment. A rejection is stated
|
|
140
|
+
* in this surface's own footer and the projection is re-read from the
|
|
141
|
+
* authority, which is the only thing that can still be true afterwards. */
|
|
142
|
+
private submitBatch;
|
|
143
|
+
private refreshProjection;
|
|
144
|
+
private mutate;
|
|
145
|
+
private handleComposeKey;
|
|
146
|
+
private handleLeaderKey;
|
|
147
|
+
/** Cancelling discards the whole review, so it asks once. The armed state is
|
|
148
|
+
* answered in {@link handleInput}, ahead of every mode's ladder. */
|
|
149
|
+
private armCancel;
|
|
150
|
+
private handleListKey;
|
|
151
|
+
private handleViewKey;
|
|
152
|
+
/** The reviewed file is the deliverable: the person's own editor writes it,
|
|
153
|
+
* this surface never does. The source is re-read the moment the editor exits
|
|
154
|
+
* rather than waiting for the watcher's coalescing window. */
|
|
155
|
+
private editInEditor;
|
|
156
|
+
/** The host owns cursor focus; a focused surface contributes exactly one
|
|
157
|
+
* whole marker at the same visual location the document already calls
|
|
158
|
+
* active. There is deliberately no synthetic fallback row: a marker is
|
|
159
|
+
* only valid when it belongs to a rendered anchor or the compose/list cursor. */
|
|
160
|
+
private markCursorLocation;
|
|
161
|
+
/** The frame paints source rows after its three-line header. Scroll indicators
|
|
162
|
+
* replace their source rows, so they are never cursor targets. */
|
|
163
|
+
private activeAnchorFrameRow;
|
|
164
|
+
private reflow;
|
|
165
|
+
private document;
|
|
166
|
+
private bodyHeight;
|
|
167
|
+
private composeWidth;
|
|
168
|
+
private gutterWidth;
|
|
169
|
+
/** The document frame's own footer line: its error, then its stale verdict. */
|
|
170
|
+
private footerLine;
|
|
171
|
+
private renderPlaceholder;
|
|
172
|
+
/** `frame.ts` renders the ordinary list. Detached anchors need stronger
|
|
173
|
+
* treatment: their own leading group plus the original range and snippet,
|
|
174
|
+
* because no document marker can lead a person back to them. */
|
|
175
|
+
private renderGroupedList;
|
|
176
|
+
/** The compose header states a lost anchor where the person is already
|
|
177
|
+
* looking, leaving the footer's compose keys intact. */
|
|
178
|
+
private statedComposeAnchor;
|
|
179
|
+
private commentListRow;
|
|
180
|
+
private topVisibleSourceLine;
|
|
181
|
+
private repaint;
|
|
182
|
+
}
|