@north-light/crouter 0.3.318 → 0.3.319
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -3
- package/dist/api/client.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 +5 -4
- package/runtime.lock.json +5 -5
- package/dist/api/__tests__/integration/client.test.d.ts +0 -1
- package/dist/api/__tests__/integration/client.test.js +0 -163
- package/dist/builtin-pi-packages/pi-crtr-extensions/__tests__/insights-active-init.test.ts +0 -98
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-commands.test.ts +0 -93
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/integration/provider-rotation.test.ts +0 -2530
- package/dist/clients/__tests__/helpers/human-daemon.d.ts +0 -11
- package/dist/clients/__tests__/helpers/human-daemon.js +0 -60
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.js +0 -97
- package/dist/clients/attach/__tests__/bash-call-width.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/bash-call-width.test.js +0 -38
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +0 -175
- package/dist/clients/attach/__tests__/completion-frecency.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/completion-frecency.test.js +0 -35
- package/dist/clients/attach/__tests__/context-message.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/context-message.test.js +0 -130
- package/dist/clients/attach/__tests__/crtr-output.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/crtr-output.test.js +0 -68
- package/dist/clients/attach/__tests__/diagram.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/diagram.test.js +0 -42
- package/dist/clients/attach/__tests__/edit-diff.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/edit-diff.test.js +0 -31
- package/dist/clients/attach/__tests__/frame-selection.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/frame-selection.test.js +0 -84
- package/dist/clients/attach/__tests__/group-activity.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/group-activity.test.js +0 -165
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.js +0 -83
- package/dist/clients/attach/__tests__/pane-tag-successor.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/pane-tag-successor.test.js +0 -56
- package/dist/clients/attach/__tests__/profile-files.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/profile-files.test.js +0 -21
- package/dist/clients/attach/__tests__/prompt-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/prompt-preview.test.js +0 -21
- package/dist/clients/attach/__tests__/ref-autocomplete.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/ref-autocomplete.test.js +0 -64
- package/dist/clients/attach/__tests__/titled-editor-paste.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-paste.test.js +0 -114
- package/dist/clients/attach/__tests__/titled-editor-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-preview.test.js +0 -83
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.js +0 -81
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.js +0 -135
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.js +0 -66
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +0 -35
- package/dist/clients/inbox/review/__tests__/review-core.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/review-core.test.js +0 -52
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.js +0 -100
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.d.ts +0 -1
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.js +0 -69
- package/dist/commands/__tests__/human.test.d.ts +0 -1
- package/dist/commands/__tests__/human.test.js +0 -172
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.js +0 -237
- package/dist/commands/__tests__/integration/migrate.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/migrate.test.js +0 -1330
- package/dist/commands/__tests__/node-message.test.d.ts +0 -1
- package/dist/commands/__tests__/node-message.test.js +0 -112
- package/dist/commands/__tests__/node-new.test.d.ts +0 -1
- package/dist/commands/__tests__/node-new.test.js +0 -58
- package/dist/commands/__tests__/revive-now-gate.test.d.ts +0 -1
- package/dist/commands/__tests__/revive-now-gate.test.js +0 -62
- package/dist/commands/__tests__/seam/daemon-status.test.d.ts +0 -1
- package/dist/commands/__tests__/seam/daemon-status.test.js +0 -29
- package/dist/commands/__tests__/surface-reload-target.test.d.ts +0 -1
- package/dist/commands/__tests__/surface-reload-target.test.js +0 -21
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.js +0 -379
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.js +0 -124
- package/dist/commands/memory/__tests__/repository-root-lint.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/repository-root-lint.test.js +0 -148
- package/dist/commands/sys/__tests__/config-model-ladders.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/config-model-ladders.test.js +0 -114
- package/dist/commands/sys/__tests__/setup-core.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/setup-core.test.js +0 -45
- package/dist/commands/sys/__tests__/sync-project-guidance.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/sync-project-guidance.test.js +0 -244
- package/dist/core/__tests__/bash-guard.test.d.ts +0 -1
- package/dist/core/__tests__/bash-guard.test.js +0 -190
- package/dist/core/__tests__/boot-fault-attempt.test.d.ts +0 -1
- package/dist/core/__tests__/boot-fault-attempt.test.js +0 -105
- package/dist/core/__tests__/boot.test.d.ts +0 -1
- package/dist/core/__tests__/boot.test.js +0 -274
- package/dist/core/__tests__/branded-host-concurrency.test.d.ts +0 -1
- package/dist/core/__tests__/branded-host-concurrency.test.js +0 -72
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +0 -75
- package/dist/core/__tests__/broker-launch-candidates.test.d.ts +0 -1
- package/dist/core/__tests__/broker-launch-candidates.test.js +0 -311
- package/dist/core/__tests__/broker-preflight.test.d.ts +0 -1
- package/dist/core/__tests__/broker-preflight.test.js +0 -95
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.d.ts +0 -1
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.js +0 -82
- package/dist/core/__tests__/broker-turn-admission.test.d.ts +0 -1
- package/dist/core/__tests__/broker-turn-admission.test.js +0 -44
- package/dist/core/__tests__/canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-db-boundary.test.js +0 -46
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +0 -710
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.js +0 -310
- package/dist/core/__tests__/canvas-inbox-watcher.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher.test.js +0 -397
- package/dist/core/__tests__/canvas.test.d.ts +0 -1
- package/dist/core/__tests__/canvas.test.js +0 -138
- package/dist/core/__tests__/child-death-wake.test.d.ts +0 -1
- package/dist/core/__tests__/child-death-wake.test.js +0 -153
- package/dist/core/__tests__/cli-help-contract.test.d.ts +0 -1
- package/dist/core/__tests__/cli-help-contract.test.js +0 -152
- package/dist/core/__tests__/close.test.d.ts +0 -1
- package/dist/core/__tests__/close.test.js +0 -284
- package/dist/core/__tests__/collectible.test.d.ts +0 -1
- package/dist/core/__tests__/collectible.test.js +0 -89
- package/dist/core/__tests__/config-change-delta.test.d.ts +0 -1
- package/dist/core/__tests__/config-change-delta.test.js +0 -108
- package/dist/core/__tests__/context-intro.test.d.ts +0 -1
- package/dist/core/__tests__/context-intro.test.js +0 -123
- package/dist/core/__tests__/cron-armed-context-failure.test.d.ts +0 -1
- package/dist/core/__tests__/cron-armed-context-failure.test.js +0 -150
- package/dist/core/__tests__/cron-held-settlement.test.d.ts +0 -1
- package/dist/core/__tests__/cron-held-settlement.test.js +0 -240
- package/dist/core/__tests__/cron-node-sink-parked-root.test.d.ts +0 -1
- package/dist/core/__tests__/cron-node-sink-parked-root.test.js +0 -166
- package/dist/core/__tests__/cron-self-cancel-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/cron-self-cancel-delivery.test.js +0 -84
- package/dist/core/__tests__/cron-timeout-descendants.test.d.ts +0 -1
- package/dist/core/__tests__/cron-timeout-descendants.test.js +0 -114
- package/dist/core/__tests__/daemon-boot.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-boot.test.js +0 -422
- package/dist/core/__tests__/daemon-wedge.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-wedge.test.js +0 -106
- package/dist/core/__tests__/dead-node-policy-table.test.d.ts +0 -1
- package/dist/core/__tests__/dead-node-policy-table.test.js +0 -77
- package/dist/core/__tests__/events-contract.test.d.ts +0 -1
- package/dist/core/__tests__/events-contract.test.js +0 -76
- package/dist/core/__tests__/extension-abort.test.d.ts +0 -1
- package/dist/core/__tests__/extension-abort.test.js +0 -21
- package/dist/core/__tests__/fault-classifier.test.d.ts +0 -1
- package/dist/core/__tests__/fault-classifier.test.js +0 -138
- package/dist/core/__tests__/fixtures/api-server-host.d.ts +0 -1
- package/dist/core/__tests__/fixtures/api-server-host.js +0 -47
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.js +0 -34
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.js +0 -32
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +0 -347
- package/dist/core/__tests__/fixtures/fake-engine.js +0 -1509
- package/dist/core/__tests__/fixtures/fake-pi-host.d.ts +0 -2
- package/dist/core/__tests__/fixtures/fake-pi-host.js +0 -311
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.d.ts +0 -1
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.js +0 -75
- package/dist/core/__tests__/fixtures/metadata-migration-race.d.ts +0 -1
- package/dist/core/__tests__/fixtures/metadata-migration-race.js +0 -49
- package/dist/core/__tests__/focuses.test.d.ts +0 -1
- package/dist/core/__tests__/focuses.test.js +0 -113
- package/dist/core/__tests__/fs-utils.test.d.ts +0 -1
- package/dist/core/__tests__/fs-utils.test.js +0 -50
- package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -43
- package/dist/core/__tests__/helpers/broker-clients.js +0 -174
- package/dist/core/__tests__/helpers/fleet.d.ts +0 -12
- package/dist/core/__tests__/helpers/fleet.js +0 -50
- package/dist/core/__tests__/helpers/harness.d.ts +0 -124
- package/dist/core/__tests__/helpers/harness.js +0 -806
- package/dist/core/__tests__/helpers/viewer-panes.d.ts +0 -12
- package/dist/core/__tests__/helpers/viewer-panes.js +0 -133
- package/dist/core/__tests__/history-inbox.test.d.ts +0 -1
- package/dist/core/__tests__/history-inbox.test.js +0 -121
- package/dist/core/__tests__/human-action-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/human-action-delivery.test.js +0 -162
- package/dist/core/__tests__/human-actions.test.d.ts +0 -1
- package/dist/core/__tests__/human-actions.test.js +0 -120
- package/dist/core/__tests__/inline-memory-refs.test.d.ts +0 -1
- package/dist/core/__tests__/inline-memory-refs.test.js +0 -225
- package/dist/core/__tests__/integration/broker-fork-seam.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-fork-seam.test.js +0 -193
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.js +0 -750
- package/dist/core/__tests__/integration/broker-snapshot-history.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-snapshot-history.test.js +0 -288
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.js +0 -103
- package/dist/core/__tests__/integration/command-plugins.test.d.ts +0 -1
- package/dist/core/__tests__/integration/command-plugins.test.js +0 -1200
- package/dist/core/__tests__/integration/deferred-no-wake.test.d.ts +0 -1
- package/dist/core/__tests__/integration/deferred-no-wake.test.js +0 -610
- package/dist/core/__tests__/integration/flagship-lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/flagship-lifecycle.test.js +0 -264
- package/dist/core/__tests__/integration/fresh-home-commands.test.d.ts +0 -1
- package/dist/core/__tests__/integration/fresh-home-commands.test.js +0 -49
- package/dist/core/__tests__/integration/git-optional-locks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/git-optional-locks.test.js +0 -81
- package/dist/core/__tests__/integration/host-teardown-process-group.test.d.ts +0 -1
- package/dist/core/__tests__/integration/host-teardown-process-group.test.js +0 -480
- package/dist/core/__tests__/integration/lifecycle-hooks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/lifecycle-hooks.test.js +0 -498
- package/dist/core/__tests__/integration/live-mutation-verbs.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation-verbs.test.js +0 -180
- package/dist/core/__tests__/integration/live-mutation.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation.test.js +0 -173
- package/dist/core/__tests__/integration/plugin-revalidate.test.d.ts +0 -1
- package/dist/core/__tests__/integration/plugin-revalidate.test.js +0 -359
- package/dist/core/__tests__/integration/profile-pause.test.d.ts +0 -1
- package/dist/core/__tests__/integration/profile-pause.test.js +0 -115
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.js +0 -151
- package/dist/core/__tests__/integration/revive.test.d.ts +0 -1
- package/dist/core/__tests__/integration/revive.test.js +0 -615
- package/dist/core/__tests__/integration/spawn-root.test.d.ts +0 -1
- package/dist/core/__tests__/integration/spawn-root.test.js +0 -536
- package/dist/core/__tests__/integration/subscription-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/integration/subscription-delivery.test.js +0 -132
- package/dist/core/__tests__/integration/tmux-surface.test.d.ts +0 -1
- package/dist/core/__tests__/integration/tmux-surface.test.js +0 -330
- package/dist/core/__tests__/integration/worktree-land.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-land.test.js +0 -607
- package/dist/core/__tests__/integration/worktree-reap.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-reap.test.js +0 -842
- package/dist/core/__tests__/kickoff.test.d.ts +0 -1
- package/dist/core/__tests__/kickoff.test.js +0 -196
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.js +0 -62
- package/dist/core/__tests__/lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle.test.js +0 -176
- package/dist/core/__tests__/live-lifecycle-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/live-lifecycle-prompt.test.js +0 -63
- package/dist/core/__tests__/memory-resolver-precedence.test.d.ts +0 -1
- package/dist/core/__tests__/memory-resolver-precedence.test.js +0 -228
- package/dist/core/__tests__/migration.test.d.ts +0 -1
- package/dist/core/__tests__/migration.test.js +0 -946
- package/dist/core/__tests__/model-pin-durability.test.d.ts +0 -1
- package/dist/core/__tests__/model-pin-durability.test.js +0 -195
- package/dist/core/__tests__/model-routes-config.test.d.ts +0 -1
- package/dist/core/__tests__/model-routes-config.test.js +0 -150
- package/dist/core/__tests__/nested-store-discovery.test.d.ts +0 -1
- package/dist/core/__tests__/nested-store-discovery.test.js +0 -89
- package/dist/core/__tests__/node-outcome.test.d.ts +0 -1
- package/dist/core/__tests__/node-outcome.test.js +0 -246
- package/dist/core/__tests__/on-read-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-crouter-home-fence.test.js +0 -66
- package/dist/core/__tests__/on-read-dedup-resume.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-dedup-resume.test.js +0 -132
- package/dist/core/__tests__/on-read-nested-store.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-nested-store.test.js +0 -135
- package/dist/core/__tests__/parse-argv-stdin-secret.test.d.ts +0 -1
- package/dist/core/__tests__/parse-argv-stdin-secret.test.js +0 -68
- package/dist/core/__tests__/passive-subscription.test.d.ts +0 -1
- package/dist/core/__tests__/passive-subscription.test.js +0 -120
- package/dist/core/__tests__/pid-identity-match.test.d.ts +0 -1
- package/dist/core/__tests__/pid-identity-match.test.js +0 -145
- package/dist/core/__tests__/pid-zombie.test.d.ts +0 -1
- package/dist/core/__tests__/pid-zombie.test.js +0 -42
- package/dist/core/__tests__/plugin-kinds.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-kinds.test.js +0 -182
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.js +0 -43
- package/dist/core/__tests__/plugin-page-components.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-page-components.test.js +0 -159
- package/dist/core/__tests__/preview-mirror-cap.test.d.ts +0 -1
- package/dist/core/__tests__/preview-mirror-cap.test.js +0 -53
- package/dist/core/__tests__/preview-registry-sync.test.d.ts +0 -1
- package/dist/core/__tests__/preview-registry-sync.test.js +0 -107
- package/dist/core/__tests__/profile-project-memory-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/profile-project-memory-delivery.test.js +0 -644
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.d.ts +0 -1
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.js +0 -91
- package/dist/core/__tests__/prune.test.d.ts +0 -1
- package/dist/core/__tests__/prune.test.js +0 -243
- package/dist/core/__tests__/push-final-guard.test.d.ts +0 -1
- package/dist/core/__tests__/push-final-guard.test.js +0 -191
- package/dist/core/__tests__/relaunch-root.test.d.ts +0 -1
- package/dist/core/__tests__/relaunch-root.test.js +0 -249
- package/dist/core/__tests__/remote-canvas-target.test.d.ts +0 -1
- package/dist/core/__tests__/remote-canvas-target.test.js +0 -93
- package/dist/core/__tests__/repository-association.test.d.ts +0 -1
- package/dist/core/__tests__/repository-association.test.js +0 -153
- package/dist/core/__tests__/repository-root-identity.test.d.ts +0 -1
- package/dist/core/__tests__/repository-root-identity.test.js +0 -223
- package/dist/core/__tests__/respawn-throttle.test.d.ts +0 -1
- package/dist/core/__tests__/respawn-throttle.test.js +0 -20
- package/dist/core/__tests__/review-model-floor.test.d.ts +0 -1
- package/dist/core/__tests__/review-model-floor.test.js +0 -83
- package/dist/core/__tests__/revive-all.test.d.ts +0 -1
- package/dist/core/__tests__/revive-all.test.js +0 -157
- package/dist/core/__tests__/revive-capacity.test.d.ts +0 -1
- package/dist/core/__tests__/revive-capacity.test.js +0 -184
- package/dist/core/__tests__/revive-parked-fresh.test.d.ts +0 -1
- package/dist/core/__tests__/revive-parked-fresh.test.js +0 -176
- package/dist/core/__tests__/scope-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/scope-crouter-home-fence.test.js +0 -55
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +0 -262
- package/dist/core/__tests__/seam/broker-attach-stream.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-stream.test.js +0 -176
- package/dist/core/__tests__/seam/broker-cap-freeze.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-cap-freeze.test.js +0 -155
- package/dist/core/__tests__/seam/broker-crash-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-crash-teardown.test.js +0 -131
- package/dist/core/__tests__/seam/broker-pane-resolution.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-pane-resolution.test.js +0 -204
- package/dist/core/__tests__/seam/broker-provider-retry.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-provider-retry.test.js +0 -686
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.js +0 -82
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.js +0 -50
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.js +0 -138
- package/dist/core/__tests__/seam/dormancy-release.test.d.ts +0 -1
- package/dist/core/__tests__/seam/dormancy-release.test.js +0 -516
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.js +0 -65
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.d.ts +0 -1
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.js +0 -84
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.d.ts +0 -1
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.js +0 -160
- package/dist/core/__tests__/seam/node-outcome-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/node-outcome-delivery.test.js +0 -177
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.d.ts +0 -1
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.js +0 -31
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.d.ts +0 -1
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.js +0 -60
- package/dist/core/__tests__/seam/self-close-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/self-close-teardown.test.js +0 -49
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.d.ts +0 -1
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.js +0 -100
- package/dist/core/__tests__/secrets.test.d.ts +0 -1
- package/dist/core/__tests__/secrets.test.js +0 -49
- package/dist/core/__tests__/self-update.test.d.ts +0 -1
- package/dist/core/__tests__/self-update.test.js +0 -46
- package/dist/core/__tests__/session-branch.test.d.ts +0 -1
- package/dist/core/__tests__/session-branch.test.js +0 -61
- package/dist/core/__tests__/session-cycles.test.d.ts +0 -1
- package/dist/core/__tests__/session-cycles.test.js +0 -133
- package/dist/core/__tests__/session-model.test.d.ts +0 -1
- package/dist/core/__tests__/session-model.test.js +0 -111
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.d.ts +0 -1
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +0 -71
- package/dist/core/__tests__/stdin-body-no-discard.test.d.ts +0 -1
- package/dist/core/__tests__/stdin-body-no-discard.test.js +0 -33
- package/dist/core/__tests__/stdout-errors.test.d.ts +0 -1
- package/dist/core/__tests__/stdout-errors.test.js +0 -16
- package/dist/core/__tests__/stop-guard.test.d.ts +0 -1
- package/dist/core/__tests__/stop-guard.test.js +0 -237
- package/dist/core/__tests__/stream-watchdog.test.d.ts +0 -1
- package/dist/core/__tests__/stream-watchdog.test.js +0 -154
- package/dist/core/__tests__/subscription-pool-credential-guard.test.d.ts +0 -1
- package/dist/core/__tests__/subscription-pool-credential-guard.test.js +0 -95
- package/dist/core/__tests__/tmux-driver-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/tmux-driver-boundary.test.js +0 -50
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.d.ts +0 -1
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.js +0 -54
- package/dist/core/__tests__/worktree-landing.test.d.ts +0 -1
- package/dist/core/__tests__/worktree-landing.test.js +0 -11
- package/dist/core/__tests__/yield-ensures-daemon.test.d.ts +0 -1
- package/dist/core/__tests__/yield-ensures-daemon.test.js +0 -55
- package/dist/core/broker-client/__tests__/transport-relay.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-relay.test.js +0 -214
- package/dist/core/broker-client/__tests__/transport-socket.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-socket.test.js +0 -73
- package/dist/core/canvas/__tests__/attention.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/attention.test.js +0 -83
- package/dist/core/canvas/__tests__/history-transcript.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/history-transcript.test.js +0 -102
- package/dist/core/canvas/__tests__/remote-canvas-source.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-canvas-source.test.js +0 -328
- package/dist/core/canvas/__tests__/remote-transport.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-transport.test.js +0 -97
- package/dist/core/canvas/__tests__/render-remote.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/render-remote.test.js +0 -243
- package/dist/core/canvas/__tests__/session-window.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/session-window.test.js +0 -70
- package/dist/core/feed/__tests__/inbox-migrate.test.d.ts +0 -1
- package/dist/core/feed/__tests__/inbox-migrate.test.js +0 -49
- package/dist/core/human/__tests__/page-catalog.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-catalog.test.js +0 -20
- package/dist/core/human/__tests__/page-html-markdown.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-html-markdown.test.js +0 -48
- package/dist/core/human/__tests__/page.test.d.ts +0 -1
- package/dist/core/human/__tests__/page.test.js +0 -92
- package/dist/core/keybindings/__tests__/resolve.test.d.ts +0 -1
- package/dist/core/keybindings/__tests__/resolve.test.js +0 -171
- package/dist/core/profiles/__tests__/env-store.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/env-store.test.js +0 -99
- package/dist/core/profiles/__tests__/fuzzy-match.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/fuzzy-match.test.js +0 -51
- package/dist/core/profiles/__tests__/root-profile.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/root-profile.test.js +0 -59
- package/dist/core/review/__tests__/capture-origin.test.d.ts +0 -1
- package/dist/core/review/__tests__/capture-origin.test.js +0 -150
- package/dist/core/review/__tests__/comments.test.d.ts +0 -1
- package/dist/core/review/__tests__/comments.test.js +0 -116
- package/dist/core/review/__tests__/remap.test.d.ts +0 -1
- package/dist/core/review/__tests__/remap.test.js +0 -177
- package/dist/core/review/__tests__/stage-identity.test.d.ts +0 -1
- package/dist/core/review/__tests__/stage-identity.test.js +0 -150
- package/dist/core/runtime/__tests__/engine-route.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/engine-route.test.js +0 -36
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.js +0 -45
- package/dist/core/runtime/__tests__/node-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/node-env.test.js +0 -73
- package/dist/core/runtime/__tests__/spawn-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/spawn-env.test.js +0 -259
- package/dist/core/substrate/__tests__/surface-match-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-command.test.js +0 -89
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.js +0 -28
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.js +0 -92
- package/dist/daemon/__tests__/autostart-storm.test.d.ts +0 -1
- package/dist/daemon/__tests__/autostart-storm.test.js +0 -128
- package/dist/daemon/__tests__/broker-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/broker-ownership.test.js +0 -25
- package/dist/daemon/__tests__/daemon-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/daemon-ownership.test.js +0 -27
- package/dist/daemon/__tests__/helpers/source-daemon.d.ts +0 -30
- package/dist/daemon/__tests__/helpers/source-daemon.js +0 -176
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.js +0 -83
- package/dist/daemon/__tests__/integration/migration-startup.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/migration-startup.test.js +0 -127
- package/dist/daemon/__tests__/node-deadline-lane.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-deadline-lane.test.js +0 -77
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.js +0 -146
- package/dist/daemon/__tests__/node-outcome-delivery.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-delivery.test.js +0 -116
- package/dist/daemon/__tests__/reconciler-signature.test.d.ts +0 -1
- package/dist/daemon/__tests__/reconciler-signature.test.js +0 -37
- package/dist/daemon/__tests__/subtree-filter-freshness.test.d.ts +0 -1
- package/dist/daemon/__tests__/subtree-filter-freshness.test.js +0 -63
- package/dist/daemon/__tests__/thaw-order.test.d.ts +0 -1
- package/dist/daemon/__tests__/thaw-order.test.js +0 -55
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.js +0 -58
- package/dist/daemon/api/__tests__/broker-settle-park.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/broker-settle-park.test.js +0 -175
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.js +0 -216
- package/dist/daemon/api/__tests__/error-seam.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/error-seam.test.js +0 -83
- package/dist/daemon/api/__tests__/model-config.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/model-config.test.js +0 -73
- package/dist/daemon/api/__tests__/node-create-description.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-create-description.test.js +0 -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,461 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
//
|
|
9
|
-
// Rise with the tide: we do NOT reimplement or fork pi's bash tool. We call
|
|
10
|
-
// pi's own `createBashToolDefinition()` (schema, description, rendering,
|
|
11
|
-
// truncation, streaming throttle — ALL of it) and supply only a custom
|
|
12
|
-
// `BashOperations` exec backend. Future pi improvements to the bash tool flow
|
|
13
|
-
// through automatically; if pi ever changes the BashOperations interface, tsc
|
|
14
|
-
// breaks loudly at upgrade instead of silently drifting.
|
|
15
|
-
//
|
|
16
|
-
// Why file-backed, not pipes: the builtin streams from a direct child over
|
|
17
|
-
// pipes. A backgrounded orphan writing to a dead pipe after pi dies gets
|
|
18
|
-
// SIGPIPE, and its exit code is observable by nobody. So every command is
|
|
19
|
-
// file-backed from birth via a tiny detached supervisor (a `bash -c` process
|
|
20
|
-
// group leader) that redirects the real command's stdout+stderr to a log
|
|
21
|
-
// file through a bounded collector and records its exit code to a sentinel
|
|
22
|
-
// file — both readable and tail-able, independent of whether this pi process
|
|
23
|
-
// is even still alive.
|
|
24
|
-
//
|
|
25
|
-
// Deviation from upstream: this backend pins `bash` as the shell (upstream
|
|
26
|
-
// consults user shell config via non-exported helpers). Acceptable — crtr's
|
|
27
|
-
// agents are bash-contract anyway.
|
|
28
|
-
import { envBashAutoBgDeadlineMs, envBashValveMs, envNodeId } from '../shared/env.js';
|
|
29
|
-
import { spawn } from 'node:child_process';
|
|
30
|
-
import { closeSync, existsSync, mkdirSync, openSync, readFileSync, readSync, rmSync, statSync, writeFileSync, } from 'node:fs';
|
|
31
|
-
import { homedir } from 'node:os';
|
|
32
|
-
import { dirname } from 'node:path';
|
|
33
|
-
import { performance } from 'node:perf_hooks';
|
|
34
|
-
import { backgroundBashJob, bashJobPaths, cancelBashJobProcessTree, formatBashElapsed, newBashJobId, normalizeBashJobPurpose, readBashNiceness, writeJobDeadlineMs } from '../core/bash-jobs.js';
|
|
35
|
-
import { bashCommandRefusal } from '../core/bash-guard.js';
|
|
36
|
-
import { capturePidIdentities } from '../core/canvas/pid.js';
|
|
37
|
-
import { readConfig } from '../core/config.js';
|
|
38
|
-
import { PREVIEW_RESULT_PATH_ENV, previewResultPath } from '../core/preview-result-path.js';
|
|
39
|
-
import { resolveAdmittedHostCommand } from '../core/runtime/spawn-env.js';
|
|
40
|
-
import { Type } from 'typebox';
|
|
41
|
-
import { createBashToolDefinition } from '@earendil-works/pi-coding-agent';
|
|
42
|
-
// Deadline — 5 minutes by default, overridable via CRTR_BASH_VALVE_MS
|
|
43
|
-
// (undocumented; test-only seam so the E2E valve check doesn't sleep 5m).
|
|
44
|
-
const POLL_MS = 200;
|
|
45
|
-
function resolveValveMs() {
|
|
46
|
-
return envBashValveMs();
|
|
47
|
-
}
|
|
48
|
-
export const MAX_BACKGROUND_BASH_LOG_BYTES = 10 * 1024 * 1024;
|
|
49
|
-
export const BACKGROUND_BASH_LOG_TRUNCATION_MARKER = '\n[background bash job output truncated at 10 MiB; remaining output discarded]\n';
|
|
50
|
-
// This process owns one bounded prefix of the command stream. It keeps
|
|
51
|
-
// draining after the cap so the command never sees a closed pipe/SIGPIPE, and
|
|
52
|
-
// uses synchronous fixed-size stdin chunks plus direct file writes so neither
|
|
53
|
-
// the collector nor the log can grow without bound.
|
|
54
|
-
const LOG_COLLECTOR_SCRIPT = [
|
|
55
|
-
'const fs = require("node:fs");',
|
|
56
|
-
`const cap = ${MAX_BACKGROUND_BASH_LOG_BYTES};`,
|
|
57
|
-
`const marker = Buffer.from(${JSON.stringify(BACKGROUND_BASH_LOG_TRUNCATION_MARKER)});`,
|
|
58
|
-
'const prefixCap = cap - marker.length;',
|
|
59
|
-
'const fd = fs.openSync(process.argv[1], "w");',
|
|
60
|
-
'let written = 0;',
|
|
61
|
-
'let truncated = false;',
|
|
62
|
-
'process.stdin.on("data", (chunk) => {',
|
|
63
|
-
' if (truncated) return;',
|
|
64
|
-
' const available = prefixCap - written;',
|
|
65
|
-
' if (available > 0) {',
|
|
66
|
-
' const prefix = chunk.subarray(0, available);',
|
|
67
|
-
' fs.writeSync(fd, prefix);',
|
|
68
|
-
' written += prefix.length;',
|
|
69
|
-
' if (prefix.length === chunk.length) return;',
|
|
70
|
-
' }',
|
|
71
|
-
' fs.writeSync(fd, marker);',
|
|
72
|
-
' truncated = true;',
|
|
73
|
-
'});',
|
|
74
|
-
'process.stdin.on("end", () => fs.closeSync(fd));',
|
|
75
|
-
].join(' ');
|
|
76
|
-
// The detached supervisor owns the command and its bounded stream collector.
|
|
77
|
-
// Positional argv (never interpolated into the script — the command text lives
|
|
78
|
-
// only in cmd.sh):
|
|
79
|
-
// $1 cmd.sh $2 job.log $3 job.exit $4 job.run
|
|
80
|
-
// $5 job.done $6 job.bg $7 jobId $8 nodeId $9 shell path
|
|
81
|
-
// ${10} niceness ${11} node path
|
|
82
|
-
//
|
|
83
|
-
// `--` before the paths is a dummy $0 (a standard `bash -c script -- args`
|
|
84
|
-
// idiom) so the real payload lands at $1 onward.
|
|
85
|
-
//
|
|
86
|
-
// The elapsed rendering mirrors formatBashElapsed() in core/bash-jobs.ts
|
|
87
|
-
// (`12s` / `3m 40s` / `1h 04m`) so the completion message reads the same as the
|
|
88
|
-
// handoff notice; it measures TOTAL runtime, foreground portion included.
|
|
89
|
-
// Only the command is niced (at ${10}, the node's own niceness); the supervisor
|
|
90
|
-
// that reports its finish runs at normal priority so completion notices stay
|
|
91
|
-
// prompt.
|
|
92
|
-
const SUPERVISOR_SCRIPT = [
|
|
93
|
-
'SECONDS=0',
|
|
94
|
-
'n=$(command -v nice)',
|
|
95
|
-
'${n:+"$n" -n "${10}"} "${9}" "$1" 2>&1 | "${11}" -e ' + JSON.stringify(LOG_COLLECTOR_SCRIPT) + ' "$2"',
|
|
96
|
-
'ec=${PIPESTATUS[0]}',
|
|
97
|
-
'd=$SECONDS',
|
|
98
|
-
'echo "$ec" > "$3"',
|
|
99
|
-
'if [ "$d" -lt 60 ]; then',
|
|
100
|
-
' el="${d}s"',
|
|
101
|
-
'elif [ "$d" -lt 3600 ]; then',
|
|
102
|
-
' el="$((d / 60))m $(printf "%02d" "$((d % 60))")s"',
|
|
103
|
-
'else',
|
|
104
|
-
' el="$((d / 3600))h $(printf "%02d" "$((d / 60 % 60))")m"',
|
|
105
|
-
'fi',
|
|
106
|
-
'if mv "$4" "$5" 2>/dev/null; then',
|
|
107
|
-
' :',
|
|
108
|
-
'elif [ -f "$6" ]; then',
|
|
109
|
-
' crtr node message send "Background bash job $7 finished (exit $ec) after $el. Log: $2 Command: $1" --to "$8" --tier urgent || true',
|
|
110
|
-
'fi',
|
|
111
|
-
].join('\n');
|
|
112
|
-
function makeJobPaths(contextDir) {
|
|
113
|
-
return bashJobPaths(contextDir, newBashJobId());
|
|
114
|
-
}
|
|
115
|
-
const liveForegroundJobs = new Set();
|
|
116
|
-
let terminationHandoffInstalled = false;
|
|
117
|
-
/** The broker is about to exit. Persist every foreground handoff synchronously
|
|
118
|
-
* before pi's own termination listener aborts its active tool calls. */
|
|
119
|
-
function backgroundLiveJobsForTermination() {
|
|
120
|
-
for (const paths of [...liveForegroundJobs]) {
|
|
121
|
-
try {
|
|
122
|
-
backgroundBashJob(paths);
|
|
123
|
-
liveForegroundJobs.delete(paths);
|
|
124
|
-
}
|
|
125
|
-
catch (err) {
|
|
126
|
-
process.stderr.write(`crtr: failed to background bash job ${paths.jobId} during broker termination: ${err.message}\n`);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
function installTerminationHandoff() {
|
|
131
|
-
if (terminationHandoffInstalled)
|
|
132
|
-
return;
|
|
133
|
-
terminationHandoffInstalled = true;
|
|
134
|
-
process.prependListener('SIGTERM', backgroundLiveJobsForTermination);
|
|
135
|
-
if (process.platform !== 'win32')
|
|
136
|
-
process.prependListener('SIGHUP', backgroundLiveJobsForTermination);
|
|
137
|
-
}
|
|
138
|
-
const TAIL_CHUNK_BYTES = 64 * 1024;
|
|
139
|
-
/** Read bytes appended to `path` since `offset`, feed them to onData, return
|
|
140
|
-
* the new offset. Best-effort — a not-yet-created log file is not an error. */
|
|
141
|
-
function tailOnce(path, offset, onData) {
|
|
142
|
-
let stat;
|
|
143
|
-
try {
|
|
144
|
-
stat = statSync(path);
|
|
145
|
-
}
|
|
146
|
-
catch {
|
|
147
|
-
return offset;
|
|
148
|
-
}
|
|
149
|
-
if (stat.size <= offset)
|
|
150
|
-
return offset;
|
|
151
|
-
const fd = openSync(path, 'r');
|
|
152
|
-
try {
|
|
153
|
-
while (offset < stat.size) {
|
|
154
|
-
const length = Math.min(TAIL_CHUNK_BYTES, stat.size - offset);
|
|
155
|
-
const buf = Buffer.allocUnsafe(length);
|
|
156
|
-
const bytesRead = readSync(fd, buf, 0, length, offset);
|
|
157
|
-
if (bytesRead === 0)
|
|
158
|
-
break;
|
|
159
|
-
onData(buf.subarray(0, bytesRead));
|
|
160
|
-
offset += bytesRead;
|
|
161
|
-
}
|
|
162
|
-
return offset;
|
|
163
|
-
}
|
|
164
|
-
finally {
|
|
165
|
-
closeSync(fd);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
function cleanupJobDir(dir) {
|
|
169
|
-
try {
|
|
170
|
-
rmSync(dir, { recursive: true, force: true });
|
|
171
|
-
}
|
|
172
|
-
catch {
|
|
173
|
-
/* best-effort — worst case a stray dir under context/jobs/ */
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
function readExitCode(path) {
|
|
177
|
-
try {
|
|
178
|
-
const raw = readFileSync(path, 'utf8').trim();
|
|
179
|
-
const n = Number(raw);
|
|
180
|
-
return Number.isFinite(n) ? n : null;
|
|
181
|
-
}
|
|
182
|
-
catch {
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
/** A node can legitimately remove its own merged worktree. Never recreate that
|
|
187
|
-
* path: it would look like a valid checkout but no longer be one. Run later
|
|
188
|
-
* commands from a durable directory instead, and make the changed semantics
|
|
189
|
-
* explicit in the tool output. */
|
|
190
|
-
function resolveExecutionCwd(cwd) {
|
|
191
|
-
try {
|
|
192
|
-
if (statSync(cwd).isDirectory())
|
|
193
|
-
return { cwd };
|
|
194
|
-
}
|
|
195
|
-
catch {
|
|
196
|
-
// A deleted worktree makes child_process.spawn fail with bare ENOENT.
|
|
197
|
-
}
|
|
198
|
-
const fallback = homedir();
|
|
199
|
-
return {
|
|
200
|
-
cwd: fallback,
|
|
201
|
-
warning: `[working directory no longer exists: ${cwd}; running from ${fallback}]\n`,
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
/** The valve's BashOperations backend. Each tool execution closes over its own
|
|
205
|
-
* `takePurpose` and its own preview-result path, so concurrent calls cannot
|
|
206
|
-
* exchange labels or result mirrors. The purpose is consumed even when the
|
|
207
|
-
* command is invalid or refused, leaving no state to leak later. */
|
|
208
|
-
export function createValveOperations(nodeId, contextDir, takePurpose = () => null, previewPath) {
|
|
209
|
-
return {
|
|
210
|
-
exec: (command, cwd, { onData, signal, timeout, env }) => {
|
|
211
|
-
return new Promise((resolve, reject) => {
|
|
212
|
-
const purpose = takePurpose();
|
|
213
|
-
if (signal?.aborted) {
|
|
214
|
-
reject(new Error('aborted'));
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
const refusal = bashCommandRefusal(command, cwd);
|
|
218
|
-
if (refusal !== null) {
|
|
219
|
-
reject(new Error(refusal));
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
const paths = makeJobPaths(contextDir);
|
|
223
|
-
mkdirSync(paths.dir, { recursive: true });
|
|
224
|
-
writeFileSync(paths.cmdSh, command);
|
|
225
|
-
writeFileSync(paths.jobLog, '');
|
|
226
|
-
writeFileSync(paths.jobRun, '');
|
|
227
|
-
if (purpose !== null)
|
|
228
|
-
writeFileSync(paths.jobPurpose, purpose);
|
|
229
|
-
let offset = 0;
|
|
230
|
-
let settled = false;
|
|
231
|
-
let pgid;
|
|
232
|
-
let pgidIdentity;
|
|
233
|
-
const startedAt = performance.now();
|
|
234
|
-
const valveMs = resolveValveMs();
|
|
235
|
-
let interval;
|
|
236
|
-
const teardown = () => {
|
|
237
|
-
if (interval)
|
|
238
|
-
clearInterval(interval);
|
|
239
|
-
if (signal)
|
|
240
|
-
signal.removeEventListener('abort', onAbort);
|
|
241
|
-
liveForegroundJobs.delete(paths);
|
|
242
|
-
};
|
|
243
|
-
const finish = (act) => {
|
|
244
|
-
if (settled)
|
|
245
|
-
return;
|
|
246
|
-
settled = true;
|
|
247
|
-
teardown();
|
|
248
|
-
act();
|
|
249
|
-
};
|
|
250
|
-
function finishBackground(auto = false) {
|
|
251
|
-
const elapsed = formatBashElapsed(performance.now() - startedAt);
|
|
252
|
-
// An AUTO handoff (the agent did not choose to background this) is a
|
|
253
|
-
// runaway risk: arm a cancel deadline the daemon enforces, and tell
|
|
254
|
-
// the agent to claim it or lose it. A deliberate handoff runs to
|
|
255
|
-
// completion as before — no deadline file, so the daemon skips it.
|
|
256
|
-
let deadlineNotice = '';
|
|
257
|
-
if (auto) {
|
|
258
|
-
const deadlineMs = envBashAutoBgDeadlineMs();
|
|
259
|
-
writeJobDeadlineMs(paths, Date.now() + deadlineMs);
|
|
260
|
-
deadlineNotice =
|
|
261
|
-
`It will be CANCELED in ${formatBashElapsed(deadlineMs)} unless you claim it: ` +
|
|
262
|
-
`crtr node bash extend ${paths.jobId} --for <duration> (or --keep to run to completion). `;
|
|
263
|
-
}
|
|
264
|
-
const notice = `\n[backgrounded as job ${paths.jobId} after ${elapsed} in the foreground${auto ? ' (auto)' : ''}. ` +
|
|
265
|
-
deadlineNotice +
|
|
266
|
-
`It will interrupt you with a message when it exits. ` +
|
|
267
|
-
`Watch: tail -f ${paths.jobLog} ; stop: crtr node bash kill ${paths.jobId}]`;
|
|
268
|
-
onData(Buffer.from(notice));
|
|
269
|
-
finish(() => resolve({ exitCode: 0 }));
|
|
270
|
-
// Backgrounded — job dir persists (inspectable); no cleanup here.
|
|
271
|
-
}
|
|
272
|
-
function finishForeground() {
|
|
273
|
-
offset = tailOnce(paths.jobLog, offset, onData);
|
|
274
|
-
const exitCode = readExitCode(paths.jobExit);
|
|
275
|
-
finish(() => resolve({ exitCode }));
|
|
276
|
-
cleanupJobDir(paths.dir);
|
|
277
|
-
}
|
|
278
|
-
function requestBackground(auto = false) {
|
|
279
|
-
const state = backgroundBashJob(paths);
|
|
280
|
-
if (state === 'backgrounded' || state === 'already-backgrounded') {
|
|
281
|
-
finishBackground(auto);
|
|
282
|
-
return;
|
|
283
|
-
}
|
|
284
|
-
if (state === 'finished') {
|
|
285
|
-
finishForeground();
|
|
286
|
-
return;
|
|
287
|
-
}
|
|
288
|
-
finish(() => reject(new Error(`bash job ${paths.jobId} disappeared before it could be backgrounded`)));
|
|
289
|
-
cleanupJobDir(paths.dir);
|
|
290
|
-
}
|
|
291
|
-
function onAbort() {
|
|
292
|
-
offset = tailOnce(paths.jobLog, offset, onData);
|
|
293
|
-
if (existsSync(paths.jobBg)) {
|
|
294
|
-
finishBackground();
|
|
295
|
-
return;
|
|
296
|
-
}
|
|
297
|
-
// Once the command has written its exit code, let the supervisor
|
|
298
|
-
// finish the job.run → job.done transition before cleanup.
|
|
299
|
-
if (existsSync(paths.jobExit))
|
|
300
|
-
return;
|
|
301
|
-
if (pgid !== undefined && pgidIdentity !== undefined)
|
|
302
|
-
void cancelBashJobProcessTree(pgid, pgidIdentity);
|
|
303
|
-
finish(() => reject(new Error('aborted')));
|
|
304
|
-
cleanupJobDir(paths.dir);
|
|
305
|
-
}
|
|
306
|
-
if (signal)
|
|
307
|
-
signal.addEventListener('abort', onAbort, { once: true });
|
|
308
|
-
const execution = resolveExecutionCwd(cwd);
|
|
309
|
-
if (execution.warning)
|
|
310
|
-
onData(Buffer.from(execution.warning));
|
|
311
|
-
// The preview path reaches crtr through the environment, never through
|
|
312
|
-
// the command text: cmd.sh, job inspection, and the doc substrate's
|
|
313
|
-
// `command` surfaces all read that text as the agent's own words.
|
|
314
|
-
let childEnv = env ?? process.env;
|
|
315
|
-
if (previewPath !== undefined) {
|
|
316
|
-
mkdirSync(dirname(previewPath), { recursive: true });
|
|
317
|
-
// crtr APPENDS one JSONL record per invocation, so this call starts
|
|
318
|
-
// from an empty file: a path left behind by a call whose result event
|
|
319
|
-
// never arrived must not fold its records into this one's.
|
|
320
|
-
rmSync(previewPath, { force: true });
|
|
321
|
-
childEnv = { ...childEnv, [PREVIEW_RESULT_PATH_ENV]: previewPath };
|
|
322
|
-
}
|
|
323
|
-
const shellPath = resolveAdmittedHostCommand('bash', childEnv, execution.cwd);
|
|
324
|
-
const child = spawn(shellPath, ['-c', SUPERVISOR_SCRIPT, '--', paths.cmdSh, paths.jobLog, paths.jobExit, paths.jobRun, paths.jobDone, paths.jobBg, paths.jobId, nodeId, shellPath, String(readBashNiceness(contextDir)), process.execPath], {
|
|
325
|
-
cwd: execution.cwd,
|
|
326
|
-
detached: true,
|
|
327
|
-
stdio: 'ignore',
|
|
328
|
-
env: childEnv,
|
|
329
|
-
});
|
|
330
|
-
child.on('error', (err) => {
|
|
331
|
-
finish(() => reject(err));
|
|
332
|
-
cleanupJobDir(paths.dir);
|
|
333
|
-
});
|
|
334
|
-
pgid = child.pid;
|
|
335
|
-
// The detached supervisor starts this process tree. Its launch-time
|
|
336
|
-
// identity lets cancellation reject a stale PID that now belongs to an
|
|
337
|
-
// unrelated process; it is not a containment guarantee.
|
|
338
|
-
if (pgid !== undefined) {
|
|
339
|
-
pgidIdentity = capturePidIdentities([pgid])?.get(pgid);
|
|
340
|
-
if (pgidIdentity === undefined) {
|
|
341
|
-
try {
|
|
342
|
-
process.kill(-pgid, 'SIGKILL');
|
|
343
|
-
}
|
|
344
|
-
catch { /* the just-started supervisor already exited */ }
|
|
345
|
-
finish(() => reject(new Error(`bash job ${paths.jobId} started without a process identity`)));
|
|
346
|
-
cleanupJobDir(paths.dir);
|
|
347
|
-
return;
|
|
348
|
-
}
|
|
349
|
-
writeFileSync(paths.jobPgid, String(pgid));
|
|
350
|
-
writeFileSync(paths.jobPgidIdentity, pgidIdentity);
|
|
351
|
-
liveForegroundJobs.add(paths);
|
|
352
|
-
}
|
|
353
|
-
child.unref();
|
|
354
|
-
interval = setInterval(() => {
|
|
355
|
-
offset = tailOnce(paths.jobLog, offset, onData);
|
|
356
|
-
if (existsSync(paths.jobDone)) {
|
|
357
|
-
finishForeground();
|
|
358
|
-
return;
|
|
359
|
-
}
|
|
360
|
-
if (existsSync(paths.jobBg)) {
|
|
361
|
-
finishBackground();
|
|
362
|
-
return;
|
|
363
|
-
}
|
|
364
|
-
// job.exit is written before the supervisor claims job.done. Do not
|
|
365
|
-
// time out or delete the directory during that in-progress exit.
|
|
366
|
-
if (existsSync(paths.jobExit))
|
|
367
|
-
return;
|
|
368
|
-
const elapsedMs = performance.now() - startedAt;
|
|
369
|
-
if (timeout !== undefined && timeout > 0) {
|
|
370
|
-
if (elapsedMs >= timeout * 1000) {
|
|
371
|
-
if (pgid !== undefined && pgidIdentity !== undefined)
|
|
372
|
-
void cancelBashJobProcessTree(pgid, pgidIdentity);
|
|
373
|
-
finish(() => reject(new Error(`timeout:${timeout}`)));
|
|
374
|
-
cleanupJobDir(paths.dir);
|
|
375
|
-
}
|
|
376
|
-
return;
|
|
377
|
-
}
|
|
378
|
-
if (elapsedMs >= valveMs)
|
|
379
|
-
requestBackground(true);
|
|
380
|
-
}, POLL_MS);
|
|
381
|
-
});
|
|
382
|
-
},
|
|
383
|
-
};
|
|
384
|
-
}
|
|
385
|
-
// Extension
|
|
386
|
-
// `purpose` — the one line a person reads while a command runs
|
|
387
|
-
//
|
|
388
|
-
// An optional deviation from taking pi's definition verbatim, and the only one
|
|
389
|
-
// here. Everywhere crtr's output reaches a non-technical audience, the host has
|
|
390
|
-
// to render SOMETHING per step, and without this field its only material is the
|
|
391
|
-
// command — which yields "Running command" for an entire turn. The model is the
|
|
392
|
-
// only party that knows why it is running this, so it says so, in one clause,
|
|
393
|
-
// before the command streams.
|
|
394
|
-
//
|
|
395
|
-
// Declared FIRST so it arrives ahead of `command` in the argument stream: a host
|
|
396
|
-
// parsing partial JSON can show the label while the command is still being
|
|
397
|
-
// written, rather than after the call is complete and about to finish.
|
|
398
|
-
//
|
|
399
|
-
// The command execution path ignores it as shell input — this remains a
|
|
400
|
-
// labelling channel, not an execution parameter. The valve only persists the
|
|
401
|
-
// label beside a background job. Optional, so a model that omits it behaves
|
|
402
|
-
// exactly as before.
|
|
403
|
-
//
|
|
404
|
-
// Upstream ask: pi's own bash tool should carry this (Claude Code's bash tool
|
|
405
|
-
// has shipped an equivalent `description` field for years). Until it does, the
|
|
406
|
-
// field is re-declared here on top of pi's schema rather than forked into it.
|
|
407
|
-
const PURPOSE_DESCRIPTION = [
|
|
408
|
-
'One short clause naming what this step is FOR, in the words of the person you',
|
|
409
|
-
'are working for — "Reading the Acme thread", not "Fetching emails" and never',
|
|
410
|
-
'"Running GMAIL_FETCH_EMAILS". A person reads this while the command runs; it',
|
|
411
|
-
'is the only thing they see of this step. Under about eight words. Omit it for',
|
|
412
|
-
'steps that only touch your own scratch work.',
|
|
413
|
-
].join(' ');
|
|
414
|
-
/**
|
|
415
|
-
* Prepend an optional `purpose` to pi's bash schema, carrying pi's own property
|
|
416
|
-
* definitions through verbatim — so a future upstream change to the `command`
|
|
417
|
-
* or `timeout` wording still reaches the model, and this file owns exactly one
|
|
418
|
-
* field.
|
|
419
|
-
*/
|
|
420
|
-
function withPurpose(definition) {
|
|
421
|
-
return {
|
|
422
|
-
...definition,
|
|
423
|
-
parameters: Type.Object({
|
|
424
|
-
purpose: Type.Optional(Type.String({ description: PURPOSE_DESCRIPTION })),
|
|
425
|
-
...definition.parameters.properties,
|
|
426
|
-
}),
|
|
427
|
-
};
|
|
428
|
-
}
|
|
429
|
-
/** Build the valve-backed bash tool and, when configured, add `purpose` to its
|
|
430
|
-
* schema. Bind each purpose directly to its own execution: Pi may preflight a
|
|
431
|
-
* batch before starting its calls, so a shared "next purpose" slot could give a
|
|
432
|
-
* concurrent call the wrong label. Disabled means absent, not merely ignored —
|
|
433
|
-
* the model receives pi's upstream bash schema verbatim. */
|
|
434
|
-
export function createValveToolDefinition(nodeId, contextDir, cwd, exposePurpose) {
|
|
435
|
-
const baseDefinition = createBashToolDefinition(cwd, { operations: createValveOperations(nodeId, contextDir) });
|
|
436
|
-
const schemaDefinition = exposePurpose ? withPurpose(baseDefinition) : baseDefinition;
|
|
437
|
-
const execute = (toolCallId, params, signal, onUpdate, ctx) => {
|
|
438
|
-
const purpose = exposePurpose ? normalizeBashJobPurpose(params['purpose']) : null;
|
|
439
|
-
const definition = createBashToolDefinition(cwd, {
|
|
440
|
-
operations: createValveOperations(nodeId, contextDir, () => purpose, previewResultPath(toolCallId)),
|
|
441
|
-
});
|
|
442
|
-
return definition.execute(toolCallId, params, signal, onUpdate, ctx);
|
|
443
|
-
};
|
|
444
|
-
return { ...schemaDefinition, execute };
|
|
445
|
-
}
|
|
446
|
-
export default function (pi) {
|
|
447
|
-
const nodeId = envNodeId();
|
|
448
|
-
if (nodeId === undefined || nodeId.trim() === '')
|
|
449
|
-
return; // inert — builtin bash stays
|
|
450
|
-
const contextDir = process.env['CRTR_CONTEXT_DIR'];
|
|
451
|
-
if (contextDir === undefined || contextDir.trim() === '')
|
|
452
|
-
return; // defensive; always set alongside CRTR_NODE_ID
|
|
453
|
-
installTerminationHandoff();
|
|
454
|
-
// Registered on session_start (fires for startup, new, resume, fork, and
|
|
455
|
-
// /reload) so we get ctx.cwd — the same session cwd the builtin bash tool
|
|
456
|
-
// is built against. registerTool replaces the builtin by name; re-firing on
|
|
457
|
-
// every session_start is idempotent (last registration wins).
|
|
458
|
-
pi.on('session_start', (_event, ctx) => {
|
|
459
|
-
pi.registerTool(createValveToolDefinition(nodeId, contextDir, ctx.cwd, readConfig('user').bash_tool_purpose));
|
|
460
|
-
});
|
|
461
|
-
}
|
|
1
|
+
var ne=Object.defineProperty;var t=(n,r)=>ne(n,"name",{value:r,configurable:!0});import{envBashAutoBgDeadlineMs as re,envBashValveMs as te,envNodeId as oe}from"../shared/env.js";import{spawn as ie}from"node:child_process";import{closeSync as se,existsSync as S,mkdirSync as U,openSync as ae,readFileSync as ce,readSync as de,rmSync as F,statSync as G,writeFileSync as g}from"node:fs";import{homedir as ue}from"node:os";import{dirname as fe}from"node:path";import{performance as _}from"node:perf_hooks";import{backgroundBashJob as H,bashJobPaths as le,cancelBashJobProcessTree as V,formatBashElapsed as K,newBashJobId as pe,normalizeBashJobPurpose as be,readBashNiceness as he,writeJobDeadlineMs as me}from"../core/bash-jobs.js";import{bashCommandRefusal as ge}from"../core/bash-guard.js";import{capturePidIdentities as $e}from"../core/canvas/pid.js";import{readConfig as we}from"../core/config.js";import{PREVIEW_RESULT_PATH_ENV as Se,previewResultPath as ye}from"../core/preview-result-path.js";import{resolveAdmittedHostCommand as Ee}from"../core/runtime/spawn-env.js";import{Type as C}from"typebox";import{createBashToolDefinition as z}from"@earendil-works/pi-coding-agent";const ve=200;function Ie(){return te()}t(Ie,"resolveValveMs");const je=10*1024*1024,ke=`
|
|
2
|
+
[background bash job output truncated at 10 MiB; remaining output discarded]
|
|
3
|
+
`,xe=['const fs = require("node:fs");',`const cap = ${je};`,`const marker = Buffer.from(${JSON.stringify(ke)});`,"const prefixCap = cap - marker.length;",'const fd = fs.openSync(process.argv[1], "w");',"let written = 0;","let truncated = false;",'process.stdin.on("data", (chunk) => {'," if (truncated) return;"," const available = prefixCap - written;"," if (available > 0) {"," const prefix = chunk.subarray(0, available);"," fs.writeSync(fd, prefix);"," written += prefix.length;"," if (prefix.length === chunk.length) return;"," }"," fs.writeSync(fd, marker);"," truncated = true;","});",'process.stdin.on("end", () => fs.closeSync(fd));'].join(" "),Be=["SECONDS=0","n=$(command -v nice)",'${n:+"$n" -n "${10}"} "${9}" "$1" 2>&1 | "${11}" -e '+JSON.stringify(xe)+' "$2"',"ec=${PIPESTATUS[0]}","d=$SECONDS",'echo "$ec" > "$3"','if [ "$d" -lt 60 ]; then',' el="${d}s"','elif [ "$d" -lt 3600 ]; then',' el="$((d / 60))m $(printf "%02d" "$((d % 60))")s"',"else",' el="$((d / 3600))h $(printf "%02d" "$((d / 60 % 60))")m"',"fi",'if mv "$4" "$5" 2>/dev/null; then'," :",'elif [ -f "$6" ]; then',' crtr node message send "Background bash job $7 finished (exit $ec) after $el. Log: $2 Command: $1" --to "$8" --tier urgent || true',"fi"].join(`
|
|
4
|
+
`);function Le(n){return le(n,pe())}t(Le,"makeJobPaths");const j=new Set;let q=!1;function W(){for(const n of[...j])try{H(n),j.delete(n)}catch(r){process.stderr.write(`crtr: failed to background bash job ${n.jobId} during broker termination: ${r.message}
|
|
5
|
+
`)}}t(W,"backgroundLiveJobsForTermination");function Re(){q||(q=!0,process.prependListener("SIGTERM",W),process.platform!=="win32"&&process.prependListener("SIGHUP",W))}t(Re,"installTerminationHandoff");const _e=64*1024;function T(n,r,o){let i;try{i=G(n)}catch{return r}if(i.size<=r)return r;const c=ae(n,"r");try{for(;r<i.size;){const h=Math.min(_e,i.size-r),u=Buffer.allocUnsafe(h),a=de(c,u,0,h,r);if(a===0)break;o(u.subarray(0,a)),r+=a}return r}finally{se(c)}}t(T,"tailOnce");function $(n){try{F(n,{recursive:!0,force:!0})}catch{}}t($,"cleanupJobDir");function Ce(n){try{const r=ce(n,"utf8").trim(),o=Number(r);return Number.isFinite(o)?o:null}catch{return null}}t(Ce,"readExitCode");function Te(n){try{if(G(n).isDirectory())return{cwd:n}}catch{}const r=ue();return{cwd:r,warning:`[working directory no longer exists: ${n}; running from ${r}]
|
|
6
|
+
`}}t(Te,"resolveExecutionCwd");function X(n,r,o=()=>null,i){return{exec:t((c,h,{onData:u,signal:a,timeout:l,env:k})=>new Promise((y,f)=>{const E=o();if(a?.aborted){f(new Error("aborted"));return}const x=ge(c,h);if(x!==null){f(new Error(x));return}const e=Le(r);U(e.dir,{recursive:!0}),g(e.cmdSh,c),g(e.jobLog,""),g(e.jobRun,""),E!==null&&g(e.jobPurpose,E);let m=0,O=!1,d,p;const P=_.now(),Y=Ie();let B;const Q=t(()=>{B&&clearInterval(B),a&&a.removeEventListener("abort",N),j.delete(e)},"teardown"),b=t(s=>{O||(O=!0,Q(),s())},"finish");function L(s=!1){const w=K(_.now()-P);let D="";if(s){const J=re();me(e,Date.now()+J),D=`It will be CANCELED in ${K(J)} unless you claim it: crtr node bash extend ${e.jobId} --for <duration> (or --keep to run to completion). `}const ee=`
|
|
7
|
+
[backgrounded as job ${e.jobId} after ${w} in the foreground${s?" (auto)":""}. `+D+`It will interrupt you with a message when it exits. Watch: tail -f ${e.jobLog} ; stop: crtr node bash kill ${e.jobId}]`;u(Buffer.from(ee)),b(()=>y({exitCode:0}))}t(L,"finishBackground");function A(){m=T(e.jobLog,m,u);const s=Ce(e.jobExit);b(()=>y({exitCode:s})),$(e.dir)}t(A,"finishForeground");function Z(s=!1){const w=H(e);if(w==="backgrounded"||w==="already-backgrounded"){L(s);return}if(w==="finished"){A();return}b(()=>f(new Error(`bash job ${e.jobId} disappeared before it could be backgrounded`))),$(e.dir)}t(Z,"requestBackground");function N(){if(m=T(e.jobLog,m,u),S(e.jobBg)){L();return}S(e.jobExit)||(d!==void 0&&p!==void 0&&V(d,p),b(()=>f(new Error("aborted"))),$(e.dir))}t(N,"onAbort"),a&&a.addEventListener("abort",N,{once:!0});const v=Te(h);v.warning&&u(Buffer.from(v.warning));let I=k??process.env;i!==void 0&&(U(fe(i),{recursive:!0}),F(i,{force:!0}),I={...I,[Se]:i});const M=Ee("bash",I,v.cwd),R=ie(M,["-c",Be,"--",e.cmdSh,e.jobLog,e.jobExit,e.jobRun,e.jobDone,e.jobBg,e.jobId,n,M,String(he(r)),process.execPath],{cwd:v.cwd,detached:!0,stdio:"ignore",env:I});if(R.on("error",s=>{b(()=>f(s)),$(e.dir)}),d=R.pid,d!==void 0){if(p=$e([d])?.get(d),p===void 0){try{process.kill(-d,"SIGKILL")}catch{}b(()=>f(new Error(`bash job ${e.jobId} started without a process identity`))),$(e.dir);return}g(e.jobPgid,String(d)),g(e.jobPgidIdentity,p),j.add(e)}R.unref(),B=setInterval(()=>{if(m=T(e.jobLog,m,u),S(e.jobDone)){A();return}if(S(e.jobBg)){L();return}if(S(e.jobExit))return;const s=_.now()-P;if(l!==void 0&&l>0){s>=l*1e3&&(d!==void 0&&p!==void 0&&V(d,p),b(()=>f(new Error(`timeout:${l}`))),$(e.dir));return}s>=Y&&Z(!0)},ve)}),"exec")}}t(X,"createValveOperations");const Oe=["One short clause naming what this step is FOR, in the words of the person you",'are working for \u2014 "Reading the Acme thread", not "Fetching emails" and never','"Running GMAIL_FETCH_EMAILS". A person reads this while the command runs; it',"is the only thing they see of this step. Under about eight words. Omit it for","steps that only touch your own scratch work."].join(" ");function Pe(n){return{...n,parameters:C.Object({purpose:C.Optional(C.String({description:Oe})),...n.parameters.properties})}}t(Pe,"withPurpose");function Ae(n,r,o,i){const c=z(o,{operations:X(n,r)});return{...i?Pe(c):c,execute:t((a,l,k,y,f)=>{const E=i?be(l.purpose):null;return z(o,{operations:X(n,r,()=>E,ye(a))}).execute(a,l,k,y,f)},"execute")}}t(Ae,"createValveToolDefinition");function Ne(n){const r=oe();if(r===void 0||r.trim()==="")return;const o=process.env.CRTR_CONTEXT_DIR;o===void 0||o.trim()===""||(Re(),n.on("session_start",(i,c)=>{n.registerTool(Ae(r,o,c.cwd,we("user").bash_tool_purpose))}))}t(Ne,"default");export{ke as BACKGROUND_BASH_LOG_TRUNCATION_MARKER,je as MAX_BACKGROUND_BASH_LOG_BYTES,X as createValveOperations,Ae as createValveToolDefinition,Ne as default};
|
|
@@ -1,113 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// Loaded into every canvas node's pi process via the node's launch.extensions
|
|
4
|
-
// list. INERT when CRTR_NODE_ID is absent (plain pi session or legacy job agent).
|
|
5
|
-
//
|
|
6
|
-
// At session_start, before the first response, this assembles the context-owned
|
|
7
|
-
// memory state. A fresh branch receives full bearings, while a copied crouter
|
|
8
|
-
// branch with known transcript provenance receives compact node bearings.
|
|
9
|
-
//
|
|
10
|
-
// The active branch owns the idempotency stamp. A new cycle has no current-node
|
|
11
|
-
// stamp and receives a new baseline. The preference snapshot and persona
|
|
12
|
-
// acknowledgment persist only after Pi materializes that baseline.
|
|
13
|
-
//
|
|
14
|
-
// Plain TS-with-types — no imports from @earendil-works/* so this compiles inside
|
|
15
|
-
// crouter's own tsc build without a dep on the pi packages.
|
|
16
|
-
import { envNodeId } from '../shared/env.js';
|
|
17
|
-
import { CONTEXT_INTRO_CUSTOM_TYPE, formatCard } from '../shared/generated-context.js';
|
|
18
|
-
import { brokerExtensionState } from '../core/runtime/broker/daemon-ops.js';
|
|
19
|
-
import { buildContextBearingsFromState, buildForkBearingsFromState, buildProjectContextBlockForBroker, renderPreferencesFromState, } from '../core/runtime/broker-extension-render.js';
|
|
20
|
-
import { acknowledgePersonaBaseline } from '../core/runtime/broker-persona-guidance.js';
|
|
21
|
-
import { situationalContextEnvelope } from '../core/runtime/situational-context.js';
|
|
22
|
-
import { clearContextExposureState, cloneTranscriptExposureState, emptyContextExposureState, exposureTarget, freezePreferenceSnapshot, hasTranscriptExposure, loadContextExposureState, replaceContextExposureState, saveContextExposureState, sharedContextExposureState, } from '../core/substrate/injected-store.js';
|
|
23
|
-
import { clearSessionCache } from '../core/substrate/session-cache.js';
|
|
24
|
-
/** The `customType` stamped on the injected session message. Used both to write
|
|
25
|
-
* the entry and to detect it on resume (the idempotency guard). Defined beside
|
|
26
|
-
* the block builder in `core/runtime/bearings.ts` because the warm-pool claim's
|
|
27
|
-
* live delivery needs it too; re-exported here as this module's own surface. */
|
|
28
|
-
export { CONTEXT_INTRO_CUSTOM_TYPE };
|
|
29
|
-
// Block builder
|
|
30
|
-
/** Build the full bearings baseline for a conversation without inherited
|
|
31
|
-
* crouter context. Exported for testing. */
|
|
32
|
-
export async function buildContextIntro(nodeId, target) {
|
|
33
|
-
const state = await brokerExtensionState(nodeId);
|
|
34
|
-
return buildContextBearingsFromState(state, buildProjectContextBlockForBroker(state.node.cwd), situationalContextEnvelope(nodeId) ?? '', target);
|
|
35
|
-
}
|
|
36
|
-
/** Build the compact node-scoped update for a fork whose copied branch already
|
|
37
|
-
* carries a full crouter baseline. Exported for testing. */
|
|
38
|
-
export async function buildForkContextIntro(nodeId) {
|
|
39
|
-
const state = await brokerExtensionState(nodeId);
|
|
40
|
-
return buildForkBearingsFromState(state, situationalContextEnvelope(nodeId) ?? '');
|
|
41
|
-
}
|
|
42
|
-
// Message extraction
|
|
43
|
-
/** Plain text of a session entry's content (string or text blocks), '' when
|
|
44
|
-
* absent. Used by the idempotency guard to tell OUR own injected bearings
|
|
45
|
-
* (which name our node id) from a SOURCE's bearings copied in by `--fork-from`. */
|
|
46
|
-
function entryText(e) {
|
|
47
|
-
const c = e.content;
|
|
48
|
-
if (typeof c === 'string')
|
|
49
|
-
return c;
|
|
50
|
-
if (Array.isArray(c)) {
|
|
51
|
-
return c
|
|
52
|
-
.filter((b) => typeof b?.text === 'string')
|
|
53
|
-
.map((b) => b.text)
|
|
54
|
-
.join('\n');
|
|
55
|
-
}
|
|
56
|
-
return '';
|
|
57
|
-
}
|
|
58
|
-
// Extension
|
|
59
|
-
/** Register new-context baseline assembly; a strict resume changes nothing. */
|
|
60
|
-
export function registerCanvasContextIntro(pi) {
|
|
61
|
-
pi.on('session_start', async (event, ctx) => {
|
|
62
|
-
const nodeId = envNodeId();
|
|
63
|
-
if (nodeId === undefined || nodeId.trim() === '')
|
|
64
|
-
return;
|
|
65
|
-
const reason = event?.reason;
|
|
66
|
-
// Warm spares have no claimant yet. Their claim path delivers the full
|
|
67
|
-
// baseline after assigning the real persona, profile, and working directory.
|
|
68
|
-
const state = await brokerExtensionState(nodeId);
|
|
69
|
-
if (state.warm_spare)
|
|
70
|
-
return;
|
|
71
|
-
// A root's in-process /new branch is provisional: stophook has already asked
|
|
72
|
-
// crtrd to relaunch it. The replacement broker owns the new baseline.
|
|
73
|
-
if (reason === 'new' && state.node.parent === null)
|
|
74
|
-
return;
|
|
75
|
-
if (reason === 'new') {
|
|
76
|
-
clearContextExposureState(nodeId);
|
|
77
|
-
clearSessionCache();
|
|
78
|
-
}
|
|
79
|
-
// The active branch, rather than the whole session file, is the context the
|
|
80
|
-
// next turn sees. A new cycle therefore receives its own current baseline.
|
|
81
|
-
const contextEntries = ctx.sessionManager.getBranch().filter((e) => e.type === 'custom_message' && e.customType === CONTEXT_INTRO_CUSTOM_TYPE);
|
|
82
|
-
const ours = contextEntries.some((e) => e.details?.nodeId === nodeId || entryText(e).includes(nodeId));
|
|
83
|
-
if (ours)
|
|
84
|
-
return;
|
|
85
|
-
const persisted = loadContextExposureState(nodeId);
|
|
86
|
-
const compact = contextEntries.length > 0 && hasTranscriptExposure(persisted);
|
|
87
|
-
const next = compact
|
|
88
|
-
? cloneTranscriptExposureState(persisted)
|
|
89
|
-
: emptyContextExposureState();
|
|
90
|
-
const content = compact
|
|
91
|
-
? buildForkBearingsFromState(state, situationalContextEnvelope(nodeId) ?? '')
|
|
92
|
-
: buildContextBearingsFromState(state, buildProjectContextBlockForBroker(state.node.cwd), situationalContextEnvelope(nodeId) ?? '', exposureTarget(next, 'transcript'));
|
|
93
|
-
freezePreferenceSnapshot(next, renderPreferencesFromState(state, exposureTarget(next, 'system')));
|
|
94
|
-
const messageContent = formatCard('bearings', {}, content);
|
|
95
|
-
pi.sendMessage({
|
|
96
|
-
customType: CONTEXT_INTRO_CUSTOM_TYPE,
|
|
97
|
-
content: messageContent,
|
|
98
|
-
display: true,
|
|
99
|
-
details: { nodeId },
|
|
100
|
-
});
|
|
101
|
-
const delivered = ctx.sessionManager.getBranch().some((entry) => entry.type === 'custom_message'
|
|
102
|
-
&& entry.customType === CONTEXT_INTRO_CUSTOM_TYPE
|
|
103
|
-
&& entry.details?.nodeId === nodeId
|
|
104
|
-
&& entryText(entry) === messageContent);
|
|
105
|
-
if (!delivered)
|
|
106
|
-
throw new Error(`Pi did not materialize the context baseline for ${nodeId}`);
|
|
107
|
-
const live = sharedContextExposureState(nodeId);
|
|
108
|
-
replaceContextExposureState(live, next);
|
|
109
|
-
saveContextExposureState(nodeId, live);
|
|
110
|
-
await acknowledgePersonaBaseline(state);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
export default registerCanvasContextIntro;
|
|
1
|
+
var h=Object.defineProperty;var a=(t,o)=>h(t,"name",{value:o,configurable:!0});import{envNodeId as b}from"../shared/env.js";import{CONTEXT_INTRO_CUSTOM_TYPE as c,formatCard as v}from"../shared/generated-context.js";import{brokerExtensionState as u}from"../core/runtime/broker/daemon-ops.js";import{buildContextBearingsFromState as g,buildForkBearingsFromState as E,buildProjectContextBlockForBroker as S,renderPreferencesFromState as B}from"../core/runtime/broker-extension-render.js";import{acknowledgePersonaBaseline as _}from"../core/runtime/broker-persona-guidance.js";import{situationalContextEnvelope as p}from"../core/runtime/situational-context.js";import{clearContextExposureState as k,cloneTranscriptExposureState as F,emptyContextExposureState as I,exposureTarget as y,freezePreferenceSnapshot as P,hasTranscriptExposure as M,loadContextExposureState as N,replaceContextExposureState as O,saveContextExposureState as j,sharedContextExposureState as z}from"../core/substrate/injected-store.js";import{clearSessionCache as A}from"../core/substrate/session-cache.js";async function Q(t,o){const n=await u(t);return g(n,S(n.node.cwd),p(t)??"",o)}a(Q,"buildContextIntro");async function V(t){const o=await u(t);return E(o,p(t)??"")}a(V,"buildForkContextIntro");function w(t){const o=t.content;return typeof o=="string"?o:Array.isArray(o)?o.filter(n=>typeof n?.text=="string").map(n=>n.text).join(`
|
|
2
|
+
`):""}a(w,"entryText");function R(t){t.on("session_start",async(o,n)=>{const e=b();if(e===void 0||e.trim()==="")return;const m=o?.reason,s=await u(e);if(s.warm_spare||m==="new"&&s.node.parent===null)return;m==="new"&&(k(e),A());const d=n.sessionManager.getBranch().filter(r=>r.type==="custom_message"&&r.customType===c);if(d.some(r=>r.details?.nodeId===e||w(r).includes(e)))return;const x=N(e),f=d.length>0&&M(x),i=f?F(x):I(),T=f?E(s,p(e)??""):g(s,S(s.node.cwd),p(e)??"",y(i,"transcript"));P(i,B(s,y(i,"system")));const l=v("bearings",{},T);if(t.sendMessage({customType:c,content:l,display:!0,details:{nodeId:e}}),!n.sessionManager.getBranch().some(r=>r.type==="custom_message"&&r.customType===c&&r.details?.nodeId===e&&w(r)===l))throw new Error(`Pi did not materialize the context baseline for ${e}`);const C=z(e);O(C,i),j(e,C),await _(s)})}a(R,"registerCanvasContextIntro");var W=R;export{c as CONTEXT_INTRO_CUSTOM_TYPE,Q as buildContextIntro,V as buildForkContextIntro,W as default,R as registerCanvasContextIntro};
|