@north-light/crouter 0.3.318 → 0.3.320
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -3
- package/dist/api/client.js +2 -912
- package/dist/api/dto/attach.js +0 -13
- package/dist/api/dto/bash-jobs.js +1 -9
- package/dist/api/dto/broker-ops.js +0 -6
- package/dist/api/dto/broker.js +0 -20
- package/dist/api/dto/canvas.js +0 -2
- package/dist/api/dto/chat-inventory.js +0 -11
- package/dist/api/dto/common.js +1 -15
- package/dist/api/dto/config.js +0 -3
- package/dist/api/dto/crons.js +1 -10
- package/dist/api/dto/files.js +0 -7
- package/dist/api/dto/focus.js +0 -10
- package/dist/api/dto/health.js +0 -2
- package/dist/api/dto/human-requests.js +0 -4
- package/dist/api/dto/human.js +0 -4
- package/dist/api/dto/inbox.js +0 -4
- package/dist/api/dto/lifecycle.js +0 -3
- package/dist/api/dto/mail.js +0 -1
- package/dist/api/dto/memory.js +0 -6
- package/dist/api/dto/messages.js +0 -2
- package/dist/api/dto/model-config.js +0 -1
- package/dist/api/dto/modelauth.js +0 -4
- package/dist/api/dto/node-outcomes.js +0 -2
- package/dist/api/dto/nodes.js +0 -3
- package/dist/api/dto/profiles.js +1 -4
- package/dist/api/dto/recovery.js +0 -1
- package/dist/api/dto/reports.js +0 -2
- package/dist/api/dto/review-comments.js +0 -5
- package/dist/api/dto/reviews.js +0 -5
- package/dist/api/dto/subscriptions.js +0 -2
- package/dist/api/dto/worktree.js +0 -6
- package/dist/api/errors.js +1 -40
- package/dist/api/index.js +1 -33
- package/dist/api/plugin-manifest-schema.js +0 -23
- package/dist/api/routes.js +1 -147
- package/dist/build-root.js +1 -198
- package/dist/cli.js +3 -99
- package/dist/clients/attach/ansi-cells.js +1 -137
- package/dist/clients/attach/chrome/bash-jobs.js +1 -31
- package/dist/clients/attach/chrome/canvas-panels.js +1 -194
- package/dist/clients/attach/chrome/completion-bell.js +1 -89
- package/dist/clients/attach/chrome/cron-wait.js +1 -34
- package/dist/clients/attach/chrome/git-info.js +2 -44
- package/dist/clients/attach/chrome/header.js +1 -30
- package/dist/clients/attach/chrome/inbox-strip.js +1 -199
- package/dist/clients/attach/chrome/recap.js +1 -19
- package/dist/clients/attach/chrome/review-wait.js +1 -22
- package/dist/clients/attach/chrome/roster.js +4 -275
- package/dist/clients/attach/chrome/status-line.js +1 -117
- package/dist/clients/attach/chrome/ticket-panel.js +1 -280
- package/dist/clients/attach/chrome/widgets.js +1 -51
- package/dist/clients/attach/command.js +1 -107
- package/dist/clients/attach/config.js +1 -274
- package/dist/clients/attach/input/capabilities.js +1 -104
- package/dist/clients/attach/input/clipboard-image.js +3 -220
- package/dist/clients/attach/input/completion-frecency.js +1 -141
- package/dist/clients/attach/input/controller.js +7 -377
- package/dist/clients/attach/input/overlay-owner.js +1 -199
- package/dist/clients/attach/input/ref-autocomplete.js +2 -176
- package/dist/clients/attach/input/titled-editor.js +4 -859
- package/dist/clients/attach/overlays/auth.js +2 -271
- package/dist/clients/attach/overlays/dialogs.js +2 -102
- package/dist/clients/attach/overlays/file-review.js +2 -128
- package/dist/clients/attach/overlays/graph.js +1 -661
- package/dist/clients/attach/overlays/help.js +1 -211
- package/dist/clients/attach/overlays/mcp.js +1 -302
- package/dist/clients/attach/overlays/pickers.js +1 -163
- package/dist/clients/attach/render/activity-slot.js +1 -13
- package/dist/clients/attach/render/assistant-message.js +1 -56
- package/dist/clients/attach/render/card-presentation.js +5 -218
- package/dist/clients/attach/render/chat-view.js +5 -1708
- package/dist/clients/attach/render/condensed-history.js +1 -60
- package/dist/clients/attach/render/context-message.js +1 -63
- package/dist/clients/attach/render/crtr-output.js +17 -905
- package/dist/clients/attach/render/diagram.js +7 -111
- package/dist/clients/attach/render/edit-diff.js +5 -304
- package/dist/clients/attach/render/glyph-codepoints.js +1 -42
- package/dist/clients/attach/render/group-activity.js +2 -263
- package/dist/clients/attach/render/group-recap.js +1 -152
- package/dist/clients/attach/render/markdown-source.js +5 -266
- package/dist/clients/attach/render/measured-container.js +1 -322
- package/dist/clients/attach/render/page-block.js +1 -183
- package/dist/clients/attach/render/scroll-animation.js +1 -80
- package/dist/clients/attach/render/tool-calls.js +3 -361
- package/dist/clients/attach/render/transcript-copy.js +2 -81
- package/dist/clients/attach/render/transcript-search.js +1 -152
- package/dist/clients/attach/render/viewport.js +1 -184
- package/dist/clients/attach/session/banner.js +1 -29
- package/dist/clients/attach/session/bindings.js +1 -71
- package/dist/clients/attach/session/chrome-refresh.js +1 -94
- package/dist/clients/attach/session/connection.js +1 -186
- package/dist/clients/attach/session/context.js +0 -16
- package/dist/clients/attach/session/editor-frame.js +1 -142
- package/dist/clients/attach/session/editor-inventory.js +6 -160
- package/dist/clients/attach/session/file-links.js +1 -68
- package/dist/clients/attach/session/focus-events.js +1 -12
- package/dist/clients/attach/session/frame.js +1 -214
- package/dist/clients/attach/session/frames.js +1 -188
- package/dist/clients/attach/session/identity.js +1 -26
- package/dist/clients/attach/session/input-wiring.js +1 -140
- package/dist/clients/attach/session/invariant.js +1 -15
- package/dist/clients/attach/session/keys.js +1 -77
- package/dist/clients/attach/session/layout.js +1 -59
- package/dist/clients/attach/session/mouse.js +1 -78
- package/dist/clients/attach/session/pane-focus.js +1 -42
- package/dist/clients/attach/session/pane-tag.js +1 -112
- package/dist/clients/attach/session/pi-assets.js +1 -24
- package/dist/clients/attach/session/pi-oauth-flows.js +1 -21
- package/dist/clients/attach/session/profile-files.js +1 -228
- package/dist/clients/attach/session/reconnect.js +1 -175
- package/dist/clients/attach/session/selection.js +3 -108
- package/dist/clients/attach/session/state-sync.js +1 -67
- package/dist/clients/attach/session/surface-frame.js +1 -73
- package/dist/clients/attach/session/surface-host.js +1 -255
- package/dist/clients/attach/session/teardown.js +5 -94
- package/dist/clients/attach/session/transcript-search.js +3 -151
- package/dist/clients/attach/session/whip-achievements.js +2 -145
- package/dist/clients/attach/session/whip.js +1 -362
- package/dist/clients/attach/slash/dispatch.js +1 -706
- package/dist/clients/attach/slash/prompt-preview.js +1 -121
- package/dist/clients/attach/viewer.js +441 -441
- package/dist/clients/conversation/projection.js +1 -324
- package/dist/clients/conversation/submit.js +1 -51
- package/dist/clients/inbox/controller.js +1 -701
- package/dist/clients/inbox/dto-adapt.js +1 -93
- package/dist/clients/inbox/layout.js +1 -9
- package/dist/clients/inbox/page-adapter.js +1 -55
- package/dist/clients/inbox/resolve.js +1 -35
- package/dist/clients/inbox/review/anchors.js +1 -89
- package/dist/clients/inbox/review/comments-client.js +1 -98
- package/dist/clients/inbox/review/companion-pane.js +1 -82
- package/dist/clients/inbox/review/document-surface.js +2 -1188
- package/dist/clients/inbox/review/frame.js +1 -216
- package/dist/clients/inbox/review/keys.js +1 -123
- package/dist/clients/inbox/review/launch.js +1 -151
- package/dist/clients/inbox/review/live-source.js +1 -160
- package/dist/clients/inbox/review/nvim.js +1 -44
- package/dist/clients/inbox/review/remap.js +1 -157
- package/dist/clients/inbox/review/review-client.js +1 -123
- package/dist/clients/inbox/review/roundtrip.js +3 -36
- package/dist/clients/inbox/review/state.js +4 -315
- package/dist/clients/inbox/review-adapter.js +1 -43
- package/dist/clients/inbox/surface.js +1 -152
- package/dist/clients/inbox/tui/ansi.js +3 -321
- package/dist/clients/inbox/tui/input.js +5 -392
- package/dist/clients/inbox/tui/keys.js +1 -104
- package/dist/clients/inbox/tui/page-body.js +1 -66
- package/dist/clients/inbox/tui/panel.js +1 -84
- package/dist/clients/inbox/tui/render.js +2 -368
- package/dist/clients/inbox/tui/slots.js +3 -134
- package/dist/clients/inbox/tui/types.js +0 -1
- package/dist/clients/inbox/tui.js +1 -86
- package/dist/clients/surfaces/host.js +0 -1
- package/dist/commands/api-client.js +4 -290
- package/dist/commands/attention.js +1 -215
- package/dist/commands/canvas-browse.js +1 -70
- package/dist/commands/canvas-config.js +2 -192
- package/dist/commands/canvas-history/grep.js +7 -85
- package/dist/commands/canvas-history/read.js +3 -50
- package/dist/commands/canvas-history/search.js +10 -99
- package/dist/commands/canvas-history/shared.js +1 -139
- package/dist/commands/canvas-history/stats.js +6 -68
- package/dist/commands/canvas-history.js +1 -32
- package/dist/commands/canvas-issue.js +14 -149
- package/dist/commands/canvas-prune.js +1 -108
- package/dist/commands/canvas-roster.js +1 -69
- package/dist/commands/canvas-snapshot.js +1 -34
- package/dist/commands/canvas-use.js +1 -61
- package/dist/commands/canvas.js +1 -49
- package/dist/commands/chord.js +1 -241
- package/dist/commands/cron.js +11 -534
- package/dist/commands/dashboard.js +1 -85
- package/dist/commands/human/components.js +3 -77
- package/dist/commands/human/feedback.js +1 -112
- package/dist/commands/human/prompts.js +1 -331
- package/dist/commands/human/queue.js +1 -191
- package/dist/commands/human/request.js +1 -266
- package/dist/commands/human/review.js +1 -288
- package/dist/commands/human/shared.js +1 -67
- package/dist/commands/human.js +4 -60
- package/dist/commands/memory/delete.js +1 -100
- package/dist/commands/memory/edit.js +21 -219
- package/dist/commands/memory/find.js +2 -244
- package/dist/commands/memory/history.js +5 -199
- package/dist/commands/memory/lint.js +1 -107
- package/dist/commands/memory/list.js +1 -142
- package/dist/commands/memory/move.js +1 -223
- package/dist/commands/memory/origin.js +1 -130
- package/dist/commands/memory/read.js +6 -232
- package/dist/commands/memory/shared.js +12 -802
- package/dist/commands/memory/write.js +13 -235
- package/dist/commands/memory.js +1 -30
- package/dist/commands/node/bash.js +5 -245
- package/dist/commands/node/create.js +3 -332
- package/dist/commands/node/inspect.js +12 -300
- package/dist/commands/node/lifecycle.js +2 -453
- package/dist/commands/node/message.js +1 -161
- package/dist/commands/node/outcome.js +4 -134
- package/dist/commands/node/pyramid.js +2 -79
- package/dist/commands/node/subscription.js +1 -78
- package/dist/commands/node/wait.js +7 -163
- package/dist/commands/node-context.js +2 -159
- package/dist/commands/node-inspect-artifacts.js +8 -109
- package/dist/commands/node-lifecycle-revive.js +1 -217
- package/dist/commands/node-snapshot.js +1 -37
- package/dist/commands/node-transcript.js +1 -62
- package/dist/commands/node-worktree.js +1 -138
- package/dist/commands/node.js +1 -29
- package/dist/commands/pkg/browse/actions.js +1 -198
- package/dist/commands/pkg/browse/catalog.js +1 -466
- package/dist/commands/pkg/browse/command-view.js +1 -191
- package/dist/commands/pkg/browse/detail-panel.js +1 -402
- package/dist/commands/pkg/browse/doc-view.js +1 -89
- package/dist/commands/pkg/browse/list-panel.js +2 -168
- package/dist/commands/pkg/browse/model.js +1 -36
- package/dist/commands/pkg/browse/shell.js +1 -640
- package/dist/commands/pkg/browse.js +1 -27
- package/dist/commands/pkg/market-inspect.js +1 -141
- package/dist/commands/pkg/market-manage.js +1 -327
- package/dist/commands/pkg/market.js +1 -14
- package/dist/commands/pkg/plugin-inspect.js +1 -168
- package/dist/commands/pkg/plugin-manage.js +17 -1109
- package/dist/commands/pkg/plugin.js +1 -14
- package/dist/commands/pkg/shared.js +1 -62
- package/dist/commands/pkg.js +1 -21
- package/dist/commands/profile/default.js +1 -139
- package/dist/commands/profile/delete.js +1 -66
- package/dist/commands/profile/env.js +3 -188
- package/dist/commands/profile/kind.js +2 -35
- package/dist/commands/profile/list.js +1 -43
- package/dist/commands/profile/meta.js +1 -67
- package/dist/commands/profile/new.js +1 -115
- package/dist/commands/profile/pause.js +1 -59
- package/dist/commands/profile/project.js +1 -113
- package/dist/commands/profile/rename.js +1 -38
- package/dist/commands/profile/show.js +1 -52
- package/dist/commands/profile.js +1 -35
- package/dist/commands/push.js +9 -265
- package/dist/commands/revive.js +10 -181
- package/dist/commands/surface/node/cycle.js +1 -83
- package/dist/commands/surface/node/focus.js +1 -81
- package/dist/commands/surface/node/id.js +1 -38
- package/dist/commands/surface/node/pin.js +1 -42
- package/dist/commands/surface/node/placement.js +1 -134
- package/dist/commands/surface-edit.js +1 -157
- package/dist/commands/surface-inbox.js +1 -98
- package/dist/commands/surface-inspect.js +1 -39
- package/dist/commands/surface-node.js +1 -19
- package/dist/commands/surface-reload.js +2 -134
- package/dist/commands/surface-tmux-spread.js +1 -214
- package/dist/commands/surface.js +1 -28
- package/dist/commands/sys/branch.js +1 -19
- package/dist/commands/sys/config.js +1 -353
- package/dist/commands/sys/context/admin/actions.js +2 -246
- package/dist/commands/sys/context/admin/detail-panel.js +1 -247
- package/dist/commands/sys/context/admin/docs-panel.js +1 -191
- package/dist/commands/sys/context/admin/list-view.js +1 -183
- package/dist/commands/sys/context/admin/model.js +1 -229
- package/dist/commands/sys/context/admin/rail-panel.js +1 -227
- package/dist/commands/sys/context/admin/read-view.js +2 -194
- package/dist/commands/sys/context/admin/shell.js +1 -910
- package/dist/commands/sys/context/admin.js +2 -126
- package/dist/commands/sys/context/doc.js +3 -197
- package/dist/commands/sys/context/prompt-review.js +11 -291
- package/dist/commands/sys/context/resolve.js +10 -489
- package/dist/commands/sys/context/sysprompt.js +5 -96
- package/dist/commands/sys/context.js +1 -20
- package/dist/commands/sys/daemon.js +1 -313
- package/dist/commands/sys/doctor.js +1 -617
- package/dist/commands/sys/feedback.js +7 -228
- package/dist/commands/sys/logs.js +3 -129
- package/dist/commands/sys/migrate.js +1 -94
- package/dist/commands/sys/panels/broker-limits-panel.js +2 -110
- package/dist/commands/sys/panels/dependencies-panel.js +1 -80
- package/dist/commands/sys/panels/keybindings-panel.js +1 -703
- package/dist/commands/sys/panels/models-panel.js +1 -1133
- package/dist/commands/sys/panels/plugins-panel.js +1 -80
- package/dist/commands/sys/panels/prefs-panel.js +1 -85
- package/dist/commands/sys/panels/profiles-panel.js +1 -601
- package/dist/commands/sys/panels/provider-panel.js +1 -538
- package/dist/commands/sys/settings-shell.js +1 -400
- package/dist/commands/sys/settings.js +1 -46
- package/dist/commands/sys/setup-core.js +6 -579
- package/dist/commands/sys/setup-settings-runner.js +1 -16
- package/dist/commands/sys/setup-wizard.js +1 -279
- package/dist/commands/sys/setup.js +1 -34
- package/dist/commands/sys/shared.js +1 -81
- package/dist/commands/sys/support/prepare.js +3 -239
- package/dist/commands/sys/support/submit.js +6 -524
- package/dist/commands/sys/support.js +1 -18
- package/dist/commands/sys/sync-deps.js +15 -498
- package/dist/commands/sys/sync-project-guidance.js +4 -481
- package/dist/commands/sys/sync-shared.js +1 -49
- package/dist/commands/sys/sync-skills.js +2 -311
- package/dist/commands/sys/sync.js +1 -18
- package/dist/commands/sys/update.js +1 -147
- package/dist/commands/sys/worktrees.js +5 -53
- package/dist/commands/sys.js +1 -18
- package/dist/core/activity-signal.js +2 -38
- package/dist/core/asset-root.js +1 -18
- package/dist/core/auth-file.js +2 -179
- package/dist/core/auth-interaction.js +3 -94
- package/dist/core/auto-update.js +4 -94
- package/dist/core/bash-guard.js +11 -393
- package/dist/core/bash-jobs.js +7 -411
- package/dist/core/bootstrap.js +2 -53
- package/dist/core/broker-client/client.js +1 -184
- package/dist/core/broker-client/index.js +1 -13
- package/dist/core/broker-client/transport-relay.js +1 -157
- package/dist/core/broker-client/transport-socket.js +1 -179
- package/dist/core/broker-client/transport.js +1 -26
- package/dist/core/canvas/attention.js +1 -47
- package/dist/core/canvas/boot-id.js +1 -26
- package/dist/core/canvas/boot.js +1 -186
- package/dist/core/canvas/browse/app.js +3 -919
- package/dist/core/canvas/browse/model.js +1 -477
- package/dist/core/canvas/browse/pins.js +1 -29
- package/dist/core/canvas/browse/render.js +3 -1055
- package/dist/core/canvas/canvas.js +15 -922
- package/dist/core/canvas/crons.js +11 -481
- package/dist/core/canvas/daemon-owner.js +2 -146
- package/dist/core/canvas/db.js +2 -100
- package/dist/core/canvas/deliveries.js +22 -283
- package/dist/core/canvas/delivery-contract.js +1 -8
- package/dist/core/canvas/executions.js +1 -68
- package/dist/core/canvas/extensions.js +1 -83
- package/dist/core/canvas/focuses.js +1 -77
- package/dist/core/canvas/history.js +24 -860
- package/dist/core/canvas/index.js +1 -15
- package/dist/core/canvas/install-id.js +1 -84
- package/dist/core/canvas/labels.js +1 -43
- package/dist/core/canvas/meta-file.js +1 -89
- package/dist/core/canvas/migrations.js +41 -1150
- package/dist/core/canvas/nav-model.js +1 -231
- package/dist/core/canvas/nav-render.js +1 -260
- package/dist/core/canvas/node-order.js +1 -37
- package/dist/core/canvas/node-recap.js +2 -67
- package/dist/core/canvas/node-sql-migration.js +2 -209
- package/dist/core/canvas/paths.js +1 -153
- package/dist/core/canvas/pid.js +4 -683
- package/dist/core/canvas/recovery.js +3 -565
- package/dist/core/canvas/remote-canvas-source.js +1 -288
- package/dist/core/canvas/remote-transport.js +1 -57
- package/dist/core/canvas/render-source.js +10 -635
- package/dist/core/canvas/sessions.js +1 -78
- package/dist/core/canvas/source.js +1 -47
- package/dist/core/canvas/status-glyph.js +1 -132
- package/dist/core/canvas/telemetry.js +1 -35
- package/dist/core/canvas/types.js +1 -6
- package/dist/core/canvas/waits.js +4 -68
- package/dist/core/canvas/worktrees.js +1 -93
- package/dist/core/clipboard-text.js +1 -57
- package/dist/core/command-hooks/artifact.js +1 -145
- package/dist/core/command-hooks/catalog.js +1 -38
- package/dist/core/command-hooks/compose.js +1 -99
- package/dist/core/command-hooks/discovery.js +1 -228
- package/dist/core/command-hooks/help.js +1 -18
- package/dist/core/command-hooks/index.js +1 -7
- package/dist/core/command-hooks/lifecycle-catalog.js +1 -9
- package/dist/core/command-hooks/lifecycle-create.js +1 -51
- package/dist/core/command-hooks/report.js +1 -28
- package/dist/core/command-hooks/schema.js +1 -157
- package/dist/core/command-hooks/transport/exec-invoke.js +1 -276
- package/dist/core/command-hooks/transport/exec-lifecycle.js +1 -211
- package/dist/core/command-manifests/manifest.js +1 -324
- package/dist/core/command-manifests/registry.js +1 -118
- package/dist/core/command-manifests/schema.js +1 -736
- package/dist/core/command-plugins/bundle.js +1 -261
- package/dist/core/command-plugins/compose.js +1 -65
- package/dist/core/command-plugins/discovery.js +1 -245
- package/dist/core/command-plugins/endpoint.js +1 -48
- package/dist/core/command-plugins/extensions.js +1 -166
- package/dist/core/command-plugins/help-addenda.js +1 -44
- package/dist/core/command-plugins/presence.js +1 -17
- package/dist/core/command-plugins/revalidate.js +2 -152
- package/dist/core/command-plugins/transport/exec-invoke.js +1 -215
- package/dist/core/command-plugins/transport/http-fetch.js +1 -68
- package/dist/core/command-plugins/transport/http-invoke.js +3 -546
- package/dist/core/command.js +10 -739
- package/dist/core/config.js +1 -1059
- package/dist/core/document-lines.js +3 -6
- package/dist/core/env-name.js +1 -9
- package/dist/core/errors.js +1 -52
- package/dist/core/events/emit.js +1 -17
- package/dist/core/events/envelope.js +1 -84
- package/dist/core/events/errors.js +1 -69
- package/dist/core/events/index.js +1 -4
- package/dist/core/events/operation-id.js +1 -24
- package/dist/core/events/read.js +1 -623
- package/dist/core/events/serialize.js +1 -199
- package/dist/core/events/source.js +1 -31
- package/dist/core/events/types.js +1 -11
- package/dist/core/exclusive-lock.js +1 -197
- package/dist/core/fault-classifier.js +1 -96
- package/dist/core/feed/feed.js +7 -202
- package/dist/core/feed/inbox-migrate.js +3 -135
- package/dist/core/feed/inbox.js +10 -122
- package/dist/core/feed/messages.js +6 -212
- package/dist/core/frontmatter.js +1 -35
- package/dist/core/fs-utils.js +3 -202
- package/dist/core/git.js +2 -103
- package/dist/core/help.js +9 -310
- package/dist/core/host-exports/builtins.js +9 -68
- package/dist/core/host-exports/export.js +3 -124
- package/dist/core/human/action-binding.js +1 -40
- package/dist/core/human/answer-text.js +5 -100
- package/dist/core/human/answer.js +1 -119
- package/dist/core/human/claim.js +3 -67
- package/dist/core/human/completion.js +1 -27
- package/dist/core/human/component-docs.js +78 -272
- package/dist/core/human/convention.js +2 -82
- package/dist/core/human/feedback-companion.js +1 -106
- package/dist/core/human/feedback.js +1 -88
- package/dist/core/human/page-authoring.js +1 -19
- package/dist/core/human/page-catalog.js +1 -172
- package/dist/core/human/page-errors.js +1 -7
- package/dist/core/human/page-eval.js +1 -125
- package/dist/core/human/page-html-markdown.js +8 -260
- package/dist/core/human/page-markdown.js +17 -295
- package/dist/core/human/page-schema.js +1 -373
- package/dist/core/human/page-synth.js +8 -27
- package/dist/core/human/page.js +1 -198
- package/dist/core/human/requests.js +15 -466
- package/dist/core/human/review-schema.js +1 -34
- package/dist/core/human/root.js +1 -11
- package/dist/core/human/scan.js +1 -69
- package/dist/core/human/summary.js +1 -5
- package/dist/core/human/tickets.js +1 -171
- package/dist/core/human/types.js +0 -1
- package/dist/core/human/visible-paths.js +1 -77
- package/dist/core/human-actions.js +1 -101
- package/dist/core/inspector/chrome.js +1 -14
- package/dist/core/inspector/contract.js +0 -1
- package/dist/core/inspector/core.js +2 -295
- package/dist/core/inspector/host.js +4 -538
- package/dist/core/inspector/model.js +2 -226
- package/dist/core/inspector/text.js +6 -45
- package/dist/core/inspector/transport.js +1 -36
- package/dist/core/inspector/tui.js +2 -295
- package/dist/core/installed-plugins.js +1 -78
- package/dist/core/io.js +7 -356
- package/dist/core/keybindings/attach-control.js +1 -42
- package/dist/core/keybindings/background-bash.js +1 -33
- package/dist/core/keybindings/catalog.js +1 -256
- package/dist/core/keybindings/inbox.js +1 -25
- package/dist/core/keybindings/index.js +1 -7
- package/dist/core/keybindings/match.js +1 -127
- package/dist/core/keybindings/persistence.js +1 -49
- package/dist/core/keybindings/resolve.js +1 -348
- package/dist/core/keybindings/types.js +0 -1
- package/dist/core/locked-file.js +1 -118
- package/dist/core/log.js +3 -27
- package/dist/core/manifest-recovery.js +1 -72
- package/dist/core/manifest-stale.js +1 -39
- package/dist/core/manifest.js +1 -20
- package/dist/core/memory/doc-link-grammar.js +2 -109
- package/dist/core/memory/extensions.js +1 -221
- package/dist/core/memory/history.js +6 -268
- package/dist/core/memory/identity.js +1 -181
- package/dist/core/memory/inline-ref-grammar.js +1 -98
- package/dist/core/memory/inline-ref-guidance.js +2 -35
- package/dist/core/memory/inline-ref-inventory.js +1 -59
- package/dist/core/memory/lint.js +2 -671
- package/dist/core/memory/project-namespace.js +2 -85
- package/dist/core/memory/repository-association.js +1 -129
- package/dist/core/memory/tree.js +1 -93
- package/dist/core/memory-resolver.js +2 -611
- package/dist/core/model-config.js +1 -107
- package/dist/core/model-routes.js +1 -201
- package/dist/core/nested-stores.js +2 -166
- package/dist/core/output.js +7 -99
- package/dist/core/pagination.js +1 -88
- package/dist/core/plugin-swap-lock.js +1 -31
- package/dist/core/pool-credential-store.js +1 -116
- package/dist/core/predicate.js +1 -191
- package/dist/core/preview-registry.js +2 -411
- package/dist/core/preview-result-path.js +1 -26
- package/dist/core/profiles/default-binding.js +1 -24
- package/dist/core/profiles/deletion-reservation.js +1 -42
- package/dist/core/profiles/env-store.js +2 -162
- package/dist/core/profiles/fuzzy-match.js +1 -92
- package/dist/core/profiles/manifest.js +1 -574
- package/dist/core/profiles/select.js +35 -741
- package/dist/core/profiles/state-block.js +3 -17
- package/dist/core/provider-error-recognition.js +1 -74
- package/dist/core/provider-failure.js +1 -86
- package/dist/core/provider-management.js +1 -22
- package/dist/core/remote-canvas-target.js +1 -30
- package/dist/core/render.js +18 -138
- package/dist/core/resolver.js +1 -111
- package/dist/core/review/birth.js +1 -52
- package/dist/core/review/comments.js +5 -279
- package/dist/core/review/companion.js +1 -215
- package/dist/core/review/document.js +2 -138
- package/dist/core/review/project.js +1 -36
- package/dist/core/review/realize.js +1 -71
- package/dist/core/review/remap.js +4 -141
- package/dist/core/review/signal.js +1 -12
- package/dist/core/review/stage.js +1 -184
- package/dist/core/review/store.js +1 -168
- package/dist/core/review/types.js +1 -23
- package/dist/core/runtime/advertised-command-invocation.js +1 -233
- package/dist/core/runtime/auth-reload.js +1 -67
- package/dist/core/runtime/banner.js +1 -51
- package/dist/core/runtime/bearings-render.js +18 -250
- package/dist/core/runtime/bearings.js +7 -194
- package/dist/core/runtime/bin-contributions.js +2 -186
- package/dist/core/runtime/boot-root.js +1 -107
- package/dist/core/runtime/branded-host.js +2 -264
- package/dist/core/runtime/broker/auth-reload.js +1 -157
- package/dist/core/runtime/broker/client-registry.js +1 -179
- package/dist/core/runtime/broker/daemon-ops.js +1 -88
- package/dist/core/runtime/broker/engine-drive.js +1 -354
- package/dist/core/runtime/broker/engine-routing.js +1 -211
- package/dist/core/runtime/broker/event-projection.js +1 -193
- package/dist/core/runtime/broker/extension-abort.js +1 -36
- package/dist/core/runtime/broker/fault-retry.js +1 -588
- package/dist/core/runtime/broker/frame-client.js +1 -132
- package/dist/core/runtime/broker/frame-dispatch.js +1 -183
- package/dist/core/runtime/broker/frame-engine-control.js +1 -231
- package/dist/core/runtime/broker/frame-memory-refs.js +1 -41
- package/dist/core/runtime/broker/frame-model-query.js +1 -69
- package/dist/core/runtime/broker/frame-read.js +1 -116
- package/dist/core/runtime/broker/frame-replies.js +1 -64
- package/dist/core/runtime/broker/frame-session.js +4 -203
- package/dist/core/runtime/broker/held-deferred-inbox.js +1 -13
- package/dist/core/runtime/broker/inbox.js +13 -163
- package/dist/core/runtime/broker/node-named.js +1 -27
- package/dist/core/runtime/broker/read-ops.js +1 -171
- package/dist/core/runtime/broker/rebind.js +1 -318
- package/dist/core/runtime/broker/tool-groups.js +1 -246
- package/dist/core/runtime/broker/turn-admission.js +1 -31
- package/dist/core/runtime/broker/turn-ignition.js +1 -84
- package/dist/core/runtime/broker-cli.js +3 -81
- package/dist/core/runtime/broker-extension-render.js +5 -135
- package/dist/core/runtime/broker-inventory.js +1 -116
- package/dist/core/runtime/broker-persona-guidance.js +4 -154
- package/dist/core/runtime/broker-protocol.js +3 -152
- package/dist/core/runtime/broker-request.js +1 -85
- package/dist/core/runtime/broker-sdk.js +1 -129
- package/dist/core/runtime/broker.js +1 -1214
- package/dist/core/runtime/canvas-extensions.js +1 -96
- package/dist/core/runtime/chat-inventory-rows.js +1 -105
- package/dist/core/runtime/close.js +1 -265
- package/dist/core/runtime/command-expansion.js +9 -104
- package/dist/core/runtime/command-surface.js +1 -117
- package/dist/core/runtime/connectivity.js +1 -73
- package/dist/core/runtime/deliver-live.js +1 -88
- package/dist/core/runtime/fault-recovery.js +1 -83
- package/dist/core/runtime/fault.js +1 -17
- package/dist/core/runtime/fleet.js +1 -58
- package/dist/core/runtime/front-door-env.js +1 -16
- package/dist/core/runtime/front-door.js +7 -183
- package/dist/core/runtime/headless-pi.js +1 -161
- package/dist/core/runtime/host.js +1 -457
- package/dist/core/runtime/interactive-deliver.js +1 -51
- package/dist/core/runtime/invocation.js +0 -10
- package/dist/core/runtime/kickoff.js +30 -327
- package/dist/core/runtime/launch-config-worker.js +1 -12
- package/dist/core/runtime/launch-prompt.js +4 -13
- package/dist/core/runtime/launch-target.js +1 -55
- package/dist/core/runtime/launch.js +1 -483
- package/dist/core/runtime/lifecycle.js +2 -213
- package/dist/core/runtime/managed-provider-cooling.js +1 -62
- package/dist/core/runtime/memory.js +1 -17
- package/dist/core/runtime/model-registry.js +1 -13
- package/dist/core/runtime/model-selection.js +1 -135
- package/dist/core/runtime/model-swap.js +1 -86
- package/dist/core/runtime/naming.js +14 -298
- package/dist/core/runtime/nerd-font.js +2 -127
- package/dist/core/runtime/node-read.js +2 -386
- package/dist/core/runtime/nodes.js +1 -331
- package/dist/core/runtime/outcome-document.js +1 -97
- package/dist/core/runtime/package-health.js +4 -99
- package/dist/core/runtime/persona.js +2 -55
- package/dist/core/runtime/pi-cli.js +1 -65
- package/dist/core/runtime/pi-vendored.js +1 -66
- package/dist/core/runtime/placement-tmux.js +1 -81
- package/dist/core/runtime/placement.js +1 -386
- package/dist/core/runtime/promote.js +1 -174
- package/dist/core/runtime/prospective-inventory-cli.js +3 -61
- package/dist/core/runtime/prospective-inventory.js +2 -88
- package/dist/core/runtime/recap.js +27 -103
- package/dist/core/runtime/recycle.js +1 -190
- package/dist/core/runtime/reopen.js +1 -138
- package/dist/core/runtime/reset.js +1 -245
- package/dist/core/runtime/resume-root.js +10 -290
- package/dist/core/runtime/revive-all.js +1 -107
- package/dist/core/runtime/revive.js +4 -544
- package/dist/core/runtime/roadmap.js +4 -38
- package/dist/core/runtime/session-branch.js +1 -46
- package/dist/core/runtime/session-cycles.js +1 -110
- package/dist/core/runtime/session-list-cache.js +1 -406
- package/dist/core/runtime/session-visibility.js +1 -99
- package/dist/core/runtime/shell-expansion.js +9 -100
- package/dist/core/runtime/situational-context.js +2 -67
- package/dist/core/runtime/situational-live.js +1 -41
- package/dist/core/runtime/spawn-env.js +1 -255
- package/dist/core/runtime/spawn.js +3 -577
- package/dist/core/runtime/stamp/channel.js +1 -76
- package/dist/core/runtime/stamp/protocol.js +1 -113
- package/dist/core/runtime/stop-guard.js +7 -116
- package/dist/core/runtime/stop-signals.js +1 -46
- package/dist/core/runtime/stream-watchdog.js +1 -134
- package/dist/core/runtime/structured-output.js +4 -156
- package/dist/core/runtime/surface-bg.js +1 -85
- package/dist/core/runtime/tmux-bindings.js +4 -730
- package/dist/core/runtime/tmux-chrome.js +1 -5
- package/dist/core/runtime/tmux-driver.js +7 -637
- package/dist/core/runtime/tool-group-summary.js +6 -85
- package/dist/core/runtime/turn-visibility.js +1 -31
- package/dist/core/runtime/view-socket.js +1 -83
- package/dist/core/runtime/warm-pool.js +1 -395
- package/dist/core/scope.js +1 -254
- package/dist/core/scoped-state/db.js +1 -135
- package/dist/core/scoped-state/migrate.js +3 -181
- package/dist/core/scoped-state/paths.js +1 -27
- package/dist/core/scoped-state/profiles.js +1 -62
- package/dist/core/scoped-state/providers.js +1 -8
- package/dist/core/scoped-state/schema.js +3 -16
- package/dist/core/scoped-state/settings.js +1 -82
- package/dist/core/secrets.js +2 -55
- package/dist/core/self-update.js +1 -71
- package/dist/core/session-model/session-state.js +1 -180
- package/dist/core/shell-segments.js +4 -169
- package/dist/core/spawn.js +1 -26
- package/dist/core/stdout-errors.js +1 -14
- package/dist/core/subscription-state.js +3 -193
- package/dist/core/substrate/frontmatter-validation.js +1 -105
- package/dist/core/substrate/gate-explain.js +1 -424
- package/dist/core/substrate/gate.js +1 -26
- package/dist/core/substrate/index.js +1 -30
- package/dist/core/substrate/injected-store.js +1 -249
- package/dist/core/substrate/listings.js +1 -115
- package/dist/core/substrate/on-read-node.js +1 -36
- package/dist/core/substrate/on-read.js +9 -315
- package/dist/core/substrate/plan.js +1 -266
- package/dist/core/substrate/render-node.js +1 -30
- package/dist/core/substrate/render.js +65 -689
- package/dist/core/substrate/schema.js +1 -186
- package/dist/core/substrate/session-cache.js +1 -83
- package/dist/core/substrate/subject-fields.js +1 -35
- package/dist/core/substrate/subject.js +1 -47
- package/dist/core/substrate/surface-match.js +1 -242
- package/dist/core/termrender/code-doc.js +5 -92
- package/dist/core/termrender/display.js +2 -56
- package/dist/core/termrender/termrender.js +14 -719
- package/dist/core/termrender/version.js +1 -1
- package/dist/core/timing.js +2 -94
- package/dist/core/tui/draw.js +2 -378
- package/dist/core/tui/fuzzy.js +1 -38
- package/dist/core/tui/markdown.js +3 -407
- package/dist/core/tui/page-host.js +1 -74
- package/dist/core/tui/panel.js +1 -137
- package/dist/core/tui/terminal.js +2 -100
- package/dist/core/user-settings.js +1 -454
- package/dist/core/wake.js +1 -296
- package/dist/core/worktree-close.js +6 -228
- package/dist/core/worktree-containment.js +3 -48
- package/dist/core/worktree-landing.js +4 -56
- package/dist/core/worktree-mutation-async.js +10 -280
- package/dist/core/worktree-quarantine.js +1 -54
- package/dist/core/worktree-sweep.js +6 -453
- package/dist/core/worktree.js +18 -899
- package/dist/daemon/api/bridge.js +8 -418
- package/dist/daemon/api/handlers/attach.js +1 -65
- package/dist/daemon/api/handlers/bash-jobs.js +2 -91
- package/dist/daemon/api/handlers/broker-ops.js +1 -447
- package/dist/daemon/api/handlers/broker-recovery.js +1 -251
- package/dist/daemon/api/handlers/canvas.js +6 -490
- package/dist/daemon/api/handlers/chat-inventory.js +1 -25
- package/dist/daemon/api/handlers/crons.js +1 -373
- package/dist/daemon/api/handlers/daemon.js +1 -76
- package/dist/daemon/api/handlers/feedback-comments.js +3 -199
- package/dist/daemon/api/handlers/files.js +1 -63
- package/dist/daemon/api/handlers/focus.js +1 -92
- package/dist/daemon/api/handlers/health.js +1 -76
- package/dist/daemon/api/handlers/human-requests.js +1 -379
- package/dist/daemon/api/handlers/human.js +1 -3
- package/dist/daemon/api/handlers/inbox-page.js +1 -89
- package/dist/daemon/api/handlers/inbox.js +1 -301
- package/dist/daemon/api/handlers/memory.js +1 -50
- package/dist/daemon/api/handlers/messages.js +2 -506
- package/dist/daemon/api/handlers/model-config.js +1 -44
- package/dist/daemon/api/handlers/modelauth.js +1 -165
- package/dist/daemon/api/handlers/node-outcomes.js +1 -181
- package/dist/daemon/api/handlers/nodes.js +1 -939
- package/dist/daemon/api/handlers/profiles.js +1 -140
- package/dist/daemon/api/handlers/prospective-chat-inventory.js +1 -59
- package/dist/daemon/api/handlers/reports.js +16 -332
- package/dist/daemon/api/handlers/review-comments.js +1 -465
- package/dist/daemon/api/handlers/reviews.js +1 -200
- package/dist/daemon/api/handlers/subscriptions.js +1 -53
- package/dist/daemon/api/handlers/validate.js +1 -58
- package/dist/daemon/api/handlers/worktree.js +1 -39
- package/dist/daemon/api/map.js +2 -735
- package/dist/daemon/api/router.js +1 -190
- package/dist/daemon/api/server.js +11 -408
- package/dist/daemon/boot-migrations.js +1 -31
- package/dist/daemon/companion-retire.js +1 -34
- package/dist/daemon/control.js +1 -22
- package/dist/daemon/cron/armed-context.js +1 -100
- package/dist/daemon/cron/capture.js +2 -45
- package/dist/daemon/cron/disposition.js +1 -55
- package/dist/daemon/cron/escalation.js +3 -124
- package/dist/daemon/cron/held.js +1 -20
- package/dist/daemon/cron/lease-recovery.js +1 -119
- package/dist/daemon/cron/live-runs.js +1 -23
- package/dist/daemon/cron/passes.js +1 -58
- package/dist/daemon/cron/settle.js +1 -61
- package/dist/daemon/cron/sinks.js +2 -59
- package/dist/daemon/cron-run.js +1 -405
- package/dist/daemon/crtrd-cli.js +1 -23
- package/dist/daemon/crtrd.js +8 -854
- package/dist/daemon/delivery/run-delivery.js +1 -164
- package/dist/daemon/fleet.js +17 -475
- package/dist/daemon/human/finish.js +10 -179
- package/dist/daemon/human/settle.js +1 -89
- package/dist/daemon/human/sweep.js +1 -66
- package/dist/daemon/manage.js +2 -595
- package/dist/daemon/messaging/node-message.js +1 -99
- package/dist/daemon/park-activity.js +1 -30
- package/dist/daemon/park-pending.js +1 -52
- package/dist/daemon/pidfile.js +1 -37
- package/dist/daemon/profile-delete.js +1 -306
- package/dist/daemon/reconcilers/bash-deadline.js +1 -80
- package/dist/daemon/reconcilers/broker-supervision.js +4 -761
- package/dist/daemon/reconcilers/controller-death.js +1 -14
- package/dist/daemon/reconcilers/cron-lane.js +1 -29
- package/dist/daemon/reconcilers/delivery-lane.js +1 -130
- package/dist/daemon/reconcilers/live-obligation.js +1 -87
- package/dist/daemon/reconcilers/managed-worktree-sweep.js +1 -202
- package/dist/daemon/reconcilers/node-deadline.js +1 -82
- package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.js +1 -172
- package/dist/daemon/reconcilers/node-lifecycle/respawn-policy.js +1 -59
- package/dist/daemon/reconcilers/node-lifecycle/terminating.js +1 -12
- package/dist/daemon/reconcilers/node-lifecycle/tick.js +1 -146
- package/dist/daemon/reconcilers/node-lifecycle/wants-execution.js +1 -11
- package/dist/daemon/reconcilers/pending-review-submit.js +1 -36
- package/dist/daemon/reconcilers/storage-maintenance.js +1 -207
- package/dist/daemon/review/comment-notify.js +2 -109
- package/dist/daemon/review/companion.js +1 -29
- package/dist/daemon/review/deliver.js +3 -8
- package/dist/daemon/review/finish.js +1 -122
- package/dist/daemon/review/sweep.js +1 -18
- package/dist/daemon/startup-policy.js +1 -1
- package/dist/daemon/supervise-cadence.js +1 -6
- package/dist/hook-authoring.js +5 -447
- package/dist/hook-process.js +1 -34
- package/dist/index.js +1 -52
- package/dist/migrations/001-surfaces-frontmatter.js +1 -161
- package/dist/migrations/002-profile-project-memory.js +1 -72
- package/dist/migrations/003-repository-root-memory-identity/front-door.js +11 -231
- package/dist/migrations/003-repository-root-memory-identity/index.js +5 -513
- package/dist/migrations/003-repository-root-memory-identity/references.js +5 -469
- package/dist/migrations/003-repository-root-memory-identity/repository-facts.js +3 -349
- package/dist/migrations/activation.js +2 -89
- package/dist/migrations/convergent.js +2 -82
- package/dist/migrations/corpus.js +3 -483
- package/dist/migrations/frontmatter-splice.js +8 -176
- package/dist/migrations/profile-manifests.js +2 -70
- package/dist/migrations/registry.js +1 -42
- package/dist/migrations/runner.js +1 -85
- package/dist/migrations/types.js +0 -24
- package/dist/pi-extensions/broker-local.js +2 -106
- package/dist/pi-extensions/canvas-bash-valve.js +7 -461
- package/dist/pi-extensions/canvas-context-intro.js +2 -113
- package/dist/pi-extensions/canvas-doc-substrate.js +9 -178
- package/dist/pi-extensions/canvas-goal-capture.js +1 -83
- package/dist/pi-extensions/canvas-inbox-watcher.js +1 -1010
- package/dist/pi-extensions/canvas-passive-context.js +14 -203
- package/dist/pi-extensions/canvas-preview-result.js +2 -72
- package/dist/pi-extensions/canvas-prompt-scrub.js +2 -54
- package/dist/pi-extensions/canvas-recap.js +11 -405
- package/dist/pi-extensions/canvas-review-boundary.js +3 -63
- package/dist/pi-extensions/canvas-stamp.js +2 -77
- package/dist/pi-extensions/canvas-stophook.js +1 -643
- package/dist/pi-extensions/canvas-structured-output.js +13 -35
- package/dist/pi-extensions/canvas-tool-guide.js +9 -78
- package/dist/pi-extensions/envelope-merge.js +8 -29
- package/dist/prompts/review.js +20 -42
- package/dist/shared/birth-announcement.js +1 -25
- package/dist/shared/crtr-version.js +1 -18
- package/dist/shared/env.js +1 -214
- package/dist/shared/generated-context.js +11 -226
- package/dist/shared/predicates.js +1 -4
- package/dist/shared/shell-quote.js +1 -5
- package/dist/shared/tool-groups.js +1 -64
- package/dist/shared/working-activity.js +1 -27
- package/dist/suppress-experimental-warnings.js +1 -15
- package/dist/types.js +1 -185
- package/docs/public-api.md +10 -9
- package/package.json +6 -4
- package/runtime.lock.json +5 -5
- package/scripts/pack-minify.mjs +108 -0
- package/dist/api/__tests__/integration/client.test.d.ts +0 -1
- package/dist/api/__tests__/integration/client.test.js +0 -163
- package/dist/builtin-pi-packages/pi-crtr-extensions/__tests__/insights-active-init.test.ts +0 -98
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-commands.test.ts +0 -93
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/integration/provider-rotation.test.ts +0 -2530
- package/dist/clients/__tests__/helpers/human-daemon.d.ts +0 -11
- package/dist/clients/__tests__/helpers/human-daemon.js +0 -60
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.js +0 -97
- package/dist/clients/attach/__tests__/bash-call-width.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/bash-call-width.test.js +0 -38
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +0 -175
- package/dist/clients/attach/__tests__/completion-frecency.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/completion-frecency.test.js +0 -35
- package/dist/clients/attach/__tests__/context-message.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/context-message.test.js +0 -130
- package/dist/clients/attach/__tests__/crtr-output.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/crtr-output.test.js +0 -68
- package/dist/clients/attach/__tests__/diagram.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/diagram.test.js +0 -42
- package/dist/clients/attach/__tests__/edit-diff.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/edit-diff.test.js +0 -31
- package/dist/clients/attach/__tests__/frame-selection.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/frame-selection.test.js +0 -84
- package/dist/clients/attach/__tests__/group-activity.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/group-activity.test.js +0 -165
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.js +0 -83
- package/dist/clients/attach/__tests__/pane-tag-successor.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/pane-tag-successor.test.js +0 -56
- package/dist/clients/attach/__tests__/profile-files.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/profile-files.test.js +0 -21
- package/dist/clients/attach/__tests__/prompt-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/prompt-preview.test.js +0 -21
- package/dist/clients/attach/__tests__/ref-autocomplete.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/ref-autocomplete.test.js +0 -64
- package/dist/clients/attach/__tests__/titled-editor-paste.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-paste.test.js +0 -114
- package/dist/clients/attach/__tests__/titled-editor-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-preview.test.js +0 -83
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.js +0 -81
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.js +0 -135
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.js +0 -66
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +0 -35
- package/dist/clients/inbox/review/__tests__/review-core.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/review-core.test.js +0 -52
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.js +0 -100
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.d.ts +0 -1
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.js +0 -69
- package/dist/commands/__tests__/human.test.d.ts +0 -1
- package/dist/commands/__tests__/human.test.js +0 -172
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.js +0 -237
- package/dist/commands/__tests__/integration/migrate.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/migrate.test.js +0 -1330
- package/dist/commands/__tests__/node-message.test.d.ts +0 -1
- package/dist/commands/__tests__/node-message.test.js +0 -112
- package/dist/commands/__tests__/node-new.test.d.ts +0 -1
- package/dist/commands/__tests__/node-new.test.js +0 -58
- package/dist/commands/__tests__/revive-now-gate.test.d.ts +0 -1
- package/dist/commands/__tests__/revive-now-gate.test.js +0 -62
- package/dist/commands/__tests__/seam/daemon-status.test.d.ts +0 -1
- package/dist/commands/__tests__/seam/daemon-status.test.js +0 -29
- package/dist/commands/__tests__/surface-reload-target.test.d.ts +0 -1
- package/dist/commands/__tests__/surface-reload-target.test.js +0 -21
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.js +0 -379
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.js +0 -124
- package/dist/commands/memory/__tests__/repository-root-lint.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/repository-root-lint.test.js +0 -148
- package/dist/commands/sys/__tests__/config-model-ladders.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/config-model-ladders.test.js +0 -114
- package/dist/commands/sys/__tests__/setup-core.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/setup-core.test.js +0 -45
- package/dist/commands/sys/__tests__/sync-project-guidance.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/sync-project-guidance.test.js +0 -244
- package/dist/core/__tests__/bash-guard.test.d.ts +0 -1
- package/dist/core/__tests__/bash-guard.test.js +0 -190
- package/dist/core/__tests__/boot-fault-attempt.test.d.ts +0 -1
- package/dist/core/__tests__/boot-fault-attempt.test.js +0 -105
- package/dist/core/__tests__/boot.test.d.ts +0 -1
- package/dist/core/__tests__/boot.test.js +0 -274
- package/dist/core/__tests__/branded-host-concurrency.test.d.ts +0 -1
- package/dist/core/__tests__/branded-host-concurrency.test.js +0 -72
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +0 -75
- package/dist/core/__tests__/broker-launch-candidates.test.d.ts +0 -1
- package/dist/core/__tests__/broker-launch-candidates.test.js +0 -311
- package/dist/core/__tests__/broker-preflight.test.d.ts +0 -1
- package/dist/core/__tests__/broker-preflight.test.js +0 -95
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.d.ts +0 -1
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.js +0 -82
- package/dist/core/__tests__/broker-turn-admission.test.d.ts +0 -1
- package/dist/core/__tests__/broker-turn-admission.test.js +0 -44
- package/dist/core/__tests__/canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-db-boundary.test.js +0 -46
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +0 -710
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.js +0 -310
- package/dist/core/__tests__/canvas-inbox-watcher.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher.test.js +0 -397
- package/dist/core/__tests__/canvas.test.d.ts +0 -1
- package/dist/core/__tests__/canvas.test.js +0 -138
- package/dist/core/__tests__/child-death-wake.test.d.ts +0 -1
- package/dist/core/__tests__/child-death-wake.test.js +0 -153
- package/dist/core/__tests__/cli-help-contract.test.d.ts +0 -1
- package/dist/core/__tests__/cli-help-contract.test.js +0 -152
- package/dist/core/__tests__/close.test.d.ts +0 -1
- package/dist/core/__tests__/close.test.js +0 -284
- package/dist/core/__tests__/collectible.test.d.ts +0 -1
- package/dist/core/__tests__/collectible.test.js +0 -89
- package/dist/core/__tests__/config-change-delta.test.d.ts +0 -1
- package/dist/core/__tests__/config-change-delta.test.js +0 -108
- package/dist/core/__tests__/context-intro.test.d.ts +0 -1
- package/dist/core/__tests__/context-intro.test.js +0 -123
- package/dist/core/__tests__/cron-armed-context-failure.test.d.ts +0 -1
- package/dist/core/__tests__/cron-armed-context-failure.test.js +0 -150
- package/dist/core/__tests__/cron-held-settlement.test.d.ts +0 -1
- package/dist/core/__tests__/cron-held-settlement.test.js +0 -240
- package/dist/core/__tests__/cron-node-sink-parked-root.test.d.ts +0 -1
- package/dist/core/__tests__/cron-node-sink-parked-root.test.js +0 -166
- package/dist/core/__tests__/cron-self-cancel-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/cron-self-cancel-delivery.test.js +0 -84
- package/dist/core/__tests__/cron-timeout-descendants.test.d.ts +0 -1
- package/dist/core/__tests__/cron-timeout-descendants.test.js +0 -114
- package/dist/core/__tests__/daemon-boot.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-boot.test.js +0 -422
- package/dist/core/__tests__/daemon-wedge.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-wedge.test.js +0 -106
- package/dist/core/__tests__/dead-node-policy-table.test.d.ts +0 -1
- package/dist/core/__tests__/dead-node-policy-table.test.js +0 -77
- package/dist/core/__tests__/events-contract.test.d.ts +0 -1
- package/dist/core/__tests__/events-contract.test.js +0 -76
- package/dist/core/__tests__/extension-abort.test.d.ts +0 -1
- package/dist/core/__tests__/extension-abort.test.js +0 -21
- package/dist/core/__tests__/fault-classifier.test.d.ts +0 -1
- package/dist/core/__tests__/fault-classifier.test.js +0 -138
- package/dist/core/__tests__/fixtures/api-server-host.d.ts +0 -1
- package/dist/core/__tests__/fixtures/api-server-host.js +0 -47
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.js +0 -34
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.js +0 -32
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +0 -347
- package/dist/core/__tests__/fixtures/fake-engine.js +0 -1509
- package/dist/core/__tests__/fixtures/fake-pi-host.d.ts +0 -2
- package/dist/core/__tests__/fixtures/fake-pi-host.js +0 -311
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.d.ts +0 -1
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.js +0 -75
- package/dist/core/__tests__/fixtures/metadata-migration-race.d.ts +0 -1
- package/dist/core/__tests__/fixtures/metadata-migration-race.js +0 -49
- package/dist/core/__tests__/focuses.test.d.ts +0 -1
- package/dist/core/__tests__/focuses.test.js +0 -113
- package/dist/core/__tests__/fs-utils.test.d.ts +0 -1
- package/dist/core/__tests__/fs-utils.test.js +0 -50
- package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -43
- package/dist/core/__tests__/helpers/broker-clients.js +0 -174
- package/dist/core/__tests__/helpers/fleet.d.ts +0 -12
- package/dist/core/__tests__/helpers/fleet.js +0 -50
- package/dist/core/__tests__/helpers/harness.d.ts +0 -124
- package/dist/core/__tests__/helpers/harness.js +0 -806
- package/dist/core/__tests__/helpers/viewer-panes.d.ts +0 -12
- package/dist/core/__tests__/helpers/viewer-panes.js +0 -133
- package/dist/core/__tests__/history-inbox.test.d.ts +0 -1
- package/dist/core/__tests__/history-inbox.test.js +0 -121
- package/dist/core/__tests__/human-action-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/human-action-delivery.test.js +0 -162
- package/dist/core/__tests__/human-actions.test.d.ts +0 -1
- package/dist/core/__tests__/human-actions.test.js +0 -120
- package/dist/core/__tests__/inline-memory-refs.test.d.ts +0 -1
- package/dist/core/__tests__/inline-memory-refs.test.js +0 -225
- package/dist/core/__tests__/integration/broker-fork-seam.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-fork-seam.test.js +0 -193
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.js +0 -750
- package/dist/core/__tests__/integration/broker-snapshot-history.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-snapshot-history.test.js +0 -288
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.js +0 -103
- package/dist/core/__tests__/integration/command-plugins.test.d.ts +0 -1
- package/dist/core/__tests__/integration/command-plugins.test.js +0 -1200
- package/dist/core/__tests__/integration/deferred-no-wake.test.d.ts +0 -1
- package/dist/core/__tests__/integration/deferred-no-wake.test.js +0 -610
- package/dist/core/__tests__/integration/flagship-lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/flagship-lifecycle.test.js +0 -264
- package/dist/core/__tests__/integration/fresh-home-commands.test.d.ts +0 -1
- package/dist/core/__tests__/integration/fresh-home-commands.test.js +0 -49
- package/dist/core/__tests__/integration/git-optional-locks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/git-optional-locks.test.js +0 -81
- package/dist/core/__tests__/integration/host-teardown-process-group.test.d.ts +0 -1
- package/dist/core/__tests__/integration/host-teardown-process-group.test.js +0 -480
- package/dist/core/__tests__/integration/lifecycle-hooks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/lifecycle-hooks.test.js +0 -498
- package/dist/core/__tests__/integration/live-mutation-verbs.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation-verbs.test.js +0 -180
- package/dist/core/__tests__/integration/live-mutation.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation.test.js +0 -173
- package/dist/core/__tests__/integration/plugin-revalidate.test.d.ts +0 -1
- package/dist/core/__tests__/integration/plugin-revalidate.test.js +0 -359
- package/dist/core/__tests__/integration/profile-pause.test.d.ts +0 -1
- package/dist/core/__tests__/integration/profile-pause.test.js +0 -115
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.js +0 -151
- package/dist/core/__tests__/integration/revive.test.d.ts +0 -1
- package/dist/core/__tests__/integration/revive.test.js +0 -615
- package/dist/core/__tests__/integration/spawn-root.test.d.ts +0 -1
- package/dist/core/__tests__/integration/spawn-root.test.js +0 -536
- package/dist/core/__tests__/integration/subscription-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/integration/subscription-delivery.test.js +0 -132
- package/dist/core/__tests__/integration/tmux-surface.test.d.ts +0 -1
- package/dist/core/__tests__/integration/tmux-surface.test.js +0 -330
- package/dist/core/__tests__/integration/worktree-land.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-land.test.js +0 -607
- package/dist/core/__tests__/integration/worktree-reap.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-reap.test.js +0 -842
- package/dist/core/__tests__/kickoff.test.d.ts +0 -1
- package/dist/core/__tests__/kickoff.test.js +0 -196
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.js +0 -62
- package/dist/core/__tests__/lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle.test.js +0 -176
- package/dist/core/__tests__/live-lifecycle-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/live-lifecycle-prompt.test.js +0 -63
- package/dist/core/__tests__/memory-resolver-precedence.test.d.ts +0 -1
- package/dist/core/__tests__/memory-resolver-precedence.test.js +0 -228
- package/dist/core/__tests__/migration.test.d.ts +0 -1
- package/dist/core/__tests__/migration.test.js +0 -946
- package/dist/core/__tests__/model-pin-durability.test.d.ts +0 -1
- package/dist/core/__tests__/model-pin-durability.test.js +0 -195
- package/dist/core/__tests__/model-routes-config.test.d.ts +0 -1
- package/dist/core/__tests__/model-routes-config.test.js +0 -150
- package/dist/core/__tests__/nested-store-discovery.test.d.ts +0 -1
- package/dist/core/__tests__/nested-store-discovery.test.js +0 -89
- package/dist/core/__tests__/node-outcome.test.d.ts +0 -1
- package/dist/core/__tests__/node-outcome.test.js +0 -246
- package/dist/core/__tests__/on-read-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-crouter-home-fence.test.js +0 -66
- package/dist/core/__tests__/on-read-dedup-resume.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-dedup-resume.test.js +0 -132
- package/dist/core/__tests__/on-read-nested-store.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-nested-store.test.js +0 -135
- package/dist/core/__tests__/parse-argv-stdin-secret.test.d.ts +0 -1
- package/dist/core/__tests__/parse-argv-stdin-secret.test.js +0 -68
- package/dist/core/__tests__/passive-subscription.test.d.ts +0 -1
- package/dist/core/__tests__/passive-subscription.test.js +0 -120
- package/dist/core/__tests__/pid-identity-match.test.d.ts +0 -1
- package/dist/core/__tests__/pid-identity-match.test.js +0 -145
- package/dist/core/__tests__/pid-zombie.test.d.ts +0 -1
- package/dist/core/__tests__/pid-zombie.test.js +0 -42
- package/dist/core/__tests__/plugin-kinds.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-kinds.test.js +0 -182
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.js +0 -43
- package/dist/core/__tests__/plugin-page-components.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-page-components.test.js +0 -159
- package/dist/core/__tests__/preview-mirror-cap.test.d.ts +0 -1
- package/dist/core/__tests__/preview-mirror-cap.test.js +0 -53
- package/dist/core/__tests__/preview-registry-sync.test.d.ts +0 -1
- package/dist/core/__tests__/preview-registry-sync.test.js +0 -107
- package/dist/core/__tests__/profile-project-memory-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/profile-project-memory-delivery.test.js +0 -644
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.d.ts +0 -1
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.js +0 -91
- package/dist/core/__tests__/prune.test.d.ts +0 -1
- package/dist/core/__tests__/prune.test.js +0 -243
- package/dist/core/__tests__/push-final-guard.test.d.ts +0 -1
- package/dist/core/__tests__/push-final-guard.test.js +0 -191
- package/dist/core/__tests__/relaunch-root.test.d.ts +0 -1
- package/dist/core/__tests__/relaunch-root.test.js +0 -249
- package/dist/core/__tests__/remote-canvas-target.test.d.ts +0 -1
- package/dist/core/__tests__/remote-canvas-target.test.js +0 -93
- package/dist/core/__tests__/repository-association.test.d.ts +0 -1
- package/dist/core/__tests__/repository-association.test.js +0 -153
- package/dist/core/__tests__/repository-root-identity.test.d.ts +0 -1
- package/dist/core/__tests__/repository-root-identity.test.js +0 -223
- package/dist/core/__tests__/respawn-throttle.test.d.ts +0 -1
- package/dist/core/__tests__/respawn-throttle.test.js +0 -20
- package/dist/core/__tests__/review-model-floor.test.d.ts +0 -1
- package/dist/core/__tests__/review-model-floor.test.js +0 -83
- package/dist/core/__tests__/revive-all.test.d.ts +0 -1
- package/dist/core/__tests__/revive-all.test.js +0 -157
- package/dist/core/__tests__/revive-capacity.test.d.ts +0 -1
- package/dist/core/__tests__/revive-capacity.test.js +0 -184
- package/dist/core/__tests__/revive-parked-fresh.test.d.ts +0 -1
- package/dist/core/__tests__/revive-parked-fresh.test.js +0 -176
- package/dist/core/__tests__/scope-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/scope-crouter-home-fence.test.js +0 -55
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +0 -262
- package/dist/core/__tests__/seam/broker-attach-stream.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-stream.test.js +0 -176
- package/dist/core/__tests__/seam/broker-cap-freeze.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-cap-freeze.test.js +0 -155
- package/dist/core/__tests__/seam/broker-crash-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-crash-teardown.test.js +0 -131
- package/dist/core/__tests__/seam/broker-pane-resolution.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-pane-resolution.test.js +0 -204
- package/dist/core/__tests__/seam/broker-provider-retry.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-provider-retry.test.js +0 -686
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.js +0 -82
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.js +0 -50
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.js +0 -138
- package/dist/core/__tests__/seam/dormancy-release.test.d.ts +0 -1
- package/dist/core/__tests__/seam/dormancy-release.test.js +0 -516
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.js +0 -65
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.d.ts +0 -1
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.js +0 -84
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.d.ts +0 -1
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.js +0 -160
- package/dist/core/__tests__/seam/node-outcome-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/node-outcome-delivery.test.js +0 -177
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.d.ts +0 -1
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.js +0 -31
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.d.ts +0 -1
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.js +0 -60
- package/dist/core/__tests__/seam/self-close-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/self-close-teardown.test.js +0 -49
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.d.ts +0 -1
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.js +0 -100
- package/dist/core/__tests__/secrets.test.d.ts +0 -1
- package/dist/core/__tests__/secrets.test.js +0 -49
- package/dist/core/__tests__/self-update.test.d.ts +0 -1
- package/dist/core/__tests__/self-update.test.js +0 -46
- package/dist/core/__tests__/session-branch.test.d.ts +0 -1
- package/dist/core/__tests__/session-branch.test.js +0 -61
- package/dist/core/__tests__/session-cycles.test.d.ts +0 -1
- package/dist/core/__tests__/session-cycles.test.js +0 -133
- package/dist/core/__tests__/session-model.test.d.ts +0 -1
- package/dist/core/__tests__/session-model.test.js +0 -111
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.d.ts +0 -1
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +0 -71
- package/dist/core/__tests__/stdin-body-no-discard.test.d.ts +0 -1
- package/dist/core/__tests__/stdin-body-no-discard.test.js +0 -33
- package/dist/core/__tests__/stdout-errors.test.d.ts +0 -1
- package/dist/core/__tests__/stdout-errors.test.js +0 -16
- package/dist/core/__tests__/stop-guard.test.d.ts +0 -1
- package/dist/core/__tests__/stop-guard.test.js +0 -237
- package/dist/core/__tests__/stream-watchdog.test.d.ts +0 -1
- package/dist/core/__tests__/stream-watchdog.test.js +0 -154
- package/dist/core/__tests__/subscription-pool-credential-guard.test.d.ts +0 -1
- package/dist/core/__tests__/subscription-pool-credential-guard.test.js +0 -95
- package/dist/core/__tests__/tmux-driver-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/tmux-driver-boundary.test.js +0 -50
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.d.ts +0 -1
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.js +0 -54
- package/dist/core/__tests__/worktree-landing.test.d.ts +0 -1
- package/dist/core/__tests__/worktree-landing.test.js +0 -11
- package/dist/core/__tests__/yield-ensures-daemon.test.d.ts +0 -1
- package/dist/core/__tests__/yield-ensures-daemon.test.js +0 -55
- package/dist/core/broker-client/__tests__/transport-relay.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-relay.test.js +0 -214
- package/dist/core/broker-client/__tests__/transport-socket.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-socket.test.js +0 -73
- package/dist/core/canvas/__tests__/attention.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/attention.test.js +0 -83
- package/dist/core/canvas/__tests__/history-transcript.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/history-transcript.test.js +0 -102
- package/dist/core/canvas/__tests__/remote-canvas-source.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-canvas-source.test.js +0 -328
- package/dist/core/canvas/__tests__/remote-transport.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-transport.test.js +0 -97
- package/dist/core/canvas/__tests__/render-remote.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/render-remote.test.js +0 -243
- package/dist/core/canvas/__tests__/session-window.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/session-window.test.js +0 -70
- package/dist/core/feed/__tests__/inbox-migrate.test.d.ts +0 -1
- package/dist/core/feed/__tests__/inbox-migrate.test.js +0 -49
- package/dist/core/human/__tests__/page-catalog.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-catalog.test.js +0 -20
- package/dist/core/human/__tests__/page-html-markdown.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-html-markdown.test.js +0 -48
- package/dist/core/human/__tests__/page.test.d.ts +0 -1
- package/dist/core/human/__tests__/page.test.js +0 -92
- package/dist/core/keybindings/__tests__/resolve.test.d.ts +0 -1
- package/dist/core/keybindings/__tests__/resolve.test.js +0 -171
- package/dist/core/profiles/__tests__/env-store.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/env-store.test.js +0 -99
- package/dist/core/profiles/__tests__/fuzzy-match.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/fuzzy-match.test.js +0 -51
- package/dist/core/profiles/__tests__/root-profile.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/root-profile.test.js +0 -59
- package/dist/core/review/__tests__/capture-origin.test.d.ts +0 -1
- package/dist/core/review/__tests__/capture-origin.test.js +0 -150
- package/dist/core/review/__tests__/comments.test.d.ts +0 -1
- package/dist/core/review/__tests__/comments.test.js +0 -116
- package/dist/core/review/__tests__/remap.test.d.ts +0 -1
- package/dist/core/review/__tests__/remap.test.js +0 -177
- package/dist/core/review/__tests__/stage-identity.test.d.ts +0 -1
- package/dist/core/review/__tests__/stage-identity.test.js +0 -150
- package/dist/core/runtime/__tests__/engine-route.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/engine-route.test.js +0 -36
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.js +0 -45
- package/dist/core/runtime/__tests__/node-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/node-env.test.js +0 -73
- package/dist/core/runtime/__tests__/spawn-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/spawn-env.test.js +0 -259
- package/dist/core/substrate/__tests__/surface-match-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-command.test.js +0 -89
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.js +0 -28
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.js +0 -92
- package/dist/daemon/__tests__/autostart-storm.test.d.ts +0 -1
- package/dist/daemon/__tests__/autostart-storm.test.js +0 -128
- package/dist/daemon/__tests__/broker-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/broker-ownership.test.js +0 -25
- package/dist/daemon/__tests__/daemon-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/daemon-ownership.test.js +0 -27
- package/dist/daemon/__tests__/helpers/source-daemon.d.ts +0 -30
- package/dist/daemon/__tests__/helpers/source-daemon.js +0 -176
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.js +0 -83
- package/dist/daemon/__tests__/integration/migration-startup.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/migration-startup.test.js +0 -127
- package/dist/daemon/__tests__/node-deadline-lane.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-deadline-lane.test.js +0 -77
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.js +0 -146
- package/dist/daemon/__tests__/node-outcome-delivery.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-delivery.test.js +0 -116
- package/dist/daemon/__tests__/reconciler-signature.test.d.ts +0 -1
- package/dist/daemon/__tests__/reconciler-signature.test.js +0 -37
- package/dist/daemon/__tests__/subtree-filter-freshness.test.d.ts +0 -1
- package/dist/daemon/__tests__/subtree-filter-freshness.test.js +0 -63
- package/dist/daemon/__tests__/thaw-order.test.d.ts +0 -1
- package/dist/daemon/__tests__/thaw-order.test.js +0 -55
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.js +0 -58
- package/dist/daemon/api/__tests__/broker-settle-park.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/broker-settle-park.test.js +0 -175
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.js +0 -216
- package/dist/daemon/api/__tests__/error-seam.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/error-seam.test.js +0 -83
- package/dist/daemon/api/__tests__/model-config.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/model-config.test.js +0 -73
- package/dist/daemon/api/__tests__/node-create-description.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-create-description.test.js +0 -127
- package/dist/daemon/api/__tests__/node-model-validation.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-model-validation.test.js +0 -183
- package/dist/daemon/api/__tests__/nodes-activity-query.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/nodes-activity-query.test.js +0 -99
- package/dist/daemon/api/__tests__/profile-launch-gates.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-launch-gates.test.js +0 -172
- package/dist/daemon/api/__tests__/profile-metadata-route.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-metadata-route.test.js +0 -95
- package/dist/daemon/api/__tests__/reopen-delivery.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/reopen-delivery.test.js +0 -260
- package/dist/daemon/api/__tests__/seam/api-server.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/api-server.test.js +0 -442
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.js +0 -310
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.js +0 -351
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.js +0 -159
- package/dist/daemon/api/__tests__/seam/profile-delete.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/profile-delete.test.js +0 -372
- package/dist/daemon/api/__tests__/submit-result.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/submit-result.test.js +0 -215
- package/dist/migrations/__tests__/activation-concurrency.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation-concurrency.test.js +0 -146
- package/dist/migrations/__tests__/activation.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation.test.js +0 -152
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.d.ts +0 -1
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.js +0 -149
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.js +0 -86
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +0 -364
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.js +0 -106
- package/dist/pi-extensions/__tests__/canvas-recap.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-recap.test.js +0 -62
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +0 -432
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +0 -152
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +0 -88
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.js +0 -96
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.js +0 -133
- package/dist/pi-extensions/__tests__/pre-command-gate.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/pre-command-gate.test.js +0 -232
- package/dist/shared/__tests__/env-boundary.test.d.ts +0 -1
- package/dist/shared/__tests__/env-boundary.test.js +0 -95
- package/dist/shared/__tests__/generated-context-grammar.test.d.ts +0 -1
- package/dist/shared/__tests__/generated-context-grammar.test.js +0 -80
- package/docs/compat/hearth-crtr-v1.md +0 -179
- package/docs/compat/hearth-crtr-v2.md +0 -177
- package/docs/compat/hearth-crtr-v3.md +0 -176
- package/docs/compat/hearth-crtr-v4.md +0 -182
- package/docs/compat/hearth-crtr-v5.md +0 -169
|
@@ -1,381 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { basename, join } from 'node:path';
|
|
4
|
-
import { z } from 'zod';
|
|
5
|
-
import { crtrHome, isSafeNodeId, nodesRoot } from '../canvas/paths.js';
|
|
6
|
-
import { openDb, withCanvasWrite } from '../canvas/db.js';
|
|
7
|
-
import { syncDirectory, syncFile } from '../fs-utils.js';
|
|
8
|
-
import { newNodeId } from '../runtime/nodes.js';
|
|
9
|
-
import { pageManifestPath, pageModulePath, pagePath } from './convention.js';
|
|
10
|
-
import { preparePageSource } from './page-authoring.js';
|
|
11
|
-
import { pageDeliverySchema, validatePageManifest } from './page-schema.js';
|
|
12
|
-
function bool(value) { return value === 1 || value === true; }
|
|
13
|
-
function recordFromRow(raw) {
|
|
14
|
-
return {
|
|
15
|
-
request_id: raw['request_id'],
|
|
16
|
-
kind: raw['kind'],
|
|
17
|
-
inbox_ticket_id: raw['inbox_ticket_id'],
|
|
18
|
-
request_dir: raw['request_dir'],
|
|
19
|
-
presentation_dir: raw['presentation_dir'],
|
|
20
|
-
requester_node_id: raw['requester_node_id'],
|
|
21
|
-
companion_node_id: raw['companion_node_id'],
|
|
22
|
-
idempotency_key: raw['idempotency_key'],
|
|
23
|
-
state: raw['state'],
|
|
24
|
-
outcome: raw['outcome'],
|
|
25
|
-
inbox_listed: bool(raw['inbox_listed']),
|
|
26
|
-
settleable: bool(raw['settleable']),
|
|
27
|
-
title: raw['title'],
|
|
28
|
-
subtitle: raw['subtitle'],
|
|
29
|
-
file: raw['file'],
|
|
30
|
-
specification_json: raw['specification_json'],
|
|
31
|
-
action_json: raw['action_json'],
|
|
32
|
-
progress_json: raw['progress_json'],
|
|
33
|
-
feedback_json: raw['feedback_json'],
|
|
34
|
-
result_json: raw['result_json'],
|
|
35
|
-
anchor_base_sha256: raw['anchor_base_sha256'],
|
|
36
|
-
anchor_base_bytes: raw['anchor_base_bytes'] === null ? null : Buffer.from(raw['anchor_base_bytes']),
|
|
37
|
-
created_at: raw['created_at'],
|
|
38
|
-
opened_at: raw['opened_at'],
|
|
39
|
-
submit_requested_at: raw['submit_requested_at'],
|
|
40
|
-
settled_at: raw['settled_at'],
|
|
41
|
-
settlement_delivery_id: raw['settlement_delivery_id'],
|
|
42
|
-
action_delivery_id: raw['action_delivery_id'],
|
|
43
|
-
submit_note_delivery_id: raw['submit_note_delivery_id'],
|
|
44
|
-
projected_at: raw['projected_at'],
|
|
45
|
-
projection_error: raw['projection_error'],
|
|
46
|
-
companion_retired_at: raw['companion_retired_at'],
|
|
47
|
-
updated_at: raw['updated_at'],
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
function one(db, where, ...params) {
|
|
51
|
-
const raw = db.prepare(`SELECT * FROM human_requests WHERE ${where}`).get(...params);
|
|
52
|
-
return raw === undefined ? null : recordFromRow(raw);
|
|
53
|
-
}
|
|
54
|
-
function many(db, where, params = [], order = 'created_at ASC, request_id ASC') {
|
|
55
|
-
return db.prepare(`SELECT * FROM human_requests WHERE ${where} ORDER BY ${order}`).all(...params).map(recordFromRow);
|
|
56
|
-
}
|
|
57
|
-
export function humanRequestsRoot() { return join(crtrHome(), 'requests'); }
|
|
58
|
-
export function requestDir(requestId) {
|
|
59
|
-
if (!isSafeNodeId(requestId))
|
|
60
|
-
throw new TypeError(`request_id must be a safe path segment: ${requestId}`);
|
|
61
|
-
const root = humanRequestsRoot();
|
|
62
|
-
mkdirSync(root, { recursive: true, mode: 0o700 });
|
|
63
|
-
return join(realpathSync(root), requestId);
|
|
64
|
-
}
|
|
65
|
-
function randomTicketId() { return randomBytes(32).toString('hex'); }
|
|
66
|
-
function legacyTicketId(root, name) {
|
|
67
|
-
return createHash('sha256').update(`${realpathSync(root)}\0${name}`, 'utf8').digest('hex');
|
|
68
|
-
}
|
|
69
|
-
const durablePageRevisionStorage = {
|
|
70
|
-
writeFile(path, content) { writeFileSync(path, content, { flag: 'wx', mode: 0o600 }); },
|
|
71
|
-
syncFile,
|
|
72
|
-
syncDirectory,
|
|
73
|
-
};
|
|
74
|
-
function revisionRoot(dir) { return join(dir, 'revisions'); }
|
|
75
|
-
/** Publish a complete, immutable revision before a request can select it. */
|
|
76
|
-
export function publishPageRevision(dir, prepared, storage = durablePageRevisionStorage) {
|
|
77
|
-
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
78
|
-
const revisions = revisionRoot(dir);
|
|
79
|
-
mkdirSync(revisions, { recursive: true, mode: 0o700 });
|
|
80
|
-
const revision = join(revisions, randomBytes(16).toString('hex'));
|
|
81
|
-
mkdirSync(revision, { mode: 0o700 });
|
|
82
|
-
const document = pagePath(revision, prepared.manifest.dialect);
|
|
83
|
-
storage.writeFile(document, prepared.document);
|
|
84
|
-
storage.syncFile(document);
|
|
85
|
-
if (prepared.manifest.dialect === 'jsx') {
|
|
86
|
-
const module = pageModulePath(revision);
|
|
87
|
-
storage.writeFile(module, prepared.module);
|
|
88
|
-
storage.syncFile(module);
|
|
89
|
-
}
|
|
90
|
-
const manifest = pageManifestPath(revision);
|
|
91
|
-
storage.writeFile(manifest, `${JSON.stringify(prepared.manifest, null, 2)}\n`);
|
|
92
|
-
storage.syncFile(manifest);
|
|
93
|
-
storage.syncDirectory(revision);
|
|
94
|
-
storage.syncDirectory(revisions);
|
|
95
|
-
storage.syncDirectory(dir);
|
|
96
|
-
storage.syncDirectory(humanRequestsRoot());
|
|
97
|
-
return revision;
|
|
98
|
-
}
|
|
99
|
-
/** The SQL-selected page revision. There is no path-based fallback for page reads. */
|
|
100
|
-
export function presentationDir(request) {
|
|
101
|
-
if (request.kind !== 'page' || request.presentation_dir === null)
|
|
102
|
-
throw new Error(`page request has no selected presentation: ${request.request_id}`);
|
|
103
|
-
return request.presentation_dir;
|
|
104
|
-
}
|
|
105
|
-
/** Creates one SQL-authoritative page request. `request_id` is optional for ordinary callers and frozen by cron creation. */
|
|
106
|
-
export function createPageRequest(input) {
|
|
107
|
-
const requestId = input.request_id ?? newNodeId();
|
|
108
|
-
const dir = requestDir(requestId);
|
|
109
|
-
const selectedPresentation = publishPageRevision(dir, input.prepared);
|
|
110
|
-
const at = new Date().toISOString();
|
|
111
|
-
const manifest = input.prepared.manifest;
|
|
112
|
-
return withCanvasWrite((db) => {
|
|
113
|
-
db.prepare(`
|
|
1
|
+
var oe=Object.defineProperty;var i=(e,t)=>oe(e,"name",{value:t,configurable:!0});import{createHash as de,randomBytes as L}from"node:crypto";import{existsSync as E,mkdirSync as v,readFileSync as K,readdirSync as ae,realpathSync as k,statSync as ue,writeFileSync as ce}from"node:fs";import{basename as x,join as c}from"node:path";import{z as d}from"zod";import{crtrHome as V,isSafeNodeId as le,nodesRoot as b}from"../canvas/paths.js";import{openDb as l,withCanvasWrite as m}from"../canvas/db.js";import{syncDirectory as _e,syncFile as pe}from"../fs-utils.js";import{newNodeId as me}from"../runtime/nodes.js";import{pageManifestPath as fe,pageModulePath as Ee,pagePath as ge}from"./convention.js";import{preparePageSource as ye}from"./page-authoring.js";import{pageDeliverySchema as he,validatePageManifest as z}from"./page-schema.js";function G(e){return e===1||e===!0}i(G,"bool");function Q(e){return{request_id:e.request_id,kind:e.kind,inbox_ticket_id:e.inbox_ticket_id,request_dir:e.request_dir,presentation_dir:e.presentation_dir,requester_node_id:e.requester_node_id,companion_node_id:e.companion_node_id,idempotency_key:e.idempotency_key,state:e.state,outcome:e.outcome,inbox_listed:G(e.inbox_listed),settleable:G(e.settleable),title:e.title,subtitle:e.subtitle,file:e.file,specification_json:e.specification_json,action_json:e.action_json,progress_json:e.progress_json,feedback_json:e.feedback_json,result_json:e.result_json,anchor_base_sha256:e.anchor_base_sha256,anchor_base_bytes:e.anchor_base_bytes===null?null:Buffer.from(e.anchor_base_bytes),created_at:e.created_at,opened_at:e.opened_at,submit_requested_at:e.submit_requested_at,settled_at:e.settled_at,settlement_delivery_id:e.settlement_delivery_id,action_delivery_id:e.action_delivery_id,submit_note_delivery_id:e.submit_note_delivery_id,projected_at:e.projected_at,projection_error:e.projection_error,companion_retired_at:e.companion_retired_at,updated_at:e.updated_at}}i(Q,"recordFromRow");function h(e,t,...r){const s=e.prepare(`SELECT * FROM human_requests WHERE ${t}`).get(...r);return s===void 0?null:Q(s)}i(h,"one");function N(e,t,r=[],s="created_at ASC, request_id ASC"){return e.prepare(`SELECT * FROM human_requests WHERE ${t} ORDER BY ${s}`).all(...r).map(Q)}i(N,"many");function Y(){return c(V(),"requests")}i(Y,"humanRequestsRoot");function w(e){if(!le(e))throw new TypeError(`request_id must be a safe path segment: ${e}`);const t=Y();return v(t,{recursive:!0,mode:448}),c(k(t),e)}i(w,"requestDir");function j(){return L(32).toString("hex")}i(j,"randomTicketId");function C(e,t){return de("sha256").update(`${k(e)}\0${t}`,"utf8").digest("hex")}i(C,"legacyTicketId");const qe={writeFile(e,t){ce(e,t,{flag:"wx",mode:384})},syncFile:pe,syncDirectory:_e};function be(e){return c(e,"revisions")}i(be,"revisionRoot");function Z(e,t,r=qe){v(e,{recursive:!0,mode:448});const s=be(e);v(s,{recursive:!0,mode:448});const n=c(s,L(16).toString("hex"));v(n,{mode:448});const o=ge(n,t.manifest.dialect);if(r.writeFile(o,t.document),r.syncFile(o),t.manifest.dialect==="jsx"){const a=Ee(n);r.writeFile(a,t.module),r.syncFile(a)}const u=fe(n);return r.writeFile(u,`${JSON.stringify(t.manifest,null,2)}
|
|
2
|
+
`),r.syncFile(u),r.syncDirectory(n),r.syncDirectory(s),r.syncDirectory(e),r.syncDirectory(Y()),n}i(Z,"publishPageRevision");function Je(e){if(e.kind!=="page"||e.presentation_dir===null)throw new Error(`page request has no selected presentation: ${e.request_id}`);return e.presentation_dir}i(Je,"presentationDir");function Be(e){const t=e.request_id??me(),r=w(t),s=Z(r,e.prepared),n=new Date().toISOString(),o=e.prepared.manifest;return m(u=>{u.prepare(`
|
|
114
3
|
INSERT INTO human_requests (
|
|
115
4
|
request_id, kind, inbox_ticket_id, request_dir, presentation_dir, requester_node_id, state, inbox_listed,
|
|
116
5
|
settleable, title, subtitle, specification_json, action_json, created_at, updated_at
|
|
117
6
|
) VALUES (?, 'page', ?, ?, ?, ?, 'open', ?, ?, ?, ?, ?, ?, ?, ?)
|
|
118
|
-
`).run(
|
|
119
|
-
const request = one(db, 'request_id = ?', requestId);
|
|
120
|
-
if (request === null)
|
|
121
|
-
throw new Error(`page request insert did not produce a row: ${requestId}`);
|
|
122
|
-
return request;
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
/** Claims a review idempotency key before companion realization. */
|
|
126
|
-
export function commitBindingRequest(input) {
|
|
127
|
-
return withCanvasWrite((db) => {
|
|
128
|
-
const inserted = db.prepare(`
|
|
7
|
+
`).run(t,e.inbox_ticket_id??j(),r,s,e.requester_node_id??null,o.delivery.inbox?1:0,o.delivery.inbox||o.delivery.reply?1:0,o.title,o.subtitle??null,JSON.stringify(o),e.action_json??null,n,n);const a=h(u,"request_id = ?",t);if(a===null)throw new Error(`page request insert did not produce a row: ${t}`);return a})}i(Be,"createPageRequest");function Ke(e){return m(t=>{const r=t.prepare(`
|
|
129
8
|
INSERT INTO human_requests (
|
|
130
9
|
request_id, kind, inbox_ticket_id, request_dir, requester_node_id, companion_node_id,
|
|
131
10
|
idempotency_key, state, inbox_listed, settleable, title, subtitle, file,
|
|
132
11
|
specification_json, anchor_base_sha256, anchor_base_bytes, created_at, updated_at
|
|
133
12
|
) VALUES (?, 'review', ?, ?, ?, ?, ?, 'binding', ?, 1, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
134
13
|
ON CONFLICT(idempotency_key) DO NOTHING
|
|
135
|
-
`).run(
|
|
136
|
-
const winner = one(db, 'idempotency_key = ?', input.idempotency_key);
|
|
137
|
-
if (winner === null)
|
|
138
|
-
throw new Error(`review binding insert did not produce a row: ${input.idempotency_key}`);
|
|
139
|
-
return { request_id: winner.request_id, won: inserted.changes > 0 };
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
export function getRequest(requestId) { return one(openDb(), 'request_id = ?', requestId); }
|
|
143
|
-
export function getRequestByInboxTicket(ticketId) { return one(openDb(), 'inbox_ticket_id = ?', ticketId); }
|
|
144
|
-
export function getRequestByDirectory(dir) {
|
|
145
|
-
let canonical = dir;
|
|
146
|
-
try {
|
|
147
|
-
canonical = realpathSync(dir);
|
|
148
|
-
}
|
|
149
|
-
catch { /* A caller may name a request directory before it exists. */ }
|
|
150
|
-
return one(openDb(), 'request_dir = ?', canonical);
|
|
151
|
-
}
|
|
152
|
-
export function getRequestByCompanion(nodeId) { return one(openDb(), "companion_node_id = ? AND state <> 'binding'", nodeId); }
|
|
153
|
-
export function getRequestByIdempotencyKey(key) { return one(openDb(), 'idempotency_key = ?', key); }
|
|
154
|
-
export function listOpenInboxRequests() {
|
|
155
|
-
return many(openDb(), "state = 'open' AND inbox_listed = 1", [], 'created_at DESC, request_id DESC');
|
|
156
|
-
}
|
|
157
|
-
export function openRequestsByRequester(nodeId) {
|
|
158
|
-
return many(openDb(), "state = 'open' AND requester_node_id = ?", [nodeId], 'created_at DESC, request_id DESC');
|
|
159
|
-
}
|
|
160
|
-
/** Indexed attention projection: only open inbox-listed requests with a reply target keep a node wakeable. */
|
|
161
|
-
export function listOpenReplyBearingRequests() {
|
|
162
|
-
return many(openDb(), "state = 'open' AND inbox_listed = 1 AND requester_node_id IS NOT NULL", [], 'created_at DESC, request_id DESC');
|
|
163
|
-
}
|
|
164
|
-
export function listBindingRequests() { return many(openDb(), "kind = 'review' AND state = 'binding'"); }
|
|
165
|
-
export function listSubmitRequestedRequests() { return many(openDb(), "kind = 'review' AND state = 'open' AND submit_requested_at IS NOT NULL"); }
|
|
166
|
-
export function listUnprojectedReviews() { return many(openDb(), "kind = 'review' AND state = 'settled' AND projected_at IS NULL"); }
|
|
167
|
-
export function listRequests(filter = {}) {
|
|
168
|
-
const clauses = ['1'];
|
|
169
|
-
const params = [];
|
|
170
|
-
for (const [column, value] of Object.entries(filter)) {
|
|
171
|
-
if (value !== undefined) {
|
|
172
|
-
clauses.push(`${column} = ?`);
|
|
173
|
-
params.push(value);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
return many(openDb(), clauses.join(' AND '), params);
|
|
177
|
-
}
|
|
178
|
-
export function openRequest(requestId, openedAt) {
|
|
179
|
-
return withCanvasWrite((db) => db.prepare("UPDATE human_requests SET state = 'open', opened_at = ?, updated_at = ? WHERE request_id = ? AND state = 'binding'").run(openedAt, openedAt, requestId).changes > 0);
|
|
180
|
-
}
|
|
181
|
-
/** A binding whose immutable branch disappeared never recaptures a new origin. */
|
|
182
|
-
export function cancelBindingRequest(requestId, at, reason) {
|
|
183
|
-
return withCanvasWrite((db) => db.prepare(`
|
|
14
|
+
`).run(e.request_id,j(),e.request_dir,e.requester_node_id,e.companion_node_id,e.idempotency_key,e.inbox_listed?1:0,x(e.file),e.subtitle??null,e.file,JSON.stringify(e.specification),e.anchor_base_sha256,e.anchor_base_bytes,e.created_at,e.created_at),s=h(t,"idempotency_key = ?",e.idempotency_key);if(s===null)throw new Error(`review binding insert did not produce a row: ${e.idempotency_key}`);return{request_id:s.request_id,won:r.changes>0}})}i(Ke,"commitBindingRequest");function Ve(e){return h(l(),"request_id = ?",e)}i(Ve,"getRequest");function ze(e){return h(l(),"inbox_ticket_id = ?",e)}i(ze,"getRequestByInboxTicket");function Ge(e){let t=e;try{t=k(e)}catch{}return h(l(),"request_dir = ?",t)}i(Ge,"getRequestByDirectory");function Qe(e){return h(l(),"companion_node_id = ? AND state <> 'binding'",e)}i(Qe,"getRequestByCompanion");function Ye(e){return h(l(),"idempotency_key = ?",e)}i(Ye,"getRequestByIdempotencyKey");function Ze(){return N(l(),"state = 'open' AND inbox_listed = 1",[],"created_at DESC, request_id DESC")}i(Ze,"listOpenInboxRequests");function et(e){return N(l(),"state = 'open' AND requester_node_id = ?",[e],"created_at DESC, request_id DESC")}i(et,"openRequestsByRequester");function tt(){return N(l(),"state = 'open' AND inbox_listed = 1 AND requester_node_id IS NOT NULL",[],"created_at DESC, request_id DESC")}i(tt,"listOpenReplyBearingRequests");function nt(){return N(l(),"kind = 'review' AND state = 'binding'")}i(nt,"listBindingRequests");function rt(){return N(l(),"kind = 'review' AND state = 'open' AND submit_requested_at IS NOT NULL")}i(rt,"listSubmitRequestedRequests");function it(){return N(l(),"kind = 'review' AND state = 'settled' AND projected_at IS NULL")}i(it,"listUnprojectedReviews");function st(e={}){const t=["1"],r=[];for(const[s,n]of Object.entries(e))n!==void 0&&(t.push(`${s} = ?`),r.push(n));return N(l(),t.join(" AND "),r)}i(st,"listRequests");function ot(e,t){return m(r=>r.prepare("UPDATE human_requests SET state = 'open', opened_at = ?, updated_at = ? WHERE request_id = ? AND state = 'binding'").run(t,t,e).changes>0)}i(ot,"openRequest");function dt(e,t,r){return m(s=>s.prepare(`
|
|
184
15
|
UPDATE human_requests SET state = 'settled', outcome = 'canceled', result_json = ?, settled_at = ?, updated_at = ?
|
|
185
16
|
WHERE request_id = ? AND kind = 'review' AND state = 'binding'
|
|
186
|
-
`).run(JSON.stringify({
|
|
187
|
-
}
|
|
188
|
-
export function requestSubmit(requestId, at) {
|
|
189
|
-
return withCanvasWrite((db) => db.prepare("UPDATE human_requests SET submit_requested_at = ?, updated_at = ? WHERE request_id = ? AND kind = 'review' AND state = 'open' AND submit_requested_at IS NULL").run(at, at, requestId).changes > 0);
|
|
190
|
-
}
|
|
191
|
-
/** The first-writer-wins terminal transition. Callers add obligations in this same `withCanvasWrite` boundary. */
|
|
192
|
-
export function settleRequestLocked(db, args) {
|
|
193
|
-
const changed = db.prepare(`
|
|
17
|
+
`).run(JSON.stringify({schema:"humanloop.cancel/v1",kind:"canceled",canceledAt:t,reason:r}),t,t,e).changes>0)}i(dt,"cancelBindingRequest");function at(e,t){return m(r=>r.prepare("UPDATE human_requests SET submit_requested_at = ?, updated_at = ? WHERE request_id = ? AND kind = 'review' AND state = 'open' AND submit_requested_at IS NULL").run(t,t,e).changes>0)}i(at,"requestSubmit");function ut(e,t){return e.prepare(`
|
|
194
18
|
UPDATE human_requests SET state = 'settled', outcome = ?, result_json = ?, settled_at = ?,
|
|
195
19
|
progress_json = NULL, updated_at = ?
|
|
196
20
|
WHERE request_id = ? AND state = 'open'
|
|
197
|
-
`).run(
|
|
198
|
-
return changed === 0 ? null : one(db, 'request_id = ?', args.request_id);
|
|
199
|
-
}
|
|
200
|
-
export function setSettlementDeliveryMarksLocked(db, requestId, marks) {
|
|
201
|
-
db.prepare(`UPDATE human_requests SET settlement_delivery_id = ?, action_delivery_id = ?, updated_at = ? WHERE request_id = ?`).run(marks.settlement_delivery_id ?? null, marks.action_delivery_id ?? null, new Date().toISOString(), requestId);
|
|
202
|
-
}
|
|
203
|
-
export function setSubmitNoteDeliveryLocked(db, requestId, deliveryId) {
|
|
204
|
-
return db.prepare(`UPDATE human_requests SET submit_note_delivery_id = ?, updated_at = ? WHERE request_id = ? AND state = 'open' AND submit_note_delivery_id IS NULL`).run(deliveryId, new Date().toISOString(), requestId).changes > 0;
|
|
205
|
-
}
|
|
206
|
-
export function revisePageRequest(requestId, values) {
|
|
207
|
-
return withCanvasWrite((db) => db.prepare(`
|
|
21
|
+
`).run(t.outcome,t.result_json,t.settled_at,t.settled_at,t.request_id).changes===0?null:h(e,"request_id = ?",t.request_id)}i(ut,"settleRequestLocked");function ct(e,t,r){e.prepare("UPDATE human_requests SET settlement_delivery_id = ?, action_delivery_id = ?, updated_at = ? WHERE request_id = ?").run(r.settlement_delivery_id??null,r.action_delivery_id??null,new Date().toISOString(),t)}i(ct,"setSettlementDeliveryMarksLocked");function lt(e,t,r){return e.prepare("UPDATE human_requests SET submit_note_delivery_id = ?, updated_at = ? WHERE request_id = ? AND state = 'open' AND submit_note_delivery_id IS NULL").run(r,new Date().toISOString(),t).changes>0}i(lt,"setSubmitNoteDeliveryLocked");function _t(e,t){return m(r=>r.prepare(`
|
|
208
22
|
UPDATE human_requests SET presentation_dir = ?, specification_json = ?, title = ?, subtitle = ?, inbox_listed = ?, settleable = ?, updated_at = ?
|
|
209
23
|
WHERE request_id = ? AND kind = 'page' AND state = 'open'
|
|
210
|
-
`).run(
|
|
211
|
-
}
|
|
212
|
-
export function writeProgress(ticketId, responses) {
|
|
213
|
-
return withCanvasWrite((db) => db.prepare(`
|
|
24
|
+
`).run(t.presentation_dir,t.specification_json,t.title,t.subtitle,t.inbox_listed?1:0,t.settleable?1:0,new Date().toISOString(),e).changes>0)}i(_t,"revisePageRequest");function pt(e,t){return m(r=>r.prepare(`
|
|
214
25
|
UPDATE human_requests SET progress_json = ?, updated_at = ?
|
|
215
26
|
WHERE inbox_ticket_id = ? AND kind = 'page' AND state = 'open' AND settleable = 1
|
|
216
|
-
`).run(JSON.stringify({
|
|
217
|
-
}
|
|
218
|
-
export function markProjected(requestId, at) {
|
|
219
|
-
withCanvasWrite((db) => db.prepare(`UPDATE human_requests SET projected_at = ?, projection_error = NULL, updated_at = ? WHERE request_id = ?`).run(at, at, requestId));
|
|
220
|
-
}
|
|
221
|
-
export function markProjectionError(requestId, error) {
|
|
222
|
-
withCanvasWrite((db) => db.prepare(`UPDATE human_requests SET projection_error = ?, updated_at = ? WHERE request_id = ? AND projected_at IS NULL`).run(error, new Date().toISOString(), requestId));
|
|
223
|
-
}
|
|
224
|
-
export function markCompanionRetired(requestId, at) {
|
|
225
|
-
withCanvasWrite((db) => db.prepare(`UPDATE human_requests SET companion_retired_at = ?, updated_at = ? WHERE request_id = ? AND companion_retired_at IS NULL`).run(at, at, requestId));
|
|
226
|
-
}
|
|
227
|
-
export function readAnchorBase(requestId) {
|
|
228
|
-
const row = openDb().prepare('SELECT anchor_base_bytes, anchor_base_sha256 FROM human_requests WHERE request_id = ?').get(requestId);
|
|
229
|
-
return row === undefined || row.anchor_base_bytes === null || row.anchor_base_sha256 === null ? null : { bytes: Buffer.from(row.anchor_base_bytes), sha256: row.anchor_base_sha256 };
|
|
230
|
-
}
|
|
231
|
-
export function replaceAnchorBaseLocked(db, requestId, bytes, sha256) {
|
|
232
|
-
db.prepare('UPDATE human_requests SET anchor_base_bytes = ?, anchor_base_sha256 = ?, updated_at = ? WHERE request_id = ?').run(bytes, sha256, new Date().toISOString(), requestId);
|
|
233
|
-
}
|
|
234
|
-
function legacyPageResult(result) {
|
|
235
|
-
if (typeof result !== 'object' || result === null)
|
|
236
|
-
throw new Error('result is not an object');
|
|
237
|
-
const row = result;
|
|
238
|
-
if (row['kind'] === 'canceled')
|
|
239
|
-
return { outcome: row['disposition'] === 'dismissed' ? 'dismissed' : 'canceled', settledAt: String(row['canceledAt']) };
|
|
240
|
-
return { outcome: 'answered', settledAt: String(row['completedAt']) };
|
|
241
|
-
}
|
|
242
|
-
function readJson(path) {
|
|
243
|
-
try {
|
|
244
|
-
return JSON.parse(readFileSync(path, 'utf8'));
|
|
245
|
-
}
|
|
246
|
-
catch (error) {
|
|
247
|
-
throw new Error(`corrupt required input: ${path}`, { cause: error });
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
function migrationId() { return randomBytes(16).toString('hex'); }
|
|
251
|
-
function nextMessageSeq(db) {
|
|
252
|
-
return Number(db.prepare('SELECT COALESCE(MAX(seq), 0) AS seq FROM messages').get().seq) + 1;
|
|
253
|
-
}
|
|
254
|
-
function importedTerminalDelivery(db, requestId, requesterNodeId, kind) {
|
|
255
|
-
const row = kind === 'page'
|
|
256
|
-
? db.prepare(`SELECT d.delivery_id FROM deliveries d JOIN messages m ON m.message_id = d.message_id
|
|
27
|
+
`).run(JSON.stringify({kind:"page",responses:t,savedAt:new Date().toISOString()}),new Date().toISOString(),e).changes>0)}i(pt,"writeProgress");function mt(e,t){m(r=>r.prepare("UPDATE human_requests SET projected_at = ?, projection_error = NULL, updated_at = ? WHERE request_id = ?").run(t,t,e))}i(mt,"markProjected");function ft(e,t){m(r=>r.prepare("UPDATE human_requests SET projection_error = ?, updated_at = ? WHERE request_id = ? AND projected_at IS NULL").run(t,new Date().toISOString(),e))}i(ft,"markProjectionError");function Et(e,t){m(r=>r.prepare("UPDATE human_requests SET companion_retired_at = ?, updated_at = ? WHERE request_id = ? AND companion_retired_at IS NULL").run(t,t,e))}i(Et,"markCompanionRetired");function gt(e){const t=l().prepare("SELECT anchor_base_bytes, anchor_base_sha256 FROM human_requests WHERE request_id = ?").get(e);return t===void 0||t.anchor_base_bytes===null||t.anchor_base_sha256===null?null:{bytes:Buffer.from(t.anchor_base_bytes),sha256:t.anchor_base_sha256}}i(gt,"readAnchorBase");function yt(e,t,r,s){e.prepare("UPDATE human_requests SET anchor_base_bytes = ?, anchor_base_sha256 = ?, updated_at = ? WHERE request_id = ?").run(r,s,new Date().toISOString(),t)}i(yt,"replaceAnchorBaseLocked");function Ne(e){if(typeof e!="object"||e===null)throw new Error("result is not an object");const t=e;return t.kind==="canceled"?{outcome:t.disposition==="dismissed"?"dismissed":"canceled",settledAt:String(t.canceledAt)}:{outcome:"answered",settledAt:String(t.completedAt)}}i(Ne,"legacyPageResult");function S(e){try{return JSON.parse(K(e,"utf8"))}catch(t){throw new Error(`corrupt required input: ${e}`,{cause:t})}}i(S,"readJson");function P(){return L(16).toString("hex")}i(P,"migrationId");function Te(e){return Number(e.prepare("SELECT COALESCE(MAX(seq), 0) AS seq FROM messages").get().seq)+1}i(Te,"nextMessageSeq");function Se(e,t,r,s){return(s==="page"?e.prepare(`SELECT d.delivery_id FROM deliveries d JOIN messages m ON m.message_id = d.message_id
|
|
257
28
|
WHERE d.destination_kind = 'node_inbox' AND d.destination_id = ? AND m.sender_node_id = ?
|
|
258
|
-
AND m.disposition IN ('human-answer', 'human-canceled') LIMIT 1`).get(
|
|
259
|
-
:
|
|
260
|
-
WHERE d.destination_kind = 'node_inbox' AND d.destination_id = ? AND m.body_json LIKE ? LIMIT 1`).get(requesterNodeId, `%\"review_id\":\"${requestId}\"%`);
|
|
261
|
-
return row?.delivery_id ?? null;
|
|
262
|
-
}
|
|
263
|
-
function companionRetirementProven(db, companionNodeId, outcome) {
|
|
264
|
-
if (companionNodeId === null || outcome === null)
|
|
265
|
-
return false;
|
|
266
|
-
const row = db.prepare('SELECT status, final_report FROM nodes WHERE node_id = ?').get(companionNodeId);
|
|
267
|
-
return row?.status === 'canceled' || (outcome === 'approved' && row?.status === 'done' && row.final_report !== null);
|
|
268
|
-
}
|
|
269
|
-
function createMigratedTerminalDelivery(db, input) {
|
|
270
|
-
const messageId = migrationId();
|
|
271
|
-
const deliveryId = migrationId();
|
|
272
|
-
const now = Date.parse(input.settledAt);
|
|
273
|
-
const createdAt = Number.isFinite(now) ? now : 0;
|
|
274
|
-
const disposition = input.outcome === 'answered' || input.outcome === 'approved' ? 'human-answer' : 'human-canceled';
|
|
275
|
-
db.prepare(`INSERT INTO messages
|
|
29
|
+
AND m.disposition IN ('human-answer', 'human-canceled') LIMIT 1`).get(r,t):e.prepare(`SELECT d.delivery_id FROM deliveries d JOIN messages m ON m.message_id = d.message_id
|
|
30
|
+
WHERE d.destination_kind = 'node_inbox' AND d.destination_id = ? AND m.body_json LIKE ? LIMIT 1`).get(r,`%"review_id":"${t}"%`))?.delivery_id??null}i(Se,"importedTerminalDelivery");function ee(e,t,r){if(t===null||r===null)return!1;const s=e.prepare("SELECT status, final_report FROM nodes WHERE node_id = ?").get(t);return s?.status==="canceled"||r==="approved"&&s?.status==="done"&&s.final_report!==null}i(ee,"companionRetirementProven");function ve(e,t){const r=P(),s=P(),n=Date.parse(t.settledAt),o=Number.isFinite(n)?n:0,u=t.outcome==="answered"||t.outcome==="approved"?"human-answer":"human-canceled";return e.prepare(`INSERT INTO messages
|
|
276
31
|
(message_id, seq, operation_id, created_at, sender_node_id, sender_name, kind, label, body_ref, body_json, disposition)
|
|
277
|
-
VALUES (?, ?, ?, ?, NULL, 'crtrd', 'completed', ?, NULL, ?, ?)`)
|
|
278
|
-
.run(messageId, nextMessageSeq(db), migrationId(), input.settledAt, input.kind === 'review' ? (input.outcome === 'approved' ? 'review approved by the user' : 'review canceled') : (input.outcome === 'answered' ? 'human request answered' : 'human request canceled'), JSON.stringify(input.kind === 'review'
|
|
279
|
-
? { review_id: input.requestId, result_path: `${input.requestDir}/result.json`, result: JSON.parse(input.resultJson) }
|
|
280
|
-
: { request_id: input.requestId, result: JSON.parse(input.resultJson) }), disposition);
|
|
281
|
-
db.prepare(`INSERT INTO deliveries
|
|
32
|
+
VALUES (?, ?, ?, ?, NULL, 'crtrd', 'completed', ?, NULL, ?, ?)`).run(r,Te(e),P(),t.settledAt,t.kind==="review"?t.outcome==="approved"?"review approved by the user":"review canceled":t.outcome==="answered"?"human request answered":"human request canceled",JSON.stringify(t.kind==="review"?{review_id:t.requestId,result_path:`${t.requestDir}/result.json`,result:JSON.parse(t.resultJson)}:{request_id:t.requestId,result:JSON.parse(t.resultJson)}),u),e.prepare(`INSERT INTO deliveries
|
|
282
33
|
(delivery_id, message_id, destination_kind, destination_id, urgency, wake, state, attempts, created_at, updated_at)
|
|
283
|
-
VALUES (?, ?, 'node_inbox', ?, 'normal', 1, 'pending', 0, ?, ?)`)
|
|
284
|
-
|
|
285
|
-
return deliveryId;
|
|
286
|
-
}
|
|
287
|
-
function terminalDeliveryMark(db, input) {
|
|
288
|
-
if (input.requesterNodeId === null || input.outcome === null || input.resultJson === null || input.settledAt === null)
|
|
289
|
-
return null;
|
|
290
|
-
const imported = importedTerminalDelivery(db, input.requestId, input.requesterNodeId, input.kind);
|
|
291
|
-
if (imported !== null)
|
|
292
|
-
return imported;
|
|
293
|
-
if (input.deliveredAt !== null && input.deliveredAt !== undefined)
|
|
294
|
-
return null;
|
|
295
|
-
return createMigratedTerminalDelivery(db, {
|
|
296
|
-
requestId: input.requestId, requesterNodeId: input.requesterNodeId, kind: input.kind,
|
|
297
|
-
outcome: input.outcome, resultJson: input.resultJson, settledAt: input.settledAt, requestDir: input.requestDir,
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
/** Imports every legacy page and review inside the caller's already-open migration transaction. */
|
|
301
|
-
const legacyPageSourceSchema = z.object({
|
|
302
|
-
sessionName: z.string().optional(),
|
|
303
|
-
askedBy: z.string().optional(),
|
|
304
|
-
blockedSince: z.string().optional(),
|
|
305
|
-
profileName: z.string().optional(),
|
|
306
|
-
nodeId: z.string().optional(),
|
|
307
|
-
}).strict();
|
|
308
|
-
const legacyPageSlotSchema = z.object({
|
|
309
|
-
id: z.string().regex(/^[A-Za-z0-9_-]{1,64}$/).optional(),
|
|
310
|
-
kind: z.string().min(1),
|
|
311
|
-
step: z.number().int().nonnegative(),
|
|
312
|
-
config: z.record(z.string(), z.unknown()),
|
|
313
|
-
unvalidated: z.literal(true).optional(),
|
|
314
|
-
display: z.literal(true).optional(),
|
|
315
|
-
}).strict();
|
|
316
|
-
const legacyPageManifestSchema = z.object({
|
|
317
|
-
schema: z.literal('crtr.page/v1'),
|
|
318
|
-
dialect: z.enum(['md', 'html', 'jsx']),
|
|
319
|
-
title: z.string().trim().min(1),
|
|
320
|
-
subtitle: z.string().optional(),
|
|
321
|
-
placement: z.enum(['inline', 'panel']),
|
|
322
|
-
document: z.enum(['page.md', 'page.html', 'page.tsx']),
|
|
323
|
-
steps: z.number().int().positive(),
|
|
324
|
-
slots: z.array(legacyPageSlotSchema),
|
|
325
|
-
source: legacyPageSourceSchema.optional(),
|
|
326
|
-
}).strict().superRefine((manifest, ctx) => {
|
|
327
|
-
const document = manifest.dialect === 'md' ? 'page.md' : manifest.dialect === 'html' ? 'page.html' : 'page.tsx';
|
|
328
|
-
if (manifest.document !== document)
|
|
329
|
-
ctx.addIssue({ code: 'custom', path: ['document'], message: 'document must agree with dialect' });
|
|
330
|
-
if (manifest.dialect === 'md' && manifest.steps !== 1)
|
|
331
|
-
ctx.addIssue({ code: 'custom', path: ['steps'], message: 'md pages have exactly one step' });
|
|
332
|
-
});
|
|
333
|
-
function legacyPresentationSource(manifest) {
|
|
334
|
-
if (manifest.source === undefined)
|
|
335
|
-
return undefined;
|
|
336
|
-
const { blockedSince, ...source } = manifest.source;
|
|
337
|
-
const normalized = { ...source, ...(blockedSince !== undefined && z.string().datetime({ offset: true }).safeParse(blockedSince).success ? { emittedAt: blockedSince } : {}) };
|
|
338
|
-
return Object.keys(normalized).length === 0 ? undefined : normalized;
|
|
339
|
-
}
|
|
340
|
-
/** A discontinued v1 page is replayed as a static JSX page so current readers retain its authored bytes without reviving the retired dialect. */
|
|
341
|
-
function legacyReplayDocument(title, subtitle, document) {
|
|
342
|
-
return `export default function LegacyPage() { return <Page title={${JSON.stringify(title)}}${subtitle === undefined ? '' : ` subtitle={${JSON.stringify(subtitle)}}`}><pre>{${JSON.stringify(document)}}</pre></Page>; }\n`;
|
|
343
|
-
}
|
|
344
|
-
function migrateLegacyPage(dir, raw) {
|
|
345
|
-
const manifestPath = join(dir, 'page.json');
|
|
346
|
-
const parsed = legacyPageManifestSchema.safeParse(raw);
|
|
347
|
-
if (!parsed.success)
|
|
348
|
-
throw new Error(`corrupt required input: ${manifestPath}`);
|
|
349
|
-
const manifest = parsed.data;
|
|
350
|
-
const source = legacyPresentationSource(manifest);
|
|
351
|
-
const delivery = {
|
|
352
|
-
placement: manifest.placement,
|
|
353
|
-
inbox: true,
|
|
354
|
-
reply: manifest.source?.blockedSince !== undefined,
|
|
355
|
-
};
|
|
356
|
-
try {
|
|
357
|
-
validatePageManifest({
|
|
358
|
-
schema: 'crtr.page/v2', dialect: 'jsx', title: manifest.title,
|
|
359
|
-
...(manifest.subtitle === undefined ? {} : { subtitle: manifest.subtitle }),
|
|
360
|
-
delivery, document: 'page.tsx', steps: manifest.steps, slots: manifest.slots,
|
|
361
|
-
...(source === undefined ? {} : { source }),
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
catch {
|
|
365
|
-
throw new Error(`corrupt required input: ${manifestPath}`);
|
|
366
|
-
}
|
|
367
|
-
const sourcePath = join(dir, manifest.document);
|
|
368
|
-
if (!existsSync(sourcePath))
|
|
369
|
-
throw new Error(`corrupt required input: ${sourcePath}`);
|
|
370
|
-
const sourceDocument = readFileSync(sourcePath, 'utf8');
|
|
371
|
-
const prepared = preparePageSource({ dialect: 'jsx', document: legacyReplayDocument(manifest.title, manifest.subtitle, sourceDocument), source, delivery });
|
|
372
|
-
if (source !== undefined)
|
|
373
|
-
return prepared;
|
|
374
|
-
const { source: _source, ...manifestWithoutSource } = prepared.manifest;
|
|
375
|
-
return { ...prepared, manifest: manifestWithoutSource };
|
|
376
|
-
}
|
|
377
|
-
export function migrateHumanRequestsState(db) {
|
|
378
|
-
db.exec(`
|
|
34
|
+
VALUES (?, ?, 'node_inbox', ?, 'normal', 1, 'pending', 0, ?, ?)`).run(s,r,t.requesterNodeId,o,o),s}i(ve,"createMigratedTerminalDelivery");function te(e,t){if(t.requesterNodeId===null||t.outcome===null||t.resultJson===null||t.settledAt===null)return null;const r=Se(e,t.requestId,t.requesterNodeId,t.kind);return r!==null?r:t.deliveredAt!==null&&t.deliveredAt!==void 0?null:ve(e,{requestId:t.requestId,requesterNodeId:t.requesterNodeId,kind:t.kind,outcome:t.outcome,resultJson:t.resultJson,settledAt:t.settledAt,requestDir:t.requestDir})}i(te,"terminalDeliveryMark");const Re=d.object({sessionName:d.string().optional(),askedBy:d.string().optional(),blockedSince:d.string().optional(),profileName:d.string().optional(),nodeId:d.string().optional()}).strict(),De=d.object({id:d.string().regex(/^[A-Za-z0-9_-]{1,64}$/).optional(),kind:d.string().min(1),step:d.number().int().nonnegative(),config:d.record(d.string(),d.unknown()),unvalidated:d.literal(!0).optional(),display:d.literal(!0).optional()}).strict(),Ae=d.object({schema:d.literal("crtr.page/v1"),dialect:d.enum(["md","html","jsx"]),title:d.string().trim().min(1),subtitle:d.string().optional(),placement:d.enum(["inline","panel"]),document:d.enum(["page.md","page.html","page.tsx"]),steps:d.number().int().positive(),slots:d.array(De),source:Re.optional()}).strict().superRefine((e,t)=>{const r=e.dialect==="md"?"page.md":e.dialect==="html"?"page.html":"page.tsx";e.document!==r&&t.addIssue({code:"custom",path:["document"],message:"document must agree with dialect"}),e.dialect==="md"&&e.steps!==1&&t.addIssue({code:"custom",path:["steps"],message:"md pages have exactly one step"})});function ke(e){if(e.source===void 0)return;const{blockedSince:t,...r}=e.source,s={...r,...t!==void 0&&d.string().datetime({offset:!0}).safeParse(t).success?{emittedAt:t}:{}};return Object.keys(s).length===0?void 0:s}i(ke,"legacyPresentationSource");function Ie(e,t,r){return`export default function LegacyPage() { return <Page title={${JSON.stringify(e)}}${t===void 0?"":` subtitle={${JSON.stringify(t)}}`}><pre>{${JSON.stringify(r)}}</pre></Page>; }
|
|
35
|
+
`}i(Ie,"legacyReplayDocument");function Oe(e,t){const r=c(e,"page.json"),s=Ae.safeParse(t);if(!s.success)throw new Error(`corrupt required input: ${r}`);const n=s.data,o=ke(n),u={placement:n.placement,inbox:!0,reply:n.source?.blockedSince!==void 0};try{z({schema:"crtr.page/v2",dialect:"jsx",title:n.title,...n.subtitle===void 0?{}:{subtitle:n.subtitle},delivery:u,document:"page.tsx",steps:n.steps,slots:n.slots,...o===void 0?{}:{source:o}})}catch{throw new Error(`corrupt required input: ${r}`)}const a=c(e,n.document);if(!E(a))throw new Error(`corrupt required input: ${a}`);const _=K(a,"utf8"),g=ye({dialect:"jsx",document:Ie(n.title,n.subtitle,_),source:o,delivery:u});if(o!==void 0)return g;const{source:f,...p}=g.manifest;return{...g,manifest:p}}i(Oe,"migrateLegacyPage");function ht(e){e.exec(`
|
|
379
36
|
CREATE TABLE human_requests (
|
|
380
37
|
request_id TEXT PRIMARY KEY, kind TEXT NOT NULL CHECK (kind IN ('page','review')),
|
|
381
38
|
inbox_ticket_id TEXT NOT NULL UNIQUE, request_dir TEXT NOT NULL, presentation_dir TEXT,
|
|
@@ -398,118 +55,10 @@ export function migrateHumanRequestsState(db) {
|
|
|
398
55
|
CREATE INDEX idx_human_requests_submit ON human_requests(state, submit_requested_at);
|
|
399
56
|
CREATE INDEX idx_human_requests_file ON human_requests(file);
|
|
400
57
|
CREATE INDEX idx_human_requests_requester ON human_requests(requester_node_id);
|
|
401
|
-
`);
|
|
402
|
-
const insert = db.prepare(`INSERT INTO human_requests (
|
|
58
|
+
`);const t=e.prepare(`INSERT INTO human_requests (
|
|
403
59
|
request_id, kind, inbox_ticket_id, request_dir, presentation_dir, requester_node_id, companion_node_id, idempotency_key,
|
|
404
60
|
state, outcome, inbox_listed, settleable, title, subtitle, file, specification_json, action_json,
|
|
405
61
|
progress_json, feedback_json, result_json, anchor_base_sha256, anchor_base_bytes, created_at, opened_at,
|
|
406
62
|
submit_requested_at, settled_at, settlement_delivery_id, action_delivery_id, projected_at, projection_error,
|
|
407
63
|
companion_retired_at, updated_at
|
|
408
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
409
|
-
if (db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'reviews'").get() !== undefined) {
|
|
410
|
-
const rows = db.prepare('SELECT * FROM reviews').all();
|
|
411
|
-
for (const row of rows) {
|
|
412
|
-
const legacyState = row['state'];
|
|
413
|
-
const settled = legacyState === 'approved' || legacyState === 'canceled';
|
|
414
|
-
const result = legacyState === 'canceled' && row['result_json'] === null
|
|
415
|
-
? JSON.stringify({ schema: 'humanloop.cancel/v1', kind: 'canceled', canceledAt: row['canceled_at'], ...(row['cancel_reason'] === '' || row['cancel_reason'] === null ? {} : { reason: row['cancel_reason'] }), ...(row['cancel_actor'] === null ? {} : { actor: row['cancel_actor'] }) })
|
|
416
|
-
: row['result_json'];
|
|
417
|
-
if (settled && result === null)
|
|
418
|
-
throw new Error(`corrupt required input: reviews/${row['review_id']} has no terminal result`);
|
|
419
|
-
const requestDirectory = row['bridge_node_id'] === null ? join(crtrHome(), 'reviews', row['review_id']) : join(nodesRoot(), row['bridge_node_id']);
|
|
420
|
-
const spec = {
|
|
421
|
-
origin_kind: row['origin_kind'], bridge_node_id: row['bridge_node_id'],
|
|
422
|
-
origin_session_file: row['origin_session_file'], origin_session_id: row['origin_session_id'], origin_leaf_id: row['origin_leaf_id'],
|
|
423
|
-
model_spec: row['model_spec'], branch_file: row['branch_file'], baseline_sha256: row['baseline_sha256'], baseline_bytes: row['baseline_bytes'],
|
|
424
|
-
captured_at: row['captured_at'], output_path: row['output_path'],
|
|
425
|
-
};
|
|
426
|
-
const outcome = settled ? (legacyState === 'approved' ? 'approved' : 'canceled') : null;
|
|
427
|
-
const settledAt = settled ? (legacyState === 'approved' ? row['approved_at'] : row['canceled_at']) : null;
|
|
428
|
-
const settlementDeliveryId = terminalDeliveryMark(db, {
|
|
429
|
-
requestId: row['review_id'], requesterNodeId: row['origin_node_id'], kind: 'review', outcome, resultJson: result,
|
|
430
|
-
settledAt, requestDir: requestDirectory, deliveredAt: row['delivered_at'],
|
|
431
|
-
});
|
|
432
|
-
const companionRetiredAt = companionRetirementProven(db, row['companion_node_id'], outcome) ? settledAt : null;
|
|
433
|
-
insert.run(row['review_id'], 'review', row['origin_kind'] === 'ticket' ? legacyTicketId(nodesRoot(), basename(requestDirectory)) : randomTicketId(), requestDirectory, null, row['origin_node_id'], row['companion_node_id'], row['idempotency_key'], settled ? 'settled' : legacyState, outcome, row['origin_kind'] === 'ticket' ? 1 : 0, 1, basename(row['file']), row['subtitle'], row['file'], JSON.stringify(spec), null, null, null, result, row['anchor_base_sha256'], row['anchor_base_bytes'], row['created'], row['opened_at'], row['submit_requested_at'], settledAt, settlementDeliveryId, null, row['projected_at'], row['projection_error'], companionRetiredAt, row['created']);
|
|
434
|
-
}
|
|
435
|
-
db.exec('DROP TABLE reviews');
|
|
436
|
-
}
|
|
437
|
-
for (const entry of existsSync(nodesRoot()) ? readdirSync(nodesRoot(), { withFileTypes: true }) : []) {
|
|
438
|
-
if (!entry.isDirectory())
|
|
439
|
-
continue;
|
|
440
|
-
const dir = join(nodesRoot(), entry.name);
|
|
441
|
-
const manifestPath = join(dir, 'page.json');
|
|
442
|
-
const reviewPath = join(dir, 'review.json');
|
|
443
|
-
if (!existsSync(manifestPath)) {
|
|
444
|
-
if (existsSync(reviewPath))
|
|
445
|
-
continue;
|
|
446
|
-
continue;
|
|
447
|
-
}
|
|
448
|
-
if (db.prepare('SELECT 1 FROM human_requests WHERE request_id = ?').get(entry.name) !== undefined)
|
|
449
|
-
continue;
|
|
450
|
-
const rawManifest = readJson(manifestPath);
|
|
451
|
-
if (typeof rawManifest !== 'object' || rawManifest === null || Array.isArray(rawManifest))
|
|
452
|
-
throw new Error(`corrupt required input: ${manifestPath}`);
|
|
453
|
-
let manifest = rawManifest;
|
|
454
|
-
let retainedPresentationDirectory = realpathSync(dir);
|
|
455
|
-
if (manifest['schema'] === 'crtr.page/v1') {
|
|
456
|
-
const prepared = migrateLegacyPage(dir, rawManifest);
|
|
457
|
-
const stableRequestDirectory = requestDir(entry.name);
|
|
458
|
-
retainedPresentationDirectory = publishPageRevision(stableRequestDirectory, prepared);
|
|
459
|
-
manifest = prepared.manifest;
|
|
460
|
-
}
|
|
461
|
-
const delivery = pageDeliverySchema.safeParse(manifest['delivery']);
|
|
462
|
-
if (typeof manifest['title'] !== 'string' || !delivery.success)
|
|
463
|
-
throw new Error(`corrupt required input: ${manifestPath}`);
|
|
464
|
-
let canonicalManifest;
|
|
465
|
-
try {
|
|
466
|
-
canonicalManifest = validatePageManifest(manifest);
|
|
467
|
-
}
|
|
468
|
-
catch {
|
|
469
|
-
throw new Error(`corrupt required input: ${manifestPath}`);
|
|
470
|
-
}
|
|
471
|
-
const source = canonicalManifest.source;
|
|
472
|
-
const resultPath = join(dir, 'response.json');
|
|
473
|
-
const result = existsSync(resultPath) ? readJson(resultPath) : null;
|
|
474
|
-
const terminal = result === null ? null : legacyPageResult(result);
|
|
475
|
-
const actionDelivery = db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'deliveries'").get() === undefined
|
|
476
|
-
? null
|
|
477
|
-
: db.prepare("SELECT delivery_id FROM deliveries WHERE idempotency_key = ?").get(`human-action:${legacyTicketId(nodesRoot(), entry.name)}`);
|
|
478
|
-
const actionPath = join(dir, 'action.json');
|
|
479
|
-
const progressPath = join(dir, 'progress.json');
|
|
480
|
-
const feedbackPath = join(dir, 'feedback-comments.json');
|
|
481
|
-
const replyRoutePath = join(dir, 'reply-route.json');
|
|
482
|
-
const feedback = existsSync(feedbackPath) ? readJson(feedbackPath) : null;
|
|
483
|
-
if (feedback !== null && (typeof feedback !== 'object' || typeof feedback['companionNodeId'] !== 'undefined' && typeof feedback['companionNodeId'] !== 'string')) {
|
|
484
|
-
throw new Error(`corrupt required input: ${feedbackPath}`);
|
|
485
|
-
}
|
|
486
|
-
const replyRoute = existsSync(replyRoutePath) ? readJson(replyRoutePath) : null;
|
|
487
|
-
if (replyRoute !== null && (typeof replyRoute !== 'object' || typeof replyRoute['bridge_node_id'] !== 'string')) {
|
|
488
|
-
throw new Error(`corrupt required input: ${replyRoutePath}`);
|
|
489
|
-
}
|
|
490
|
-
const bridgeNodeId = replyRoute?.['bridge_node_id'];
|
|
491
|
-
const bridgeRequester = typeof bridgeNodeId !== 'string' || db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'nodes'").get() === undefined
|
|
492
|
-
? null
|
|
493
|
-
: db.prepare('SELECT parent FROM nodes WHERE node_id = ?').get(bridgeNodeId);
|
|
494
|
-
const requesterNodeId = bridgeRequester?.parent ?? (typeof source?.['nodeId'] === 'string' ? source['nodeId'] : null);
|
|
495
|
-
const companionNodeId = feedback?.['companionNodeId'];
|
|
496
|
-
const createdAt = typeof source?.['emittedAt'] === 'string' ? source['emittedAt'] : statSync(manifestPath).mtime.toISOString();
|
|
497
|
-
const resultJson = result === null ? null : JSON.stringify(result);
|
|
498
|
-
const settlementDeliveryId = terminalDeliveryMark(db, {
|
|
499
|
-
requestId: entry.name, requesterNodeId, kind: 'page', outcome: terminal?.outcome ?? null, resultJson,
|
|
500
|
-
settledAt: terminal?.settledAt ?? null, requestDir: dir,
|
|
501
|
-
});
|
|
502
|
-
const companionRetiredAt = companionRetirementProven(db, companionNodeId ?? null, terminal?.outcome ?? null) ? terminal?.settledAt ?? null : null;
|
|
503
|
-
const stableRequestDirectory = requestDir(entry.name);
|
|
504
|
-
mkdirSync(stableRequestDirectory, { recursive: true, mode: 0o700 });
|
|
505
|
-
insert.run(entry.name, 'page', legacyTicketId(nodesRoot(), entry.name), stableRequestDirectory, retainedPresentationDirectory, requesterNodeId, companionNodeId ?? null, null, terminal === null ? 'open' : 'settled', terminal?.outcome ?? null, delivery.data.inbox ? 1 : 0, delivery.data.inbox || delivery.data.reply ? 1 : 0, canonicalManifest.title, canonicalManifest.subtitle ?? null, null, JSON.stringify(canonicalManifest), existsSync(actionPath) ? JSON.stringify(readJson(actionPath)) : null, existsSync(progressPath) && terminal === null ? JSON.stringify(readJson(progressPath)) : null, feedback === null ? null : JSON.stringify(feedback), resultJson, null, null, createdAt, null, null, terminal?.settledAt ?? null, settlementDeliveryId, actionDelivery?.delivery_id ?? null, null, null, companionRetiredAt, createdAt);
|
|
506
|
-
}
|
|
507
|
-
const invalid = db.prepare("SELECT request_id FROM human_requests WHERE state = 'settled' AND result_json IS NULL").get();
|
|
508
|
-
if (invalid !== undefined)
|
|
509
|
-
throw new Error(`human request migration produced terminal row without result: ${invalid.request_id}`);
|
|
510
|
-
if (db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'review_comments'").get() !== undefined) {
|
|
511
|
-
const orphan = db.prepare("SELECT review_id FROM review_comments WHERE review_id NOT IN (SELECT request_id FROM human_requests WHERE kind = 'review') LIMIT 1").get();
|
|
512
|
-
if (orphan !== undefined)
|
|
513
|
-
throw new Error(`review comment has no migrated review request: ${orphan.review_id}`);
|
|
514
|
-
}
|
|
515
|
-
}
|
|
64
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);if(e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'reviews'").get()!==void 0){const s=e.prepare("SELECT * FROM reviews").all();for(const n of s){const o=n.state,u=o==="approved"||o==="canceled",a=o==="canceled"&&n.result_json===null?JSON.stringify({schema:"humanloop.cancel/v1",kind:"canceled",canceledAt:n.canceled_at,...n.cancel_reason===""||n.cancel_reason===null?{}:{reason:n.cancel_reason},...n.cancel_actor===null?{}:{actor:n.cancel_actor}}):n.result_json;if(u&&a===null)throw new Error(`corrupt required input: reviews/${n.review_id} has no terminal result`);const _=n.bridge_node_id===null?c(V(),"reviews",n.review_id):c(b(),n.bridge_node_id),g={origin_kind:n.origin_kind,bridge_node_id:n.bridge_node_id,origin_session_file:n.origin_session_file,origin_session_id:n.origin_session_id,origin_leaf_id:n.origin_leaf_id,model_spec:n.model_spec,branch_file:n.branch_file,baseline_sha256:n.baseline_sha256,baseline_bytes:n.baseline_bytes,captured_at:n.captured_at,output_path:n.output_path},f=u?o==="approved"?"approved":"canceled":null,p=u?o==="approved"?n.approved_at:n.canceled_at:null,T=te(e,{requestId:n.review_id,requesterNodeId:n.origin_node_id,kind:"review",outcome:f,resultJson:a,settledAt:p,requestDir:_,deliveredAt:n.delivered_at}),R=ee(e,n.companion_node_id,f)?p:null;t.run(n.review_id,"review",n.origin_kind==="ticket"?C(b(),x(_)):j(),_,null,n.origin_node_id,n.companion_node_id,n.idempotency_key,u?"settled":o,f,n.origin_kind==="ticket"?1:0,1,x(n.file),n.subtitle,n.file,JSON.stringify(g),null,null,null,a,n.anchor_base_sha256,n.anchor_base_bytes,n.created,n.opened_at,n.submit_requested_at,p,T,null,n.projected_at,n.projection_error,R,n.created)}e.exec("DROP TABLE reviews")}for(const s of E(b())?ae(b(),{withFileTypes:!0}):[]){if(!s.isDirectory())continue;const n=c(b(),s.name),o=c(n,"page.json"),u=c(n,"review.json");if(!E(o)){if(E(u))continue;continue}if(e.prepare("SELECT 1 FROM human_requests WHERE request_id = ?").get(s.name)!==void 0)continue;const a=S(o);if(typeof a!="object"||a===null||Array.isArray(a))throw new Error(`corrupt required input: ${o}`);let _=a,g=k(n);if(_.schema==="crtr.page/v1"){const B=Oe(n,a),se=w(s.name);g=Z(se,B),_=B.manifest}const f=he.safeParse(_.delivery);if(typeof _.title!="string"||!f.success)throw new Error(`corrupt required input: ${o}`);let p;try{p=z(_)}catch{throw new Error(`corrupt required input: ${o}`)}const T=p.source,R=c(n,"response.json"),D=E(R)?S(R):null,y=D===null?null:Ne(D),ne=e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'deliveries'").get()===void 0?null:e.prepare("SELECT delivery_id FROM deliveries WHERE idempotency_key = ?").get(`human-action:${C(b(),s.name)}`),U=c(n,"action.json"),H=c(n,"progress.json"),I=c(n,"feedback-comments.json"),O=c(n,"reply-route.json"),q=E(I)?S(I):null;if(q!==null&&(typeof q!="object"||typeof q.companionNodeId<"u"&&typeof q.companionNodeId!="string"))throw new Error(`corrupt required input: ${I}`);const A=E(O)?S(O):null;if(A!==null&&(typeof A!="object"||typeof A.bridge_node_id!="string"))throw new Error(`corrupt required input: ${O}`);const X=A?.bridge_node_id,M=(typeof X!="string"||e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'nodes'").get()===void 0?null:e.prepare("SELECT parent FROM nodes WHERE node_id = ?").get(X))?.parent??(typeof T?.nodeId=="string"?T.nodeId:null),F=q?.companionNodeId,$=typeof T?.emittedAt=="string"?T.emittedAt:ue(o).mtime.toISOString(),W=D===null?null:JSON.stringify(D),re=te(e,{requestId:s.name,requesterNodeId:M,kind:"page",outcome:y?.outcome??null,resultJson:W,settledAt:y?.settledAt??null,requestDir:n}),ie=ee(e,F??null,y?.outcome??null)?y?.settledAt??null:null,J=w(s.name);v(J,{recursive:!0,mode:448}),t.run(s.name,"page",C(b(),s.name),J,g,M,F??null,null,y===null?"open":"settled",y?.outcome??null,f.data.inbox?1:0,f.data.inbox||f.data.reply?1:0,p.title,p.subtitle??null,null,JSON.stringify(p),E(U)?JSON.stringify(S(U)):null,E(H)&&y===null?JSON.stringify(S(H)):null,q===null?null:JSON.stringify(q),W,null,null,$,null,null,y?.settledAt??null,re,ne?.delivery_id??null,null,null,ie,$)}const r=e.prepare("SELECT request_id FROM human_requests WHERE state = 'settled' AND result_json IS NULL").get();if(r!==void 0)throw new Error(`human request migration produced terminal row without result: ${r.request_id}`);if(e.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'review_comments'").get()!==void 0){const s=e.prepare("SELECT review_id FROM review_comments WHERE review_id NOT IN (SELECT request_id FROM human_requests WHERE kind = 'review') LIMIT 1").get();if(s!==void 0)throw new Error(`review comment has no migrated review request: ${s.review_id}`)}}i(ht,"migrateHumanRequestsState");export{dt as cancelBindingRequest,Ke as commitBindingRequest,Be as createPageRequest,Ve as getRequest,Qe as getRequestByCompanion,Ge as getRequestByDirectory,Ye as getRequestByIdempotencyKey,ze as getRequestByInboxTicket,Y as humanRequestsRoot,nt as listBindingRequests,Ze as listOpenInboxRequests,tt as listOpenReplyBearingRequests,st as listRequests,rt as listSubmitRequestedRequests,it as listUnprojectedReviews,Et as markCompanionRetired,mt as markProjected,ft as markProjectionError,ht as migrateHumanRequestsState,ot as openRequest,et as openRequestsByRequester,Je as presentationDir,Z as publishPageRevision,gt as readAnchorBase,yt as replaceAnchorBaseLocked,w as requestDir,at as requestSubmit,_t as revisePageRequest,ct as setSettlementDeliveryMarksLocked,lt as setSubmitNoteDeliveryLocked,ut as settleRequestLocked,pt as writeProgress};
|
|
@@ -1,34 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { basename, dirname, isAbsolute, resolve } from 'node:path';
|
|
3
|
-
import { claimPath, pageManifestPath, progressPath, responsePath, reviewPath } from './convention.js';
|
|
4
|
-
import { z } from 'zod';
|
|
5
|
-
import { checkReviewableFile } from './visible-paths.js';
|
|
6
|
-
const reviewSourceSchema = z.object({ sessionName: z.string().optional(), askedBy: z.string().optional(), blockedSince: z.string().optional(), profileName: z.string().optional(), nodeId: z.string().optional() });
|
|
7
|
-
export const reviewDescriptorSchema = z.object({
|
|
8
|
-
schema: z.literal('humanloop.review/v1'),
|
|
9
|
-
file: z.string().min(1).refine(isAbsolute, 'file must be absolute'),
|
|
10
|
-
output: z.string().min(1).refine(isAbsolute, 'output must be absolute'),
|
|
11
|
-
title: z.string().trim().min(1),
|
|
12
|
-
subtitle: z.string().trim().min(1),
|
|
13
|
-
source: reviewSourceSchema,
|
|
14
|
-
blockedSince: z.string().datetime({ offset: true }),
|
|
15
|
-
}).strict();
|
|
16
|
-
export function validateReviewDescriptor(parsed) { return reviewDescriptorSchema.parse(parsed); }
|
|
17
|
-
/** Canonicalize and authorize the one review projection boundary before every write. */
|
|
18
|
-
export function validateReviewProjection(dir, parsed) {
|
|
19
|
-
const descriptor = validateReviewDescriptor(parsed);
|
|
20
|
-
// Any reviewable UTF-8 text file: a .md artifact renders as a document, a
|
|
21
|
-
// source file as a syntax-highlighted code panel.
|
|
22
|
-
if (!existsSync(descriptor.file))
|
|
23
|
-
throw new Error('review file must be an existing absolute path');
|
|
24
|
-
const reviewable = checkReviewableFile(descriptor.file);
|
|
25
|
-
if (!reviewable.ok)
|
|
26
|
-
throw new Error(`review file is not reviewable: ${reviewable.reason}`);
|
|
27
|
-
const file = realpathSync(descriptor.file);
|
|
28
|
-
const output = resolve(realpathSync(dirname(descriptor.output)), basename(descriptor.output));
|
|
29
|
-
const reserved = new Set(['page.json', 'review.json', 'response.json', 'progress.json', 'claim.json']);
|
|
30
|
-
const ownProtocolPaths = new Set([pageManifestPath(dir), reviewPath(dir), responsePath(dir), progressPath(dir), claimPath(dir)]);
|
|
31
|
-
if (output === file || reserved.has(basename(output)) || ownProtocolPaths.has(output))
|
|
32
|
-
throw new Error('review output must not alias the source or ticket protocol files');
|
|
33
|
-
return { ...descriptor, file, output };
|
|
34
|
-
}
|
|
1
|
+
var f=Object.defineProperty;var s=(t,i)=>f(t,"name",{value:i,configurable:!0});import{existsSync as w,realpathSync as l}from"node:fs";import{basename as c,dirname as h,isAbsolute as p,resolve as v}from"node:path";import{claimPath as b,pageManifestPath as g,progressPath as S,responsePath as j,reviewPath as P}from"./convention.js";import{z as e}from"zod";import{checkReviewableFile as d}from"./visible-paths.js";const k=e.object({sessionName:e.string().optional(),askedBy:e.string().optional(),blockedSince:e.string().optional(),profileName:e.string().optional(),nodeId:e.string().optional()}),x=e.object({schema:e.literal("humanloop.review/v1"),file:e.string().min(1).refine(p,"file must be absolute"),output:e.string().min(1).refine(p,"output must be absolute"),title:e.string().trim().min(1),subtitle:e.string().trim().min(1),source:k,blockedSince:e.string().datetime({offset:!0})}).strict();function y(t){return x.parse(t)}s(y,"validateReviewDescriptor");function B(t,i){const o=y(i);if(!w(o.file))throw new Error("review file must be an existing absolute path");const n=d(o.file);if(!n.ok)throw new Error(`review file is not reviewable: ${n.reason}`);const a=l(o.file),r=v(l(h(o.output)),c(o.output)),m=new Set(["page.json","review.json","response.json","progress.json","claim.json"]),u=new Set([g(t),P(t),j(t),S(t),b(t)]);if(r===a||m.has(c(r))||u.has(r))throw new Error("review output must not alias the source or ticket protocol files");return{...o,file:a,output:r}}s(B,"validateReviewProjection");export{x as reviewDescriptorSchema,y as validateReviewDescriptor,B as validateReviewProjection};
|
package/dist/core/human/root.js
CHANGED
|
@@ -1,11 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export function inboxActivityPath() {
|
|
3
|
-
return activityPath('inbox-activity');
|
|
4
|
-
}
|
|
5
|
-
/** Signal one durable ticket mutation to every open inbox without watching every ticket directory. */
|
|
6
|
-
export function signalInboxActivity() {
|
|
7
|
-
signalActivity('inbox-activity');
|
|
8
|
-
}
|
|
9
|
-
export function watchInboxActivity(onChange) {
|
|
10
|
-
return watchActivity('inbox-activity', onChange);
|
|
11
|
-
}
|
|
1
|
+
var c=Object.defineProperty;var t=(i,n)=>c(i,"name",{value:n,configurable:!0});import{activityPath as o,signalActivity as a,watchActivity as r}from"../activity-signal.js";function y(){return o("inbox-activity")}t(y,"inboxActivityPath");function b(){a("inbox-activity")}t(b,"signalInboxActivity");function e(i){return r("inbox-activity",i)}t(e,"watchInboxActivity");export{y as inboxActivityPath,b as signalInboxActivity,e as watchInboxActivity};
|