@north-light/crouter 0.3.317 → 0.3.319
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -3
- package/dist/api/client.d.ts +1 -1
- package/dist/api/client.js +2 -912
- package/dist/api/dto/attach.js +0 -13
- package/dist/api/dto/bash-jobs.js +1 -9
- package/dist/api/dto/broker-ops.js +0 -6
- package/dist/api/dto/broker.js +0 -20
- package/dist/api/dto/canvas.js +0 -2
- package/dist/api/dto/chat-inventory.js +0 -11
- package/dist/api/dto/common.js +1 -15
- package/dist/api/dto/config.js +0 -3
- package/dist/api/dto/crons.js +1 -10
- package/dist/api/dto/files.js +0 -7
- package/dist/api/dto/focus.js +0 -10
- package/dist/api/dto/health.js +0 -2
- package/dist/api/dto/human-requests.js +0 -4
- package/dist/api/dto/human.js +0 -4
- package/dist/api/dto/inbox.js +0 -4
- package/dist/api/dto/lifecycle.js +0 -3
- package/dist/api/dto/mail.js +0 -1
- package/dist/api/dto/memory.js +0 -6
- package/dist/api/dto/messages.js +0 -2
- package/dist/api/dto/model-config.js +0 -1
- package/dist/api/dto/modelauth.js +0 -4
- package/dist/api/dto/node-outcomes.js +0 -2
- package/dist/api/dto/nodes.js +0 -3
- package/dist/api/dto/profiles.js +1 -4
- package/dist/api/dto/recovery.js +0 -1
- package/dist/api/dto/reports.js +0 -2
- package/dist/api/dto/review-comments.js +0 -5
- package/dist/api/dto/reviews.js +0 -5
- package/dist/api/dto/subscriptions.js +0 -2
- package/dist/api/dto/worktree.js +0 -6
- package/dist/api/errors.js +1 -40
- package/dist/api/index.js +1 -33
- package/dist/api/plugin-manifest-schema.js +0 -23
- package/dist/api/routes.js +1 -147
- package/dist/build-root.js +1 -198
- package/dist/cli.js +3 -99
- package/dist/clients/attach/ansi-cells.js +1 -137
- package/dist/clients/attach/chrome/bash-jobs.js +1 -31
- package/dist/clients/attach/chrome/canvas-panels.js +1 -194
- package/dist/clients/attach/chrome/completion-bell.js +1 -89
- package/dist/clients/attach/chrome/cron-wait.js +1 -34
- package/dist/clients/attach/chrome/git-info.js +2 -44
- package/dist/clients/attach/chrome/header.js +1 -30
- package/dist/clients/attach/chrome/inbox-strip.js +1 -199
- package/dist/clients/attach/chrome/recap.js +1 -19
- package/dist/clients/attach/chrome/review-wait.js +1 -22
- package/dist/clients/attach/chrome/roster.js +4 -275
- package/dist/clients/attach/chrome/status-line.js +1 -117
- package/dist/clients/attach/chrome/ticket-panel.js +1 -280
- package/dist/clients/attach/chrome/widgets.js +1 -51
- package/dist/clients/attach/command.js +1 -107
- package/dist/clients/attach/config.js +1 -274
- package/dist/clients/attach/input/capabilities.js +1 -104
- package/dist/clients/attach/input/clipboard-image.js +3 -220
- package/dist/clients/attach/input/completion-frecency.js +1 -141
- package/dist/clients/attach/input/controller.js +7 -377
- package/dist/clients/attach/input/overlay-owner.js +1 -199
- package/dist/clients/attach/input/ref-autocomplete.js +2 -176
- package/dist/clients/attach/input/titled-editor.js +4 -859
- package/dist/clients/attach/overlays/auth.js +2 -271
- package/dist/clients/attach/overlays/dialogs.js +2 -102
- package/dist/clients/attach/overlays/file-review.js +2 -128
- package/dist/clients/attach/overlays/graph.js +1 -661
- package/dist/clients/attach/overlays/help.js +1 -211
- package/dist/clients/attach/overlays/mcp.js +1 -302
- package/dist/clients/attach/overlays/pickers.js +1 -163
- package/dist/clients/attach/render/activity-slot.js +1 -13
- package/dist/clients/attach/render/assistant-message.js +1 -56
- package/dist/clients/attach/render/card-presentation.js +5 -218
- package/dist/clients/attach/render/chat-view.js +5 -1708
- package/dist/clients/attach/render/condensed-history.js +1 -60
- package/dist/clients/attach/render/context-message.js +1 -63
- package/dist/clients/attach/render/crtr-output.js +17 -905
- package/dist/clients/attach/render/diagram.js +7 -111
- package/dist/clients/attach/render/edit-diff.js +5 -304
- package/dist/clients/attach/render/glyph-codepoints.js +1 -42
- package/dist/clients/attach/render/group-activity.js +2 -263
- package/dist/clients/attach/render/group-recap.js +1 -152
- package/dist/clients/attach/render/markdown-source.js +5 -266
- package/dist/clients/attach/render/measured-container.js +1 -322
- package/dist/clients/attach/render/page-block.js +1 -183
- package/dist/clients/attach/render/scroll-animation.js +1 -80
- package/dist/clients/attach/render/tool-calls.js +3 -361
- package/dist/clients/attach/render/transcript-copy.js +2 -81
- package/dist/clients/attach/render/transcript-search.js +1 -152
- package/dist/clients/attach/render/viewport.js +1 -184
- package/dist/clients/attach/session/banner.js +1 -29
- package/dist/clients/attach/session/bindings.js +1 -71
- package/dist/clients/attach/session/chrome-refresh.js +1 -94
- package/dist/clients/attach/session/connection.js +1 -186
- package/dist/clients/attach/session/context.js +0 -16
- package/dist/clients/attach/session/editor-frame.js +1 -142
- package/dist/clients/attach/session/editor-inventory.js +6 -160
- package/dist/clients/attach/session/file-links.js +1 -68
- package/dist/clients/attach/session/focus-events.js +1 -12
- package/dist/clients/attach/session/frame.js +1 -214
- package/dist/clients/attach/session/frames.js +1 -188
- package/dist/clients/attach/session/identity.js +1 -26
- package/dist/clients/attach/session/input-wiring.js +1 -140
- package/dist/clients/attach/session/invariant.js +1 -15
- package/dist/clients/attach/session/keys.js +1 -77
- package/dist/clients/attach/session/layout.js +1 -59
- package/dist/clients/attach/session/mouse.js +1 -78
- package/dist/clients/attach/session/pane-focus.js +1 -42
- package/dist/clients/attach/session/pane-tag.js +1 -112
- package/dist/clients/attach/session/pi-assets.js +1 -24
- package/dist/clients/attach/session/pi-oauth-flows.js +1 -21
- package/dist/clients/attach/session/profile-files.js +1 -228
- package/dist/clients/attach/session/reconnect.js +1 -175
- package/dist/clients/attach/session/selection.js +3 -108
- package/dist/clients/attach/session/state-sync.js +1 -67
- package/dist/clients/attach/session/surface-frame.js +1 -73
- package/dist/clients/attach/session/surface-host.js +1 -255
- package/dist/clients/attach/session/teardown.js +5 -94
- package/dist/clients/attach/session/transcript-search.js +3 -151
- package/dist/clients/attach/session/whip-achievements.js +2 -145
- package/dist/clients/attach/session/whip.js +1 -362
- package/dist/clients/attach/slash/dispatch.js +1 -706
- package/dist/clients/attach/slash/prompt-preview.js +1 -121
- package/dist/clients/attach/viewer.js +1 -1
- package/dist/clients/conversation/projection.js +1 -324
- package/dist/clients/conversation/submit.js +1 -51
- package/dist/clients/inbox/controller.js +1 -701
- package/dist/clients/inbox/dto-adapt.js +1 -93
- package/dist/clients/inbox/layout.js +1 -9
- package/dist/clients/inbox/page-adapter.js +1 -55
- package/dist/clients/inbox/resolve.js +1 -35
- package/dist/clients/inbox/review/anchors.js +1 -89
- package/dist/clients/inbox/review/comments-client.js +1 -98
- package/dist/clients/inbox/review/companion-pane.js +1 -82
- package/dist/clients/inbox/review/document-surface.js +2 -1188
- package/dist/clients/inbox/review/frame.js +1 -216
- package/dist/clients/inbox/review/keys.js +1 -123
- package/dist/clients/inbox/review/launch.js +1 -151
- package/dist/clients/inbox/review/live-source.js +1 -160
- package/dist/clients/inbox/review/nvim.js +1 -44
- package/dist/clients/inbox/review/remap.js +1 -157
- package/dist/clients/inbox/review/review-client.js +1 -123
- package/dist/clients/inbox/review/roundtrip.js +3 -36
- package/dist/clients/inbox/review/state.js +4 -315
- package/dist/clients/inbox/review-adapter.js +1 -43
- package/dist/clients/inbox/surface.js +1 -152
- package/dist/clients/inbox/tui/ansi.js +3 -321
- package/dist/clients/inbox/tui/input.js +5 -392
- package/dist/clients/inbox/tui/keys.js +1 -104
- package/dist/clients/inbox/tui/page-body.js +1 -66
- package/dist/clients/inbox/tui/panel.js +1 -84
- package/dist/clients/inbox/tui/render.js +2 -368
- package/dist/clients/inbox/tui/slots.js +3 -134
- package/dist/clients/inbox/tui/types.js +0 -1
- package/dist/clients/inbox/tui.js +1 -86
- package/dist/clients/surfaces/host.js +0 -1
- package/dist/commands/api-client.js +4 -290
- package/dist/commands/attention.js +1 -215
- package/dist/commands/canvas-browse.js +1 -70
- package/dist/commands/canvas-config.js +2 -192
- package/dist/commands/canvas-history/grep.js +7 -85
- package/dist/commands/canvas-history/read.js +3 -50
- package/dist/commands/canvas-history/search.js +10 -99
- package/dist/commands/canvas-history/shared.js +1 -139
- package/dist/commands/canvas-history/stats.js +6 -68
- package/dist/commands/canvas-history.js +1 -32
- package/dist/commands/canvas-issue.js +14 -149
- package/dist/commands/canvas-prune.js +1 -108
- package/dist/commands/canvas-roster.js +1 -69
- package/dist/commands/canvas-snapshot.js +1 -34
- package/dist/commands/canvas-use.js +1 -61
- package/dist/commands/canvas.js +1 -49
- package/dist/commands/chord.js +1 -241
- package/dist/commands/cron.js +11 -534
- package/dist/commands/dashboard.js +1 -85
- package/dist/commands/human/components.js +3 -77
- package/dist/commands/human/feedback.js +1 -112
- package/dist/commands/human/prompts.js +1 -331
- package/dist/commands/human/queue.js +1 -191
- package/dist/commands/human/request.js +1 -266
- package/dist/commands/human/review.js +1 -288
- package/dist/commands/human/shared.js +1 -67
- package/dist/commands/human.js +4 -60
- package/dist/commands/memory/delete.js +1 -100
- package/dist/commands/memory/edit.js +21 -219
- package/dist/commands/memory/find.js +2 -244
- package/dist/commands/memory/history.js +5 -199
- package/dist/commands/memory/lint.js +1 -107
- package/dist/commands/memory/list.js +1 -142
- package/dist/commands/memory/move.js +1 -223
- package/dist/commands/memory/origin.js +1 -130
- package/dist/commands/memory/read.js +6 -232
- package/dist/commands/memory/shared.js +12 -802
- package/dist/commands/memory/write.js +13 -235
- package/dist/commands/memory.js +1 -30
- package/dist/commands/node/bash.js +5 -245
- package/dist/commands/node/create.js +3 -332
- package/dist/commands/node/inspect.js +12 -300
- package/dist/commands/node/lifecycle.js +2 -453
- package/dist/commands/node/message.js +1 -161
- package/dist/commands/node/outcome.js +4 -134
- package/dist/commands/node/pyramid.js +2 -79
- package/dist/commands/node/subscription.js +1 -78
- package/dist/commands/node/wait.js +7 -163
- package/dist/commands/node-context.js +2 -159
- package/dist/commands/node-inspect-artifacts.js +8 -109
- package/dist/commands/node-lifecycle-revive.js +1 -217
- package/dist/commands/node-snapshot.js +1 -37
- package/dist/commands/node-transcript.js +1 -62
- package/dist/commands/node-worktree.js +1 -138
- package/dist/commands/node.js +1 -29
- package/dist/commands/pkg/browse/actions.js +1 -198
- package/dist/commands/pkg/browse/catalog.js +1 -466
- package/dist/commands/pkg/browse/command-view.js +1 -191
- package/dist/commands/pkg/browse/detail-panel.js +1 -402
- package/dist/commands/pkg/browse/doc-view.js +1 -89
- package/dist/commands/pkg/browse/list-panel.js +2 -168
- package/dist/commands/pkg/browse/model.js +1 -36
- package/dist/commands/pkg/browse/shell.js +1 -640
- package/dist/commands/pkg/browse.js +1 -27
- package/dist/commands/pkg/market-inspect.js +1 -141
- package/dist/commands/pkg/market-manage.js +1 -327
- package/dist/commands/pkg/market.js +1 -14
- package/dist/commands/pkg/plugin-inspect.js +1 -168
- package/dist/commands/pkg/plugin-manage.js +17 -1109
- package/dist/commands/pkg/plugin.js +1 -14
- package/dist/commands/pkg/shared.js +1 -62
- package/dist/commands/pkg.js +1 -21
- package/dist/commands/profile/default.js +1 -139
- package/dist/commands/profile/delete.js +1 -66
- package/dist/commands/profile/env.js +3 -188
- package/dist/commands/profile/kind.js +2 -35
- package/dist/commands/profile/list.js +1 -43
- package/dist/commands/profile/meta.js +1 -67
- package/dist/commands/profile/new.js +1 -115
- package/dist/commands/profile/pause.js +1 -59
- package/dist/commands/profile/project.js +1 -113
- package/dist/commands/profile/rename.js +1 -38
- package/dist/commands/profile/show.js +1 -52
- package/dist/commands/profile.js +1 -35
- package/dist/commands/push.js +9 -265
- package/dist/commands/revive.js +10 -181
- package/dist/commands/surface/node/cycle.js +1 -83
- package/dist/commands/surface/node/focus.js +1 -81
- package/dist/commands/surface/node/id.js +1 -38
- package/dist/commands/surface/node/pin.js +1 -42
- package/dist/commands/surface/node/placement.js +1 -134
- package/dist/commands/surface-edit.js +1 -157
- package/dist/commands/surface-inbox.js +1 -98
- package/dist/commands/surface-inspect.js +1 -39
- package/dist/commands/surface-node.js +1 -19
- package/dist/commands/surface-reload.js +2 -134
- package/dist/commands/surface-tmux-spread.js +1 -214
- package/dist/commands/surface.js +1 -28
- package/dist/commands/sys/branch.js +1 -19
- package/dist/commands/sys/config.js +1 -353
- package/dist/commands/sys/context/admin/actions.js +2 -246
- package/dist/commands/sys/context/admin/detail-panel.js +1 -247
- package/dist/commands/sys/context/admin/docs-panel.js +1 -191
- package/dist/commands/sys/context/admin/list-view.js +1 -183
- package/dist/commands/sys/context/admin/model.js +1 -229
- package/dist/commands/sys/context/admin/rail-panel.js +1 -227
- package/dist/commands/sys/context/admin/read-view.js +2 -194
- package/dist/commands/sys/context/admin/shell.js +1 -910
- package/dist/commands/sys/context/admin.js +2 -126
- package/dist/commands/sys/context/doc.js +3 -197
- package/dist/commands/sys/context/prompt-review.js +11 -291
- package/dist/commands/sys/context/resolve.js +10 -489
- package/dist/commands/sys/context/sysprompt.js +5 -96
- package/dist/commands/sys/context.js +1 -20
- package/dist/commands/sys/daemon.js +1 -313
- package/dist/commands/sys/doctor.js +1 -617
- package/dist/commands/sys/feedback.js +7 -228
- package/dist/commands/sys/logs.js +3 -129
- package/dist/commands/sys/migrate.js +1 -94
- package/dist/commands/sys/panels/broker-limits-panel.js +2 -110
- package/dist/commands/sys/panels/dependencies-panel.js +1 -80
- package/dist/commands/sys/panels/keybindings-panel.js +1 -703
- package/dist/commands/sys/panels/models-panel.js +1 -1133
- package/dist/commands/sys/panels/plugins-panel.js +1 -80
- package/dist/commands/sys/panels/prefs-panel.js +1 -85
- package/dist/commands/sys/panels/profiles-panel.js +1 -601
- package/dist/commands/sys/panels/provider-panel.js +1 -538
- package/dist/commands/sys/settings-shell.js +1 -400
- package/dist/commands/sys/settings.js +1 -46
- package/dist/commands/sys/setup-core.js +6 -579
- package/dist/commands/sys/setup-settings-runner.js +1 -16
- package/dist/commands/sys/setup-wizard.js +1 -279
- package/dist/commands/sys/setup.js +1 -34
- package/dist/commands/sys/shared.js +1 -81
- package/dist/commands/sys/support/prepare.js +3 -239
- package/dist/commands/sys/support/submit.js +6 -524
- package/dist/commands/sys/support.js +1 -18
- package/dist/commands/sys/sync-deps.js +15 -498
- package/dist/commands/sys/sync-project-guidance.js +4 -481
- package/dist/commands/sys/sync-shared.js +1 -49
- package/dist/commands/sys/sync-skills.js +2 -311
- package/dist/commands/sys/sync.js +1 -18
- package/dist/commands/sys/update.js +1 -147
- package/dist/commands/sys/worktrees.js +5 -53
- package/dist/commands/sys.js +1 -18
- package/dist/core/activity-signal.js +2 -38
- package/dist/core/asset-root.js +1 -18
- package/dist/core/auth-file.js +2 -179
- package/dist/core/auth-interaction.js +3 -94
- package/dist/core/auto-update.js +4 -94
- package/dist/core/bash-guard.js +11 -393
- package/dist/core/bash-jobs.js +7 -411
- package/dist/core/bootstrap.js +2 -53
- package/dist/core/broker-client/client.js +1 -184
- package/dist/core/broker-client/index.js +1 -13
- package/dist/core/broker-client/transport-relay.js +1 -157
- package/dist/core/broker-client/transport-socket.js +1 -179
- package/dist/core/broker-client/transport.js +1 -26
- package/dist/core/canvas/attention.js +1 -47
- package/dist/core/canvas/boot-id.js +1 -26
- package/dist/core/canvas/boot.js +1 -186
- package/dist/core/canvas/browse/app.js +3 -919
- package/dist/core/canvas/browse/model.js +1 -477
- package/dist/core/canvas/browse/pins.js +1 -29
- package/dist/core/canvas/browse/render.js +3 -1055
- package/dist/core/canvas/canvas.js +15 -922
- package/dist/core/canvas/crons.js +11 -481
- package/dist/core/canvas/daemon-owner.js +2 -146
- package/dist/core/canvas/db.js +2 -100
- package/dist/core/canvas/deliveries.js +22 -283
- package/dist/core/canvas/delivery-contract.js +1 -8
- package/dist/core/canvas/executions.js +1 -68
- package/dist/core/canvas/extensions.js +1 -83
- package/dist/core/canvas/focuses.js +1 -77
- package/dist/core/canvas/history.js +24 -860
- package/dist/core/canvas/index.js +1 -15
- package/dist/core/canvas/install-id.js +1 -84
- package/dist/core/canvas/labels.js +1 -43
- package/dist/core/canvas/meta-file.js +1 -89
- package/dist/core/canvas/migrations.js +41 -1150
- package/dist/core/canvas/nav-model.js +1 -231
- package/dist/core/canvas/nav-render.js +1 -260
- package/dist/core/canvas/node-order.js +1 -37
- package/dist/core/canvas/node-recap.js +2 -67
- package/dist/core/canvas/node-sql-migration.js +2 -209
- package/dist/core/canvas/paths.js +1 -153
- package/dist/core/canvas/pid.js +4 -683
- package/dist/core/canvas/recovery.js +3 -565
- package/dist/core/canvas/remote-canvas-source.js +1 -288
- package/dist/core/canvas/remote-transport.js +1 -57
- package/dist/core/canvas/render-source.js +10 -635
- package/dist/core/canvas/sessions.js +1 -78
- package/dist/core/canvas/source.js +1 -47
- package/dist/core/canvas/status-glyph.js +1 -132
- package/dist/core/canvas/telemetry.js +1 -35
- package/dist/core/canvas/types.js +1 -6
- package/dist/core/canvas/waits.js +4 -68
- package/dist/core/canvas/worktrees.js +1 -93
- package/dist/core/clipboard-text.js +1 -57
- package/dist/core/command-hooks/artifact.js +1 -145
- package/dist/core/command-hooks/catalog.js +1 -38
- package/dist/core/command-hooks/compose.js +1 -99
- package/dist/core/command-hooks/discovery.js +1 -228
- package/dist/core/command-hooks/help.js +1 -18
- package/dist/core/command-hooks/index.js +1 -7
- package/dist/core/command-hooks/lifecycle-catalog.js +1 -9
- package/dist/core/command-hooks/lifecycle-create.js +1 -51
- package/dist/core/command-hooks/report.js +1 -28
- package/dist/core/command-hooks/schema.js +1 -157
- package/dist/core/command-hooks/transport/exec-invoke.js +1 -276
- package/dist/core/command-hooks/transport/exec-lifecycle.js +1 -211
- package/dist/core/command-manifests/manifest.js +1 -324
- package/dist/core/command-manifests/registry.js +1 -118
- package/dist/core/command-manifests/schema.js +1 -736
- package/dist/core/command-plugins/bundle.js +1 -261
- package/dist/core/command-plugins/compose.js +1 -65
- package/dist/core/command-plugins/discovery.js +1 -245
- package/dist/core/command-plugins/endpoint.js +1 -48
- package/dist/core/command-plugins/extensions.js +1 -166
- package/dist/core/command-plugins/help-addenda.js +1 -44
- package/dist/core/command-plugins/presence.js +1 -17
- package/dist/core/command-plugins/revalidate.js +2 -152
- package/dist/core/command-plugins/transport/exec-invoke.js +1 -215
- package/dist/core/command-plugins/transport/http-fetch.js +1 -68
- package/dist/core/command-plugins/transport/http-invoke.js +3 -546
- package/dist/core/command.js +10 -739
- package/dist/core/config.js +1 -1059
- package/dist/core/document-lines.js +3 -6
- package/dist/core/env-name.js +1 -9
- package/dist/core/errors.js +1 -52
- package/dist/core/events/emit.js +1 -17
- package/dist/core/events/envelope.js +1 -84
- package/dist/core/events/errors.js +1 -69
- package/dist/core/events/index.js +1 -4
- package/dist/core/events/operation-id.js +1 -24
- package/dist/core/events/read.js +1 -623
- package/dist/core/events/serialize.js +1 -199
- package/dist/core/events/source.js +1 -31
- package/dist/core/events/types.js +1 -11
- package/dist/core/exclusive-lock.js +1 -197
- package/dist/core/fault-classifier.js +1 -96
- package/dist/core/feed/feed.js +7 -202
- package/dist/core/feed/inbox-migrate.js +3 -135
- package/dist/core/feed/inbox.js +10 -122
- package/dist/core/feed/messages.js +6 -212
- package/dist/core/frontmatter.js +1 -35
- package/dist/core/fs-utils.js +3 -202
- package/dist/core/git.js +2 -103
- package/dist/core/help.js +9 -310
- package/dist/core/host-exports/builtins.js +9 -68
- package/dist/core/host-exports/export.js +3 -124
- package/dist/core/human/action-binding.js +1 -40
- package/dist/core/human/answer-text.js +5 -100
- package/dist/core/human/answer.js +1 -119
- package/dist/core/human/claim.js +3 -67
- package/dist/core/human/completion.js +1 -27
- package/dist/core/human/component-docs.js +78 -272
- package/dist/core/human/convention.js +2 -82
- package/dist/core/human/feedback-companion.js +1 -106
- package/dist/core/human/feedback.js +1 -88
- package/dist/core/human/page-authoring.js +1 -19
- package/dist/core/human/page-catalog.js +1 -172
- package/dist/core/human/page-errors.js +1 -7
- package/dist/core/human/page-eval.js +1 -125
- package/dist/core/human/page-html-markdown.js +8 -260
- package/dist/core/human/page-markdown.js +17 -295
- package/dist/core/human/page-schema.js +1 -373
- package/dist/core/human/page-synth.js +8 -27
- package/dist/core/human/page.js +1 -198
- package/dist/core/human/requests.js +15 -466
- package/dist/core/human/review-schema.js +1 -34
- package/dist/core/human/root.js +1 -11
- package/dist/core/human/scan.js +1 -69
- package/dist/core/human/summary.js +1 -5
- package/dist/core/human/tickets.js +1 -171
- package/dist/core/human/types.js +0 -1
- package/dist/core/human/visible-paths.js +1 -77
- package/dist/core/human-actions.js +1 -101
- package/dist/core/inspector/chrome.js +1 -14
- package/dist/core/inspector/contract.js +0 -1
- package/dist/core/inspector/core.js +2 -295
- package/dist/core/inspector/host.js +4 -538
- package/dist/core/inspector/model.js +2 -226
- package/dist/core/inspector/text.js +6 -45
- package/dist/core/inspector/transport.js +1 -36
- package/dist/core/inspector/tui.js +2 -295
- package/dist/core/installed-plugins.js +1 -78
- package/dist/core/io.js +7 -356
- package/dist/core/keybindings/attach-control.js +1 -42
- package/dist/core/keybindings/background-bash.js +1 -33
- package/dist/core/keybindings/catalog.js +1 -256
- package/dist/core/keybindings/inbox.js +1 -25
- package/dist/core/keybindings/index.js +1 -7
- package/dist/core/keybindings/match.js +1 -127
- package/dist/core/keybindings/persistence.js +1 -49
- package/dist/core/keybindings/resolve.js +1 -348
- package/dist/core/keybindings/types.js +0 -1
- package/dist/core/locked-file.js +1 -118
- package/dist/core/log.js +3 -27
- package/dist/core/manifest-recovery.js +1 -72
- package/dist/core/manifest-stale.js +1 -39
- package/dist/core/manifest.js +1 -20
- package/dist/core/memory/doc-link-grammar.js +2 -109
- package/dist/core/memory/extensions.js +1 -221
- package/dist/core/memory/history.js +6 -268
- package/dist/core/memory/identity.js +1 -181
- package/dist/core/memory/inline-ref-grammar.js +1 -98
- package/dist/core/memory/inline-ref-guidance.js +2 -35
- package/dist/core/memory/inline-ref-inventory.js +1 -59
- package/dist/core/memory/lint.js +2 -671
- package/dist/core/memory/project-namespace.js +2 -85
- package/dist/core/memory/repository-association.js +1 -129
- package/dist/core/memory/tree.js +1 -93
- package/dist/core/memory-resolver.js +2 -611
- package/dist/core/model-config.js +1 -107
- package/dist/core/model-routes.js +1 -201
- package/dist/core/nested-stores.js +2 -166
- package/dist/core/output.js +7 -99
- package/dist/core/pagination.js +1 -88
- package/dist/core/plugin-swap-lock.js +1 -31
- package/dist/core/pool-credential-store.js +1 -116
- package/dist/core/predicate.js +1 -191
- package/dist/core/preview-registry.js +2 -411
- package/dist/core/preview-result-path.js +1 -26
- package/dist/core/profiles/default-binding.js +1 -24
- package/dist/core/profiles/deletion-reservation.js +1 -42
- package/dist/core/profiles/env-store.js +2 -162
- package/dist/core/profiles/fuzzy-match.js +1 -92
- package/dist/core/profiles/manifest.js +1 -574
- package/dist/core/profiles/select.js +35 -741
- package/dist/core/profiles/state-block.js +3 -17
- package/dist/core/provider-error-recognition.js +1 -74
- package/dist/core/provider-failure.js +1 -86
- package/dist/core/provider-management.js +1 -22
- package/dist/core/remote-canvas-target.js +1 -30
- package/dist/core/render.js +18 -138
- package/dist/core/resolver.js +1 -111
- package/dist/core/review/birth.js +1 -52
- package/dist/core/review/comments.js +5 -279
- package/dist/core/review/companion.js +1 -215
- package/dist/core/review/document.js +2 -138
- package/dist/core/review/project.js +1 -36
- package/dist/core/review/realize.js +1 -71
- package/dist/core/review/remap.js +4 -141
- package/dist/core/review/signal.js +1 -12
- package/dist/core/review/stage.js +1 -184
- package/dist/core/review/store.js +1 -168
- package/dist/core/review/types.js +1 -23
- package/dist/core/runtime/advertised-command-invocation.js +1 -233
- package/dist/core/runtime/auth-reload.js +1 -67
- package/dist/core/runtime/banner.js +1 -51
- package/dist/core/runtime/bearings-render.js +18 -250
- package/dist/core/runtime/bearings.js +7 -194
- package/dist/core/runtime/bin-contributions.js +2 -186
- package/dist/core/runtime/boot-root.js +1 -107
- package/dist/core/runtime/branded-host.js +2 -264
- package/dist/core/runtime/broker/auth-reload.js +1 -157
- package/dist/core/runtime/broker/client-registry.js +1 -179
- package/dist/core/runtime/broker/daemon-ops.js +1 -88
- package/dist/core/runtime/broker/engine-drive.js +1 -354
- package/dist/core/runtime/broker/engine-routing.js +1 -211
- package/dist/core/runtime/broker/event-projection.js +1 -193
- package/dist/core/runtime/broker/extension-abort.js +1 -36
- package/dist/core/runtime/broker/fault-retry.js +1 -588
- package/dist/core/runtime/broker/frame-client.js +1 -132
- package/dist/core/runtime/broker/frame-dispatch.js +1 -183
- package/dist/core/runtime/broker/frame-engine-control.js +1 -231
- package/dist/core/runtime/broker/frame-memory-refs.js +1 -41
- package/dist/core/runtime/broker/frame-model-query.js +1 -69
- package/dist/core/runtime/broker/frame-read.js +1 -116
- package/dist/core/runtime/broker/frame-replies.js +1 -64
- package/dist/core/runtime/broker/frame-session.js +4 -203
- package/dist/core/runtime/broker/held-deferred-inbox.js +1 -13
- package/dist/core/runtime/broker/inbox.js +13 -163
- package/dist/core/runtime/broker/node-named.js +1 -27
- package/dist/core/runtime/broker/read-ops.js +1 -171
- package/dist/core/runtime/broker/rebind.js +1 -318
- package/dist/core/runtime/broker/tool-groups.js +1 -246
- package/dist/core/runtime/broker/turn-admission.js +1 -31
- package/dist/core/runtime/broker/turn-ignition.js +1 -84
- package/dist/core/runtime/broker-cli.js +3 -81
- package/dist/core/runtime/broker-extension-render.js +5 -135
- package/dist/core/runtime/broker-inventory.js +1 -116
- package/dist/core/runtime/broker-persona-guidance.js +4 -154
- package/dist/core/runtime/broker-protocol.js +3 -152
- package/dist/core/runtime/broker-request.js +1 -85
- package/dist/core/runtime/broker-sdk.js +1 -129
- package/dist/core/runtime/broker.js +1 -1214
- package/dist/core/runtime/canvas-extensions.js +1 -96
- package/dist/core/runtime/chat-inventory-rows.js +1 -105
- package/dist/core/runtime/close.js +1 -265
- package/dist/core/runtime/command-expansion.js +9 -104
- package/dist/core/runtime/command-surface.js +1 -117
- package/dist/core/runtime/connectivity.js +1 -73
- package/dist/core/runtime/deliver-live.js +1 -88
- package/dist/core/runtime/fault-recovery.js +1 -83
- package/dist/core/runtime/fault.js +1 -17
- package/dist/core/runtime/fleet.js +1 -58
- package/dist/core/runtime/front-door-env.js +1 -16
- package/dist/core/runtime/front-door.js +7 -183
- package/dist/core/runtime/headless-pi.js +1 -161
- package/dist/core/runtime/host.js +1 -457
- package/dist/core/runtime/interactive-deliver.js +1 -51
- package/dist/core/runtime/invocation.js +0 -10
- package/dist/core/runtime/kickoff.js +30 -327
- package/dist/core/runtime/launch-config-worker.js +1 -12
- package/dist/core/runtime/launch-prompt.js +4 -13
- package/dist/core/runtime/launch-target.js +1 -55
- package/dist/core/runtime/launch.js +1 -483
- package/dist/core/runtime/lifecycle.js +2 -213
- package/dist/core/runtime/managed-provider-cooling.js +1 -62
- package/dist/core/runtime/memory.js +1 -17
- package/dist/core/runtime/model-registry.js +1 -13
- package/dist/core/runtime/model-selection.js +1 -135
- package/dist/core/runtime/model-swap.js +1 -86
- package/dist/core/runtime/naming.js +14 -298
- package/dist/core/runtime/nerd-font.js +2 -127
- package/dist/core/runtime/node-read.js +2 -386
- package/dist/core/runtime/nodes.js +1 -331
- package/dist/core/runtime/outcome-document.js +1 -97
- package/dist/core/runtime/package-health.js +4 -99
- package/dist/core/runtime/persona.js +2 -55
- package/dist/core/runtime/pi-cli.js +1 -65
- package/dist/core/runtime/pi-vendored.js +1 -66
- package/dist/core/runtime/placement-tmux.js +1 -81
- package/dist/core/runtime/placement.js +1 -386
- package/dist/core/runtime/promote.js +1 -174
- package/dist/core/runtime/prospective-inventory-cli.js +3 -61
- package/dist/core/runtime/prospective-inventory.js +2 -88
- package/dist/core/runtime/recap.js +27 -103
- package/dist/core/runtime/recycle.js +1 -190
- package/dist/core/runtime/reopen.js +1 -138
- package/dist/core/runtime/reset.js +1 -245
- package/dist/core/runtime/resume-root.js +10 -290
- package/dist/core/runtime/revive-all.js +1 -107
- package/dist/core/runtime/revive.js +4 -544
- package/dist/core/runtime/roadmap.js +4 -38
- package/dist/core/runtime/session-branch.js +1 -46
- package/dist/core/runtime/session-cycles.js +1 -110
- package/dist/core/runtime/session-list-cache.js +1 -406
- package/dist/core/runtime/session-visibility.js +1 -99
- package/dist/core/runtime/shell-expansion.js +9 -100
- package/dist/core/runtime/situational-context.js +2 -67
- package/dist/core/runtime/situational-live.js +1 -41
- package/dist/core/runtime/spawn-env.js +1 -255
- package/dist/core/runtime/spawn.js +3 -577
- package/dist/core/runtime/stamp/channel.js +1 -76
- package/dist/core/runtime/stamp/protocol.js +1 -113
- package/dist/core/runtime/stop-guard.js +7 -116
- package/dist/core/runtime/stop-signals.js +1 -46
- package/dist/core/runtime/stream-watchdog.js +1 -134
- package/dist/core/runtime/structured-output.js +4 -156
- package/dist/core/runtime/surface-bg.js +1 -85
- package/dist/core/runtime/tmux-bindings.js +4 -730
- package/dist/core/runtime/tmux-chrome.js +1 -5
- package/dist/core/runtime/tmux-driver.js +7 -637
- package/dist/core/runtime/tool-group-summary.js +6 -85
- package/dist/core/runtime/turn-visibility.js +1 -31
- package/dist/core/runtime/view-socket.js +1 -83
- package/dist/core/runtime/warm-pool.d.ts +3 -2
- package/dist/core/runtime/warm-pool.js +1 -385
- package/dist/core/scope.js +1 -254
- package/dist/core/scoped-state/db.js +1 -135
- package/dist/core/scoped-state/migrate.js +3 -181
- package/dist/core/scoped-state/paths.js +1 -27
- package/dist/core/scoped-state/profiles.js +1 -62
- package/dist/core/scoped-state/providers.js +1 -8
- package/dist/core/scoped-state/schema.js +3 -16
- package/dist/core/scoped-state/settings.js +1 -82
- package/dist/core/secrets.js +2 -55
- package/dist/core/self-update.js +1 -71
- package/dist/core/session-model/session-state.js +1 -180
- package/dist/core/shell-segments.js +4 -169
- package/dist/core/spawn.js +1 -26
- package/dist/core/stdout-errors.js +1 -14
- package/dist/core/subscription-state.js +3 -193
- package/dist/core/substrate/frontmatter-validation.js +1 -105
- package/dist/core/substrate/gate-explain.js +1 -424
- package/dist/core/substrate/gate.js +1 -26
- package/dist/core/substrate/index.js +1 -30
- package/dist/core/substrate/injected-store.js +1 -249
- package/dist/core/substrate/listings.js +1 -115
- package/dist/core/substrate/on-read-node.js +1 -36
- package/dist/core/substrate/on-read.js +9 -315
- package/dist/core/substrate/plan.js +1 -266
- package/dist/core/substrate/render-node.js +1 -30
- package/dist/core/substrate/render.js +65 -689
- package/dist/core/substrate/schema.js +1 -186
- package/dist/core/substrate/session-cache.js +1 -83
- package/dist/core/substrate/subject-fields.js +1 -35
- package/dist/core/substrate/subject.js +1 -47
- package/dist/core/substrate/surface-match.js +1 -242
- package/dist/core/termrender/code-doc.js +5 -92
- package/dist/core/termrender/display.js +2 -56
- package/dist/core/termrender/termrender.js +14 -719
- package/dist/core/termrender/version.js +1 -1
- package/dist/core/timing.js +2 -94
- package/dist/core/tui/draw.js +2 -378
- package/dist/core/tui/fuzzy.js +1 -38
- package/dist/core/tui/markdown.js +3 -407
- package/dist/core/tui/page-host.js +1 -74
- package/dist/core/tui/panel.js +1 -137
- package/dist/core/tui/terminal.js +2 -100
- package/dist/core/user-settings.js +1 -454
- package/dist/core/wake.js +1 -296
- package/dist/core/worktree-close.js +6 -228
- package/dist/core/worktree-containment.js +3 -48
- package/dist/core/worktree-landing.js +4 -56
- package/dist/core/worktree-mutation-async.js +10 -280
- package/dist/core/worktree-quarantine.js +1 -54
- package/dist/core/worktree-sweep.js +6 -453
- package/dist/core/worktree.js +18 -899
- package/dist/daemon/api/bridge.js +8 -418
- package/dist/daemon/api/handlers/attach.js +1 -65
- package/dist/daemon/api/handlers/bash-jobs.js +2 -91
- package/dist/daemon/api/handlers/broker-ops.js +1 -447
- package/dist/daemon/api/handlers/broker-recovery.js +1 -251
- package/dist/daemon/api/handlers/canvas.js +6 -490
- package/dist/daemon/api/handlers/chat-inventory.js +1 -25
- package/dist/daemon/api/handlers/crons.js +1 -373
- package/dist/daemon/api/handlers/daemon.js +1 -76
- package/dist/daemon/api/handlers/feedback-comments.js +3 -199
- package/dist/daemon/api/handlers/files.js +1 -63
- package/dist/daemon/api/handlers/focus.js +1 -92
- package/dist/daemon/api/handlers/health.js +1 -76
- package/dist/daemon/api/handlers/human-requests.js +1 -379
- package/dist/daemon/api/handlers/human.js +1 -3
- package/dist/daemon/api/handlers/inbox-page.js +1 -89
- package/dist/daemon/api/handlers/inbox.js +1 -301
- package/dist/daemon/api/handlers/memory.js +1 -50
- package/dist/daemon/api/handlers/messages.js +2 -506
- package/dist/daemon/api/handlers/model-config.js +1 -44
- package/dist/daemon/api/handlers/modelauth.js +1 -165
- package/dist/daemon/api/handlers/node-outcomes.js +1 -181
- package/dist/daemon/api/handlers/nodes.js +1 -943
- package/dist/daemon/api/handlers/profiles.js +1 -140
- package/dist/daemon/api/handlers/prospective-chat-inventory.js +1 -59
- package/dist/daemon/api/handlers/reports.js +16 -332
- package/dist/daemon/api/handlers/review-comments.js +1 -465
- package/dist/daemon/api/handlers/reviews.js +1 -200
- package/dist/daemon/api/handlers/subscriptions.js +1 -53
- package/dist/daemon/api/handlers/validate.js +1 -58
- package/dist/daemon/api/handlers/worktree.js +1 -39
- package/dist/daemon/api/map.js +2 -735
- package/dist/daemon/api/router.js +1 -190
- package/dist/daemon/api/server.js +11 -408
- package/dist/daemon/boot-migrations.js +1 -31
- package/dist/daemon/companion-retire.js +1 -34
- package/dist/daemon/control.js +1 -22
- package/dist/daemon/cron/armed-context.js +1 -100
- package/dist/daemon/cron/capture.js +2 -45
- package/dist/daemon/cron/disposition.js +1 -55
- package/dist/daemon/cron/escalation.js +3 -124
- package/dist/daemon/cron/held.js +1 -20
- package/dist/daemon/cron/lease-recovery.js +1 -119
- package/dist/daemon/cron/live-runs.js +1 -23
- package/dist/daemon/cron/passes.js +1 -58
- package/dist/daemon/cron/settle.js +1 -61
- package/dist/daemon/cron/sinks.js +2 -59
- package/dist/daemon/cron-run.js +1 -405
- package/dist/daemon/crtrd-cli.js +1 -23
- package/dist/daemon/crtrd.js +8 -854
- package/dist/daemon/delivery/run-delivery.js +1 -164
- package/dist/daemon/fleet.js +17 -475
- package/dist/daemon/human/finish.js +10 -179
- package/dist/daemon/human/settle.js +1 -89
- package/dist/daemon/human/sweep.js +1 -66
- package/dist/daemon/manage.js +2 -595
- package/dist/daemon/messaging/node-message.js +1 -99
- package/dist/daemon/park-activity.js +1 -30
- package/dist/daemon/park-pending.js +1 -52
- package/dist/daemon/pidfile.js +1 -37
- package/dist/daemon/profile-delete.js +1 -306
- package/dist/daemon/reconcilers/bash-deadline.js +1 -80
- package/dist/daemon/reconcilers/broker-supervision.js +4 -761
- package/dist/daemon/reconcilers/controller-death.js +1 -14
- package/dist/daemon/reconcilers/cron-lane.js +1 -29
- package/dist/daemon/reconcilers/delivery-lane.js +1 -130
- package/dist/daemon/reconcilers/live-obligation.js +1 -87
- package/dist/daemon/reconcilers/managed-worktree-sweep.js +1 -202
- package/dist/daemon/reconcilers/node-deadline.js +1 -82
- package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.js +1 -172
- package/dist/daemon/reconcilers/node-lifecycle/respawn-policy.js +1 -59
- package/dist/daemon/reconcilers/node-lifecycle/terminating.js +1 -12
- package/dist/daemon/reconcilers/node-lifecycle/tick.js +1 -146
- package/dist/daemon/reconcilers/node-lifecycle/wants-execution.js +1 -11
- package/dist/daemon/reconcilers/pending-review-submit.js +1 -36
- package/dist/daemon/reconcilers/storage-maintenance.js +1 -207
- package/dist/daemon/review/comment-notify.js +2 -109
- package/dist/daemon/review/companion.js +1 -29
- package/dist/daemon/review/deliver.js +3 -8
- package/dist/daemon/review/finish.js +1 -122
- package/dist/daemon/review/sweep.js +1 -18
- package/dist/daemon/startup-policy.js +1 -1
- package/dist/daemon/supervise-cadence.js +1 -6
- package/dist/hook-authoring.js +5 -447
- package/dist/hook-process.js +1 -34
- package/dist/index.js +1 -52
- package/dist/migrations/001-surfaces-frontmatter.js +1 -161
- package/dist/migrations/002-profile-project-memory.js +1 -72
- package/dist/migrations/003-repository-root-memory-identity/front-door.js +11 -231
- package/dist/migrations/003-repository-root-memory-identity/index.js +5 -513
- package/dist/migrations/003-repository-root-memory-identity/references.js +5 -469
- package/dist/migrations/003-repository-root-memory-identity/repository-facts.js +3 -349
- package/dist/migrations/activation.js +2 -89
- package/dist/migrations/convergent.js +2 -82
- package/dist/migrations/corpus.js +3 -483
- package/dist/migrations/frontmatter-splice.js +8 -176
- package/dist/migrations/profile-manifests.js +2 -70
- package/dist/migrations/registry.js +1 -42
- package/dist/migrations/runner.js +1 -85
- package/dist/migrations/types.js +0 -24
- package/dist/pi-extensions/broker-local.js +2 -106
- package/dist/pi-extensions/canvas-bash-valve.js +7 -461
- package/dist/pi-extensions/canvas-context-intro.js +2 -113
- package/dist/pi-extensions/canvas-doc-substrate.js +9 -178
- package/dist/pi-extensions/canvas-goal-capture.js +1 -83
- package/dist/pi-extensions/canvas-inbox-watcher.js +1 -1010
- package/dist/pi-extensions/canvas-passive-context.js +14 -203
- package/dist/pi-extensions/canvas-preview-result.js +2 -72
- package/dist/pi-extensions/canvas-prompt-scrub.js +2 -54
- package/dist/pi-extensions/canvas-recap.js +11 -405
- package/dist/pi-extensions/canvas-review-boundary.js +3 -63
- package/dist/pi-extensions/canvas-stamp.js +2 -77
- package/dist/pi-extensions/canvas-stophook.js +1 -643
- package/dist/pi-extensions/canvas-structured-output.js +13 -35
- package/dist/pi-extensions/canvas-tool-guide.js +9 -78
- package/dist/pi-extensions/envelope-merge.js +8 -29
- package/dist/prompts/review.js +20 -42
- package/dist/shared/birth-announcement.js +1 -25
- package/dist/shared/crtr-version.js +1 -18
- package/dist/shared/env.js +1 -214
- package/dist/shared/generated-context.js +11 -226
- package/dist/shared/predicates.js +1 -4
- package/dist/shared/shell-quote.js +1 -5
- package/dist/shared/tool-groups.js +1 -64
- package/dist/shared/working-activity.js +1 -27
- package/dist/suppress-experimental-warnings.js +1 -15
- package/dist/types.js +1 -185
- package/docs/public-api.md +10 -9
- package/package.json +6 -5
- package/runtime.lock.json +5 -5
- package/dist/api/__tests__/integration/client.test.d.ts +0 -1
- package/dist/api/__tests__/integration/client.test.js +0 -163
- package/dist/builtin-pi-packages/pi-crtr-extensions/__tests__/insights-active-init.test.ts +0 -98
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-commands.test.ts +0 -93
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/integration/provider-rotation.test.ts +0 -2530
- package/dist/clients/__tests__/helpers/human-daemon.d.ts +0 -11
- package/dist/clients/__tests__/helpers/human-daemon.js +0 -60
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.js +0 -97
- package/dist/clients/attach/__tests__/bash-call-width.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/bash-call-width.test.js +0 -38
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +0 -175
- package/dist/clients/attach/__tests__/completion-frecency.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/completion-frecency.test.js +0 -35
- package/dist/clients/attach/__tests__/context-message.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/context-message.test.js +0 -130
- package/dist/clients/attach/__tests__/crtr-output.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/crtr-output.test.js +0 -68
- package/dist/clients/attach/__tests__/diagram.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/diagram.test.js +0 -42
- package/dist/clients/attach/__tests__/edit-diff.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/edit-diff.test.js +0 -31
- package/dist/clients/attach/__tests__/frame-selection.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/frame-selection.test.js +0 -84
- package/dist/clients/attach/__tests__/group-activity.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/group-activity.test.js +0 -165
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.js +0 -83
- package/dist/clients/attach/__tests__/pane-tag-successor.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/pane-tag-successor.test.js +0 -56
- package/dist/clients/attach/__tests__/profile-files.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/profile-files.test.js +0 -21
- package/dist/clients/attach/__tests__/prompt-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/prompt-preview.test.js +0 -21
- package/dist/clients/attach/__tests__/ref-autocomplete.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/ref-autocomplete.test.js +0 -64
- package/dist/clients/attach/__tests__/titled-editor-paste.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-paste.test.js +0 -114
- package/dist/clients/attach/__tests__/titled-editor-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-preview.test.js +0 -83
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.js +0 -81
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.js +0 -135
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.js +0 -66
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +0 -35
- package/dist/clients/inbox/review/__tests__/review-core.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/review-core.test.js +0 -52
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.js +0 -100
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.d.ts +0 -1
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.js +0 -69
- package/dist/commands/__tests__/human.test.d.ts +0 -1
- package/dist/commands/__tests__/human.test.js +0 -172
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.js +0 -237
- package/dist/commands/__tests__/integration/migrate.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/migrate.test.js +0 -1330
- package/dist/commands/__tests__/node-message.test.d.ts +0 -1
- package/dist/commands/__tests__/node-message.test.js +0 -112
- package/dist/commands/__tests__/node-new.test.d.ts +0 -1
- package/dist/commands/__tests__/node-new.test.js +0 -58
- package/dist/commands/__tests__/revive-now-gate.test.d.ts +0 -1
- package/dist/commands/__tests__/revive-now-gate.test.js +0 -62
- package/dist/commands/__tests__/seam/daemon-status.test.d.ts +0 -1
- package/dist/commands/__tests__/seam/daemon-status.test.js +0 -29
- package/dist/commands/__tests__/surface-reload-target.test.d.ts +0 -1
- package/dist/commands/__tests__/surface-reload-target.test.js +0 -21
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.js +0 -379
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.js +0 -124
- package/dist/commands/memory/__tests__/repository-root-lint.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/repository-root-lint.test.js +0 -148
- package/dist/commands/sys/__tests__/config-model-ladders.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/config-model-ladders.test.js +0 -114
- package/dist/commands/sys/__tests__/setup-core.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/setup-core.test.js +0 -45
- package/dist/commands/sys/__tests__/sync-project-guidance.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/sync-project-guidance.test.js +0 -244
- package/dist/core/__tests__/bash-guard.test.d.ts +0 -1
- package/dist/core/__tests__/bash-guard.test.js +0 -190
- package/dist/core/__tests__/boot-fault-attempt.test.d.ts +0 -1
- package/dist/core/__tests__/boot-fault-attempt.test.js +0 -105
- package/dist/core/__tests__/boot.test.d.ts +0 -1
- package/dist/core/__tests__/boot.test.js +0 -274
- package/dist/core/__tests__/branded-host-concurrency.test.d.ts +0 -1
- package/dist/core/__tests__/branded-host-concurrency.test.js +0 -72
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +0 -75
- package/dist/core/__tests__/broker-launch-candidates.test.d.ts +0 -1
- package/dist/core/__tests__/broker-launch-candidates.test.js +0 -311
- package/dist/core/__tests__/broker-preflight.test.d.ts +0 -1
- package/dist/core/__tests__/broker-preflight.test.js +0 -95
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.d.ts +0 -1
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.js +0 -82
- package/dist/core/__tests__/broker-turn-admission.test.d.ts +0 -1
- package/dist/core/__tests__/broker-turn-admission.test.js +0 -44
- package/dist/core/__tests__/canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-db-boundary.test.js +0 -46
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +0 -710
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.js +0 -310
- package/dist/core/__tests__/canvas-inbox-watcher.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher.test.js +0 -397
- package/dist/core/__tests__/canvas.test.d.ts +0 -1
- package/dist/core/__tests__/canvas.test.js +0 -138
- package/dist/core/__tests__/child-death-wake.test.d.ts +0 -1
- package/dist/core/__tests__/child-death-wake.test.js +0 -153
- package/dist/core/__tests__/cli-help-contract.test.d.ts +0 -1
- package/dist/core/__tests__/cli-help-contract.test.js +0 -152
- package/dist/core/__tests__/close.test.d.ts +0 -1
- package/dist/core/__tests__/close.test.js +0 -284
- package/dist/core/__tests__/collectible.test.d.ts +0 -1
- package/dist/core/__tests__/collectible.test.js +0 -89
- package/dist/core/__tests__/config-change-delta.test.d.ts +0 -1
- package/dist/core/__tests__/config-change-delta.test.js +0 -108
- package/dist/core/__tests__/context-intro.test.d.ts +0 -1
- package/dist/core/__tests__/context-intro.test.js +0 -123
- package/dist/core/__tests__/cron-armed-context-failure.test.d.ts +0 -1
- package/dist/core/__tests__/cron-armed-context-failure.test.js +0 -150
- package/dist/core/__tests__/cron-held-settlement.test.d.ts +0 -1
- package/dist/core/__tests__/cron-held-settlement.test.js +0 -240
- package/dist/core/__tests__/cron-node-sink-parked-root.test.d.ts +0 -1
- package/dist/core/__tests__/cron-node-sink-parked-root.test.js +0 -166
- package/dist/core/__tests__/cron-self-cancel-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/cron-self-cancel-delivery.test.js +0 -84
- package/dist/core/__tests__/cron-timeout-descendants.test.d.ts +0 -1
- package/dist/core/__tests__/cron-timeout-descendants.test.js +0 -114
- package/dist/core/__tests__/daemon-boot.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-boot.test.js +0 -422
- package/dist/core/__tests__/daemon-wedge.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-wedge.test.js +0 -106
- package/dist/core/__tests__/dead-node-policy-table.test.d.ts +0 -1
- package/dist/core/__tests__/dead-node-policy-table.test.js +0 -77
- package/dist/core/__tests__/events-contract.test.d.ts +0 -1
- package/dist/core/__tests__/events-contract.test.js +0 -76
- package/dist/core/__tests__/extension-abort.test.d.ts +0 -1
- package/dist/core/__tests__/extension-abort.test.js +0 -21
- package/dist/core/__tests__/fault-classifier.test.d.ts +0 -1
- package/dist/core/__tests__/fault-classifier.test.js +0 -138
- package/dist/core/__tests__/fixtures/api-server-host.d.ts +0 -1
- package/dist/core/__tests__/fixtures/api-server-host.js +0 -47
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.js +0 -34
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.js +0 -32
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +0 -347
- package/dist/core/__tests__/fixtures/fake-engine.js +0 -1509
- package/dist/core/__tests__/fixtures/fake-pi-host.d.ts +0 -2
- package/dist/core/__tests__/fixtures/fake-pi-host.js +0 -311
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.d.ts +0 -1
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.js +0 -75
- package/dist/core/__tests__/fixtures/metadata-migration-race.d.ts +0 -1
- package/dist/core/__tests__/fixtures/metadata-migration-race.js +0 -49
- package/dist/core/__tests__/focuses.test.d.ts +0 -1
- package/dist/core/__tests__/focuses.test.js +0 -113
- package/dist/core/__tests__/fs-utils.test.d.ts +0 -1
- package/dist/core/__tests__/fs-utils.test.js +0 -50
- package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -43
- package/dist/core/__tests__/helpers/broker-clients.js +0 -174
- package/dist/core/__tests__/helpers/fleet.d.ts +0 -12
- package/dist/core/__tests__/helpers/fleet.js +0 -50
- package/dist/core/__tests__/helpers/harness.d.ts +0 -124
- package/dist/core/__tests__/helpers/harness.js +0 -806
- package/dist/core/__tests__/helpers/viewer-panes.d.ts +0 -12
- package/dist/core/__tests__/helpers/viewer-panes.js +0 -133
- package/dist/core/__tests__/history-inbox.test.d.ts +0 -1
- package/dist/core/__tests__/history-inbox.test.js +0 -121
- package/dist/core/__tests__/human-action-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/human-action-delivery.test.js +0 -162
- package/dist/core/__tests__/human-actions.test.d.ts +0 -1
- package/dist/core/__tests__/human-actions.test.js +0 -120
- package/dist/core/__tests__/inline-memory-refs.test.d.ts +0 -1
- package/dist/core/__tests__/inline-memory-refs.test.js +0 -225
- package/dist/core/__tests__/integration/broker-fork-seam.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-fork-seam.test.js +0 -193
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.js +0 -750
- package/dist/core/__tests__/integration/broker-snapshot-history.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-snapshot-history.test.js +0 -288
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.js +0 -103
- package/dist/core/__tests__/integration/command-plugins.test.d.ts +0 -1
- package/dist/core/__tests__/integration/command-plugins.test.js +0 -1200
- package/dist/core/__tests__/integration/deferred-no-wake.test.d.ts +0 -1
- package/dist/core/__tests__/integration/deferred-no-wake.test.js +0 -610
- package/dist/core/__tests__/integration/flagship-lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/flagship-lifecycle.test.js +0 -264
- package/dist/core/__tests__/integration/fresh-home-commands.test.d.ts +0 -1
- package/dist/core/__tests__/integration/fresh-home-commands.test.js +0 -49
- package/dist/core/__tests__/integration/git-optional-locks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/git-optional-locks.test.js +0 -81
- package/dist/core/__tests__/integration/host-teardown-process-group.test.d.ts +0 -1
- package/dist/core/__tests__/integration/host-teardown-process-group.test.js +0 -480
- package/dist/core/__tests__/integration/lifecycle-hooks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/lifecycle-hooks.test.js +0 -498
- package/dist/core/__tests__/integration/live-mutation-verbs.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation-verbs.test.js +0 -180
- package/dist/core/__tests__/integration/live-mutation.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation.test.js +0 -173
- package/dist/core/__tests__/integration/plugin-revalidate.test.d.ts +0 -1
- package/dist/core/__tests__/integration/plugin-revalidate.test.js +0 -359
- package/dist/core/__tests__/integration/profile-pause.test.d.ts +0 -1
- package/dist/core/__tests__/integration/profile-pause.test.js +0 -115
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.js +0 -151
- package/dist/core/__tests__/integration/revive.test.d.ts +0 -1
- package/dist/core/__tests__/integration/revive.test.js +0 -615
- package/dist/core/__tests__/integration/spawn-root.test.d.ts +0 -1
- package/dist/core/__tests__/integration/spawn-root.test.js +0 -536
- package/dist/core/__tests__/integration/subscription-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/integration/subscription-delivery.test.js +0 -132
- package/dist/core/__tests__/integration/tmux-surface.test.d.ts +0 -1
- package/dist/core/__tests__/integration/tmux-surface.test.js +0 -330
- package/dist/core/__tests__/integration/worktree-land.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-land.test.js +0 -607
- package/dist/core/__tests__/integration/worktree-reap.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-reap.test.js +0 -842
- package/dist/core/__tests__/kickoff.test.d.ts +0 -1
- package/dist/core/__tests__/kickoff.test.js +0 -196
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.js +0 -62
- package/dist/core/__tests__/lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle.test.js +0 -176
- package/dist/core/__tests__/live-lifecycle-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/live-lifecycle-prompt.test.js +0 -63
- package/dist/core/__tests__/memory-resolver-precedence.test.d.ts +0 -1
- package/dist/core/__tests__/memory-resolver-precedence.test.js +0 -228
- package/dist/core/__tests__/migration.test.d.ts +0 -1
- package/dist/core/__tests__/migration.test.js +0 -946
- package/dist/core/__tests__/model-pin-durability.test.d.ts +0 -1
- package/dist/core/__tests__/model-pin-durability.test.js +0 -195
- package/dist/core/__tests__/model-routes-config.test.d.ts +0 -1
- package/dist/core/__tests__/model-routes-config.test.js +0 -150
- package/dist/core/__tests__/nested-store-discovery.test.d.ts +0 -1
- package/dist/core/__tests__/nested-store-discovery.test.js +0 -89
- package/dist/core/__tests__/node-outcome.test.d.ts +0 -1
- package/dist/core/__tests__/node-outcome.test.js +0 -246
- package/dist/core/__tests__/on-read-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-crouter-home-fence.test.js +0 -66
- package/dist/core/__tests__/on-read-dedup-resume.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-dedup-resume.test.js +0 -132
- package/dist/core/__tests__/on-read-nested-store.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-nested-store.test.js +0 -135
- package/dist/core/__tests__/parse-argv-stdin-secret.test.d.ts +0 -1
- package/dist/core/__tests__/parse-argv-stdin-secret.test.js +0 -68
- package/dist/core/__tests__/passive-subscription.test.d.ts +0 -1
- package/dist/core/__tests__/passive-subscription.test.js +0 -120
- package/dist/core/__tests__/pid-identity-match.test.d.ts +0 -1
- package/dist/core/__tests__/pid-identity-match.test.js +0 -145
- package/dist/core/__tests__/pid-zombie.test.d.ts +0 -1
- package/dist/core/__tests__/pid-zombie.test.js +0 -42
- package/dist/core/__tests__/plugin-kinds.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-kinds.test.js +0 -182
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.js +0 -43
- package/dist/core/__tests__/plugin-page-components.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-page-components.test.js +0 -159
- package/dist/core/__tests__/preview-mirror-cap.test.d.ts +0 -1
- package/dist/core/__tests__/preview-mirror-cap.test.js +0 -53
- package/dist/core/__tests__/preview-registry-sync.test.d.ts +0 -1
- package/dist/core/__tests__/preview-registry-sync.test.js +0 -107
- package/dist/core/__tests__/profile-project-memory-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/profile-project-memory-delivery.test.js +0 -644
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.d.ts +0 -1
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.js +0 -91
- package/dist/core/__tests__/prune.test.d.ts +0 -1
- package/dist/core/__tests__/prune.test.js +0 -243
- package/dist/core/__tests__/push-final-guard.test.d.ts +0 -1
- package/dist/core/__tests__/push-final-guard.test.js +0 -191
- package/dist/core/__tests__/relaunch-root.test.d.ts +0 -1
- package/dist/core/__tests__/relaunch-root.test.js +0 -249
- package/dist/core/__tests__/remote-canvas-target.test.d.ts +0 -1
- package/dist/core/__tests__/remote-canvas-target.test.js +0 -93
- package/dist/core/__tests__/repository-association.test.d.ts +0 -1
- package/dist/core/__tests__/repository-association.test.js +0 -153
- package/dist/core/__tests__/repository-root-identity.test.d.ts +0 -1
- package/dist/core/__tests__/repository-root-identity.test.js +0 -223
- package/dist/core/__tests__/respawn-throttle.test.d.ts +0 -1
- package/dist/core/__tests__/respawn-throttle.test.js +0 -20
- package/dist/core/__tests__/review-model-floor.test.d.ts +0 -1
- package/dist/core/__tests__/review-model-floor.test.js +0 -83
- package/dist/core/__tests__/revive-all.test.d.ts +0 -1
- package/dist/core/__tests__/revive-all.test.js +0 -157
- package/dist/core/__tests__/revive-capacity.test.d.ts +0 -1
- package/dist/core/__tests__/revive-capacity.test.js +0 -184
- package/dist/core/__tests__/revive-parked-fresh.test.d.ts +0 -1
- package/dist/core/__tests__/revive-parked-fresh.test.js +0 -176
- package/dist/core/__tests__/scope-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/scope-crouter-home-fence.test.js +0 -55
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +0 -262
- package/dist/core/__tests__/seam/broker-attach-stream.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-stream.test.js +0 -176
- package/dist/core/__tests__/seam/broker-cap-freeze.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-cap-freeze.test.js +0 -155
- package/dist/core/__tests__/seam/broker-crash-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-crash-teardown.test.js +0 -131
- package/dist/core/__tests__/seam/broker-pane-resolution.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-pane-resolution.test.js +0 -204
- package/dist/core/__tests__/seam/broker-provider-retry.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-provider-retry.test.js +0 -686
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.js +0 -82
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.js +0 -50
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.js +0 -138
- package/dist/core/__tests__/seam/dormancy-release.test.d.ts +0 -1
- package/dist/core/__tests__/seam/dormancy-release.test.js +0 -516
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.js +0 -65
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.d.ts +0 -1
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.js +0 -84
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.d.ts +0 -1
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.js +0 -160
- package/dist/core/__tests__/seam/node-outcome-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/node-outcome-delivery.test.js +0 -177
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.d.ts +0 -1
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.js +0 -31
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.d.ts +0 -1
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.js +0 -60
- package/dist/core/__tests__/seam/self-close-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/self-close-teardown.test.js +0 -49
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.d.ts +0 -1
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.js +0 -100
- package/dist/core/__tests__/secrets.test.d.ts +0 -1
- package/dist/core/__tests__/secrets.test.js +0 -49
- package/dist/core/__tests__/self-update.test.d.ts +0 -1
- package/dist/core/__tests__/self-update.test.js +0 -46
- package/dist/core/__tests__/session-branch.test.d.ts +0 -1
- package/dist/core/__tests__/session-branch.test.js +0 -61
- package/dist/core/__tests__/session-cycles.test.d.ts +0 -1
- package/dist/core/__tests__/session-cycles.test.js +0 -133
- package/dist/core/__tests__/session-model.test.d.ts +0 -1
- package/dist/core/__tests__/session-model.test.js +0 -111
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.d.ts +0 -1
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +0 -71
- package/dist/core/__tests__/stdin-body-no-discard.test.d.ts +0 -1
- package/dist/core/__tests__/stdin-body-no-discard.test.js +0 -33
- package/dist/core/__tests__/stdout-errors.test.d.ts +0 -1
- package/dist/core/__tests__/stdout-errors.test.js +0 -16
- package/dist/core/__tests__/stop-guard.test.d.ts +0 -1
- package/dist/core/__tests__/stop-guard.test.js +0 -237
- package/dist/core/__tests__/stream-watchdog.test.d.ts +0 -1
- package/dist/core/__tests__/stream-watchdog.test.js +0 -154
- package/dist/core/__tests__/subscription-pool-credential-guard.test.d.ts +0 -1
- package/dist/core/__tests__/subscription-pool-credential-guard.test.js +0 -95
- package/dist/core/__tests__/tmux-driver-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/tmux-driver-boundary.test.js +0 -50
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.d.ts +0 -1
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.js +0 -54
- package/dist/core/__tests__/worktree-landing.test.d.ts +0 -1
- package/dist/core/__tests__/worktree-landing.test.js +0 -11
- package/dist/core/__tests__/yield-ensures-daemon.test.d.ts +0 -1
- package/dist/core/__tests__/yield-ensures-daemon.test.js +0 -55
- package/dist/core/broker-client/__tests__/transport-relay.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-relay.test.js +0 -214
- package/dist/core/broker-client/__tests__/transport-socket.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-socket.test.js +0 -73
- package/dist/core/canvas/__tests__/attention.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/attention.test.js +0 -83
- package/dist/core/canvas/__tests__/history-transcript.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/history-transcript.test.js +0 -102
- package/dist/core/canvas/__tests__/remote-canvas-source.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-canvas-source.test.js +0 -328
- package/dist/core/canvas/__tests__/remote-transport.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-transport.test.js +0 -97
- package/dist/core/canvas/__tests__/render-remote.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/render-remote.test.js +0 -243
- package/dist/core/canvas/__tests__/session-window.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/session-window.test.js +0 -70
- package/dist/core/feed/__tests__/inbox-migrate.test.d.ts +0 -1
- package/dist/core/feed/__tests__/inbox-migrate.test.js +0 -49
- package/dist/core/human/__tests__/page-catalog.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-catalog.test.js +0 -20
- package/dist/core/human/__tests__/page-html-markdown.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-html-markdown.test.js +0 -48
- package/dist/core/human/__tests__/page.test.d.ts +0 -1
- package/dist/core/human/__tests__/page.test.js +0 -92
- package/dist/core/keybindings/__tests__/resolve.test.d.ts +0 -1
- package/dist/core/keybindings/__tests__/resolve.test.js +0 -171
- package/dist/core/profiles/__tests__/env-store.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/env-store.test.js +0 -99
- package/dist/core/profiles/__tests__/fuzzy-match.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/fuzzy-match.test.js +0 -51
- package/dist/core/profiles/__tests__/root-profile.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/root-profile.test.js +0 -59
- package/dist/core/review/__tests__/capture-origin.test.d.ts +0 -1
- package/dist/core/review/__tests__/capture-origin.test.js +0 -150
- package/dist/core/review/__tests__/comments.test.d.ts +0 -1
- package/dist/core/review/__tests__/comments.test.js +0 -116
- package/dist/core/review/__tests__/remap.test.d.ts +0 -1
- package/dist/core/review/__tests__/remap.test.js +0 -177
- package/dist/core/review/__tests__/stage-identity.test.d.ts +0 -1
- package/dist/core/review/__tests__/stage-identity.test.js +0 -150
- package/dist/core/runtime/__tests__/engine-route.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/engine-route.test.js +0 -36
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.js +0 -45
- package/dist/core/runtime/__tests__/node-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/node-env.test.js +0 -73
- package/dist/core/runtime/__tests__/spawn-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/spawn-env.test.js +0 -259
- package/dist/core/substrate/__tests__/surface-match-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-command.test.js +0 -89
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.js +0 -28
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.js +0 -92
- package/dist/daemon/__tests__/autostart-storm.test.d.ts +0 -1
- package/dist/daemon/__tests__/autostart-storm.test.js +0 -128
- package/dist/daemon/__tests__/broker-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/broker-ownership.test.js +0 -25
- package/dist/daemon/__tests__/daemon-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/daemon-ownership.test.js +0 -27
- package/dist/daemon/__tests__/helpers/source-daemon.d.ts +0 -30
- package/dist/daemon/__tests__/helpers/source-daemon.js +0 -176
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.js +0 -83
- package/dist/daemon/__tests__/integration/migration-startup.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/migration-startup.test.js +0 -127
- package/dist/daemon/__tests__/node-deadline-lane.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-deadline-lane.test.js +0 -77
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.js +0 -146
- package/dist/daemon/__tests__/node-outcome-delivery.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-delivery.test.js +0 -116
- package/dist/daemon/__tests__/reconciler-signature.test.d.ts +0 -1
- package/dist/daemon/__tests__/reconciler-signature.test.js +0 -37
- package/dist/daemon/__tests__/subtree-filter-freshness.test.d.ts +0 -1
- package/dist/daemon/__tests__/subtree-filter-freshness.test.js +0 -63
- package/dist/daemon/__tests__/thaw-order.test.d.ts +0 -1
- package/dist/daemon/__tests__/thaw-order.test.js +0 -55
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.js +0 -58
- package/dist/daemon/api/__tests__/broker-settle-park.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/broker-settle-park.test.js +0 -175
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.js +0 -216
- package/dist/daemon/api/__tests__/error-seam.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/error-seam.test.js +0 -83
- package/dist/daemon/api/__tests__/model-config.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/model-config.test.js +0 -73
- package/dist/daemon/api/__tests__/node-create-description.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-create-description.test.js +0 -107
- package/dist/daemon/api/__tests__/node-model-validation.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-model-validation.test.js +0 -183
- package/dist/daemon/api/__tests__/nodes-activity-query.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/nodes-activity-query.test.js +0 -99
- package/dist/daemon/api/__tests__/profile-launch-gates.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-launch-gates.test.js +0 -172
- package/dist/daemon/api/__tests__/profile-metadata-route.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-metadata-route.test.js +0 -95
- package/dist/daemon/api/__tests__/reopen-delivery.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/reopen-delivery.test.js +0 -260
- package/dist/daemon/api/__tests__/seam/api-server.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/api-server.test.js +0 -442
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.js +0 -310
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.js +0 -351
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.js +0 -159
- package/dist/daemon/api/__tests__/seam/profile-delete.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/profile-delete.test.js +0 -372
- package/dist/daemon/api/__tests__/submit-result.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/submit-result.test.js +0 -215
- package/dist/migrations/__tests__/activation-concurrency.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation-concurrency.test.js +0 -146
- package/dist/migrations/__tests__/activation.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation.test.js +0 -152
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.d.ts +0 -1
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.js +0 -149
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.js +0 -86
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +0 -364
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.js +0 -106
- package/dist/pi-extensions/__tests__/canvas-recap.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-recap.test.js +0 -62
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +0 -432
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +0 -152
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +0 -88
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.js +0 -96
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.js +0 -133
- package/dist/pi-extensions/__tests__/pre-command-gate.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/pre-command-gate.test.js +0 -232
- package/dist/shared/__tests__/env-boundary.test.d.ts +0 -1
- package/dist/shared/__tests__/env-boundary.test.js +0 -95
- package/dist/shared/__tests__/generated-context-grammar.test.d.ts +0 -1
- package/dist/shared/__tests__/generated-context-grammar.test.js +0 -80
- package/docs/compat/hearth-crtr-v1.md +0 -179
- package/docs/compat/hearth-crtr-v2.md +0 -177
- package/docs/compat/hearth-crtr-v3.md +0 -176
- package/docs/compat/hearth-crtr-v4.md +0 -182
- package/docs/compat/hearth-crtr-v5.md +0 -169
|
@@ -1,303 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
// v21). One-module-per-table: ALL SQL touching
|
|
3
|
-
// `crons`/`cron_runs` lives HERE and nowhere else.
|
|
4
|
-
//
|
|
5
|
-
// A CRON is the one scheduling primitive of the cron spec: run this bash,
|
|
6
|
-
// then. The row decides WHEN (fire_at, advanced by the daemon for a
|
|
7
|
-
// recurrence) and snapshots the execution context (cwd/env/profile) at arm
|
|
8
|
-
// time so a job never changes behavior because its creator went away.
|
|
9
|
-
// `created_by` is provenance only — no FK, never cascades. `anchor_node` is
|
|
10
|
-
// the opt-in node coupling carrying the sole FK (ON DELETE CASCADE).
|
|
11
|
-
//
|
|
12
|
-
// Each function is a single-statement query mirroring the canvas.ts atomic-
|
|
13
|
-
// setter pattern — no read-modify-write, serialized by WAL — except the two
|
|
14
|
-
// deliberate multi-statement boundaries under withCanvasWrite (cancelCron's
|
|
15
|
-
// kill-then-delete, recordCronRun's insert-then-prune ring).
|
|
16
|
-
//
|
|
17
|
-
// `cron_id` is CALLER-SUPPLIED (the daemon API handler mints it): the canvas
|
|
18
|
-
// layer never mints ids.
|
|
19
|
-
//
|
|
20
|
-
// Lease primitives (acquireCronRunLease/releaseCronRunLease/runningCrons)
|
|
21
|
-
// serve the daemon-owned run executor in src/daemon/cron-run.ts.
|
|
22
|
-
import { openDb, withCanvasWrite } from './db.js';
|
|
23
|
-
import { capturePidIdentities, identitiesMatch, killProcessGroup } from './pid.js';
|
|
24
|
-
import { isProfilePaused } from '../profiles/manifest.js';
|
|
25
|
-
/** Ring bound for `cron_runs`: recordCronRun prunes each cron's history to
|
|
26
|
-
* its most recent this-many rows. */
|
|
27
|
-
export const CRON_RUN_RING = 20;
|
|
28
|
-
function cronFrom(r) {
|
|
29
|
-
return {
|
|
30
|
-
cron_id: r['cron_id'],
|
|
31
|
-
name: r['name'],
|
|
32
|
-
created_by: r['created_by'] ?? null,
|
|
33
|
-
command: r['command'],
|
|
34
|
-
fire_at: r['fire_at'],
|
|
35
|
-
recur: r['recur'] ?? null,
|
|
36
|
-
tz: r['tz'] ?? null,
|
|
37
|
-
expires_at: r['expires_at'] ?? null,
|
|
38
|
-
anchor_node: r['anchor_node'] ?? null,
|
|
39
|
-
cancel_on_wake: Number(r['cancel_on_wake']) !== 0,
|
|
40
|
-
cwd: r['cwd'],
|
|
41
|
-
env_json: r['env_json'] ?? null,
|
|
42
|
-
profile: r['profile'] ?? null,
|
|
43
|
-
scope: r['scope'],
|
|
44
|
-
run_timeout_s: Number(r['run_timeout_s']),
|
|
45
|
-
overlap: r['overlap'],
|
|
46
|
-
on_output: r['on_output'],
|
|
47
|
-
sink: r['sink'],
|
|
48
|
-
tier: r['tier'],
|
|
49
|
-
last_output_hash: r['last_output_hash'] ?? null,
|
|
50
|
-
held: Number(r['held']) !== 0,
|
|
51
|
-
last_poke_at: r['last_poke_at'] ?? null,
|
|
52
|
-
state: r['state'],
|
|
53
|
-
run_state: r['run_state'],
|
|
54
|
-
run_pid: r['run_pid'] ?? null,
|
|
55
|
-
run_pid_identity: r['run_pid_identity'] ?? null,
|
|
56
|
-
run_started_at: r['run_started_at'] ?? null,
|
|
57
|
-
run_lease_owner: r['run_lease_owner'] ?? null,
|
|
58
|
-
run_out_of_band: Number(r['run_out_of_band']) !== 0,
|
|
59
|
-
created: r['created'],
|
|
60
|
-
updated: r['updated'],
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
/** Decode the stored cron sink JSON. A malformed or unrecognised value has no sink. */
|
|
64
|
-
export function parseCronSink(sinkJson) {
|
|
65
|
-
try {
|
|
66
|
-
const sink = JSON.parse(sinkJson);
|
|
67
|
-
if (typeof sink['node'] === 'string')
|
|
68
|
-
return { kind: 'node', node: sink['node'] };
|
|
69
|
-
if (typeof sink['spawn'] === 'string')
|
|
70
|
-
return { kind: 'spawn', spawn: sink['spawn'] };
|
|
71
|
-
if (sink['human'] === true)
|
|
72
|
-
return { kind: 'human' };
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
// A malformed stored value cannot deliver but remains listable and runnable.
|
|
76
|
-
}
|
|
77
|
-
return null;
|
|
78
|
-
}
|
|
79
|
-
/** Render a stored cron sink as the arm-time CLI spec, or null when it has no destination. */
|
|
80
|
-
export function cronSinkDisplay(sinkJson) {
|
|
81
|
-
const sink = parseCronSink(sinkJson);
|
|
82
|
-
if (sink === null)
|
|
83
|
-
return null;
|
|
84
|
-
switch (sink.kind) {
|
|
85
|
-
case 'node':
|
|
86
|
-
return `node:${sink.node}`;
|
|
87
|
-
case 'spawn':
|
|
88
|
-
return `spawn:${sink.spawn}`;
|
|
89
|
-
case 'human':
|
|
90
|
-
return 'human';
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
// Signal safety
|
|
94
|
-
/** The ONLY sanctioned way to signal a cron run's process group from a stored
|
|
95
|
-
* row. Re-captures the CURRENT identity of `run_pid` and signals only when it
|
|
96
|
-
* MATCHES the fingerprint recorded at lease acquisition. Returns whether the
|
|
97
|
-
* signal was sent.
|
|
98
|
-
*
|
|
99
|
-
* FAIL-CLOSED, unlike the rest of this repo's pid handling. Elsewhere the
|
|
100
|
-
* baseline was captured by the same daemon life that is now signaling, so an
|
|
101
|
-
* absent baseline or a failed `ps` probe means "no evidence of reuse" and
|
|
102
|
-
* failing open to the signal is right. A cron lease outlives its daemon: after
|
|
103
|
-
* a SIGKILL or a host reboot, `run_pid` is a number from a dead kernel's pid
|
|
104
|
-
* space that the OS has very likely handed to an unrelated process, and
|
|
105
|
-
* `isPidAlive` cheerfully confirms that stranger. So here the ONLY thing that
|
|
106
|
-
* authorizes a kill is positive proof of sameness — no identity (pre-v23 row,
|
|
107
|
-
* capture failed), no `ps` table (probe failed), no row for the pid (process
|
|
108
|
-
* gone), or a mismatch (reused) all mean: do not signal. The caller settles the
|
|
109
|
-
* lease instead; the worst case is a leaked runaway process, versus SIGTERMing
|
|
110
|
-
* a stranger's process group. */
|
|
111
|
-
export function killLeasedCronRun(c, signal = 'SIGTERM') {
|
|
112
|
-
if (!verifyLeasedCronRun(c))
|
|
113
|
-
return false;
|
|
114
|
-
killProcessGroup(c.run_pid, signal);
|
|
115
|
-
return true;
|
|
116
|
-
}
|
|
117
|
-
/** Positive proof that `run_pid` is STILL the process this lease launched:
|
|
118
|
-
* a stored identity exists, the `ps` probe succeeded, the pid has a row, and
|
|
119
|
-
* its current identity matches. Anything else — including "we could not tell"
|
|
120
|
-
* — is `false`, which is what makes `killLeasedCronRun` fail closed. */
|
|
121
|
-
export function verifyLeasedCronRun(c) {
|
|
122
|
-
const pid = c.run_pid;
|
|
123
|
-
if (pid == null || c.run_pid_identity == null)
|
|
124
|
-
return false;
|
|
125
|
-
const table = capturePidIdentities([pid]);
|
|
126
|
-
if (table === null)
|
|
127
|
-
return false; // probe itself failed — no information
|
|
128
|
-
const current = table.get(pid);
|
|
129
|
-
if (current === undefined)
|
|
130
|
-
return false; // pid genuinely gone
|
|
131
|
-
return identitiesMatch(current, c.run_pid_identity);
|
|
132
|
-
}
|
|
133
|
-
// Writes
|
|
134
|
-
/** INSERT one cron row from the pinned arm spec, returning its (caller-
|
|
135
|
-
* supplied) `cron_id` plus the ids of any deadline it displaced. Stamps
|
|
136
|
-
* `created`/`updated`; lease fields start idle.
|
|
137
|
-
*
|
|
138
|
-
* ONE DEADLINE PER ANCHOR: a `cancel_on_wake` arm REPLACES the anchor's
|
|
139
|
-
* pending cancel-on-wake cron rather than stacking a second one — re-arming a
|
|
140
|
-
* bounded wait moves the deadline. This is the invariant the dropped
|
|
141
|
-
* `triggers` partial unique index carried, and `idx_crons_deadline`
|
|
142
|
-
* (`crons(anchor_node) WHERE cancel_on_wake = 1`) is still its structural
|
|
143
|
-
* backstop; the displace-then-insert runs inside ONE canvas write boundary so
|
|
144
|
-
* two concurrent arms cannot both pass. Only the anchor's own cancel-on-wake
|
|
145
|
-
* rows are displaced — a standing declarative cron on the same anchor is
|
|
146
|
-
* untouched. Any displaced in-flight run's process group is killed first (the
|
|
147
|
-
* cancelCron discipline). */
|
|
148
|
-
export function armCron(spec) {
|
|
149
|
-
return withCanvasWrite((db) => {
|
|
150
|
-
const replaced = [];
|
|
151
|
-
if (spec.cancel_on_wake && spec.anchor_node !== null) {
|
|
152
|
-
const rows = db
|
|
153
|
-
.prepare('SELECT * FROM crons WHERE anchor_node = ? AND cancel_on_wake = 1')
|
|
154
|
-
.all(spec.anchor_node).map(cronFrom);
|
|
155
|
-
for (const c of rows) {
|
|
156
|
-
if (c.run_state === 'running')
|
|
157
|
-
killLeasedCronRun(c);
|
|
158
|
-
db.prepare('DELETE FROM crons WHERE cron_id = ?').run(c.cron_id);
|
|
159
|
-
replaced.push(c.cron_id);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
insertCron(db, spec);
|
|
163
|
-
return { cron_id: spec.cron_id, replaced };
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
function insertCron(db, spec) {
|
|
167
|
-
const now = new Date().toISOString();
|
|
168
|
-
db
|
|
169
|
-
.prepare(`INSERT INTO crons (
|
|
1
|
+
var f=Object.defineProperty;var t=(e,n)=>f(e,"name",{value:n,configurable:!0});import{openDb as a,withCanvasWrite as s}from"./db.js";import{capturePidIdentities as d,identitiesMatch as R,killProcessGroup as m}from"./pid.js";import{isProfilePaused as D}from"../profiles/manifest.js";const S=20;function u(e){return{cron_id:e.cron_id,name:e.name,created_by:e.created_by??null,command:e.command,fire_at:e.fire_at,recur:e.recur??null,tz:e.tz??null,expires_at:e.expires_at??null,anchor_node:e.anchor_node??null,cancel_on_wake:Number(e.cancel_on_wake)!==0,cwd:e.cwd,env_json:e.env_json??null,profile:e.profile??null,scope:e.scope,run_timeout_s:Number(e.run_timeout_s),overlap:e.overlap,on_output:e.on_output,sink:e.sink,tier:e.tier,last_output_hash:e.last_output_hash??null,held:Number(e.held)!==0,last_poke_at:e.last_poke_at??null,state:e.state,run_state:e.run_state,run_pid:e.run_pid??null,run_pid_identity:e.run_pid_identity??null,run_started_at:e.run_started_at??null,run_lease_owner:e.run_lease_owner??null,run_out_of_band:Number(e.run_out_of_band)!==0,created:e.created,updated:e.updated}}t(u,"cronFrom");function l(e){try{const n=JSON.parse(e);if(typeof n.node=="string")return{kind:"node",node:n.node};if(typeof n.spawn=="string")return{kind:"spawn",spawn:n.spawn};if(n.human===!0)return{kind:"human"}}catch{}return null}t(l,"parseCronSink");function x(e){const n=l(e);if(n===null)return null;switch(n.kind){case"node":return`node:${n.node}`;case"spawn":return`spawn:${n.spawn}`;case"human":return"human"}}t(x,"cronSinkDisplay");function c(e,n="SIGTERM"){return h(e)?(m(e.run_pid,n),!0):!1}t(c,"killLeasedCronRun");function h(e){const n=e.run_pid;if(n==null||e.run_pid_identity==null)return!1;const r=d([n]);if(r===null)return!1;const o=r.get(n);return o===void 0?!1:R(o,e.run_pid_identity)}t(h,"verifyLeasedCronRun");function k(e){return s(n=>{const r=[];if(e.cancel_on_wake&&e.anchor_node!==null){const o=n.prepare("SELECT * FROM crons WHERE anchor_node = ? AND cancel_on_wake = 1").all(e.anchor_node).map(u);for(const i of o)i.run_state==="running"&&c(i),n.prepare("DELETE FROM crons WHERE cron_id = ?").run(i.cron_id),r.push(i.cron_id)}return O(n,e),{cron_id:e.cron_id,replaced:r}})}t(k,"armCron");function O(e,n){const r=new Date().toISOString();e.prepare(`INSERT INTO crons (
|
|
170
2
|
cron_id, name, created_by, command, fire_at, recur, tz, expires_at,
|
|
171
3
|
anchor_node, cancel_on_wake, cwd, env_json, profile, scope,
|
|
172
4
|
run_timeout_s, overlap, on_output, sink, tier, created, updated
|
|
173
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
174
|
-
.run(spec.cron_id, spec.name, spec.created_by, spec.command, spec.fire_at, spec.recur, spec.tz, spec.expires_at, spec.anchor_node, spec.cancel_on_wake ? 1 : 0, spec.cwd, spec.env_json, spec.profile, spec.scope, spec.run_timeout_s, spec.overlap, spec.on_output, spec.sink, spec.tier, now, now);
|
|
175
|
-
}
|
|
176
|
-
/** SELECT one cron by id. */
|
|
177
|
-
export function getCron(cron_id) {
|
|
178
|
-
const row = openDb().prepare('SELECT * FROM crons WHERE cron_id = ?').get(cron_id);
|
|
179
|
-
return row === undefined ? null : cronFrom(row);
|
|
180
|
-
}
|
|
181
|
-
/** List crons for a scope, next-fire order. `{profile}` = that profile's
|
|
182
|
-
* profile-scoped rows; `{global:true}` = global-scoped rows only;
|
|
183
|
-
* `{all:true}` = every cron on the canvas. */
|
|
184
|
-
export function listCrons(scope) {
|
|
185
|
-
const db = openDb();
|
|
186
|
-
let rows;
|
|
187
|
-
if ('profile' in scope) {
|
|
188
|
-
rows = db
|
|
189
|
-
.prepare("SELECT * FROM crons WHERE scope = 'profile' AND profile = ? ORDER BY fire_at")
|
|
190
|
-
.all(scope.profile);
|
|
191
|
-
}
|
|
192
|
-
else if ('global' in scope) {
|
|
193
|
-
rows = db
|
|
194
|
-
.prepare("SELECT * FROM crons WHERE scope = 'global' ORDER BY fire_at")
|
|
195
|
-
.all();
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
rows = db.prepare('SELECT * FROM crons ORDER BY fire_at').all();
|
|
199
|
-
}
|
|
200
|
-
return rows.map(cronFrom);
|
|
201
|
-
}
|
|
202
|
-
/** DELETE one cron — the explicit user/surface cancel. Idempotent: an absent
|
|
203
|
-
* row is a no-op `false`. Kills any in-flight run process group before
|
|
204
|
-
* deleting unless the daemon has proved the caller is that exact run; then
|
|
205
|
-
* the process must finish and deliver its already-produced output. The lease
|
|
206
|
-
* acquisition still linearizes before this selection (the run is observed
|
|
207
|
-
* and killed) or after the delete (and loses the lease). The FK cascade reaps
|
|
208
|
-
* the cron's run history with it. */
|
|
209
|
-
export function cancelCron(cron_id, options) {
|
|
210
|
-
return withCanvasWrite((db) => {
|
|
211
|
-
const row = db.prepare('SELECT * FROM crons WHERE cron_id = ?').get(cron_id);
|
|
212
|
-
if (row === undefined)
|
|
213
|
-
return false;
|
|
214
|
-
const cron = cronFrom(row);
|
|
215
|
-
if (cron.run_state === 'running' && options?.preserveRunningProcess !== true)
|
|
216
|
-
killLeasedCronRun(cron);
|
|
217
|
-
db.prepare('DELETE FROM crons WHERE cron_id = ?').run(cron_id);
|
|
218
|
-
return true;
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
function profileCronWhere(profileId, anchorNodeIds) {
|
|
222
|
-
const anchors = [...new Set(anchorNodeIds)];
|
|
223
|
-
if (anchors.length === 0)
|
|
224
|
-
return { sql: 'profile = ?', params: [profileId] };
|
|
225
|
-
return {
|
|
226
|
-
sql: `profile = ? OR anchor_node IN (${anchors.map(() => '?').join(',')})`,
|
|
227
|
-
params: [profileId, ...anchors],
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
/** Cron ids a hard profile deletion will remove: matching execution profile,
|
|
231
|
-
* plus every row anchored to a node being deleted. */
|
|
232
|
-
export function cronIdsForProfileDeletion(profileId, anchorNodeIds) {
|
|
233
|
-
const where = profileCronWhere(profileId, anchorNodeIds);
|
|
234
|
-
return openDb()
|
|
235
|
-
.prepare(`SELECT cron_id FROM crons WHERE ${where.sql} ORDER BY created, cron_id`)
|
|
236
|
-
.all(...where.params).map(({ cron_id }) => cron_id);
|
|
237
|
-
}
|
|
238
|
-
/** Kill any leased matching/anchored runs, then delete their rows together. */
|
|
239
|
-
export function deleteCronsForProfile(profileId, anchorNodeIds) {
|
|
240
|
-
return withCanvasWrite((db) => {
|
|
241
|
-
const where = profileCronWhere(profileId, anchorNodeIds);
|
|
242
|
-
const rows = db
|
|
243
|
-
.prepare(`SELECT * FROM crons WHERE ${where.sql} ORDER BY created, cron_id`)
|
|
244
|
-
.all(...where.params).map(cronFrom);
|
|
245
|
-
for (const cron of rows) {
|
|
246
|
-
if (cron.run_state === 'running')
|
|
247
|
-
killLeasedCronRun(cron);
|
|
248
|
-
}
|
|
249
|
-
db.prepare(`DELETE FROM crons WHERE ${where.sql}`).run(...where.params);
|
|
250
|
-
return rows.map(({ cron_id }) => cron_id);
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
/** Cron ids whose snapshotted profile will be detached. */
|
|
254
|
-
export function cronIdsForProfileDetach(profileId) {
|
|
255
|
-
return openDb()
|
|
256
|
-
.prepare('SELECT cron_id FROM crons WHERE profile = ? ORDER BY created, cron_id')
|
|
257
|
-
.all(profileId).map(({ cron_id }) => cron_id);
|
|
258
|
-
}
|
|
259
|
-
/** Preserve matching crons while removing their deleted profile dependency. */
|
|
260
|
-
export function globalizeCronsForProfile(profileId) {
|
|
261
|
-
return withCanvasWrite((db) => {
|
|
262
|
-
const ids = db
|
|
263
|
-
.prepare('SELECT cron_id FROM crons WHERE profile = ? ORDER BY created, cron_id')
|
|
264
|
-
.all(profileId).map(({ cron_id }) => cron_id);
|
|
265
|
-
if (ids.length > 0) {
|
|
266
|
-
db.prepare("UPDATE crons SET profile = NULL, scope = 'global', updated = ? WHERE profile = ?")
|
|
267
|
-
.run(new Date().toISOString(), profileId);
|
|
268
|
-
}
|
|
269
|
-
return ids;
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
/** DELETE one cron by id — one-shot consumption after its run settles.
|
|
273
|
-
* Returns whether a live row was removed, so a consumer racing an explicit
|
|
274
|
-
* cancel can no-op instead of double-settling. */
|
|
275
|
-
export function consumeCron(cron_id) {
|
|
276
|
-
return openDb().prepare('DELETE FROM crons WHERE cron_id = ?').run(cron_id).changes > 0;
|
|
277
|
-
}
|
|
278
|
-
/** UPDATE `state` (active|paused). Returns whether a row changed — pausing an
|
|
279
|
-
* already-paused cron (or a gone one) reports `false`. Pausing does NOT kill
|
|
280
|
-
* an in-flight run: the run settles normally, the row just stops being due. */
|
|
281
|
-
export function setCronState(cron_id, state) {
|
|
282
|
-
return (openDb()
|
|
283
|
-
.prepare('UPDATE crons SET state = ?, updated = ? WHERE cron_id = ?')
|
|
284
|
-
.run(state, new Date().toISOString(), cron_id).changes > 0);
|
|
285
|
-
}
|
|
286
|
-
/** UPDATE `last_output_hash` — the on-change disposition's memory of the
|
|
287
|
-
* previous run's stdout. Written after EVERY settled run of an on-change
|
|
288
|
-
* cron, delivered or not. */
|
|
289
|
-
export function setCronLastOutputHash(cron_id, hash) {
|
|
290
|
-
openDb()
|
|
291
|
-
.prepare('UPDATE crons SET last_output_hash = ?, updated = ? WHERE cron_id = ?')
|
|
292
|
-
.run(hash, new Date().toISOString(), cron_id);
|
|
293
|
-
}
|
|
294
|
-
/** True when a cron can still wake this node. An active deadline is a wake
|
|
295
|
-
* source by its anchor; output delivery is a wake source by its decoded node
|
|
296
|
-
* sink. Scheduled rows must remain active and unexpired, while a leased run
|
|
297
|
-
* remains eligible through settlement even if it has since been paused or
|
|
298
|
-
* expired. */
|
|
299
|
-
export function hasPendingCronWake(nodeId) {
|
|
300
|
-
const rows = openDb().prepare(`SELECT anchor_node, cancel_on_wake, sink
|
|
5
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(n.cron_id,n.name,n.created_by,n.command,n.fire_at,n.recur,n.tz,n.expires_at,n.anchor_node,n.cancel_on_wake?1:0,n.cwd,n.env_json,n.profile,n.scope,n.run_timeout_s,n.overlap,n.on_output,n.sink,n.tier,r,r)}t(O,"insertCron");function g(e){const n=a().prepare("SELECT * FROM crons WHERE cron_id = ?").get(e);return n===void 0?null:u(n)}t(g,"getCron");function W(e){const n=a();let r;return"profile"in e?r=n.prepare("SELECT * FROM crons WHERE scope = 'profile' AND profile = ? ORDER BY fire_at").all(e.profile):"global"in e?r=n.prepare("SELECT * FROM crons WHERE scope = 'global' ORDER BY fire_at").all():r=n.prepare("SELECT * FROM crons ORDER BY fire_at").all(),r.map(u)}t(W,"listCrons");function A(e,n){return s(r=>{const o=r.prepare("SELECT * FROM crons WHERE cron_id = ?").get(e);if(o===void 0)return!1;const i=u(o);return i.run_state==="running"&&n?.preserveRunningProcess!==!0&&c(i),r.prepare("DELETE FROM crons WHERE cron_id = ?").run(e),!0})}t(A,"cancelCron");function p(e,n){const r=[...new Set(n)];return r.length===0?{sql:"profile = ?",params:[e]}:{sql:`profile = ? OR anchor_node IN (${r.map(()=>"?").join(",")})`,params:[e,...r]}}t(p,"profileCronWhere");function H(e,n){const r=p(e,n);return a().prepare(`SELECT cron_id FROM crons WHERE ${r.sql} ORDER BY created, cron_id`).all(...r.params).map(({cron_id:o})=>o)}t(H,"cronIdsForProfileDeletion");function F(e,n){return s(r=>{const o=p(e,n),i=r.prepare(`SELECT * FROM crons WHERE ${o.sql} ORDER BY created, cron_id`).all(...o.params).map(u);for(const _ of i)_.run_state==="running"&&c(_);return r.prepare(`DELETE FROM crons WHERE ${o.sql}`).run(...o.params),i.map(({cron_id:_})=>_)})}t(F,"deleteCronsForProfile");function M(e){return a().prepare("SELECT cron_id FROM crons WHERE profile = ? ORDER BY created, cron_id").all(e).map(({cron_id:n})=>n)}t(M,"cronIdsForProfileDetach");function v(e){return s(n=>{const r=n.prepare("SELECT cron_id FROM crons WHERE profile = ? ORDER BY created, cron_id").all(e).map(({cron_id:o})=>o);return r.length>0&&n.prepare("UPDATE crons SET profile = NULL, scope = 'global', updated = ? WHERE profile = ?").run(new Date().toISOString(),e),r})}t(v,"globalizeCronsForProfile");function I(e){return a().prepare("DELETE FROM crons WHERE cron_id = ?").run(e).changes>0}t(I,"consumeCron");function P(e,n){return a().prepare("UPDATE crons SET state = ?, updated = ? WHERE cron_id = ?").run(n,new Date().toISOString(),e).changes>0}t(P,"setCronState");function U(e,n){a().prepare("UPDATE crons SET last_output_hash = ?, updated = ? WHERE cron_id = ?").run(n,new Date().toISOString(),e)}t(U,"setCronLastOutputHash");function y(e){const n=a().prepare(`SELECT anchor_node, cancel_on_wake, sink
|
|
301
6
|
FROM crons
|
|
302
7
|
WHERE (anchor_node = ? AND cancel_on_wake = 1 AND state = 'active')
|
|
303
8
|
OR (
|
|
@@ -306,199 +11,24 @@ export function hasPendingCronWake(nodeId) {
|
|
|
306
11
|
run_state = 'running'
|
|
307
12
|
OR (run_state = 'idle' AND state = 'active' AND (expires_at IS NULL OR expires_at > ?))
|
|
308
13
|
)
|
|
309
|
-
)`).all(
|
|
310
|
-
for (const row of rows) {
|
|
311
|
-
if (row['anchor_node'] === nodeId && Number(row['cancel_on_wake']) !== 0)
|
|
312
|
-
return true;
|
|
313
|
-
const sink = parseCronSink(row['sink']);
|
|
314
|
-
if (sink?.kind === 'node' && sink.node === nodeId)
|
|
315
|
-
return true;
|
|
316
|
-
}
|
|
317
|
-
return false;
|
|
318
|
-
}
|
|
319
|
-
/** DELETE every cancel-on-wake cron anchored to this node — the deadline rule.
|
|
320
|
-
* A real wake consumes the wait at its delivery boundary or, as a dormant
|
|
321
|
-
* fallback, in reviveNode; recovery replacement is not a wake. Terminal
|
|
322
|
-
* lifecycle transitions also clear the wait. Standing declarative crons are
|
|
323
|
-
* untouched. Kills an in-flight run process group first (the cancelCron
|
|
324
|
-
* discipline), under one canvas write boundary. Returns removed cron ids. */
|
|
325
|
-
export function cancelCronsOnWake(anchor_node) {
|
|
326
|
-
return withCanvasWrite((db) => {
|
|
327
|
-
const rows = db
|
|
328
|
-
.prepare('SELECT * FROM crons WHERE anchor_node = ? AND cancel_on_wake = 1')
|
|
329
|
-
.all(anchor_node).map(cronFrom);
|
|
330
|
-
for (const c of rows) {
|
|
331
|
-
if (c.run_state === 'running')
|
|
332
|
-
killLeasedCronRun(c);
|
|
333
|
-
db.prepare('DELETE FROM crons WHERE cron_id = ?').run(c.cron_id);
|
|
334
|
-
}
|
|
335
|
-
return rows.map((c) => c.cron_id);
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
/** UPDATE the next fire time — recurrence advancement. The daemon settles a
|
|
339
|
-
* recurring row to its next slot BEFORE enacting the run (crash-safe). */
|
|
340
|
-
export function advanceCron(cron_id, nextFireIso) {
|
|
341
|
-
openDb()
|
|
342
|
-
.prepare('UPDATE crons SET fire_at = ?, updated = ? WHERE cron_id = ?')
|
|
343
|
-
.run(nextFireIso, new Date().toISOString(), cron_id);
|
|
344
|
-
}
|
|
345
|
-
// Daemon run-executor primitives (src/daemon/cron-run.ts)
|
|
346
|
-
/** The daemon's per-tick due query: active, idle, fire_at arrived, in
|
|
347
|
-
* deterministic order. The idle-only filter IS the default `overlap='skip'`
|
|
348
|
-
* behavior — a row whose previous run is still leased is simply not due.
|
|
349
|
-
* Returns exactly ONE row per cron regardless of missed slots — coalescing
|
|
350
|
-
* is structural (fire_at holds a single next occurrence). */
|
|
351
|
-
export function dueClockCrons(nowIso) {
|
|
352
|
-
return openDb()
|
|
353
|
-
.prepare(`SELECT * FROM crons
|
|
14
|
+
)`).all(e,new Date().toISOString());for(const r of n){if(r.anchor_node===e&&Number(r.cancel_on_wake)!==0)return!0;const o=l(r.sink);if(o?.kind==="node"&&o.node===e)return!0}return!1}t(y,"hasPendingCronWake");function b(e){return s(n=>{const r=n.prepare("SELECT * FROM crons WHERE anchor_node = ? AND cancel_on_wake = 1").all(e).map(u);for(const o of r)o.run_state==="running"&&c(o),n.prepare("DELETE FROM crons WHERE cron_id = ?").run(o.cron_id);return r.map(o=>o.cron_id)})}t(b,"cancelCronsOnWake");function B(e,n){a().prepare("UPDATE crons SET fire_at = ?, updated = ? WHERE cron_id = ?").run(n,new Date().toISOString(),e)}t(B,"advanceCron");function Y(e){return a().prepare(`SELECT * FROM crons
|
|
354
15
|
WHERE state = 'active' AND run_state = 'idle' AND fire_at <= ?
|
|
355
|
-
ORDER BY fire_at, created, cron_id`)
|
|
356
|
-
.all(nowIso).map(cronFrom).filter((cron) => !isProfilePaused(cron.profile));
|
|
357
|
-
}
|
|
358
|
-
/** Atomically acquire the idle run lease: flips `run_state` to 'running' and
|
|
359
|
-
* records lease/pid metadata, but ONLY if the row is still idle (the
|
|
360
|
-
* `WHERE run_state = 'idle'` guard is the atomicity). Returns whether THIS
|
|
361
|
-
* call acquired it.
|
|
362
|
-
*
|
|
363
|
-
* The pid is recorded WITH its launch-time identity fingerprint, captured here
|
|
364
|
-
* from the just-spawned child: that fingerprint is what later authorizes any
|
|
365
|
-
* signal against this pid (`killLeasedCronRun`). A failed capture stores NULL,
|
|
366
|
-
* which costs the row its kill rights rather than licensing a blind kill.
|
|
367
|
-
*
|
|
368
|
-
* `outOfBand` stamps the lease as a `cron run` (manual verification) so the
|
|
369
|
-
* overlap pass leaves it alone — see `dueOverlapCrons`. */
|
|
370
|
-
export function acquireCronRunLease(cron_id, leaseOwner, pid, startedAtIso, outOfBand) {
|
|
371
|
-
const identity = capturePidIdentities([pid])?.get(pid) ?? null;
|
|
372
|
-
const res = openDb()
|
|
373
|
-
.prepare(`UPDATE crons
|
|
16
|
+
ORDER BY fire_at, created, cron_id`).all(e).map(u).filter(n=>!D(n.profile))}t(Y,"dueClockCrons");function q(e,n,r,o,i){const _=d([r])?.get(r)??null,E=a().prepare(`UPDATE crons
|
|
374
17
|
SET run_state = 'running', run_started_at = ?, run_pid = ?, run_pid_identity = ?,
|
|
375
18
|
run_lease_owner = ?, run_out_of_band = ?, updated = ?
|
|
376
|
-
WHERE cron_id = ? AND run_state = 'idle'`)
|
|
377
|
-
.run(startedAtIso, pid, identity, leaseOwner, outOfBand ? 1 : 0, new Date().toISOString(), cron_id);
|
|
378
|
-
return Number(res.changes) > 0;
|
|
379
|
-
}
|
|
380
|
-
/** Release the run lease back to idle (run settled, or stale-lease recovery
|
|
381
|
-
* for a dead pid), applying the settlement's `held` disposition in the same
|
|
382
|
-
* statement. */
|
|
383
|
-
export function releaseCronRunLease(cron_id, held) {
|
|
384
|
-
let heldSql = '';
|
|
385
|
-
const heldParams = [];
|
|
386
|
-
if (held !== undefined) {
|
|
387
|
-
if (held.kind === 'clear') {
|
|
388
|
-
heldSql = ', held = 0';
|
|
389
|
-
}
|
|
390
|
-
else if (held.kind === 'park') {
|
|
391
|
-
heldSql = held.fireAt !== undefined ? ', held = 1, fire_at = ?' : ', held = 1';
|
|
392
|
-
if (held.fireAt !== undefined)
|
|
393
|
-
heldParams.push(held.fireAt);
|
|
394
|
-
}
|
|
395
|
-
else {
|
|
396
|
-
heldSql = ', held = 0, fire_at = ?';
|
|
397
|
-
heldParams.push(held.nowIso);
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
openDb()
|
|
401
|
-
.prepare(`UPDATE crons
|
|
19
|
+
WHERE cron_id = ? AND run_state = 'idle'`).run(o,r,_,n,i?1:0,new Date().toISOString(),e);return Number(E.changes)>0}t(q,"acquireCronRunLease");function $(e,n){let r="";const o=[];n!==void 0&&(n.kind==="clear"?r=", held = 0":n.kind==="park"?(r=n.fireAt!==void 0?", held = 1, fire_at = ?":", held = 1",n.fireAt!==void 0&&o.push(n.fireAt)):(r=", held = 0, fire_at = ?",o.push(n.nowIso))),a().prepare(`UPDATE crons
|
|
402
20
|
SET run_state = 'idle', run_started_at = NULL, run_pid = NULL, run_pid_identity = NULL,
|
|
403
|
-
run_lease_owner = NULL, run_out_of_band = 0, updated = ?${
|
|
404
|
-
WHERE cron_id = ?`)
|
|
405
|
-
.run(new Date().toISOString(), ...heldParams, cron_id);
|
|
406
|
-
}
|
|
407
|
-
/** The daemon-level eligibility poke (`POST /v1/crons/poke`): "something
|
|
408
|
-
* changed; re-check now". One write boundary, two statements:
|
|
409
|
-
* 1. stamp `last_poke_at` on EVERY row — this is what reaches a gate check
|
|
410
|
-
* in flight right now, which statement 2 deliberately skips: its exit-75
|
|
411
|
-
* settlement sees the stamp and re-dues itself (the F2 branch in
|
|
412
|
-
* cron-run.ts);
|
|
413
|
-
* 2. re-due every held active IDLE row now (fire_at=now, held=0). A leased
|
|
414
|
-
* row is excluded: its running gate check settles against the stamp —
|
|
415
|
-
* 75 re-dues, and success means the gate resolved and the occurrence
|
|
416
|
-
* fired, poke satisfied. Unparking mid-run would overwrite the row's
|
|
417
|
-
* pre-advanced backstop slot with `now`, so a PASSING gate would fire a
|
|
418
|
-
* second time on the next tick.
|
|
419
|
-
* Paused rows are not unparked — pause is user-owned and freezes everything;
|
|
420
|
-
* a paused held row keeps its state and unparks via a later poke/backstop
|
|
421
|
-
* after resume (it still receives the stamp, harmlessly). Returns the
|
|
422
|
-
* unparked count. Idempotent and free when nothing is held. */
|
|
423
|
-
export function pokeHeldCrons(nowIso) {
|
|
424
|
-
return withCanvasWrite((db) => {
|
|
425
|
-
db.prepare('UPDATE crons SET last_poke_at = ?').run(nowIso);
|
|
426
|
-
const res = db
|
|
427
|
-
.prepare("UPDATE crons SET fire_at = ?, held = 0, updated = ? WHERE held = 1 AND state = 'active' AND run_state = 'idle'")
|
|
428
|
-
.run(nowIso, nowIso);
|
|
429
|
-
return Number(res.changes);
|
|
430
|
-
});
|
|
431
|
-
}
|
|
432
|
-
/** Recurring crons whose NEXT fire has arrived while their previous run is
|
|
433
|
-
* still leased — the overlap-policy pass. One-shots never appear here (a
|
|
434
|
-
* one-shot has exactly one fire, already consumed by its running lease).
|
|
435
|
-
*
|
|
436
|
-
* An OUT-OF-BAND lease (`cron run`) is excluded: overlap policy arbitrates
|
|
437
|
-
* between a SCHEDULED fire and the scheduled run already in flight. A manual
|
|
438
|
-
* verification is neither, so letting it participate would either advance
|
|
439
|
-
* `fire_at` past a genuine occurrence (`skip`) or SIGTERM the invoker's own
|
|
440
|
-
* run (`replace`). Such a row simply is not due for overlap; the real
|
|
441
|
-
* occurrence stays past-due and fires the moment the manual lease releases. */
|
|
442
|
-
export function dueOverlapCrons(nowIso) {
|
|
443
|
-
return openDb()
|
|
444
|
-
.prepare(`SELECT * FROM crons
|
|
21
|
+
run_lease_owner = NULL, run_out_of_band = 0, updated = ?${r}
|
|
22
|
+
WHERE cron_id = ?`).run(new Date().toISOString(),...o,e)}t($,"releaseCronRunLease");function j(e){return s(n=>{n.prepare("UPDATE crons SET last_poke_at = ?").run(e);const r=n.prepare("UPDATE crons SET fire_at = ?, held = 0, updated = ? WHERE held = 1 AND state = 'active' AND run_state = 'idle'").run(e,e);return Number(r.changes)})}t(j,"pokeHeldCrons");function z(e){return a().prepare(`SELECT * FROM crons
|
|
445
23
|
WHERE state = 'active' AND run_state = 'running' AND run_out_of_band = 0
|
|
446
24
|
AND recur IS NOT NULL AND fire_at <= ?
|
|
447
|
-
ORDER BY fire_at, created, cron_id`)
|
|
448
|
-
.all(nowIso).map(cronFrom);
|
|
449
|
-
}
|
|
450
|
-
/** Crons whose clock bound (`expires_at`) has passed — the daemon deletes
|
|
451
|
-
* these each tick. Idle rows only: an expired row whose run is still in
|
|
452
|
-
* flight is picked up on a later tick, after the run settles. */
|
|
453
|
-
export function expiredIdleCrons(nowIso) {
|
|
454
|
-
return openDb()
|
|
455
|
-
.prepare(`SELECT * FROM crons
|
|
25
|
+
ORDER BY fire_at, created, cron_id`).all(e).map(u)}t(z,"dueOverlapCrons");function G(e){return a().prepare(`SELECT * FROM crons
|
|
456
26
|
WHERE expires_at IS NOT NULL AND expires_at <= ? AND run_state = 'idle'
|
|
457
|
-
ORDER BY expires_at`)
|
|
458
|
-
.all(nowIso).map(cronFrom);
|
|
459
|
-
}
|
|
460
|
-
/** The run-log ring for one cron, most recent first. */
|
|
461
|
-
export function listCronRuns(cron_id) {
|
|
462
|
-
return openDb()
|
|
463
|
-
.prepare('SELECT * FROM cron_runs WHERE cron_id = ? ORDER BY started DESC, run_id DESC')
|
|
464
|
-
.all(cron_id).map((r) => ({
|
|
465
|
-
run_id: r['run_id'],
|
|
466
|
-
cron_id: r['cron_id'],
|
|
467
|
-
started: r['started'],
|
|
468
|
-
finished: r['finished'],
|
|
469
|
-
duration_ms: Number(r['duration_ms']),
|
|
470
|
-
exit_code: r['exit_code'] ?? null,
|
|
471
|
-
stdout_head: r['stdout_head'] ?? null,
|
|
472
|
-
stderr_head: r['stderr_head'] ?? null,
|
|
473
|
-
delivered: r['delivered'] ?? null,
|
|
474
|
-
}));
|
|
475
|
-
}
|
|
476
|
-
/** Every cron currently marked 'running' — the daemon's stale-lease recovery
|
|
477
|
-
* scan checks each recorded `run_pid` for liveness. */
|
|
478
|
-
export function runningCrons() {
|
|
479
|
-
return openDb().prepare("SELECT * FROM crons WHERE run_state = 'running'").all().map(cronFrom);
|
|
480
|
-
}
|
|
481
|
-
/** INSERT one settled run record, then prune that cron's history down to the
|
|
482
|
-
* most recent CRON_RUN_RING rows — one canvas write boundary, so the ring
|
|
483
|
-
* bound holds atomically with the insert. Returns whether the record was
|
|
484
|
-
* written: a cron canceled while its run was in flight is already gone (and
|
|
485
|
-
* its history cascaded), so a settling run no-ops with `false` instead of
|
|
486
|
-
* violating the FK. */
|
|
487
|
-
export function recordCronRunLocked(db, run) {
|
|
488
|
-
if (db.prepare('SELECT 1 FROM crons WHERE cron_id = ?').get(run.cron_id) === undefined) {
|
|
489
|
-
return false;
|
|
490
|
-
}
|
|
491
|
-
db.prepare(`INSERT INTO cron_runs (
|
|
27
|
+
ORDER BY expires_at`).all(e).map(u)}t(G,"expiredIdleCrons");function V(e){return a().prepare("SELECT * FROM cron_runs WHERE cron_id = ? ORDER BY started DESC, run_id DESC").all(e).map(n=>({run_id:n.run_id,cron_id:n.cron_id,started:n.started,finished:n.finished,duration_ms:Number(n.duration_ms),exit_code:n.exit_code??null,stdout_head:n.stdout_head??null,stderr_head:n.stderr_head??null,delivered:n.delivered??null}))}t(V,"listCronRuns");function J(){return a().prepare("SELECT * FROM crons WHERE run_state = 'running'").all().map(u)}t(J,"runningCrons");function C(e,n){return e.prepare("SELECT 1 FROM crons WHERE cron_id = ?").get(n.cron_id)===void 0?!1:(e.prepare(`INSERT INTO cron_runs (
|
|
492
28
|
run_id, cron_id, started, finished, duration_ms, exit_code,
|
|
493
29
|
stdout_head, stderr_head, delivered
|
|
494
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(
|
|
495
|
-
db.prepare(`DELETE FROM cron_runs
|
|
30
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(n.run_id,n.cron_id,n.started,n.finished,n.duration_ms,n.exit_code,n.stdout_head,n.stderr_head,n.delivered),e.prepare(`DELETE FROM cron_runs
|
|
496
31
|
WHERE cron_id = ? AND run_id NOT IN (
|
|
497
32
|
SELECT run_id FROM cron_runs WHERE cron_id = ?
|
|
498
33
|
ORDER BY started DESC, run_id DESC LIMIT ?
|
|
499
|
-
)`).run(
|
|
500
|
-
return true;
|
|
501
|
-
}
|
|
502
|
-
export function recordCronRun(run) {
|
|
503
|
-
return withCanvasWrite((db) => recordCronRunLocked(db, run));
|
|
504
|
-
}
|
|
34
|
+
)`).run(n.cron_id,n.cron_id,S),!0)}t(C,"recordCronRunLocked");function K(e){return s(n=>C(n,e))}t(K,"recordCronRun");export{S as CRON_RUN_RING,q as acquireCronRunLease,B as advanceCron,k as armCron,A as cancelCron,b as cancelCronsOnWake,I as consumeCron,H as cronIdsForProfileDeletion,M as cronIdsForProfileDetach,x as cronSinkDisplay,F as deleteCronsForProfile,Y as dueClockCrons,z as dueOverlapCrons,G as expiredIdleCrons,g as getCron,v as globalizeCronsForProfile,y as hasPendingCronWake,c as killLeasedCronRun,V as listCronRuns,W as listCrons,l as parseCronSink,j as pokeHeldCrons,K as recordCronRun,C as recordCronRunLocked,$ as releaseCronRunLease,J as runningCrons,U as setCronLastOutputHash,P as setCronState,h as verifyLeasedCronRun};
|