@north-light/crouter 0.3.318 → 0.3.320
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.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 +441 -441
- 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.js +1 -395
- 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 -939
- 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 -4
- package/runtime.lock.json +5 -5
- package/scripts/pack-minify.mjs +108 -0
- 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 -127
- 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,457 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//
|
|
3
|
-
// The Host abstraction (design §3): owns an engine PROCESS's lifecycle, not its
|
|
4
|
-
// display. After the broker-is-the-host cut there is ONE impl —
|
|
5
|
-
// HeadlessBrokerHost — a detached broker process with no tmux pane. Every node
|
|
6
|
-
// (managed child, named node, --root, front-door root) runs on it; a tmux pane
|
|
7
|
-
// is only an attach VIEWER. The `Host` interface is kept as a one-impl seam (the
|
|
8
|
-
// test/future-host boundary).
|
|
9
|
-
//
|
|
10
|
-
// This file imports neither './tmux.js' nor './placement.js' — the broker host
|
|
11
|
-
// needs no tmux verb at all (it supervises via the broker pid, tears down over
|
|
12
|
-
// the node's unix socket).
|
|
13
|
-
import { spawn } from 'node:child_process';
|
|
14
|
-
import { mkdirSync, writeFileSync, readFileSync, existsSync, unlinkSync, openSync, closeSync } from 'node:fs';
|
|
15
|
-
import { dirname, join, resolve, isAbsolute } from 'node:path';
|
|
16
|
-
import { fileURLToPath } from 'node:url';
|
|
17
|
-
import { connect } from 'node:net';
|
|
18
|
-
import { getNode } from '../canvas/index.js';
|
|
19
|
-
import { crtrHome, nodeDir, jobDir, viewSocketPath } from '../canvas/paths.js';
|
|
20
|
-
import { encodeFrame } from './broker-protocol.js';
|
|
21
|
-
import { buildBrokerEnv } from './spawn-env.js';
|
|
22
|
-
import { hostExecPath } from './branded-host.js';
|
|
23
|
-
import { isPidAlive, killProcessTreePids, isAnyPidAlive, captureTeardownSnapshot } from '../canvas/pid.js';
|
|
24
|
-
import { assertMandatoryCanvasExtensions } from './canvas-extensions.js';
|
|
25
|
-
import { boundFleet, brokerCapReached, brokerThresholdsForDaemon } from './fleet.js';
|
|
26
|
-
import { emitEvent } from '../events/emit.js';
|
|
27
|
-
import { bindBrokerEventSource, eventSource } from '../events/source.js';
|
|
28
|
-
import { envBrokerEngine } from '../../shared/env.js';
|
|
29
|
-
// HeadlessBrokerHost (design §3.3): a detached broker PROCESS, no tmux pane. It
|
|
30
|
-
// boots the dedicated broker-cli entry directly (NEVER src/cli.ts), supervises
|
|
31
|
-
// via the broker pid recorded as pi_pid, and tears down over the node's unix
|
|
32
|
-
// socket (graceful `shutdown` frame, SIGTERM fallback).
|
|
33
|
-
/** Resolve the broker entry beside this module. A broker must run from the
|
|
34
|
-
* same generation as the crtrd launching it, so module-relative resolution
|
|
35
|
-
* preserves that invariant. */
|
|
36
|
-
function resolveBrokerEntry() {
|
|
37
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
38
|
-
return join(here, 'broker-cli.js');
|
|
39
|
-
}
|
|
40
|
-
const DEFAULT_BROKER_ENGINE = '@earendil-works/pi-coding-agent';
|
|
41
|
-
/** Resolve the broker engine spec for THIS launch, mirroring broker-sdk.ts's
|
|
42
|
-
* own resolution order (`inv.env` first, then the launching process's ambient
|
|
43
|
-
* `CRTR_BROKER_ENGINE` — the T11 test seam — then the real SDK default).
|
|
44
|
-
* Called once by `preflightBrokerLaunch` (to validate resolvability before we
|
|
45
|
-
* detach a process) and again by `launch` (to inject the SAME resolved value
|
|
46
|
-
* into the child's env — see the child-env comment at the spawn() call for
|
|
47
|
-
* why: the default-deny allowlist in spawn-env.ts strips `CRTR_*` from
|
|
48
|
-
* ambient env, so the child can no longer re-derive this itself). */
|
|
49
|
-
function resolveEngineSpec(inv) {
|
|
50
|
-
return inv.env['CRTR_BROKER_ENGINE'] ?? envBrokerEngine();
|
|
51
|
-
}
|
|
52
|
-
function isPlainLaunchSessionPath(token) {
|
|
53
|
-
return token.includes('/') || token.endsWith('.jsonl');
|
|
54
|
-
}
|
|
55
|
-
function resolvePlainLaunchPath(token, cwd) {
|
|
56
|
-
return isAbsolute(token) ? token : resolve(cwd, token);
|
|
57
|
-
}
|
|
58
|
-
function preflightLaunchSessionArg(nodeId, cwd, flag, value) {
|
|
59
|
-
if (flag === '--session' && !isPlainLaunchSessionPath(value)) {
|
|
60
|
-
throw new Error(`[broker] refusing to launch ${nodeId}: launch recipe passes bare --session id '${value}' — the broker fatally rejects bare ids; pass the .jsonl path instead.`);
|
|
61
|
-
}
|
|
62
|
-
if (!isPlainLaunchSessionPath(value))
|
|
63
|
-
return;
|
|
64
|
-
const sessionPath = resolvePlainLaunchPath(value, cwd);
|
|
65
|
-
if (!existsSync(sessionPath)) {
|
|
66
|
-
const label = flag === '--session' ? 'session file' : 'fork source';
|
|
67
|
-
throw new Error(`[broker] refusing to launch ${nodeId}: launch recipe references missing ${label} '${value}' (${sessionPath})`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/** Validate the broker launch recipe before we detach a child process. This is
|
|
71
|
-
* the fast-fail seam for known module/path errors: a bad engine resolve or a
|
|
72
|
-
* missing plain session path throws here, before spawn(). */
|
|
73
|
-
export function preflightBrokerLaunch(nodeId, inv, cwd) {
|
|
74
|
-
const dir = nodeDir(nodeId);
|
|
75
|
-
mkdirSync(dir, { recursive: true });
|
|
76
|
-
const launchPath = join(dir, 'broker-launch.json');
|
|
77
|
-
writeFileSync(launchPath, JSON.stringify(inv));
|
|
78
|
-
const raw = readFileSync(launchPath, 'utf8');
|
|
79
|
-
const recipe = JSON.parse(raw);
|
|
80
|
-
if (!Array.isArray(recipe.argv)) {
|
|
81
|
-
throw new Error(`[broker] refusing to launch ${nodeId}: broker-launch.json is missing the argv array`);
|
|
82
|
-
}
|
|
83
|
-
const engineSpec = resolveEngineSpec(inv);
|
|
84
|
-
try {
|
|
85
|
-
const resolvedEngine = import.meta.resolve(engineSpec);
|
|
86
|
-
if (resolvedEngine.startsWith('file:') && !existsSync(fileURLToPath(resolvedEngine))) {
|
|
87
|
-
throw new Error(`resolved to missing file ${resolvedEngine}`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
throw new Error(`[broker] refusing to launch ${nodeId}: cannot resolve broker engine '${engineSpec}' from ${resolveBrokerEntry()} — ${error.message}`);
|
|
92
|
-
}
|
|
93
|
-
const argv = recipe.argv;
|
|
94
|
-
const extensionPaths = [];
|
|
95
|
-
for (let i = 0; i < argv.length; i++) {
|
|
96
|
-
const tok = argv[i];
|
|
97
|
-
if (tok === '-e') {
|
|
98
|
-
const value = argv[++i];
|
|
99
|
-
if (value !== undefined)
|
|
100
|
-
extensionPaths.push(value);
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
if (tok !== '--session' && tok !== '--fork')
|
|
104
|
-
continue;
|
|
105
|
-
const value = argv[++i];
|
|
106
|
-
if (value === undefined)
|
|
107
|
-
continue;
|
|
108
|
-
preflightLaunchSessionArg(nodeId, cwd, tok, value);
|
|
109
|
-
}
|
|
110
|
-
try {
|
|
111
|
-
assertMandatoryCanvasExtensions(extensionPaths);
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
throw new Error(`[broker] refusing to launch ${nodeId}: ${error.message}`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/** How long teardown waits after sending the graceful `shutdown` frame before
|
|
118
|
-
* escalating a broker/tree that connected but never fully exited (e.g. a hung
|
|
119
|
-
* dispose(), or a dispose() that reaped the broker but left a descendant
|
|
120
|
-
* behind). */
|
|
121
|
-
const BROKER_SHUTDOWN_GRACE_MS = 2_000;
|
|
122
|
-
/** How long teardown waits after the tree-wide SIGTERM before the final
|
|
123
|
-
* tree-wide SIGKILL sweep — the last resort for a broker (or its
|
|
124
|
-
* descendants) that ignores SIGTERM entirely. */
|
|
125
|
-
const BROKER_SIGKILL_GRACE_MS = 2_000;
|
|
126
|
-
/** How often `pollUntilTreeDead` re-checks the process TREE. Short enough that
|
|
127
|
-
* the common/happy path (tree already dead) pays only a couple of ticks; the
|
|
128
|
-
* full grace ceilings above are reserved for the genuinely-wedged case,
|
|
129
|
-
* where the added latency is the whole point. */
|
|
130
|
-
const TEARDOWN_POLL_MS = 150;
|
|
131
|
-
/** Wait against the fixed snapshot. The ref'd timer keeps a short-lived
|
|
132
|
-
* caller alive through the final SIGKILL confirmation. */
|
|
133
|
-
async function waitForTreeExit(tree, timeoutMs) {
|
|
134
|
-
const deadline = Date.now() + timeoutMs;
|
|
135
|
-
while (isAnyPidAlive(tree)) {
|
|
136
|
-
const remaining = deadline - Date.now();
|
|
137
|
-
if (remaining <= 0)
|
|
138
|
-
return false;
|
|
139
|
-
await new Promise((resolve) => setTimeout(resolve, Math.min(TEARDOWN_POLL_MS, remaining)));
|
|
140
|
-
}
|
|
141
|
-
return true;
|
|
142
|
-
}
|
|
143
|
-
/** Finish one teardown using the snapshot captured before any signal can sever
|
|
144
|
-
* broker parentage. A failed confirmation is explicit so post-teardown cleanup
|
|
145
|
-
* never runs against an engine tree that may still own its resources. */
|
|
146
|
-
async function terminateBrokerTree(tree, identities, graceful) {
|
|
147
|
-
if (tree.length === 0)
|
|
148
|
-
return { confirmed: true };
|
|
149
|
-
if (graceful && await waitForTreeExit(tree, BROKER_SHUTDOWN_GRACE_MS))
|
|
150
|
-
return { confirmed: true };
|
|
151
|
-
killProcessTreePids(tree, 'SIGTERM', identities);
|
|
152
|
-
if (await waitForTreeExit(tree, BROKER_SIGKILL_GRACE_MS))
|
|
153
|
-
return { confirmed: true };
|
|
154
|
-
killProcessTreePids(tree, 'SIGKILL', identities);
|
|
155
|
-
if (await waitForTreeExit(tree, 5_000))
|
|
156
|
-
return { confirmed: true };
|
|
157
|
-
return { confirmed: false, error: new Error(`broker process tree for ${tree.join(', ')} remained alive after SIGKILL`) };
|
|
158
|
-
}
|
|
159
|
-
/** Capture the one authoritative process snapshot before a caller can reap the
|
|
160
|
-
* node row. No signal or socket operation occurs here; execution remains queued
|
|
161
|
-
* until the close response has settled. */
|
|
162
|
-
function prepareBrokerTeardown(nodeId, opts) {
|
|
163
|
-
const node = getNode(nodeId);
|
|
164
|
-
const pid = node?.pi_pid;
|
|
165
|
-
const snapshot = pid != null
|
|
166
|
-
? captureTeardownSnapshot(pid, node?.pi_pid_identity ?? null, opts.excludePid)
|
|
167
|
-
: null;
|
|
168
|
-
if (snapshot?.reused === true) {
|
|
169
|
-
emitEvent({
|
|
170
|
-
level: 'warn',
|
|
171
|
-
event: 'broker.teardown.pid_reuse_refused',
|
|
172
|
-
node_id: nodeId,
|
|
173
|
-
fields: { recorded_pid: pid, expected_identity: node?.pi_pid_identity ?? null },
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
return {
|
|
177
|
-
tree: snapshot?.tree ?? [],
|
|
178
|
-
identities: snapshot?.identities ?? null,
|
|
179
|
-
sockPath: viewSocketPath(nodeId),
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
async function runPreparedBrokerTeardown(prepared) {
|
|
183
|
-
// Even a dead broker pid can still be the process-group leader for an orphan
|
|
184
|
-
// that the initial ppid walk could no longer reach. The connect-failure path
|
|
185
|
-
// must retain that leader id for group signaling rather than treating its dead
|
|
186
|
-
// status as confirmation that no descendant survives.
|
|
187
|
-
return new Promise((resolve) => {
|
|
188
|
-
let connected = false;
|
|
189
|
-
let settled = false;
|
|
190
|
-
const settle = (result) => {
|
|
191
|
-
if (settled)
|
|
192
|
-
return;
|
|
193
|
-
settled = true;
|
|
194
|
-
resolve(result);
|
|
195
|
-
};
|
|
196
|
-
const cleanupSocket = () => {
|
|
197
|
-
try {
|
|
198
|
-
if (existsSync(prepared.sockPath))
|
|
199
|
-
unlinkSync(prepared.sockPath);
|
|
200
|
-
}
|
|
201
|
-
catch {
|
|
202
|
-
/* best-effort cleanup */
|
|
203
|
-
}
|
|
204
|
-
};
|
|
205
|
-
const finish = (graceful) => {
|
|
206
|
-
void terminateBrokerTree(prepared.tree, prepared.identities, graceful).then(settle, (error) => settle({ confirmed: false, error: error instanceof Error ? error : new Error(String(error)) }));
|
|
207
|
-
};
|
|
208
|
-
const sock = connect(prepared.sockPath);
|
|
209
|
-
sock.once('error', () => {
|
|
210
|
-
if (connected)
|
|
211
|
-
return;
|
|
212
|
-
cleanupSocket();
|
|
213
|
-
finish(false);
|
|
214
|
-
});
|
|
215
|
-
sock.once('connect', () => {
|
|
216
|
-
connected = true;
|
|
217
|
-
try {
|
|
218
|
-
sock.write(encodeFrame({ type: 'shutdown' }));
|
|
219
|
-
}
|
|
220
|
-
catch {
|
|
221
|
-
/* the broker may have raced us to exit */
|
|
222
|
-
}
|
|
223
|
-
sock.end();
|
|
224
|
-
cleanupSocket();
|
|
225
|
-
finish(true);
|
|
226
|
-
});
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
const requestedTeardowns = new Map();
|
|
230
|
-
/** Queue broker teardown after the close response settles. Completion includes
|
|
231
|
-
* any post-teardown work, which lets the daemon drain it during shutdown. */
|
|
232
|
-
export function requestBrokerTeardown(nodeId, opts = {}, after) {
|
|
233
|
-
const existing = requestedTeardowns.get(nodeId);
|
|
234
|
-
if (existing !== undefined) {
|
|
235
|
-
if (after !== undefined)
|
|
236
|
-
existing.after.push(after);
|
|
237
|
-
return existing.completion;
|
|
238
|
-
}
|
|
239
|
-
let resolve;
|
|
240
|
-
const completion = new Promise((done) => { resolve = done; });
|
|
241
|
-
const request = { completion, resolve, after: after === undefined ? [] : [after] };
|
|
242
|
-
requestedTeardowns.set(nodeId, request);
|
|
243
|
-
let prepared;
|
|
244
|
-
try {
|
|
245
|
-
prepared = prepareBrokerTeardown(nodeId, opts);
|
|
246
|
-
}
|
|
247
|
-
catch (error) {
|
|
248
|
-
const failure = { confirmed: false, error: error instanceof Error ? error : new Error(String(error)) };
|
|
249
|
-
requestedTeardowns.delete(nodeId);
|
|
250
|
-
emitEvent({ level: 'error', event: 'broker.teardown.unconfirmed', node_id: nodeId, error: failure.error });
|
|
251
|
-
request.resolve(failure);
|
|
252
|
-
return completion;
|
|
253
|
-
}
|
|
254
|
-
setImmediate(() => {
|
|
255
|
-
requestedTeardowns.delete(nodeId);
|
|
256
|
-
void runPreparedBrokerTeardown(prepared).then(async (result) => {
|
|
257
|
-
if (result.confirmed) {
|
|
258
|
-
for (const callback of request.after) {
|
|
259
|
-
try {
|
|
260
|
-
await callback();
|
|
261
|
-
}
|
|
262
|
-
catch (error) {
|
|
263
|
-
emitEvent({ level: 'error', event: 'broker.teardown.after_failed', node_id: nodeId, error });
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
emitEvent({ level: 'error', event: 'broker.teardown.unconfirmed', node_id: nodeId, error: result.error });
|
|
269
|
-
}
|
|
270
|
-
request.resolve(result);
|
|
271
|
-
}, (error) => {
|
|
272
|
-
const failure = { confirmed: false, error: error instanceof Error ? error : new Error(String(error)) };
|
|
273
|
-
emitEvent({ level: 'error', event: 'broker.teardown.unconfirmed', node_id: nodeId, error: failure.error });
|
|
274
|
-
request.resolve(failure);
|
|
275
|
-
});
|
|
276
|
-
});
|
|
277
|
-
return completion;
|
|
278
|
-
}
|
|
279
|
-
export const headlessBrokerHost = {
|
|
280
|
-
launch(nodeId, inv, opts) {
|
|
281
|
-
// Fast-fail known launch errors before we detach a broker process.
|
|
282
|
-
preflightBrokerLaunch(nodeId, inv, opts.cwd);
|
|
283
|
-
// Resolve the fleet BEFORE opening any handle: an unbound-fleet launch must
|
|
284
|
-
// fail fast with nothing to clean up (design D-2 — broker launches happen
|
|
285
|
-
// only inside crtrd, or a test harness that explicitly bound a fleet).
|
|
286
|
-
const fleet = boundFleet();
|
|
287
|
-
// The ledger is the ONE admission gate for a broker process: every launch
|
|
288
|
-
// path (revive, spawn, recycle, reset) funnels through here, so claiming
|
|
289
|
-
// the slot before anything is opened — and giving it back on any path that
|
|
290
|
-
// does not end in a registered handle — is what makes the cap real rather
|
|
291
|
-
// than advisory. A caller that cannot proceed without a slot sees this
|
|
292
|
-
// typed refusal; a caller that can wait catches it and freezes instead.
|
|
293
|
-
if (!fleet.reserveSlot(nodeId)) {
|
|
294
|
-
throw brokerCapReached(brokerThresholdsForDaemon().automaticReviveCap, fleet.size());
|
|
295
|
-
}
|
|
296
|
-
let logFd = null;
|
|
297
|
-
let child;
|
|
298
|
-
let registered = false;
|
|
299
|
-
try {
|
|
300
|
-
// Redirect the detached broker's stdout+stderr to a per-node log under the
|
|
301
|
-
// node's existing job/ dir. It retains arbitrary engine/process residue and
|
|
302
|
-
// failed-canonical fatal fallback output. Append-mode preserves crash-revive history.
|
|
303
|
-
const logDir = jobDir(nodeId);
|
|
304
|
-
mkdirSync(logDir, { recursive: true });
|
|
305
|
-
logFd = openSync(join(logDir, 'broker.log'), 'a');
|
|
306
|
-
// Launch from the crouter-branded host binary (a copy of node) so the
|
|
307
|
-
// broker shows "crouter" in macOS Full Disk Access, not "node". On
|
|
308
|
-
// non-darwin / dev / tests this is just process.execPath (see branded-host).
|
|
309
|
-
// buildBrokerEnv's default-deny allowlist has no `CRTR_` prefix, so a bare
|
|
310
|
-
// `CRTR_BROKER_ENGINE` set only in the LAUNCHING process's ambient env (the
|
|
311
|
-
// T11 test seam — see broker-sdk.ts) would never reach the child, which
|
|
312
|
-
// would silently fall back to booting the real SDK. Inject the SAME value
|
|
313
|
-
// preflightBrokerLaunch already resolved+validated above: it is
|
|
314
|
-
// parent-resolved, crtr-trusted data (the same trust category as
|
|
315
|
-
// `inv.env`), not a blanket `CRTR_*` passthrough, so this does not weaken
|
|
316
|
-
// the allowlist's hardening. In production `engineSpec` is always the real
|
|
317
|
-
// SDK default, so this is a no-op there.
|
|
318
|
-
const engineSpec = resolveEngineSpec(inv);
|
|
319
|
-
const childEnv = { ...buildBrokerEnv(inv), CRTR_BROKER_ENGINE: engineSpec };
|
|
320
|
-
// NODE_OPTIONS is deliberately absent from the operational allowlist (it is
|
|
321
|
-
// a code-execution vector — `--require`/`--import` — and DAEMON_ENV_STRIP_KEYS
|
|
322
|
-
// strips it from the daemon's own env for the identical reason: a poisoned
|
|
323
|
-
// NODE_OPTIONS in an inheriting shell must never reach a process that then
|
|
324
|
-
// handles model credentials). It is genuinely needed ONLY for the T11 test
|
|
325
|
-
// seam above: the fake engine is a `.ts` fixture, and the broker CLI entry
|
|
326
|
-
// itself is only a `.js` file under the compiled `dist/`, so the harness
|
|
327
|
-
// relies on `NODE_OPTIONS=--import tsx/esm` (set on its own ambient env, same
|
|
328
|
-
// seam as CRTR_BROKER_ENGINE) to make the spawned child resolve both under
|
|
329
|
-
// tsx. Gating this carry on `engineSpec !== DEFAULT_BROKER_ENGINE` — i.e. only
|
|
330
|
-
// when the trusted test seam above already fired — keeps production (where
|
|
331
|
-
// the engine is never overridden) byte-identical to today: NODE_OPTIONS is
|
|
332
|
-
// never forwarded there, so an ambient poisoned value stays contained.
|
|
333
|
-
if (engineSpec !== DEFAULT_BROKER_ENGINE) {
|
|
334
|
-
const nodeOptions = inv.env['NODE_OPTIONS'] ?? process.env['NODE_OPTIONS'];
|
|
335
|
-
if (nodeOptions !== undefined)
|
|
336
|
-
childEnv['NODE_OPTIONS'] = nodeOptions;
|
|
337
|
-
}
|
|
338
|
-
if (eventSource() === undefined)
|
|
339
|
-
bindBrokerEventSource(nodeId);
|
|
340
|
-
// `--canvas-home` declares broker ownership in argv so the daemon's
|
|
341
|
-
// startup epoch census can match its own canvas' brokers exactly (crtrd's
|
|
342
|
-
// brokerCommandDeclaresCanvasHome) instead of inferring from install
|
|
343
|
-
// paths; `--epoch` stamps WHICH daemon epoch launched it, so the next
|
|
344
|
-
// daemon's census reaps every prior-epoch broker without adoption (D-8).
|
|
345
|
-
// Both precede the node id: the node id is by contract the FINAL argv
|
|
346
|
-
// token (both broker-cli and the ps census parse it that way).
|
|
347
|
-
const spawned = spawn(hostExecPath(), [resolveBrokerEntry(), '--canvas-home', crtrHome(), '--epoch', fleet.epoch(), nodeId], {
|
|
348
|
-
cwd: opts.cwd,
|
|
349
|
-
detached: true,
|
|
350
|
-
stdio: ['ignore', logFd, logFd],
|
|
351
|
-
env: childEnv,
|
|
352
|
-
});
|
|
353
|
-
child = spawned;
|
|
354
|
-
// The child holds its own dup of the fd; release the parent's copy so the
|
|
355
|
-
// launching process (CLI or daemon) never leaks it.
|
|
356
|
-
closeSync(logFd);
|
|
357
|
-
logFd = null;
|
|
358
|
-
// ONE seam for every launch path (revive/spawn/recycle/reset): record the
|
|
359
|
-
// child's real exit status as a canonical event. Readiness waits consume
|
|
360
|
-
// `exited` for fail-fast and then discard it, so before this a broker that
|
|
361
|
-
// was SIGKILLed out from under crouter left NO trace anywhere — an external
|
|
362
|
-
// kill was indistinguishable from a silent early return, and post-mortems
|
|
363
|
-
// were unprovable (see the 2026-07-27 "brokers die at startup" RCA).
|
|
364
|
-
// Emitted through the ordinary bound source: in the daemon (the process
|
|
365
|
-
// that actually launches brokers) that is the daemon stream carrying
|
|
366
|
-
// `node_id`, which is how every other daemon-observed broker event
|
|
367
|
-
// (broker.wedge.detected, broker.yield_stall.*) is recorded and how a
|
|
368
|
-
// node-scoped log query finds it. The node's own job/log.jsonl is the
|
|
369
|
-
// BROKER's stream — the reader rejects any non-broker-component line there
|
|
370
|
-
// (events/read.ts descriptorMatches) — so the daemon must not write into
|
|
371
|
-
// it. A process already bound to this node's broker source (in-process
|
|
372
|
-
// revive) naturally lands there instead.
|
|
373
|
-
const launchedAt = Date.now();
|
|
374
|
-
const exited = new Promise((resolve) => {
|
|
375
|
-
let settled = false;
|
|
376
|
-
const finish = (state) => {
|
|
377
|
-
if (settled)
|
|
378
|
-
return;
|
|
379
|
-
settled = true;
|
|
380
|
-
resolve(state);
|
|
381
|
-
};
|
|
382
|
-
spawned.once('exit', (code, signal) => {
|
|
383
|
-
emitEvent({
|
|
384
|
-
level: code === 0 ? 'info' : 'warn',
|
|
385
|
-
event: 'broker.exited',
|
|
386
|
-
node_id: nodeId,
|
|
387
|
-
fields: { code, signal, uptime_ms: Date.now() - launchedAt },
|
|
388
|
-
});
|
|
389
|
-
finish({ code, signal });
|
|
390
|
-
});
|
|
391
|
-
spawned.once('error', (error) => {
|
|
392
|
-
emitEvent({
|
|
393
|
-
level: 'error',
|
|
394
|
-
event: 'broker.launch.failed',
|
|
395
|
-
node_id: nodeId,
|
|
396
|
-
error,
|
|
397
|
-
fields: { uptime_ms: Date.now() - launchedAt },
|
|
398
|
-
});
|
|
399
|
-
finish({ code: null, signal: null });
|
|
400
|
-
});
|
|
401
|
-
});
|
|
402
|
-
spawned.unref();
|
|
403
|
-
const handle = { pid: spawned.pid ?? null, exited };
|
|
404
|
-
// Register the live handle synchronously — the fleet entry IS the node's
|
|
405
|
-
// liveness from here on, and its real `exit` event (never a pid probe)
|
|
406
|
-
// drives dead-node policy. A null pid (spawn itself failed) registers
|
|
407
|
-
// nothing: the `exited` promise resolves via the 'error' event and the
|
|
408
|
-
// caller's own null-pid check surfaces the failure.
|
|
409
|
-
if (handle.pid !== null) {
|
|
410
|
-
fleet.register(nodeId, handle);
|
|
411
|
-
registered = true;
|
|
412
|
-
void exited.then((status) => fleet.onChildExit(nodeId, status));
|
|
413
|
-
}
|
|
414
|
-
return handle;
|
|
415
|
-
}
|
|
416
|
-
catch (error) {
|
|
417
|
-
if (!registered && child?.pid != null) {
|
|
418
|
-
try {
|
|
419
|
-
child.kill('SIGTERM');
|
|
420
|
-
}
|
|
421
|
-
catch { /* no fleet handle exists to tear down */ }
|
|
422
|
-
}
|
|
423
|
-
throw error;
|
|
424
|
-
}
|
|
425
|
-
finally {
|
|
426
|
-
if (!registered)
|
|
427
|
-
fleet.releaseReservation(nodeId);
|
|
428
|
-
if (logFd !== null)
|
|
429
|
-
closeSync(logFd);
|
|
430
|
-
}
|
|
431
|
-
},
|
|
432
|
-
isAlive(node) {
|
|
433
|
-
return isPidAlive((typeof node === 'string' ? getNode(node) : node)?.pi_pid);
|
|
434
|
-
},
|
|
435
|
-
teardown(nodeId, opts = {}) {
|
|
436
|
-
try {
|
|
437
|
-
return runPreparedBrokerTeardown(prepareBrokerTeardown(nodeId, opts));
|
|
438
|
-
}
|
|
439
|
-
catch (error) {
|
|
440
|
-
return Promise.resolve({
|
|
441
|
-
confirmed: false,
|
|
442
|
-
error: error instanceof Error ? error : new Error(String(error)),
|
|
443
|
-
});
|
|
444
|
-
}
|
|
445
|
-
},
|
|
446
|
-
signal(nodeId, sig) {
|
|
447
|
-
const pid = getNode(nodeId)?.pi_pid;
|
|
448
|
-
if (pid != null) {
|
|
449
|
-
try {
|
|
450
|
-
process.kill(pid, sig);
|
|
451
|
-
}
|
|
452
|
-
catch {
|
|
453
|
-
/* already gone */
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
},
|
|
457
|
-
};
|
|
1
|
+
var A=Object.defineProperty;var a=(e,t)=>A(e,"name",{value:t,configurable:!0});import{spawn as G}from"node:child_process";import{mkdirSync as R,writeFileSync as j,readFileSync as C,existsSync as k,unlinkSync as F,openSync as K,closeSync as T}from"node:fs";import{dirname as M,join as g,resolve as W,isAbsolute as q}from"node:path";import{fileURLToPath as O}from"node:url";import{connect as H}from"node:net";import{getNode as _}from"../canvas/index.js";import{crtrHome as U,nodeDir as J,jobDir as z,viewSocketPath as Q}from"../canvas/paths.js";import{encodeFrame as V}from"./broker-protocol.js";import{buildBrokerEnv as X}from"./spawn-env.js";import{hostExecPath as Y}from"./branded-host.js";import{isPidAlive as Z,killProcessTreePids as N,isAnyPidAlive as I,captureTeardownSnapshot as ee}from"../canvas/pid.js";import{assertMandatoryCanvasExtensions as re}from"./canvas-extensions.js";import{boundFleet as ne,brokerCapReached as te,brokerThresholdsForDaemon as oe}from"./fleet.js";import{emitEvent as m}from"../events/emit.js";import{bindBrokerEventSource as ie,eventSource as se}from"../events/source.js";import{envBrokerEngine as ce}from"../../shared/env.js";function x(){const e=M(O(import.meta.url));return g(e,"broker-cli.js")}a(x,"resolveBrokerEntry");const ae="@earendil-works/pi-coding-agent";function B(e){return e.env.CRTR_BROKER_ENGINE??ce()}a(B,"resolveEngineSpec");function D(e){return e.includes("/")||e.endsWith(".jsonl")}a(D,"isPlainLaunchSessionPath");function le(e,t){return q(e)?e:W(t,e)}a(le,"resolvePlainLaunchPath");function fe(e,t,r,n){if(r==="--session"&&!D(n))throw new Error(`[broker] refusing to launch ${e}: launch recipe passes bare --session id '${n}' \u2014 the broker fatally rejects bare ids; pass the .jsonl path instead.`);if(!D(n))return;const o=le(n,t);if(!k(o)){const u=r==="--session"?"session file":"fork source";throw new Error(`[broker] refusing to launch ${e}: launch recipe references missing ${u} '${n}' (${o})`)}}a(fe,"preflightLaunchSessionArg");function ue(e,t,r){const n=J(e);R(n,{recursive:!0});const o=g(n,"broker-launch.json");j(o,JSON.stringify(t));const u=C(o,"utf8"),l=JSON.parse(u);if(!Array.isArray(l.argv))throw new Error(`[broker] refusing to launch ${e}: broker-launch.json is missing the argv array`);const f=B(t);try{const s=import.meta.resolve(f);if(s.startsWith("file:")&&!k(O(s)))throw new Error(`resolved to missing file ${s}`)}catch(s){throw new Error(`[broker] refusing to launch ${e}: cannot resolve broker engine '${f}' from ${x()} \u2014 ${s.message}`)}const i=l.argv,c=[];for(let s=0;s<i.length;s++){const d=i[s];if(d==="-e"){const p=i[++s];p!==void 0&&c.push(p);continue}if(d!=="--session"&&d!=="--fork")continue;const v=i[++s];v!==void 0&&fe(e,r,d,v)}try{re(c)}catch(s){throw new Error(`[broker] refusing to launch ${e}: ${s.message}`)}}a(ue,"preflightBrokerLaunch");const de=2e3,he=2e3,me=150;async function S(e,t){const r=Date.now()+t;for(;I(e);){const n=r-Date.now();if(n<=0)return!1;await new Promise(o=>setTimeout(o,Math.min(me,n)))}return!0}a(S,"waitForTreeExit");async function pe(e,t,r){return e.length===0?{confirmed:!0}:r&&await S(e,de)?{confirmed:!0}:(N(e,"SIGTERM",t),await S(e,he)?{confirmed:!0}:(N(e,"SIGKILL",t),await S(e,5e3)?{confirmed:!0}:{confirmed:!1,error:new Error(`broker process tree for ${e.join(", ")} remained alive after SIGKILL`)}))}a(pe,"terminateBrokerTree");function $(e,t){const r=_(e),n=r?.pi_pid,o=n!=null?ee(n,r?.pi_pid_identity??null,t.excludePid):null;return o?.reused===!0&&m({level:"warn",event:"broker.teardown.pid_reuse_refused",node_id:e,fields:{recorded_pid:n,expected_identity:r?.pi_pid_identity??null}}),{tree:o?.tree??[],identities:o?.identities??null,sockPath:Q(e)}}a($,"prepareBrokerTeardown");async function L(e){return new Promise(t=>{let r=!1,n=!1;const o=a(i=>{n||(n=!0,t(i))},"settle"),u=a(()=>{try{k(e.sockPath)&&F(e.sockPath)}catch{}},"cleanupSocket"),l=a(i=>{pe(e.tree,e.identities,i).then(o,c=>o({confirmed:!1,error:c instanceof Error?c:new Error(String(c))}))},"finish"),f=H(e.sockPath);f.once("error",()=>{r||(u(),l(!1))}),f.once("connect",()=>{r=!0;try{f.write(V({type:"shutdown"}))}catch{}f.end(),u(),l(!0)})})}a(L,"runPreparedBrokerTeardown");const E=new Map;function $e(e,t={},r){const n=E.get(e);if(n!==void 0)return r!==void 0&&n.after.push(r),n.completion;let o;const u=new Promise(i=>{o=i}),l={completion:u,resolve:o,after:r===void 0?[]:[r]};E.set(e,l);let f;try{f=$(e,t)}catch(i){const c={confirmed:!1,error:i instanceof Error?i:new Error(String(i))};return E.delete(e),m({level:"error",event:"broker.teardown.unconfirmed",node_id:e,error:c.error}),l.resolve(c),u}return setImmediate(()=>{E.delete(e),L(f).then(async i=>{if(i.confirmed)for(const c of l.after)try{await c()}catch(s){m({level:"error",event:"broker.teardown.after_failed",node_id:e,error:s})}else m({level:"error",event:"broker.teardown.unconfirmed",node_id:e,error:i.error});l.resolve(i)},i=>{const c={confirmed:!1,error:i instanceof Error?i:new Error(String(i))};m({level:"error",event:"broker.teardown.unconfirmed",node_id:e,error:c.error}),l.resolve(c)})}),u}a($e,"requestBrokerTeardown");const Le={launch(e,t,r){ue(e,t,r.cwd);const n=ne();if(!n.reserveSlot(e))throw te(oe().automaticReviveCap,n.size());let o=null,u,l=!1;try{const f=z(e);R(f,{recursive:!0}),o=K(g(f,"broker.log"),"a");const i=B(t),c={...X(t),CRTR_BROKER_ENGINE:i};if(i!==ae){const w=t.env.NODE_OPTIONS??process.env.NODE_OPTIONS;w!==void 0&&(c.NODE_OPTIONS=w)}se()===void 0&&ie(e);const s=G(Y(),[x(),"--canvas-home",U(),"--epoch",n.epoch(),e],{cwd:r.cwd,detached:!0,stdio:["ignore",o,o],env:c});u=s,T(o),o=null;const d=Date.now(),v=new Promise(w=>{let y=!1;const b=a(h=>{y||(y=!0,w(h))},"finish");s.once("exit",(h,P)=>{m({level:h===0?"info":"warn",event:"broker.exited",node_id:e,fields:{code:h,signal:P,uptime_ms:Date.now()-d}}),b({code:h,signal:P})}),s.once("error",h=>{m({level:"error",event:"broker.launch.failed",node_id:e,error:h,fields:{uptime_ms:Date.now()-d}}),b({code:null,signal:null})})});s.unref();const p={pid:s.pid??null,exited:v};return p.pid!==null&&(n.register(e,p),l=!0,v.then(w=>n.onChildExit(e,w))),p}catch(f){if(!l&&u?.pid!=null)try{u.kill("SIGTERM")}catch{}throw f}finally{l||n.releaseReservation(e),o!==null&&T(o)}},isAlive(e){return Z((typeof e=="string"?_(e):e)?.pi_pid)},teardown(e,t={}){try{return L($(e,t))}catch(r){return Promise.resolve({confirmed:!1,error:r instanceof Error?r:new Error(String(r))})}},signal(e,t){const r=_(e)?.pi_pid;if(r!=null)try{process.kill(r,t)}catch{}}};export{Le as headlessBrokerHost,ue as preflightBrokerLaunch,$e as requestBrokerTeardown};
|
|
@@ -1,51 +1 @@
|
|
|
1
|
-
|
|
2
|
-
// a LIVE node broker over its view.sock. The daemon's interactive REST
|
|
3
|
-
// vocabulary (`POST /v1/nodes/{id}/messages` with `delivery:'interactive'`, and
|
|
4
|
-
// `POST /v1/nodes/{id}/interrupt`) rides these instead of the durable inbox, so
|
|
5
|
-
// a live conversation's send and stop share the broker's ONE serialized frame
|
|
6
|
-
// loop — the same ordering a tmux viewer gets — closing the send/abort race the
|
|
7
|
-
// two-channel inbox path had (send rode the watcher's ~1.8s inject; stop rode a
|
|
8
|
-
// direct abort frame; no shared ordering).
|
|
9
|
-
//
|
|
10
|
-
// Both ride the shared one-shot writable round-trip (broker-request.ts):
|
|
11
|
-
// connect → `hello` as controller → send the correlated frame → await its ack.
|
|
12
|
-
// A connection failure BEFORE establishment surfaces as `BrokerUnreachableError`
|
|
13
|
-
// so the caller can fall back to the durable path.
|
|
14
|
-
import { oneShotControllerRequest } from './broker-request.js';
|
|
15
|
-
/** Deliver `text` to a LIVE node's engine on its serialized frame loop. The
|
|
16
|
-
* broker routes it itself (idle → prompt, streaming → steer) and acks once
|
|
17
|
-
* routed; resolves with the route taken. `cards` are rendered runtime-card
|
|
18
|
-
* envelopes placed ahead of the body inside that same frame handling, and
|
|
19
|
-
* `origin` is the authorship the broker stamps onto the persisted message —
|
|
20
|
-
* it rides the same frame as the body it describes. */
|
|
21
|
-
export function deliverLive(nodeId, text, opts = {}) {
|
|
22
|
-
const cards = opts.cards ?? [];
|
|
23
|
-
return oneShotControllerRequest({
|
|
24
|
-
nodeId,
|
|
25
|
-
what: 'the interactive delivery',
|
|
26
|
-
ackFor: 'deliver',
|
|
27
|
-
correlated: true,
|
|
28
|
-
frame: (id) => ({
|
|
29
|
-
type: 'deliver',
|
|
30
|
-
id,
|
|
31
|
-
text,
|
|
32
|
-
...(cards.length > 0 ? { cards: [...cards] } : {}),
|
|
33
|
-
...(opts.origin !== undefined ? { origin: opts.origin } : {}),
|
|
34
|
-
}),
|
|
35
|
-
result: (detail) => (detail === 'steer' ? 'steer' : 'prompt'),
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
/** Abort whatever a LIVE node's engine is doing (turn or `!` bash). Resolves
|
|
39
|
-
* once the broker has PROCESSED the abort — which, on the single frame loop,
|
|
40
|
-
* also implies every earlier-accepted deliver was already routed (so a
|
|
41
|
-
* just-delivered send cannot start its turn after this resolves un-aborted). */
|
|
42
|
-
export function interruptLive(nodeId) {
|
|
43
|
-
return oneShotControllerRequest({
|
|
44
|
-
nodeId,
|
|
45
|
-
what: 'the interrupt',
|
|
46
|
-
ackFor: 'abort',
|
|
47
|
-
correlated: true,
|
|
48
|
-
frame: (id) => ({ type: 'abort', id }),
|
|
49
|
-
result: (detail) => (detail === 'turn' || detail === 'bash' ? detail : 'idle'),
|
|
50
|
-
});
|
|
51
|
-
}
|
|
1
|
+
var u=Object.defineProperty;var e=(t,r)=>u(t,"name",{value:r,configurable:!0});import{oneShotControllerRequest as a}from"./broker-request.js";function l(t,r,i={}){const o=i.cards??[];return a({nodeId:t,what:"the interactive delivery",ackFor:"deliver",correlated:!0,frame:e(n=>({type:"deliver",id:n,text:r,...o.length>0?{cards:[...o]}:{},...i.origin!==void 0?{origin:i.origin}:{}}),"frame"),result:e(n=>n==="steer"?"steer":"prompt","result")})}e(l,"deliverLive");function s(t){return a({nodeId:t,what:"the interrupt",ackFor:"abort",correlated:!0,frame:e(r=>({type:"abort",id:r}),"frame"),result:e(r=>r==="turn"||r==="bash"?r:"idle","result")})}e(s,"interruptLive");export{l as deliverLive,s as interruptLive};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// The broker-launch recipe shape, alone in a dependency-free module.
|
|
2
|
-
//
|
|
3
|
-
// `launch.ts` builds a PiInvocation and therefore reaches canvas state; the
|
|
4
|
-
// modules that only need to READ the recipe shape (spawn-env, host) must not.
|
|
5
|
-
// A type-only import is erased at compile time, but the shipped broker
|
|
6
|
-
// extensions are gated on their STATIC import graph — the gate cannot tell an
|
|
7
|
-
// erased edge from a live one, so an extension that reaches spawn-env would
|
|
8
|
-
// read as reaching canvas.db through launch.ts. Keeping the interface here
|
|
9
|
-
// makes the graph say what the runtime already does.
|
|
10
|
-
export {};
|