@north-light/api 0.3.580 → 0.3.587
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 +9 -2
- package/dist/api/client.js +22 -0
- package/dist/api/contract.d.ts +1 -1
- package/dist/api/contract.js +1 -1
- package/dist/api/dto/bash-jobs.d.ts +17 -0
- package/dist/api/dto/bash-jobs.js +2 -0
- package/dist/api/dto/execution-start.d.ts +14 -0
- package/dist/api/dto/health.d.ts +22 -0
- package/dist/api/dto/imports.d.ts +142 -0
- package/dist/api/dto/imports.js +2 -0
- package/dist/api/error-codes.d.ts +5 -0
- package/dist/api/error-codes.js +2 -0
- package/dist/api/errors.js +2 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.js +1 -0
- package/dist/api/routes.d.ts +3 -0
- package/dist/api/routes.js +3 -0
- package/dist/build-root.d.ts +66 -0
- package/dist/build-root.js +401 -0
- package/dist/clients/attach/ansi-cells.d.ts +44 -0
- package/dist/clients/attach/ansi-cells.js +137 -0
- package/dist/clients/attach/chrome/bash-jobs.d.ts +16 -0
- package/dist/clients/attach/chrome/bash-jobs.js +34 -0
- package/dist/clients/attach/chrome/canvas-panels.d.ts +43 -0
- package/dist/clients/attach/chrome/canvas-panels.js +227 -0
- package/dist/clients/attach/chrome/completion-bell.d.ts +10 -0
- package/dist/clients/attach/chrome/completion-bell.js +89 -0
- package/dist/clients/attach/chrome/cron-wait.d.ts +3 -0
- package/dist/clients/attach/chrome/cron-wait.js +34 -0
- package/dist/clients/attach/chrome/git-info.d.ts +20 -0
- package/dist/clients/attach/chrome/git-info.js +44 -0
- package/dist/clients/attach/chrome/header.d.ts +10 -0
- package/dist/clients/attach/chrome/header.js +30 -0
- package/dist/clients/attach/chrome/inbox-strip.d.ts +36 -0
- package/dist/clients/attach/chrome/inbox-strip.js +219 -0
- package/dist/clients/attach/chrome/key-hint.d.ts +9 -0
- package/dist/clients/attach/chrome/key-hint.js +16 -0
- package/dist/clients/attach/chrome/object-wait.d.ts +4 -0
- package/dist/clients/attach/chrome/object-wait.js +24 -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/review-wait.d.ts +6 -0
- package/dist/clients/attach/chrome/review-wait.js +22 -0
- package/dist/clients/attach/chrome/roster.d.ts +39 -0
- package/dist/clients/attach/chrome/roster.js +294 -0
- package/dist/clients/attach/chrome/status-line.d.ts +38 -0
- package/dist/clients/attach/chrome/status-line.js +127 -0
- package/dist/clients/attach/chrome/ticket-panel.d.ts +29 -0
- package/dist/clients/attach/chrome/ticket-panel.js +280 -0
- package/dist/clients/attach/chrome/widgets.d.ts +9 -0
- package/dist/clients/attach/chrome/widgets.js +51 -0
- package/dist/clients/attach/command.d.ts +3 -0
- package/dist/clients/attach/command.js +107 -0
- package/dist/clients/attach/config.d.ts +95 -0
- package/dist/clients/attach/config.js +275 -0
- package/dist/clients/attach/input/capabilities.d.ts +30 -0
- package/dist/clients/attach/input/capabilities.js +112 -0
- package/dist/clients/attach/input/clipboard-image.d.ts +55 -0
- package/dist/clients/attach/input/clipboard-image.js +237 -0
- package/dist/clients/attach/input/completion-frecency.d.ts +45 -0
- package/dist/clients/attach/input/completion-frecency.js +141 -0
- package/dist/clients/attach/input/controller.d.ts +92 -0
- package/dist/clients/attach/input/controller.js +383 -0
- 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/input/ref-autocomplete.d.ts +77 -0
- package/dist/clients/attach/input/ref-autocomplete.js +176 -0
- package/dist/clients/attach/input/titled-editor.d.ts +225 -0
- package/dist/clients/attach/input/titled-editor.js +859 -0
- package/dist/clients/attach/overlays/auth.d.ts +13 -0
- package/dist/clients/attach/overlays/auth.js +247 -0
- package/dist/clients/attach/overlays/dialogs.d.ts +27 -0
- package/dist/clients/attach/overlays/dialogs.js +102 -0
- package/dist/clients/attach/overlays/file-review.d.ts +10 -0
- package/dist/clients/attach/overlays/file-review.js +146 -0
- package/dist/clients/attach/overlays/graph.d.ts +83 -0
- package/dist/clients/attach/overlays/graph.js +725 -0
- package/dist/clients/attach/overlays/help.d.ts +33 -0
- package/dist/clients/attach/overlays/help.js +214 -0
- package/dist/clients/attach/overlays/mcp.d.ts +32 -0
- package/dist/clients/attach/overlays/mcp.js +302 -0
- package/dist/clients/attach/overlays/pickers.d.ts +56 -0
- package/dist/clients/attach/overlays/pickers.js +163 -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/assistant-message.d.ts +13 -0
- package/dist/clients/attach/render/assistant-message.js +56 -0
- package/dist/clients/attach/render/card-presentation.d.ts +36 -0
- package/dist/clients/attach/render/card-presentation.js +222 -0
- package/dist/clients/attach/render/chat-view.d.ts +409 -0
- package/dist/clients/attach/render/chat-view.js +2108 -0
- package/dist/clients/attach/render/condensed-history.d.ts +21 -0
- package/dist/clients/attach/render/condensed-history.js +60 -0
- package/dist/clients/attach/render/context-message.d.ts +22 -0
- package/dist/clients/attach/render/context-message.js +63 -0
- package/dist/clients/attach/render/crtr-output.d.ts +52 -0
- package/dist/clients/attach/render/crtr-output.js +721 -0
- package/dist/clients/attach/render/diagram.d.ts +4 -0
- package/dist/clients/attach/render/diagram.js +111 -0
- package/dist/clients/attach/render/doc-links.d.ts +36 -0
- package/dist/clients/attach/render/doc-links.js +78 -0
- package/dist/clients/attach/render/edit-diff.d.ts +12 -0
- package/dist/clients/attach/render/edit-diff.js +304 -0
- package/dist/clients/attach/render/glyph-codepoints.d.ts +3 -0
- package/dist/clients/attach/render/glyph-codepoints.js +42 -0
- package/dist/clients/attach/render/group-activity.d.ts +84 -0
- package/dist/clients/attach/render/group-activity.js +276 -0
- package/dist/clients/attach/render/group-recap.d.ts +13 -0
- package/dist/clients/attach/render/group-recap.js +146 -0
- package/dist/clients/attach/render/markdown-source.d.ts +21 -0
- package/dist/clients/attach/render/markdown-source.js +279 -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/page-block.d.ts +39 -0
- package/dist/clients/attach/render/page-block.js +187 -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.d.ts +53 -0
- package/dist/clients/attach/render/tool-calls.js +350 -0
- 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/transcript-search.d.ts +28 -0
- package/dist/clients/attach/render/transcript-search.js +152 -0
- package/dist/clients/attach/render/viewport.d.ts +38 -0
- package/dist/clients/attach/render/viewport.js +184 -0
- package/dist/clients/attach/session/banner.d.ts +13 -0
- package/dist/clients/attach/session/banner.js +33 -0
- package/dist/clients/attach/session/bindings.d.ts +20 -0
- package/dist/clients/attach/session/bindings.js +71 -0
- package/dist/clients/attach/session/chrome-refresh.d.ts +49 -0
- package/dist/clients/attach/session/chrome-refresh.js +154 -0
- package/dist/clients/attach/session/connection.d.ts +54 -0
- package/dist/clients/attach/session/connection.js +204 -0
- package/dist/clients/attach/session/context.d.ts +59 -0
- package/dist/clients/attach/session/context.js +16 -0
- package/dist/clients/attach/session/document-links.d.ts +12 -0
- package/dist/clients/attach/session/document-links.js +43 -0
- package/dist/clients/attach/session/editor-frame.d.ts +47 -0
- package/dist/clients/attach/session/editor-frame.js +142 -0
- package/dist/clients/attach/session/editor-inventory.d.ts +63 -0
- package/dist/clients/attach/session/editor-inventory.js +156 -0
- package/dist/clients/attach/session/file-links.d.ts +22 -0
- package/dist/clients/attach/session/file-links.js +73 -0
- package/dist/clients/attach/session/focus-events.d.ts +4 -0
- package/dist/clients/attach/session/focus-events.js +12 -0
- package/dist/clients/attach/session/frame.d.ts +46 -0
- package/dist/clients/attach/session/frame.js +214 -0
- package/dist/clients/attach/session/frames.d.ts +51 -0
- package/dist/clients/attach/session/frames.js +203 -0
- package/dist/clients/attach/session/identity.d.ts +16 -0
- package/dist/clients/attach/session/identity.js +26 -0
- package/dist/clients/attach/session/input-wiring.d.ts +53 -0
- package/dist/clients/attach/session/input-wiring.js +146 -0
- 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 +46 -0
- package/dist/clients/attach/session/keys.js +77 -0
- package/dist/clients/attach/session/layout.d.ts +22 -0
- package/dist/clients/attach/session/layout.js +59 -0
- package/dist/clients/attach/session/mouse.d.ts +27 -0
- package/dist/clients/attach/session/mouse.js +78 -0
- package/dist/clients/attach/session/pane-focus.d.ts +8 -0
- package/dist/clients/attach/session/pane-focus.js +42 -0
- package/dist/clients/attach/session/pane-tag.d.ts +44 -0
- package/dist/clients/attach/session/pane-tag.js +112 -0
- package/dist/clients/attach/session/pi-assets.d.ts +1 -0
- package/dist/clients/attach/session/pi-assets.js +24 -0
- package/dist/clients/attach/session/pi-oauth-flows.d.ts +1 -0
- package/dist/clients/attach/session/pi-oauth-flows.js +21 -0
- package/dist/clients/attach/session/profile-files.d.ts +17 -0
- package/dist/clients/attach/session/profile-files.js +207 -0
- package/dist/clients/attach/session/readonly-popup.d.ts +15 -0
- package/dist/clients/attach/session/readonly-popup.js +25 -0
- package/dist/clients/attach/session/reconnect.d.ts +46 -0
- package/dist/clients/attach/session/reconnect.js +195 -0
- package/dist/clients/attach/session/selection.d.ts +28 -0
- package/dist/clients/attach/session/selection.js +108 -0
- package/dist/clients/attach/session/state-sync.d.ts +38 -0
- package/dist/clients/attach/session/state-sync.js +67 -0
- 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 +65 -0
- package/dist/clients/attach/session/surface-host.js +256 -0
- package/dist/clients/attach/session/teardown.d.ts +30 -0
- package/dist/clients/attach/session/teardown.js +94 -0
- package/dist/clients/attach/session/transcript-search.d.ts +20 -0
- package/dist/clients/attach/session/transcript-search.js +151 -0
- package/dist/clients/attach/session/whip-achievements.d.ts +4 -0
- package/dist/clients/attach/session/whip-achievements.js +145 -0
- package/dist/clients/attach/session/whip.d.ts +20 -0
- package/dist/clients/attach/session/whip.js +362 -0
- package/dist/clients/attach/slash/dispatch.d.ts +120 -0
- package/dist/clients/attach/slash/dispatch.js +748 -0
- package/dist/clients/attach/slash/prompt-preview.d.ts +30 -0
- package/dist/clients/attach/slash/prompt-preview.js +121 -0
- package/dist/clients/attach/viewer.d.ts +8 -0
- package/dist/clients/attach/viewer.js +873 -0
- package/dist/clients/conversation/projection.d.ts +79 -0
- package/dist/clients/conversation/projection.js +324 -0
- package/dist/clients/conversation/submit.d.ts +38 -0
- package/dist/clients/conversation/submit.js +51 -0
- package/dist/clients/dashboard/app.d.ts +7 -0
- package/dist/clients/dashboard/app.js +438 -0
- package/dist/clients/dashboard/model.d.ts +39 -0
- package/dist/clients/dashboard/model.js +77 -0
- package/dist/clients/dashboard/render.d.ts +29 -0
- package/dist/clients/dashboard/render.js +148 -0
- package/dist/clients/inbox/controller.d.ts +174 -0
- package/dist/clients/inbox/controller.js +816 -0
- package/dist/clients/inbox/dto-adapt.d.ts +28 -0
- package/dist/clients/inbox/dto-adapt.js +93 -0
- package/dist/clients/inbox/layout.d.ts +8 -0
- package/dist/clients/inbox/layout.js +9 -0
- package/dist/clients/inbox/page-adapter.d.ts +33 -0
- package/dist/clients/inbox/page-adapter.js +55 -0
- package/dist/clients/inbox/resolve.d.ts +16 -0
- package/dist/clients/inbox/resolve.js +35 -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/comments-client.d.ts +74 -0
- package/dist/clients/inbox/review/comments-client.js +103 -0
- package/dist/clients/inbox/review/companion-pane.d.ts +47 -0
- package/dist/clients/inbox/review/companion-pane.js +109 -0
- package/dist/clients/inbox/review/document-surface.d.ts +212 -0
- package/dist/clients/inbox/review/document-surface.js +1268 -0
- package/dist/clients/inbox/review/frame.d.ts +57 -0
- package/dist/clients/inbox/review/frame.js +309 -0
- package/dist/clients/inbox/review/keys.d.ts +69 -0
- package/dist/clients/inbox/review/keys.js +133 -0
- package/dist/clients/inbox/review/launch.d.ts +16 -0
- package/dist/clients/inbox/review/launch.js +170 -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 +15 -0
- package/dist/clients/inbox/review/nvim.js +43 -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 +43 -0
- package/dist/clients/inbox/review/review-client.js +123 -0
- package/dist/clients/inbox/review/roundtrip.d.ts +5 -0
- package/dist/clients/inbox/review/roundtrip.js +41 -0
- package/dist/clients/inbox/review/state.d.ts +153 -0
- package/dist/clients/inbox/review/state.js +315 -0
- package/dist/clients/inbox/review-adapter.d.ts +17 -0
- package/dist/clients/inbox/review-adapter.js +43 -0
- package/dist/clients/inbox/surface.d.ts +25 -0
- package/dist/clients/inbox/surface.js +190 -0
- package/dist/clients/inbox/tui/ansi.d.ts +68 -0
- package/dist/clients/inbox/tui/ansi.js +321 -0
- package/dist/clients/inbox/tui/input.d.ts +5 -0
- package/dist/clients/inbox/tui/input.js +392 -0
- package/dist/clients/inbox/tui/keys.d.ts +28 -0
- package/dist/clients/inbox/tui/keys.js +104 -0
- package/dist/clients/inbox/tui/page-body.d.ts +10 -0
- package/dist/clients/inbox/tui/page-body.js +69 -0
- package/dist/clients/inbox/tui/panel.d.ts +4 -0
- package/dist/clients/inbox/tui/panel.js +84 -0
- package/dist/clients/inbox/tui/render.d.ts +23 -0
- package/dist/clients/inbox/tui/render.js +378 -0
- package/dist/clients/inbox/tui/slots.d.ts +33 -0
- package/dist/clients/inbox/tui/slots.js +134 -0
- package/dist/clients/inbox/tui/types.d.ts +73 -0
- package/dist/clients/inbox/tui/types.js +1 -0
- package/dist/clients/inbox/tui.d.ts +17 -0
- package/dist/clients/inbox/tui.js +92 -0
- package/dist/clients/surfaces/host.d.ts +74 -0
- package/dist/clients/surfaces/host.js +1 -0
- package/dist/commands/api-client.d.ts +113 -0
- package/dist/commands/api-client.js +427 -0
- package/dist/commands/attention.d.ts +2 -0
- package/dist/commands/attention.js +215 -0
- package/dist/commands/canvas/edges.d.ts +2 -0
- package/dist/commands/canvas/edges.js +41 -0
- package/dist/commands/canvas/list.d.ts +4 -0
- package/dist/commands/canvas/list.js +79 -0
- package/dist/commands/canvas/read.d.ts +14 -0
- package/dist/commands/canvas/read.js +95 -0
- package/dist/commands/canvas/search.d.ts +2 -0
- package/dist/commands/canvas/search.js +49 -0
- package/dist/commands/canvas/share.d.ts +2 -0
- package/dist/commands/canvas/share.js +80 -0
- package/dist/commands/canvas/unwatch.d.ts +2 -0
- package/dist/commands/canvas/unwatch.js +42 -0
- package/dist/commands/canvas/watch.d.ts +3 -0
- package/dist/commands/canvas/watch.js +63 -0
- package/dist/commands/canvas-analytics/chart.d.ts +52 -0
- package/dist/commands/canvas-analytics/chart.js +124 -0
- package/dist/commands/canvas-analytics/drilldown.d.ts +34 -0
- package/dist/commands/canvas-analytics/drilldown.js +96 -0
- package/dist/commands/canvas-analytics/format.d.ts +29 -0
- package/dist/commands/canvas-analytics/format.js +106 -0
- package/dist/commands/canvas-analytics/graph-detail.d.ts +2 -0
- package/dist/commands/canvas-analytics/graph-detail.js +307 -0
- package/dist/commands/canvas-analytics/graphs.d.ts +9 -0
- package/dist/commands/canvas-analytics/graphs.js +365 -0
- package/dist/commands/canvas-analytics/memory.d.ts +2 -0
- package/dist/commands/canvas-analytics/memory.js +211 -0
- package/dist/commands/canvas-analytics/overview.d.ts +2 -0
- package/dist/commands/canvas-analytics/overview.js +189 -0
- package/dist/commands/canvas-analytics/shell.d.ts +60 -0
- package/dist/commands/canvas-analytics/shell.js +416 -0
- package/dist/commands/canvas-analytics/time.d.ts +2 -0
- package/dist/commands/canvas-analytics/time.js +228 -0
- package/dist/commands/canvas-analytics/usage.d.ts +2 -0
- package/dist/commands/canvas-analytics/usage.js +305 -0
- package/dist/commands/canvas-analytics/view.d.ts +85 -0
- package/dist/commands/canvas-analytics/view.js +102 -0
- package/dist/commands/canvas-analytics.d.ts +2 -0
- package/dist/commands/canvas-analytics.js +28 -0
- package/dist/commands/canvas-browse.d.ts +2 -0
- package/dist/commands/canvas-browse.js +71 -0
- package/dist/commands/canvas-config.d.ts +2 -0
- package/dist/commands/canvas-config.js +192 -0
- package/dist/commands/canvas-history/grep.d.ts +1 -0
- package/dist/commands/canvas-history/grep.js +85 -0
- package/dist/commands/canvas-history/read.d.ts +1 -0
- package/dist/commands/canvas-history/read.js +48 -0
- package/dist/commands/canvas-history/search.d.ts +1 -0
- package/dist/commands/canvas-history/search.js +99 -0
- package/dist/commands/canvas-history/shared.d.ts +34 -0
- package/dist/commands/canvas-history/shared.js +135 -0
- package/dist/commands/canvas-history/stats.d.ts +1 -0
- package/dist/commands/canvas-history/stats.js +68 -0
- package/dist/commands/canvas-history.d.ts +2 -0
- package/dist/commands/canvas-history.js +29 -0
- package/dist/commands/canvas-issue.d.ts +2 -0
- package/dist/commands/canvas-issue.js +148 -0
- package/dist/commands/canvas-prune.d.ts +2 -0
- package/dist/commands/canvas-prune.js +111 -0
- package/dist/commands/canvas-roster.d.ts +2 -0
- package/dist/commands/canvas-roster.js +69 -0
- package/dist/commands/canvas-snapshot.d.ts +2 -0
- package/dist/commands/canvas-snapshot.js +34 -0
- package/dist/commands/canvas-use.d.ts +1 -0
- package/dist/commands/canvas-use.js +61 -0
- package/dist/commands/canvas.d.ts +3 -0
- package/dist/commands/canvas.js +57 -0
- package/dist/commands/chord.d.ts +2 -0
- package/dist/commands/chord.js +241 -0
- package/dist/commands/cron.d.ts +2 -0
- package/dist/commands/cron.js +541 -0
- package/dist/commands/custom-object/ack.d.ts +2 -0
- package/dist/commands/custom-object/ack.js +30 -0
- package/dist/commands/custom-object/publish.d.ts +2 -0
- package/dist/commands/custom-object/publish.js +39 -0
- package/dist/commands/custom-object/receive.d.ts +2 -0
- package/dist/commands/custom-object/receive.js +69 -0
- package/dist/commands/custom-object/register.d.ts +2 -0
- package/dist/commands/custom-object/register.js +69 -0
- package/dist/commands/custom-object/shared.d.ts +5 -0
- package/dist/commands/custom-object/shared.js +14 -0
- package/dist/commands/custom-object/unregister.d.ts +2 -0
- package/dist/commands/custom-object/unregister.js +26 -0
- package/dist/commands/custom-object.d.ts +2 -0
- package/dist/commands/custom-object.js +21 -0
- package/dist/commands/dashboard.d.ts +2 -0
- package/dist/commands/dashboard.js +86 -0
- package/dist/commands/doc/delete.d.ts +2 -0
- package/dist/commands/doc/delete.js +30 -0
- package/dist/commands/doc/edit.d.ts +2 -0
- package/dist/commands/doc/edit.js +82 -0
- package/dist/commands/doc/history.d.ts +2 -0
- package/dist/commands/doc/history.js +38 -0
- package/dist/commands/doc/lint.d.ts +2 -0
- package/dist/commands/doc/lint.js +36 -0
- package/dist/commands/doc/list.d.ts +2 -0
- package/dist/commands/doc/list.js +19 -0
- package/dist/commands/doc/move.d.ts +2 -0
- package/dist/commands/doc/move.js +37 -0
- package/dist/commands/doc/read.d.ts +2 -0
- package/dist/commands/doc/read.js +19 -0
- package/dist/commands/doc/replace-blocks.d.ts +6 -0
- package/dist/commands/doc/replace-blocks.js +40 -0
- package/dist/commands/doc/shared.d.ts +25 -0
- package/dist/commands/doc/shared.js +160 -0
- package/dist/commands/doc/write.d.ts +2 -0
- package/dist/commands/doc/write.js +52 -0
- package/dist/commands/doc.d.ts +2 -0
- package/dist/commands/doc.js +27 -0
- package/dist/commands/human/components.d.ts +4 -0
- package/dist/commands/human/components.js +78 -0
- package/dist/commands/human/feedback.d.ts +2 -0
- package/dist/commands/human/feedback.js +112 -0
- package/dist/commands/human/prompts.d.ts +21 -0
- package/dist/commands/human/prompts.js +326 -0
- package/dist/commands/human/queue.d.ts +3 -0
- package/dist/commands/human/queue.js +191 -0
- package/dist/commands/human/request.d.ts +2 -0
- package/dist/commands/human/request.js +266 -0
- package/dist/commands/human/review.d.ts +2 -0
- package/dist/commands/human/review.js +288 -0
- package/dist/commands/human/shared.d.ts +16 -0
- package/dist/commands/human/shared.js +67 -0
- package/dist/commands/human.d.ts +2 -0
- package/dist/commands/human.js +63 -0
- package/dist/commands/node/bash.d.ts +1 -0
- package/dist/commands/node/bash.js +390 -0
- package/dist/commands/node/create.d.ts +6 -0
- package/dist/commands/node/create.js +363 -0
- package/dist/commands/node/inspect.d.ts +2 -0
- package/dist/commands/node/inspect.js +288 -0
- package/dist/commands/node/lifecycle.d.ts +4 -0
- package/dist/commands/node/lifecycle.js +577 -0
- package/dist/commands/node/message.d.ts +1 -0
- package/dist/commands/node/message.js +170 -0
- package/dist/commands/node/outcome.d.ts +2 -0
- package/dist/commands/node/outcome.js +133 -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 +78 -0
- package/dist/commands/node/wait.d.ts +1 -0
- package/dist/commands/node/wait.js +165 -0
- package/dist/commands/node-context.d.ts +2 -0
- package/dist/commands/node-context.js +145 -0
- package/dist/commands/node-lifecycle-revive.d.ts +12 -0
- package/dist/commands/node-lifecycle-revive.js +217 -0
- package/dist/commands/node-snapshot.d.ts +2 -0
- package/dist/commands/node-snapshot.js +37 -0
- package/dist/commands/node-transcript.d.ts +2 -0
- package/dist/commands/node-transcript.js +59 -0
- package/dist/commands/node-worktree.d.ts +2 -0
- package/dist/commands/node-worktree.js +138 -0
- package/dist/commands/node.d.ts +2 -0
- package/dist/commands/node.js +29 -0
- package/dist/commands/person-settings.d.ts +1 -0
- package/dist/commands/person-settings.js +23 -0
- package/dist/commands/pkg/browse/actions.d.ts +7 -0
- package/dist/commands/pkg/browse/actions.js +198 -0
- package/dist/commands/pkg/browse/catalog.d.ts +9 -0
- package/dist/commands/pkg/browse/catalog.js +461 -0
- package/dist/commands/pkg/browse/command-view.d.ts +3 -0
- package/dist/commands/pkg/browse/command-view.js +217 -0
- package/dist/commands/pkg/browse/detail-panel.d.ts +66 -0
- package/dist/commands/pkg/browse/detail-panel.js +402 -0
- package/dist/commands/pkg/browse/doc-view.d.ts +3 -0
- package/dist/commands/pkg/browse/doc-view.js +84 -0
- package/dist/commands/pkg/browse/list-panel.d.ts +28 -0
- package/dist/commands/pkg/browse/list-panel.js +168 -0
- package/dist/commands/pkg/browse/model.d.ts +223 -0
- package/dist/commands/pkg/browse/model.js +36 -0
- package/dist/commands/pkg/browse/shell.d.ts +93 -0
- package/dist/commands/pkg/browse/shell.js +640 -0
- package/dist/commands/pkg/browse.d.ts +2 -0
- package/dist/commands/pkg/browse.js +27 -0
- package/dist/commands/pkg/market-inspect.d.ts +2 -0
- package/dist/commands/pkg/market-inspect.js +141 -0
- package/dist/commands/pkg/market-manage.d.ts +16 -0
- package/dist/commands/pkg/market-manage.js +327 -0
- package/dist/commands/pkg/market.d.ts +1 -0
- package/dist/commands/pkg/market.js +14 -0
- package/dist/commands/pkg/plugin-env.d.ts +3 -0
- package/dist/commands/pkg/plugin-env.js +65 -0
- package/dist/commands/pkg/plugin-inspect.d.ts +2 -0
- package/dist/commands/pkg/plugin-inspect.js +168 -0
- package/dist/commands/pkg/plugin-manage.d.ts +98 -0
- package/dist/commands/pkg/plugin-manage.js +1024 -0
- package/dist/commands/pkg/plugin.d.ts +1 -0
- package/dist/commands/pkg/plugin.js +14 -0
- package/dist/commands/pkg/shared.d.ts +13 -0
- package/dist/commands/pkg/shared.js +62 -0
- package/dist/commands/pkg.d.ts +2 -0
- package/dist/commands/pkg.js +21 -0
- package/dist/commands/profile/daemon-profiles.d.ts +13 -0
- package/dist/commands/profile/daemon-profiles.js +38 -0
- package/dist/commands/profile/default.d.ts +2 -0
- package/dist/commands/profile/default.js +183 -0
- package/dist/commands/profile/delete.d.ts +1 -0
- package/dist/commands/profile/delete.js +66 -0
- package/dist/commands/profile/env.d.ts +8 -0
- package/dist/commands/profile/env.js +188 -0
- package/dist/commands/profile/kind.d.ts +1 -0
- package/dist/commands/profile/kind.js +27 -0
- package/dist/commands/profile/list.d.ts +1 -0
- package/dist/commands/profile/list.js +45 -0
- package/dist/commands/profile/meta.d.ts +4 -0
- package/dist/commands/profile/meta.js +65 -0
- package/dist/commands/profile/new.d.ts +1 -0
- package/dist/commands/profile/new.js +95 -0
- package/dist/commands/profile/pause.d.ts +2 -0
- package/dist/commands/profile/pause.js +59 -0
- package/dist/commands/profile/project.d.ts +2 -0
- package/dist/commands/profile/project.js +134 -0
- package/dist/commands/profile/rename.d.ts +1 -0
- package/dist/commands/profile/rename.js +41 -0
- package/dist/commands/profile/show.d.ts +1 -0
- package/dist/commands/profile/show.js +55 -0
- package/dist/commands/profile.d.ts +2 -0
- package/dist/commands/profile.js +35 -0
- package/dist/commands/push.d.ts +2 -0
- package/dist/commands/push.js +263 -0
- package/dist/commands/revive.d.ts +2 -0
- package/dist/commands/revive.js +183 -0
- 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 +60 -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 +30 -0
- package/dist/commands/surface/node/placement.js +49 -0
- package/dist/commands/surface-dashboard.d.ts +2 -0
- package/dist/commands/surface-dashboard.js +138 -0
- package/dist/commands/surface-edit.d.ts +2 -0
- package/dist/commands/surface-edit.js +157 -0
- package/dist/commands/surface-inbox.d.ts +2 -0
- package/dist/commands/surface-inbox.js +98 -0
- package/dist/commands/surface-inspect.d.ts +2 -0
- package/dist/commands/surface-inspect.js +41 -0
- package/dist/commands/surface-node.d.ts +2 -0
- package/dist/commands/surface-node.js +19 -0
- package/dist/commands/surface-reload.d.ts +7 -0
- package/dist/commands/surface-reload.js +129 -0
- package/dist/commands/surface-tmux-spread.d.ts +2 -0
- package/dist/commands/surface-tmux-spread.js +214 -0
- package/dist/commands/surface.d.ts +2 -0
- package/dist/commands/surface.js +29 -0
- package/dist/commands/sys/branch.d.ts +2 -0
- package/dist/commands/sys/branch.js +19 -0
- package/dist/commands/sys/config.d.ts +1 -0
- package/dist/commands/sys/config.js +353 -0
- package/dist/commands/sys/connect.d.ts +1 -0
- package/dist/commands/sys/connect.js +185 -0
- package/dist/commands/sys/context/admin/actions.d.ts +23 -0
- package/dist/commands/sys/context/admin/actions.js +89 -0
- package/dist/commands/sys/context/admin/detail-panel.d.ts +73 -0
- package/dist/commands/sys/context/admin/detail-panel.js +233 -0
- package/dist/commands/sys/context/admin/docs-panel.d.ts +63 -0
- package/dist/commands/sys/context/admin/docs-panel.js +185 -0
- package/dist/commands/sys/context/admin/list-view.d.ts +62 -0
- package/dist/commands/sys/context/admin/list-view.js +170 -0
- package/dist/commands/sys/context/admin/model.d.ts +123 -0
- package/dist/commands/sys/context/admin/model.js +179 -0
- package/dist/commands/sys/context/admin/rail-panel.d.ts +84 -0
- package/dist/commands/sys/context/admin/rail-panel.js +229 -0
- package/dist/commands/sys/context/admin/read-view.d.ts +27 -0
- package/dist/commands/sys/context/admin/read-view.js +172 -0
- package/dist/commands/sys/context/admin/shell.d.ts +125 -0
- package/dist/commands/sys/context/admin/shell.js +870 -0
- package/dist/commands/sys/context/admin.d.ts +1 -0
- package/dist/commands/sys/context/admin.js +148 -0
- package/dist/commands/sys/context/doc.d.ts +1 -0
- package/dist/commands/sys/context/doc.js +126 -0
- package/dist/commands/sys/context/expose.d.ts +1 -0
- package/dist/commands/sys/context/expose.js +66 -0
- package/dist/commands/sys/context/prompt-review.d.ts +1 -0
- package/dist/commands/sys/context/prompt-review.js +244 -0
- package/dist/commands/sys/context/resolve.d.ts +115 -0
- package/dist/commands/sys/context/resolve.js +326 -0
- package/dist/commands/sys/context/sysprompt.d.ts +1 -0
- package/dist/commands/sys/context/sysprompt.js +95 -0
- package/dist/commands/sys/context.d.ts +2 -0
- package/dist/commands/sys/context.js +21 -0
- package/dist/commands/sys/daemon.d.ts +4 -0
- package/dist/commands/sys/daemon.js +334 -0
- package/dist/commands/sys/db.d.ts +1 -0
- package/dist/commands/sys/db.js +69 -0
- package/dist/commands/sys/desktop.d.ts +5 -0
- package/dist/commands/sys/desktop.js +201 -0
- package/dist/commands/sys/doctor.d.ts +36 -0
- package/dist/commands/sys/doctor.js +633 -0
- package/dist/commands/sys/env.d.ts +1 -0
- package/dist/commands/sys/env.js +39 -0
- package/dist/commands/sys/feedback.d.ts +1 -0
- package/dist/commands/sys/feedback.js +228 -0
- package/dist/commands/sys/import/move.d.ts +55 -0
- package/dist/commands/sys/import/move.js +391 -0
- package/dist/commands/sys/import/resume.d.ts +1 -0
- package/dist/commands/sys/import/resume.js +23 -0
- package/dist/commands/sys/import/start.d.ts +4 -0
- package/dist/commands/sys/import/start.js +92 -0
- package/dist/commands/sys/join.d.ts +3 -0
- package/dist/commands/sys/join.js +85 -0
- package/dist/commands/sys/limits.d.ts +1 -0
- package/dist/commands/sys/limits.js +133 -0
- package/dist/commands/sys/logs.d.ts +1 -0
- package/dist/commands/sys/logs.js +129 -0
- package/dist/commands/sys/machine/rotate.d.ts +1 -0
- package/dist/commands/sys/machine/rotate.js +49 -0
- package/dist/commands/sys/migrate.d.ts +1 -0
- package/dist/commands/sys/migrate.js +79 -0
- package/dist/commands/sys/panels/broker-limits-panel.d.ts +17 -0
- package/dist/commands/sys/panels/broker-limits-panel.js +110 -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/models-panel.d.ts +106 -0
- package/dist/commands/sys/panels/models-panel.js +1160 -0
- package/dist/commands/sys/panels/plugin-env-panel.d.ts +19 -0
- package/dist/commands/sys/panels/plugin-env-panel.js +70 -0
- package/dist/commands/sys/panels/plugins-panel.d.ts +16 -0
- package/dist/commands/sys/panels/plugins-panel.js +87 -0
- package/dist/commands/sys/panels/prefs-panel.d.ts +22 -0
- package/dist/commands/sys/panels/prefs-panel.js +97 -0
- package/dist/commands/sys/panels/profiles-panel.d.ts +70 -0
- package/dist/commands/sys/panels/profiles-panel.js +655 -0
- package/dist/commands/sys/panels/provider-panel.d.ts +74 -0
- package/dist/commands/sys/panels/provider-panel.js +534 -0
- package/dist/commands/sys/panels/terminal-panel.d.ts +19 -0
- package/dist/commands/sys/panels/terminal-panel.js +67 -0
- package/dist/commands/sys/provider-login.d.ts +8 -0
- package/dist/commands/sys/provider-login.js +99 -0
- package/dist/commands/sys/retry-delivery.d.ts +1 -0
- package/dist/commands/sys/retry-delivery.js +33 -0
- package/dist/commands/sys/settings-shell.d.ts +54 -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 +46 -0
- package/dist/commands/sys/setup-core.d.ts +121 -0
- package/dist/commands/sys/setup-core.js +890 -0
- package/dist/commands/sys/setup-settings-runner.d.ts +13 -0
- package/dist/commands/sys/setup-settings-runner.js +15 -0
- package/dist/commands/sys/setup-wizard.d.ts +52 -0
- package/dist/commands/sys/setup-wizard.js +351 -0
- package/dist/commands/sys/setup.d.ts +6 -0
- package/dist/commands/sys/setup.js +41 -0
- package/dist/commands/sys/shared.d.ts +51 -0
- package/dist/commands/sys/shared.js +81 -0
- package/dist/commands/sys/signin.d.ts +7 -0
- package/dist/commands/sys/signin.js +149 -0
- package/dist/commands/sys/spaces.d.ts +1 -0
- package/dist/commands/sys/spaces.js +22 -0
- package/dist/commands/sys/spend.d.ts +1 -0
- package/dist/commands/sys/spend.js +144 -0
- package/dist/commands/sys/support/prepare.d.ts +13 -0
- package/dist/commands/sys/support/prepare.js +239 -0
- package/dist/commands/sys/support/submit.d.ts +19 -0
- package/dist/commands/sys/support/submit.js +524 -0
- package/dist/commands/sys/support.d.ts +2 -0
- package/dist/commands/sys/support.js +18 -0
- package/dist/commands/sys/sync-deps.d.ts +16 -0
- package/dist/commands/sys/sync-deps.js +445 -0
- package/dist/commands/sys/sync-project-guidance.d.ts +1 -0
- package/dist/commands/sys/sync-project-guidance.js +319 -0
- package/dist/commands/sys/sync-shared.d.ts +44 -0
- package/dist/commands/sys/sync-shared.js +139 -0
- package/dist/commands/sys/sync-skills.d.ts +1 -0
- package/dist/commands/sys/sync-skills.js +297 -0
- package/dist/commands/sys/sync.d.ts +2 -0
- package/dist/commands/sys/sync.js +17 -0
- package/dist/commands/sys/terminal-option.d.ts +112 -0
- package/dist/commands/sys/terminal-option.js +542 -0
- package/dist/commands/sys/tutorial/branch.d.ts +1 -0
- package/dist/commands/sys/tutorial/branch.js +15 -0
- package/dist/commands/sys/tutorial/lessons.d.ts +5 -0
- package/dist/commands/sys/tutorial/lessons.js +107 -0
- package/dist/commands/sys/tutorial/scenario.d.ts +1 -0
- package/dist/commands/sys/tutorial/scenario.js +431 -0
- package/dist/commands/sys/tutorial/tracks.d.ts +1 -0
- package/dist/commands/sys/tutorial/tracks.js +96 -0
- package/dist/commands/sys/update.d.ts +2 -0
- package/dist/commands/sys/update.js +157 -0
- package/dist/commands/sys/worktrees.d.ts +2 -0
- package/dist/commands/sys/worktrees.js +53 -0
- package/dist/commands/sys.d.ts +2 -0
- package/dist/commands/sys.js +31 -0
- package/dist/core/activity-signal.d.ts +7 -0
- package/dist/core/activity-signal.js +38 -0
- package/dist/core/async-array.d.ts +7 -0
- package/dist/core/async-array.js +48 -0
- package/dist/core/auth-file.d.ts +35 -0
- package/dist/core/auth-file.js +161 -0
- package/dist/core/auth-interaction.d.ts +19 -0
- package/dist/core/auth-interaction.js +94 -0
- package/dist/core/bash-guard.d.ts +6 -0
- package/dist/core/bash-guard.js +527 -0
- package/dist/core/bash-job-supervisor.d.ts +5 -0
- package/dist/core/bash-job-supervisor.js +144 -0
- package/dist/core/bash-jobs.d.ts +168 -0
- package/dist/core/bash-jobs.js +455 -0
- package/dist/core/blobs/directory.d.ts +11 -0
- package/dist/core/blobs/directory.js +216 -0
- package/dist/core/blobs/fault.d.ts +3 -0
- package/dist/core/blobs/fault.js +6 -0
- package/dist/core/blobs/index.d.ts +21 -0
- package/dist/core/blobs/index.js +30 -0
- package/dist/core/blobs/r2.d.ts +13 -0
- package/dist/core/blobs/r2.js +104 -0
- package/dist/core/broker-client/client.d.ts +89 -0
- package/dist/core/broker-client/client.js +184 -0
- package/dist/core/broker-client/index.d.ts +2 -0
- package/dist/core/broker-client/index.js +14 -0
- package/dist/core/broker-client/transport-relay.d.ts +47 -0
- package/dist/core/broker-client/transport-relay.js +165 -0
- package/dist/core/broker-client/transport-socket.d.ts +35 -0
- package/dist/core/broker-client/transport-socket.js +187 -0
- package/dist/core/broker-client/transport.d.ts +46 -0
- package/dist/core/broker-client/transport.js +40 -0
- package/dist/core/canvas/app-run.d.ts +3 -0
- package/dist/core/canvas/app-run.js +4 -0
- package/dist/core/canvas/attention.d.ts +18 -0
- package/dist/core/canvas/attention.js +47 -0
- package/dist/core/canvas/browse/app.d.ts +29 -0
- package/dist/core/canvas/browse/app.js +1050 -0
- package/dist/core/canvas/browse/model.d.ts +176 -0
- package/dist/core/canvas/browse/model.js +477 -0
- package/dist/core/canvas/browse/pins.d.ts +4 -0
- package/dist/core/canvas/browse/pins.js +29 -0
- package/dist/core/canvas/browse/render.d.ts +103 -0
- package/dist/core/canvas/browse/render.js +1058 -0
- package/dist/core/canvas/canvas.d.ts +409 -0
- package/dist/core/canvas/canvas.js +1206 -0
- package/dist/core/canvas/crons.d.ts +322 -0
- package/dist/core/canvas/crons.js +541 -0
- package/dist/core/canvas/daemon-actions.d.ts +42 -0
- package/dist/core/canvas/daemon-actions.js +98 -0
- package/dist/core/canvas/db.d.ts +60 -0
- package/dist/core/canvas/db.js +426 -0
- package/dist/core/canvas/deliveries.d.ts +125 -0
- package/dist/core/canvas/deliveries.js +393 -0
- package/dist/core/canvas/delivery-contract.d.ts +37 -0
- package/dist/core/canvas/delivery-contract.js +30 -0
- package/dist/core/canvas/executions.d.ts +125 -0
- package/dist/core/canvas/executions.js +279 -0
- package/dist/core/canvas/extensions.d.ts +9 -0
- package/dist/core/canvas/extensions.js +90 -0
- package/dist/core/canvas/focuses.d.ts +26 -0
- package/dist/core/canvas/focuses.js +82 -0
- package/dist/core/canvas/history.d.ts +104 -0
- package/dist/core/canvas/history.js +480 -0
- package/dist/core/canvas/index.d.ts +14 -0
- package/dist/core/canvas/index.js +16 -0
- package/dist/core/canvas/install-id.d.ts +9 -0
- package/dist/core/canvas/install-id.js +64 -0
- package/dist/core/canvas/labels.d.ts +30 -0
- package/dist/core/canvas/labels.js +43 -0
- package/dist/core/canvas/legacy-person.d.ts +4 -0
- package/dist/core/canvas/legacy-person.js +4 -0
- package/dist/core/canvas/memory-reads.d.ts +24 -0
- package/dist/core/canvas/memory-reads.js +36 -0
- package/dist/core/canvas/meta-file.d.ts +20 -0
- package/dist/core/canvas/meta-file.js +89 -0
- package/dist/core/canvas/nav-render.d.ts +136 -0
- package/dist/core/canvas/nav-render.js +224 -0
- package/dist/core/canvas/node-agent-paths.d.ts +8 -0
- package/dist/core/canvas/node-agent-paths.js +30 -0
- package/dist/core/canvas/node-order.d.ts +24 -0
- package/dist/core/canvas/node-order.js +37 -0
- package/dist/core/canvas/node-recap.d.ts +23 -0
- package/dist/core/canvas/node-recap.js +62 -0
- package/dist/core/canvas/node-tokens.d.ts +19 -0
- package/dist/core/canvas/node-tokens.js +53 -0
- package/dist/core/canvas/outcome-actions.d.ts +23 -0
- package/dist/core/canvas/outcome-actions.js +71 -0
- package/dist/core/canvas/person.d.ts +32 -0
- package/dist/core/canvas/person.js +244 -0
- package/dist/core/canvas/pid.d.ts +6 -0
- package/dist/core/canvas/pid.js +20 -10
- package/dist/core/canvas/reconciler-leases.d.ts +12 -0
- package/dist/core/canvas/reconciler-leases.js +40 -0
- package/dist/core/canvas/recovery.d.ts +127 -0
- package/dist/core/canvas/recovery.js +713 -0
- package/dist/core/canvas/remote-canvas-source.d.ts +71 -0
- package/dist/core/canvas/remote-canvas-source.js +290 -0
- package/dist/core/canvas/remote-transport.d.ts +7 -0
- package/dist/core/canvas/remote-transport.js +57 -0
- package/dist/core/canvas/render-source.d.ts +193 -0
- package/dist/core/canvas/render-source.js +518 -0
- package/dist/core/canvas/schema-chain.d.ts +33 -0
- package/dist/core/canvas/schema-chain.js +110 -0
- package/dist/core/canvas/schema-version.d.ts +30 -0
- package/dist/core/canvas/schema-version.js +58 -0
- package/dist/core/canvas/sessions.d.ts +54 -0
- package/dist/core/canvas/sessions.js +128 -0
- package/dist/core/canvas/source.d.ts +52 -0
- package/dist/core/canvas/source.js +57 -0
- package/dist/core/canvas/status-glyph.d.ts +52 -0
- package/dist/core/canvas/status-glyph.js +132 -0
- package/dist/core/canvas/structured-requests.d.ts +69 -0
- package/dist/core/canvas/structured-requests.js +176 -0
- package/dist/core/canvas/telemetry.d.ts +14 -0
- package/dist/core/canvas/telemetry.js +35 -0
- package/dist/core/canvas/tree.d.ts +33 -0
- package/dist/core/canvas/tree.js +128 -0
- package/dist/core/canvas/types.d.ts +461 -0
- package/dist/core/canvas/types.js +6 -0
- package/dist/core/canvas/waits.d.ts +39 -0
- package/dist/core/canvas/waits.js +104 -0
- package/dist/core/canvas/worktrees.d.ts +41 -0
- package/dist/core/canvas/worktrees.js +97 -0
- package/dist/core/clipboard-text.d.ts +11 -0
- package/dist/core/clipboard-text.js +57 -0
- package/dist/core/command-hooks/artifact.d.ts +16 -0
- package/dist/core/command-hooks/artifact.js +145 -0
- package/dist/core/command-hooks/catalog.d.ts +14 -0
- package/dist/core/command-hooks/catalog.js +38 -0
- package/dist/core/command-hooks/compose.d.ts +15 -0
- package/dist/core/command-hooks/compose.js +101 -0
- package/dist/core/command-hooks/discovery.d.ts +133 -0
- package/dist/core/command-hooks/discovery.js +246 -0
- package/dist/core/command-hooks/help.d.ts +5 -0
- package/dist/core/command-hooks/help.js +18 -0
- package/dist/core/command-hooks/lifecycle-catalog.d.ts +21 -0
- package/dist/core/command-hooks/lifecycle-catalog.js +9 -0
- package/dist/core/command-hooks/lifecycle-create.d.ts +4 -0
- package/dist/core/command-hooks/lifecycle-create.js +51 -0
- package/dist/core/command-hooks/report.d.ts +32 -0
- package/dist/core/command-hooks/report.js +28 -0
- package/dist/core/command-hooks/schema.d.ts +42 -0
- package/dist/core/command-hooks/schema.js +157 -0
- package/dist/core/command-hooks/transport/exec-invoke.d.ts +24 -0
- package/dist/core/command-hooks/transport/exec-invoke.js +315 -0
- package/dist/core/command-hooks/transport/exec-lifecycle.d.ts +23 -0
- package/dist/core/command-hooks/transport/exec-lifecycle.js +248 -0
- package/dist/core/command-hooks/transport/plan.d.ts +3 -0
- package/dist/core/command-hooks/transport/plan.js +30 -0
- package/dist/core/command-manifests/registry.d.ts +68 -0
- package/dist/core/command-manifests/registry.js +118 -0
- package/dist/core/command-plugins/caller-header.d.ts +10 -0
- package/dist/core/command-plugins/caller-header.js +15 -0
- package/dist/core/command-plugins/compose.d.ts +11 -0
- package/dist/core/command-plugins/compose.js +241 -0
- package/dist/core/command-plugins/discovery.d.ts +49 -0
- package/dist/core/command-plugins/discovery.js +240 -0
- package/dist/core/command-plugins/extensions.d.ts +20 -0
- package/dist/core/command-plugins/extensions.js +166 -0
- package/dist/core/command-plugins/help-addenda.d.ts +25 -0
- package/dist/core/command-plugins/help-addenda.js +55 -0
- package/dist/core/command-plugins/presence.d.ts +4 -0
- package/dist/core/command-plugins/presence.js +36 -0
- package/dist/core/command-plugins/transport/exec-invoke.d.ts +42 -0
- package/dist/core/command-plugins/transport/exec-invoke.js +138 -0
- package/dist/core/command-plugins/transport/http-fetch.d.ts +41 -0
- package/dist/core/command-plugins/transport/http-fetch.js +68 -0
- package/dist/core/command-plugins/transport/http-invoke.d.ts +22 -0
- package/dist/core/command-plugins/transport/http-invoke.js +333 -0
- package/dist/core/command-plugins/transport/http-plan.d.ts +75 -0
- package/dist/core/command-plugins/transport/http-plan.js +349 -0
- package/dist/core/command-plugins/transport/sign.d.ts +55 -0
- package/dist/core/command-plugins/transport/sign.js +115 -0
- package/dist/core/command.d.ts +238 -0
- package/dist/core/command.js +848 -0
- package/dist/core/conversation-store/row-store.d.ts +14 -0
- package/dist/core/conversation-store/row-store.js +337 -0
- package/dist/core/directory/issuer.d.ts +8 -0
- package/dist/core/directory/issuer.js +15 -0
- package/dist/core/directory/join.d.ts +57 -0
- package/dist/core/directory/join.js +218 -0
- package/dist/core/directory/person-credential.d.ts +61 -0
- package/dist/core/directory/person-credential.js +220 -0
- package/dist/core/directory/reach.d.ts +3 -0
- package/dist/core/directory/reach.js +19 -0
- package/dist/core/document-lines.d.ts +4 -0
- package/dist/core/document-lines.js +6 -0
- package/dist/core/editor-resolver.d.ts +28 -0
- package/dist/core/editor-resolver.js +77 -0
- package/dist/core/environments.d.ts +21 -0
- package/dist/core/environments.js +56 -0
- package/dist/core/events/outbound.d.ts +21 -0
- package/dist/core/events/outbound.js +92 -0
- package/dist/core/events/read.d.ts +40 -0
- package/dist/core/events/read.js +625 -0
- package/dist/core/fault-classifier.d.ts +36 -0
- package/dist/core/fault-classifier.js +101 -0
- package/dist/core/feed/feed.d.ts +63 -0
- package/dist/core/feed/feed.js +190 -0
- package/dist/core/feed/inbox.d.ts +34 -0
- package/dist/core/feed/inbox.js +93 -0
- package/dist/core/feed/messages.d.ts +88 -0
- package/dist/core/feed/messages.js +206 -0
- package/dist/core/feed/reports.d.ts +10 -0
- package/dist/core/feed/reports.js +58 -0
- package/dist/core/frontmatter.d.ts +8 -0
- package/dist/core/frontmatter.js +35 -0
- package/dist/core/grants/cover.d.ts +14 -0
- package/dist/core/grants/cover.js +66 -0
- package/dist/core/grants/local.d.ts +4 -0
- package/dist/core/grants/local.js +26 -0
- package/dist/core/grants/mirror.d.ts +155 -0
- package/dist/core/grants/mirror.js +379 -0
- package/dist/core/grants/on-sync.d.ts +26 -0
- package/dist/core/grants/on-sync.js +161 -0
- package/dist/core/grants/sandboxes.d.ts +7 -0
- package/dist/core/grants/sandboxes.js +24 -0
- package/dist/core/grants/sync.d.ts +46 -0
- package/dist/core/grants/sync.js +195 -0
- package/dist/core/grants/terminal.d.ts +10 -0
- package/dist/core/grants/terminal.js +25 -0
- package/dist/core/graph/access.d.ts +13 -0
- package/dist/core/graph/access.js +37 -0
- package/dist/core/graph/bodies.d.ts +22 -0
- package/dist/core/graph/bodies.js +68 -0
- package/dist/core/graph/custom.d.ts +98 -0
- package/dist/core/graph/custom.js +298 -0
- package/dist/core/graph/deletion.d.ts +16 -0
- package/dist/core/graph/deletion.js +104 -0
- package/dist/core/graph/documents.d.ts +181 -0
- package/dist/core/graph/documents.js +653 -0
- package/dist/core/graph/edges.d.ts +41 -0
- package/dist/core/graph/edges.js +83 -0
- package/dist/core/graph/events.d.ts +49 -0
- package/dist/core/graph/events.js +315 -0
- package/dist/core/graph/exposures.d.ts +53 -0
- package/dist/core/graph/exposures.js +152 -0
- package/dist/core/graph/jobs.d.ts +107 -0
- package/dist/core/graph/jobs.js +184 -0
- package/dist/core/graph/kinds/action.d.ts +3 -0
- package/dist/core/graph/kinds/action.js +20 -0
- package/dist/core/graph/kinds/custom.d.ts +8 -0
- package/dist/core/graph/kinds/custom.js +25 -0
- package/dist/core/graph/kinds/document.d.ts +20 -0
- package/dist/core/graph/kinds/document.js +133 -0
- package/dist/core/graph/kinds/dto.d.ts +5 -0
- package/dist/core/graph/kinds/dto.js +11 -0
- package/dist/core/graph/kinds/environment.d.ts +2 -0
- package/dist/core/graph/kinds/environment.js +21 -0
- package/dist/core/graph/kinds/job.d.ts +2 -0
- package/dist/core/graph/kinds/job.js +24 -0
- package/dist/core/graph/kinds/kind.d.ts +67 -0
- package/dist/core/graph/kinds/kind.js +15 -0
- package/dist/core/graph/kinds/live-read.d.ts +5 -0
- package/dist/core/graph/kinds/live-read.js +11 -0
- package/dist/core/graph/kinds/node.d.ts +12 -0
- package/dist/core/graph/kinds/node.js +87 -0
- package/dist/core/graph/kinds/owner.d.ts +2 -0
- package/dist/core/graph/kinds/owner.js +26 -0
- package/dist/core/graph/kinds/registry.d.ts +10 -0
- package/dist/core/graph/kinds/registry.js +58 -0
- package/dist/core/graph/kinds/render.d.ts +9 -0
- package/dist/core/graph/kinds/render.js +17 -0
- package/dist/core/graph/names.d.ts +57 -0
- package/dist/core/graph/names.js +183 -0
- package/dist/core/graph/objects.d.ts +88 -0
- package/dist/core/graph/objects.js +273 -0
- package/dist/core/graph/package-docs.d.ts +41 -0
- package/dist/core/graph/package-docs.js +198 -0
- package/dist/core/graph/package-files.d.ts +20 -0
- package/dist/core/graph/package-files.js +146 -0
- package/dist/core/graph/package-kinds.d.ts +22 -0
- package/dist/core/graph/package-kinds.js +49 -0
- package/dist/core/graph/package-reconcile.d.ts +17 -0
- package/dist/core/graph/package-reconcile.js +31 -0
- package/dist/core/graph/reader.d.ts +45 -0
- package/dist/core/graph/reader.js +218 -0
- package/dist/core/graph/receiver-url.d.ts +11 -0
- package/dist/core/graph/receiver-url.js +83 -0
- package/dist/core/graph/receivers.d.ts +28 -0
- package/dist/core/graph/receivers.js +66 -0
- package/dist/core/graph/repo-sync/exchange.d.ts +36 -0
- package/dist/core/graph/repo-sync/exchange.js +422 -0
- package/dist/core/graph/repo-sync/identity.d.ts +32 -0
- package/dist/core/graph/repo-sync/identity.js +147 -0
- package/dist/core/graph/repo-sync/index.d.ts +4 -0
- package/dist/core/graph/repo-sync/index.js +2 -0
- package/dist/core/graph/repo-sync/mirror.d.ts +30 -0
- package/dist/core/graph/repo-sync/mirror.js +170 -0
- package/dist/core/graph/repo-sync/ref-format.d.ts +80 -0
- package/dist/core/graph/repo-sync/ref-format.js +215 -0
- package/dist/core/graph/repo-sync/repos.d.ts +21 -0
- package/dist/core/graph/repo-sync/repos.js +57 -0
- package/dist/core/graph/repo-sync/sync.d.ts +40 -0
- package/dist/core/graph/repo-sync/sync.js +322 -0
- package/dist/core/graph/rules.d.ts +27 -0
- package/dist/core/graph/rules.js +134 -0
- package/dist/core/graph/types.d.ts +131 -0
- package/dist/core/graph/types.js +10 -0
- package/dist/core/graph/watches.d.ts +66 -0
- package/dist/core/graph/watches.js +177 -0
- package/dist/core/human/action-binding.d.ts +23 -0
- package/dist/core/human/action-binding.js +41 -0
- package/dist/core/human/answer-text.d.ts +5 -0
- package/dist/core/human/answer-text.js +100 -0
- package/dist/core/human/answer.d.ts +53 -0
- package/dist/core/human/answer.js +119 -0
- package/dist/core/human/claim.d.ts +23 -0
- package/dist/core/human/claim.js +67 -0
- package/dist/core/human/completion.d.ts +38 -0
- package/dist/core/human/completion.js +27 -0
- package/dist/core/human/component-docs.d.ts +18 -0
- package/dist/core/human/component-docs.js +442 -0
- package/dist/core/human/convention.d.ts +31 -0
- package/dist/core/human/convention.js +82 -0
- package/dist/core/human/feedback-companion.d.ts +19 -0
- package/dist/core/human/feedback-companion.js +92 -0
- package/dist/core/human/feedback.d.ts +62 -0
- package/dist/core/human/feedback.js +88 -0
- package/dist/core/human/page-authoring.d.ts +30 -0
- package/dist/core/human/page-authoring.js +19 -0
- package/dist/core/human/page-errors.d.ts +8 -0
- package/dist/core/human/page-errors.js +14 -0
- package/dist/core/human/page-eval.d.ts +25 -0
- package/dist/core/human/page-eval.js +125 -0
- package/dist/core/human/page-html-markdown.d.ts +8 -0
- package/dist/core/human/page-html-markdown.js +260 -0
- package/dist/core/human/page-markdown.d.ts +3 -0
- package/dist/core/human/page-markdown.js +295 -0
- package/dist/core/human/page-schema.d.ts +291 -0
- package/dist/core/human/page-schema.js +381 -0
- package/dist/core/human/page.d.ts +21 -0
- package/dist/core/human/page.js +251 -0
- package/dist/core/human/request-files.d.ts +14 -0
- package/dist/core/human/request-files.js +54 -0
- package/dist/core/human/requests.d.ts +156 -0
- package/dist/core/human/requests.js +619 -0
- package/dist/core/human/root.d.ts +4 -0
- package/dist/core/human/root.js +11 -0
- package/dist/core/human/summary.d.ts +3 -0
- package/dist/core/human/summary.js +5 -0
- package/dist/core/human/tickets.d.ts +68 -0
- package/dist/core/human/tickets.js +175 -0
- package/dist/core/human/types.d.ts +118 -0
- package/dist/core/human/types.js +1 -0
- package/dist/core/human/visible-paths.d.ts +16 -0
- package/dist/core/human/visible-paths.js +74 -0
- package/dist/core/human-actions.d.ts +25 -0
- package/dist/core/human-actions.js +101 -0
- package/dist/core/import/bundle/blob-keys.d.ts +10 -0
- package/dist/core/import/bundle/blob-keys.js +23 -0
- package/dist/core/import/bundle/layout.d.ts +90 -0
- package/dist/core/import/bundle/layout.js +117 -0
- package/dist/core/import/export/archive.d.ts +11 -0
- package/dist/core/import/export/archive.js +22 -0
- package/dist/core/import/export/cloud.d.ts +23 -0
- package/dist/core/import/export/cloud.js +47 -0
- package/dist/core/import/export/dump.d.ts +34 -0
- package/dist/core/import/export/dump.js +235 -0
- package/dist/core/import/export/files.d.ts +22 -0
- package/dist/core/import/export/files.js +107 -0
- package/dist/core/import/export/inline.d.ts +3 -0
- package/dist/core/import/export/inline.js +15 -0
- package/dist/core/import/export/source.d.ts +2 -0
- package/dist/core/import/export/source.js +5 -0
- package/dist/core/import/export/stores.d.ts +9 -0
- package/dist/core/import/export/stores.js +69 -0
- 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 +39 -0
- package/dist/core/inspector/core.js +296 -0
- package/dist/core/inspector/host.d.ts +46 -0
- package/dist/core/inspector/host.js +538 -0
- package/dist/core/inspector/model.d.ts +88 -0
- package/dist/core/inspector/model.js +225 -0
- package/dist/core/inspector/text.d.ts +5 -0
- package/dist/core/inspector/text.js +45 -0
- package/dist/core/inspector/transport.d.ts +6 -0
- package/dist/core/inspector/transport.js +36 -0
- package/dist/core/inspector/tui.d.ts +3 -0
- package/dist/core/inspector/tui.js +295 -0
- package/dist/core/io.js +7 -0
- package/dist/core/keybindings/background-bash.d.ts +13 -0
- package/dist/core/keybindings/background-bash.js +33 -0
- package/dist/core/keybindings/catalog.d.ts +1 -1
- package/dist/core/keybindings/inbox.d.ts +18 -0
- package/dist/core/keybindings/inbox.js +25 -0
- package/dist/core/keybindings/index.d.ts +8 -0
- package/dist/core/keybindings/index.js +7 -0
- package/dist/core/keybindings/match.d.ts +44 -0
- package/dist/core/keybindings/match.js +146 -0
- package/dist/core/keybindings/persistence.d.ts +18 -0
- package/dist/core/keybindings/persistence.js +49 -0
- package/dist/core/keybindings/resolve.d.ts +28 -0
- package/dist/core/keybindings/resolve.js +348 -0
- package/dist/core/layout-migrate/index.d.ts +38 -0
- package/dist/core/layout-migrate/index.js +523 -0
- package/dist/core/layout-migrate/paths.d.ts +30 -0
- package/dist/core/layout-migrate/paths.js +118 -0
- package/dist/core/layout-migrate/stored-paths.d.ts +9 -0
- package/dist/core/layout-migrate/stored-paths.js +424 -0
- package/dist/core/layout-migrate/stores.d.ts +30 -0
- package/dist/core/layout-migrate/stores.js +543 -0
- package/dist/core/ledger/account.d.ts +12 -0
- package/dist/core/ledger/account.js +13 -0
- package/dist/core/ledger/charges.d.ts +16 -0
- package/dist/core/ledger/charges.js +43 -0
- package/dist/core/ledger/check.d.ts +48 -0
- package/dist/core/ledger/check.js +38 -0
- package/dist/core/ledger/chunks.d.ts +8 -0
- package/dist/core/ledger/chunks.js +43 -0
- package/dist/core/ledger/index.d.ts +9 -0
- package/dist/core/ledger/index.js +10 -0
- package/dist/core/ledger/infra-allowance.d.ts +7 -0
- package/dist/core/ledger/infra-allowance.js +31 -0
- package/dist/core/ledger/limits.d.ts +10 -0
- package/dist/core/ledger/limits.js +35 -0
- package/dist/core/ledger/months.d.ts +6 -0
- package/dist/core/ledger/months.js +19 -0
- package/dist/core/ledger/payer.d.ts +34 -0
- package/dist/core/ledger/payer.js +14 -0
- package/dist/core/ledger/read.d.ts +57 -0
- package/dist/core/ledger/read.js +194 -0
- package/dist/core/ledger/totals.d.ts +10 -0
- package/dist/core/ledger/totals.js +34 -0
- package/dist/core/ledger/types.d.ts +75 -0
- package/dist/core/ledger/types.js +2 -0
- package/dist/core/llm/app-rungs.d.ts +16 -0
- package/dist/core/llm/app-rungs.js +59 -0
- package/dist/core/llm/body-limits.d.ts +7 -0
- package/dist/core/llm/body-limits.js +7 -0
- package/dist/core/llm/refusal.d.ts +14 -0
- package/dist/core/llm/refusal.js +22 -0
- package/dist/core/locked-file.d.ts +27 -0
- package/dist/core/locked-file.js +121 -0
- package/dist/core/log.d.ts +2 -0
- package/dist/core/log.js +5 -3
- package/dist/core/manifest-stale.d.ts +18 -0
- package/dist/core/manifest-stale.js +39 -0
- package/dist/core/model-auth/api-credential-store.d.ts +10 -0
- package/dist/core/model-auth/api-credential-store.js +40 -0
- package/dist/core/model-auth/daemon-login.d.ts +13 -0
- package/dist/core/model-auth/daemon-login.js +156 -0
- package/dist/core/model-auth/readiness.d.ts +12 -0
- package/dist/core/model-auth/readiness.js +48 -0
- package/dist/core/model-routes-pool.d.ts +14 -0
- package/dist/core/model-routes-pool.js +50 -0
- package/dist/core/model-routes.d.ts +98 -0
- package/dist/core/model-routes.js +190 -0
- package/dist/core/northlight/previews.d.ts +22 -0
- package/dist/core/northlight/previews.js +87 -0
- package/dist/core/nvim-launch.d.ts +7 -0
- package/dist/core/nvim-launch.js +45 -0
- package/dist/core/output.d.ts +35 -0
- package/dist/core/output.js +99 -0
- package/dist/core/pagination.d.ts +35 -0
- package/dist/core/pagination.js +88 -0
- package/dist/core/peer/client.d.ts +61 -0
- package/dist/core/peer/client.js +167 -0
- package/dist/core/peer/directory.d.ts +71 -0
- package/dist/core/peer/directory.js +167 -0
- package/dist/core/peer/envelope.d.ts +46 -0
- package/dist/core/peer/envelope.js +98 -0
- package/dist/core/peer/names.d.ts +5 -0
- package/dist/core/peer/names.js +8 -0
- package/dist/core/peer/outbox-store.d.ts +76 -0
- package/dist/core/peer/outbox-store.js +84 -0
- package/dist/core/peer/receiver.d.ts +8 -0
- package/dist/core/peer/receiver.js +54 -0
- package/dist/core/peer/stubs.d.ts +90 -0
- package/dist/core/peer/stubs.js +208 -0
- package/dist/core/peer/token.d.ts +13 -0
- package/dist/core/peer/token.js +29 -0
- package/dist/core/peer/version.d.ts +16 -0
- package/dist/core/peer/version.js +23 -0
- package/dist/core/permissions/builtin.d.ts +8 -0
- package/dist/core/permissions/builtin.js +27 -0
- package/dist/core/permissions/ceiling.d.ts +57 -0
- package/dist/core/permissions/ceiling.js +319 -0
- package/dist/core/permissions/compile.d.ts +14 -0
- package/dist/core/permissions/compile.js +175 -0
- package/dist/core/permissions/errors.d.ts +7 -0
- package/dist/core/permissions/errors.js +13 -0
- package/dist/core/permissions/evaluator.d.ts +33 -0
- package/dist/core/permissions/evaluator.js +96 -0
- package/dist/core/permissions/facts.d.ts +56 -0
- package/dist/core/permissions/facts.js +102 -0
- package/dist/core/permissions/schema-parser.d.ts +29 -0
- package/dist/core/permissions/schema-parser.js +151 -0
- package/dist/core/permissions/schemas.d.ts +21 -0
- package/dist/core/permissions/schemas.js +83 -0
- package/dist/core/permissions/sql.d.ts +16 -0
- package/dist/core/permissions/sql.js +31 -0
- package/dist/core/plugin-app.d.ts +31 -0
- package/dist/core/plugin-app.js +58 -0
- package/dist/core/plugin-quarantine.d.ts +16 -0
- package/dist/core/plugin-quarantine.js +70 -0
- package/dist/core/pool-credential-store.d.ts +31 -0
- package/dist/core/pool-credential-store.js +116 -0
- package/dist/core/predicate.d.ts +65 -0
- package/dist/core/predicate.js +191 -0
- package/dist/core/preview-registry.d.ts +59 -0
- package/dist/core/preview-registry.js +403 -0
- package/dist/core/profiles/default-binding.d.ts +15 -0
- package/dist/core/profiles/default-binding.js +29 -0
- package/dist/core/profiles/deletion-reservation.d.ts +12 -0
- package/dist/core/profiles/deletion-reservation.js +42 -0
- package/dist/core/profiles/select.d.ts +46 -0
- package/dist/core/profiles/select.js +738 -0
- package/dist/core/provider-credential.d.ts +6 -0
- package/dist/core/provider-credential.js +17 -0
- package/dist/core/provider-error-recognition.d.ts +30 -0
- package/dist/core/provider-error-recognition.js +82 -0
- package/dist/core/provider-failure.d.ts +42 -0
- package/dist/core/provider-failure.js +145 -0
- package/dist/core/provider-management.d.ts +11 -0
- package/dist/core/provider-management.js +9 -0
- package/dist/core/providers/approval.d.ts +23 -0
- package/dist/core/providers/approval.js +146 -0
- package/dist/core/providers/audit.d.ts +30 -0
- package/dist/core/providers/audit.js +52 -0
- package/dist/core/providers/bundles.d.ts +66 -0
- package/dist/core/providers/bundles.js +638 -0
- package/dist/core/providers/call.d.ts +51 -0
- package/dist/core/providers/call.js +480 -0
- package/dist/core/providers/description.d.ts +34 -0
- package/dist/core/providers/description.js +1 -0
- package/dist/core/providers/device-libs.d.ts +71 -0
- package/dist/core/providers/device-libs.js +202 -0
- package/dist/core/providers/device.d.ts +42 -0
- package/dist/core/providers/device.js +95 -0
- package/dist/core/providers/errors.d.ts +99 -0
- package/dist/core/providers/errors.js +136 -0
- package/dist/core/providers/files.d.ts +90 -0
- package/dist/core/providers/files.js +389 -0
- package/dist/core/providers/inflight.d.ts +13 -0
- package/dist/core/providers/inflight.js +14 -0
- package/dist/core/providers/mint.d.ts +29 -0
- package/dist/core/providers/mint.js +219 -0
- package/dist/core/providers/receipts.d.ts +26 -0
- package/dist/core/providers/receipts.js +61 -0
- package/dist/core/providers/request.d.ts +27 -0
- package/dist/core/providers/request.js +173 -0
- package/dist/core/providers/roots.d.ts +23 -0
- package/dist/core/providers/roots.js +118 -0
- package/dist/core/providers/token-cache.d.ts +54 -0
- package/dist/core/providers/token-cache.js +203 -0
- package/dist/core/remote-canvas-target.d.ts +4 -0
- package/dist/core/remote-canvas-target.js +30 -0
- package/dist/core/review/comments.d.ts +69 -0
- package/dist/core/review/comments.js +296 -0
- package/dist/core/review/companion.d.ts +33 -0
- package/dist/core/review/companion.js +208 -0
- package/dist/core/review/signal.d.ts +5 -0
- package/dist/core/review/signal.js +12 -0
- package/dist/core/review/store.d.ts +44 -0
- package/dist/core/review/store.js +178 -0
- package/dist/core/review/types.d.ts +139 -0
- package/dist/core/review/types.js +23 -0
- package/dist/core/runs/activity.d.ts +11 -0
- package/dist/core/runs/activity.js +57 -0
- package/dist/core/runs/events.d.ts +41 -0
- package/dist/core/runs/events.js +179 -0
- package/dist/core/runs/operations.d.ts +85 -0
- package/dist/core/runs/operations.js +741 -0
- package/dist/core/runs/questions.d.ts +80 -0
- package/dist/core/runs/questions.js +151 -0
- package/dist/core/runtime/banner.d.ts +15 -0
- package/dist/core/runtime/banner.js +53 -0
- package/dist/core/runtime/bearings-render.d.ts +62 -0
- package/dist/core/runtime/bearings-render.js +272 -0
- package/dist/core/runtime/bearings.d.ts +56 -0
- package/dist/core/runtime/bearings.js +199 -0
- package/dist/core/runtime/bin-contributions.d.ts +44 -0
- package/dist/core/runtime/bin-contributions.js +186 -0
- package/dist/core/runtime/blaxel-environment.d.ts +2 -0
- package/dist/core/runtime/blaxel-environment.js +8 -0
- package/dist/core/runtime/broker/bash-job-launch.d.ts +12 -0
- package/dist/core/runtime/broker/bash-job-launch.js +50 -0
- package/dist/core/runtime/broker/model-adapter.d.ts +27 -0
- package/dist/core/runtime/broker/model-adapter.js +413 -0
- package/dist/core/runtime/broker/read-ops.d.ts +27 -0
- package/dist/core/runtime/broker/read-ops.js +172 -0
- package/dist/core/runtime/broker/turn-cause.d.ts +7 -0
- package/dist/core/runtime/broker/turn-cause.js +30 -0
- package/dist/core/runtime/broker-protocol.d.ts +727 -0
- package/dist/core/runtime/broker-protocol.js +152 -0
- package/dist/core/runtime/broker-request.d.ts +37 -0
- package/dist/core/runtime/broker-request.js +86 -0
- package/dist/core/runtime/broker-sdk.d.ts +36 -0
- package/dist/core/runtime/broker-sdk.js +130 -0
- package/dist/core/runtime/canvas-extensions.d.ts +34 -0
- package/dist/core/runtime/canvas-extensions.js +100 -0
- package/dist/core/runtime/close.d.ts +49 -0
- package/dist/core/runtime/close.js +266 -0
- package/dist/core/runtime/command-expansion.d.ts +19 -0
- package/dist/core/runtime/command-expansion.js +104 -0
- package/dist/core/runtime/command-surface.d.ts +38 -0
- package/dist/core/runtime/command-surface.js +117 -0
- package/dist/core/runtime/crtr-theme.d.ts +12 -0
- package/dist/core/runtime/crtr-theme.js +146 -0
- package/dist/core/runtime/deliver-live.d.ts +38 -0
- package/dist/core/runtime/deliver-live.js +87 -0
- package/dist/core/runtime/fault-recovery.d.ts +23 -0
- package/dist/core/runtime/fault-recovery.js +83 -0
- package/dist/core/runtime/fault.d.ts +6 -0
- package/dist/core/runtime/fault.js +17 -0
- package/dist/core/runtime/fleet.d.ts +106 -0
- package/dist/core/runtime/fleet.js +75 -0
- package/dist/core/runtime/focus-viewer.d.ts +45 -0
- package/dist/core/runtime/focus-viewer.js +151 -0
- package/dist/core/runtime/front-door-env.d.ts +5 -0
- package/dist/core/runtime/front-door-env.js +16 -0
- package/dist/core/runtime/headless-pi.d.ts +37 -0
- package/dist/core/runtime/headless-pi.js +173 -0
- package/dist/core/runtime/host.d.ts +74 -0
- package/dist/core/runtime/host.js +695 -0
- package/dist/core/runtime/interactive-deliver.d.ts +22 -0
- package/dist/core/runtime/interactive-deliver.js +51 -0
- package/dist/core/runtime/invocation.d.ts +15 -0
- package/dist/core/runtime/invocation.js +10 -0
- package/dist/core/runtime/kickoff.d.ts +37 -0
- package/dist/core/runtime/kickoff.js +263 -0
- package/dist/core/runtime/launch-prompt.d.ts +8 -0
- package/dist/core/runtime/launch-prompt.js +13 -0
- package/dist/core/runtime/launch-target.d.ts +43 -0
- package/dist/core/runtime/launch-target.js +83 -0
- package/dist/core/runtime/launch.d.ts +206 -0
- package/dist/core/runtime/launch.js +498 -0
- package/dist/core/runtime/ledger.d.ts +10 -0
- package/dist/core/runtime/ledger.js +55 -0
- package/dist/core/runtime/lifecycle.d.ts +47 -0
- package/dist/core/runtime/lifecycle.js +283 -0
- package/dist/core/runtime/managed-provider-cooling.d.ts +24 -0
- package/dist/core/runtime/managed-provider-cooling.js +62 -0
- package/dist/core/runtime/memory-admission.d.ts +38 -0
- package/dist/core/runtime/memory-admission.js +68 -0
- package/dist/core/runtime/model-registry.d.ts +3 -0
- package/dist/core/runtime/model-registry.js +13 -0
- package/dist/core/runtime/model-selection.d.ts +54 -0
- package/dist/core/runtime/model-selection.js +135 -0
- package/dist/core/runtime/model-swap.d.ts +26 -0
- package/dist/core/runtime/model-swap.js +75 -0
- package/dist/core/runtime/naming.d.ts +69 -0
- package/dist/core/runtime/naming.js +298 -0
- package/dist/core/runtime/nerd-font.d.ts +46 -0
- package/dist/core/runtime/nerd-font.js +162 -0
- package/dist/core/runtime/nodes.d.ts +140 -0
- package/dist/core/runtime/nodes.js +506 -0
- package/dist/core/runtime/outcome-document.d.ts +58 -0
- package/dist/core/runtime/outcome-document.js +86 -0
- package/dist/core/runtime/output-result.d.ts +15 -0
- package/dist/core/runtime/output-result.js +32 -0
- package/dist/core/runtime/output-schema-refs.d.ts +3 -0
- package/dist/core/runtime/output-schema-refs.js +100 -0
- package/dist/core/runtime/package-health.d.ts +34 -0
- package/dist/core/runtime/package-health.js +100 -0
- package/dist/core/runtime/persona.d.ts +21 -0
- package/dist/core/runtime/persona.js +54 -0
- package/dist/core/runtime/pi-cli.d.ts +8 -0
- package/dist/core/runtime/pi-cli.js +65 -0
- package/dist/core/runtime/pi-vendored.d.ts +28 -0
- package/dist/core/runtime/pi-vendored.js +63 -0
- package/dist/core/runtime/placement-tmux.d.ts +32 -0
- package/dist/core/runtime/placement-tmux.js +81 -0
- package/dist/core/runtime/placement.d.ts +116 -0
- package/dist/core/runtime/placement.js +418 -0
- package/dist/core/runtime/progress-bar.d.ts +13 -0
- package/dist/core/runtime/progress-bar.js +50 -0
- package/dist/core/runtime/provider-credential-gate.d.ts +8 -0
- package/dist/core/runtime/provider-credential-gate.js +33 -0
- package/dist/core/runtime/recovery-hold.d.ts +21 -0
- package/dist/core/runtime/recovery-hold.js +46 -0
- package/dist/core/runtime/reopen.d.ts +49 -0
- package/dist/core/runtime/reopen.js +160 -0
- package/dist/core/runtime/revive.d.ts +114 -0
- package/dist/core/runtime/revive.js +739 -0
- package/dist/core/runtime/roadmap.d.ts +24 -0
- package/dist/core/runtime/roadmap.js +86 -0
- package/dist/core/runtime/runner/blaxel/client.d.ts +83 -0
- package/dist/core/runtime/runner/blaxel/client.js +140 -0
- package/dist/core/runtime/runner/blaxel/image-build.d.ts +74 -0
- package/dist/core/runtime/runner/blaxel/image-build.js +209 -0
- package/dist/core/runtime/runner/index.d.ts +9 -0
- package/dist/core/runtime/runner/index.js +37 -0
- package/dist/core/runtime/runner/machine/call.d.ts +8 -0
- package/dist/core/runtime/runner/machine/call.js +67 -0
- package/dist/core/runtime/runner/machine/environment.d.ts +1 -0
- package/dist/core/runtime/runner/machine/environment.js +7 -0
- package/dist/core/runtime/runner/machine/ops.d.ts +127 -0
- package/dist/core/runtime/runner/machine/ops.js +41 -0
- package/dist/core/runtime/runner/machine/runner.d.ts +12 -0
- package/dist/core/runtime/runner/machine/runner.js +90 -0
- package/dist/core/runtime/runner/process.d.ts +11 -0
- package/dist/core/runtime/runner/process.js +70 -0
- package/dist/core/runtime/runner/types.d.ts +101 -0
- package/dist/core/runtime/runner/types.js +16 -0
- package/dist/core/runtime/session-branch.d.ts +7 -0
- package/dist/core/runtime/session-branch.js +16 -0
- package/dist/core/runtime/session-cycles.d.ts +45 -0
- package/dist/core/runtime/session-cycles.js +110 -0
- package/dist/core/runtime/session-list-cache.d.ts +37 -0
- package/dist/core/runtime/session-list-cache.js +302 -0
- package/dist/core/runtime/session-visibility.d.ts +37 -0
- package/dist/core/runtime/session-visibility.js +99 -0
- package/dist/core/runtime/setup-marker.d.ts +8 -0
- package/dist/core/runtime/setup-marker.js +46 -0
- package/dist/core/runtime/situational-context.d.ts +16 -0
- package/dist/core/runtime/situational-context.js +54 -0
- package/dist/core/runtime/situational-live.d.ts +9 -0
- package/dist/core/runtime/situational-live.js +41 -0
- package/dist/core/runtime/spawn-env-rows.d.ts +5 -0
- package/dist/core/runtime/spawn-env-rows.js +15 -0
- package/dist/core/runtime/spawn-env.d.ts +40 -0
- package/dist/core/runtime/spawn-env.js +260 -0
- package/dist/core/runtime/spawn.d.ts +160 -0
- package/dist/core/runtime/spawn.js +699 -0
- package/dist/core/runtime/stamp/protocol.d.ts +90 -0
- package/dist/core/runtime/stamp/protocol.js +113 -0
- package/dist/core/runtime/start-check.d.ts +15 -0
- package/dist/core/runtime/start-check.js +31 -0
- package/dist/core/runtime/stop-guard.d.ts +31 -0
- package/dist/core/runtime/stop-guard.js +150 -0
- package/dist/core/runtime/structured-output.d.ts +36 -0
- package/dist/core/runtime/structured-output.js +112 -0
- package/dist/core/runtime/surface-bg.d.ts +13 -0
- package/dist/core/runtime/surface-bg.js +85 -0
- package/dist/core/runtime/tmux-bindings.d.ts +30 -0
- package/dist/core/runtime/tmux-bindings.js +743 -0
- package/dist/core/runtime/tmux-chrome.d.ts +2 -0
- package/dist/core/runtime/tmux-chrome.js +5 -0
- package/dist/core/runtime/tmux-driver.d.ts +328 -0
- package/dist/core/runtime/tmux-driver.js +713 -0
- package/dist/core/runtime/unsandboxed.d.ts +3 -0
- package/dist/core/runtime/unsandboxed.js +16 -0
- package/dist/core/runtime/view-socket.d.ts +61 -0
- package/dist/core/runtime/view-socket.js +194 -0
- package/dist/core/runtime/warm-pool.d.ts +79 -0
- package/dist/core/runtime/warm-pool.js +473 -0
- package/dist/core/scoped-state/db.d.ts +17 -0
- package/dist/core/scoped-state/db.js +261 -0
- package/dist/core/scoped-state/legacy-profiles.d.ts +11 -0
- package/dist/core/scoped-state/legacy-profiles.js +61 -0
- package/dist/core/scoped-state/migrate.d.ts +15 -0
- package/dist/core/scoped-state/migrate.js +332 -0
- package/dist/core/scoped-state/person-rows.d.ts +10 -0
- package/dist/core/scoped-state/person-rows.js +173 -0
- package/dist/core/scoped-state/schema.d.ts +10 -0
- package/dist/core/scoped-state/schema.js +47 -0
- package/dist/core/scopes.d.ts +20 -0
- package/dist/core/scopes.js +48 -0
- package/dist/core/secrets/env-rows.d.ts +18 -0
- package/dist/core/secrets/env-rows.js +40 -0
- package/dist/core/secrets/environment-owner.d.ts +8 -0
- package/dist/core/secrets/environment-owner.js +31 -0
- package/dist/core/secrets/environment-secrets.d.ts +14 -0
- package/dist/core/secrets/environment-secrets.js +14 -0
- package/dist/core/secrets/index.d.ts +2 -0
- package/dist/core/secrets/index.js +2 -0
- package/dist/core/secrets/key.d.ts +3 -0
- package/dist/core/secrets/key.js +33 -0
- package/dist/core/secrets/seal.d.ts +18 -0
- package/dist/core/secrets/seal.js +43 -0
- package/dist/core/secrets.d.ts +50 -0
- package/dist/core/secrets.js +147 -0
- package/dist/core/self-update.d.ts +27 -0
- package/dist/core/self-update.js +77 -0
- package/dist/core/session-model/session-state.d.ts +53 -0
- package/dist/core/session-model/session-state.js +180 -0
- package/dist/core/shell-segments.d.ts +42 -0
- package/dist/core/shell-segments.js +169 -0
- package/dist/core/spaces/cache-env.d.ts +2 -0
- package/dist/core/spaces/cache-env.js +15 -0
- package/dist/core/spaces/file-root.d.ts +23 -0
- package/dist/core/spaces/file-root.js +68 -0
- package/dist/core/spaces/mounts.d.ts +41 -0
- package/dist/core/spaces/mounts.js +126 -0
- package/dist/core/spaces/permissions.d.ts +19 -0
- package/dist/core/spaces/permissions.js +77 -0
- package/dist/core/spaces/process.d.ts +61 -0
- package/dist/core/spaces/process.js +172 -0
- package/dist/core/spaces/runtime-home.d.ts +5 -0
- package/dist/core/spaces/runtime-home.js +8 -0
- package/dist/core/spaces/space.d.ts +9 -0
- package/dist/core/spaces/space.js +58 -0
- package/dist/core/spaces/stop.d.ts +24 -0
- package/dist/core/spaces/stop.js +138 -0
- package/dist/core/spaces/users.d.ts +20 -0
- package/dist/core/spaces/users.js +43 -0
- package/dist/core/sqlite-statements.d.ts +4 -0
- package/dist/core/sqlite-statements.js +17 -0
- package/dist/core/statements.d.ts +17 -0
- package/dist/core/statements.js +81 -0
- package/dist/core/storage/attachments.d.ts +36 -0
- package/dist/core/storage/attachments.js +135 -0
- package/dist/core/storage/client.d.ts +109 -0
- package/dist/core/storage/client.js +231 -0
- package/dist/core/storage/download.d.ts +24 -0
- package/dist/core/storage/download.js +184 -0
- package/dist/core/storage/purge.d.ts +6 -0
- package/dist/core/storage/purge.js +52 -0
- package/dist/core/storage/tables.d.ts +67 -0
- package/dist/core/storage/tables.js +109 -0
- package/dist/core/subscription-state.d.ts +96 -0
- package/dist/core/subscription-state.js +438 -0
- package/dist/core/substrate/delivery/corpus.d.ts +26 -0
- package/dist/core/substrate/delivery/corpus.js +138 -0
- package/dist/core/substrate/delivery/deliver.d.ts +71 -0
- package/dist/core/substrate/delivery/deliver.js +333 -0
- package/dist/core/substrate/delivery/listings.d.ts +30 -0
- package/dist/core/substrate/delivery/listings.js +75 -0
- package/dist/core/substrate/delivery/match.d.ts +28 -0
- package/dist/core/substrate/delivery/match.js +146 -0
- package/dist/core/substrate/delivery/plan.d.ts +57 -0
- package/dist/core/substrate/delivery/plan.js +126 -0
- package/dist/core/substrate/delivery/render-boot.d.ts +20 -0
- package/dist/core/substrate/delivery/render-boot.js +329 -0
- package/dist/core/substrate/delivery/render-event.d.ts +47 -0
- package/dist/core/substrate/delivery/render-event.js +160 -0
- package/dist/core/substrate/delivery/sub-persona-menu.d.ts +2 -0
- package/dist/core/substrate/delivery/sub-persona-menu.js +24 -0
- package/dist/core/substrate/delivery/types.d.ts +30 -0
- package/dist/core/substrate/delivery/types.js +1 -0
- package/dist/core/substrate/gate-explain.d.ts +35 -0
- package/dist/core/substrate/gate-explain.js +397 -0
- package/dist/core/substrate/schema.d.ts +29 -0
- package/dist/core/substrate/schema.js +81 -0
- package/dist/core/substrate/subject-fields.d.ts +52 -0
- package/dist/core/substrate/subject-fields.js +39 -0
- package/dist/core/substrate/subject.d.ts +13 -0
- package/dist/core/substrate/subject.js +60 -0
- 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 +16 -0
- package/dist/core/termrender/display.js +56 -0
- package/dist/core/termrender/termrender.d.ts +71 -0
- package/dist/core/termrender/termrender.js +719 -0
- package/dist/core/termrender/version.d.ts +1 -0
- package/dist/core/termrender/version.js +1 -0
- package/dist/core/timing.d.ts +11 -0
- package/dist/core/timing.js +94 -0
- package/dist/core/tui/draw.d.ts +103 -0
- package/dist/core/tui/draw.js +378 -0
- package/dist/core/tui/fuzzy.d.ts +9 -0
- package/dist/core/tui/fuzzy.js +38 -0
- package/dist/core/tui/markdown.d.ts +17 -0
- package/dist/core/tui/markdown.js +407 -0
- package/dist/core/tui/page-host.d.ts +31 -0
- package/dist/core/tui/page-host.js +74 -0
- package/dist/core/tui/panel.d.ts +45 -0
- package/dist/core/tui/panel.js +142 -0
- package/dist/core/tui/terminal.d.ts +23 -0
- package/dist/core/tui/terminal.js +100 -0
- package/dist/core/wake.d.ts +89 -0
- package/dist/core/wake.js +296 -0
- package/dist/core/worktree-containment.d.ts +14 -0
- package/dist/core/worktree-containment.js +48 -0
- package/dist/core/worktree-landing.d.ts +44 -0
- package/dist/core/worktree-landing.js +56 -0
- package/dist/core/worktree-mutation-async.d.ts +23 -0
- package/dist/core/worktree-mutation-async.js +335 -0
- package/dist/core/worktree-remove.d.ts +15 -0
- package/dist/core/worktree-remove.js +84 -0
- package/dist/core/worktree.d.ts +121 -0
- package/dist/core/worktree.js +909 -0
- package/dist/daemon/api/deferred-head.d.ts +14 -0
- package/dist/daemon/api/deferred-head.js +117 -0
- package/dist/daemon/api/environment-of.d.ts +18 -0
- package/dist/daemon/api/environment-of.js +40 -0
- package/dist/daemon/api/handlers/git-credential.d.ts +11 -0
- package/dist/daemon/api/handlers/git-credential.js +64 -0
- package/dist/daemon/api/handlers/providers.d.ts +83 -0
- package/dist/daemon/api/handlers/providers.js +283 -0
- package/dist/daemon/api/handlers/validate.d.ts +23 -0
- package/dist/daemon/api/handlers/validate.js +58 -0
- package/dist/daemon/api/map.d.ts +167 -0
- package/dist/daemon/api/map.js +764 -0
- package/dist/daemon/api/operations.d.ts +18 -0
- package/dist/daemon/api/operations.js +306 -0
- package/dist/daemon/api/principal.d.ts +65 -0
- package/dist/daemon/api/principal.js +143 -0
- package/dist/daemon/api/reader.d.ts +24 -0
- package/dist/daemon/api/reader.js +123 -0
- package/dist/daemon/api/router.d.ts +193 -0
- package/dist/daemon/api/router.js +536 -0
- package/dist/daemon/api/sync-notice.d.ts +17 -0
- package/dist/daemon/api/sync-notice.js +46 -0
- package/dist/daemon/api/viewer-presence.d.ts +20 -0
- package/dist/daemon/api/viewer-presence.js +100 -0
- package/dist/daemon/broker-signals/bus.d.ts +3 -2
- package/dist/daemon/broker-signals/bus.js +3 -2
- package/dist/daemon/companion-retire.d.ts +4 -0
- package/dist/daemon/companion-retire.js +44 -0
- package/dist/daemon/control.d.ts +40 -0
- package/dist/daemon/control.js +22 -0
- package/dist/daemon/cron/authority.d.ts +38 -0
- package/dist/daemon/cron/authority.js +90 -0
- package/dist/daemon/cron/live-runs.d.ts +54 -0
- package/dist/daemon/cron/live-runs.js +66 -0
- package/dist/daemon/cron/run-socket.d.ts +30 -0
- package/dist/daemon/cron/run-socket.js +170 -0
- package/dist/daemon/drain.d.ts +25 -0
- package/dist/daemon/drain.js +76 -0
- package/dist/daemon/human/finish.d.ts +24 -0
- package/dist/daemon/human/finish.js +178 -0
- package/dist/daemon/human/settle.d.ts +44 -0
- package/dist/daemon/human/settle.js +103 -0
- package/dist/daemon/machine-link/config.d.ts +45 -0
- package/dist/daemon/machine-link/config.js +63 -0
- package/dist/daemon/machine-link/credential.d.ts +7 -0
- package/dist/daemon/machine-link/credential.js +24 -0
- package/dist/daemon/machine-link/forward.d.ts +16 -0
- package/dist/daemon/machine-link/forward.js +181 -0
- package/dist/daemon/machine-link/frames.d.ts +49 -0
- package/dist/daemon/machine-link/frames.js +25 -0
- package/dist/daemon/machine-link/holder.d.ts +73 -0
- package/dist/daemon/machine-link/holder.js +272 -0
- package/dist/daemon/machine-link/move-notify.d.ts +4 -0
- package/dist/daemon/machine-link/move-notify.js +15 -0
- package/dist/daemon/manage.d.ts +19 -3
- package/dist/daemon/manage.js +21 -6
- package/dist/daemon/park-activity.d.ts +10 -0
- package/dist/daemon/park-activity.js +33 -0
- package/dist/daemon/park-pending.d.ts +25 -0
- package/dist/daemon/park-pending.js +76 -0
- package/dist/daemon/postgres/binary.d.ts +17 -0
- package/dist/daemon/postgres/binary.js +193 -0
- package/dist/daemon/postgres/cluster.d.ts +37 -0
- package/dist/daemon/postgres/cluster.js +111 -0
- package/dist/daemon/postgres/pins.d.ts +7 -0
- package/dist/daemon/postgres/pins.js +16 -0
- package/dist/daemon/postgres/supervisor.d.ts +95 -0
- package/dist/daemon/postgres/supervisor.js +177 -0
- package/dist/daemon/readiness.d.ts +11 -0
- package/dist/daemon/readiness.js +37 -0
- package/dist/daemon/reconcilers/broker-supervision.d.ts +112 -0
- package/dist/daemon/reconcilers/broker-supervision.js +842 -0
- package/dist/daemon/reconcilers/ledger-sandbox.d.ts +54 -0
- package/dist/daemon/reconcilers/ledger-sandbox.js +249 -0
- package/dist/daemon/reconcilers/live-obligation.d.ts +77 -0
- package/dist/daemon/reconcilers/live-obligation.js +114 -0
- package/dist/daemon/reconcilers/node-lifecycle/launch-failure.d.ts +1 -0
- package/dist/daemon/reconcilers/node-lifecycle/launch-failure.js +8 -0
- package/dist/daemon/reconcilers/node-lifecycle/node-person.d.ts +9 -0
- package/dist/daemon/reconcilers/node-lifecycle/node-person.js +40 -0
- package/dist/daemon/reconcilers/node-lifecycle/remote-wake.d.ts +32 -0
- package/dist/daemon/reconcilers/node-lifecycle/remote-wake.js +124 -0
- package/dist/daemon/reconcilers/recipe-image.d.ts +49 -0
- package/dist/daemon/reconcilers/recipe-image.js +145 -0
- package/dist/daemon/reconcilers/throttled-lane.d.ts +11 -0
- package/dist/daemon/reconcilers/throttled-lane.js +63 -0
- package/dist/daemon/runs/append-section.d.ts +9 -0
- package/dist/daemon/runs/append-section.js +135 -0
- package/dist/daemon/runs/observer.d.ts +17 -0
- package/dist/daemon/runs/observer.js +441 -0
- package/dist/daemon/runs/view-transport.d.ts +19 -0
- package/dist/daemon/runs/view-transport.js +81 -0
- package/dist/daemon/structured-requests/sidecar.d.ts +4 -0
- package/dist/daemon/structured-requests/sidecar.js +5 -0
- package/dist/hook-authoring.d.ts +130 -0
- package/dist/hook-authoring.js +447 -0
- package/dist/hook-process.d.ts +7 -0
- package/dist/hook-process.js +34 -0
- package/dist/launcher/client.d.ts +6 -0
- package/dist/launcher/client.js +52 -0
- package/dist/launcher/limits/policy.d.ts +141 -0
- package/dist/launcher/limits/policy.js +142 -0
- package/dist/launcher/limits/settings.d.ts +19 -0
- package/dist/launcher/limits/settings.js +94 -0
- package/dist/launcher/spec.d.ts +181 -0
- package/dist/launcher/spec.js +10 -0
- package/dist/migrations/004-canvas-documents/apply.d.ts +8 -0
- package/dist/migrations/004-canvas-documents/apply.js +113 -0
- package/dist/migrations/004-canvas-documents/fields.d.ts +24 -0
- package/dist/migrations/004-canvas-documents/fields.js +52 -0
- package/dist/migrations/004-canvas-documents/index.d.ts +16 -0
- package/dist/migrations/004-canvas-documents/index.js +88 -0
- package/dist/migrations/004-canvas-documents/legacy/discover.d.ts +16 -0
- package/dist/migrations/004-canvas-documents/legacy/discover.js +251 -0
- package/dist/migrations/004-canvas-documents/legacy/history.d.ts +5 -0
- package/dist/migrations/004-canvas-documents/legacy/history.js +37 -0
- package/dist/migrations/004-canvas-documents/legacy/nested.d.ts +7 -0
- package/dist/migrations/004-canvas-documents/legacy/nested.js +37 -0
- package/dist/migrations/004-canvas-documents/legacy/parse.d.ts +14 -0
- package/dist/migrations/004-canvas-documents/legacy/parse.js +24 -0
- package/dist/migrations/004-canvas-documents/legacy/types.d.ts +91 -0
- package/dist/migrations/004-canvas-documents/legacy/types.js +3 -0
- package/dist/migrations/004-canvas-documents/plan.d.ts +102 -0
- package/dist/migrations/004-canvas-documents/plan.js +410 -0
- package/dist/migrations/004-canvas-documents/pointers.d.ts +23 -0
- package/dist/migrations/004-canvas-documents/pointers.js +95 -0
- package/dist/migrations/activation.d.ts +17 -0
- package/dist/migrations/activation.js +46 -0
- package/dist/shared/crtr-version.d.ts +2 -0
- package/dist/shared/crtr-version.js +18 -0
- package/dist/shared/inbox-entry-body.js +6 -2
- package/dist/shared/inline-ref-grammar.d.ts +53 -0
- package/dist/shared/inline-ref-grammar.js +99 -0
- package/dist/shared/shell-quote.d.ts +3 -0
- package/dist/shared/shell-quote.js +5 -0
- package/dist/shared/strip-cd-prefix.d.ts +1 -0
- package/dist/shared/strip-cd-prefix.js +13 -0
- package/dist/shared/tool-groups.d.ts +26 -0
- package/dist/shared/tool-groups.js +64 -0
- package/dist/shared/traceparent.d.ts +6 -0
- package/dist/shared/traceparent.js +28 -0
- package/dist/shared/turn-replies.d.ts +27 -0
- package/dist/shared/turn-replies.js +71 -0
- package/package.json +1 -1
|
@@ -0,0 +1,741 @@
|
|
|
1
|
+
import { coveredByAny } from '../../shared/env.js';
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { ApiError } from '../../api/errors.js';
|
|
4
|
+
import { CrtrError } from '../errors.js';
|
|
5
|
+
import { isCloudRole } from '../canvas/person.js';
|
|
6
|
+
import { isAbsolute, relative, resolve, sep, join } from 'node:path';
|
|
7
|
+
import { SessionManager } from '@earendil-works/pi-coding-agent';
|
|
8
|
+
import { covers } from '@north-light/identity';
|
|
9
|
+
import { openDb, withCanvasWrite } from '../canvas/db.js';
|
|
10
|
+
import { deleteNodeWithOwned } from '../graph/deletion.js';
|
|
11
|
+
import { getById } from '../graph/objects.js';
|
|
12
|
+
import { repairRunConversations } from '../canvas/sessions.js';
|
|
13
|
+
import { getNode, nodeFiles, removeNodeFiles, updateNode } from '../canvas/canvas.js';
|
|
14
|
+
import { fullName } from '../canvas/labels.js';
|
|
15
|
+
import { renameWindow } from '../runtime/placement.js';
|
|
16
|
+
import { liveExecutionForNode } from '../canvas/executions.js';
|
|
17
|
+
import { conversationStore, isConversationNotFound } from '../conversation-store/index.js';
|
|
18
|
+
import { PARKED_RESIDENT_SQL } from '../canvas/canvas.js';
|
|
19
|
+
import { WAKE_MAIL_SQL } from '../canvas/deliveries.js';
|
|
20
|
+
import { readNodeRecap } from '../canvas/node-recap.js';
|
|
21
|
+
import { enqueueNodeMail } from '../feed/messages.js';
|
|
22
|
+
import { newestReportBody } from '../feed/reports.js';
|
|
23
|
+
import { ensureAppProfile, loadExactProfileManifest } from '../profiles/manifest.js';
|
|
24
|
+
import { stopNodeSandboxes } from '../spaces/stop.js';
|
|
25
|
+
import { BrokerUnreachableError } from '../runtime/broker-request.js';
|
|
26
|
+
import { interruptLive } from '../runtime/interactive-deliver.js';
|
|
27
|
+
import { isBrokerLive } from '../runtime/model-swap.js';
|
|
28
|
+
import { newNodeId } from '../runtime/nodes.js';
|
|
29
|
+
import { reviveNode } from '../runtime/revive.js';
|
|
30
|
+
import { spawnChildPrepared } from '../runtime/spawn.js';
|
|
31
|
+
import { isPortableModelToken } from '../runtime/launch.js';
|
|
32
|
+
import { parseDurationMs } from '../wake.js';
|
|
33
|
+
import { expandModelCandidates, parseModelSpec } from '../model-routes.js';
|
|
34
|
+
import { payerOfGrant } from '../grants/mirror.js';
|
|
35
|
+
import { isolatedBrokerLauncherAvailable } from '../runtime/host.js';
|
|
36
|
+
import { blaxelEnvironmentOf } from '../runtime/blaxel-environment.js';
|
|
37
|
+
import { resolveRunKind, resolveRunModel } from '../runtime/launch-target.js';
|
|
38
|
+
import { cycleAwareMessages } from '../runtime/session-cycles.js';
|
|
39
|
+
import { originFor } from '../runtime/stamp/protocol.js';
|
|
40
|
+
import { readOutputRequest, readOutputResult } from '../runtime/output-result.js';
|
|
41
|
+
import { admitLegacyStructuredOutput } from '../../daemon/structured-requests/sidecar.js';
|
|
42
|
+
import { runSchemaRepromptPending } from '../runtime/stop-guard.js';
|
|
43
|
+
import { toRunOutcomeDTO } from '../../daemon/api/map.js';
|
|
44
|
+
import { openAssistantMessageStartSequence } from '../../daemon/runs/observer.js';
|
|
45
|
+
import { closeNode } from '../runtime/close.js';
|
|
46
|
+
import { parseScope } from '@north-light/identity';
|
|
47
|
+
import { appendRunEvent, lockRunRoot, subscribeRunEvents } from './events.js';
|
|
48
|
+
import { runActivity } from './activity.js';
|
|
49
|
+
import { cancelOpenQuestions, openNoticeIds, openQuestionIds } from './questions.js';
|
|
50
|
+
import { appSpace } from '../layout.js';
|
|
51
|
+
import { ensureAppSpace } from '../spaces/space.js';
|
|
52
|
+
import { assertUploadsUsable, resolveStorageUrls } from '../storage/attachments.js';
|
|
53
|
+
import { storageClient, storageConfig } from '../storage/client.js';
|
|
54
|
+
import { deleteUploadRow, insertUploadUses, releaseRunUploads, runUsesPath } from '../storage/tables.js';
|
|
55
|
+
import { abortProviderCalls } from '../providers/inflight.js';
|
|
56
|
+
import { filterAsync, mapAsync } from '../async-array.js';
|
|
57
|
+
const defaultResolver = (runId, grantee, text, taken) => resolveStorageUrls(grantee, runId, text, taken ? { taken } : {});
|
|
58
|
+
/** Storage deletes `run.delete` waits for before it answers. */
|
|
59
|
+
export const RUN_DELETE_STORAGE_BUDGET_MS = 3_000;
|
|
60
|
+
export class RunError extends Error {
|
|
61
|
+
status;
|
|
62
|
+
code;
|
|
63
|
+
param;
|
|
64
|
+
details;
|
|
65
|
+
scope;
|
|
66
|
+
retryable;
|
|
67
|
+
constructor(status, code, message, param, details, scope, retryable = status === 503) {
|
|
68
|
+
super(message);
|
|
69
|
+
this.status = status;
|
|
70
|
+
this.code = code;
|
|
71
|
+
this.param = param;
|
|
72
|
+
this.details = details;
|
|
73
|
+
this.scope = scope;
|
|
74
|
+
this.retryable = retryable;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const invalid = (message, param) => new RunError(400, 'invalid_request', message, param);
|
|
78
|
+
const missing = () => new RunError(404, 'not_found', 'run not found');
|
|
79
|
+
const usage = () => ({ input_tokens: 0, output_tokens: 0, cache_read_tokens: 0, cache_write_tokens: 0, cost_usd: 0 });
|
|
80
|
+
const db = async () => await openDb();
|
|
81
|
+
export async function ownedRun(id, grantee, allowDeleting = false) {
|
|
82
|
+
const node = await getNode(id);
|
|
83
|
+
if (!node || node.parent !== null || node.run_id !== id || node.grantee !== grantee || (!allowDeleting && node.deleting_at))
|
|
84
|
+
throw missing();
|
|
85
|
+
return node;
|
|
86
|
+
}
|
|
87
|
+
/** Statuses `run.get` `wait` returns on: the run needs no more waiting from the caller's side. */
|
|
88
|
+
const RESTING = ['waiting_on_user', 'idle', 'settled'];
|
|
89
|
+
async function runStatus(root) {
|
|
90
|
+
if (root.status === 'canceled' || root.status === 'dead' || (root.status === 'done' && root.intent !== 'parked'))
|
|
91
|
+
return 'settled';
|
|
92
|
+
const active = await (await db()).prepare(`SELECT 1 FROM node_rows n WHERE n.run_id = ? AND n.status = 'active' AND
|
|
93
|
+
(n.last_settled_at IS NULL OR EXISTS (
|
|
94
|
+
SELECT 1 FROM run_events e WHERE e.run_id = ? AND e.node_id = n.node_id AND e.type = 'node.turn.started'
|
|
95
|
+
AND e.sequence_number > COALESCE((SELECT MAX(c.sequence_number) FROM run_events c
|
|
96
|
+
WHERE c.run_id = e.run_id AND c.node_id = e.node_id AND c.type = 'node.turn.completed'), 0)
|
|
97
|
+
)) LIMIT 1`).get(root.node_id, root.node_id);
|
|
98
|
+
// A root the stop guard is about to reprompt with its armed schema is still
|
|
99
|
+
// working: the run reads idle only once the bound lets it go dormant (D2-RES-10).
|
|
100
|
+
// A root that has not yet settled a turn is still starting, unless it is parked:
|
|
101
|
+
// parking ends its broker, so nothing is left to start (run-model row 5).
|
|
102
|
+
const starting = !root.last_settled_at && root.status !== 'done';
|
|
103
|
+
if (active || starting || await runSchemaRepromptPending(root))
|
|
104
|
+
return 'running';
|
|
105
|
+
// Row 3 ranks open questions ahead of wake mail (run-model "Node status → run status").
|
|
106
|
+
if ((await openQuestionIds(root.node_id)).length)
|
|
107
|
+
return 'waiting_on_user';
|
|
108
|
+
// Row 4: only wake-tier mail moves a run, and only mail the runtime will launch a broker for:
|
|
109
|
+
// a live node (`active`/`idle`) or a parked resident it reopens (the node-lifecycle tick). Mail to
|
|
110
|
+
// a finalized, canceled, dead or deleting node never launches one, and passive notes, such as a
|
|
111
|
+
// stopped background job's, wait for the next turn. Mail the broker has claimed (`handed_off`) still counts:
|
|
112
|
+
// the claim precedes the turn's `node.turn.started` event, and until that turn settles and acknowledges the
|
|
113
|
+
// mail, an `idle` read would let `run.get` `wait` return before the turn that mail starts.
|
|
114
|
+
const mail = await (await db()).prepare(`SELECT 1 FROM deliveries d JOIN nodes n ON n.node_id = d.destination_id
|
|
115
|
+
WHERE n.run_id = ? AND ${WAKE_MAIL_SQL('d', "'armed', 'pending', 'handed_off'")}
|
|
116
|
+
AND (n.status IN ('active', 'idle') OR ${PARKED_RESIDENT_SQL('n')}) LIMIT 1`).get(root.node_id);
|
|
117
|
+
return mail ? 'running' : 'idle';
|
|
118
|
+
}
|
|
119
|
+
/** Whether the run has a turn in flight or work owed to it (the `running` run status). */
|
|
120
|
+
export async function runIsRunning(runId) {
|
|
121
|
+
const root = await getNode(runId);
|
|
122
|
+
return root !== null && await runStatus(root) === 'running';
|
|
123
|
+
}
|
|
124
|
+
export async function runObject(root) {
|
|
125
|
+
await repairRunConversations(root.node_id);
|
|
126
|
+
root = await getNode(root.node_id) ?? root;
|
|
127
|
+
const status = await runStatus(root);
|
|
128
|
+
const pending = status === 'settled' ? [] : await openQuestionIds(root.node_id);
|
|
129
|
+
const report = await newestReportBody(root.node_id) || undefined;
|
|
130
|
+
const outcome = status === 'settled' ? await toRunOutcomeDTO(root) : null;
|
|
131
|
+
const result = outcome?.kind === 'result' ? await readOutputResult(root.node_id) : undefined;
|
|
132
|
+
const recap = readNodeRecap(root.node_id);
|
|
133
|
+
return {
|
|
134
|
+
run_id: root.node_id, name: root.name, status, ...(outcome ? { outcome } : {}),
|
|
135
|
+
...(result === undefined ? {} : { result }),
|
|
136
|
+
...(report !== undefined ? { last_report: report } : {}), ...(recap ? { recap } : {}), pending_question_ids: pending, open_notice_ids: status === 'settled' ? [] : await openNoticeIds(root.node_id),
|
|
137
|
+
...(root.last_turn_error_json ? { last_turn_error: JSON.parse(root.last_turn_error_json) } : {}),
|
|
138
|
+
usage: JSON.parse(root.usage_json ?? JSON.stringify(usage())), payer: await payerOfGrant(root.grant_id), scopes: root.scopes,
|
|
139
|
+
metadata: root.metadata_json ? JSON.parse(root.metadata_json) : {}, created_at: root.created,
|
|
140
|
+
...(status === 'settled' && root.outcome_at ? { settled_at: root.outcome_at } : {}), latest_sequence: (root.event_cursor ?? 1) - 1,
|
|
141
|
+
last_activity_at: root.last_activity_at, activity: await runActivity(root.node_id, status),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/** How long a kept key replays: a record this old or older reads as absent. The SDK's conformance scenarios hold FakeCloud to it. */
|
|
145
|
+
export const IDEMPOTENCY_WINDOW_MS = 86_400_000;
|
|
146
|
+
const MAX_IDEMPOTENCY_KEY = 255;
|
|
147
|
+
/** An `Idempotency-Key` header value: absent, or 1–255 characters. */
|
|
148
|
+
export function idempotencyKeyOf(header) {
|
|
149
|
+
if (header === undefined)
|
|
150
|
+
return undefined;
|
|
151
|
+
if (typeof header !== 'string' || !header.length || header.length > MAX_IDEMPOTENCY_KEY)
|
|
152
|
+
throw invalid(`Idempotency-Key must be 1-${MAX_IDEMPOTENCY_KEY} characters`);
|
|
153
|
+
return header;
|
|
154
|
+
}
|
|
155
|
+
/** The person a cloud role's per-person rows and keys are cut to: undefined on a Mac (one person, nothing to cut); on a cloud role the caller's `sub`,
|
|
156
|
+
* and a caller without one is refused, so a missing `sub` can never read as "every person". */
|
|
157
|
+
export function cloudPersonScope(sub) {
|
|
158
|
+
if (!isCloudRole())
|
|
159
|
+
return undefined;
|
|
160
|
+
if (!sub)
|
|
161
|
+
throw new RunError(403, 'permission_error', 'a cloud role serves this call only for a token that names a person');
|
|
162
|
+
return sub;
|
|
163
|
+
}
|
|
164
|
+
/** The key as stored and locked. On a cloud role many people share one database and one app grant name, so a key belongs to its person:
|
|
165
|
+
* one person's key never replays, or conflicts with, another's. A Mac holds one person and keeps the bare key. */
|
|
166
|
+
function personKey(sub, key) {
|
|
167
|
+
const person = cloudPersonScope(sub);
|
|
168
|
+
return person === undefined ? key : `${person}:${key}`;
|
|
169
|
+
}
|
|
170
|
+
/** The stored result of an earlier operation under (grantee, key) within the window. A kept key
|
|
171
|
+
* with a different request hash is `idempotency_conflict`; the hash covers the operation and its
|
|
172
|
+
* target, so one key cannot stand for two different operations. Reads in the caller's transaction when given. */
|
|
173
|
+
async function findIdempotent(grantee, key, bodyHash, db) {
|
|
174
|
+
// In a transaction, concurrent requests under one key take turns: the later waits for the earlier commit, then reads its record.
|
|
175
|
+
if (db)
|
|
176
|
+
await db.prepare('SELECT pg_advisory_xact_lock(hashtext(?))').get(`idempotency:${grantee}:${key}`);
|
|
177
|
+
db ??= await openDb();
|
|
178
|
+
const existing = await db.prepare('SELECT body_hash, run_id, response_json, created_at FROM idempotency_keys WHERE grantee = ? AND key = ?').get(grantee, key);
|
|
179
|
+
if (!existing || Date.now() - Date.parse(existing.created_at) >= IDEMPOTENCY_WINDOW_MS)
|
|
180
|
+
return undefined;
|
|
181
|
+
if (existing.body_hash !== bodyHash)
|
|
182
|
+
throw new RunError(409, 'idempotency_conflict', 'key used with a different request');
|
|
183
|
+
return { run_id: existing.run_id, response: JSON.parse(existing.response_json) };
|
|
184
|
+
}
|
|
185
|
+
/** Records the result in the caller's transaction, replacing an expired row for the same key. */
|
|
186
|
+
async function recordIdempotent(tx, grantee, key, bodyHash, runId, response, createdAt) {
|
|
187
|
+
await tx.prepare('DELETE FROM idempotency_keys WHERE grantee = ? AND key = ? AND created_at <= ?')
|
|
188
|
+
.run(grantee, key, new Date(Date.now() - IDEMPOTENCY_WINDOW_MS).toISOString());
|
|
189
|
+
await tx.prepare('INSERT INTO idempotency_keys (grantee, key, body_hash, run_id, response_json, created_at) VALUES (?, ?, ?, ?, ?, ?)')
|
|
190
|
+
.run(grantee, key, bodyHash, runId, JSON.stringify(response), createdAt);
|
|
191
|
+
}
|
|
192
|
+
/** Delete keys past their window; returns how many were removed. */
|
|
193
|
+
export async function pruneExpiredIdempotencyKeys(now = Date.now()) {
|
|
194
|
+
return Number((await (await openDb()).prepare('DELETE FROM idempotency_keys WHERE created_at <= ?').run(new Date(now - IDEMPOTENCY_WINDOW_MS).toISOString())).changes);
|
|
195
|
+
}
|
|
196
|
+
/** The one path that accepts a message to a run's root: the mail row and its `node.message.accepted`
|
|
197
|
+
* event, plus the attachment uses, in the caller's transaction. Returns the message id and the event's sequence. */
|
|
198
|
+
async function acceptRunMessage(tx, runId, grantee, attachments, startTurn, steer = false) {
|
|
199
|
+
const message = attachments.text;
|
|
200
|
+
let sequence = 0;
|
|
201
|
+
const entry = await enqueueNodeMail(runId, { kind: 'message', label: message.slice(0, 120), senderNodeId: 'human', senderName: grantee, bodyJson: startTurn ? { body: message, ...(steer ? { steer: true } : {}) } : { body: message, start_turn: false }, urgency: startTurn ? 'normal' : 'deferred', wake: startTurn ? 1 : 0,
|
|
202
|
+
withinEnqueue: async (inner, messageId) => {
|
|
203
|
+
if (attachments.uses.length) {
|
|
204
|
+
await assertUploadsUsable(grantee, attachments.uses, inner);
|
|
205
|
+
await insertUploadUses(attachments.uses.map(({ upload_id, path, blob_key }) => ({ upload_id, path, blob_key, run_id: runId })), inner);
|
|
206
|
+
}
|
|
207
|
+
sequence = (await appendRunEvent(inner, runId, runId, 'node.message.accepted', { message_id: messageId, start_turn: startTurn })).sequence_number;
|
|
208
|
+
} });
|
|
209
|
+
return { messageId: entry.messageId, sequence };
|
|
210
|
+
}
|
|
211
|
+
/** Thrown inside the create transaction when a concurrent start under the same key committed first: rolls the
|
|
212
|
+
* loser's writes back and carries the winner's stored answer to `startRun`'s catch. Never leaves `startRun`. */
|
|
213
|
+
class IdempotentReplay extends Error {
|
|
214
|
+
winner;
|
|
215
|
+
constructor(winner) {
|
|
216
|
+
super('idempotent replay');
|
|
217
|
+
this.winner = winner;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/** Longest `run.start` deadline an app may set: 24 hours. The grammar is `crtr node new --deadline`'s (parts of `<int>[smhd]`, summed). */
|
|
221
|
+
export const RUN_DEADLINE_MAX_MS = 24 * 60 * 60 * 1000;
|
|
222
|
+
/** The milliseconds of a `run.start` `deadline` duration; refuses a malformed, zero, or over-24h value as `invalid_request` on `deadline`. */
|
|
223
|
+
export function parseRunDeadlineMs(raw) {
|
|
224
|
+
const ms = typeof raw === 'string' ? parseDurationMs(raw) : null;
|
|
225
|
+
if (ms === null || !Number.isSafeInteger(ms))
|
|
226
|
+
throw invalid(`deadline '${String(raw)}' is not a duration; use one or more <int>[smhd] parts such as 10m or 1h30m`, 'deadline');
|
|
227
|
+
if (ms <= 0)
|
|
228
|
+
throw invalid('deadline must be greater than zero', 'deadline');
|
|
229
|
+
if (ms > RUN_DEADLINE_MAX_MS)
|
|
230
|
+
throw invalid('deadline must be at most 24h', 'deadline');
|
|
231
|
+
return ms;
|
|
232
|
+
}
|
|
233
|
+
export async function startRun(principal, input, idempotencyKey, resolveAttachments = defaultResolver) {
|
|
234
|
+
// Refuse before idempotency replay, attachment fetch, or node birth: a direct
|
|
235
|
+
// broker spawn would expose the host filesystem and network to this run.
|
|
236
|
+
// A run whose profile points at a Blaxel environment is confined by its sandbox and needs no launcher.
|
|
237
|
+
if (input.isolated && !isolatedBrokerLauncherAvailable()
|
|
238
|
+
&& await blaxelEnvironmentOf((input.profile === undefined ? await ensureAppProfile(principal.grantee) : loadExactProfileManifest(input.profile)).profileId) === null) {
|
|
239
|
+
throw new RunError(503, 'isolated_unavailable', 'isolated runs require the Linux root launcher', 'isolated');
|
|
240
|
+
}
|
|
241
|
+
// Validated before anything is created or replayed. The duration string (not the instant) is what the body hash covers,
|
|
242
|
+
// so a retry of the same keyed request replays instead of conflicting on a moved clock.
|
|
243
|
+
if (input.deadline !== undefined)
|
|
244
|
+
parseRunDeadlineMs(input.deadline);
|
|
245
|
+
const { causedBy: _causedBy, ...hashed } = input; // a replay returns the stored run whatever its caused-by
|
|
246
|
+
const bodyHash = createHash('sha256').update(JSON.stringify(hashed)).digest('hex');
|
|
247
|
+
if (idempotencyKey) {
|
|
248
|
+
const existing = await findIdempotent(principal.grantee, personKey(principal.sub, idempotencyKey), bodyHash);
|
|
249
|
+
if (existing) {
|
|
250
|
+
const root = await ownedRun(existing.run_id, principal.grantee);
|
|
251
|
+
if (!root.pi_pid && await runStatus(root) === 'running') {
|
|
252
|
+
// The create committed but the daemon died before arming the schema
|
|
253
|
+
// (it is written at launch, outside the create transaction): re-arm it
|
|
254
|
+
// so the revived root still owes a result rather than a plain final.
|
|
255
|
+
if (input.output_schema !== undefined && !root.outcome_at && await readOutputRequest(root.node_id) === null
|
|
256
|
+
&& await readOutputResult(root.node_id) === undefined) {
|
|
257
|
+
await admitLegacyStructuredOutput(root.node_id, 'terminal', input.output_schema);
|
|
258
|
+
}
|
|
259
|
+
await reviveNode(root.node_id, { resume: true, capacity: 'freeze' });
|
|
260
|
+
}
|
|
261
|
+
return existing.response;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
await ensureAppSpace(principal.grantee);
|
|
265
|
+
const profile = input.profile === undefined ? await ensureAppProfile(principal.grantee) : loadExactProfileManifest(input.profile);
|
|
266
|
+
const owner = profile.manifest.grantee ?? 'app:terminal';
|
|
267
|
+
if (owner !== principal.grantee) {
|
|
268
|
+
const permission = `crtr:memory:rw:${owner}:profile:${profile.profileId}`;
|
|
269
|
+
if (!principal.resolved.some((held) => covers(held, permission)) ||
|
|
270
|
+
(input.scopes !== null && !input.scopes.some((held) => covers(held, permission)))) {
|
|
271
|
+
throw new RunError(403, 'scope_missing', `missing scope ${permission}`, 'profile', undefined, permission);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
// The spawn preflight only checks registration of a concrete id it can parse, and skips a logical `family/strength`.
|
|
275
|
+
// Refuse the two shapes it would let through: an id with no `provider/model` form, and a strength of a family no route declares.
|
|
276
|
+
if (input.model !== undefined) {
|
|
277
|
+
const model = input.model;
|
|
278
|
+
if (!isPortableModelToken(model)) {
|
|
279
|
+
if (parseModelSpec(model) === undefined)
|
|
280
|
+
throw invalid(`model '${model}' is not a strength (ultra, strong, medium, light), a family/strength, or a provider/model id`, 'model');
|
|
281
|
+
}
|
|
282
|
+
else if (model.includes('/') && await payerOfGrant(principal.grant) !== 'app') {
|
|
283
|
+
// An app-paid grant resolves any portable token through the app rung resolver, whatever family it names.
|
|
284
|
+
const slash = model.lastIndexOf('/');
|
|
285
|
+
const family = model.slice(0, slash);
|
|
286
|
+
const strength = model.slice(slash + 1);
|
|
287
|
+
if (['ultra', 'strong', 'medium', 'light'].includes(strength)
|
|
288
|
+
&& (await expandModelCandidates({ kind: 'logical', family, strength: strength, spec: model }, appSpace(principal.grantee).files, profile.profileId)).every((candidate) => candidate.family !== family)) {
|
|
289
|
+
throw invalid(`model '${model}' names a model family that is not configured in this daemon`, 'model');
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
const runId = await newNodeId();
|
|
294
|
+
const rootFolder = join(appSpace(principal.grantee).nodes, runId);
|
|
295
|
+
if (input.isolated && input.cwd !== undefined) {
|
|
296
|
+
const beneath = relative(rootFolder, resolve(input.cwd));
|
|
297
|
+
if (!isAbsolute(input.cwd) || beneath === '..' || beneath.startsWith(`..${sep}`) || isAbsolute(beneath)) {
|
|
298
|
+
throw invalid('cwd must be inside the isolated root node folder', 'cwd');
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// Fetched before the run exists (the idempotency body hash above is over the
|
|
302
|
+
// original request); the prompt the agent and the goal see carries runtime paths.
|
|
303
|
+
const attachments = await resolveAttachments(runId, principal.grantee, input.prompt);
|
|
304
|
+
const prompt = attachments.text;
|
|
305
|
+
// `message` is a `start_turn: false` message enqueued in the create
|
|
306
|
+
// transaction, so it precedes the broker's kickoff claim and always joins the
|
|
307
|
+
// first turn — a separate `run.message` after start can lose that race.
|
|
308
|
+
// The message's files take names the prompt's did not (no run row records the prompt's uses yet).
|
|
309
|
+
const firstMessage = input.message === undefined ? undefined : await resolveAttachments(runId, principal.grantee, input.message, attachments.uses.map((use) => use.path));
|
|
310
|
+
const payer = await payerOfGrant(principal.grant);
|
|
311
|
+
let response;
|
|
312
|
+
try {
|
|
313
|
+
const model = resolveRunModel(profile, input.model);
|
|
314
|
+
await spawnChildPrepared({ kind: resolveRunKind(profile), mode: 'base', root: true, rootLifecycle: 'resident', readiness: 'launch',
|
|
315
|
+
cwd: input.isolated ? input.cwd ?? rootFolder : appSpace(principal.grantee).files, profile: profile.profileId, prompt, nodeId: runId,
|
|
316
|
+
isolated: input.isolated ?? false,
|
|
317
|
+
...(input.causedBy === undefined ? {} : { causedBy: input.causedBy }),
|
|
318
|
+
...(model === undefined ? {} : { model }),
|
|
319
|
+
...(input.deadline === undefined ? {} : { deadlineAt: new Date(Date.now() + parseRunDeadlineMs(input.deadline)).toISOString() }),
|
|
320
|
+
...(input.scopes === null ? {} : { scopes: input.scopes }),
|
|
321
|
+
run: { grantee: principal.grantee, sub: principal.sub, grant_id: principal.grant, client_id: principal.client_id,
|
|
322
|
+
metadata_json: JSON.stringify(input.metadata), run_id: runId, event_cursor: 1, usage_json: JSON.stringify(usage()) },
|
|
323
|
+
withinCreate: async (tx, row) => {
|
|
324
|
+
// A concurrent start under this key may have committed while this one fetched attachments and awaited the
|
|
325
|
+
// spawn: re-check on the transaction before any write, so exactly one start creates the run.
|
|
326
|
+
if (idempotencyKey) {
|
|
327
|
+
const winner = await findIdempotent(principal.grantee, personKey(principal.sub, idempotencyKey), bodyHash, tx);
|
|
328
|
+
if (winner)
|
|
329
|
+
throw new IdempotentReplay(winner);
|
|
330
|
+
}
|
|
331
|
+
// The first message's uses are inserted by acceptRunMessage below, so only the prompt's go here.
|
|
332
|
+
const uses = attachments.uses;
|
|
333
|
+
if (uses.length) {
|
|
334
|
+
await assertUploadsUsable(principal.grantee, uses, tx);
|
|
335
|
+
await insertUploadUses(uses.map(({ upload_id, path, blob_key }) => ({ upload_id, path, blob_key, run_id: runId })), tx);
|
|
336
|
+
}
|
|
337
|
+
response = { run_id: runId, node_id: runId, grantee: principal.grantee, grant: principal.grant, rev: principal.rev, scopes: input.scopes, payer, status: 'running', created_at: row.created, metadata: input.metadata, sequence_number: 0 };
|
|
338
|
+
await appendRunEvent(tx, runId, runId, 'run.started', { scopes: input.scopes, payer, usage: usage() });
|
|
339
|
+
if (firstMessage) {
|
|
340
|
+
const accepted = await acceptRunMessage(tx, runId, principal.grantee, firstMessage, false);
|
|
341
|
+
response.message = { run_id: runId, message_id: accepted.messageId, sequence_number: accepted.sequence };
|
|
342
|
+
}
|
|
343
|
+
if (idempotencyKey)
|
|
344
|
+
await recordIdempotent(tx, principal.grantee, personKey(principal.sub, idempotencyKey), bodyHash, runId, response, row.created);
|
|
345
|
+
},
|
|
346
|
+
}, input.output_schema === undefined ? undefined : async (nodeId) => { await admitLegacyStructuredOutput(nodeId, 'terminal', input.output_schema); });
|
|
347
|
+
}
|
|
348
|
+
catch (error) {
|
|
349
|
+
// A concurrent start with this key won: this one rolled back. The winner, in this daemon, owns the launch
|
|
350
|
+
// (and the schema arming), so answer with its stored response and do not revive its row.
|
|
351
|
+
if (error instanceof IdempotentReplay)
|
|
352
|
+
return error.winner.response;
|
|
353
|
+
// The app listener speaks RunError envelopes; preflight may detect a
|
|
354
|
+
// concurrent ancestor change after the request's own validation.
|
|
355
|
+
// The spawn preflight refused the requested model (unknown, or not registered in this daemon) before any row existed.
|
|
356
|
+
if (input.model !== undefined && error instanceof CrtrError && error.code === 'usage')
|
|
357
|
+
throw invalid(error.message, 'model');
|
|
358
|
+
if (error instanceof ApiError && (error.code === 'isolated_run' || error.code === 'invalid_request')) {
|
|
359
|
+
const param = error.details && typeof error.details === 'object' && 'param' in error.details && typeof error.details.param === 'string'
|
|
360
|
+
? error.details.param : undefined;
|
|
361
|
+
throw new RunError(error.status, error.code, error.message, param);
|
|
362
|
+
}
|
|
363
|
+
throw error;
|
|
364
|
+
}
|
|
365
|
+
if (!response)
|
|
366
|
+
throw new Error('run creation did not commit');
|
|
367
|
+
return response;
|
|
368
|
+
}
|
|
369
|
+
export async function listRuns(grantee, options) {
|
|
370
|
+
let after;
|
|
371
|
+
if (options.after) {
|
|
372
|
+
try {
|
|
373
|
+
const parsed = JSON.parse(Buffer.from(options.after, 'base64url').toString());
|
|
374
|
+
if (!parsed || typeof parsed !== 'object' || !('activity' in parsed) || typeof parsed.activity !== 'string' || !('id' in parsed) || typeof parsed.id !== 'string')
|
|
375
|
+
throw new Error('invalid cursor');
|
|
376
|
+
after = { activity: parsed.activity, id: parsed.id };
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
throw invalid('invalid list cursor', 'after');
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
const rows = await (await db()).prepareUncached(`SELECT node_id, COALESCE(last_activity_at, created) AS activity FROM node_rows
|
|
383
|
+
WHERE run_id = node_id AND deleting_at IS NULL ${grantee === null ? '' : 'AND grantee = ?'}${options.sub === undefined ? '' : ' AND sub = ?'}
|
|
384
|
+
ORDER BY activity DESC, node_id DESC`).all(...(grantee === null ? [] : [grantee]), ...(options.sub === undefined ? [] : [options.sub]));
|
|
385
|
+
const runs = (await filterAsync((await mapAsync((await filterAsync(rows, async ({ node_id }) => !options.visible || await options.visible(node_id))).filter(({ activity, node_id }) => !after || activity < after.activity || activity === after.activity && node_id < after.id), async (row) => ({ root: (await getNode(row.node_id)), activity: row.activity }))), async ({ root }) => !options.status || await runStatus(root) === options.status));
|
|
386
|
+
const page = runs.slice(0, options.limit);
|
|
387
|
+
const last = page.at(-1);
|
|
388
|
+
return { runs: (await mapAsync(page, async ({ root }) => await runObject(root))), next: runs.length > options.limit && last ? Buffer.from(JSON.stringify({ activity: last.activity, id: last.root.node_id })).toString('base64url') : null };
|
|
389
|
+
}
|
|
390
|
+
export async function waitRun(id, grantee, seconds) {
|
|
391
|
+
const initial = await ownedRun(id, grantee);
|
|
392
|
+
const read = async () => await runObject(await ownedRun(id, grantee));
|
|
393
|
+
if (!seconds || RESTING.includes(await runStatus(initial)))
|
|
394
|
+
return await read();
|
|
395
|
+
return new Promise((resolve, reject) => {
|
|
396
|
+
let unsubscribe = () => undefined;
|
|
397
|
+
const settle = () => { clearTimeout(timer); clearInterval(poll); unsubscribe(); };
|
|
398
|
+
const finish = async () => { settle(); try {
|
|
399
|
+
resolve(await read());
|
|
400
|
+
}
|
|
401
|
+
catch (err) {
|
|
402
|
+
reject(err);
|
|
403
|
+
} };
|
|
404
|
+
const check = async () => { if (RESTING.includes(String((await read()).status)))
|
|
405
|
+
await finish(); };
|
|
406
|
+
// A rejected check fails the wait; the timers and the subscription ignore their callbacks' results.
|
|
407
|
+
const run = () => { check().catch((err) => { settle(); reject(err); }); };
|
|
408
|
+
const poll = setInterval(run, 250);
|
|
409
|
+
const timer = setTimeout(() => { void finish(); }, seconds * 1000);
|
|
410
|
+
subscribeRunEvents(id, run).then((off) => { unsubscribe = off; }, (err) => { settle(); reject(err); });
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
/** Resolutions of one message's attachment names before `messageRun` gives up on concurrent messages taking them. */
|
|
414
|
+
const MESSAGE_NAME_ATTEMPTS = 5;
|
|
415
|
+
export async function messageRun(root, original, resolveAttachments = defaultResolver, startTurn = true, idempotencyKey, steer = true) {
|
|
416
|
+
const refused = root.status === 'canceled' || root.outcome_reason === 'closed';
|
|
417
|
+
const grantee = root.grantee ?? 'app:terminal';
|
|
418
|
+
// The hash covers the operation, the target run and the original text (storage URLs unexpanded).
|
|
419
|
+
const bodyHash = createHash('sha256').update(JSON.stringify(['run.message', root.node_id, original, startTurn, ...(startTurn && !steer ? ['steer:false'] : [])])).digest('hex');
|
|
420
|
+
// A replay answers before any attachment is fetched or the run is reopened.
|
|
421
|
+
const replay = async (response) => {
|
|
422
|
+
const current = await getNode(root.node_id);
|
|
423
|
+
// The accept committed but the daemon died before the revive: finish it, only while the message still waits.
|
|
424
|
+
const waiting = await (await db()).prepare("SELECT 1 FROM deliveries WHERE message_id = ? AND state = 'pending' AND canceled_at IS NULL").get(String(response['message_id']));
|
|
425
|
+
if (current && !refused && startTurn && !current.pi_pid && waiting)
|
|
426
|
+
await reviveNode(root.node_id, { resume: true, capacity: 'freeze' });
|
|
427
|
+
return response;
|
|
428
|
+
};
|
|
429
|
+
if (idempotencyKey) {
|
|
430
|
+
const existing = await findIdempotent(grantee, personKey(root.sub, idempotencyKey), bodyHash);
|
|
431
|
+
if (existing)
|
|
432
|
+
return replay(existing.response);
|
|
433
|
+
}
|
|
434
|
+
// A new send to a canceled or closed run is refused; a replay of one accepted earlier was answered above.
|
|
435
|
+
if (refused)
|
|
436
|
+
throw new RunError(409, 'run_settled', 'canceled run cannot receive a message');
|
|
437
|
+
const reopen = startTurn && root.final_report && !root.pi_pid ? (await import('../runtime/reopen.js')).commitReopenResident : undefined;
|
|
438
|
+
// Two messages to one run can each pick the same file name before either commits. The accepting transaction holds the
|
|
439
|
+
// run's lock, so it sees every name taken so far: when one of its names was taken meanwhile it rolls back and the text
|
|
440
|
+
// is resolved again (the blobs are content-keyed, so only the names change). Names are never shared, so a lost race
|
|
441
|
+
// costs a retry, not a failed request, unless it loses every time.
|
|
442
|
+
for (let attempt = 1;; attempt++) {
|
|
443
|
+
// Before the reopen: a refused URL never reopens a settled run.
|
|
444
|
+
const attachments = await resolveAttachments(root.node_id, grantee, original);
|
|
445
|
+
// One transaction: the key check, the reopen, the mail row, its event and the key record commit together,
|
|
446
|
+
// so a concurrent retry of the same key sees either all of it or none.
|
|
447
|
+
const outcome = await withCanvasWrite(async (tx) => {
|
|
448
|
+
if (idempotencyKey) {
|
|
449
|
+
const existing = await findIdempotent(grantee, personKey(root.sub, idempotencyKey), bodyHash, tx);
|
|
450
|
+
if (existing)
|
|
451
|
+
return { replayed: existing.response };
|
|
452
|
+
}
|
|
453
|
+
if (attachments.uses.length) {
|
|
454
|
+
await lockRunRoot(tx, root.node_id);
|
|
455
|
+
for (const use of attachments.uses)
|
|
456
|
+
if (await runUsesPath(root.node_id, use.path, tx))
|
|
457
|
+
return 'path_taken';
|
|
458
|
+
}
|
|
459
|
+
await reopen?.(root.node_id);
|
|
460
|
+
const accepted = await acceptRunMessage(tx, root.node_id, grantee, attachments, startTurn, startTurn && steer);
|
|
461
|
+
const result = { run_id: root.node_id, message_id: accepted.messageId, sequence_number: accepted.sequence };
|
|
462
|
+
if (idempotencyKey)
|
|
463
|
+
await recordIdempotent(tx, grantee, personKey(root.sub, idempotencyKey), bodyHash, root.node_id, result, new Date().toISOString());
|
|
464
|
+
return { result };
|
|
465
|
+
});
|
|
466
|
+
if (outcome === 'path_taken') {
|
|
467
|
+
if (attempt >= MESSAGE_NAME_ATTEMPTS)
|
|
468
|
+
throw new RunError(503, 'service_unavailable', 'attachments of concurrent messages kept taking each other\'s file names; retry');
|
|
469
|
+
continue;
|
|
470
|
+
}
|
|
471
|
+
if ('replayed' in outcome)
|
|
472
|
+
return replay(outcome.replayed);
|
|
473
|
+
if (startTurn && !root.pi_pid) {
|
|
474
|
+
await reviveNode(root.node_id, { resume: true, capacity: 'freeze' });
|
|
475
|
+
}
|
|
476
|
+
return outcome.result;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
async function interruptNode(id) {
|
|
480
|
+
const unavailable = () => new RunError(503, 'service_unavailable', `node ${id} broker was unavailable before the interrupt reached it`);
|
|
481
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
482
|
+
const current = await getNode(id);
|
|
483
|
+
if (!current)
|
|
484
|
+
throw missing();
|
|
485
|
+
if (!isBrokerLive(current)) {
|
|
486
|
+
if (current.streaming)
|
|
487
|
+
throw unavailable();
|
|
488
|
+
return;
|
|
489
|
+
}
|
|
490
|
+
const executionId = (await liveExecutionForNode(id))?.executionId;
|
|
491
|
+
try {
|
|
492
|
+
const interrupted = await interruptLive(id);
|
|
493
|
+
// A background command can call a provider while this node has no turn.
|
|
494
|
+
// Only a broker-acknowledged turn abort owns that provider request.
|
|
495
|
+
if (interrupted === 'turn')
|
|
496
|
+
abortProviderCalls({ nodes: [id] });
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
catch (error) {
|
|
500
|
+
if (!(error instanceof BrokerUnreachableError))
|
|
501
|
+
throw error;
|
|
502
|
+
const latest = await getNode(id);
|
|
503
|
+
if (!latest)
|
|
504
|
+
throw missing();
|
|
505
|
+
if (!latest.streaming)
|
|
506
|
+
return;
|
|
507
|
+
if (attempt === 0 && isBrokerLive(latest) && (await liveExecutionForNode(id))?.executionId !== executionId)
|
|
508
|
+
continue;
|
|
509
|
+
throw unavailable();
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
throw unavailable();
|
|
513
|
+
}
|
|
514
|
+
export async function interruptRun(root, children = 'stop') {
|
|
515
|
+
const ids = children === 'stop'
|
|
516
|
+
? (await (await db()).prepare('SELECT node_id FROM nodes WHERE run_id = ?').all(root.node_id)).map(({ node_id }) => node_id)
|
|
517
|
+
: [root.node_id];
|
|
518
|
+
await Promise.all(ids.map((id) => interruptNode(id)));
|
|
519
|
+
return await runObject(await getNode(root.node_id) ?? root);
|
|
520
|
+
}
|
|
521
|
+
export async function cancelRun(root, _options = {}) {
|
|
522
|
+
const ids = (await (await db()).prepare('SELECT node_id FROM nodes WHERE run_id = ? ORDER BY created DESC').all(root.node_id)).map((row) => row.node_id);
|
|
523
|
+
// Cancel the HTTP request before closing nodes, so a response cannot land
|
|
524
|
+
// while process teardown and run settlement are in progress.
|
|
525
|
+
abortProviderCalls({ run: root.node_id });
|
|
526
|
+
const closed = [];
|
|
527
|
+
if (await runStatus(root) !== 'settled')
|
|
528
|
+
closed.push(...(await closeNode(root.node_id, { preserveEmpty: true, stopReason: 'run_canceled' })).closed);
|
|
529
|
+
else {
|
|
530
|
+
for (const id of ids) {
|
|
531
|
+
if (id === root.node_id)
|
|
532
|
+
continue;
|
|
533
|
+
const current = await getNode(id);
|
|
534
|
+
if (current && current.status !== 'done' && current.status !== 'canceled' && current.status !== 'dead')
|
|
535
|
+
closed.push(...(await closeNode(id, { preserveEmpty: true, stopReason: 'run_canceled' })).closed);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
// The run's open questions end with it (run.cancel: "cancels the run's open questions").
|
|
539
|
+
await cancelOpenQuestions({ run_id: root.node_id }, 'the run was canceled');
|
|
540
|
+
const teardowns = await Promise.all([...new Set([root.node_id, ...closed])].map((id) => stopNodeSandboxes(id, 'run_canceled')));
|
|
541
|
+
if (teardowns.some((result) => !result.confirmed))
|
|
542
|
+
throw new RunError(500, 'server_error', 'run process teardown could not be confirmed', undefined, undefined, undefined, true);
|
|
543
|
+
const current = await getNode(root.node_id);
|
|
544
|
+
return await runObject(current ?? root);
|
|
545
|
+
}
|
|
546
|
+
/** The longest run name `run.rename` accepts. */
|
|
547
|
+
export const RUN_NAME_MAX = 200;
|
|
548
|
+
/** `run.rename`: set the root node's name — the name `crtr` shows for the node —
|
|
549
|
+
* through the same path as `PATCH /v1/nodes/:id/config` `name`. */
|
|
550
|
+
export async function renameRun(root, name) {
|
|
551
|
+
if (typeof name !== 'string' || !name.trim())
|
|
552
|
+
throw invalid('name is required', 'name');
|
|
553
|
+
const trimmed = name.trim();
|
|
554
|
+
if (trimmed.length > RUN_NAME_MAX)
|
|
555
|
+
throw invalid(`name exceeds ${RUN_NAME_MAX} characters`, 'name');
|
|
556
|
+
const meta = await updateNode(root.node_id, { name: trimmed });
|
|
557
|
+
if (meta.window)
|
|
558
|
+
renameWindow(meta.window, fullName(meta));
|
|
559
|
+
return await runObject(meta);
|
|
560
|
+
}
|
|
561
|
+
/** Delete a run. Answers how many of the run's released uploads storage has
|
|
562
|
+
* not confirmed deleted; the due-work tick retries those. */
|
|
563
|
+
export async function deleteRun(root, storage = { config: storageConfig, client: storageClient }) {
|
|
564
|
+
// First, while the run still takes mail: the asking agent is told, and a
|
|
565
|
+
// canceled question stays canceled, never answerable.
|
|
566
|
+
await cancelOpenQuestions({ run_id: root.node_id }, 'the run was deleted');
|
|
567
|
+
const ids = await withCanvasWrite(async (tx) => {
|
|
568
|
+
await tx.prepare('UPDATE nodes SET deleting_at = COALESCE(deleting_at, ?) WHERE node_id = ?').run(new Date().toISOString(), root.node_id);
|
|
569
|
+
return (await tx.prepare('SELECT node_id FROM nodes WHERE run_id = ? ORDER BY created DESC').all(root.node_id)).map((r) => r.node_id);
|
|
570
|
+
});
|
|
571
|
+
const teardowns = await Promise.all(ids.map((id) => stopNodeSandboxes(id, 'run_deleted', { deleting: true })));
|
|
572
|
+
if (teardowns.some((r) => !r.confirmed))
|
|
573
|
+
throw new RunError(500, 'server_error', 'run process teardown could not be confirmed', undefined, undefined, undefined, true);
|
|
574
|
+
const files = (await mapAsync(ids, async (id) => {
|
|
575
|
+
const node = await nodeFiles(id);
|
|
576
|
+
if (node.app === null)
|
|
577
|
+
throw new Error(`run node missing during deletion: ${id}`);
|
|
578
|
+
return node;
|
|
579
|
+
}));
|
|
580
|
+
const sessions = await (await db()).prepare(`SELECT DISTINCT session_id FROM sessions WHERE session_id IS NOT NULL AND node_id IN (SELECT node_id FROM nodes WHERE run_id = ?)`).all(root.node_id);
|
|
581
|
+
for (const { session_id } of sessions) {
|
|
582
|
+
try {
|
|
583
|
+
await conversationStore().delete(session_id);
|
|
584
|
+
}
|
|
585
|
+
catch (error) {
|
|
586
|
+
if (!isConversationNotFound(error))
|
|
587
|
+
throw error;
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
const released = await withCanvasWrite(async (tx) => {
|
|
591
|
+
// Each node's object and what it owns are marked deleted, as any node deletion does
|
|
592
|
+
// (kept documents stay with their node); this drops the `nodes` row. First, so a
|
|
593
|
+
// `deleted` event delivered to another run node's inbox is removed with its mail below.
|
|
594
|
+
for (const id of ids) {
|
|
595
|
+
const node = await getById(tx, id);
|
|
596
|
+
if (node !== null && node.deleted_at === null)
|
|
597
|
+
await deleteNodeWithOwned(tx, node);
|
|
598
|
+
}
|
|
599
|
+
const orphaned = await releaseRunUploads([root.node_id], tx);
|
|
600
|
+
await tx.prepare('DELETE FROM run_events WHERE run_id = ?').run(root.node_id);
|
|
601
|
+
await tx.prepare('DELETE FROM idempotency_keys WHERE run_id = ?').run(root.node_id);
|
|
602
|
+
const list = ids.map(() => '?').join(',');
|
|
603
|
+
const mail = await tx.prepareUncached(`SELECT message_id FROM messages WHERE sender_node_id IN (${list}) UNION SELECT message_id FROM deliveries WHERE destination_id IN (${list})`).all(...ids, ...ids);
|
|
604
|
+
await tx.prepareUncached(`DELETE FROM deliveries WHERE destination_id IN (${list})`).run(...ids);
|
|
605
|
+
for (const { message_id } of mail)
|
|
606
|
+
await tx.prepare('DELETE FROM messages WHERE message_id = ? AND NOT EXISTS (SELECT 1 FROM deliveries WHERE message_id = ?)').run(message_id, message_id);
|
|
607
|
+
return orphaned;
|
|
608
|
+
});
|
|
609
|
+
for (const node of files)
|
|
610
|
+
await removeNodeFiles(node);
|
|
611
|
+
// Wake every stream; its next read observes the missing run.
|
|
612
|
+
const { notifyRunDeleted } = await import('./events.js');
|
|
613
|
+
notifyRunDeleted(root.node_id);
|
|
614
|
+
return { uploads_pending: await deleteReleasedUploads(released, storage) };
|
|
615
|
+
}
|
|
616
|
+
/** Try each released upload's storage delete in parallel under one budget; a
|
|
617
|
+
* confirmed delete drops its row. Returns how many are still unconfirmed. */
|
|
618
|
+
async function deleteReleasedUploads(uploadIds, storage) {
|
|
619
|
+
if (!uploadIds.length || !storage.config())
|
|
620
|
+
return uploadIds.length;
|
|
621
|
+
let client;
|
|
622
|
+
try {
|
|
623
|
+
client = storage.client();
|
|
624
|
+
}
|
|
625
|
+
catch {
|
|
626
|
+
return uploadIds.length;
|
|
627
|
+
}
|
|
628
|
+
const confirmed = new Set();
|
|
629
|
+
const attempts = uploadIds.map((id) => client.deleteUpload(id).then(async () => { await deleteUploadRow(id); confirmed.add(id); }, () => undefined));
|
|
630
|
+
let timer;
|
|
631
|
+
await Promise.race([Promise.all(attempts), new Promise((resolve) => { timer = setTimeout(resolve, storage.budgetMs ?? RUN_DELETE_STORAGE_BUDGET_MS); timer.unref?.(); })]);
|
|
632
|
+
clearTimeout(timer);
|
|
633
|
+
return uploadIds.length - confirmed.size;
|
|
634
|
+
}
|
|
635
|
+
export async function traceRun(id, grantee, format) {
|
|
636
|
+
await ownedRun(id, grantee);
|
|
637
|
+
await repairRunConversations(id);
|
|
638
|
+
// One short transaction captures the run's nodes, their session ids and the event cursor with its completions and
|
|
639
|
+
// deltas, so the trace is coherent with `latest_sequence`. The conversation files are read after it releases the
|
|
640
|
+
// write lock: file reads must not run inside it.
|
|
641
|
+
const snapshot = await withCanvasWrite(async (db) => {
|
|
642
|
+
const nodes = await db.prepare('SELECT node_id, parent FROM nodes WHERE run_id = ? ORDER BY CASE WHEN node_id = ? THEN 0 ELSE 1 END, created, node_id').all(id, id);
|
|
643
|
+
const sessionIds = new Map();
|
|
644
|
+
for (const node of nodes) {
|
|
645
|
+
sessionIds.set(node.node_id, (await db.prepare('SELECT session_id FROM sessions WHERE node_id = ? GROUP BY session_id ORDER BY min(created_at)').all(node.node_id)).map((row) => row.session_id));
|
|
646
|
+
}
|
|
647
|
+
const root = await db.prepare('SELECT event_cursor FROM nodes WHERE node_id = ?').get(id);
|
|
648
|
+
const latestSequence = root.event_cursor - 1;
|
|
649
|
+
const completed = await db.prepare(`SELECT node_id, sequence_number FROM run_events
|
|
650
|
+
WHERE run_id = ? AND sequence_number <= ? AND type IN ('node.thinking.done', 'node.output_text.done', 'usage')
|
|
651
|
+
ORDER BY sequence_number`).all(id, latestSequence);
|
|
652
|
+
const deltas = await db.prepare(`SELECT node_id, sequence_number, type, body_json FROM run_events
|
|
653
|
+
WHERE run_id = ? AND sequence_number <= ? AND type IN ('node.thinking.delta', 'node.output_text.delta')
|
|
654
|
+
ORDER BY sequence_number`).all(id, latestSequence);
|
|
655
|
+
return { nodes, sessionIds, latestSequence, completed, deltas };
|
|
656
|
+
});
|
|
657
|
+
const { nodes, sessionIds, latestSequence, completed, deltas } = snapshot;
|
|
658
|
+
const output = (await mapAsync(nodes, async (node) => ({ node_id: node.node_id, parent_node_id: node.parent, conversations: (await mapAsync(sessionIds.get(node.node_id) ?? [], async (session_id) => {
|
|
659
|
+
const { header, entries } = await conversationStore().read(session_id);
|
|
660
|
+
if (format === 'entries')
|
|
661
|
+
return { conversation_id: session_id, header, entries };
|
|
662
|
+
const manager = SessionManager.inMemory(header.cwd, undefined, [header, ...entries]);
|
|
663
|
+
const visible = cycleAwareMessages(manager) ?? [];
|
|
664
|
+
const positions = new Map(entries.map((entry, index) => [entry.id, index]));
|
|
665
|
+
const prompts = entries.filter((entry) => entry.type === 'custom' && entry.customType === 'crtr-system-prompt').map((entry) => ({ id: entry.id, message: { role: 'custom', customType: 'crtr-system-prompt', data: 'data' in entry ? entry.data : undefined, timestamp: entry.timestamp } }));
|
|
666
|
+
const appMessages = entries.filter((entry) => entry.type === 'custom_message' && entry.customType === 'app_message').map((entry) => ({ id: entry.id, message: { role: 'custom', customType: 'app_message', content: 'content' in entry ? entry.content : '', timestamp: entry.timestamp } }));
|
|
667
|
+
const rootPrompt = node.node_id === id ? entries.find((entry) => {
|
|
668
|
+
if (entry.type !== 'message' || entry.message.role !== 'user')
|
|
669
|
+
return false;
|
|
670
|
+
const origin = originFor(entries, entry.message.timestamp);
|
|
671
|
+
return origin?.type === 'runtime' && origin.kind === 'kickoff';
|
|
672
|
+
})?.id : undefined;
|
|
673
|
+
const messages = [...visible.filter(({ id }) => !appMessages.some((entry) => entry.id === id)), ...prompts, ...appMessages].sort((a, b) => (positions.get(a.id) ?? Number.MAX_SAFE_INTEGER) - (positions.get(b.id) ?? Number.MAX_SAFE_INTEGER)).map(({ id: entry_id, message }) => {
|
|
674
|
+
const m = message;
|
|
675
|
+
const assistantUsage = m.usage;
|
|
676
|
+
const origin = m.role === 'user' ? originFor(entries, Number(m.timestamp)) : null;
|
|
677
|
+
const callerPrompt = origin?.type === 'human' || entry_id === rootPrompt;
|
|
678
|
+
const role = m.role === 'toolResult' ? 'tool_result' : m.role === 'bashExecution' ? 'bash_execution' : m.role === 'compactionSummary' ? 'compaction_summary' : m.role === 'branchSummary' ? 'branch_summary' : m.role === 'custom' && m.customType === 'crtr-system-prompt' ? 'system' : m.role === 'user' ? callerPrompt ? 'user' : 'custom' : m.role;
|
|
679
|
+
const customType = role === 'custom' ? m.role === 'custom' ? m.customType : origin?.type === 'runtime' ? origin.kind : 'unknown' : undefined;
|
|
680
|
+
const content = role === 'system' && m.customType === 'crtr-system-prompt' ? [{ type: 'text', text: m.data?.text ?? '' }] : typeof m.content === 'string' ? [{ type: 'text', text: m.content }] : Array.isArray(m.content) ? m.content.map((part) => part.type === 'toolCall' ? { type: 'tool_call', tool_call_id: part.id, name: part.name, arguments: part.arguments } : part.type === 'image' ? { type: 'image', mime_type: part.mimeType } : part.type === 'thinking' ? { type: 'thinking', text: part.thinking } : part) : [];
|
|
681
|
+
return { entry_id, role, ...(role === 'custom' ? { custom_type: customType } : {}), time: typeof m.timestamp === 'string' ? m.timestamp : new Date(Number(m.timestamp ?? Date.now())).toISOString(), content,
|
|
682
|
+
...(role === 'assistant' ? { model: m.model, provider: m.provider, stop_reason: m.stopReason,
|
|
683
|
+
...(m.errorMessage ? { error_message: m.errorMessage } : {}),
|
|
684
|
+
...(assistantUsage ? { usage: { input_tokens: assistantUsage.input ?? 0, output_tokens: assistantUsage.output ?? 0,
|
|
685
|
+
cache_read_tokens: assistantUsage.cacheRead ?? 0, cache_write_tokens: assistantUsage.cacheWrite ?? 0,
|
|
686
|
+
cost_usd: assistantUsage.cost?.total ?? 0 } } : {}) } : {}),
|
|
687
|
+
...(role === 'tool_result' ? { tool_call_id: m.toolCallId, tool_name: m.toolName, is_error: m.isError } : {}) };
|
|
688
|
+
}) ?? [];
|
|
689
|
+
return { conversation_id: session_id, messages };
|
|
690
|
+
})) })));
|
|
691
|
+
const starts = new Map(await Promise.all(output.map(async (node) => [node.node_id, await openAssistantMessageStartSequence(node.node_id)])));
|
|
692
|
+
for (const row of completed) {
|
|
693
|
+
const start = starts.get(row.node_id);
|
|
694
|
+
if (start !== null && start !== undefined && row.sequence_number >= start)
|
|
695
|
+
starts.set(row.node_id, null);
|
|
696
|
+
}
|
|
697
|
+
const progress = new Map();
|
|
698
|
+
for (const row of deltas) {
|
|
699
|
+
const start = starts.get(row.node_id);
|
|
700
|
+
if (start === null || start === undefined || row.sequence_number < start)
|
|
701
|
+
continue;
|
|
702
|
+
const event = JSON.parse(row.body_json);
|
|
703
|
+
const current = progress.get(row.node_id) ?? { thinking: '', text: '' };
|
|
704
|
+
if (row.type === 'node.thinking.delta')
|
|
705
|
+
current.thinking += event.delta;
|
|
706
|
+
else
|
|
707
|
+
current.text += event.delta;
|
|
708
|
+
progress.set(row.node_id, current);
|
|
709
|
+
}
|
|
710
|
+
const tracedNodes = output.map((node) => ({ ...node,
|
|
711
|
+
in_progress_message: starts.get(node.node_id) == null ? null : progress.get(node.node_id) ?? { thinking: '', text: '' },
|
|
712
|
+
}));
|
|
713
|
+
return { run_id: id, latest_sequence: latestSequence, nodes: tracedNodes };
|
|
714
|
+
}
|
|
715
|
+
export function requestedScopes(held, value, grantee) {
|
|
716
|
+
if (value === undefined) {
|
|
717
|
+
if (!held.some((scope) => covers(scope, 'crtr:llm')))
|
|
718
|
+
throw new RunError(403, 'scope_missing', 'missing scope crtr:llm', undefined, undefined, 'crtr:llm');
|
|
719
|
+
return null;
|
|
720
|
+
}
|
|
721
|
+
if (!Array.isArray(value) || value.some((scope) => typeof scope !== 'string'))
|
|
722
|
+
throw invalid('scopes must be a list of scope strings', 'scopes');
|
|
723
|
+
for (const scope of value) {
|
|
724
|
+
try {
|
|
725
|
+
parseScope(scope);
|
|
726
|
+
}
|
|
727
|
+
catch {
|
|
728
|
+
throw invalid(`invalid scope ${scope}`, 'scopes');
|
|
729
|
+
}
|
|
730
|
+
if (/^crtr:files:(?:read|rw):app:/.test(scope) && scope.split(':')[4] === grantee.slice(4)) {
|
|
731
|
+
throw invalid(`own-app files cannot narrow a run: ${scope}`, 'scopes');
|
|
732
|
+
}
|
|
733
|
+
const ownSpace = /^crtr:memory:(?:read|rw):app:/.test(scope) && scope.split(':')[4] === grantee.slice(4);
|
|
734
|
+
if (!ownSpace && !coveredByAny(held, scope)) {
|
|
735
|
+
throw new RunError(403, 'scope_missing', `missing scope ${scope}`, undefined, undefined, scope);
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
if (!value.includes('crtr:llm'))
|
|
739
|
+
throw new RunError(403, 'scope_missing', 'missing scope crtr:llm', undefined, undefined, 'crtr:llm');
|
|
740
|
+
return value;
|
|
741
|
+
}
|