@north-light/crouter 0.3.170 → 0.3.172
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/client.d.ts +37 -11
- package/dist/api/client.js +84 -15
- package/dist/api/dto/human.d.ts +53 -39
- package/dist/api/dto/human.js +2 -3
- package/dist/api/dto/inbox.d.ts +0 -1
- package/dist/api/dto/nodes.d.ts +12 -0
- package/dist/api/dto/review-comments.d.ts +137 -0
- package/dist/api/dto/review-comments.js +5 -0
- package/dist/api/dto/reviews.d.ts +109 -0
- package/dist/api/dto/reviews.js +5 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +2 -0
- package/dist/api/routes.d.ts +17 -4
- package/dist/api/routes.js +21 -5
- package/dist/build-root.d.ts +1 -16
- package/dist/build-root.js +1 -25
- package/dist/builtin-memory/00-runtime-base.md +7 -5
- package/dist/builtin-memory/04-base-worker.md +1 -1
- package/dist/builtin-memory/04-orchestration-kernel.md +7 -7
- package/dist/builtin-memory/05-kinds/design/00-base.md +1 -1
- package/dist/builtin-memory/05-kinds/design/01-orchestrator.md +1 -1
- package/dist/builtin-memory/05-kinds/developer/00-base.md +1 -1
- package/dist/builtin-memory/05-kinds/explore/00-base.md +1 -1
- package/dist/builtin-memory/05-kinds/plan/00-base.md +1 -1
- package/dist/builtin-memory/05-kinds/plan/01-orchestrator.md +1 -1
- package/dist/builtin-memory/05-kinds/review/00-base.md +1 -1
- package/dist/builtin-memory/05-kinds/review/companion/00-base.md +20 -0
- package/dist/builtin-memory/05-kinds/spec/00-base.md +3 -7
- package/dist/builtin-memory/05-kinds/spec/01-orchestrator.md +3 -3
- package/dist/builtin-memory/05-kinds/spec/requirements.md +3 -3
- package/dist/builtin-memory/design.md +2 -2
- package/dist/builtin-memory/insights/capture.md +50 -0
- package/dist/builtin-memory/insights/init.md +45 -0
- package/dist/builtin-memory/insights/listen.md +9 -0
- package/dist/builtin-memory/internal/agent-shaping.md +2 -2
- package/dist/builtin-memory/internal/nodes-and-canvas.md +1 -1
- package/dist/builtin-memory/internal/plugins.md +12 -11
- package/dist/builtin-memory/internal/storage-tiers.md +2 -2
- package/dist/builtin-memory/{planning.md → plan/roadmap.md} +3 -3
- package/dist/builtin-memory/plan.md +19 -0
- package/dist/builtin-memory/spec/guide.md +38 -0
- package/dist/builtin-memory/spec/requirements.md +31 -0
- package/dist/builtin-memory/spec/roadmap.md +35 -0
- package/dist/builtin-memory/spec.md +10 -86
- package/dist/builtin-pi-packages/pi-crtr-extensions/README.md +3 -4
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/provider-rotation.test.ts +49 -5
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.d.ts +56 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.js +920 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +221 -156
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/statusline.ts +4 -5
- package/dist/cli.js +2 -6
- package/dist/clients/attach/__tests__/attach-chrome-remote.test.js +7 -35
- package/dist/clients/attach/__tests__/attach-keybindings.test.js +32 -16
- package/dist/clients/attach/__tests__/context-message.test.js +142 -6
- package/dist/clients/attach/__tests__/crtr-output.test.js +29 -45
- package/dist/clients/attach/__tests__/diagram.test.js +1 -1
- package/dist/clients/attach/__tests__/file-review-focus.test.js +48 -0
- package/dist/clients/attach/__tests__/group-activity.test.js +266 -0
- package/dist/clients/attach/__tests__/input-controller-extension-command.test.js +32 -0
- package/dist/clients/attach/__tests__/session-identity-refresh.test.js +32 -0
- package/dist/clients/attach/__tests__/titled-editor-preview.test.js +1 -2
- package/dist/clients/attach/chrome/header.d.ts +10 -0
- package/dist/clients/attach/chrome/header.js +30 -0
- package/dist/clients/attach/chrome/recap.d.ts +7 -0
- package/dist/clients/attach/chrome/recap.js +19 -0
- package/dist/clients/attach/chrome/status-line.d.ts +3 -0
- package/dist/clients/attach/chrome/status-line.js +5 -0
- package/dist/clients/attach/chrome/widgets.js +11 -21
- package/dist/clients/attach/command.js +11 -7
- package/dist/clients/attach/config.d.ts +4 -0
- package/dist/clients/attach/config.js +3 -0
- package/dist/clients/attach/input/controller.d.ts +19 -0
- package/dist/clients/attach/input/controller.js +62 -28
- package/dist/clients/attach/input/titled-editor.d.ts +0 -4
- package/dist/clients/attach/input/titled-editor.js +2 -10
- package/dist/clients/attach/overlays/file-review.d.ts +9 -5
- package/dist/clients/attach/overlays/file-review.js +9 -70
- package/dist/clients/attach/overlays/help.d.ts +33 -0
- package/dist/clients/attach/overlays/help.js +204 -0
- package/dist/clients/attach/render/activity-slot.d.ts +4 -0
- package/dist/clients/attach/render/activity-slot.js +13 -0
- package/dist/clients/attach/render/chat-view.d.ts +117 -12
- package/dist/clients/attach/render/chat-view.js +604 -135
- package/dist/clients/attach/render/context-message.d.ts +2 -1
- package/dist/clients/attach/render/context-message.js +17 -13
- package/dist/clients/attach/render/crtr-output.js +1 -3
- package/dist/clients/attach/render/diagram.js +2 -2
- package/dist/clients/attach/render/edit-diff.d.ts +4 -1
- package/dist/clients/attach/render/edit-diff.js +7 -11
- package/dist/clients/attach/render/group-activity.d.ts +32 -0
- package/dist/clients/attach/render/group-activity.js +206 -0
- package/dist/clients/attach/render/group-recap.d.ts +10 -0
- package/dist/clients/attach/render/group-recap.js +93 -0
- package/dist/clients/attach/render/html-markdown.d.ts +17 -0
- package/dist/clients/attach/render/html-markdown.js +228 -0
- package/dist/clients/attach/render/measured-container.d.ts +96 -0
- package/dist/clients/attach/render/measured-container.js +322 -0
- package/dist/clients/attach/render/scroll-animation.d.ts +8 -0
- package/dist/clients/attach/render/scroll-animation.js +80 -0
- package/dist/clients/attach/render/tool-calls.js +6 -6
- package/dist/clients/attach/render/transcript-copy.d.ts +9 -0
- package/dist/clients/attach/render/transcript-copy.js +81 -0
- package/dist/clients/attach/render/viewport.d.ts +29 -0
- package/dist/clients/attach/render/viewport.js +159 -0
- package/dist/clients/attach/session/bindings.d.ts +10 -7
- package/dist/clients/attach/session/bindings.js +23 -8
- package/dist/clients/attach/session/connection.js +4 -5
- package/dist/clients/attach/session/context.d.ts +6 -4
- package/dist/clients/attach/session/frame.d.ts +34 -0
- package/dist/clients/attach/session/frame.js +176 -0
- package/dist/clients/attach/session/frames.d.ts +4 -1
- package/dist/clients/attach/session/frames.js +14 -1
- package/dist/clients/attach/session/identity.js +4 -3
- package/dist/clients/attach/session/input-wiring.d.ts +14 -4
- package/dist/clients/attach/session/input-wiring.js +15 -13
- package/dist/clients/attach/session/invariant.d.ts +9 -0
- package/dist/clients/attach/session/invariant.js +15 -0
- package/dist/clients/attach/session/keys.d.ts +10 -2
- package/dist/clients/attach/session/keys.js +13 -5
- package/dist/clients/attach/session/layout.d.ts +10 -8
- package/dist/clients/attach/session/layout.js +33 -34
- package/dist/clients/attach/session/mouse.d.ts +18 -0
- package/dist/clients/attach/session/mouse.js +64 -0
- package/dist/clients/attach/session/pane-tag.d.ts +3 -0
- package/dist/clients/attach/session/pane-tag.js +51 -8
- package/dist/clients/attach/session/reconnect.d.ts +3 -0
- package/dist/clients/attach/session/reconnect.js +42 -5
- package/dist/clients/attach/session/surface-frame.d.ts +20 -0
- package/dist/clients/attach/session/surface-frame.js +73 -0
- package/dist/clients/attach/session/surface-host.d.ts +64 -0
- package/dist/clients/attach/session/surface-host.js +255 -0
- package/dist/clients/attach/session/whip.d.ts +17 -0
- package/dist/clients/attach/session/whip.js +334 -0
- package/dist/clients/attach/slash/dispatch.d.ts +13 -1
- package/dist/clients/attach/slash/dispatch.js +51 -29
- package/dist/clients/attach/viewer.js +907 -819
- package/dist/clients/conversation/conversation.d.ts +65 -0
- package/dist/clients/conversation/conversation.js +318 -0
- package/dist/clients/conversation/frames.d.ts +30 -0
- package/dist/clients/conversation/frames.js +52 -0
- package/dist/clients/conversation/region.d.ts +51 -0
- package/dist/clients/conversation/region.js +265 -0
- package/dist/clients/conversation/submit.d.ts +38 -0
- package/dist/clients/conversation/submit.js +51 -0
- package/dist/clients/inbox/__tests__/inbox-controller.test.js +247 -0
- package/dist/clients/inbox/__tests__/mount-panel.test.js +776 -0
- package/dist/clients/inbox/controller.d.ts +79 -0
- package/dist/clients/inbox/controller.js +448 -0
- package/dist/clients/inbox/deck-adapter.d.ts +29 -0
- package/dist/clients/inbox/deck-adapter.js +62 -0
- package/dist/clients/inbox/layout.d.ts +8 -0
- package/dist/clients/inbox/layout.js +9 -0
- package/dist/clients/inbox/resolve.d.ts +10 -0
- package/dist/clients/inbox/resolve.js +34 -0
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +29 -0
- package/dist/clients/inbox/review/__tests__/remap.test.js +196 -0
- package/dist/clients/inbox/review/__tests__/review-core.test.js +341 -0
- package/dist/clients/inbox/review/anchors.d.ts +41 -0
- package/dist/clients/inbox/review/anchors.js +89 -0
- package/dist/clients/inbox/review/columns.d.ts +22 -0
- package/dist/clients/inbox/review/columns.js +40 -0
- package/dist/clients/inbox/review/comments-client.d.ts +66 -0
- package/dist/clients/inbox/review/comments-client.js +98 -0
- package/dist/clients/inbox/review/composition.d.ts +60 -0
- package/dist/clients/inbox/review/composition.js +278 -0
- package/dist/clients/inbox/review/document-region.d.ts +120 -0
- package/dist/clients/inbox/review/document-region.js +902 -0
- package/dist/clients/inbox/review/frame.d.ts +45 -0
- package/dist/clients/inbox/review/frame.js +215 -0
- package/dist/clients/inbox/review/keys.d.ts +67 -0
- package/dist/clients/inbox/review/keys.js +130 -0
- package/dist/clients/inbox/review/launch.d.ts +10 -0
- package/dist/clients/inbox/review/launch.js +129 -0
- package/dist/clients/inbox/review/live-source.d.ts +24 -0
- package/dist/clients/inbox/review/live-source.js +160 -0
- package/dist/clients/inbox/review/nvim.d.ts +13 -0
- package/dist/clients/inbox/review/nvim.js +42 -0
- package/dist/clients/inbox/review/remap.d.ts +51 -0
- package/dist/clients/inbox/review/remap.js +157 -0
- package/dist/clients/inbox/review/review-client.d.ts +30 -0
- package/dist/clients/inbox/review/review-client.js +107 -0
- package/dist/clients/inbox/review/roundtrip.d.ts +5 -0
- package/dist/clients/inbox/review/roundtrip.js +36 -0
- package/dist/clients/inbox/review/state.d.ts +143 -0
- package/dist/clients/inbox/review/state.js +282 -0
- package/dist/clients/inbox/review-adapter.d.ts +29 -0
- package/dist/clients/inbox/review-adapter.js +92 -0
- package/dist/clients/inbox/review-visibility.d.ts +5 -0
- package/dist/clients/inbox/review-visibility.js +19 -0
- package/dist/clients/inbox/surface.d.ts +19 -0
- package/dist/clients/inbox/surface.js +128 -0
- package/dist/clients/inbox/tui/ansi.d.ts +66 -0
- package/dist/clients/inbox/tui/ansi.js +317 -0
- package/dist/clients/inbox/tui/clipboard.d.ts +2 -0
- package/dist/clients/inbox/tui/clipboard.js +26 -0
- package/dist/clients/inbox/tui/input.d.ts +7 -0
- package/dist/clients/inbox/tui/input.js +653 -0
- package/dist/clients/inbox/tui/keys.d.ts +28 -0
- package/dist/clients/inbox/tui/keys.js +111 -0
- package/dist/clients/inbox/tui/panel.d.ts +2 -0
- package/dist/clients/inbox/tui/panel.js +217 -0
- package/dist/clients/inbox/tui/render.d.ts +37 -0
- package/dist/clients/inbox/tui/render.js +476 -0
- package/dist/clients/inbox/tui/types.d.ts +57 -0
- package/dist/clients/inbox/tui/types.js +1 -0
- package/dist/clients/inbox/tui.d.ts +6 -0
- package/dist/clients/inbox/tui.js +74 -0
- package/dist/clients/surfaces/host.d.ts +66 -0
- package/dist/clients/surfaces/host.js +1 -0
- package/dist/clients/surfaces/region.d.ts +16 -0
- package/dist/clients/surfaces/region.js +1 -0
- package/dist/clients/web/__tests__/push-engine.test.js +14 -158
- package/dist/clients/web/dev-server.d.ts +3 -3
- package/dist/clients/web/dev-server.js +9 -23
- package/dist/clients/web/events.js +4 -6
- package/dist/clients/web/push-engine.d.ts +2 -66
- package/dist/clients/web/push-engine.js +30 -161
- package/dist/clients/web/push-registry.d.ts +0 -4
- package/dist/clients/web/push-registry.js +2 -7
- package/dist/clients/web/server.js +3 -35
- package/dist/clients/web/web-client/shared/protocol.d.ts +0 -108
- package/dist/clients/web/web-cmd.js +2 -2
- package/dist/commands/__tests__/human.test.js +27 -15
- package/dist/commands/api-client.js +3 -3
- package/dist/commands/canvas-browse.js +1 -1
- package/dist/commands/canvas-issue.js +1 -1
- package/dist/commands/canvas-use.js +1 -1
- package/dist/commands/human/doc.d.ts +2 -0
- package/dist/commands/human/doc.js +98 -0
- package/dist/commands/human/inbox.d.ts +2 -0
- package/dist/commands/human/inbox.js +101 -0
- package/dist/commands/human/prompts.d.ts +2 -3
- package/dist/commands/human/prompts.js +27 -180
- package/dist/commands/human/queue.d.ts +1 -5
- package/dist/commands/human/queue.js +54 -216
- package/dist/commands/human/review.d.ts +2 -0
- package/dist/commands/human/review.js +298 -0
- package/dist/commands/human/shared.d.ts +2 -69
- package/dist/commands/human/shared.js +1 -181
- package/dist/commands/human.js +15 -20
- package/dist/commands/memory/__tests__/lint.test.d.ts +1 -0
- package/dist/commands/memory/__tests__/lint.test.js +15 -0
- package/dist/commands/memory/delete.js +2 -2
- package/dist/commands/memory/lint.d.ts +1 -0
- package/dist/commands/memory/lint.js +21 -3
- package/dist/commands/memory/read.js +4 -4
- package/dist/commands/node.js +8 -7
- package/dist/commands/pkg/plugin-manage.js +143 -68
- package/dist/commands/surface-inspect.js +2 -2
- package/dist/commands/surface.js +6 -12
- package/dist/commands/sys/__tests__/setup-core.test.js +9 -5
- package/dist/commands/sys/__tests__/setup-front-door.test.js +7 -42
- package/dist/commands/sys/config.js +29 -3
- package/dist/commands/sys/feedback.js +1 -1
- package/dist/commands/sys/setup-core.d.ts +12 -11
- package/dist/commands/sys/setup-core.js +55 -46
- package/dist/commands/sys/setup-wizard.d.ts +4 -1
- package/dist/commands/sys/setup-wizard.js +50 -9
- package/dist/commands/sys/sync-deps.js +1 -1
- package/dist/commands/sys.js +4 -6
- package/dist/core/__tests__/broker-sdk-wiring.test.js +6 -1
- package/dist/core/__tests__/broker-snapshot-history.test.js +9 -1
- package/dist/core/__tests__/dead-node-policy-table.test.js +3 -4
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +8 -5
- package/dist/core/__tests__/fixtures/fake-engine.js +28 -2
- package/dist/core/__tests__/full/broker-provider-retry.test.js +87 -2
- package/dist/core/__tests__/full/broker-whip-interrupt.test.d.ts +1 -0
- package/dist/core/__tests__/full/broker-whip-interrupt.test.js +39 -0
- package/dist/core/__tests__/full/detach-focus.test.js +1 -1
- package/dist/core/__tests__/human-deliver-e2e.test.js +64 -64
- package/dist/core/__tests__/human-deliver.test.js +71 -345
- package/dist/core/__tests__/inline-memory-refs.test.js +2 -12
- package/dist/core/__tests__/memory-resolver-precedence.test.js +12 -15
- package/dist/core/__tests__/migration.test.js +10 -0
- package/dist/core/__tests__/model-pin-durability.test.js +14 -0
- package/dist/core/__tests__/phase4-review-migration.test.d.ts +1 -0
- package/dist/core/__tests__/phase4-review-migration.test.js +100 -0
- package/dist/core/__tests__/phase4-review-store.test.d.ts +1 -0
- package/dist/core/__tests__/phase4-review-store.test.js +143 -0
- package/dist/core/__tests__/remote-canvas-target.test.js +2 -2
- package/dist/core/__tests__/revive.test.js +22 -53
- package/dist/core/__tests__/session-cycles.test.js +48 -18
- package/dist/core/__tests__/spawn-no-kickoff.test.js +8 -12
- package/dist/core/__tests__/stop-guard.test.js +16 -1
- package/dist/core/__tests__/tmux-surface.test.js +21 -25
- package/dist/core/asset-root.d.ts +7 -0
- package/dist/core/asset-root.js +18 -0
- package/dist/core/broker-client/client.d.ts +0 -7
- package/dist/core/broker-client/client.js +4 -10
- package/dist/core/broker-client/transport-relay.d.ts +3 -4
- package/dist/core/broker-client/transport-relay.js +3 -4
- package/dist/core/canvas/__tests__/attention.test.js +1 -1
- package/dist/core/canvas/__tests__/remote-canvas-source.test.js +1 -1
- package/dist/core/canvas/__tests__/remote-transport.test.d.ts +1 -0
- package/dist/core/{view/__tests__/transport-remote.test.js → canvas/__tests__/remote-transport.test.js} +2 -2
- package/dist/core/canvas/__tests__/render-remote.test.js +1 -1
- package/dist/core/canvas/attention.js +4 -4
- package/dist/core/canvas/canvas.d.ts +6 -11
- package/dist/core/canvas/canvas.js +11 -33
- package/dist/core/canvas/db.js +207 -38
- package/dist/core/canvas/extensions.d.ts +1 -1
- package/dist/core/canvas/extensions.js +8 -1
- package/dist/core/canvas/index.d.ts +0 -1
- package/dist/core/canvas/index.js +0 -1
- package/dist/core/canvas/nav-model.d.ts +1 -1
- package/dist/core/canvas/nav-model.js +1 -1
- package/dist/core/canvas/paths.d.ts +5 -0
- package/dist/core/canvas/paths.js +16 -0
- package/dist/core/canvas/remote-canvas-source.js +2 -2
- package/dist/core/canvas/remote-transport.d.ts +7 -0
- package/dist/core/{view/transport-remote.js → canvas/remote-transport.js} +3 -4
- package/dist/core/canvas/source.js +1 -1
- package/dist/core/canvas/status-glyph.js +4 -12
- package/dist/core/canvas/types.d.ts +10 -35
- package/dist/core/clipboard-text.d.ts +8 -0
- package/dist/core/clipboard-text.js +18 -0
- package/dist/core/command-manifests/registry.d.ts +1 -3
- package/dist/core/command-plugins/bundle.d.ts +29 -0
- package/dist/core/command-plugins/bundle.js +198 -0
- package/dist/core/command-plugins/discovery.d.ts +0 -8
- package/dist/core/command-plugins/discovery.js +2 -39
- package/dist/core/command-plugins/transport/http-fetch.d.ts +4 -30
- package/dist/core/command-plugins/transport/http-fetch.js +17 -95
- package/dist/core/command.d.ts +1 -13
- package/dist/core/command.js +1 -16
- package/dist/core/config.d.ts +4 -0
- package/dist/core/config.js +28 -3
- package/dist/core/document-lines.d.ts +4 -0
- package/dist/core/document-lines.js +6 -0
- package/dist/core/feed/feed.d.ts +2 -0
- package/dist/core/feed/feed.js +11 -7
- package/dist/core/human/__tests__/inbox-cancel-worker.d.ts +1 -0
- package/dist/core/human/__tests__/inbox-cancel-worker.js +7 -0
- package/dist/core/human/__tests__/inbox-claim-worker.d.ts +1 -0
- package/dist/core/human/__tests__/inbox-claim-worker.js +17 -0
- package/dist/core/human/__tests__/inbox-core.test.d.ts +1 -0
- package/dist/core/human/__tests__/inbox-core.test.js +144 -0
- package/dist/core/human/__tests__/inbox-stale-claim-worker.d.ts +1 -0
- package/dist/core/human/__tests__/inbox-stale-claim-worker.js +8 -0
- package/dist/core/human/__tests__/visible-paths.test.d.ts +1 -0
- package/dist/{clients/attach → core/human}/__tests__/visible-paths.test.js +9 -0
- package/dist/core/human/claim.d.ts +23 -0
- package/dist/core/human/claim.js +67 -0
- package/dist/core/human/convention.d.ts +30 -0
- package/dist/core/human/convention.js +202 -0
- package/dist/core/human/deck-factories.d.ts +8 -0
- package/dist/core/human/deck-factories.js +15 -0
- package/dist/core/human/deck-schema.d.ts +70 -0
- package/dist/core/human/deck-schema.js +92 -0
- package/dist/core/human/root.d.ts +7 -0
- package/dist/core/human/root.js +37 -0
- package/dist/core/human/scan.d.ts +3 -0
- package/dist/core/human/scan.js +76 -0
- package/dist/core/human/summary.d.ts +8 -0
- package/dist/core/human/summary.js +44 -0
- package/dist/core/human/tickets.d.ts +49 -0
- package/dist/core/human/tickets.js +190 -0
- package/dist/core/human/types.d.ts +136 -0
- package/dist/core/human/types.js +5 -0
- package/dist/{clients/attach → core/human}/visible-paths.d.ts +1 -1
- package/dist/{clients/attach → core/human}/visible-paths.js +3 -2
- package/dist/core/inspector/chrome.d.ts +6 -0
- package/dist/core/inspector/chrome.js +14 -0
- package/dist/core/inspector/contract.d.ts +105 -0
- package/dist/core/inspector/contract.js +1 -0
- package/dist/core/inspector/core.d.ts +4 -5
- package/dist/core/inspector/core.js +3 -5
- package/dist/core/inspector/host.d.ts +46 -0
- package/dist/core/{tui → inspector}/host.js +42 -208
- package/dist/core/inspector/text.d.ts +2 -2
- package/dist/core/inspector/transport.d.ts +6 -0
- package/dist/core/inspector/transport.js +36 -0
- package/dist/core/inspector/tui.d.ts +2 -2
- package/dist/core/inspector/tui.js +15 -15
- package/dist/core/keybindings/__tests__/inbox-affordance.test.js +11 -11
- package/dist/core/keybindings/__tests__/resolve.test.js +10 -19
- package/dist/core/keybindings/attach-control.d.ts +9 -3
- package/dist/core/keybindings/attach-control.js +3 -1
- package/dist/core/keybindings/catalog.d.ts +6 -5
- package/dist/core/keybindings/catalog.js +61 -133
- package/dist/core/keybindings/inbox.d.ts +5 -6
- package/dist/core/keybindings/inbox.js +9 -10
- package/dist/core/keybindings/index.d.ts +3 -3
- package/dist/core/keybindings/index.js +3 -3
- package/dist/core/keybindings/persistence.d.ts +5 -1
- package/dist/core/keybindings/persistence.js +24 -6
- package/dist/core/keybindings/resolve.d.ts +6 -0
- package/dist/core/keybindings/resolve.js +10 -3
- package/dist/core/memory/inline-ref-grammar.js +2 -3
- package/dist/core/memory-resolver.d.ts +27 -29
- package/dist/core/memory-resolver.js +45 -39
- package/dist/core/model-routes.d.ts +33 -0
- package/dist/core/model-routes.js +42 -3
- package/dist/core/preview-registry.js +17 -55
- package/dist/core/profiles/select.js +3 -3
- package/dist/core/{view/remote-canvas-target.d.ts → remote-canvas-target.d.ts} +2 -2
- package/dist/core/{view/remote-canvas-target.js → remote-canvas-target.js} +4 -4
- package/dist/core/review/__tests__/capture-origin.test.d.ts +1 -0
- package/dist/core/review/__tests__/capture-origin.test.js +139 -0
- package/dist/core/review/__tests__/comments.test.d.ts +1 -0
- package/dist/core/review/__tests__/comments.test.js +98 -0
- package/dist/core/review/__tests__/project.test.d.ts +1 -0
- package/dist/core/review/__tests__/project.test.js +71 -0
- package/dist/core/review/__tests__/remap.test.d.ts +1 -0
- package/dist/core/review/__tests__/remap.test.js +159 -0
- package/dist/core/review/__tests__/stage-identity.test.d.ts +1 -0
- package/dist/core/review/__tests__/stage-identity.test.js +140 -0
- package/dist/core/review/birth.d.ts +7 -0
- package/dist/core/review/birth.js +23 -0
- package/dist/core/review/comments.d.ts +69 -0
- package/dist/core/review/comments.js +295 -0
- package/dist/core/review/companion.d.ts +35 -0
- package/dist/core/review/companion.js +205 -0
- package/dist/core/review/document.d.ts +27 -0
- package/dist/core/review/document.js +138 -0
- package/dist/core/review/project.d.ts +13 -0
- package/dist/core/review/project.js +58 -0
- package/dist/core/review/realize.d.ts +19 -0
- package/dist/core/review/realize.js +217 -0
- package/dist/core/review/remap.d.ts +24 -0
- package/dist/core/review/remap.js +156 -0
- package/dist/core/review/signal.d.ts +5 -0
- package/dist/core/review/signal.js +31 -0
- package/dist/core/review/stage.d.ts +26 -0
- package/dist/core/review/stage.js +184 -0
- package/dist/core/review/store.d.ts +46 -0
- package/dist/core/review/store.js +163 -0
- package/dist/core/review/ticket-filter.d.ts +17 -0
- package/dist/core/review/ticket-filter.js +32 -0
- package/dist/core/review/types.d.ts +130 -0
- package/dist/core/review/types.js +23 -0
- package/dist/core/runtime/__tests__/session-visibility.test.d.ts +1 -0
- package/dist/core/runtime/__tests__/session-visibility.test.js +119 -0
- package/dist/core/runtime/bearings.d.ts +5 -17
- package/dist/core/runtime/bearings.js +88 -71
- package/dist/core/runtime/broker-protocol.d.ts +31 -8
- package/dist/core/runtime/broker.d.ts +15 -1
- package/dist/core/runtime/broker.js +573 -141
- package/dist/core/runtime/canvas-extensions.d.ts +4 -5
- package/dist/core/runtime/canvas-extensions.js +5 -5
- package/dist/core/runtime/front-door.js +4 -4
- package/dist/core/runtime/headless-pi.d.ts +24 -0
- package/dist/core/runtime/headless-pi.js +152 -0
- package/dist/core/runtime/kickoff.d.ts +1 -5
- package/dist/core/runtime/kickoff.js +1 -5
- package/dist/core/runtime/model-registry.d.ts +3 -0
- package/dist/core/runtime/model-registry.js +13 -0
- package/dist/core/runtime/naming-persist.d.ts +4 -0
- package/dist/core/runtime/naming-persist.js +27 -1
- package/dist/core/runtime/naming.d.ts +17 -12
- package/dist/core/runtime/naming.js +91 -140
- package/dist/core/runtime/node-read.js +19 -10
- package/dist/core/runtime/nodes.d.ts +9 -14
- package/dist/core/runtime/nodes.js +3 -53
- package/dist/core/runtime/package-health.d.ts +6 -21
- package/dist/core/runtime/package-health.js +12 -123
- package/dist/core/runtime/placement-tmux.d.ts +2 -1
- package/dist/core/runtime/placement-tmux.js +6 -4
- package/dist/core/runtime/placement.d.ts +1 -0
- package/dist/core/runtime/placement.js +4 -8
- package/dist/core/runtime/promote.js +3 -0
- package/dist/core/runtime/recap.d.ts +2 -7
- package/dist/core/runtime/recap.js +35 -69
- package/dist/core/runtime/revive.js +34 -77
- package/dist/core/runtime/session-cycles.d.ts +4 -0
- package/dist/core/runtime/session-cycles.js +14 -1
- package/dist/core/runtime/session-visibility.d.ts +37 -0
- package/dist/core/runtime/session-visibility.js +83 -0
- package/dist/core/runtime/spawn.js +10 -22
- package/dist/core/runtime/stop-guard.d.ts +1 -1
- package/dist/core/runtime/stop-guard.js +18 -13
- package/dist/core/runtime/surface-bg.js +1 -1
- package/dist/core/runtime/tmux-chrome.d.ts +1 -1
- package/dist/core/runtime/tmux-chrome.js +1 -1
- package/dist/core/runtime/tmux.d.ts +35 -7
- package/dist/core/runtime/tmux.js +439 -62
- package/dist/core/runtime/tool-group-summary.d.ts +19 -0
- package/dist/core/runtime/tool-group-summary.js +88 -0
- package/dist/core/scope.d.ts +2 -7
- package/dist/core/scope.js +9 -35
- package/dist/core/substrate/schema.d.ts +2 -2
- package/dist/core/termrender/code-doc.d.ts +12 -0
- package/dist/core/termrender/code-doc.js +92 -0
- package/dist/core/termrender/display.d.ts +12 -0
- package/dist/core/termrender/display.js +19 -0
- package/dist/core/termrender/termrender.d.ts +73 -0
- package/dist/core/termrender/termrender.js +795 -0
- package/dist/core/termrender/version.d.ts +1 -0
- package/dist/core/termrender/version.js +1 -0
- package/dist/core/tui/terminal.js +1 -2
- package/dist/core/user-settings.d.ts +71 -3
- package/dist/core/user-settings.js +83 -1
- package/dist/daemon/api/__tests__/inbox.test.js +44 -133
- package/dist/daemon/api/handlers/human.d.ts +0 -10
- package/dist/daemon/api/handlers/human.js +104 -702
- package/dist/daemon/api/handlers/inbox.js +113 -142
- package/dist/daemon/api/handlers/review-comments.d.ts +2 -0
- package/dist/daemon/api/handlers/review-comments.js +500 -0
- package/dist/daemon/api/handlers/reviews.d.ts +2 -0
- package/dist/daemon/api/handlers/reviews.js +287 -0
- package/dist/daemon/api/map.d.ts +22 -7
- package/dist/daemon/api/map.js +159 -11
- package/dist/daemon/api/server.js +4 -0
- package/dist/daemon/cron-run.js +6 -9
- package/dist/daemon/crtrd.js +17 -33
- package/dist/daemon/fleet.d.ts +1 -8
- package/dist/daemon/fleet.js +4 -30
- package/dist/daemon/human/finish.d.ts +14 -0
- package/dist/daemon/human/finish.js +115 -0
- package/dist/daemon/human/sweep.d.ts +6 -0
- package/dist/daemon/human/sweep.js +49 -0
- package/dist/daemon/messaging/node-message.d.ts +18 -0
- package/dist/daemon/messaging/node-message.js +70 -0
- package/dist/daemon/review/comment-notify.d.ts +26 -0
- package/dist/daemon/review/comment-notify.js +107 -0
- package/dist/daemon/review/deliver.d.ts +7 -0
- package/dist/daemon/review/deliver.js +56 -0
- package/dist/daemon/review/finish.d.ts +22 -0
- package/dist/daemon/review/finish.js +254 -0
- package/dist/daemon/review/sweep.d.ts +11 -0
- package/dist/daemon/review/sweep.js +120 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -2
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +42 -64
- package/dist/pi-extensions/__tests__/canvas-recap.test.d.ts +1 -0
- package/dist/pi-extensions/__tests__/canvas-recap.test.js +159 -0
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +16 -38
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.d.ts +1 -0
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +63 -0
- package/dist/pi-extensions/canvas-context-intro.d.ts +8 -11
- package/dist/pi-extensions/canvas-context-intro.js +50 -104
- package/dist/pi-extensions/canvas-recap.d.ts +15 -2
- package/dist/pi-extensions/canvas-recap.js +192 -69
- package/dist/pi-extensions/canvas-review-boundary.d.ts +59 -0
- package/dist/pi-extensions/canvas-review-boundary.js +81 -0
- package/dist/pi-extensions/canvas-stophook.d.ts +3 -3
- package/dist/pi-extensions/canvas-stophook.js +78 -128
- package/dist/pi-extensions/canvas-structured-output.js +52 -8
- package/dist/shared/generated-context.d.ts +29 -4
- package/dist/shared/generated-context.js +122 -7
- package/dist/shared/tool-groups.d.ts +23 -0
- package/dist/shared/tool-groups.js +60 -0
- package/dist/shared/working-activity.d.ts +8 -0
- package/dist/shared/working-activity.js +26 -0
- package/dist/types.d.ts +36 -2
- package/dist/types.js +51 -0
- package/dist/web-client/assets/index-CCPaLeW7.css +2 -0
- package/dist/web-client/assets/index-kyOWsnZK.js +86 -0
- package/dist/web-client/index.html +2 -2
- package/dist/web-client/sw.js +1 -1
- package/docs/compat/hearth-crtr-v4.md +2 -2
- package/docs/compat/hearth-crtr-v5.md +4 -2
- package/docs/public-api.md +3 -3
- package/package.json +21 -14
- package/runtime.lock.json +4661 -1453
- package/scripts/postinstall.mjs +15 -2
- package/dist/builtin-pi-packages/pi-mode-switch/README.md +0 -36
- package/dist/builtin-pi-packages/pi-mode-switch/bin/mode +0 -36
- package/dist/builtin-pi-packages/pi-mode-switch/extensions/index.ts +0 -449
- package/dist/builtin-pi-packages/pi-mode-switch/package.json +0 -14
- package/dist/builtin-pi-packages/pi-mode-switch/tsconfig.json +0 -9
- package/dist/builtin-views/_lib/states.mjs +0 -161
- package/dist/builtin-views/canvas/core.mjs +0 -657
- package/dist/builtin-views/canvas/text.mjs +0 -58
- package/dist/builtin-views/canvas/tui.mjs +0 -168
- package/dist/builtin-views/canvas/web.jsx +0 -121
- package/dist/builtin-views/chat/core.mjs +0 -684
- package/dist/builtin-views/chat/text.mjs +0 -101
- package/dist/builtin-views/chat/tui.mjs +0 -360
- package/dist/builtin-views/chat/web.jsx +0 -362
- package/dist/builtin-views/git-pr/core.mjs +0 -673
- package/dist/builtin-views/git-pr/text.mjs +0 -84
- package/dist/builtin-views/git-pr/tui.mjs +0 -301
- package/dist/builtin-views/git-pr/web.jsx +0 -216
- package/dist/builtin-views/inbox/_lib/render.mjs +0 -175
- package/dist/builtin-views/inbox/core.mjs +0 -1273
- package/dist/builtin-views/inbox/text.mjs +0 -73
- package/dist/builtin-views/inbox/tui.mjs +0 -314
- package/dist/builtin-views/inbox/web.jsx +0 -188
- package/dist/builtin-views/linkedin/core.mjs +0 -906
- package/dist/builtin-views/linkedin/text.mjs +0 -69
- package/dist/builtin-views/linkedin/tui.mjs +0 -413
- package/dist/builtin-views/linkedin/web.jsx +0 -206
- package/dist/builtin-views/prompt-review/core.mjs +0 -735
- package/dist/builtin-views/prompt-review/text.mjs +0 -15
- package/dist/builtin-views/prompt-review/tui.mjs +0 -196
- package/dist/builtin-views/prompt-review/web.jsx +0 -484
- package/dist/builtin-views/workspace-sidebar/__tests__/core.test.js +0 -50
- package/dist/builtin-views/workspace-sidebar/__tests__/core.test.ts +0 -53
- package/dist/builtin-views/workspace-sidebar/core.mjs +0 -670
- package/dist/builtin-views/workspace-sidebar/text.mjs +0 -53
- package/dist/builtin-views/workspace-sidebar/tui.mjs +0 -141
- package/dist/builtin-views/workspace-sidebar/web.jsx +0 -109
- package/dist/clients/attach/session/mode.d.ts +0 -25
- package/dist/clients/attach/session/mode.js +0 -97
- package/dist/commands/sys/promptstudio.d.ts +0 -2
- package/dist/commands/sys/promptstudio.js +0 -65
- package/dist/commands/view-cycle.d.ts +0 -2
- package/dist/commands/view-cycle.js +0 -130
- package/dist/commands/view-list.d.ts +0 -2
- package/dist/commands/view-list.js +0 -66
- package/dist/commands/view-new.d.ts +0 -2
- package/dist/commands/view-new.js +0 -74
- package/dist/commands/view-pick.d.ts +0 -6
- package/dist/commands/view-pick.js +0 -129
- package/dist/commands/view-run.d.ts +0 -2
- package/dist/commands/view-run.js +0 -214
- package/dist/commands/view.d.ts +0 -2
- package/dist/commands/view.js +0 -31
- package/dist/commands/workspace.d.ts +0 -2
- package/dist/commands/workspace.js +0 -165
- package/dist/core/__tests__/chat-view-reconnect.test.js +0 -105
- package/dist/core/__tests__/full/consult-startup-failure.test.js +0 -124
- package/dist/core/canvas/__tests__/human-work-outbox.test.js +0 -123
- package/dist/core/canvas/human-work-outbox.d.ts +0 -73
- package/dist/core/canvas/human-work-outbox.js +0 -261
- package/dist/core/command-plugins/store.d.ts +0 -16
- package/dist/core/command-plugins/store.js +0 -64
- package/dist/core/keybindings/__tests__/bespoke-consumers.test.js +0 -40
- package/dist/core/runtime/fault-recovery-nudge.d.ts +0 -3
- package/dist/core/runtime/fault-recovery-nudge.js +0 -3
- package/dist/core/tui/__tests__/host-keybindings.test.js +0 -113
- package/dist/core/tui/host.d.ts +0 -66
- package/dist/core/view/__tests__/transport-cache.test.js +0 -62
- package/dist/core/view/bridge.d.ts +0 -10
- package/dist/core/view/bridge.js +0 -31
- package/dist/core/view/chrome.d.ts +0 -9
- package/dist/core/view/chrome.js +0 -22
- package/dist/core/view/contract.d.ts +0 -205
- package/dist/core/view/contract.js +0 -23
- package/dist/core/view/loader.d.ts +0 -31
- package/dist/core/view/loader.js +0 -188
- package/dist/core/view/stream-local.d.ts +0 -3
- package/dist/core/view/stream-local.js +0 -231
- package/dist/core/view/transport-cache.d.ts +0 -8
- package/dist/core/view/transport-cache.js +0 -38
- package/dist/core/view/transport-local.d.ts +0 -7
- package/dist/core/view/transport-local.js +0 -83
- package/dist/core/view/transport-remote.d.ts +0 -2
- package/dist/core/view/transport.d.ts +0 -10
- package/dist/core/view/transport.js +0 -15
- package/dist/pi-extensions/naming-tool.d.ts +0 -24
- package/dist/pi-extensions/naming-tool.js +0 -67
- package/dist/prompts/view.d.ts +0 -7
- package/dist/prompts/view.js +0 -172
- package/dist/web/ViewChrome.d.ts +0 -7
- package/dist/web/ViewChrome.js +0 -28
- package/dist/web/ViewPane.d.ts +0 -39
- package/dist/web/ViewPane.js +0 -48
- package/dist/web/index.d.ts +0 -8
- package/dist/web/index.js +0 -22
- package/dist/web/runtime.d.ts +0 -39
- package/dist/web/runtime.js +0 -232
- package/dist/web/states.d.ts +0 -24
- package/dist/web/states.js +0 -24
- package/dist/web/transport-http.d.ts +0 -5
- package/dist/web/transport-http.js +0 -34
- package/dist/web/transport-stream.d.ts +0 -3
- package/dist/web/transport-stream.js +0 -204
- package/dist/web-client/assets/index-U_NZ66VE.js +0 -79
- package/dist/web-client/assets/index-aaeu4adv.css +0 -2
- /package/dist/{builtin-views/workspace-sidebar/__tests__/core.test.d.ts → clients/attach/__tests__/file-review-focus.test.d.ts} +0 -0
- /package/dist/clients/attach/__tests__/{visible-paths.test.d.ts → group-activity.test.d.ts} +0 -0
- /package/dist/{core/__tests__/chat-view-reconnect.test.d.ts → clients/attach/__tests__/input-controller-extension-command.test.d.ts} +0 -0
- /package/dist/{core/__tests__/full/consult-startup-failure.test.d.ts → clients/attach/__tests__/session-identity-refresh.test.d.ts} +0 -0
- /package/dist/{core/canvas/__tests__/human-work-outbox.test.d.ts → clients/inbox/__tests__/inbox-controller.test.d.ts} +0 -0
- /package/dist/{core/keybindings/__tests__/bespoke-consumers.test.d.ts → clients/inbox/__tests__/mount-panel.test.d.ts} +0 -0
- /package/dist/{core/tui/__tests__/host-keybindings.test.d.ts → clients/inbox/review/__tests__/editor-roundtrip.test.d.ts} +0 -0
- /package/dist/{core/view/__tests__/transport-cache.test.d.ts → clients/inbox/review/__tests__/remap.test.d.ts} +0 -0
- /package/dist/{core/view/__tests__/transport-remote.test.d.ts → clients/inbox/review/__tests__/review-core.test.d.ts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isDeepStrictEqual } from 'node:util';
|
|
2
2
|
import { BINDING_CATALOG, BINDING_IDS, SAFETY_REQUIREMENTS } from './catalog.js';
|
|
3
|
-
import { readRawScopeConfig } from '../config.js';
|
|
3
|
+
import { normalizeTmuxPassthrough, readRawScopeConfig } from '../config.js';
|
|
4
4
|
const MODIFIER_ORDER = ['ctrl', 'alt', 'shift'];
|
|
5
5
|
const INPUT_MODIFIERS = new Set(['ctrl', 'alt', 'shift', 'meta']);
|
|
6
6
|
const NAMED_KEYS = new Set([
|
|
@@ -312,9 +312,16 @@ export function resolveKeybindings(rawOverrides = undefined) {
|
|
|
312
312
|
};
|
|
313
313
|
return Object.freeze(result);
|
|
314
314
|
}
|
|
315
|
-
|
|
315
|
+
/** Resolve keybindings and tmux passthrough from one immutable user-config snapshot. */
|
|
316
|
+
export function resolveUserKeybindingSettings() {
|
|
316
317
|
const raw = readRawScopeConfig('user');
|
|
317
|
-
return
|
|
318
|
+
return Object.freeze({
|
|
319
|
+
bindings: resolveKeybindings(raw?.keybindings),
|
|
320
|
+
tmuxPassthrough: Object.freeze(normalizeTmuxPassthrough(raw?.tmux_passthrough)),
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
export function resolveUserKeybindings() {
|
|
324
|
+
return resolveUserKeybindingSettings().bindings;
|
|
318
325
|
}
|
|
319
326
|
export function normalizeSparseOverrides(rawOverrides) {
|
|
320
327
|
const resolved = resolveKeybindings(rawOverrides);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// inline-ref-grammar.ts — the single source of truth for the inline
|
|
2
2
|
// memory-reference token grammar (spec §4.1). Zero imports, pure string ops,
|
|
3
|
-
// browser-safe: the broker,
|
|
4
|
-
//
|
|
5
|
-
// `src/web/index.ts`) rather than each re-implementing `[A-Za-z0-9_:-]`,
|
|
3
|
+
// browser-safe: the broker, terminal attach viewer, and web composer all import
|
|
4
|
+
// this module directly rather than each re-implementing `[A-Za-z0-9_:-]`,
|
|
6
5
|
// trimming, boundary detection, or `:` decoding. Divergence between the
|
|
7
6
|
// viewer's highlight rule and the broker's resolution rule would let a
|
|
8
7
|
// highlighted token yield no guidance (or vice versa) — see the spec and
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { type InstalledPlugin, type Scope } from '../types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Thin memory-document resolver for the document substrate.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
3
|
+
* Thin memory-document resolver for the document substrate. Resolution has
|
|
4
|
+
* two passes. First, scopes/sources are tried NEAREST-FIRST (node > project
|
|
5
|
+
* stack nearest > ... > profile > user > builtin) for strong matches: (1) exact
|
|
6
|
+
* substrate identity (`doc.name === query` — the explicit frontmatter `name`,
|
|
7
|
+
* or its path-derived fallback), then (2) direct `memory/<name>.md` physical
|
|
8
|
+
* path (plus the bare-dir/bare-plugin-name → `INDEX.md` convenience neither
|
|
9
|
+
* identity nor a literal path expresses). Only when no source has a strong
|
|
10
|
+
* match does a second nearest-first pass try bare leaf-name fallback (final
|
|
11
|
+
* path segment only). Thus scope precedence resolves competing strong matches,
|
|
12
|
+
* while a nearer nested doc's coincidental leaf can never shadow a farther
|
|
13
|
+
* canonical identity. It returns the raw parsed frontmatter + body;
|
|
14
14
|
* it does NOT interpret the schema, kind, gate, or rungs — that is the
|
|
15
15
|
* schema/gate layer's job (callers filter by `frontmatter.kind`). Project
|
|
16
16
|
* resolution is a nearest-first stack of every ancestor `.crouter/` (widened by
|
|
@@ -40,8 +40,8 @@ export interface MemoryDoc {
|
|
|
40
40
|
/** The memory-only scope union: the global `Scope` (`user|project|builtin`)
|
|
41
41
|
* plus `profile` and `node`. Confined to the memory resolver/list/read/write/
|
|
42
42
|
* render paths — deliberately NOT folded into the global `Scope` union, because
|
|
43
|
-
* that would leak these into config, plugin, marketplace,
|
|
44
|
-
*
|
|
43
|
+
* that would leak these into config, plugin, marketplace, and sys-config
|
|
44
|
+
* surfaces the spec does not extend. `node` is the this-node store
|
|
45
45
|
* (`nodes/<id>/context/memory/`), available only inside a running node
|
|
46
46
|
* (`CRTR_NODE_ID`), and it is the NEAREST scope — a node doc overrides a
|
|
47
47
|
* same-named doc at any wider scope. */
|
|
@@ -90,22 +90,20 @@ export declare function listAllMemoryDocs(scope?: MemoryScope, quiet?: boolean):
|
|
|
90
90
|
* `<name>` may carry topical subdirs (`taste/foo`); a bare leaf (`foo`) falls
|
|
91
91
|
* back to a last-segment match within the resolved scopes.
|
|
92
92
|
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
93
|
+
* Strong matches resolve before fallback matches. The first pass visits every
|
|
94
|
+
* source nearest-first and checks, within each source: (1) exact substrate
|
|
95
|
+
* identity (`doc.name === query` — the explicit frontmatter `name`, else its
|
|
96
|
+
* normalized path-derived fallback, the SAME identity `listAllMemoryDocs`
|
|
97
|
+
* reports); then (2) direct `memory/<name>.md` physical-path lookup (the
|
|
98
|
+
* bare-dir → INDEX.md and bare-plugin-name → plugin root INDEX.md conveniences
|
|
99
|
+
* neither identity nor a literal path expresses). Only if that pass finds
|
|
100
|
+
* nothing does a second nearest-first pass try bare leaf-name fallback (final
|
|
101
|
+
* path segment), ambiguous when two DIFFERENT identities in the SAME source
|
|
102
|
+
* share a leaf. A farther canonical identity therefore beats a nearer leaf,
|
|
103
|
+
* while scope precedence still decides between equally strong matches.
|
|
103
104
|
*
|
|
104
|
-
* `opts.kind`, when given, is a resolution CONSTRAINT, not a post-filter:
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
* no longer shadows a farther source's matching-kind doc — resolution simply
|
|
108
|
-
* keeps walking outward. A source only counts as having "an answer" once a
|
|
109
|
-
* kind-matching candidate is found.
|
|
105
|
+
* `opts.kind`, when given, is a resolution CONSTRAINT, not a post-filter: in
|
|
106
|
+
* both passes a candidate whose `effectiveDocKind` doesn't match is skipped,
|
|
107
|
+
* so resolution keeps looking for a matching-kind document.
|
|
110
108
|
*/
|
|
111
109
|
export declare function resolveMemoryDoc(rawName: string, opts?: MemoryResolutionOpts): MemoryDoc;
|
|
@@ -365,23 +365,21 @@ function formatLeafAmbiguous(leaf, matches) {
|
|
|
365
365
|
* `<name>` may carry topical subdirs (`taste/foo`); a bare leaf (`foo`) falls
|
|
366
366
|
* back to a last-segment match within the resolved scopes.
|
|
367
367
|
*
|
|
368
|
-
*
|
|
369
|
-
*
|
|
370
|
-
*
|
|
371
|
-
*
|
|
372
|
-
*
|
|
373
|
-
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
376
|
-
*
|
|
377
|
-
*
|
|
368
|
+
* Strong matches resolve before fallback matches. The first pass visits every
|
|
369
|
+
* source nearest-first and checks, within each source: (1) exact substrate
|
|
370
|
+
* identity (`doc.name === query` — the explicit frontmatter `name`, else its
|
|
371
|
+
* normalized path-derived fallback, the SAME identity `listAllMemoryDocs`
|
|
372
|
+
* reports); then (2) direct `memory/<name>.md` physical-path lookup (the
|
|
373
|
+
* bare-dir → INDEX.md and bare-plugin-name → plugin root INDEX.md conveniences
|
|
374
|
+
* neither identity nor a literal path expresses). Only if that pass finds
|
|
375
|
+
* nothing does a second nearest-first pass try bare leaf-name fallback (final
|
|
376
|
+
* path segment), ambiguous when two DIFFERENT identities in the SAME source
|
|
377
|
+
* share a leaf. A farther canonical identity therefore beats a nearer leaf,
|
|
378
|
+
* while scope precedence still decides between equally strong matches.
|
|
378
379
|
*
|
|
379
|
-
* `opts.kind`, when given, is a resolution CONSTRAINT, not a post-filter:
|
|
380
|
-
*
|
|
381
|
-
*
|
|
382
|
-
* no longer shadows a farther source's matching-kind doc — resolution simply
|
|
383
|
-
* keeps walking outward. A source only counts as having "an answer" once a
|
|
384
|
-
* kind-matching candidate is found.
|
|
380
|
+
* `opts.kind`, when given, is a resolution CONSTRAINT, not a post-filter: in
|
|
381
|
+
* both passes a candidate whose `effectiveDocKind` doesn't match is skipped,
|
|
382
|
+
* so resolution keeps looking for a matching-kind document.
|
|
385
383
|
*/
|
|
386
384
|
export function resolveMemoryDoc(rawName, opts = {}) {
|
|
387
385
|
const parsed = parseSkillQualifier(rawName);
|
|
@@ -394,36 +392,44 @@ export function resolveMemoryDoc(rawName, opts = {}) {
|
|
|
394
392
|
throw usage(`memory document name required`);
|
|
395
393
|
const segments = name.split('/');
|
|
396
394
|
const isLeafQuery = !name.includes('/');
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
395
|
+
// Quiet: a targeted read must not spew other docs' frontmatter warnings
|
|
396
|
+
// before its own result (esp. a not_found) — corpus health is `lint`'s job.
|
|
397
|
+
const sources = memorySourcesInPrecedence(effectiveScope).map((source) => ({
|
|
398
|
+
source,
|
|
399
|
+
docs: sourceMemoryDocs(source, true),
|
|
400
|
+
}));
|
|
401
|
+
const kindOk = (d) => opts.kind === undefined || effectiveDocKind(d) === opts.kind;
|
|
402
|
+
// Strong matches across the full scope stack come first. This preserves
|
|
403
|
+
// nearest-scope shadowing for canonical/direct collisions without allowing a
|
|
404
|
+
// nested plugin template's leaf to hide a user doc whose full identity is the
|
|
405
|
+
// query.
|
|
406
|
+
for (const { source, docs } of sources) {
|
|
402
407
|
const identity = docs.find((d) => d.name === name);
|
|
403
408
|
if (identity && kindOk(identity))
|
|
404
409
|
return identity;
|
|
405
410
|
const direct = findMemoryMatchInSource(name, segments, source);
|
|
406
411
|
if (direct && kindOk(direct))
|
|
407
412
|
return direct;
|
|
408
|
-
|
|
413
|
+
}
|
|
414
|
+
if (isLeafQuery) {
|
|
415
|
+
for (const { docs } of sources) {
|
|
409
416
|
const leafMatches = docs.filter((d) => (d.name.split('/').pop() ?? d.name) === name && kindOk(d));
|
|
410
|
-
if (leafMatches.length
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
}
|
|
417
|
+
if (leafMatches.length === 0)
|
|
418
|
+
continue;
|
|
419
|
+
// Same path-derived name within this source → precedence wins (return
|
|
420
|
+
// first); genuinely different docs sharing a leaf → ambiguous.
|
|
421
|
+
const distinctNames = new Set(leafMatches.map((d) => d.name));
|
|
422
|
+
if (distinctNames.size === 1)
|
|
423
|
+
return leafMatches[0];
|
|
424
|
+
throw ambiguous(formatLeafAmbiguous(name, leafMatches), {
|
|
425
|
+
memory: name,
|
|
426
|
+
candidates: leafMatches.map((d) => ({
|
|
427
|
+
id: memoryDocId(d),
|
|
428
|
+
scope: d.scope,
|
|
429
|
+
path: d.path,
|
|
430
|
+
})),
|
|
431
|
+
next: 'Multiple documents share this leaf name. Re-run with one of the full names in candidates.',
|
|
432
|
+
});
|
|
427
433
|
}
|
|
428
434
|
}
|
|
429
435
|
throw notFound(`memory document not found: ${rawName}`, {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ModelStrength } from '../types.js';
|
|
2
|
+
import { type ProviderCandidate, type ProviderCandidateRejection } from './subscription-state.js';
|
|
2
3
|
export type ModelRequest = {
|
|
3
4
|
kind: 'logical';
|
|
4
5
|
family: string;
|
|
@@ -30,8 +31,40 @@ export interface ModelRegistryLike {
|
|
|
30
31
|
find(providerId: string, modelId: string): unknown;
|
|
31
32
|
hasConfiguredAuth(model: unknown): boolean;
|
|
32
33
|
}
|
|
34
|
+
export interface InitialModelRegistryLike<Model extends {
|
|
35
|
+
provider: string;
|
|
36
|
+
id: string;
|
|
37
|
+
}> {
|
|
38
|
+
find(providerId: string, modelId: string): Model | undefined;
|
|
39
|
+
getAll(): Model[];
|
|
40
|
+
hasConfiguredAuth(model: Model): boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface InitialModelRouteSelection<Model extends {
|
|
43
|
+
provider: string;
|
|
44
|
+
id: string;
|
|
45
|
+
}> {
|
|
46
|
+
selected?: {
|
|
47
|
+
model: Model;
|
|
48
|
+
candidate: ProviderCandidate;
|
|
49
|
+
};
|
|
50
|
+
rejected: Array<{
|
|
51
|
+
candidate: ProviderCandidate;
|
|
52
|
+
reason: ProviderCandidateRejection;
|
|
53
|
+
}>;
|
|
54
|
+
}
|
|
33
55
|
/** Expand config-derived route order only. Availability never affects rank. */
|
|
34
56
|
export declare function expandModelCandidates(request: ModelRequest, cwd?: string, profileId?: string | null): RoutedCandidate[];
|
|
35
57
|
/** Probe the common availability facts consumed unchanged by resolveProviderCandidates. */
|
|
36
58
|
export declare function probeRouteAvailability(candidate: RoutedCandidate, registry: ModelRegistryLike, now?: number): RouteAvailability;
|
|
59
|
+
/** Select the first viable route for a new SDK session. Route declarations own
|
|
60
|
+
* preference order; logical requests append registered models not declared by a
|
|
61
|
+
* route. The caller owns broker faults/events and the no-viable outcome. */
|
|
62
|
+
export declare function selectInitialModelRoute<Model extends {
|
|
63
|
+
provider: string;
|
|
64
|
+
id: string;
|
|
65
|
+
}>(request: ModelRequest, registry: InitialModelRegistryLike<Model>, options?: {
|
|
66
|
+
cwd?: string;
|
|
67
|
+
profileId?: string | null;
|
|
68
|
+
now?: number;
|
|
69
|
+
}): InitialModelRouteSelection<Model>;
|
|
37
70
|
export declare function modelRequestFromConfig(model: string | undefined, modelIntent: string | undefined, exact: boolean): ModelRequest | undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readMergedLaunchConfig } from './config.js';
|
|
2
|
-
import { isManagedProvider, readRotationConfig, readSubscriptionPool } from './subscription-state.js';
|
|
2
|
+
import { isManagedProvider, readRotationConfig, readSubscriptionPool, resolveProviderCandidates, } from './subscription-state.js';
|
|
3
3
|
const STRENGTHS = ['ultra', 'strong', 'medium', 'light'];
|
|
4
4
|
const THINKING_SUFFIXES = new Set(['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max']);
|
|
5
5
|
function parseSpec(spec) {
|
|
@@ -55,8 +55,8 @@ export function expandModelCandidates(request, cwd, profileId) {
|
|
|
55
55
|
const requestedStrength = logical?.strength ?? (() => {
|
|
56
56
|
if (!concrete)
|
|
57
57
|
return 'strong';
|
|
58
|
-
//
|
|
59
|
-
//
|
|
58
|
+
// Preserve a precise thinking-level match, then map a drifting or omitted
|
|
59
|
+
// suffix to the weakest same-model cell.
|
|
60
60
|
for (const exactThinking of [true, false]) {
|
|
61
61
|
for (const strength of exactThinking ? STRENGTHS : [...STRENGTHS].reverse()) {
|
|
62
62
|
if (routeEntries.some(([, route]) => {
|
|
@@ -125,6 +125,45 @@ export function probeRouteAvailability(candidate, registry, now = Date.now()) {
|
|
|
125
125
|
...(cooling ? { coolingUntil: Math.min(...pool.map((entry) => entry.rateLimitedUntil || 0)) } : {}),
|
|
126
126
|
};
|
|
127
127
|
}
|
|
128
|
+
/** Select the first viable route for a new SDK session. Route declarations own
|
|
129
|
+
* preference order; logical requests append registered models not declared by a
|
|
130
|
+
* route. The caller owns broker faults/events and the no-viable outcome. */
|
|
131
|
+
export function selectInitialModelRoute(request, registry, options = {}) {
|
|
132
|
+
const routes = expandModelCandidates(request, options.cwd, options.profileId);
|
|
133
|
+
const routeKeys = new Set(routes.map((candidate) => `${candidate.providerId}/${candidate.modelId}`));
|
|
134
|
+
const tail = request.kind === 'logical'
|
|
135
|
+
? registry.getAll()
|
|
136
|
+
.filter((model) => !routeKeys.has(`${model.provider}/${model.id}`))
|
|
137
|
+
.map((model, index) => ({
|
|
138
|
+
routeId: `registry:${model.provider}/${model.id}`,
|
|
139
|
+
credentialSource: 'registry',
|
|
140
|
+
family: model.provider,
|
|
141
|
+
strength: 'strong',
|
|
142
|
+
providerId: model.provider,
|
|
143
|
+
modelId: model.id,
|
|
144
|
+
rank: routes.length + index,
|
|
145
|
+
}))
|
|
146
|
+
: [];
|
|
147
|
+
const candidates = [...routes, ...tail];
|
|
148
|
+
const now = options.now ?? Date.now();
|
|
149
|
+
const hasManagedAuthenticated = candidates.some((candidate) => {
|
|
150
|
+
const availability = probeRouteAvailability(candidate, registry, now);
|
|
151
|
+
return isManagedProvider(candidate.providerId) && availability.registered && availability.authenticated;
|
|
152
|
+
});
|
|
153
|
+
const selection = resolveProviderCandidates(candidates.map((candidate) => ({
|
|
154
|
+
...candidate,
|
|
155
|
+
...probeRouteAvailability(candidate, registry, now),
|
|
156
|
+
automaticFallback: candidate.routeId.startsWith('registry:')
|
|
157
|
+
? (isManagedProvider(candidate.providerId) || !hasManagedAuthenticated)
|
|
158
|
+
: true,
|
|
159
|
+
})), now, { pinnedToFirst: request.kind === 'exact' });
|
|
160
|
+
const candidate = selection.candidates[0];
|
|
161
|
+
const model = candidate === undefined ? undefined : registry.find(candidate.providerId, candidate.modelId);
|
|
162
|
+
return {
|
|
163
|
+
...(candidate !== undefined && model !== undefined ? { selected: { model, candidate } } : {}),
|
|
164
|
+
rejected: selection.rejected,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
128
167
|
export function modelRequestFromConfig(model, modelIntent, exact) {
|
|
129
168
|
if (!model)
|
|
130
169
|
return undefined;
|
|
@@ -156,12 +156,7 @@ const LEAF_ICON_CP = {
|
|
|
156
156
|
'search web': 0xf0ac,
|
|
157
157
|
'search answer': 0xf075,
|
|
158
158
|
'search contents': 0xf0f6,
|
|
159
|
-
'surface view list': 0xf03a,
|
|
160
|
-
'surface view run': 0xf04b,
|
|
161
|
-
'surface view cycle': 0xf021,
|
|
162
|
-
'surface view new': 0xf067,
|
|
163
159
|
'surface attach to': 0xf1e6,
|
|
164
|
-
'surface workspace enter': 0xf120,
|
|
165
160
|
'surface web serve': 0xf0ac,
|
|
166
161
|
'sys config get': 0xf019,
|
|
167
162
|
'sys config set': 0xf040,
|
|
@@ -170,7 +165,6 @@ const LEAF_ICON_CP = {
|
|
|
170
165
|
'sys doctor': 0xf0f1,
|
|
171
166
|
'sys sysprompt': 0xf15c,
|
|
172
167
|
'sys prompt-review': 0xf002,
|
|
173
|
-
'sys promptstudio': 0xf008,
|
|
174
168
|
'sys feedback': 0xf075,
|
|
175
169
|
'sys update': 0xf021,
|
|
176
170
|
'sys version': 0xf02b,
|
|
@@ -1326,22 +1320,23 @@ function summarizeHumanAsk(text, tokens) {
|
|
|
1326
1320
|
}
|
|
1327
1321
|
return lines;
|
|
1328
1322
|
}
|
|
1329
|
-
/** `crtr human review` (
|
|
1330
|
-
* returns `{job_id, dir, output,
|
|
1331
|
-
*
|
|
1332
|
-
* road-sign
|
|
1333
|
-
*
|
|
1334
|
-
*
|
|
1335
|
-
* when
|
|
1336
|
-
function
|
|
1337
|
-
const jobId =
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1323
|
+
/** `crtr human review new` (humanReviewNew.run,
|
|
1324
|
+
* src/commands/human/review.ts) returns `{job_id, dir, output, review_id,
|
|
1325
|
+
* follow_up}`. A ticket bridge id plus the daemon-owned review id and the
|
|
1326
|
+
* stable live-review road-sign distinguish this canonical result from an
|
|
1327
|
+
* error or another review leaf. The reviewed file is recovered from argv:
|
|
1328
|
+
* it is the positional after `human review new`, skipping the two value
|
|
1329
|
+
* flags. Returns null when that canonical result shape is absent. */
|
|
1330
|
+
function summarizeHumanReviewNew(text, tokens) {
|
|
1331
|
+
const jobId = readFieldFlexible(text, 'job_id');
|
|
1332
|
+
const reviewId = readFieldFlexible(text, 'review_id');
|
|
1333
|
+
if (jobId === undefined || reviewId === undefined)
|
|
1334
|
+
return null;
|
|
1335
|
+
if (!text.includes('The review is live for the person in the attach viewer with its companion agent.'))
|
|
1336
|
+
return null;
|
|
1337
|
+
const file = firstPositionalArg(tokens, 3, new Set(['--output', '--subtitle']));
|
|
1343
1338
|
const label = file !== undefined ? `review posted: ${basename(file)}` : 'review posted';
|
|
1344
|
-
return [{ text: `${label} →
|
|
1339
|
+
return [{ text: `${label} → live with companion`, tone: 'accent' }];
|
|
1345
1340
|
}
|
|
1346
1341
|
/** `crtr human list` (humanList.run, src/commands/human/queue.ts:283) has no
|
|
1347
1342
|
* custom `render`; the generic renderer bullets `- total: N` then an
|
|
@@ -2647,38 +2642,6 @@ function summarizeSysSupportSubmit(text) {
|
|
|
2647
2642
|
{ text: url, tone: 'muted' },
|
|
2648
2643
|
];
|
|
2649
2644
|
}
|
|
2650
|
-
const SURFACE_VIEW_LIST_ID_CAP = 8;
|
|
2651
|
-
/** `crtr surface view list` (viewListLeaf.render, src/commands/view-list.ts:
|
|
2652
|
-
* 59) has a custom render, NOT the generic renderResult: one padded plain
|
|
2653
|
-
* line per view, `<id padded> <title padded> [<scope>]<optional
|
|
2654
|
-
* desc/error>` (verified live, 2026-07-01) — no GFM table markup at all, so
|
|
2655
|
-
* this file's shared parseTableRows/splitTableRow helpers don't apply.
|
|
2656
|
-
* Real ids/titles never contain a run of 2+ spaces, so each real field
|
|
2657
|
-
* boundary (the column padding plus the literal ` ` separator together
|
|
2658
|
-
* always total 2+ spaces) is recoverable by anchoring on the `[scope]`
|
|
2659
|
-
* bracket. Returns null when the roster is empty (`No views found…`, a
|
|
2660
|
-
* single plain line the generic path already renders fine) or any line
|
|
2661
|
-
* fails to match this row shape — including the pi truncation marker,
|
|
2662
|
-
* which never contains a `[scope]` bracket or a 2+-space run. */
|
|
2663
|
-
function summarizeSurfaceViewList(text) {
|
|
2664
|
-
const lines = text.split('\n').filter((l) => l.trim() !== '');
|
|
2665
|
-
if (lines.length === 0)
|
|
2666
|
-
return null;
|
|
2667
|
-
const ids = [];
|
|
2668
|
-
for (const line of lines) {
|
|
2669
|
-
const m = /^(\S+)\s{2,}.+?\s{2,}\[\w[\w-]*\](?:\s{2,}.*)?$/.exec(line);
|
|
2670
|
-
if (m === null)
|
|
2671
|
-
return null;
|
|
2672
|
-
ids.push(m[1]);
|
|
2673
|
-
}
|
|
2674
|
-
const shown = ids.slice(0, SURFACE_VIEW_LIST_ID_CAP);
|
|
2675
|
-
const remaining = ids.length - shown.length;
|
|
2676
|
-
const idsLine = remaining > 0 ? `${shown.join(', ')}, … ${remaining} more` : shown.join(', ');
|
|
2677
|
-
return [
|
|
2678
|
-
{ text: `${ids.length} views` },
|
|
2679
|
-
{ text: idsLine, tone: 'muted' },
|
|
2680
|
-
];
|
|
2681
|
-
}
|
|
2682
2645
|
/** Focus is the high-frequency generic surface result. The target is an argv
|
|
2683
2646
|
* asset because the result does not echo it; all three booleans are required
|
|
2684
2647
|
* so a partial/error result never becomes a false success receipt. */
|
|
@@ -2746,7 +2709,7 @@ const SUMMARIZERS = [
|
|
|
2746
2709
|
{ path: 'push urgent', run: summarizePushUrgent },
|
|
2747
2710
|
{ path: 'push final', run: summarizePushFinal },
|
|
2748
2711
|
{ path: 'human ask', run: summarizeHumanAsk },
|
|
2749
|
-
{ path: 'human review', run:
|
|
2712
|
+
{ path: 'human review new', run: summarizeHumanReviewNew },
|
|
2750
2713
|
{ path: 'human list', run: summarizeHumanList },
|
|
2751
2714
|
{ path: 'human deck', run: summarizeHumanDeck },
|
|
2752
2715
|
{ path: 'human notify', run: summarizeHumanNotify },
|
|
@@ -2798,7 +2761,6 @@ const SUMMARIZERS = [
|
|
|
2798
2761
|
{ path: 'sys logs', run: summarizeSysLogs },
|
|
2799
2762
|
{ path: 'sys support prepare', run: summarizeSysSupportPrepare },
|
|
2800
2763
|
{ path: 'sys support submit', run: summarizeSysSupportSubmit },
|
|
2801
|
-
{ path: 'surface view list', run: summarizeSurfaceViewList },
|
|
2802
2764
|
{ path: 'surface node focus', run: summarizeSurfaceNodeFocus },
|
|
2803
2765
|
{ path: 'surface edit', run: summarizeSurfaceEdit },
|
|
2804
2766
|
];
|
|
@@ -297,9 +297,9 @@ function rootProfileMessage(cwd) {
|
|
|
297
297
|
* the session IS interactive. Ask on the controlling terminal — create a
|
|
298
298
|
* profile pointing at cwd, or proceed as root — and block until answered.
|
|
299
299
|
* Deliberately a minimal `readline` prompt, not `crtr human ask`: that bridge
|
|
300
|
-
* is asynchronous (registers an interaction
|
|
301
|
-
* human to answer it from a separate inbox) and cannot gate pi's boot;
|
|
302
|
-
*
|
|
300
|
+
* is asynchronous (registers an interaction in the ticket store, then waits for
|
|
301
|
+
* the human to answer it from a separate inbox) and cannot gate pi's boot; those
|
|
302
|
+
* entry points (`human ask`/`review`) are built for a queued,
|
|
303
303
|
* asynchronously-answered interaction, not a two-choice gate on the same TTY pi
|
|
304
304
|
* is about to take over — a raw `readline` question is the actual minimal
|
|
305
305
|
* fit here. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Scope, RemoteCanvasTarget } from '
|
|
2
|
-
import type { RelayTarget } from '
|
|
1
|
+
import type { Scope, RemoteCanvasTarget } from '../types.js';
|
|
2
|
+
import type { RelayTarget } from './broker-client/index.js';
|
|
3
3
|
export declare function getRemoteCanvasTarget(name: string, scope?: Scope): RemoteCanvasTarget | undefined;
|
|
4
4
|
export declare function resolveRemoteCanvasTarget(name: string, scope?: Scope): RelayTarget;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// remote-
|
|
1
|
+
// remote-target.ts — resolves a named `remoteCanvas.targets.<name>`
|
|
2
2
|
// config entry (see `RemoteCanvasTarget`, `src/types.ts`) into a `RelayTarget`
|
|
3
3
|
// ready for `RelayTransport` (`src/core/broker-client/transport-relay.ts`).
|
|
4
4
|
//
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
// resolved here at connect time via `getRelayToken`. Targets are registered
|
|
8
8
|
// and the token stored via `crtr canvas config add` (`--relay-token -` reads
|
|
9
9
|
// it from stdin, the preferred form to keep it out of shell history).
|
|
10
|
-
import { usage } from '
|
|
11
|
-
import { readConfig } from '
|
|
12
|
-
import { getRelayToken } from '
|
|
10
|
+
import { usage } from './errors.js';
|
|
11
|
+
import { readConfig } from './config.js';
|
|
12
|
+
import { getRelayToken } from './secrets.js';
|
|
13
13
|
export function getRemoteCanvasTarget(name, scope = 'user') {
|
|
14
14
|
return readConfig(scope).remoteCanvas.targets[name];
|
|
15
15
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|