@north-light/crouter 0.3.317 → 0.3.319
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/README.md +0 -3
- package/dist/api/client.d.ts +1 -1
- package/dist/api/client.js +2 -912
- package/dist/api/dto/attach.js +0 -13
- package/dist/api/dto/bash-jobs.js +1 -9
- package/dist/api/dto/broker-ops.js +0 -6
- package/dist/api/dto/broker.js +0 -20
- package/dist/api/dto/canvas.js +0 -2
- package/dist/api/dto/chat-inventory.js +0 -11
- package/dist/api/dto/common.js +1 -15
- package/dist/api/dto/config.js +0 -3
- package/dist/api/dto/crons.js +1 -10
- package/dist/api/dto/files.js +0 -7
- package/dist/api/dto/focus.js +0 -10
- package/dist/api/dto/health.js +0 -2
- package/dist/api/dto/human-requests.js +0 -4
- package/dist/api/dto/human.js +0 -4
- package/dist/api/dto/inbox.js +0 -4
- package/dist/api/dto/lifecycle.js +0 -3
- package/dist/api/dto/mail.js +0 -1
- package/dist/api/dto/memory.js +0 -6
- package/dist/api/dto/messages.js +0 -2
- package/dist/api/dto/model-config.js +0 -1
- package/dist/api/dto/modelauth.js +0 -4
- package/dist/api/dto/node-outcomes.js +0 -2
- package/dist/api/dto/nodes.js +0 -3
- package/dist/api/dto/profiles.js +1 -4
- package/dist/api/dto/recovery.js +0 -1
- package/dist/api/dto/reports.js +0 -2
- package/dist/api/dto/review-comments.js +0 -5
- package/dist/api/dto/reviews.js +0 -5
- package/dist/api/dto/subscriptions.js +0 -2
- package/dist/api/dto/worktree.js +0 -6
- package/dist/api/errors.js +1 -40
- package/dist/api/index.js +1 -33
- package/dist/api/plugin-manifest-schema.js +0 -23
- package/dist/api/routes.js +1 -147
- package/dist/build-root.js +1 -198
- package/dist/cli.js +3 -99
- package/dist/clients/attach/ansi-cells.js +1 -137
- package/dist/clients/attach/chrome/bash-jobs.js +1 -31
- package/dist/clients/attach/chrome/canvas-panels.js +1 -194
- package/dist/clients/attach/chrome/completion-bell.js +1 -89
- package/dist/clients/attach/chrome/cron-wait.js +1 -34
- package/dist/clients/attach/chrome/git-info.js +2 -44
- package/dist/clients/attach/chrome/header.js +1 -30
- package/dist/clients/attach/chrome/inbox-strip.js +1 -199
- package/dist/clients/attach/chrome/recap.js +1 -19
- package/dist/clients/attach/chrome/review-wait.js +1 -22
- package/dist/clients/attach/chrome/roster.js +4 -275
- package/dist/clients/attach/chrome/status-line.js +1 -117
- package/dist/clients/attach/chrome/ticket-panel.js +1 -280
- package/dist/clients/attach/chrome/widgets.js +1 -51
- package/dist/clients/attach/command.js +1 -107
- package/dist/clients/attach/config.js +1 -274
- package/dist/clients/attach/input/capabilities.js +1 -104
- package/dist/clients/attach/input/clipboard-image.js +3 -220
- package/dist/clients/attach/input/completion-frecency.js +1 -141
- package/dist/clients/attach/input/controller.js +7 -377
- package/dist/clients/attach/input/overlay-owner.js +1 -199
- package/dist/clients/attach/input/ref-autocomplete.js +2 -176
- package/dist/clients/attach/input/titled-editor.js +4 -859
- package/dist/clients/attach/overlays/auth.js +2 -271
- package/dist/clients/attach/overlays/dialogs.js +2 -102
- package/dist/clients/attach/overlays/file-review.js +2 -128
- package/dist/clients/attach/overlays/graph.js +1 -661
- package/dist/clients/attach/overlays/help.js +1 -211
- package/dist/clients/attach/overlays/mcp.js +1 -302
- package/dist/clients/attach/overlays/pickers.js +1 -163
- package/dist/clients/attach/render/activity-slot.js +1 -13
- package/dist/clients/attach/render/assistant-message.js +1 -56
- package/dist/clients/attach/render/card-presentation.js +5 -218
- package/dist/clients/attach/render/chat-view.js +5 -1708
- package/dist/clients/attach/render/condensed-history.js +1 -60
- package/dist/clients/attach/render/context-message.js +1 -63
- package/dist/clients/attach/render/crtr-output.js +17 -905
- package/dist/clients/attach/render/diagram.js +7 -111
- package/dist/clients/attach/render/edit-diff.js +5 -304
- package/dist/clients/attach/render/glyph-codepoints.js +1 -42
- package/dist/clients/attach/render/group-activity.js +2 -263
- package/dist/clients/attach/render/group-recap.js +1 -152
- package/dist/clients/attach/render/markdown-source.js +5 -266
- package/dist/clients/attach/render/measured-container.js +1 -322
- package/dist/clients/attach/render/page-block.js +1 -183
- package/dist/clients/attach/render/scroll-animation.js +1 -80
- package/dist/clients/attach/render/tool-calls.js +3 -361
- package/dist/clients/attach/render/transcript-copy.js +2 -81
- package/dist/clients/attach/render/transcript-search.js +1 -152
- package/dist/clients/attach/render/viewport.js +1 -184
- package/dist/clients/attach/session/banner.js +1 -29
- package/dist/clients/attach/session/bindings.js +1 -71
- package/dist/clients/attach/session/chrome-refresh.js +1 -94
- package/dist/clients/attach/session/connection.js +1 -186
- package/dist/clients/attach/session/context.js +0 -16
- package/dist/clients/attach/session/editor-frame.js +1 -142
- package/dist/clients/attach/session/editor-inventory.js +6 -160
- package/dist/clients/attach/session/file-links.js +1 -68
- package/dist/clients/attach/session/focus-events.js +1 -12
- package/dist/clients/attach/session/frame.js +1 -214
- package/dist/clients/attach/session/frames.js +1 -188
- package/dist/clients/attach/session/identity.js +1 -26
- package/dist/clients/attach/session/input-wiring.js +1 -140
- package/dist/clients/attach/session/invariant.js +1 -15
- package/dist/clients/attach/session/keys.js +1 -77
- package/dist/clients/attach/session/layout.js +1 -59
- package/dist/clients/attach/session/mouse.js +1 -78
- package/dist/clients/attach/session/pane-focus.js +1 -42
- package/dist/clients/attach/session/pane-tag.js +1 -112
- package/dist/clients/attach/session/pi-assets.js +1 -24
- package/dist/clients/attach/session/pi-oauth-flows.js +1 -21
- package/dist/clients/attach/session/profile-files.js +1 -228
- package/dist/clients/attach/session/reconnect.js +1 -175
- package/dist/clients/attach/session/selection.js +3 -108
- package/dist/clients/attach/session/state-sync.js +1 -67
- package/dist/clients/attach/session/surface-frame.js +1 -73
- package/dist/clients/attach/session/surface-host.js +1 -255
- package/dist/clients/attach/session/teardown.js +5 -94
- package/dist/clients/attach/session/transcript-search.js +3 -151
- package/dist/clients/attach/session/whip-achievements.js +2 -145
- package/dist/clients/attach/session/whip.js +1 -362
- package/dist/clients/attach/slash/dispatch.js +1 -706
- package/dist/clients/attach/slash/prompt-preview.js +1 -121
- package/dist/clients/attach/viewer.js +1 -1
- package/dist/clients/conversation/projection.js +1 -324
- package/dist/clients/conversation/submit.js +1 -51
- package/dist/clients/inbox/controller.js +1 -701
- package/dist/clients/inbox/dto-adapt.js +1 -93
- package/dist/clients/inbox/layout.js +1 -9
- package/dist/clients/inbox/page-adapter.js +1 -55
- package/dist/clients/inbox/resolve.js +1 -35
- package/dist/clients/inbox/review/anchors.js +1 -89
- package/dist/clients/inbox/review/comments-client.js +1 -98
- package/dist/clients/inbox/review/companion-pane.js +1 -82
- package/dist/clients/inbox/review/document-surface.js +2 -1188
- package/dist/clients/inbox/review/frame.js +1 -216
- package/dist/clients/inbox/review/keys.js +1 -123
- package/dist/clients/inbox/review/launch.js +1 -151
- package/dist/clients/inbox/review/live-source.js +1 -160
- package/dist/clients/inbox/review/nvim.js +1 -44
- package/dist/clients/inbox/review/remap.js +1 -157
- package/dist/clients/inbox/review/review-client.js +1 -123
- package/dist/clients/inbox/review/roundtrip.js +3 -36
- package/dist/clients/inbox/review/state.js +4 -315
- package/dist/clients/inbox/review-adapter.js +1 -43
- package/dist/clients/inbox/surface.js +1 -152
- package/dist/clients/inbox/tui/ansi.js +3 -321
- package/dist/clients/inbox/tui/input.js +5 -392
- package/dist/clients/inbox/tui/keys.js +1 -104
- package/dist/clients/inbox/tui/page-body.js +1 -66
- package/dist/clients/inbox/tui/panel.js +1 -84
- package/dist/clients/inbox/tui/render.js +2 -368
- package/dist/clients/inbox/tui/slots.js +3 -134
- package/dist/clients/inbox/tui/types.js +0 -1
- package/dist/clients/inbox/tui.js +1 -86
- package/dist/clients/surfaces/host.js +0 -1
- package/dist/commands/api-client.js +4 -290
- package/dist/commands/attention.js +1 -215
- package/dist/commands/canvas-browse.js +1 -70
- package/dist/commands/canvas-config.js +2 -192
- package/dist/commands/canvas-history/grep.js +7 -85
- package/dist/commands/canvas-history/read.js +3 -50
- package/dist/commands/canvas-history/search.js +10 -99
- package/dist/commands/canvas-history/shared.js +1 -139
- package/dist/commands/canvas-history/stats.js +6 -68
- package/dist/commands/canvas-history.js +1 -32
- package/dist/commands/canvas-issue.js +14 -149
- package/dist/commands/canvas-prune.js +1 -108
- package/dist/commands/canvas-roster.js +1 -69
- package/dist/commands/canvas-snapshot.js +1 -34
- package/dist/commands/canvas-use.js +1 -61
- package/dist/commands/canvas.js +1 -49
- package/dist/commands/chord.js +1 -241
- package/dist/commands/cron.js +11 -534
- package/dist/commands/dashboard.js +1 -85
- package/dist/commands/human/components.js +3 -77
- package/dist/commands/human/feedback.js +1 -112
- package/dist/commands/human/prompts.js +1 -331
- package/dist/commands/human/queue.js +1 -191
- package/dist/commands/human/request.js +1 -266
- package/dist/commands/human/review.js +1 -288
- package/dist/commands/human/shared.js +1 -67
- package/dist/commands/human.js +4 -60
- package/dist/commands/memory/delete.js +1 -100
- package/dist/commands/memory/edit.js +21 -219
- package/dist/commands/memory/find.js +2 -244
- package/dist/commands/memory/history.js +5 -199
- package/dist/commands/memory/lint.js +1 -107
- package/dist/commands/memory/list.js +1 -142
- package/dist/commands/memory/move.js +1 -223
- package/dist/commands/memory/origin.js +1 -130
- package/dist/commands/memory/read.js +6 -232
- package/dist/commands/memory/shared.js +12 -802
- package/dist/commands/memory/write.js +13 -235
- package/dist/commands/memory.js +1 -30
- package/dist/commands/node/bash.js +5 -245
- package/dist/commands/node/create.js +3 -332
- package/dist/commands/node/inspect.js +12 -300
- package/dist/commands/node/lifecycle.js +2 -453
- package/dist/commands/node/message.js +1 -161
- package/dist/commands/node/outcome.js +4 -134
- package/dist/commands/node/pyramid.js +2 -79
- package/dist/commands/node/subscription.js +1 -78
- package/dist/commands/node/wait.js +7 -163
- package/dist/commands/node-context.js +2 -159
- package/dist/commands/node-inspect-artifacts.js +8 -109
- package/dist/commands/node-lifecycle-revive.js +1 -217
- package/dist/commands/node-snapshot.js +1 -37
- package/dist/commands/node-transcript.js +1 -62
- package/dist/commands/node-worktree.js +1 -138
- package/dist/commands/node.js +1 -29
- package/dist/commands/pkg/browse/actions.js +1 -198
- package/dist/commands/pkg/browse/catalog.js +1 -466
- package/dist/commands/pkg/browse/command-view.js +1 -191
- package/dist/commands/pkg/browse/detail-panel.js +1 -402
- package/dist/commands/pkg/browse/doc-view.js +1 -89
- package/dist/commands/pkg/browse/list-panel.js +2 -168
- package/dist/commands/pkg/browse/model.js +1 -36
- package/dist/commands/pkg/browse/shell.js +1 -640
- package/dist/commands/pkg/browse.js +1 -27
- package/dist/commands/pkg/market-inspect.js +1 -141
- package/dist/commands/pkg/market-manage.js +1 -327
- package/dist/commands/pkg/market.js +1 -14
- package/dist/commands/pkg/plugin-inspect.js +1 -168
- package/dist/commands/pkg/plugin-manage.js +17 -1109
- package/dist/commands/pkg/plugin.js +1 -14
- package/dist/commands/pkg/shared.js +1 -62
- package/dist/commands/pkg.js +1 -21
- package/dist/commands/profile/default.js +1 -139
- package/dist/commands/profile/delete.js +1 -66
- package/dist/commands/profile/env.js +3 -188
- package/dist/commands/profile/kind.js +2 -35
- package/dist/commands/profile/list.js +1 -43
- package/dist/commands/profile/meta.js +1 -67
- package/dist/commands/profile/new.js +1 -115
- package/dist/commands/profile/pause.js +1 -59
- package/dist/commands/profile/project.js +1 -113
- package/dist/commands/profile/rename.js +1 -38
- package/dist/commands/profile/show.js +1 -52
- package/dist/commands/profile.js +1 -35
- package/dist/commands/push.js +9 -265
- package/dist/commands/revive.js +10 -181
- package/dist/commands/surface/node/cycle.js +1 -83
- package/dist/commands/surface/node/focus.js +1 -81
- package/dist/commands/surface/node/id.js +1 -38
- package/dist/commands/surface/node/pin.js +1 -42
- package/dist/commands/surface/node/placement.js +1 -134
- package/dist/commands/surface-edit.js +1 -157
- package/dist/commands/surface-inbox.js +1 -98
- package/dist/commands/surface-inspect.js +1 -39
- package/dist/commands/surface-node.js +1 -19
- package/dist/commands/surface-reload.js +2 -134
- package/dist/commands/surface-tmux-spread.js +1 -214
- package/dist/commands/surface.js +1 -28
- package/dist/commands/sys/branch.js +1 -19
- package/dist/commands/sys/config.js +1 -353
- package/dist/commands/sys/context/admin/actions.js +2 -246
- package/dist/commands/sys/context/admin/detail-panel.js +1 -247
- package/dist/commands/sys/context/admin/docs-panel.js +1 -191
- package/dist/commands/sys/context/admin/list-view.js +1 -183
- package/dist/commands/sys/context/admin/model.js +1 -229
- package/dist/commands/sys/context/admin/rail-panel.js +1 -227
- package/dist/commands/sys/context/admin/read-view.js +2 -194
- package/dist/commands/sys/context/admin/shell.js +1 -910
- package/dist/commands/sys/context/admin.js +2 -126
- package/dist/commands/sys/context/doc.js +3 -197
- package/dist/commands/sys/context/prompt-review.js +11 -291
- package/dist/commands/sys/context/resolve.js +10 -489
- package/dist/commands/sys/context/sysprompt.js +5 -96
- package/dist/commands/sys/context.js +1 -20
- package/dist/commands/sys/daemon.js +1 -313
- package/dist/commands/sys/doctor.js +1 -617
- package/dist/commands/sys/feedback.js +7 -228
- package/dist/commands/sys/logs.js +3 -129
- package/dist/commands/sys/migrate.js +1 -94
- package/dist/commands/sys/panels/broker-limits-panel.js +2 -110
- package/dist/commands/sys/panels/dependencies-panel.js +1 -80
- package/dist/commands/sys/panels/keybindings-panel.js +1 -703
- package/dist/commands/sys/panels/models-panel.js +1 -1133
- package/dist/commands/sys/panels/plugins-panel.js +1 -80
- package/dist/commands/sys/panels/prefs-panel.js +1 -85
- package/dist/commands/sys/panels/profiles-panel.js +1 -601
- package/dist/commands/sys/panels/provider-panel.js +1 -538
- package/dist/commands/sys/settings-shell.js +1 -400
- package/dist/commands/sys/settings.js +1 -46
- package/dist/commands/sys/setup-core.js +6 -579
- package/dist/commands/sys/setup-settings-runner.js +1 -16
- package/dist/commands/sys/setup-wizard.js +1 -279
- package/dist/commands/sys/setup.js +1 -34
- package/dist/commands/sys/shared.js +1 -81
- package/dist/commands/sys/support/prepare.js +3 -239
- package/dist/commands/sys/support/submit.js +6 -524
- package/dist/commands/sys/support.js +1 -18
- package/dist/commands/sys/sync-deps.js +15 -498
- package/dist/commands/sys/sync-project-guidance.js +4 -481
- package/dist/commands/sys/sync-shared.js +1 -49
- package/dist/commands/sys/sync-skills.js +2 -311
- package/dist/commands/sys/sync.js +1 -18
- package/dist/commands/sys/update.js +1 -147
- package/dist/commands/sys/worktrees.js +5 -53
- package/dist/commands/sys.js +1 -18
- package/dist/core/activity-signal.js +2 -38
- package/dist/core/asset-root.js +1 -18
- package/dist/core/auth-file.js +2 -179
- package/dist/core/auth-interaction.js +3 -94
- package/dist/core/auto-update.js +4 -94
- package/dist/core/bash-guard.js +11 -393
- package/dist/core/bash-jobs.js +7 -411
- package/dist/core/bootstrap.js +2 -53
- package/dist/core/broker-client/client.js +1 -184
- package/dist/core/broker-client/index.js +1 -13
- package/dist/core/broker-client/transport-relay.js +1 -157
- package/dist/core/broker-client/transport-socket.js +1 -179
- package/dist/core/broker-client/transport.js +1 -26
- package/dist/core/canvas/attention.js +1 -47
- package/dist/core/canvas/boot-id.js +1 -26
- package/dist/core/canvas/boot.js +1 -186
- package/dist/core/canvas/browse/app.js +3 -919
- package/dist/core/canvas/browse/model.js +1 -477
- package/dist/core/canvas/browse/pins.js +1 -29
- package/dist/core/canvas/browse/render.js +3 -1055
- package/dist/core/canvas/canvas.js +15 -922
- package/dist/core/canvas/crons.js +11 -481
- package/dist/core/canvas/daemon-owner.js +2 -146
- package/dist/core/canvas/db.js +2 -100
- package/dist/core/canvas/deliveries.js +22 -283
- package/dist/core/canvas/delivery-contract.js +1 -8
- package/dist/core/canvas/executions.js +1 -68
- package/dist/core/canvas/extensions.js +1 -83
- package/dist/core/canvas/focuses.js +1 -77
- package/dist/core/canvas/history.js +24 -860
- package/dist/core/canvas/index.js +1 -15
- package/dist/core/canvas/install-id.js +1 -84
- package/dist/core/canvas/labels.js +1 -43
- package/dist/core/canvas/meta-file.js +1 -89
- package/dist/core/canvas/migrations.js +41 -1150
- package/dist/core/canvas/nav-model.js +1 -231
- package/dist/core/canvas/nav-render.js +1 -260
- package/dist/core/canvas/node-order.js +1 -37
- package/dist/core/canvas/node-recap.js +2 -67
- package/dist/core/canvas/node-sql-migration.js +2 -209
- package/dist/core/canvas/paths.js +1 -153
- package/dist/core/canvas/pid.js +4 -683
- package/dist/core/canvas/recovery.js +3 -565
- package/dist/core/canvas/remote-canvas-source.js +1 -288
- package/dist/core/canvas/remote-transport.js +1 -57
- package/dist/core/canvas/render-source.js +10 -635
- package/dist/core/canvas/sessions.js +1 -78
- package/dist/core/canvas/source.js +1 -47
- package/dist/core/canvas/status-glyph.js +1 -132
- package/dist/core/canvas/telemetry.js +1 -35
- package/dist/core/canvas/types.js +1 -6
- package/dist/core/canvas/waits.js +4 -68
- package/dist/core/canvas/worktrees.js +1 -93
- package/dist/core/clipboard-text.js +1 -57
- package/dist/core/command-hooks/artifact.js +1 -145
- package/dist/core/command-hooks/catalog.js +1 -38
- package/dist/core/command-hooks/compose.js +1 -99
- package/dist/core/command-hooks/discovery.js +1 -228
- package/dist/core/command-hooks/help.js +1 -18
- package/dist/core/command-hooks/index.js +1 -7
- package/dist/core/command-hooks/lifecycle-catalog.js +1 -9
- package/dist/core/command-hooks/lifecycle-create.js +1 -51
- package/dist/core/command-hooks/report.js +1 -28
- package/dist/core/command-hooks/schema.js +1 -157
- package/dist/core/command-hooks/transport/exec-invoke.js +1 -276
- package/dist/core/command-hooks/transport/exec-lifecycle.js +1 -211
- package/dist/core/command-manifests/manifest.js +1 -324
- package/dist/core/command-manifests/registry.js +1 -118
- package/dist/core/command-manifests/schema.js +1 -736
- package/dist/core/command-plugins/bundle.js +1 -261
- package/dist/core/command-plugins/compose.js +1 -65
- package/dist/core/command-plugins/discovery.js +1 -245
- package/dist/core/command-plugins/endpoint.js +1 -48
- package/dist/core/command-plugins/extensions.js +1 -166
- package/dist/core/command-plugins/help-addenda.js +1 -44
- package/dist/core/command-plugins/presence.js +1 -17
- package/dist/core/command-plugins/revalidate.js +2 -152
- package/dist/core/command-plugins/transport/exec-invoke.js +1 -215
- package/dist/core/command-plugins/transport/http-fetch.js +1 -68
- package/dist/core/command-plugins/transport/http-invoke.js +3 -546
- package/dist/core/command.js +10 -739
- package/dist/core/config.js +1 -1059
- package/dist/core/document-lines.js +3 -6
- package/dist/core/env-name.js +1 -9
- package/dist/core/errors.js +1 -52
- package/dist/core/events/emit.js +1 -17
- package/dist/core/events/envelope.js +1 -84
- package/dist/core/events/errors.js +1 -69
- package/dist/core/events/index.js +1 -4
- package/dist/core/events/operation-id.js +1 -24
- package/dist/core/events/read.js +1 -623
- package/dist/core/events/serialize.js +1 -199
- package/dist/core/events/source.js +1 -31
- package/dist/core/events/types.js +1 -11
- package/dist/core/exclusive-lock.js +1 -197
- package/dist/core/fault-classifier.js +1 -96
- package/dist/core/feed/feed.js +7 -202
- package/dist/core/feed/inbox-migrate.js +3 -135
- package/dist/core/feed/inbox.js +10 -122
- package/dist/core/feed/messages.js +6 -212
- package/dist/core/frontmatter.js +1 -35
- package/dist/core/fs-utils.js +3 -202
- package/dist/core/git.js +2 -103
- package/dist/core/help.js +9 -310
- package/dist/core/host-exports/builtins.js +9 -68
- package/dist/core/host-exports/export.js +3 -124
- package/dist/core/human/action-binding.js +1 -40
- package/dist/core/human/answer-text.js +5 -100
- package/dist/core/human/answer.js +1 -119
- package/dist/core/human/claim.js +3 -67
- package/dist/core/human/completion.js +1 -27
- package/dist/core/human/component-docs.js +78 -272
- package/dist/core/human/convention.js +2 -82
- package/dist/core/human/feedback-companion.js +1 -106
- package/dist/core/human/feedback.js +1 -88
- package/dist/core/human/page-authoring.js +1 -19
- package/dist/core/human/page-catalog.js +1 -172
- package/dist/core/human/page-errors.js +1 -7
- package/dist/core/human/page-eval.js +1 -125
- package/dist/core/human/page-html-markdown.js +8 -260
- package/dist/core/human/page-markdown.js +17 -295
- package/dist/core/human/page-schema.js +1 -373
- package/dist/core/human/page-synth.js +8 -27
- package/dist/core/human/page.js +1 -198
- package/dist/core/human/requests.js +15 -466
- package/dist/core/human/review-schema.js +1 -34
- package/dist/core/human/root.js +1 -11
- package/dist/core/human/scan.js +1 -69
- package/dist/core/human/summary.js +1 -5
- package/dist/core/human/tickets.js +1 -171
- package/dist/core/human/types.js +0 -1
- package/dist/core/human/visible-paths.js +1 -77
- package/dist/core/human-actions.js +1 -101
- package/dist/core/inspector/chrome.js +1 -14
- package/dist/core/inspector/contract.js +0 -1
- package/dist/core/inspector/core.js +2 -295
- package/dist/core/inspector/host.js +4 -538
- package/dist/core/inspector/model.js +2 -226
- package/dist/core/inspector/text.js +6 -45
- package/dist/core/inspector/transport.js +1 -36
- package/dist/core/inspector/tui.js +2 -295
- package/dist/core/installed-plugins.js +1 -78
- package/dist/core/io.js +7 -356
- package/dist/core/keybindings/attach-control.js +1 -42
- package/dist/core/keybindings/background-bash.js +1 -33
- package/dist/core/keybindings/catalog.js +1 -256
- package/dist/core/keybindings/inbox.js +1 -25
- package/dist/core/keybindings/index.js +1 -7
- package/dist/core/keybindings/match.js +1 -127
- package/dist/core/keybindings/persistence.js +1 -49
- package/dist/core/keybindings/resolve.js +1 -348
- package/dist/core/keybindings/types.js +0 -1
- package/dist/core/locked-file.js +1 -118
- package/dist/core/log.js +3 -27
- package/dist/core/manifest-recovery.js +1 -72
- package/dist/core/manifest-stale.js +1 -39
- package/dist/core/manifest.js +1 -20
- package/dist/core/memory/doc-link-grammar.js +2 -109
- package/dist/core/memory/extensions.js +1 -221
- package/dist/core/memory/history.js +6 -268
- package/dist/core/memory/identity.js +1 -181
- package/dist/core/memory/inline-ref-grammar.js +1 -98
- package/dist/core/memory/inline-ref-guidance.js +2 -35
- package/dist/core/memory/inline-ref-inventory.js +1 -59
- package/dist/core/memory/lint.js +2 -671
- package/dist/core/memory/project-namespace.js +2 -85
- package/dist/core/memory/repository-association.js +1 -129
- package/dist/core/memory/tree.js +1 -93
- package/dist/core/memory-resolver.js +2 -611
- package/dist/core/model-config.js +1 -107
- package/dist/core/model-routes.js +1 -201
- package/dist/core/nested-stores.js +2 -166
- package/dist/core/output.js +7 -99
- package/dist/core/pagination.js +1 -88
- package/dist/core/plugin-swap-lock.js +1 -31
- package/dist/core/pool-credential-store.js +1 -116
- package/dist/core/predicate.js +1 -191
- package/dist/core/preview-registry.js +2 -411
- package/dist/core/preview-result-path.js +1 -26
- package/dist/core/profiles/default-binding.js +1 -24
- package/dist/core/profiles/deletion-reservation.js +1 -42
- package/dist/core/profiles/env-store.js +2 -162
- package/dist/core/profiles/fuzzy-match.js +1 -92
- package/dist/core/profiles/manifest.js +1 -574
- package/dist/core/profiles/select.js +35 -741
- package/dist/core/profiles/state-block.js +3 -17
- package/dist/core/provider-error-recognition.js +1 -74
- package/dist/core/provider-failure.js +1 -86
- package/dist/core/provider-management.js +1 -22
- package/dist/core/remote-canvas-target.js +1 -30
- package/dist/core/render.js +18 -138
- package/dist/core/resolver.js +1 -111
- package/dist/core/review/birth.js +1 -52
- package/dist/core/review/comments.js +5 -279
- package/dist/core/review/companion.js +1 -215
- package/dist/core/review/document.js +2 -138
- package/dist/core/review/project.js +1 -36
- package/dist/core/review/realize.js +1 -71
- package/dist/core/review/remap.js +4 -141
- package/dist/core/review/signal.js +1 -12
- package/dist/core/review/stage.js +1 -184
- package/dist/core/review/store.js +1 -168
- package/dist/core/review/types.js +1 -23
- package/dist/core/runtime/advertised-command-invocation.js +1 -233
- package/dist/core/runtime/auth-reload.js +1 -67
- package/dist/core/runtime/banner.js +1 -51
- package/dist/core/runtime/bearings-render.js +18 -250
- package/dist/core/runtime/bearings.js +7 -194
- package/dist/core/runtime/bin-contributions.js +2 -186
- package/dist/core/runtime/boot-root.js +1 -107
- package/dist/core/runtime/branded-host.js +2 -264
- package/dist/core/runtime/broker/auth-reload.js +1 -157
- package/dist/core/runtime/broker/client-registry.js +1 -179
- package/dist/core/runtime/broker/daemon-ops.js +1 -88
- package/dist/core/runtime/broker/engine-drive.js +1 -354
- package/dist/core/runtime/broker/engine-routing.js +1 -211
- package/dist/core/runtime/broker/event-projection.js +1 -193
- package/dist/core/runtime/broker/extension-abort.js +1 -36
- package/dist/core/runtime/broker/fault-retry.js +1 -588
- package/dist/core/runtime/broker/frame-client.js +1 -132
- package/dist/core/runtime/broker/frame-dispatch.js +1 -183
- package/dist/core/runtime/broker/frame-engine-control.js +1 -231
- package/dist/core/runtime/broker/frame-memory-refs.js +1 -41
- package/dist/core/runtime/broker/frame-model-query.js +1 -69
- package/dist/core/runtime/broker/frame-read.js +1 -116
- package/dist/core/runtime/broker/frame-replies.js +1 -64
- package/dist/core/runtime/broker/frame-session.js +4 -203
- package/dist/core/runtime/broker/held-deferred-inbox.js +1 -13
- package/dist/core/runtime/broker/inbox.js +13 -163
- package/dist/core/runtime/broker/node-named.js +1 -27
- package/dist/core/runtime/broker/read-ops.js +1 -171
- package/dist/core/runtime/broker/rebind.js +1 -318
- package/dist/core/runtime/broker/tool-groups.js +1 -246
- package/dist/core/runtime/broker/turn-admission.js +1 -31
- package/dist/core/runtime/broker/turn-ignition.js +1 -84
- package/dist/core/runtime/broker-cli.js +3 -81
- package/dist/core/runtime/broker-extension-render.js +5 -135
- package/dist/core/runtime/broker-inventory.js +1 -116
- package/dist/core/runtime/broker-persona-guidance.js +4 -154
- package/dist/core/runtime/broker-protocol.js +3 -152
- package/dist/core/runtime/broker-request.js +1 -85
- package/dist/core/runtime/broker-sdk.js +1 -129
- package/dist/core/runtime/broker.js +1 -1214
- package/dist/core/runtime/canvas-extensions.js +1 -96
- package/dist/core/runtime/chat-inventory-rows.js +1 -105
- package/dist/core/runtime/close.js +1 -265
- package/dist/core/runtime/command-expansion.js +9 -104
- package/dist/core/runtime/command-surface.js +1 -117
- package/dist/core/runtime/connectivity.js +1 -73
- package/dist/core/runtime/deliver-live.js +1 -88
- package/dist/core/runtime/fault-recovery.js +1 -83
- package/dist/core/runtime/fault.js +1 -17
- package/dist/core/runtime/fleet.js +1 -58
- package/dist/core/runtime/front-door-env.js +1 -16
- package/dist/core/runtime/front-door.js +7 -183
- package/dist/core/runtime/headless-pi.js +1 -161
- package/dist/core/runtime/host.js +1 -457
- package/dist/core/runtime/interactive-deliver.js +1 -51
- package/dist/core/runtime/invocation.js +0 -10
- package/dist/core/runtime/kickoff.js +30 -327
- package/dist/core/runtime/launch-config-worker.js +1 -12
- package/dist/core/runtime/launch-prompt.js +4 -13
- package/dist/core/runtime/launch-target.js +1 -55
- package/dist/core/runtime/launch.js +1 -483
- package/dist/core/runtime/lifecycle.js +2 -213
- package/dist/core/runtime/managed-provider-cooling.js +1 -62
- package/dist/core/runtime/memory.js +1 -17
- package/dist/core/runtime/model-registry.js +1 -13
- package/dist/core/runtime/model-selection.js +1 -135
- package/dist/core/runtime/model-swap.js +1 -86
- package/dist/core/runtime/naming.js +14 -298
- package/dist/core/runtime/nerd-font.js +2 -127
- package/dist/core/runtime/node-read.js +2 -386
- package/dist/core/runtime/nodes.js +1 -331
- package/dist/core/runtime/outcome-document.js +1 -97
- package/dist/core/runtime/package-health.js +4 -99
- package/dist/core/runtime/persona.js +2 -55
- package/dist/core/runtime/pi-cli.js +1 -65
- package/dist/core/runtime/pi-vendored.js +1 -66
- package/dist/core/runtime/placement-tmux.js +1 -81
- package/dist/core/runtime/placement.js +1 -386
- package/dist/core/runtime/promote.js +1 -174
- package/dist/core/runtime/prospective-inventory-cli.js +3 -61
- package/dist/core/runtime/prospective-inventory.js +2 -88
- package/dist/core/runtime/recap.js +27 -103
- package/dist/core/runtime/recycle.js +1 -190
- package/dist/core/runtime/reopen.js +1 -138
- package/dist/core/runtime/reset.js +1 -245
- package/dist/core/runtime/resume-root.js +10 -290
- package/dist/core/runtime/revive-all.js +1 -107
- package/dist/core/runtime/revive.js +4 -544
- package/dist/core/runtime/roadmap.js +4 -38
- package/dist/core/runtime/session-branch.js +1 -46
- package/dist/core/runtime/session-cycles.js +1 -110
- package/dist/core/runtime/session-list-cache.js +1 -406
- package/dist/core/runtime/session-visibility.js +1 -99
- package/dist/core/runtime/shell-expansion.js +9 -100
- package/dist/core/runtime/situational-context.js +2 -67
- package/dist/core/runtime/situational-live.js +1 -41
- package/dist/core/runtime/spawn-env.js +1 -255
- package/dist/core/runtime/spawn.js +3 -577
- package/dist/core/runtime/stamp/channel.js +1 -76
- package/dist/core/runtime/stamp/protocol.js +1 -113
- package/dist/core/runtime/stop-guard.js +7 -116
- package/dist/core/runtime/stop-signals.js +1 -46
- package/dist/core/runtime/stream-watchdog.js +1 -134
- package/dist/core/runtime/structured-output.js +4 -156
- package/dist/core/runtime/surface-bg.js +1 -85
- package/dist/core/runtime/tmux-bindings.js +4 -730
- package/dist/core/runtime/tmux-chrome.js +1 -5
- package/dist/core/runtime/tmux-driver.js +7 -637
- package/dist/core/runtime/tool-group-summary.js +6 -85
- package/dist/core/runtime/turn-visibility.js +1 -31
- package/dist/core/runtime/view-socket.js +1 -83
- package/dist/core/runtime/warm-pool.d.ts +3 -2
- package/dist/core/runtime/warm-pool.js +1 -385
- package/dist/core/scope.js +1 -254
- package/dist/core/scoped-state/db.js +1 -135
- package/dist/core/scoped-state/migrate.js +3 -181
- package/dist/core/scoped-state/paths.js +1 -27
- package/dist/core/scoped-state/profiles.js +1 -62
- package/dist/core/scoped-state/providers.js +1 -8
- package/dist/core/scoped-state/schema.js +3 -16
- package/dist/core/scoped-state/settings.js +1 -82
- package/dist/core/secrets.js +2 -55
- package/dist/core/self-update.js +1 -71
- package/dist/core/session-model/session-state.js +1 -180
- package/dist/core/shell-segments.js +4 -169
- package/dist/core/spawn.js +1 -26
- package/dist/core/stdout-errors.js +1 -14
- package/dist/core/subscription-state.js +3 -193
- package/dist/core/substrate/frontmatter-validation.js +1 -105
- package/dist/core/substrate/gate-explain.js +1 -424
- package/dist/core/substrate/gate.js +1 -26
- package/dist/core/substrate/index.js +1 -30
- package/dist/core/substrate/injected-store.js +1 -249
- package/dist/core/substrate/listings.js +1 -115
- package/dist/core/substrate/on-read-node.js +1 -36
- package/dist/core/substrate/on-read.js +9 -315
- package/dist/core/substrate/plan.js +1 -266
- package/dist/core/substrate/render-node.js +1 -30
- package/dist/core/substrate/render.js +65 -689
- package/dist/core/substrate/schema.js +1 -186
- package/dist/core/substrate/session-cache.js +1 -83
- package/dist/core/substrate/subject-fields.js +1 -35
- package/dist/core/substrate/subject.js +1 -47
- package/dist/core/substrate/surface-match.js +1 -242
- package/dist/core/termrender/code-doc.js +5 -92
- package/dist/core/termrender/display.js +2 -56
- package/dist/core/termrender/termrender.js +14 -719
- package/dist/core/termrender/version.js +1 -1
- package/dist/core/timing.js +2 -94
- package/dist/core/tui/draw.js +2 -378
- package/dist/core/tui/fuzzy.js +1 -38
- package/dist/core/tui/markdown.js +3 -407
- package/dist/core/tui/page-host.js +1 -74
- package/dist/core/tui/panel.js +1 -137
- package/dist/core/tui/terminal.js +2 -100
- package/dist/core/user-settings.js +1 -454
- package/dist/core/wake.js +1 -296
- package/dist/core/worktree-close.js +6 -228
- package/dist/core/worktree-containment.js +3 -48
- package/dist/core/worktree-landing.js +4 -56
- package/dist/core/worktree-mutation-async.js +10 -280
- package/dist/core/worktree-quarantine.js +1 -54
- package/dist/core/worktree-sweep.js +6 -453
- package/dist/core/worktree.js +18 -899
- package/dist/daemon/api/bridge.js +8 -418
- package/dist/daemon/api/handlers/attach.js +1 -65
- package/dist/daemon/api/handlers/bash-jobs.js +2 -91
- package/dist/daemon/api/handlers/broker-ops.js +1 -447
- package/dist/daemon/api/handlers/broker-recovery.js +1 -251
- package/dist/daemon/api/handlers/canvas.js +6 -490
- package/dist/daemon/api/handlers/chat-inventory.js +1 -25
- package/dist/daemon/api/handlers/crons.js +1 -373
- package/dist/daemon/api/handlers/daemon.js +1 -76
- package/dist/daemon/api/handlers/feedback-comments.js +3 -199
- package/dist/daemon/api/handlers/files.js +1 -63
- package/dist/daemon/api/handlers/focus.js +1 -92
- package/dist/daemon/api/handlers/health.js +1 -76
- package/dist/daemon/api/handlers/human-requests.js +1 -379
- package/dist/daemon/api/handlers/human.js +1 -3
- package/dist/daemon/api/handlers/inbox-page.js +1 -89
- package/dist/daemon/api/handlers/inbox.js +1 -301
- package/dist/daemon/api/handlers/memory.js +1 -50
- package/dist/daemon/api/handlers/messages.js +2 -506
- package/dist/daemon/api/handlers/model-config.js +1 -44
- package/dist/daemon/api/handlers/modelauth.js +1 -165
- package/dist/daemon/api/handlers/node-outcomes.js +1 -181
- package/dist/daemon/api/handlers/nodes.js +1 -943
- package/dist/daemon/api/handlers/profiles.js +1 -140
- package/dist/daemon/api/handlers/prospective-chat-inventory.js +1 -59
- package/dist/daemon/api/handlers/reports.js +16 -332
- package/dist/daemon/api/handlers/review-comments.js +1 -465
- package/dist/daemon/api/handlers/reviews.js +1 -200
- package/dist/daemon/api/handlers/subscriptions.js +1 -53
- package/dist/daemon/api/handlers/validate.js +1 -58
- package/dist/daemon/api/handlers/worktree.js +1 -39
- package/dist/daemon/api/map.js +2 -735
- package/dist/daemon/api/router.js +1 -190
- package/dist/daemon/api/server.js +11 -408
- package/dist/daemon/boot-migrations.js +1 -31
- package/dist/daemon/companion-retire.js +1 -34
- package/dist/daemon/control.js +1 -22
- package/dist/daemon/cron/armed-context.js +1 -100
- package/dist/daemon/cron/capture.js +2 -45
- package/dist/daemon/cron/disposition.js +1 -55
- package/dist/daemon/cron/escalation.js +3 -124
- package/dist/daemon/cron/held.js +1 -20
- package/dist/daemon/cron/lease-recovery.js +1 -119
- package/dist/daemon/cron/live-runs.js +1 -23
- package/dist/daemon/cron/passes.js +1 -58
- package/dist/daemon/cron/settle.js +1 -61
- package/dist/daemon/cron/sinks.js +2 -59
- package/dist/daemon/cron-run.js +1 -405
- package/dist/daemon/crtrd-cli.js +1 -23
- package/dist/daemon/crtrd.js +8 -854
- package/dist/daemon/delivery/run-delivery.js +1 -164
- package/dist/daemon/fleet.js +17 -475
- package/dist/daemon/human/finish.js +10 -179
- package/dist/daemon/human/settle.js +1 -89
- package/dist/daemon/human/sweep.js +1 -66
- package/dist/daemon/manage.js +2 -595
- package/dist/daemon/messaging/node-message.js +1 -99
- package/dist/daemon/park-activity.js +1 -30
- package/dist/daemon/park-pending.js +1 -52
- package/dist/daemon/pidfile.js +1 -37
- package/dist/daemon/profile-delete.js +1 -306
- package/dist/daemon/reconcilers/bash-deadline.js +1 -80
- package/dist/daemon/reconcilers/broker-supervision.js +4 -761
- package/dist/daemon/reconcilers/controller-death.js +1 -14
- package/dist/daemon/reconcilers/cron-lane.js +1 -29
- package/dist/daemon/reconcilers/delivery-lane.js +1 -130
- package/dist/daemon/reconcilers/live-obligation.js +1 -87
- package/dist/daemon/reconcilers/managed-worktree-sweep.js +1 -202
- package/dist/daemon/reconcilers/node-deadline.js +1 -82
- package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.js +1 -172
- package/dist/daemon/reconcilers/node-lifecycle/respawn-policy.js +1 -59
- package/dist/daemon/reconcilers/node-lifecycle/terminating.js +1 -12
- package/dist/daemon/reconcilers/node-lifecycle/tick.js +1 -146
- package/dist/daemon/reconcilers/node-lifecycle/wants-execution.js +1 -11
- package/dist/daemon/reconcilers/pending-review-submit.js +1 -36
- package/dist/daemon/reconcilers/storage-maintenance.js +1 -207
- package/dist/daemon/review/comment-notify.js +2 -109
- package/dist/daemon/review/companion.js +1 -29
- package/dist/daemon/review/deliver.js +3 -8
- package/dist/daemon/review/finish.js +1 -122
- package/dist/daemon/review/sweep.js +1 -18
- package/dist/daemon/startup-policy.js +1 -1
- package/dist/daemon/supervise-cadence.js +1 -6
- package/dist/hook-authoring.js +5 -447
- package/dist/hook-process.js +1 -34
- package/dist/index.js +1 -52
- package/dist/migrations/001-surfaces-frontmatter.js +1 -161
- package/dist/migrations/002-profile-project-memory.js +1 -72
- package/dist/migrations/003-repository-root-memory-identity/front-door.js +11 -231
- package/dist/migrations/003-repository-root-memory-identity/index.js +5 -513
- package/dist/migrations/003-repository-root-memory-identity/references.js +5 -469
- package/dist/migrations/003-repository-root-memory-identity/repository-facts.js +3 -349
- package/dist/migrations/activation.js +2 -89
- package/dist/migrations/convergent.js +2 -82
- package/dist/migrations/corpus.js +3 -483
- package/dist/migrations/frontmatter-splice.js +8 -176
- package/dist/migrations/profile-manifests.js +2 -70
- package/dist/migrations/registry.js +1 -42
- package/dist/migrations/runner.js +1 -85
- package/dist/migrations/types.js +0 -24
- package/dist/pi-extensions/broker-local.js +2 -106
- package/dist/pi-extensions/canvas-bash-valve.js +7 -461
- package/dist/pi-extensions/canvas-context-intro.js +2 -113
- package/dist/pi-extensions/canvas-doc-substrate.js +9 -178
- package/dist/pi-extensions/canvas-goal-capture.js +1 -83
- package/dist/pi-extensions/canvas-inbox-watcher.js +1 -1010
- package/dist/pi-extensions/canvas-passive-context.js +14 -203
- package/dist/pi-extensions/canvas-preview-result.js +2 -72
- package/dist/pi-extensions/canvas-prompt-scrub.js +2 -54
- package/dist/pi-extensions/canvas-recap.js +11 -405
- package/dist/pi-extensions/canvas-review-boundary.js +3 -63
- package/dist/pi-extensions/canvas-stamp.js +2 -77
- package/dist/pi-extensions/canvas-stophook.js +1 -643
- package/dist/pi-extensions/canvas-structured-output.js +13 -35
- package/dist/pi-extensions/canvas-tool-guide.js +9 -78
- package/dist/pi-extensions/envelope-merge.js +8 -29
- package/dist/prompts/review.js +20 -42
- package/dist/shared/birth-announcement.js +1 -25
- package/dist/shared/crtr-version.js +1 -18
- package/dist/shared/env.js +1 -214
- package/dist/shared/generated-context.js +11 -226
- package/dist/shared/predicates.js +1 -4
- package/dist/shared/shell-quote.js +1 -5
- package/dist/shared/tool-groups.js +1 -64
- package/dist/shared/working-activity.js +1 -27
- package/dist/suppress-experimental-warnings.js +1 -15
- package/dist/types.js +1 -185
- package/docs/public-api.md +10 -9
- package/package.json +6 -5
- package/runtime.lock.json +5 -5
- package/dist/api/__tests__/integration/client.test.d.ts +0 -1
- package/dist/api/__tests__/integration/client.test.js +0 -163
- package/dist/builtin-pi-packages/pi-crtr-extensions/__tests__/insights-active-init.test.ts +0 -98
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-commands.test.ts +0 -93
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/integration/provider-rotation.test.ts +0 -2530
- package/dist/clients/__tests__/helpers/human-daemon.d.ts +0 -11
- package/dist/clients/__tests__/helpers/human-daemon.js +0 -60
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.js +0 -97
- package/dist/clients/attach/__tests__/bash-call-width.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/bash-call-width.test.js +0 -38
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +0 -175
- package/dist/clients/attach/__tests__/completion-frecency.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/completion-frecency.test.js +0 -35
- package/dist/clients/attach/__tests__/context-message.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/context-message.test.js +0 -130
- package/dist/clients/attach/__tests__/crtr-output.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/crtr-output.test.js +0 -68
- package/dist/clients/attach/__tests__/diagram.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/diagram.test.js +0 -42
- package/dist/clients/attach/__tests__/edit-diff.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/edit-diff.test.js +0 -31
- package/dist/clients/attach/__tests__/frame-selection.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/frame-selection.test.js +0 -84
- package/dist/clients/attach/__tests__/group-activity.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/group-activity.test.js +0 -165
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.js +0 -83
- package/dist/clients/attach/__tests__/pane-tag-successor.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/pane-tag-successor.test.js +0 -56
- package/dist/clients/attach/__tests__/profile-files.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/profile-files.test.js +0 -21
- package/dist/clients/attach/__tests__/prompt-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/prompt-preview.test.js +0 -21
- package/dist/clients/attach/__tests__/ref-autocomplete.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/ref-autocomplete.test.js +0 -64
- package/dist/clients/attach/__tests__/titled-editor-paste.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-paste.test.js +0 -114
- package/dist/clients/attach/__tests__/titled-editor-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-preview.test.js +0 -83
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.js +0 -81
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.js +0 -135
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.js +0 -66
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +0 -35
- package/dist/clients/inbox/review/__tests__/review-core.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/review-core.test.js +0 -52
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.js +0 -100
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.d.ts +0 -1
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.js +0 -69
- package/dist/commands/__tests__/human.test.d.ts +0 -1
- package/dist/commands/__tests__/human.test.js +0 -172
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.js +0 -237
- package/dist/commands/__tests__/integration/migrate.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/migrate.test.js +0 -1330
- package/dist/commands/__tests__/node-message.test.d.ts +0 -1
- package/dist/commands/__tests__/node-message.test.js +0 -112
- package/dist/commands/__tests__/node-new.test.d.ts +0 -1
- package/dist/commands/__tests__/node-new.test.js +0 -58
- package/dist/commands/__tests__/revive-now-gate.test.d.ts +0 -1
- package/dist/commands/__tests__/revive-now-gate.test.js +0 -62
- package/dist/commands/__tests__/seam/daemon-status.test.d.ts +0 -1
- package/dist/commands/__tests__/seam/daemon-status.test.js +0 -29
- package/dist/commands/__tests__/surface-reload-target.test.d.ts +0 -1
- package/dist/commands/__tests__/surface-reload-target.test.js +0 -21
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.js +0 -379
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.js +0 -124
- package/dist/commands/memory/__tests__/repository-root-lint.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/repository-root-lint.test.js +0 -148
- package/dist/commands/sys/__tests__/config-model-ladders.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/config-model-ladders.test.js +0 -114
- package/dist/commands/sys/__tests__/setup-core.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/setup-core.test.js +0 -45
- package/dist/commands/sys/__tests__/sync-project-guidance.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/sync-project-guidance.test.js +0 -244
- package/dist/core/__tests__/bash-guard.test.d.ts +0 -1
- package/dist/core/__tests__/bash-guard.test.js +0 -190
- package/dist/core/__tests__/boot-fault-attempt.test.d.ts +0 -1
- package/dist/core/__tests__/boot-fault-attempt.test.js +0 -105
- package/dist/core/__tests__/boot.test.d.ts +0 -1
- package/dist/core/__tests__/boot.test.js +0 -274
- package/dist/core/__tests__/branded-host-concurrency.test.d.ts +0 -1
- package/dist/core/__tests__/branded-host-concurrency.test.js +0 -72
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +0 -75
- package/dist/core/__tests__/broker-launch-candidates.test.d.ts +0 -1
- package/dist/core/__tests__/broker-launch-candidates.test.js +0 -311
- package/dist/core/__tests__/broker-preflight.test.d.ts +0 -1
- package/dist/core/__tests__/broker-preflight.test.js +0 -95
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.d.ts +0 -1
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.js +0 -82
- package/dist/core/__tests__/broker-turn-admission.test.d.ts +0 -1
- package/dist/core/__tests__/broker-turn-admission.test.js +0 -44
- package/dist/core/__tests__/canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-db-boundary.test.js +0 -46
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +0 -710
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.js +0 -310
- package/dist/core/__tests__/canvas-inbox-watcher.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher.test.js +0 -397
- package/dist/core/__tests__/canvas.test.d.ts +0 -1
- package/dist/core/__tests__/canvas.test.js +0 -138
- package/dist/core/__tests__/child-death-wake.test.d.ts +0 -1
- package/dist/core/__tests__/child-death-wake.test.js +0 -153
- package/dist/core/__tests__/cli-help-contract.test.d.ts +0 -1
- package/dist/core/__tests__/cli-help-contract.test.js +0 -152
- package/dist/core/__tests__/close.test.d.ts +0 -1
- package/dist/core/__tests__/close.test.js +0 -284
- package/dist/core/__tests__/collectible.test.d.ts +0 -1
- package/dist/core/__tests__/collectible.test.js +0 -89
- package/dist/core/__tests__/config-change-delta.test.d.ts +0 -1
- package/dist/core/__tests__/config-change-delta.test.js +0 -108
- package/dist/core/__tests__/context-intro.test.d.ts +0 -1
- package/dist/core/__tests__/context-intro.test.js +0 -123
- package/dist/core/__tests__/cron-armed-context-failure.test.d.ts +0 -1
- package/dist/core/__tests__/cron-armed-context-failure.test.js +0 -150
- package/dist/core/__tests__/cron-held-settlement.test.d.ts +0 -1
- package/dist/core/__tests__/cron-held-settlement.test.js +0 -240
- package/dist/core/__tests__/cron-node-sink-parked-root.test.d.ts +0 -1
- package/dist/core/__tests__/cron-node-sink-parked-root.test.js +0 -166
- package/dist/core/__tests__/cron-self-cancel-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/cron-self-cancel-delivery.test.js +0 -84
- package/dist/core/__tests__/cron-timeout-descendants.test.d.ts +0 -1
- package/dist/core/__tests__/cron-timeout-descendants.test.js +0 -114
- package/dist/core/__tests__/daemon-boot.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-boot.test.js +0 -422
- package/dist/core/__tests__/daemon-wedge.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-wedge.test.js +0 -106
- package/dist/core/__tests__/dead-node-policy-table.test.d.ts +0 -1
- package/dist/core/__tests__/dead-node-policy-table.test.js +0 -77
- package/dist/core/__tests__/events-contract.test.d.ts +0 -1
- package/dist/core/__tests__/events-contract.test.js +0 -76
- package/dist/core/__tests__/extension-abort.test.d.ts +0 -1
- package/dist/core/__tests__/extension-abort.test.js +0 -21
- package/dist/core/__tests__/fault-classifier.test.d.ts +0 -1
- package/dist/core/__tests__/fault-classifier.test.js +0 -138
- package/dist/core/__tests__/fixtures/api-server-host.d.ts +0 -1
- package/dist/core/__tests__/fixtures/api-server-host.js +0 -47
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.js +0 -34
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.js +0 -32
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +0 -347
- package/dist/core/__tests__/fixtures/fake-engine.js +0 -1509
- package/dist/core/__tests__/fixtures/fake-pi-host.d.ts +0 -2
- package/dist/core/__tests__/fixtures/fake-pi-host.js +0 -311
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.d.ts +0 -1
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.js +0 -75
- package/dist/core/__tests__/fixtures/metadata-migration-race.d.ts +0 -1
- package/dist/core/__tests__/fixtures/metadata-migration-race.js +0 -49
- package/dist/core/__tests__/focuses.test.d.ts +0 -1
- package/dist/core/__tests__/focuses.test.js +0 -113
- package/dist/core/__tests__/fs-utils.test.d.ts +0 -1
- package/dist/core/__tests__/fs-utils.test.js +0 -50
- package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -43
- package/dist/core/__tests__/helpers/broker-clients.js +0 -174
- package/dist/core/__tests__/helpers/fleet.d.ts +0 -12
- package/dist/core/__tests__/helpers/fleet.js +0 -50
- package/dist/core/__tests__/helpers/harness.d.ts +0 -124
- package/dist/core/__tests__/helpers/harness.js +0 -806
- package/dist/core/__tests__/helpers/viewer-panes.d.ts +0 -12
- package/dist/core/__tests__/helpers/viewer-panes.js +0 -133
- package/dist/core/__tests__/history-inbox.test.d.ts +0 -1
- package/dist/core/__tests__/history-inbox.test.js +0 -121
- package/dist/core/__tests__/human-action-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/human-action-delivery.test.js +0 -162
- package/dist/core/__tests__/human-actions.test.d.ts +0 -1
- package/dist/core/__tests__/human-actions.test.js +0 -120
- package/dist/core/__tests__/inline-memory-refs.test.d.ts +0 -1
- package/dist/core/__tests__/inline-memory-refs.test.js +0 -225
- package/dist/core/__tests__/integration/broker-fork-seam.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-fork-seam.test.js +0 -193
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.js +0 -750
- package/dist/core/__tests__/integration/broker-snapshot-history.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-snapshot-history.test.js +0 -288
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.js +0 -103
- package/dist/core/__tests__/integration/command-plugins.test.d.ts +0 -1
- package/dist/core/__tests__/integration/command-plugins.test.js +0 -1200
- package/dist/core/__tests__/integration/deferred-no-wake.test.d.ts +0 -1
- package/dist/core/__tests__/integration/deferred-no-wake.test.js +0 -610
- package/dist/core/__tests__/integration/flagship-lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/flagship-lifecycle.test.js +0 -264
- package/dist/core/__tests__/integration/fresh-home-commands.test.d.ts +0 -1
- package/dist/core/__tests__/integration/fresh-home-commands.test.js +0 -49
- package/dist/core/__tests__/integration/git-optional-locks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/git-optional-locks.test.js +0 -81
- package/dist/core/__tests__/integration/host-teardown-process-group.test.d.ts +0 -1
- package/dist/core/__tests__/integration/host-teardown-process-group.test.js +0 -480
- package/dist/core/__tests__/integration/lifecycle-hooks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/lifecycle-hooks.test.js +0 -498
- package/dist/core/__tests__/integration/live-mutation-verbs.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation-verbs.test.js +0 -180
- package/dist/core/__tests__/integration/live-mutation.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation.test.js +0 -173
- package/dist/core/__tests__/integration/plugin-revalidate.test.d.ts +0 -1
- package/dist/core/__tests__/integration/plugin-revalidate.test.js +0 -359
- package/dist/core/__tests__/integration/profile-pause.test.d.ts +0 -1
- package/dist/core/__tests__/integration/profile-pause.test.js +0 -115
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.js +0 -151
- package/dist/core/__tests__/integration/revive.test.d.ts +0 -1
- package/dist/core/__tests__/integration/revive.test.js +0 -615
- package/dist/core/__tests__/integration/spawn-root.test.d.ts +0 -1
- package/dist/core/__tests__/integration/spawn-root.test.js +0 -536
- package/dist/core/__tests__/integration/subscription-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/integration/subscription-delivery.test.js +0 -132
- package/dist/core/__tests__/integration/tmux-surface.test.d.ts +0 -1
- package/dist/core/__tests__/integration/tmux-surface.test.js +0 -330
- package/dist/core/__tests__/integration/worktree-land.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-land.test.js +0 -607
- package/dist/core/__tests__/integration/worktree-reap.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-reap.test.js +0 -842
- package/dist/core/__tests__/kickoff.test.d.ts +0 -1
- package/dist/core/__tests__/kickoff.test.js +0 -196
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.js +0 -62
- package/dist/core/__tests__/lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle.test.js +0 -176
- package/dist/core/__tests__/live-lifecycle-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/live-lifecycle-prompt.test.js +0 -63
- package/dist/core/__tests__/memory-resolver-precedence.test.d.ts +0 -1
- package/dist/core/__tests__/memory-resolver-precedence.test.js +0 -228
- package/dist/core/__tests__/migration.test.d.ts +0 -1
- package/dist/core/__tests__/migration.test.js +0 -946
- package/dist/core/__tests__/model-pin-durability.test.d.ts +0 -1
- package/dist/core/__tests__/model-pin-durability.test.js +0 -195
- package/dist/core/__tests__/model-routes-config.test.d.ts +0 -1
- package/dist/core/__tests__/model-routes-config.test.js +0 -150
- package/dist/core/__tests__/nested-store-discovery.test.d.ts +0 -1
- package/dist/core/__tests__/nested-store-discovery.test.js +0 -89
- package/dist/core/__tests__/node-outcome.test.d.ts +0 -1
- package/dist/core/__tests__/node-outcome.test.js +0 -246
- package/dist/core/__tests__/on-read-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-crouter-home-fence.test.js +0 -66
- package/dist/core/__tests__/on-read-dedup-resume.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-dedup-resume.test.js +0 -132
- package/dist/core/__tests__/on-read-nested-store.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-nested-store.test.js +0 -135
- package/dist/core/__tests__/parse-argv-stdin-secret.test.d.ts +0 -1
- package/dist/core/__tests__/parse-argv-stdin-secret.test.js +0 -68
- package/dist/core/__tests__/passive-subscription.test.d.ts +0 -1
- package/dist/core/__tests__/passive-subscription.test.js +0 -120
- package/dist/core/__tests__/pid-identity-match.test.d.ts +0 -1
- package/dist/core/__tests__/pid-identity-match.test.js +0 -145
- package/dist/core/__tests__/pid-zombie.test.d.ts +0 -1
- package/dist/core/__tests__/pid-zombie.test.js +0 -42
- package/dist/core/__tests__/plugin-kinds.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-kinds.test.js +0 -182
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.js +0 -43
- package/dist/core/__tests__/plugin-page-components.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-page-components.test.js +0 -159
- package/dist/core/__tests__/preview-mirror-cap.test.d.ts +0 -1
- package/dist/core/__tests__/preview-mirror-cap.test.js +0 -53
- package/dist/core/__tests__/preview-registry-sync.test.d.ts +0 -1
- package/dist/core/__tests__/preview-registry-sync.test.js +0 -107
- package/dist/core/__tests__/profile-project-memory-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/profile-project-memory-delivery.test.js +0 -644
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.d.ts +0 -1
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.js +0 -91
- package/dist/core/__tests__/prune.test.d.ts +0 -1
- package/dist/core/__tests__/prune.test.js +0 -243
- package/dist/core/__tests__/push-final-guard.test.d.ts +0 -1
- package/dist/core/__tests__/push-final-guard.test.js +0 -191
- package/dist/core/__tests__/relaunch-root.test.d.ts +0 -1
- package/dist/core/__tests__/relaunch-root.test.js +0 -249
- package/dist/core/__tests__/remote-canvas-target.test.d.ts +0 -1
- package/dist/core/__tests__/remote-canvas-target.test.js +0 -93
- package/dist/core/__tests__/repository-association.test.d.ts +0 -1
- package/dist/core/__tests__/repository-association.test.js +0 -153
- package/dist/core/__tests__/repository-root-identity.test.d.ts +0 -1
- package/dist/core/__tests__/repository-root-identity.test.js +0 -223
- package/dist/core/__tests__/respawn-throttle.test.d.ts +0 -1
- package/dist/core/__tests__/respawn-throttle.test.js +0 -20
- package/dist/core/__tests__/review-model-floor.test.d.ts +0 -1
- package/dist/core/__tests__/review-model-floor.test.js +0 -83
- package/dist/core/__tests__/revive-all.test.d.ts +0 -1
- package/dist/core/__tests__/revive-all.test.js +0 -157
- package/dist/core/__tests__/revive-capacity.test.d.ts +0 -1
- package/dist/core/__tests__/revive-capacity.test.js +0 -184
- package/dist/core/__tests__/revive-parked-fresh.test.d.ts +0 -1
- package/dist/core/__tests__/revive-parked-fresh.test.js +0 -176
- package/dist/core/__tests__/scope-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/scope-crouter-home-fence.test.js +0 -55
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +0 -262
- package/dist/core/__tests__/seam/broker-attach-stream.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-stream.test.js +0 -176
- package/dist/core/__tests__/seam/broker-cap-freeze.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-cap-freeze.test.js +0 -155
- package/dist/core/__tests__/seam/broker-crash-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-crash-teardown.test.js +0 -131
- package/dist/core/__tests__/seam/broker-pane-resolution.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-pane-resolution.test.js +0 -204
- package/dist/core/__tests__/seam/broker-provider-retry.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-provider-retry.test.js +0 -686
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.js +0 -82
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.js +0 -50
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.js +0 -138
- package/dist/core/__tests__/seam/dormancy-release.test.d.ts +0 -1
- package/dist/core/__tests__/seam/dormancy-release.test.js +0 -516
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.js +0 -65
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.d.ts +0 -1
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.js +0 -84
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.d.ts +0 -1
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.js +0 -160
- package/dist/core/__tests__/seam/node-outcome-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/node-outcome-delivery.test.js +0 -177
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.d.ts +0 -1
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.js +0 -31
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.d.ts +0 -1
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.js +0 -60
- package/dist/core/__tests__/seam/self-close-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/self-close-teardown.test.js +0 -49
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.d.ts +0 -1
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.js +0 -100
- package/dist/core/__tests__/secrets.test.d.ts +0 -1
- package/dist/core/__tests__/secrets.test.js +0 -49
- package/dist/core/__tests__/self-update.test.d.ts +0 -1
- package/dist/core/__tests__/self-update.test.js +0 -46
- package/dist/core/__tests__/session-branch.test.d.ts +0 -1
- package/dist/core/__tests__/session-branch.test.js +0 -61
- package/dist/core/__tests__/session-cycles.test.d.ts +0 -1
- package/dist/core/__tests__/session-cycles.test.js +0 -133
- package/dist/core/__tests__/session-model.test.d.ts +0 -1
- package/dist/core/__tests__/session-model.test.js +0 -111
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.d.ts +0 -1
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +0 -71
- package/dist/core/__tests__/stdin-body-no-discard.test.d.ts +0 -1
- package/dist/core/__tests__/stdin-body-no-discard.test.js +0 -33
- package/dist/core/__tests__/stdout-errors.test.d.ts +0 -1
- package/dist/core/__tests__/stdout-errors.test.js +0 -16
- package/dist/core/__tests__/stop-guard.test.d.ts +0 -1
- package/dist/core/__tests__/stop-guard.test.js +0 -237
- package/dist/core/__tests__/stream-watchdog.test.d.ts +0 -1
- package/dist/core/__tests__/stream-watchdog.test.js +0 -154
- package/dist/core/__tests__/subscription-pool-credential-guard.test.d.ts +0 -1
- package/dist/core/__tests__/subscription-pool-credential-guard.test.js +0 -95
- package/dist/core/__tests__/tmux-driver-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/tmux-driver-boundary.test.js +0 -50
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.d.ts +0 -1
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.js +0 -54
- package/dist/core/__tests__/worktree-landing.test.d.ts +0 -1
- package/dist/core/__tests__/worktree-landing.test.js +0 -11
- package/dist/core/__tests__/yield-ensures-daemon.test.d.ts +0 -1
- package/dist/core/__tests__/yield-ensures-daemon.test.js +0 -55
- package/dist/core/broker-client/__tests__/transport-relay.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-relay.test.js +0 -214
- package/dist/core/broker-client/__tests__/transport-socket.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-socket.test.js +0 -73
- package/dist/core/canvas/__tests__/attention.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/attention.test.js +0 -83
- package/dist/core/canvas/__tests__/history-transcript.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/history-transcript.test.js +0 -102
- package/dist/core/canvas/__tests__/remote-canvas-source.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-canvas-source.test.js +0 -328
- package/dist/core/canvas/__tests__/remote-transport.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-transport.test.js +0 -97
- package/dist/core/canvas/__tests__/render-remote.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/render-remote.test.js +0 -243
- package/dist/core/canvas/__tests__/session-window.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/session-window.test.js +0 -70
- package/dist/core/feed/__tests__/inbox-migrate.test.d.ts +0 -1
- package/dist/core/feed/__tests__/inbox-migrate.test.js +0 -49
- package/dist/core/human/__tests__/page-catalog.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-catalog.test.js +0 -20
- package/dist/core/human/__tests__/page-html-markdown.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-html-markdown.test.js +0 -48
- package/dist/core/human/__tests__/page.test.d.ts +0 -1
- package/dist/core/human/__tests__/page.test.js +0 -92
- package/dist/core/keybindings/__tests__/resolve.test.d.ts +0 -1
- package/dist/core/keybindings/__tests__/resolve.test.js +0 -171
- package/dist/core/profiles/__tests__/env-store.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/env-store.test.js +0 -99
- package/dist/core/profiles/__tests__/fuzzy-match.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/fuzzy-match.test.js +0 -51
- package/dist/core/profiles/__tests__/root-profile.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/root-profile.test.js +0 -59
- package/dist/core/review/__tests__/capture-origin.test.d.ts +0 -1
- package/dist/core/review/__tests__/capture-origin.test.js +0 -150
- package/dist/core/review/__tests__/comments.test.d.ts +0 -1
- package/dist/core/review/__tests__/comments.test.js +0 -116
- package/dist/core/review/__tests__/remap.test.d.ts +0 -1
- package/dist/core/review/__tests__/remap.test.js +0 -177
- package/dist/core/review/__tests__/stage-identity.test.d.ts +0 -1
- package/dist/core/review/__tests__/stage-identity.test.js +0 -150
- package/dist/core/runtime/__tests__/engine-route.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/engine-route.test.js +0 -36
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.js +0 -45
- package/dist/core/runtime/__tests__/node-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/node-env.test.js +0 -73
- package/dist/core/runtime/__tests__/spawn-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/spawn-env.test.js +0 -259
- package/dist/core/substrate/__tests__/surface-match-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-command.test.js +0 -89
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.js +0 -28
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.js +0 -92
- package/dist/daemon/__tests__/autostart-storm.test.d.ts +0 -1
- package/dist/daemon/__tests__/autostart-storm.test.js +0 -128
- package/dist/daemon/__tests__/broker-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/broker-ownership.test.js +0 -25
- package/dist/daemon/__tests__/daemon-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/daemon-ownership.test.js +0 -27
- package/dist/daemon/__tests__/helpers/source-daemon.d.ts +0 -30
- package/dist/daemon/__tests__/helpers/source-daemon.js +0 -176
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.js +0 -83
- package/dist/daemon/__tests__/integration/migration-startup.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/migration-startup.test.js +0 -127
- package/dist/daemon/__tests__/node-deadline-lane.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-deadline-lane.test.js +0 -77
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.js +0 -146
- package/dist/daemon/__tests__/node-outcome-delivery.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-delivery.test.js +0 -116
- package/dist/daemon/__tests__/reconciler-signature.test.d.ts +0 -1
- package/dist/daemon/__tests__/reconciler-signature.test.js +0 -37
- package/dist/daemon/__tests__/subtree-filter-freshness.test.d.ts +0 -1
- package/dist/daemon/__tests__/subtree-filter-freshness.test.js +0 -63
- package/dist/daemon/__tests__/thaw-order.test.d.ts +0 -1
- package/dist/daemon/__tests__/thaw-order.test.js +0 -55
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.js +0 -58
- package/dist/daemon/api/__tests__/broker-settle-park.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/broker-settle-park.test.js +0 -175
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.js +0 -216
- package/dist/daemon/api/__tests__/error-seam.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/error-seam.test.js +0 -83
- package/dist/daemon/api/__tests__/model-config.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/model-config.test.js +0 -73
- package/dist/daemon/api/__tests__/node-create-description.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-create-description.test.js +0 -107
- package/dist/daemon/api/__tests__/node-model-validation.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-model-validation.test.js +0 -183
- package/dist/daemon/api/__tests__/nodes-activity-query.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/nodes-activity-query.test.js +0 -99
- package/dist/daemon/api/__tests__/profile-launch-gates.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-launch-gates.test.js +0 -172
- package/dist/daemon/api/__tests__/profile-metadata-route.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-metadata-route.test.js +0 -95
- package/dist/daemon/api/__tests__/reopen-delivery.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/reopen-delivery.test.js +0 -260
- package/dist/daemon/api/__tests__/seam/api-server.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/api-server.test.js +0 -442
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.js +0 -310
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.js +0 -351
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.js +0 -159
- package/dist/daemon/api/__tests__/seam/profile-delete.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/profile-delete.test.js +0 -372
- package/dist/daemon/api/__tests__/submit-result.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/submit-result.test.js +0 -215
- package/dist/migrations/__tests__/activation-concurrency.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation-concurrency.test.js +0 -146
- package/dist/migrations/__tests__/activation.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation.test.js +0 -152
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.d.ts +0 -1
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.js +0 -149
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.js +0 -86
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +0 -364
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.js +0 -106
- package/dist/pi-extensions/__tests__/canvas-recap.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-recap.test.js +0 -62
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +0 -432
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +0 -152
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +0 -88
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.js +0 -96
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.js +0 -133
- package/dist/pi-extensions/__tests__/pre-command-gate.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/pre-command-gate.test.js +0 -232
- package/dist/shared/__tests__/env-boundary.test.d.ts +0 -1
- package/dist/shared/__tests__/env-boundary.test.js +0 -95
- package/dist/shared/__tests__/generated-context-grammar.test.d.ts +0 -1
- package/dist/shared/__tests__/generated-context-grammar.test.js +0 -80
- package/docs/compat/hearth-crtr-v1.md +0 -179
- package/docs/compat/hearth-crtr-v2.md +0 -177
- package/docs/compat/hearth-crtr-v3.md +0 -176
- package/docs/compat/hearth-crtr-v4.md +0 -182
- package/docs/compat/hearth-crtr-v5.md +0 -169
|
@@ -1,506 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// target node.
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
-
import { claimNodeMail, acknowledgeNodeMail } from '../../../core/canvas/deliveries.js';
|
|
6
|
-
import { nodeMailEntry } from '../../../core/feed/inbox.js';
|
|
7
|
-
import { enqueueNodeMail, cancelPendingNodeMail } from '../../../core/feed/messages.js';
|
|
8
|
-
import { reviveNode } from '../../../core/runtime/revive.js';
|
|
9
|
-
import { BrokerUnreachableError } from '../../../core/runtime/broker-request.js';
|
|
10
|
-
import { isBrokerLive } from '../../../core/runtime/model-swap.js';
|
|
11
|
-
import { deliverLive, interruptLive } from '../../../core/runtime/interactive-deliver.js';
|
|
12
|
-
import { isProfilePaused } from '../../../core/profiles/manifest.js';
|
|
13
|
-
import { getNode, withFreshTerminalGuard } from '../../../core/canvas/canvas.js';
|
|
14
|
-
import { reportsDir } from '../../../core/canvas/paths.js';
|
|
15
|
-
import { withCanvasWrite } from '../../../core/canvas/db.js';
|
|
16
|
-
import { cancelCronsOnWake } from '../../../core/canvas/crons.js';
|
|
17
|
-
import { assertNotFinalized, assertFinalizedForReopen, commitReopenResident, } from '../../../core/runtime/reopen.js';
|
|
18
|
-
import { writeOutputSchema } from '../../../core/runtime/structured-output.js';
|
|
19
|
-
import { appendSituationalContext, formatSituationalProse } from '../../../core/runtime/situational-context.js';
|
|
20
|
-
import { formatDataCard } from '../../../shared/generated-context.js';
|
|
21
|
-
import { hasNoNaturalCycle } from '../../../core/runtime/revive-all.js';
|
|
22
|
-
import { recordPendingParkActivity } from '../../park-pending.js';
|
|
23
|
-
import { wantsExecution } from '../../reconcilers/node-lifecycle/wants-execution.js';
|
|
24
|
-
import { hasFreshGroundState } from '../../../core/runtime/revive.js';
|
|
25
|
-
import { notFound, usage } from '../../../core/errors.js';
|
|
26
|
-
import { InputError } from '../../../core/io.js';
|
|
27
|
-
import { ApiError } from '../../../api/index.js';
|
|
28
|
-
// POST /v1/nodes/{id}/messages
|
|
29
|
-
const TIERS = ['critical', 'urgent', 'normal', 'deferred'];
|
|
30
|
-
/** Validate + narrow one caller-supplied runtime card. A bare kind is crouter's
|
|
31
|
-
* own closed vocabulary, so a caller must namespace: no product can shadow a
|
|
32
|
-
* core kind, and the parser's decode rule keys on exactly this property. */
|
|
33
|
-
function parseCardRequest(value, field) {
|
|
34
|
-
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
35
|
-
throw usage(`${field} must be an object { kind, facts?, body? }`);
|
|
36
|
-
}
|
|
37
|
-
const raw = value;
|
|
38
|
-
const kind = raw['kind'];
|
|
39
|
-
if (typeof kind !== 'string' || kind.trim() === '')
|
|
40
|
-
throw usage(`${field}.kind is required`);
|
|
41
|
-
if (!kind.includes(':'))
|
|
42
|
-
throw usage(`${field}.kind must be namespaced (contain ':'): ${kind}`);
|
|
43
|
-
const card = { kind };
|
|
44
|
-
const facts = raw['facts'];
|
|
45
|
-
if (facts !== undefined) {
|
|
46
|
-
if (typeof facts !== 'object' || facts === null || Array.isArray(facts)) {
|
|
47
|
-
throw usage(`${field}.facts must be an object of string or number values`);
|
|
48
|
-
}
|
|
49
|
-
const values = {};
|
|
50
|
-
for (const [name, fact] of Object.entries(facts)) {
|
|
51
|
-
if (typeof fact !== 'string' && typeof fact !== 'number') {
|
|
52
|
-
throw usage(`${field}.facts.${name} must be a string or number`);
|
|
53
|
-
}
|
|
54
|
-
values[name] = fact;
|
|
55
|
-
}
|
|
56
|
-
card.facts = values;
|
|
57
|
-
}
|
|
58
|
-
const body = raw['body'];
|
|
59
|
-
if (body !== undefined) {
|
|
60
|
-
if (typeof body !== 'string')
|
|
61
|
-
throw usage(`${field}.body must be a string`);
|
|
62
|
-
card.body = body;
|
|
63
|
-
}
|
|
64
|
-
return card;
|
|
65
|
-
}
|
|
66
|
-
/** Render a validated card. `formatDataCard` escapes the body exactly once —
|
|
67
|
-
* this is the ONLY escape on the path — and rejects a fact name that cannot be
|
|
68
|
-
* an XML attribute, which is caller input and so a 400, not a 500. */
|
|
69
|
-
function renderCard(card, field) {
|
|
70
|
-
try {
|
|
71
|
-
return formatDataCard(card.kind, card.facts ?? {}, card.body ?? '');
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
throw usage(`${field}: ${err instanceof Error ? err.message : String(err)}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/** Validate + narrow the send-message body (spec §6.2). */
|
|
78
|
-
function parseSendBody(body) {
|
|
79
|
-
if (typeof body !== 'object' || body === null) {
|
|
80
|
-
throw usage('a message requires a JSON body { body, tier?, fresh? }');
|
|
81
|
-
}
|
|
82
|
-
const b = body;
|
|
83
|
-
const text = b['body'];
|
|
84
|
-
const fresh = b['fresh'] === true;
|
|
85
|
-
const tierRaw = b['tier'];
|
|
86
|
-
const situational = b['situational_context'];
|
|
87
|
-
const outputSchema = b['output_schema'];
|
|
88
|
-
const hasBody = typeof text === 'string' && text.trim() !== '';
|
|
89
|
-
const hasSituational = typeof situational === 'string' && situational.trim() !== '';
|
|
90
|
-
const hasSchema = typeof outputSchema === 'string' && outputSchema.trim() !== '';
|
|
91
|
-
const situationalCardRaw = b['situational_card'];
|
|
92
|
-
const contextCardsRaw = b['context_cards'];
|
|
93
|
-
const situationalCard = situationalCardRaw === undefined
|
|
94
|
-
? undefined
|
|
95
|
-
: parseCardRequest(situationalCardRaw, 'situational_card');
|
|
96
|
-
if (contextCardsRaw !== undefined && !Array.isArray(contextCardsRaw)) {
|
|
97
|
-
throw usage('context_cards must be an array of { kind, facts?, body? }');
|
|
98
|
-
}
|
|
99
|
-
const contextCards = contextCardsRaw?.map((card, index) => parseCardRequest(card, `context_cards[${index}]`));
|
|
100
|
-
// The sidecar is singular, so the card form and the prose form are one slot.
|
|
101
|
-
if (situationalCard !== undefined && typeof situational === 'string' && situational !== '') {
|
|
102
|
-
throw usage('situational_card and situational_context are mutually exclusive');
|
|
103
|
-
}
|
|
104
|
-
const hasCards = situationalCard !== undefined || (contextCards !== undefined && contextCards.length > 0);
|
|
105
|
-
// A body is required unless this is a fresh revive, a context-only update,
|
|
106
|
-
// or a one-off output-schema request.
|
|
107
|
-
if (!fresh && !hasBody && !hasSituational && !hasSchema && !hasCards) {
|
|
108
|
-
throw usage('a message requires a non-empty body (or fresh: true, situational_context, a runtime card, or output_schema)');
|
|
109
|
-
}
|
|
110
|
-
// A fresh revive appends no inbox entry, so a one-shot card would have no
|
|
111
|
-
// carrier. The sidecar card survives the revive through the bearings.
|
|
112
|
-
if (fresh && contextCards !== undefined && contextCards.length > 0) {
|
|
113
|
-
throw usage('context_cards cannot ride a fresh revive (no inbox entry carries them)');
|
|
114
|
-
}
|
|
115
|
-
if (tierRaw !== undefined && !TIERS.includes(tierRaw)) {
|
|
116
|
-
throw usage(`invalid tier: ${String(tierRaw)} (expected critical|urgent|normal|deferred)`);
|
|
117
|
-
}
|
|
118
|
-
const out = { body: typeof text === 'string' ? text : '' };
|
|
119
|
-
if (tierRaw !== undefined)
|
|
120
|
-
out.tier = tierRaw;
|
|
121
|
-
if (fresh)
|
|
122
|
-
out.fresh = true;
|
|
123
|
-
if (b['reopen'] === true)
|
|
124
|
-
out.reopen = true;
|
|
125
|
-
if (typeof situational === 'string')
|
|
126
|
-
out.situational_context = situational;
|
|
127
|
-
if (situationalCard !== undefined)
|
|
128
|
-
out.situational_card = situationalCard;
|
|
129
|
-
if (contextCards !== undefined)
|
|
130
|
-
out.context_cards = contextCards;
|
|
131
|
-
if (typeof outputSchema === 'string')
|
|
132
|
-
out.output_schema = outputSchema;
|
|
133
|
-
if (typeof b['from'] === 'string')
|
|
134
|
-
out.from = b['from'];
|
|
135
|
-
const delivery = b['delivery'];
|
|
136
|
-
if (delivery !== undefined && delivery !== 'interactive') {
|
|
137
|
-
throw usage(`invalid delivery: ${String(delivery)} (expected interactive)`);
|
|
138
|
-
}
|
|
139
|
-
if (delivery === 'interactive') {
|
|
140
|
-
// Interactive delivery is a live-conversation send: a plain immediate body,
|
|
141
|
-
// nothing that only makes sense on the durable path.
|
|
142
|
-
// Runtime cards ARE accepted here: a card-bearing send is an ordinary human
|
|
143
|
-
// send that happens to carry context, and the live deliver frame places the
|
|
144
|
-
// cards ahead of the body in one turn (D11).
|
|
145
|
-
if (fresh || out.situational_context !== undefined || out.output_schema !== undefined) {
|
|
146
|
-
throw usage('interactive delivery supports a body, runtime cards, and reopen only (no fresh, situational_context, or output_schema)');
|
|
147
|
-
}
|
|
148
|
-
if (!hasBody)
|
|
149
|
-
throw usage('interactive delivery requires a non-empty body');
|
|
150
|
-
if (out.tier === 'deferred')
|
|
151
|
-
throw usage('interactive delivery cannot be deferred');
|
|
152
|
-
out.delivery = 'interactive';
|
|
153
|
-
}
|
|
154
|
-
return out;
|
|
155
|
-
}
|
|
156
|
-
/** Parse a raw JSON-schema string to an object, mapping a parse failure to a
|
|
157
|
-
* 400 (mirrors handleCreate's output_schema handling). */
|
|
158
|
-
function parseSchema(raw) {
|
|
159
|
-
try {
|
|
160
|
-
return JSON.parse(raw);
|
|
161
|
-
}
|
|
162
|
-
catch {
|
|
163
|
-
throw usage('output_schema must be a JSON schema string');
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
function label(text) {
|
|
167
|
-
return text.split('\n')[0].slice(0, 120);
|
|
168
|
-
}
|
|
169
|
-
function previousFinalReportCard(nodeId, finalReport) {
|
|
170
|
-
if (finalReport === null)
|
|
171
|
-
return '';
|
|
172
|
-
const path = join(reportsDir(nodeId), finalReport);
|
|
173
|
-
return formatDataCard('reopen-final-report', { path }, 'This node previously completed work. Read this final report before acting on the new instruction.');
|
|
174
|
-
}
|
|
175
|
-
/** The fail-loud rejection for a deferred immediate message aimed at a
|
|
176
|
-
* target with no natural cycle ahead of it (done/canceled/finalized). Thrown as
|
|
177
|
-
* an InputError so `toErrorBody` round-trips the FULL structured payload
|
|
178
|
-
* (code+message+next) into `ApiError.details`, and the CLI's shared
|
|
179
|
-
* `apiErrorToCliError` reconstructs the SPECIFIC `deferred_no_natural_cycle`
|
|
180
|
-
* code byte-for-byte — a plain `ApiError(422,…)` would drop it (422 maps back
|
|
181
|
-
* to the generic `unprocessable`), which the pre-P1 CLI leaf never emitted. */
|
|
182
|
-
function deferredNoNaturalCycle(id, status) {
|
|
183
|
-
return new InputError({
|
|
184
|
-
error: 'deferred_no_natural_cycle',
|
|
185
|
-
message: `${id} is ${status} with no natural next cycle ahead of it — a deferred message would never be delivered.`,
|
|
186
|
-
next: 'Use --tier normal, urgent, or critical to wake it now, or --reopen (with a body or --fresh) to re-task it first.',
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
/** A fresh revive re-reads the node's goal/roadmap from disk; with neither, it
|
|
190
|
-
* would resume amnesiac. Rejected fail-loud (422) BEFORE any revive/arm — the
|
|
191
|
-
* CLI's old pure pre-check, relocated behind the API so `--fresh` parity holds. */
|
|
192
|
-
function assertRecoverableForFresh(id) {
|
|
193
|
-
if (hasFreshGroundState(id))
|
|
194
|
-
return;
|
|
195
|
-
// ApiError (not a plain literal) so its message survives `toErrorBody`.
|
|
196
|
-
throw new ApiError(422, 'unprocessable', `node ${id} has no goal/roadmap on disk — a fresh revive would resume amnesiac.`);
|
|
197
|
-
}
|
|
198
|
-
async function handleMessage(ctx) {
|
|
199
|
-
const id = ctx.params['id'];
|
|
200
|
-
const meta = getNode(id);
|
|
201
|
-
if (meta === null)
|
|
202
|
-
throw notFound(`unknown node: ${id}`, { received: id });
|
|
203
|
-
const req = parseSendBody(ctx.body);
|
|
204
|
-
const tier = (req.tier ?? 'normal');
|
|
205
|
-
// A paused profile takes no new work through either delivery route: the
|
|
206
|
-
// interactive route hands the body to the live broker instead of queueing it,
|
|
207
|
-
// and a wake is a revive by another name. So a paused target always takes the
|
|
208
|
-
// durable path and its entry waits, at every tier, for `crtr profile resume`
|
|
209
|
-
// (the live broker's watcher holds it; a dormant one is not woken).
|
|
210
|
-
const paused = isProfilePaused(meta.profile_id);
|
|
211
|
-
const from = req.from ?? null;
|
|
212
|
-
const hasBody = req.body.trim() !== '';
|
|
213
|
-
// One sidecar slot: the caller's rendered card, or prose rendered as one.
|
|
214
|
-
const sidecar = req.situational_card !== undefined
|
|
215
|
-
? renderCard(req.situational_card, 'situational_card')
|
|
216
|
-
: req.situational_context !== undefined
|
|
217
|
-
? formatSituationalProse(req.situational_context.trim())
|
|
218
|
-
: '';
|
|
219
|
-
const hasSidecar = sidecar !== '';
|
|
220
|
-
const oneShotCards = (req.context_cards ?? []).map((card, index) => renderCard(card, `context_cards[${index}]`));
|
|
221
|
-
const schema = req.output_schema !== undefined && req.output_schema.trim() !== ''
|
|
222
|
-
? parseSchema(req.output_schema)
|
|
223
|
-
: null;
|
|
224
|
-
// Fresh revive: no inbox entry, resume:false (spec §7.7).
|
|
225
|
-
// Mirrors the CLI's immediate --fresh: validate the finalization latch
|
|
226
|
-
// (--reopen) and upsert the situational sidecar BEFORE the revive, so the
|
|
227
|
-
// fresh kickoff picks up the update. The goal/roadmap recoverable-state guard
|
|
228
|
-
// stays a pure CLI-side pre-check.
|
|
229
|
-
if (req.fresh) {
|
|
230
|
-
const expectedFinalReport = req.reopen ? assertFinalizedForReopen(id) : null;
|
|
231
|
-
if (!req.reopen)
|
|
232
|
-
assertNotFinalized(id);
|
|
233
|
-
assertRecoverableForFresh(id);
|
|
234
|
-
if (hasSidecar)
|
|
235
|
-
appendSituationalContext(id, sidecar);
|
|
236
|
-
if (req.reopen)
|
|
237
|
-
commitReopenResident(id, expectedFinalReport);
|
|
238
|
-
// A fresh revive appends no inbox entry, so nothing survives a freeze for
|
|
239
|
-
// the daemon to act on later: at the cap the caller is told, not ignored.
|
|
240
|
-
const result = await reviveNode(id, { resume: false, capacity: 'refuse' });
|
|
241
|
-
const body = {
|
|
242
|
-
node_id: id,
|
|
243
|
-
delivered: false,
|
|
244
|
-
revived: result.launch !== undefined,
|
|
245
|
-
};
|
|
246
|
-
return { status: 201, body };
|
|
247
|
-
}
|
|
248
|
-
// Interactive delivery has the same finalization doorway as durable mail:
|
|
249
|
-
// a live broker remains reachable briefly after its final claim, but must not
|
|
250
|
-
// accept a mandate it cannot finalize. `--reopen` is the deliberate exception.
|
|
251
|
-
if (req.delivery === 'interactive' && !req.reopen)
|
|
252
|
-
assertNotFinalized(id);
|
|
253
|
-
// An interactive reopen commits before even choosing its engine-or-inbox
|
|
254
|
-
// route. A live transport race then falls back with this same committed state.
|
|
255
|
-
let reopenCommitted = false;
|
|
256
|
-
let previousFinalCard = '';
|
|
257
|
-
if (req.delivery === 'interactive' && req.reopen) {
|
|
258
|
-
previousFinalCard = previousFinalReportCard(id, commitReopenResident(id));
|
|
259
|
-
reopenCommitted = true;
|
|
260
|
-
}
|
|
261
|
-
// --- Interactive delivery: route via the LIVE broker's serialized frame
|
|
262
|
-
// loop (broker routes idle→prompt / streaming→steer itself) instead of
|
|
263
|
-
// the durable inbox — no watcher latency, and send/stop share one
|
|
264
|
-
// ordering. A mid-revive race (liveness said live, connection refused)
|
|
265
|
-
// falls back to the durable path below; a genuinely dormant target skips
|
|
266
|
-
// straight there (append + revive, watcher delivers post-boot). ---
|
|
267
|
-
if (req.delivery === 'interactive' && !paused && isBrokerLive(meta)) {
|
|
268
|
-
try {
|
|
269
|
-
if (hasSidecar)
|
|
270
|
-
appendSituationalContext(id, sidecar);
|
|
271
|
-
await deliverLive(id, req.body, {
|
|
272
|
-
cards: [
|
|
273
|
-
...(previousFinalCard === '' ? [] : [previousFinalCard]),
|
|
274
|
-
...(hasSidecar ? [sidecar] : []),
|
|
275
|
-
...oneShotCards,
|
|
276
|
-
],
|
|
277
|
-
// Same authorship the durable route would record for this send, so a
|
|
278
|
-
// reader cannot tell live from inbox delivery by the stamp.
|
|
279
|
-
origin: from === 'human'
|
|
280
|
-
? { type: 'human' }
|
|
281
|
-
: {
|
|
282
|
-
type: 'runtime',
|
|
283
|
-
kind: 'inbox',
|
|
284
|
-
entries: [{ ...(from === null ? {} : { from }), kind: 'message', tier }],
|
|
285
|
-
},
|
|
286
|
-
});
|
|
287
|
-
cancelCronsOnWake(id);
|
|
288
|
-
const body = {
|
|
289
|
-
node_id: id,
|
|
290
|
-
delivered: true,
|
|
291
|
-
revived: false,
|
|
292
|
-
delivered_via: 'engine',
|
|
293
|
-
};
|
|
294
|
-
return { status: 201, body };
|
|
295
|
-
}
|
|
296
|
-
catch (err) {
|
|
297
|
-
if (!(err instanceof BrokerUnreachableError))
|
|
298
|
-
throw err;
|
|
299
|
-
// fall through to the durable inbox path
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
// --- Immediate delivery (spec §7.7) — pre-delivery side effects first,
|
|
303
|
-
// then the reopen commit, then exactly one inbox append. Once the commit
|
|
304
|
-
// succeeds, an append failure makes no further state change. ---
|
|
305
|
-
const deliverImmediate = () => {
|
|
306
|
-
if (!req.reopen)
|
|
307
|
-
assertNotFinalized(id);
|
|
308
|
-
if (schema !== null)
|
|
309
|
-
writeOutputSchema(id, 'oneoff', schema);
|
|
310
|
-
if (hasSidecar)
|
|
311
|
-
appendSituationalContext(id, sidecar);
|
|
312
|
-
if (req.reopen && !reopenCommitted) {
|
|
313
|
-
previousFinalCard = previousFinalReportCard(id, commitReopenResident(id));
|
|
314
|
-
}
|
|
315
|
-
const cards = [
|
|
316
|
-
...(previousFinalCard === '' ? [] : [previousFinalCard]),
|
|
317
|
-
...oneShotCards,
|
|
318
|
-
];
|
|
319
|
-
const cardData = cards.length > 0 ? { cards } : {};
|
|
320
|
-
if (hasBody || schema !== null) {
|
|
321
|
-
const messageBody = hasBody
|
|
322
|
-
? req.body
|
|
323
|
-
: 'A one-off structured-output request has been granted. Submit a result matching the requested schema with `crtr push result` before you stop; after it is accepted, continue normally.';
|
|
324
|
-
return enqueueNodeMail(id, {
|
|
325
|
-
senderNodeId: from,
|
|
326
|
-
urgency: tier,
|
|
327
|
-
wake: 1,
|
|
328
|
-
kind: 'message',
|
|
329
|
-
label: label(messageBody),
|
|
330
|
-
bodyJson: { body: messageBody, ...(hasSidecar ? { situational: true } : {}), ...cardData },
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
// Context-only: a hidden wake marker excluded from the visible digest. Its
|
|
334
|
-
// one-shot cards have no visible delivery to ride, so the watcher's context
|
|
335
|
-
// channel carries them.
|
|
336
|
-
return enqueueNodeMail(id, {
|
|
337
|
-
senderNodeId: from,
|
|
338
|
-
urgency: tier,
|
|
339
|
-
wake: 1,
|
|
340
|
-
kind: 'message',
|
|
341
|
-
label: hasSidecar ? '(ambient context updated)' : '(context delivered)',
|
|
342
|
-
bodyJson: { ...(hasSidecar ? { situational: true } : {}), situationalOnly: true, ...cardData },
|
|
343
|
-
});
|
|
344
|
-
};
|
|
345
|
-
// Deferred guard: a done/canceled/finalized target has no natural
|
|
346
|
-
// cycle ahead of it, so a deferred entry would sit unseen forever — reject
|
|
347
|
-
// fail-loud BEFORE any side effect, atomically with the append (the read and
|
|
348
|
-
// the write share one canvas write-lock). Non-deferred tiers deliver directly.
|
|
349
|
-
//
|
|
350
|
-
// `--reopen` does NOT exempt a target from this guard. It commits the target
|
|
351
|
-
// resident and retracts the finalization latch, but it never moves `status`
|
|
352
|
-
// out of `done` — so a reopened target is still one `hasNoNaturalCycle` says
|
|
353
|
-
// nothing will ever bring back on its own, and a deferred entry appended to it
|
|
354
|
-
// would wait forever. Reopen widens the WAKE-CAPABLE tiers to a finalized
|
|
355
|
-
// target; deferred stays rejected, and the rejection names those tiers.
|
|
356
|
-
const deliver = () => {
|
|
357
|
-
if (tier === 'deferred') {
|
|
358
|
-
const outcome = withFreshTerminalGuard(id, hasNoNaturalCycle, deliverImmediate);
|
|
359
|
-
if (outcome.kind === 'missing')
|
|
360
|
-
throw notFound(`unknown node: ${id}`, { received: id });
|
|
361
|
-
if (outcome.kind === 'terminal')
|
|
362
|
-
throw deferredNoNaturalCycle(id, outcome.status);
|
|
363
|
-
return outcome.result;
|
|
364
|
-
}
|
|
365
|
-
return deliverImmediate();
|
|
366
|
-
};
|
|
367
|
-
const entry = deliver();
|
|
368
|
-
// Wake-capable durable mail wins the same park-completion boundary as a live
|
|
369
|
-
// broker input. A completion that won before this append is handled by the
|
|
370
|
-
// fresh row read below, which revives the now-parked node.
|
|
371
|
-
if (entry.urgency !== 'deferred')
|
|
372
|
-
withCanvasWrite(() => recordPendingParkActivity(id));
|
|
373
|
-
const current = getNode(id);
|
|
374
|
-
if (current === null)
|
|
375
|
-
throw notFound(`unknown node: ${id}`, { received: id });
|
|
376
|
-
// Deferred mail normally waits for a natural cycle, but a frozen row already
|
|
377
|
-
// owes a thaw; consume its deadline when that durable future wake arrives.
|
|
378
|
-
if (meta.frozen_at !== null)
|
|
379
|
-
cancelCronsOnWake(id);
|
|
380
|
-
// A wake-capable entry for an active or idle target is admitted by the
|
|
381
|
-
// lifecycle tick. Reopen delivery preserves this handler's synchronous wake
|
|
382
|
-
// authority; a terminal-lifecycle row also needs it because it has no later
|
|
383
|
-
// natural cycle to consume the entry.
|
|
384
|
-
let revived = false;
|
|
385
|
-
let frozen = false;
|
|
386
|
-
const needsSynchronousWake = req.reopen || current.lifecycle === 'terminal' || !wantsExecution(current);
|
|
387
|
-
if (needsSynchronousWake && entry.urgency !== 'deferred' && !paused && !isBrokerLive(current)) {
|
|
388
|
-
try {
|
|
389
|
-
// The entry is already durable, so a wake denied for capacity is only
|
|
390
|
-
// delayed: the row freezes and the tick relaunches it — at which point
|
|
391
|
-
// the inbox watcher delivers this entry as it always would.
|
|
392
|
-
const result = await reviveNode(id, { resume: true, capacity: 'freeze' });
|
|
393
|
-
revived = result.launch !== undefined;
|
|
394
|
-
frozen = result.outcome === 'frozen';
|
|
395
|
-
}
|
|
396
|
-
catch {
|
|
397
|
-
/* best-effort wake — the entry is durably appended regardless */
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
const body = {
|
|
401
|
-
node_id: id,
|
|
402
|
-
delivered: true,
|
|
403
|
-
revived,
|
|
404
|
-
...(frozen ? { not_revived_reason: 'capacity_frozen' } : {}),
|
|
405
|
-
delivered_at: entry.createdAt,
|
|
406
|
-
...(entry.urgency === tier ? {} : { delivered_tier: entry.urgency }),
|
|
407
|
-
...(req.delivery === 'interactive' ? { delivered_via: 'inbox' } : {}),
|
|
408
|
-
};
|
|
409
|
-
return { status: 201, body };
|
|
410
|
-
}
|
|
411
|
-
// POST /v1/nodes/{id}/interrupt
|
|
412
|
-
/** The human Esc, first-class. Cancel pending undelivered human sends FIRST,
|
|
413
|
-
* then abort the live turn — in that order, so a watcher injection racing
|
|
414
|
-
* between the two is caught by the abort right behind it. A dormant target is
|
|
415
|
-
* NEVER revived (outcome 'idle'). */
|
|
416
|
-
async function handleInterrupt(ctx) {
|
|
417
|
-
const id = ctx.params['id'];
|
|
418
|
-
const meta = getNode(id);
|
|
419
|
-
if (meta === null)
|
|
420
|
-
throw notFound(`unknown node: ${id}`, { received: id });
|
|
421
|
-
// 1. Boot-window close: mark undelivered human-send inbox entries canceled so
|
|
422
|
-
// a send riding the durable path (dormant target / mid-revive fallback) is
|
|
423
|
-
// never injected after the Esc — the watcher skips canceled entries.
|
|
424
|
-
const canceled = cancelPendingNodeMail(id, { senderNodeId: 'human', kind: 'message' });
|
|
425
|
-
// 2. Abort whatever is live. The broker acks once processed; on its single
|
|
426
|
-
// frame loop that ack also implies every earlier-accepted deliver was
|
|
427
|
-
// already routed, so a just-started turn is caught, not missed.
|
|
428
|
-
let abortedTurn = false;
|
|
429
|
-
if (isBrokerLive(meta)) {
|
|
430
|
-
try {
|
|
431
|
-
const outcome = await interruptLive(id);
|
|
432
|
-
abortedTurn = outcome !== 'idle';
|
|
433
|
-
}
|
|
434
|
-
catch (err) {
|
|
435
|
-
if (!(err instanceof BrokerUnreachableError))
|
|
436
|
-
throw err;
|
|
437
|
-
// Mid-revive race: nothing reachable to abort. The cancel markers above
|
|
438
|
-
// already cover the boot window, so the interrupt still holds.
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
const body = {
|
|
442
|
-
node_id: id,
|
|
443
|
-
outcome: abortedTurn ? 'aborted_turn' : canceled.length > 0 ? 'canceled_pending' : 'idle',
|
|
444
|
-
aborted_turn: abortedTurn,
|
|
445
|
-
canceled_pending: canceled.length,
|
|
446
|
-
};
|
|
447
|
-
return { status: 200, body };
|
|
448
|
-
}
|
|
449
|
-
function mailBody(ctx) {
|
|
450
|
-
if (typeof ctx.body !== 'object' || ctx.body === null || Array.isArray(ctx.body))
|
|
451
|
-
throw usage('mail requires an object body');
|
|
452
|
-
const body = ctx.body;
|
|
453
|
-
if (typeof body['execution_id'] !== 'string' || body['execution_id'].trim() === '')
|
|
454
|
-
throw usage('execution_id is required');
|
|
455
|
-
return body;
|
|
456
|
-
}
|
|
457
|
-
function handleMailClaim(ctx) {
|
|
458
|
-
const body = mailBody(ctx);
|
|
459
|
-
const channel = body['channel'];
|
|
460
|
-
if (channel !== 'wake' && channel !== 'passive')
|
|
461
|
-
throw usage('channel must be wake or passive');
|
|
462
|
-
const result = claimNodeMail(ctx.params['id'], body['execution_id'], channel);
|
|
463
|
-
const projected = {
|
|
464
|
-
action: result.action,
|
|
465
|
-
deliveries: result.deliveries.map((delivery) => ({
|
|
466
|
-
delivery_id: delivery.deliveryId,
|
|
467
|
-
attempts: delivery.attempts,
|
|
468
|
-
handoff: delivery.handoff,
|
|
469
|
-
entry: nodeMailEntry(delivery),
|
|
470
|
-
})),
|
|
471
|
-
};
|
|
472
|
-
return { status: 200, body: projected };
|
|
473
|
-
}
|
|
474
|
-
function handleMailAcknowledge(ctx) {
|
|
475
|
-
const body = mailBody(ctx);
|
|
476
|
-
if (!Array.isArray(body['deliveries']))
|
|
477
|
-
throw usage('deliveries must be an array');
|
|
478
|
-
const receipts = body['deliveries'].map((value) => {
|
|
479
|
-
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
480
|
-
throw usage('each delivery must be an object');
|
|
481
|
-
const receipt = value;
|
|
482
|
-
if (typeof receipt['delivery_id'] !== 'string' || receipt['delivery_id'] === '')
|
|
483
|
-
throw usage('delivery_id is required');
|
|
484
|
-
if (!Number.isSafeInteger(receipt['attempts']) || receipt['attempts'] < 1)
|
|
485
|
-
throw usage('attempts must be a positive integer');
|
|
486
|
-
if (receipt['disposition'] !== 'acknowledged' && receipt['disposition'] !== 'released')
|
|
487
|
-
throw usage('disposition must be acknowledged or released');
|
|
488
|
-
return { delivery_id: receipt['delivery_id'], attempts: receipt['attempts'], disposition: receipt['disposition'] };
|
|
489
|
-
});
|
|
490
|
-
const result = acknowledgeNodeMail(ctx.params['id'], body['execution_id'], receipts.map((receipt) => ({
|
|
491
|
-
deliveryId: receipt.delivery_id, attempts: receipt.attempts, disposition: receipt.disposition,
|
|
492
|
-
})));
|
|
493
|
-
const projected = {
|
|
494
|
-
action: result.action,
|
|
495
|
-
results: result.results.map((result) => ({ delivery_id: result.deliveryId, outcome: result.outcome })),
|
|
496
|
-
};
|
|
497
|
-
return { status: 200, body: projected };
|
|
498
|
-
}
|
|
499
|
-
export const brokerMailRoutes = [
|
|
500
|
-
{ method: 'POST', pattern: '/v1/nodes/:id/mail/claim', handler: handleMailClaim },
|
|
501
|
-
{ method: 'POST', pattern: '/v1/nodes/:id/mail/acknowledge', handler: handleMailAcknowledge },
|
|
502
|
-
];
|
|
503
|
-
export const messageRoutes = [
|
|
504
|
-
{ method: 'POST', pattern: '/v1/nodes/:id/messages', handler: handleMessage },
|
|
505
|
-
{ method: 'POST', pattern: '/v1/nodes/:id/interrupt', handler: handleInterrupt },
|
|
506
|
-
];
|
|
1
|
+
var E=Object.defineProperty;var c=(r,e)=>E(r,"name",{value:e,configurable:!0});import{join as J}from"node:path";import{claimNodeMail as W,acknowledgeNodeMail as D}from"../../../core/canvas/deliveries.js";import{nodeMailEntry as L}from"../../../core/feed/inbox.js";import{enqueueNodeMail as q,cancelPendingNodeMail as G}from"../../../core/feed/messages.js";import{reviveNode as F}from"../../../core/runtime/revive.js";import{BrokerUnreachableError as I}from"../../../core/runtime/broker-request.js";import{isBrokerLive as $}from"../../../core/runtime/model-swap.js";import{deliverLive as U,interruptLive as H}from"../../../core/runtime/interactive-deliver.js";import{isProfilePaused as K}from"../../../core/profiles/manifest.js";import{getNode as C,withFreshTerminalGuard as Q}from"../../../core/canvas/canvas.js";import{reportsDir as V}from"../../../core/canvas/paths.js";import{withCanvasWrite as X}from"../../../core/canvas/db.js";import{cancelCronsOnWake as O}from"../../../core/canvas/crons.js";import{assertNotFinalized as N,assertFinalizedForReopen as Y,commitReopenResident as A}from"../../../core/runtime/reopen.js";import{writeOutputSchema as Z}from"../../../core/runtime/structured-output.js";import{appendSituationalContext as j,formatSituationalProse as ee}from"../../../core/runtime/situational-context.js";import{formatDataCard as P}from"../../../shared/generated-context.js";import{hasNoNaturalCycle as te}from"../../../core/runtime/revive-all.js";import{recordPendingParkActivity as re}from"../../park-pending.js";import{wantsExecution as ne}from"../../reconcilers/node-lifecycle/wants-execution.js";import{hasFreshGroundState as oe}from"../../../core/runtime/revive.js";import{notFound as x,usage as a}from"../../../core/errors.js";import{InputError as ie}from"../../../core/io.js";import{ApiError as ae}from"../../../api/index.js";const se=["critical","urgent","normal","deferred"];function M(r,e){if(typeof r!="object"||r===null||Array.isArray(r))throw a(`${e} must be an object { kind, facts?, body? }`);const o=r,t=o.kind;if(typeof t!="string"||t.trim()==="")throw a(`${e}.kind is required`);if(!t.includes(":"))throw a(`${e}.kind must be namespaced (contain ':'): ${t}`);const s={kind:t},n=o.facts;if(n!==void 0){if(typeof n!="object"||n===null||Array.isArray(n))throw a(`${e}.facts must be an object of string or number values`);const y={};for(const[m,f]of Object.entries(n)){if(typeof f!="string"&&typeof f!="number")throw a(`${e}.facts.${m} must be a string or number`);y[m]=f}s.facts=y}const i=o.body;if(i!==void 0){if(typeof i!="string")throw a(`${e}.body must be a string`);s.body=i}return s}c(M,"parseCardRequest");function T(r,e){try{return P(r.kind,r.facts??{},r.body??"")}catch(o){throw a(`${e}: ${o instanceof Error?o.message:String(o)}`)}}c(T,"renderCard");function de(r){if(typeof r!="object"||r===null)throw a("a message requires a JSON body { body, tier?, fresh? }");const e=r,o=e.body,t=e.fresh===!0,s=e.tier,n=e.situational_context,i=e.output_schema,y=typeof o=="string"&&o.trim()!=="",m=typeof n=="string"&&n.trim()!=="",f=typeof i=="string"&&i.trim()!=="",g=e.situational_card,h=e.context_cards,b=g===void 0?void 0:M(g,"situational_card");if(h!==void 0&&!Array.isArray(h))throw a("context_cards must be an array of { kind, facts?, body? }");const l=h?.map((v,k)=>M(v,`context_cards[${k}]`));if(b!==void 0&&typeof n=="string"&&n!=="")throw a("situational_card and situational_context are mutually exclusive");const _=b!==void 0||l!==void 0&&l.length>0;if(!t&&!y&&!m&&!f&&!_)throw a("a message requires a non-empty body (or fresh: true, situational_context, a runtime card, or output_schema)");if(t&&l!==void 0&&l.length>0)throw a("context_cards cannot ride a fresh revive (no inbox entry carries them)");if(s!==void 0&&!se.includes(s))throw a(`invalid tier: ${String(s)} (expected critical|urgent|normal|deferred)`);const u={body:typeof o=="string"?o:""};s!==void 0&&(u.tier=s),t&&(u.fresh=!0),e.reopen===!0&&(u.reopen=!0),typeof n=="string"&&(u.situational_context=n),b!==void 0&&(u.situational_card=b),l!==void 0&&(u.context_cards=l),typeof i=="string"&&(u.output_schema=i),typeof e.from=="string"&&(u.from=e.from);const p=e.delivery;if(p!==void 0&&p!=="interactive")throw a(`invalid delivery: ${String(p)} (expected interactive)`);if(p==="interactive"){if(t||u.situational_context!==void 0||u.output_schema!==void 0)throw a("interactive delivery supports a body, runtime cards, and reopen only (no fresh, situational_context, or output_schema)");if(!y)throw a("interactive delivery requires a non-empty body");if(u.tier==="deferred")throw a("interactive delivery cannot be deferred");u.delivery="interactive"}return u}c(de,"parseSendBody");function ce(r){try{return JSON.parse(r)}catch{throw a("output_schema must be a JSON schema string")}}c(ce,"parseSchema");function ue(r){return r.split(`
|
|
2
|
+
`)[0].slice(0,120)}c(ue,"label");function z(r,e){if(e===null)return"";const o=J(V(r),e);return P("reopen-final-report",{path:o},"This node previously completed work. Read this final report before acting on the new instruction.")}c(z,"previousFinalReportCard");function fe(r,e){return new ie({error:"deferred_no_natural_cycle",message:`${r} is ${e} with no natural next cycle ahead of it \u2014 a deferred message would never be delivered.`,next:"Use --tier normal, urgent, or critical to wake it now, or --reopen (with a body or --fresh) to re-task it first."})}c(fe,"deferredNoNaturalCycle");function le(r){if(!oe(r))throw new ae(422,"unprocessable",`node ${r} has no goal/roadmap on disk \u2014 a fresh revive would resume amnesiac.`)}c(le,"assertRecoverableForFresh");async function me(r){const e=r.params.id,o=C(e);if(o===null)throw x(`unknown node: ${e}`,{received:e});const t=de(r.body),s=t.tier??"normal",n=K(o.profile_id),i=t.from??null,y=t.body.trim()!=="",m=t.situational_card!==void 0?T(t.situational_card,"situational_card"):t.situational_context!==void 0?ee(t.situational_context.trim()):"",f=m!=="",g=(t.context_cards??[]).map((d,w)=>T(d,`context_cards[${w}]`)),h=t.output_schema!==void 0&&t.output_schema.trim()!==""?ce(t.output_schema):null;if(t.fresh){const d=t.reopen?Y(e):null;t.reopen||N(e),le(e),f&&j(e,m),t.reopen&&A(e,d);const w=await F(e,{resume:!1,capacity:"refuse"});return{status:201,body:{node_id:e,delivered:!1,revived:w.launch!==void 0}}}t.delivery==="interactive"&&!t.reopen&&N(e);let b=!1,l="";if(t.delivery==="interactive"&&t.reopen&&(l=z(e,A(e)),b=!0),t.delivery==="interactive"&&!n&&$(o))try{return f&&j(e,m),await U(e,t.body,{cards:[...l===""?[]:[l],...f?[m]:[],...g],origin:i==="human"?{type:"human"}:{type:"runtime",kind:"inbox",entries:[{...i===null?{}:{from:i},kind:"message",tier:s}]}}),O(e),{status:201,body:{node_id:e,delivered:!0,revived:!1,delivered_via:"engine"}}}catch(d){if(!(d instanceof I))throw d}const _=c(()=>{t.reopen||N(e),h!==null&&Z(e,"oneoff",h),f&&j(e,m),t.reopen&&!b&&(l=z(e,A(e)));const d=[...l===""?[]:[l],...g],w=d.length>0?{cards:d}:{};if(y||h!==null){const S=y?t.body:"A one-off structured-output request has been granted. Submit a result matching the requested schema with `crtr push result` before you stop; after it is accepted, continue normally.";return q(e,{senderNodeId:i,urgency:s,wake:1,kind:"message",label:ue(S),bodyJson:{body:S,...f?{situational:!0}:{},...w}})}return q(e,{senderNodeId:i,urgency:s,wake:1,kind:"message",label:f?"(ambient context updated)":"(context delivered)",bodyJson:{...f?{situational:!0}:{},situationalOnly:!0,...w}})},"deliverImmediate"),p=c(()=>{if(s==="deferred"){const d=Q(e,te,_);if(d.kind==="missing")throw x(`unknown node: ${e}`,{received:e});if(d.kind==="terminal")throw fe(e,d.status);return d.result}return _()},"deliver")();p.urgency!=="deferred"&&X(()=>re(e));const v=C(e);if(v===null)throw x(`unknown node: ${e}`,{received:e});o.frozen_at!==null&&O(e);let k=!1,R=!1;if((t.reopen||v.lifecycle==="terminal"||!ne(v))&&p.urgency!=="deferred"&&!n&&!$(v))try{const d=await F(e,{resume:!0,capacity:"freeze"});k=d.launch!==void 0,R=d.outcome==="frozen"}catch{}return{status:201,body:{node_id:e,delivered:!0,revived:k,...R?{not_revived_reason:"capacity_frozen"}:{},delivered_at:p.createdAt,...p.urgency===s?{}:{delivered_tier:p.urgency},...t.delivery==="interactive"?{delivered_via:"inbox"}:{}}}}c(me,"handleMessage");async function pe(r){const e=r.params.id,o=C(e);if(o===null)throw x(`unknown node: ${e}`,{received:e});const t=G(e,{senderNodeId:"human",kind:"message"});let s=!1;if($(o))try{s=await H(e)!=="idle"}catch(i){if(!(i instanceof I))throw i}return{status:200,body:{node_id:e,outcome:s?"aborted_turn":t.length>0?"canceled_pending":"idle",aborted_turn:s,canceled_pending:t.length}}}c(pe,"handleInterrupt");function B(r){if(typeof r.body!="object"||r.body===null||Array.isArray(r.body))throw a("mail requires an object body");const e=r.body;if(typeof e.execution_id!="string"||e.execution_id.trim()==="")throw a("execution_id is required");return e}c(B,"mailBody");function ye(r){const e=B(r),o=e.channel;if(o!=="wake"&&o!=="passive")throw a("channel must be wake or passive");const t=W(r.params.id,e.execution_id,o);return{status:200,body:{action:t.action,deliveries:t.deliveries.map(n=>({delivery_id:n.deliveryId,attempts:n.attempts,handoff:n.handoff,entry:L(n)}))}}}c(ye,"handleMailClaim");function he(r){const e=B(r);if(!Array.isArray(e.deliveries))throw a("deliveries must be an array");const o=e.deliveries.map(n=>{if(typeof n!="object"||n===null||Array.isArray(n))throw a("each delivery must be an object");const i=n;if(typeof i.delivery_id!="string"||i.delivery_id==="")throw a("delivery_id is required");if(!Number.isSafeInteger(i.attempts)||i.attempts<1)throw a("attempts must be a positive integer");if(i.disposition!=="acknowledged"&&i.disposition!=="released")throw a("disposition must be acknowledged or released");return{delivery_id:i.delivery_id,attempts:i.attempts,disposition:i.disposition}}),t=D(r.params.id,e.execution_id,o.map(n=>({deliveryId:n.delivery_id,attempts:n.attempts,disposition:n.disposition})));return{status:200,body:{action:t.action,results:t.results.map(n=>({delivery_id:n.deliveryId,outcome:n.outcome}))}}}c(he,"handleMailAcknowledge");const Le=[{method:"POST",pattern:"/v1/nodes/:id/mail/claim",handler:ye},{method:"POST",pattern:"/v1/nodes/:id/mail/acknowledge",handler:he}],Ge=[{method:"POST",pattern:"/v1/nodes/:id/messages",handler:me},{method:"POST",pattern:"/v1/nodes/:id/interrupt",handler:pe}];export{Le as brokerMailRoutes,Ge as messageRoutes};
|
|
@@ -1,44 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { validateCoreModelConfig, replaceCoreModelConfig } from '../../../core/model-config.js';
|
|
3
|
-
import { parseModelSpec } from '../../../core/model-routes.js';
|
|
4
|
-
import { openModelRegistry } from '../../../core/runtime/model-registry.js';
|
|
5
|
-
function parseRequest(body) {
|
|
6
|
-
if (body === null || typeof body !== 'object' || Array.isArray(body))
|
|
7
|
-
throw new ApiError(400, 'invalid_request', 'model config must be an object');
|
|
8
|
-
const request = body;
|
|
9
|
-
if (typeof request.config_version !== 'string' || request.config_version.trim() === '') {
|
|
10
|
-
throw new ApiError(400, 'invalid_request', 'config_version must be a non-empty string');
|
|
11
|
-
}
|
|
12
|
-
try {
|
|
13
|
-
return { configVersion: request.config_version, config: validateCoreModelConfig(request) };
|
|
14
|
-
}
|
|
15
|
-
catch (error) {
|
|
16
|
-
throw new ApiError(400, 'invalid_request', error instanceof Error ? error.message : String(error));
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
/** Validate route refs against this image's baked descriptor catalog before disk changes. */
|
|
20
|
-
async function validateCatalog(config) {
|
|
21
|
-
const registry = await openModelRegistry();
|
|
22
|
-
for (const route of Object.values(config.modelRoutes)) {
|
|
23
|
-
for (const spec of Object.values(route.models)) {
|
|
24
|
-
const model = parseModelSpec(spec);
|
|
25
|
-
if (model === undefined || registry.find(model.providerId, model.modelId) === undefined) {
|
|
26
|
-
throw new ApiError(422, 'unprocessable', `route ref ${spec} is absent from the baked model registry`);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
async function handlePut(ctx) {
|
|
32
|
-
const { configVersion, config } = parseRequest(ctx.body);
|
|
33
|
-
await validateCatalog(config);
|
|
34
|
-
try {
|
|
35
|
-
replaceCoreModelConfig(config);
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
throw new ApiError(500, 'model_config_write_failed', error instanceof Error ? error.message : String(error));
|
|
39
|
-
}
|
|
40
|
-
return { status: 200, body: { config_version: configVersion, delivered: true } };
|
|
41
|
-
}
|
|
42
|
-
export const modelConfigRoutes = [
|
|
43
|
-
{ method: 'PUT', pattern: '/v1/model-config', handler: handlePut },
|
|
44
|
-
];
|
|
1
|
+
var f=Object.defineProperty;var i=(e,o)=>f(e,"name",{value:o,configurable:!0});import{ApiError as t}from"../../../api/errors.js";import{validateCoreModelConfig as a,replaceCoreModelConfig as c}from"../../../core/model-config.js";import{parseModelSpec as d}from"../../../core/model-routes.js";import{openModelRegistry as l}from"../../../core/runtime/model-registry.js";function g(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new t(400,"invalid_request","model config must be an object");const o=e;if(typeof o.config_version!="string"||o.config_version.trim()==="")throw new t(400,"invalid_request","config_version must be a non-empty string");try{return{configVersion:o.config_version,config:a(o)}}catch(r){throw new t(400,"invalid_request",r instanceof Error?r.message:String(r))}}i(g,"parseRequest");async function m(e){const o=await l();for(const r of Object.values(e.modelRoutes))for(const n of Object.values(r.models)){const s=d(n);if(s===void 0||o.find(s.providerId,s.modelId)===void 0)throw new t(422,"unprocessable",`route ref ${n} is absent from the baked model registry`)}}i(m,"validateCatalog");async function u(e){const{configVersion:o,config:r}=g(e.body);await m(r);try{c(r)}catch(n){throw new t(500,"model_config_write_failed",n instanceof Error?n.message:String(n))}return{status:200,body:{config_version:o,delivered:!0}}}i(u,"handlePut");const _=[{method:"PUT",pattern:"/v1/model-config",handler:u}];export{_ as modelConfigRoutes};
|