@north-light/crouter 0.3.312 → 0.3.313
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/dist/api/client.d.ts +27 -30
- package/dist/api/client.js +80 -67
- package/dist/api/dto/broker-ops.d.ts +10 -20
- package/dist/api/dto/canvas.d.ts +1 -10
- package/dist/api/dto/health.d.ts +113 -0
- package/dist/api/dto/human-requests.d.ts +14 -3
- package/dist/api/dto/human.d.ts +2 -48
- package/dist/api/dto/human.js +3 -2
- package/dist/api/dto/inbox.d.ts +14 -0
- package/dist/api/dto/mail.d.ts +43 -0
- package/dist/api/dto/nodes.d.ts +11 -8
- package/dist/api/dto/recovery.d.ts +96 -0
- package/dist/api/dto/reviews.d.ts +2 -2
- package/dist/api/routes.d.ts +9 -6
- package/dist/api/routes.js +11 -11
- package/dist/build-root.d.ts +4 -0
- package/dist/build-root.js +11 -1
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/integration/provider-rotation.test.ts +35 -47
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.d.ts +1 -1
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.js +12 -5
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +12 -5
- package/dist/cli.js +10 -1
- package/dist/clients/__tests__/helpers/human-daemon.d.ts +11 -0
- package/dist/clients/__tests__/helpers/human-daemon.js +60 -0
- package/dist/clients/attach/chrome/canvas-panels.js +1 -1
- package/dist/clients/attach/chrome/inbox-strip.d.ts +3 -3
- package/dist/clients/attach/chrome/inbox-strip.js +17 -9
- package/dist/clients/attach/chrome/ticket-panel.d.ts +2 -2
- package/dist/clients/attach/chrome/ticket-panel.js +77 -46
- package/dist/clients/attach/overlays/graph.js +6 -9
- package/dist/clients/attach/render/chat-view.d.ts +5 -4
- package/dist/clients/attach/render/chat-view.js +22 -13
- package/dist/clients/attach/render/page-block.d.ts +11 -7
- package/dist/clients/attach/render/page-block.js +64 -55
- package/dist/clients/attach/viewer.js +746 -735
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.js +56 -56
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.js +45 -32
- package/dist/clients/inbox/controller.d.ts +42 -14
- package/dist/clients/inbox/controller.js +240 -124
- package/dist/clients/inbox/dto-adapt.d.ts +28 -0
- package/dist/clients/inbox/dto-adapt.js +93 -0
- package/dist/clients/inbox/page-adapter.d.ts +5 -4
- package/dist/clients/inbox/page-adapter.js +12 -12
- package/dist/clients/inbox/resolve.d.ts +10 -5
- package/dist/clients/inbox/resolve.js +13 -12
- package/dist/clients/inbox/review/review-client.d.ts +0 -1
- package/dist/clients/inbox/review/review-client.js +0 -4
- package/dist/clients/inbox/review-adapter.d.ts +2 -1
- package/dist/clients/inbox/review-adapter.js +3 -5
- package/dist/clients/inbox/surface.d.ts +2 -2
- package/dist/clients/inbox/surface.js +19 -8
- package/dist/clients/inbox/tui.d.ts +3 -3
- package/dist/commands/__tests__/human.test.js +31 -15
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.js +36 -11
- package/dist/commands/{sys/__tests__ → __tests__/integration}/migrate.test.js +142 -36
- package/dist/commands/__tests__/revive-now-gate.test.js +2 -0
- package/dist/commands/api-client.d.ts +5 -4
- package/dist/commands/api-client.js +13 -7
- package/dist/commands/canvas-history/shared.js +1 -1
- package/dist/commands/canvas-history.js +1 -1
- package/dist/commands/canvas-roster.js +1 -1
- package/dist/commands/canvas.js +1 -2
- package/dist/commands/human/feedback.js +20 -17
- package/dist/commands/human/prompts.js +45 -36
- package/dist/commands/human/queue.js +73 -123
- package/dist/commands/human/review.js +6 -16
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.js +2 -0
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.js +2 -0
- package/dist/commands/memory/__tests__/repository-root-lint.test.js +2 -0
- package/dist/commands/node-inspect-artifacts.js +1 -1
- package/dist/commands/node-lifecycle-revive.d.ts +2 -2
- package/dist/commands/node-lifecycle-revive.js +9 -19
- package/dist/commands/pkg/plugin-manage.js +0 -1
- package/dist/commands/profile/show.js +4 -12
- package/dist/commands/surface-tmux-spread.js +1 -5
- package/dist/commands/sys/__tests__/config-model-ladders.test.js +23 -30
- package/dist/commands/sys/__tests__/sync-project-guidance.test.js +37 -11
- package/dist/commands/sys/branch.d.ts +2 -0
- package/dist/commands/sys/branch.js +19 -0
- package/dist/commands/sys/config.js +106 -33
- package/dist/commands/sys/daemon.d.ts +2 -0
- package/dist/commands/sys/daemon.js +130 -7
- package/dist/commands/sys/doctor.js +5 -15
- package/dist/commands/sys/migrate.js +21 -92
- package/dist/commands/sys/setup-settings-runner.js +4 -2
- package/dist/commands/sys.js +2 -15
- package/dist/core/__tests__/boot-fault-attempt.test.js +23 -1
- package/dist/core/__tests__/boot.test.js +32 -25
- package/dist/core/__tests__/broker-launch-candidates.test.js +49 -0
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +149 -176
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.js +59 -10
- package/dist/core/__tests__/canvas-inbox-watcher.test.js +76 -20
- package/dist/core/__tests__/canvas.test.js +18 -47
- package/dist/core/__tests__/child-death-wake.test.js +29 -7
- package/dist/core/__tests__/cli-help-contract.test.js +2 -0
- package/dist/core/__tests__/close.test.js +29 -10
- package/dist/core/__tests__/collectible.test.js +2 -1
- package/dist/core/__tests__/config-change-delta.test.js +2 -0
- package/dist/core/__tests__/context-intro.test.js +13 -1
- package/dist/core/__tests__/cron-armed-context-failure.test.js +17 -12
- package/dist/core/__tests__/cron-held-settlement.test.js +21 -3
- package/dist/core/__tests__/cron-node-sink-parked-root.test.js +29 -10
- package/dist/core/__tests__/cron-self-cancel-delivery.test.js +14 -2
- package/dist/core/__tests__/cron-timeout-descendants.test.js +13 -1
- package/dist/core/__tests__/daemon-boot.test.js +51 -14
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +1 -1
- package/dist/core/__tests__/fixtures/fake-engine.js +8 -3
- package/dist/core/__tests__/focuses.test.js +10 -5
- package/dist/core/__tests__/helpers/harness.js +50 -18
- package/dist/core/__tests__/history-inbox.test.js +12 -16
- package/dist/core/__tests__/human-action-delivery.test.js +48 -28
- package/dist/core/__tests__/human-actions.test.js +7 -3
- package/dist/core/__tests__/inline-memory-refs.test.js +7 -2
- package/dist/core/__tests__/integration/broker-fork-seam.test.js +37 -10
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.js +42 -0
- package/dist/core/__tests__/integration/broker-snapshot-history.test.js +42 -29
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.js +36 -35
- package/dist/core/__tests__/integration/command-plugins.test.js +15 -6
- package/dist/core/__tests__/integration/deferred-no-wake.test.js +113 -92
- package/dist/core/__tests__/integration/host-teardown-process-group.test.js +9 -5
- package/dist/core/__tests__/integration/lifecycle-hooks.test.js +16 -3
- package/dist/core/__tests__/integration/plugin-revalidate.test.js +4 -0
- package/dist/core/__tests__/integration/profile-pause.test.js +4 -4
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.js +9 -12
- package/dist/core/__tests__/integration/revive.test.js +67 -21
- package/dist/core/__tests__/integration/spawn-root.test.js +51 -8
- package/dist/core/__tests__/integration/subscription-delivery.test.js +33 -21
- package/dist/core/__tests__/integration/worktree-land.test.js +5 -2
- package/dist/core/__tests__/integration/worktree-reap.test.js +15 -1
- package/dist/core/__tests__/kickoff.test.js +36 -39
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.js +2 -1
- package/dist/core/__tests__/lifecycle.test.js +2 -1
- package/dist/core/__tests__/live-lifecycle-prompt.test.js +13 -1
- package/dist/core/__tests__/memory-resolver-precedence.test.js +2 -0
- package/dist/core/__tests__/migration.test.js +145 -31
- package/dist/core/__tests__/model-pin-durability.test.js +4 -1
- package/dist/core/__tests__/model-routes-config.test.js +13 -5
- package/dist/core/__tests__/node-outcome.test.js +93 -26
- package/dist/core/__tests__/on-read-crouter-home-fence.test.js +2 -1
- package/dist/core/__tests__/on-read-dedup-resume.test.js +2 -1
- package/dist/core/__tests__/on-read-nested-store.test.js +2 -1
- package/dist/core/__tests__/passive-subscription.test.js +50 -157
- package/dist/core/__tests__/plugin-kinds.test.js +6 -4
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.js +6 -1
- package/dist/core/__tests__/plugin-page-components.test.js +6 -4
- package/dist/core/__tests__/preview-registry-sync.test.js +2 -0
- package/dist/core/__tests__/profile-project-memory-delivery.test.js +4 -1
- package/dist/core/__tests__/prune.test.js +11 -5
- package/dist/core/__tests__/push-final-guard.test.js +14 -7
- package/dist/core/__tests__/relaunch-root.test.js +30 -2
- package/dist/core/__tests__/remote-canvas-target.test.js +7 -1
- package/dist/core/__tests__/repository-root-identity.test.js +4 -0
- package/dist/core/__tests__/review-model-floor.test.js +6 -3
- package/dist/core/__tests__/revive-all.test.js +13 -3
- package/dist/core/__tests__/revive-capacity.test.js +26 -4
- package/dist/core/__tests__/revive-parked-fresh.test.js +31 -8
- package/dist/core/__tests__/seam/broker-attach-stream.test.js +1 -1
- package/dist/core/__tests__/seam/broker-cap-freeze.test.js +4 -3
- package/dist/core/__tests__/seam/broker-crash-teardown.test.js +11 -14
- package/dist/core/__tests__/seam/broker-provider-retry.test.js +85 -71
- package/dist/core/__tests__/seam/dormancy-release.test.js +33 -19
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.js +7 -5
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.js +20 -6
- package/dist/core/__tests__/seam/node-outcome-delivery.test.js +27 -3
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +2 -1
- package/dist/core/__tests__/stop-guard.test.js +2 -1
- package/dist/core/__tests__/subscription-pool-credential-guard.test.js +4 -3
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.js +18 -4
- package/dist/core/__tests__/yield-ensures-daemon.test.js +2 -1
- package/dist/core/bootstrap.js +2 -0
- package/dist/core/broker-client/__tests__/transport-socket.test.js +51 -6
- package/dist/core/broker-client/transport-socket.d.ts +1 -0
- package/dist/core/broker-client/transport-socket.js +13 -5
- package/dist/core/canvas/__tests__/attention.test.js +29 -35
- package/dist/core/canvas/__tests__/history-transcript.test.js +6 -6
- package/dist/core/canvas/__tests__/render-remote.test.js +25 -9
- package/dist/core/canvas/attention.d.ts +2 -5
- package/dist/core/canvas/attention.js +15 -64
- package/dist/core/canvas/boot.d.ts +6 -7
- package/dist/core/canvas/boot.js +5 -9
- package/dist/core/canvas/canvas.d.ts +13 -109
- package/dist/core/canvas/canvas.js +140 -401
- package/dist/core/canvas/crons.d.ts +2 -0
- package/dist/core/canvas/crons.js +16 -15
- package/dist/core/canvas/daemon-owner.js +10 -0
- package/dist/core/canvas/db.d.ts +2 -2
- package/dist/core/canvas/db.js +2 -18
- package/dist/core/canvas/deliveries.d.ts +104 -0
- package/dist/core/canvas/deliveries.js +354 -0
- package/dist/core/canvas/executions.d.ts +29 -0
- package/dist/core/canvas/executions.js +68 -0
- package/dist/core/canvas/history.js +35 -35
- package/dist/core/canvas/index.d.ts +3 -1
- package/dist/core/canvas/index.js +3 -1
- package/dist/core/canvas/migrations.js +20 -12
- package/dist/core/canvas/nav-model.js +1 -3
- package/dist/core/canvas/nav-render.d.ts +4 -4
- package/dist/core/canvas/nav-render.js +11 -21
- package/dist/core/canvas/node-sql-migration.d.ts +3 -0
- package/dist/core/canvas/node-sql-migration.js +261 -0
- package/dist/core/canvas/paths.d.ts +2 -16
- package/dist/core/canvas/paths.js +2 -31
- package/dist/core/canvas/recovery.d.ts +76 -0
- package/dist/core/canvas/recovery.js +588 -0
- package/dist/core/canvas/remote-canvas-source.js +4 -0
- package/dist/core/canvas/render-source.d.ts +16 -27
- package/dist/core/canvas/render-source.js +16 -45
- package/dist/core/canvas/sessions.d.ts +33 -0
- package/dist/core/canvas/sessions.js +78 -0
- package/dist/core/canvas/types.d.ts +33 -33
- package/dist/core/canvas/types.js +2 -5
- package/dist/core/canvas/waits.d.ts +18 -0
- package/dist/core/canvas/waits.js +70 -0
- package/dist/core/canvas/worktrees.d.ts +40 -0
- package/dist/core/canvas/worktrees.js +93 -0
- package/dist/core/config.d.ts +17 -12
- package/dist/core/config.js +106 -155
- package/dist/core/feed/__tests__/inbox-migrate.test.js +27 -31
- package/dist/core/feed/feed.d.ts +0 -6
- package/dist/core/feed/feed.js +68 -56
- package/dist/core/feed/inbox.d.ts +7 -81
- package/dist/core/feed/inbox.js +46 -378
- package/dist/core/feed/messages.d.ts +58 -0
- package/dist/core/feed/messages.js +217 -0
- package/dist/core/fs-utils.d.ts +4 -0
- package/dist/core/fs-utils.js +21 -1
- package/dist/core/human/answer.d.ts +1 -1
- package/dist/core/human/answer.js +1 -1
- package/dist/core/human/claim.d.ts +1 -1
- package/dist/core/human/claim.js +2 -4
- package/dist/core/human/component-docs.js +1 -1
- package/dist/core/human/feedback-companion.js +3 -2
- package/dist/core/human/feedback.d.ts +5 -8
- package/dist/core/human/feedback.js +57 -85
- package/dist/core/human/page-authoring.d.ts +30 -0
- package/dist/core/human/page-authoring.js +19 -0
- package/dist/core/human/requests.d.ts +136 -0
- package/dist/core/human/requests.js +515 -0
- package/dist/core/human/root.d.ts +0 -7
- package/dist/core/human/root.js +0 -17
- package/dist/core/human/scan.d.ts +2 -7
- package/dist/core/human/scan.js +48 -132
- package/dist/core/human/summary.d.ts +1 -1
- package/dist/core/human/summary.js +1 -1
- package/dist/core/human/tickets.d.ts +23 -83
- package/dist/core/human/tickets.js +92 -243
- package/dist/core/human/types.d.ts +5 -1
- package/dist/core/installed-plugins.js +8 -3
- package/dist/core/keybindings/__tests__/resolve.test.js +19 -17
- package/dist/core/locked-file.d.ts +6 -3
- package/dist/core/locked-file.js +36 -9
- package/dist/core/memory/extensions.js +2 -0
- package/dist/core/preview-registry.js +0 -1
- package/dist/core/profiles/__tests__/env-store.test.js +2 -0
- package/dist/core/profiles/default-binding.d.ts +0 -4
- package/dist/core/profiles/default-binding.js +12 -58
- package/dist/core/profiles/env-store.js +8 -3
- package/dist/core/profiles/manifest.d.ts +2 -37
- package/dist/core/profiles/manifest.js +35 -161
- package/dist/core/profiles/select.js +3 -0
- package/dist/core/review/__tests__/capture-origin.test.js +13 -2
- package/dist/core/review/__tests__/comments.test.js +28 -10
- package/dist/core/review/__tests__/remap.test.js +28 -10
- package/dist/core/review/__tests__/stage-identity.test.js +17 -7
- package/dist/core/review/birth.d.ts +1 -1
- package/dist/core/review/birth.js +34 -5
- package/dist/core/review/comments.js +1 -1
- package/dist/core/review/document.js +1 -1
- package/dist/core/review/project.d.ts +5 -1
- package/dist/core/review/project.js +14 -36
- package/dist/core/review/realize.d.ts +3 -6
- package/dist/core/review/realize.js +51 -168
- package/dist/core/review/remap.js +1 -1
- package/dist/core/review/stage.d.ts +3 -2
- package/dist/core/review/stage.js +2 -3
- package/dist/core/review/store.d.ts +3 -21
- package/dist/core/review/store.js +140 -186
- package/dist/core/review/types.d.ts +0 -1
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.js +9 -5
- package/dist/core/runtime/__tests__/spawn-env.test.js +8 -9
- package/dist/core/runtime/broker/auth-reload.js +9 -10
- package/dist/core/runtime/broker/daemon-ops.d.ts +25 -8
- package/dist/core/runtime/broker/daemon-ops.js +42 -9
- package/dist/core/runtime/broker/extension-abort.d.ts +3 -0
- package/dist/core/runtime/broker/extension-abort.js +11 -0
- package/dist/core/runtime/broker/fault-retry.d.ts +15 -6
- package/dist/core/runtime/broker/fault-retry.js +142 -95
- package/dist/core/runtime/broker/inbox.d.ts +4 -32
- package/dist/core/runtime/broker/inbox.js +4 -92
- package/dist/core/runtime/broker/rebind.d.ts +1 -0
- package/dist/core/runtime/broker/rebind.js +21 -12
- package/dist/core/runtime/broker-persona-guidance.d.ts +1 -1
- package/dist/core/runtime/broker-persona-guidance.js +2 -13
- package/dist/core/runtime/broker.js +28 -22
- package/dist/core/runtime/close.d.ts +3 -9
- package/dist/core/runtime/close.js +16 -27
- package/dist/core/runtime/fault.d.ts +3 -93
- package/dist/core/runtime/fault.js +9 -419
- package/dist/core/runtime/kickoff.d.ts +3 -6
- package/dist/core/runtime/kickoff.js +12 -18
- package/dist/core/runtime/launch.js +1 -1
- package/dist/core/runtime/lifecycle.js +40 -7
- package/dist/core/runtime/placement.js +2 -2
- package/dist/core/runtime/recycle.js +8 -2
- package/dist/core/runtime/reset.js +22 -6
- package/dist/core/runtime/revive.js +226 -218
- package/dist/core/runtime/spawn.js +14 -3
- package/dist/core/scoped-state/db.d.ts +7 -0
- package/dist/core/scoped-state/db.js +92 -0
- package/dist/core/scoped-state/migrate.d.ts +11 -0
- package/dist/core/scoped-state/migrate.js +198 -0
- package/dist/core/scoped-state/paths.d.ts +9 -0
- package/dist/core/scoped-state/paths.js +27 -0
- package/dist/core/scoped-state/profiles.d.ts +12 -0
- package/dist/core/scoped-state/profiles.js +62 -0
- package/dist/core/scoped-state/providers.d.ts +16 -0
- package/dist/core/scoped-state/providers.js +8 -0
- package/dist/core/scoped-state/schema.d.ts +3 -0
- package/dist/core/scoped-state/schema.js +26 -0
- package/dist/core/scoped-state/settings.d.ts +28 -0
- package/dist/core/scoped-state/settings.js +82 -0
- package/dist/core/subscription-state.d.ts +29 -48
- package/dist/core/subscription-state.js +176 -712
- package/dist/core/worktree-close.js +4 -4
- package/dist/core/worktree-mutation-async.js +2 -2
- package/dist/core/worktree-sweep.js +11 -16
- package/dist/core/worktree.js +6 -12
- package/dist/daemon/__tests__/autostart-storm.test.js +1 -39
- package/dist/daemon/__tests__/helpers/source-daemon.d.ts +2 -2
- package/dist/daemon/__tests__/helpers/source-daemon.js +7 -6
- package/dist/daemon/__tests__/integration/migration-startup.test.js +59 -26
- package/dist/daemon/__tests__/node-deadline-lane.test.js +2 -1
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.js +39 -15
- package/dist/daemon/__tests__/node-outcome-delivery.test.js +39 -10
- package/dist/daemon/__tests__/reconciler-signature.test.js +2 -2
- package/dist/daemon/__tests__/subtree-filter-freshness.test.js +2 -2
- package/dist/daemon/api/__tests__/broker-settle-park.test.js +17 -12
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.js +27 -5
- package/dist/daemon/api/__tests__/model-config.test.js +8 -8
- package/dist/daemon/api/__tests__/node-create-description.test.js +22 -5
- package/dist/daemon/api/__tests__/node-model-validation.test.js +21 -1
- package/dist/daemon/api/__tests__/nodes-activity-query.test.js +10 -12
- package/dist/daemon/api/__tests__/profile-launch-gates.test.js +4 -1
- package/dist/daemon/api/__tests__/profile-metadata-route.test.js +4 -1
- package/dist/daemon/api/__tests__/reopen-delivery.test.js +26 -8
- package/dist/daemon/api/__tests__/seam/api-server.test.js +24 -32
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.js +4 -1
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.js +5 -4
- package/dist/daemon/api/__tests__/seam/profile-delete.test.js +27 -41
- package/dist/daemon/api/__tests__/submit-result.test.js +3 -2
- package/dist/daemon/api/bridge.js +1 -1
- package/dist/daemon/api/handlers/bash-jobs.js +6 -7
- package/dist/daemon/api/handlers/broker-ops.js +47 -84
- package/dist/daemon/api/handlers/broker-recovery.d.ts +4 -0
- package/dist/daemon/api/handlers/broker-recovery.js +251 -0
- package/dist/daemon/api/handlers/canvas.js +2 -44
- package/dist/daemon/api/handlers/daemon.js +41 -0
- package/dist/daemon/api/handlers/feedback-comments.js +2 -2
- package/dist/daemon/api/handlers/health.js +10 -5
- package/dist/daemon/api/handlers/human-requests.js +168 -188
- package/dist/daemon/api/handlers/human.js +3 -151
- package/dist/daemon/api/handlers/inbox-page.d.ts +4 -0
- package/dist/daemon/api/handlers/inbox-page.js +89 -0
- package/dist/daemon/api/handlers/inbox.js +21 -120
- package/dist/daemon/api/handlers/messages.d.ts +1 -0
- package/dist/daemon/api/handlers/messages.js +73 -15
- package/dist/daemon/api/handlers/node-outcomes.js +58 -13
- package/dist/daemon/api/handlers/nodes.js +7 -13
- package/dist/daemon/api/handlers/reviews.js +4 -29
- package/dist/daemon/api/map.d.ts +25 -3
- package/dist/daemon/api/map.js +84 -14
- package/dist/daemon/api/server.js +68 -9
- package/dist/daemon/control.d.ts +18 -0
- package/dist/daemon/cron/disposition.d.ts +2 -0
- package/dist/daemon/cron/disposition.js +8 -5
- package/dist/daemon/cron/settle.js +37 -13
- package/dist/daemon/cron/sinks.d.ts +18 -1
- package/dist/daemon/cron/sinks.js +47 -93
- package/dist/daemon/crtrd-cli.js +4 -19
- package/dist/daemon/crtrd.d.ts +2 -0
- package/dist/daemon/crtrd.js +206 -81
- package/dist/daemon/fleet.js +5 -6
- package/dist/daemon/human/finish.d.ts +12 -24
- package/dist/daemon/human/finish.js +88 -285
- package/dist/daemon/human/settle.d.ts +40 -0
- package/dist/daemon/human/settle.js +89 -0
- package/dist/daemon/human/sweep.d.ts +20 -5
- package/dist/daemon/human/sweep.js +56 -60
- package/dist/daemon/manage.d.ts +21 -16
- package/dist/daemon/manage.js +85 -51
- package/dist/daemon/messaging/node-message.d.ts +1 -1
- package/dist/daemon/messaging/node-message.js +9 -12
- package/dist/daemon/park-activity.js +3 -3
- package/dist/daemon/reconcilers/bash-deadline.js +6 -7
- package/dist/daemon/reconcilers/broker-supervision.d.ts +1 -1
- package/dist/daemon/reconcilers/broker-supervision.js +41 -19
- package/dist/daemon/reconcilers/controller-death.js +6 -18
- package/dist/daemon/reconcilers/delivery-lane.d.ts +9 -0
- package/dist/daemon/reconcilers/delivery-lane.js +130 -0
- package/dist/daemon/reconcilers/live-obligation.js +3 -3
- package/dist/daemon/reconcilers/node-deadline.js +1 -1
- package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.d.ts +1 -1
- package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.js +10 -12
- package/dist/daemon/reconcilers/node-lifecycle/tick.js +5 -5
- package/dist/daemon/reconcilers/node-lifecycle/wants-execution.js +1 -1
- package/dist/daemon/reconcilers/pending-review-submit.js +3 -3
- package/dist/daemon/reconcilers/storage-maintenance.d.ts +2 -8
- package/dist/daemon/reconcilers/storage-maintenance.js +13 -43
- package/dist/daemon/review/companion.js +5 -11
- package/dist/daemon/review/deliver.d.ts +1 -5
- package/dist/daemon/review/deliver.js +3 -52
- package/dist/daemon/review/finish.d.ts +2 -27
- package/dist/daemon/review/finish.js +79 -263
- package/dist/daemon/review/sweep.d.ts +3 -10
- package/dist/daemon/review/sweep.js +13 -131
- package/dist/daemon/startup-policy.d.ts +0 -5
- package/dist/daemon/startup-policy.js +0 -5
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/migrations/__tests__/activation-concurrency.test.js +3 -2
- package/dist/migrations/__tests__/activation.test.js +9 -6
- package/dist/migrations/activation.d.ts +3 -2
- package/dist/migrations/activation.js +2 -4
- package/dist/migrations/corpus.d.ts +2 -5
- package/dist/migrations/corpus.js +9 -20
- package/dist/migrations/runner.d.ts +3 -1
- package/dist/migrations/runner.js +6 -2
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +21 -89
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.js +4 -2
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +51 -33
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +16 -2
- package/dist/pi-extensions/__tests__/pre-command-gate.test.js +13 -1
- package/dist/pi-extensions/canvas-inbox-watcher.js +98 -244
- package/dist/pi-extensions/canvas-passive-context.d.ts +4 -8
- package/dist/pi-extensions/canvas-passive-context.js +85 -37
- package/dist/pi-extensions/canvas-stophook.js +47 -31
- package/dist/shared/env.d.ts +1 -0
- package/dist/shared/env.js +3 -0
- package/package.json +1 -1
- package/runtime.lock.json +5 -5
- package/dist/clients/attach/__tests__/page-block.test.js +0 -54
- package/dist/clients/inbox/review-visibility.d.ts +0 -5
- package/dist/clients/inbox/review-visibility.js +0 -19
- package/dist/commands/canvas-rebuild-index.d.ts +0 -2
- package/dist/commands/canvas-rebuild-index.js +0 -46
- package/dist/core/__tests__/human-cancel-guard.test.js +0 -110
- package/dist/core/__tests__/human-deliver.test.d.ts +0 -1
- package/dist/core/__tests__/human-deliver.test.js +0 -256
- package/dist/core/__tests__/human-node-not-supervised.test.d.ts +0 -1
- package/dist/core/__tests__/human-node-not-supervised.test.js +0 -89
- package/dist/core/__tests__/integration/human-deliver-e2e.test.d.ts +0 -1
- package/dist/core/__tests__/integration/human-deliver-e2e.test.js +0 -131
- package/dist/core/__tests__/phase4-review-store.test.d.ts +0 -1
- package/dist/core/__tests__/phase4-review-store.test.js +0 -144
- package/dist/core/__tests__/watchdog-abort-arms-retry.test.d.ts +0 -1
- package/dist/core/__tests__/watchdog-abort-arms-retry.test.js +0 -110
- package/dist/core/canvas/human-deliveries.d.ts +0 -39
- package/dist/core/canvas/human-deliveries.js +0 -75
- package/dist/core/canvas/node-outcome-deliveries.d.ts +0 -64
- package/dist/core/canvas/node-outcome-deliveries.js +0 -159
- package/dist/core/feed/passive.d.ts +0 -3
- package/dist/core/feed/passive.js +0 -53
- package/dist/core/human/__tests__/inbox-cancel-worker.d.ts +0 -1
- package/dist/core/human/__tests__/inbox-cancel-worker.js +0 -7
- package/dist/core/human/__tests__/inbox-claim-worker.d.ts +0 -1
- package/dist/core/human/__tests__/inbox-claim-worker.js +0 -17
- package/dist/core/human/__tests__/inbox-stale-claim-worker.d.ts +0 -1
- package/dist/core/human/__tests__/inbox-stale-claim-worker.js +0 -8
- package/dist/core/human/__tests__/integration/inbox-core.test.d.ts +0 -1
- package/dist/core/human/__tests__/integration/inbox-core.test.js +0 -145
- package/dist/core/human/__tests__/page-tickets.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-tickets.test.js +0 -161
- package/dist/core/review/ticket-filter.d.ts +0 -17
- package/dist/core/review/ticket-filter.js +0 -21
- package/dist/core/runtime/broker/passive.d.ts +0 -17
- package/dist/core/runtime/broker/passive.js +0 -44
- package/dist/core/runtime/busy.d.ts +0 -46
- package/dist/core/runtime/busy.js +0 -150
- package/dist/daemon/__tests__/startup-block-marker.test.d.ts +0 -1
- package/dist/daemon/__tests__/startup-block-marker.test.js +0 -86
- package/dist/daemon/api/__tests__/review-terminal-conflict.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/review-terminal-conflict.test.js +0 -98
- package/dist/daemon/human/deliver-action.d.ts +0 -3
- package/dist/daemon/human/deliver-action.js +0 -9
- package/dist/daemon/node-outcome/deliver-outcome.d.ts +0 -3
- package/dist/daemon/node-outcome/deliver-outcome.js +0 -9
- package/dist/daemon/reconcilers/human-delivery-lane.d.ts +0 -10
- package/dist/daemon/reconcilers/human-delivery-lane.js +0 -41
- package/dist/daemon/reconcilers/node-outcome-delivery-lane.d.ts +0 -10
- package/dist/daemon/reconcilers/node-outcome-delivery-lane.js +0 -41
- package/dist/daemon/startup-block-marker.d.ts +0 -25
- package/dist/daemon/startup-block-marker.js +0 -99
- /package/dist/{clients/attach/__tests__/page-block.test.d.ts → api/dto/mail.js} +0 -0
- /package/dist/{commands/sys/__tests__/migrate.test.d.ts → api/dto/recovery.js} +0 -0
- /package/dist/{core/__tests__/human-cancel-guard.test.d.ts → commands/__tests__/integration/migrate.test.d.ts} +0 -0
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
export declare function ticketsRoot(): string;
|
|
2
|
-
/** The opaque id the `/v1/human/inbox` routes address a ticket by — a hash of
|
|
3
|
-
* the canonical tickets root and the ticket directory basename. The daemon
|
|
4
|
-
* derives the same value when it resolves a route id back to a directory. */
|
|
5
|
-
export declare function opaqueInboxTicketId(ticketId: string): string;
|
|
6
|
-
/** Ticket directories share the canvas node root. Reply-bearing tickets may use their bridge id; standalone pages use an independent ticket id. */
|
|
7
|
-
export declare function ticketDir(ticketId: string): string;
|
|
8
1
|
export declare function inboxActivityPath(): string;
|
|
9
2
|
/** Signal one durable ticket mutation to every open inbox without watching every ticket directory. */
|
|
10
3
|
export declare function signalInboxActivity(): void;
|
package/dist/core/human/root.js
CHANGED
|
@@ -1,21 +1,4 @@
|
|
|
1
|
-
import { realpathSync } from 'node:fs';
|
|
2
|
-
import { createHash } from 'node:crypto';
|
|
3
|
-
import { nodeDir, nodesRoot } from '../canvas/paths.js';
|
|
4
1
|
import { activityPath, signalActivity, watchActivity } from '../activity-signal.js';
|
|
5
|
-
export function ticketsRoot() {
|
|
6
|
-
return nodesRoot();
|
|
7
|
-
}
|
|
8
|
-
/** The opaque id the `/v1/human/inbox` routes address a ticket by — a hash of
|
|
9
|
-
* the canonical tickets root and the ticket directory basename. The daemon
|
|
10
|
-
* derives the same value when it resolves a route id back to a directory. */
|
|
11
|
-
export function opaqueInboxTicketId(ticketId) {
|
|
12
|
-
const canonicalRoot = realpathSync(ticketsRoot());
|
|
13
|
-
return createHash('sha256').update(`${canonicalRoot}\0${ticketId}`, 'utf8').digest('hex');
|
|
14
|
-
}
|
|
15
|
-
/** Ticket directories share the canvas node root. Reply-bearing tickets may use their bridge id; standalone pages use an independent ticket id. */
|
|
16
|
-
export function ticketDir(ticketId) {
|
|
17
|
-
return nodeDir(ticketId);
|
|
18
|
-
}
|
|
19
2
|
export function inboxActivityPath() {
|
|
20
3
|
return activityPath('inbox-activity');
|
|
21
4
|
}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import type { PageTicketSummary, TicketSummary } from './types.js';
|
|
2
|
-
/**
|
|
2
|
+
/** SQL-backed inbox discovery. Files in request_dir are presentation projections only. */
|
|
3
3
|
export declare function scanInbox(): TicketSummary[];
|
|
4
4
|
export type PageHistoryEntry = PageTicketSummary;
|
|
5
|
-
/**
|
|
6
|
-
* Every page ticket — pending, resolved or canceled — oldest first, optionally
|
|
7
|
-
* narrowed to one raising node. This is the durable discovery seam for
|
|
8
|
-
* transcript placement and for browsing settled tickets, so it is a separate
|
|
9
|
-
* walk from the pending-only inbox scan and never filters on a terminal file.
|
|
10
|
-
*/
|
|
5
|
+
/** SQL-backed page history, including terminal requests. */
|
|
11
6
|
export declare function scanPageHistory(nodeId?: string): PageHistoryEntry[];
|
package/dist/core/human/scan.js
CHANGED
|
@@ -1,153 +1,69 @@
|
|
|
1
|
-
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
-
import { basename, join } from 'node:path';
|
|
3
|
-
import { claimPath, isResolved, pageManifestPath, reviewPath } from './convention.js';
|
|
4
|
-
import { readJsonOrNull } from '../fs-utils.js';
|
|
5
|
-
import { validateReviewDescriptor } from './review-schema.js';
|
|
6
1
|
import { pageAwaitsResponse, pageOverviewActions } from './page-schema.js';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
import { ticketsRoot } from './root.js';
|
|
10
|
-
import { emitEvent } from '../events/emit.js';
|
|
11
|
-
function errorText(error) {
|
|
12
|
-
return error instanceof Error ? error.message : String(error);
|
|
13
|
-
}
|
|
14
|
-
function claimSummary(dir) {
|
|
15
|
-
const claim = readJsonOrNull(claimPath(dir));
|
|
16
|
-
if (claim === null || typeof claim.host !== 'string' || typeof claim.claimedAt !== 'string' || typeof claim.heartbeatAt !== 'string')
|
|
17
|
-
return undefined;
|
|
18
|
-
return { owner: claim.host, claimedAt: claim.claimedAt, heartbeatAt: claim.heartbeatAt };
|
|
19
|
-
}
|
|
20
|
-
function reviewSummary(dir, id) {
|
|
21
|
-
const raw = readJsonOrNull(reviewPath(dir));
|
|
22
|
-
if (raw === null)
|
|
23
|
-
return null;
|
|
24
|
-
let review;
|
|
2
|
+
import { listRequests } from './requests.js';
|
|
3
|
+
function specification(request) {
|
|
25
4
|
try {
|
|
26
|
-
|
|
5
|
+
const value = JSON.parse(request.specification_json);
|
|
6
|
+
if (typeof value !== 'object' || value === null)
|
|
7
|
+
throw new Error('not an object');
|
|
8
|
+
return value;
|
|
27
9
|
}
|
|
28
|
-
catch {
|
|
29
|
-
|
|
10
|
+
catch (error) {
|
|
11
|
+
throw new Error(`corrupt human request specification: ${request.request_id}`, { cause: error });
|
|
30
12
|
}
|
|
31
|
-
return { dir, id, kind: 'review', title: review.title, subtitle: review.subtitle, file: review.file, output: review.output, source: review.source, blockedSince: review.blockedSince, claim: claimSummary(dir) };
|
|
32
13
|
}
|
|
33
|
-
function pageSummary(
|
|
34
|
-
|
|
35
|
-
// directories hold no page at all. Gate on the manifest's presence with one
|
|
36
|
-
// stat instead of letting `parsePage` throw: a thrown ENOENT carries a V8
|
|
37
|
-
// stack capture, which over thousands of node directories is the whole cost
|
|
38
|
-
// of a scan.
|
|
39
|
-
if (!existsSync(pageManifestPath(dir)))
|
|
40
|
-
return null;
|
|
41
|
-
let manifest;
|
|
42
|
-
try {
|
|
43
|
-
manifest = parsePage(dir);
|
|
44
|
-
}
|
|
45
|
-
catch {
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
let emittedAt = manifest.source?.emittedAt;
|
|
49
|
-
if (emittedAt === undefined) {
|
|
50
|
-
try {
|
|
51
|
-
emittedAt = statSync(pageManifestPath(dir)).mtime.toISOString();
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const state = pageTicketState(dir);
|
|
14
|
+
function pageSummary(request) {
|
|
15
|
+
const manifest = specification(request);
|
|
58
16
|
const { recommendedOptions, fastAction } = pageOverviewActions(manifest);
|
|
17
|
+
const result = request.result_json === null ? null : JSON.parse(request.result_json);
|
|
18
|
+
const state = request.state !== 'settled' ? (request.settleable ? 'pending' : 'passive') : request.outcome === 'canceled' || request.outcome === 'dismissed' ? 'canceled' : 'resolved';
|
|
59
19
|
return {
|
|
60
|
-
dir,
|
|
61
|
-
id,
|
|
20
|
+
dir: request.request_dir,
|
|
21
|
+
id: request.request_id,
|
|
22
|
+
inboxTicketId: request.inbox_ticket_id,
|
|
62
23
|
kind: 'page',
|
|
63
|
-
title:
|
|
64
|
-
subtitle:
|
|
24
|
+
title: request.title,
|
|
25
|
+
subtitle: request.subtitle ?? '',
|
|
65
26
|
dialect: manifest.dialect,
|
|
66
27
|
placement: manifest.delivery.placement,
|
|
67
|
-
inbox:
|
|
28
|
+
inbox: request.inbox_listed,
|
|
68
29
|
steps: manifest.steps,
|
|
69
30
|
slotKinds: manifest.slots.map((slot) => slot.kind),
|
|
70
31
|
awaitsResponse: pageAwaitsResponse(manifest),
|
|
71
32
|
source: manifest.source ?? {},
|
|
72
|
-
emittedAt,
|
|
73
|
-
state,
|
|
33
|
+
emittedAt: typeof manifest.source?.emittedAt === 'string' ? manifest.source.emittedAt : request.created_at,
|
|
74
34
|
recommendedOptions,
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
35
|
+
...(fastAction === undefined || state !== 'pending' ? {} : { fastAction }),
|
|
36
|
+
state,
|
|
37
|
+
...(result?.kind === 'page' ? { answerDigest: result.summary.replace(/\s+/g, ' ').trim() } : {}),
|
|
78
38
|
};
|
|
79
39
|
}
|
|
80
|
-
|
|
40
|
+
function reviewSummary(request) {
|
|
41
|
+
const spec = specification(request);
|
|
42
|
+
const source = { nodeId: request.requester_node_id ?? undefined };
|
|
43
|
+
return {
|
|
44
|
+
dir: request.request_dir,
|
|
45
|
+
id: request.request_id,
|
|
46
|
+
inboxTicketId: request.inbox_ticket_id,
|
|
47
|
+
kind: 'review',
|
|
48
|
+
title: request.title,
|
|
49
|
+
subtitle: request.subtitle ?? '',
|
|
50
|
+
file: request.file ?? '',
|
|
51
|
+
output: typeof spec['output_path'] === 'string' ? spec['output_path'] : `${request.request_dir}/result.json`,
|
|
52
|
+
source,
|
|
53
|
+
blockedSince: request.created_at,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** SQL-backed inbox discovery. Files in request_dir are presentation projections only. */
|
|
81
57
|
export function scanInbox() {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
catch {
|
|
87
|
-
return [];
|
|
88
|
-
}
|
|
89
|
-
const items = [];
|
|
90
|
-
for (const entry of entries) {
|
|
91
|
-
const dir = join(ticketsRoot(), entry);
|
|
92
|
-
try {
|
|
93
|
-
if (!statSync(dir).isDirectory())
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
if (isResolved(dir))
|
|
100
|
-
continue;
|
|
101
|
-
let item;
|
|
102
|
-
try {
|
|
103
|
-
item = reviewSummary(dir, basename(dir)) ?? pageSummary(dir, basename(dir));
|
|
104
|
-
}
|
|
105
|
-
catch (error) {
|
|
106
|
-
emitEvent({ level: 'warn', event: 'human.scan.ticket_unreadable', fields: { ticket_id: basename(dir), error: errorText(error) } });
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
if (item !== null && (item.kind !== 'page' || item.inbox))
|
|
110
|
-
items.push(item);
|
|
111
|
-
}
|
|
112
|
-
return items.sort((a, b) => (b.kind === 'page' ? b.emittedAt : b.blockedSince).localeCompare(a.kind === 'page' ? a.emittedAt : a.blockedSince) || a.id.localeCompare(b.id));
|
|
58
|
+
return listRequests({ state: 'open' })
|
|
59
|
+
.filter((request) => request.inbox_listed)
|
|
60
|
+
.map((request) => request.kind === 'page' ? pageSummary(request) : reviewSummary(request))
|
|
61
|
+
.sort((a, b) => (b.kind === 'page' ? b.emittedAt : b.blockedSince).localeCompare(a.kind === 'page' ? a.emittedAt : a.blockedSince) || a.id.localeCompare(b.id));
|
|
113
62
|
}
|
|
114
|
-
/**
|
|
115
|
-
* Every page ticket — pending, resolved or canceled — oldest first, optionally
|
|
116
|
-
* narrowed to one raising node. This is the durable discovery seam for
|
|
117
|
-
* transcript placement and for browsing settled tickets, so it is a separate
|
|
118
|
-
* walk from the pending-only inbox scan and never filters on a terminal file.
|
|
119
|
-
*/
|
|
63
|
+
/** SQL-backed page history, including terminal requests. */
|
|
120
64
|
export function scanPageHistory(nodeId) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
catch {
|
|
126
|
-
return [];
|
|
127
|
-
}
|
|
128
|
-
const items = [];
|
|
129
|
-
for (const entry of entries) {
|
|
130
|
-
const dir = join(ticketsRoot(), entry);
|
|
131
|
-
try {
|
|
132
|
-
if (!statSync(dir).isDirectory())
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
continue;
|
|
137
|
-
}
|
|
138
|
-
try {
|
|
139
|
-
const summary = pageSummary(dir, basename(dir));
|
|
140
|
-
if (summary === null)
|
|
141
|
-
continue;
|
|
142
|
-
if (nodeId !== undefined && summary.source.nodeId !== nodeId)
|
|
143
|
-
continue;
|
|
144
|
-
const result = summary.state === 'resolved' ? readTicketResult(dir) : null;
|
|
145
|
-
items.push({ ...summary, ...(result?.kind === 'page' ? { answerDigest: result.summary.replace(/\s+/g, ' ').trim() } : {}) });
|
|
146
|
-
}
|
|
147
|
-
catch (error) {
|
|
148
|
-
emitEvent({ level: 'warn', event: 'human.scan.ticket_unreadable', fields: { ticket_id: basename(dir), error: errorText(error) } });
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return items.sort((a, b) => Date.parse(a.emittedAt) - Date.parse(b.emittedAt) || a.id.localeCompare(b.id));
|
|
65
|
+
return listRequests({ kind: 'page' })
|
|
66
|
+
.map(pageSummary)
|
|
67
|
+
.filter((page) => nodeId === undefined || page.source.nodeId === nodeId)
|
|
68
|
+
.sort((a, b) => Date.parse(a.emittedAt) - Date.parse(b.emittedAt) || a.id.localeCompare(b.id));
|
|
153
69
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { PageManifest, PageResponses } from './page-schema.js';
|
|
2
|
-
/** The stable one-line digest stored in
|
|
2
|
+
/** The stable one-line digest stored in the terminal request result. */
|
|
3
3
|
export declare function buildPageSummary(manifest: PageManifest, responses: PageResponses): string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describePageAnswer } from './answer.js';
|
|
2
|
-
/** The stable one-line digest stored in
|
|
2
|
+
/** The stable one-line digest stored in the terminal request result. */
|
|
3
3
|
export function buildPageSummary(manifest, responses) {
|
|
4
4
|
return describePageAnswer(manifest, responses, { completedAt: '' }).digest;
|
|
5
5
|
}
|
|
@@ -1,86 +1,28 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import { type
|
|
4
|
-
/** Strict decoder for the
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* of surfacing it to whichever caller owns the failure boundary. */
|
|
1
|
+
import type { TicketResult } from './types.js';
|
|
2
|
+
import type { PreparedPage } from './page-authoring.js';
|
|
3
|
+
import { type PageManifest, type PageResponses } from './page-schema.js';
|
|
4
|
+
/** Strict decoder for the canonical SQL terminal result. A corrupt result throws
|
|
5
|
+
* rather than being treated as absent, because that would hide data loss from
|
|
6
|
+
* the caller that owns the failure boundary. */
|
|
8
7
|
export declare function readTicketResult(dir: string): TicketResult | null;
|
|
9
|
-
|
|
10
|
-
dir: string;
|
|
11
|
-
/** The authored page source; copied into the ticket directory as its `document`. */
|
|
12
|
-
sourceFile: string;
|
|
13
|
-
source?: PageSource;
|
|
14
|
-
productKinds?: ProductPageComponents;
|
|
15
|
-
delivery?: PageDelivery;
|
|
16
|
-
}
|
|
17
|
-
/** One validated page, ready to publish into a ticket directory. */
|
|
18
|
-
export interface PreparedPage {
|
|
19
|
-
/** The authored source, verbatim, as the ticket's `document`. */
|
|
20
|
-
document: string;
|
|
21
|
-
/** The compiled CommonJS module the Gateway evaluates for JSX pages. */
|
|
22
|
-
module?: string;
|
|
23
|
-
manifest: PageManifest;
|
|
24
|
-
}
|
|
25
|
-
export interface PreparePageSourceOptions {
|
|
26
|
-
/** `jsx` carries .tsx semantics; `html` is a complete document. */
|
|
27
|
-
dialect: 'jsx' | 'html';
|
|
28
|
-
/** The complete authored page text, inline. */
|
|
29
|
-
document: string;
|
|
30
|
-
source?: PageSource;
|
|
31
|
-
productKinds?: ProductPageComponents;
|
|
32
|
-
delivery?: PageDelivery;
|
|
33
|
-
}
|
|
34
|
-
/** Validate one authored page document into publishable form. The single
|
|
35
|
-
* validation path: `preparePage` reads a file and lands here, and a
|
|
36
|
-
* programmatic request supplies the same text inline. */
|
|
37
|
-
export declare function preparePageSource(opts: PreparePageSourceOptions): PreparedPage;
|
|
38
|
-
/** Validate one authored page source file into publishable form. Reads only: a
|
|
39
|
-
* page that fails authoring leaves nothing behind, so a caller that must create
|
|
40
|
-
* a bridge node prepares first and creates it only once the page is known good.
|
|
41
|
-
* The source is read exactly once, so the published document is the same bytes
|
|
42
|
-
* the manifest was derived from even if the file changes underneath. */
|
|
43
|
-
export declare function preparePage(opts: Omit<SubmitPageOptions, 'dir'>): PreparedPage;
|
|
44
|
-
/** Publish one prepared page ticket: the authored source plus its manifest.
|
|
45
|
-
* These writes are overwrites. A ticket's REQUEST is whatever page the agent
|
|
46
|
-
* currently wants on screen, and `crtr human send --replace` revises it in
|
|
47
|
-
* place while the human watches; only the ANSWER is write-once, which
|
|
48
|
-
* `publishJsonExclusive` still guarantees for response.json alone. The manifest
|
|
49
|
-
* switches after all new generation files exist, then stale media is removed. */
|
|
8
|
+
/** Publish an immutable revision, then atomically select it with its matching specification. */
|
|
50
9
|
export declare function publishPage(dir: string, prepared: PreparedPage): {
|
|
51
10
|
id: string;
|
|
52
11
|
dir: string;
|
|
53
12
|
kind: 'page';
|
|
54
13
|
manifest: PageManifest;
|
|
55
14
|
};
|
|
56
|
-
/**
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
kind: 'page';
|
|
62
|
-
manifest: PageManifest;
|
|
63
|
-
};
|
|
64
|
-
export interface SubmitReviewOptions {
|
|
65
|
-
dir: string;
|
|
66
|
-
review: Omit<ReviewDescriptor, 'schema' | 'file' | 'output' | 'blockedSince'> & {
|
|
67
|
-
file: string;
|
|
68
|
-
output?: string;
|
|
69
|
-
blockedSince?: string;
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
export declare function submitReview(opts: SubmitReviewOptions): {
|
|
73
|
-
id: string;
|
|
74
|
-
dir: string;
|
|
75
|
-
kind: 'review';
|
|
76
|
-
};
|
|
77
|
-
/** Validate a page resolution against its canonical ticket before claim takeover. */
|
|
15
|
+
/** Resolve a stable request directory to the SQL-selected immutable page revision. */
|
|
16
|
+
export declare function selectedPageDir(dir: string): string;
|
|
17
|
+
/** Validate a final page response against its ticket's reply contract. */
|
|
18
|
+
export declare function validateFinalPageResponses(manifest: PageManifest, responses: unknown): PageResponses;
|
|
19
|
+
/** Validate a page resolution against its SQL-selected immutable revision. */
|
|
78
20
|
export declare function validatePageTicketResponses(dir: string, responses: unknown): PageResponses;
|
|
79
|
-
/**
|
|
21
|
+
/** Page state is derived from the SQL request row. */
|
|
80
22
|
export declare function pageTicketState(dir: string): 'pending' | 'resolved' | 'canceled' | 'passive';
|
|
81
23
|
/** Autosave partial page work. Every supplied response is validated; omitted components are permitted. */
|
|
82
24
|
export declare function writePageProgress(dir: string, responses: unknown): PageResponses;
|
|
83
|
-
/** Saved partial work, or null when none exists.
|
|
25
|
+
/** Saved partial work from the request row, or null when none exists. */
|
|
84
26
|
export declare function readPageProgress(dir: string): PageResponses | null;
|
|
85
27
|
export interface PageTicket {
|
|
86
28
|
dir: string;
|
|
@@ -97,32 +39,30 @@ export interface PageTicket {
|
|
|
97
39
|
export declare function readPageTicket(dir: string): PageTicket;
|
|
98
40
|
export interface CompletePageOptions {
|
|
99
41
|
completedAt?: string;
|
|
100
|
-
/** Recorded when an authorized programmatic writer answered instead of a person. */
|
|
101
42
|
actor?: string;
|
|
102
43
|
}
|
|
103
|
-
|
|
44
|
+
/** Page settlement must go through daemon/human/finish, which records its SQL result and direct obligations together. */
|
|
45
|
+
export declare function completePage(_dir: string, _responses: unknown, _claimToken: string, _opts?: CompletePageOptions): {
|
|
104
46
|
won: boolean;
|
|
105
47
|
result: TicketResult;
|
|
106
48
|
};
|
|
107
|
-
/**
|
|
108
|
-
export declare function takeoverAndCompletePage(
|
|
49
|
+
/** Page settlement must go through daemon/human/finish, which records its SQL result and direct obligations together. */
|
|
50
|
+
export declare function takeoverAndCompletePage(_dir: string, _responses: unknown, _owner: {
|
|
109
51
|
host: string;
|
|
110
52
|
pid: number;
|
|
111
|
-
},
|
|
53
|
+
}, _opts?: CompletePageOptions): {
|
|
112
54
|
won: boolean;
|
|
113
55
|
result: TicketResult;
|
|
114
56
|
};
|
|
115
57
|
export interface CancelTicketOptions {
|
|
116
58
|
reason?: string;
|
|
117
59
|
actor?: string;
|
|
118
|
-
/** The recipient closing it writes `dismissed`; the requester withdrawing it
|
|
119
|
-
* writes `canceled`. Omitted where the caller is neither. */
|
|
120
60
|
disposition?: 'canceled' | 'dismissed';
|
|
121
61
|
}
|
|
122
|
-
/**
|
|
123
|
-
export declare function cancelTicket(
|
|
62
|
+
/** Page settlement must go through daemon/human/finish, which records its SQL result and direct obligations together. */
|
|
63
|
+
export declare function cancelTicket(_dir: string, _opts?: CancelTicketOptions): {
|
|
124
64
|
status: 'canceled' | 'already_resolved';
|
|
125
65
|
result: TicketResult;
|
|
126
66
|
};
|
|
127
|
-
/**
|
|
128
|
-
export declare function projectReviewOutput(
|
|
67
|
+
/** Review projection is performed by daemon/review/finish after its SQL terminal transition. */
|
|
68
|
+
export declare function projectReviewOutput(_dir: string): 'projected' | 'not_a_review' | 'no_result';
|