@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,188 +1,71 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { bindTicketReplyRoute } from '../human/convention.js';
|
|
6
|
-
import { ticketDir } from '../human/root.js';
|
|
7
|
-
import { submitReview } from '../human/tickets.js';
|
|
8
|
-
import { NodeIdConflictError, spawnNode } from '../runtime/nodes.js';
|
|
9
|
-
import { loadProfileManifest } from '../profiles/manifest.js';
|
|
10
|
-
import { transition } from '../runtime/lifecycle.js';
|
|
2
|
+
import { getNode } from '../canvas/index.js';
|
|
3
|
+
import { openRequest, cancelBindingRequest, getRequest } from '../human/requests.js';
|
|
4
|
+
import { NodeIdConflictError } from '../runtime/nodes.js';
|
|
11
5
|
import { reviveNode } from '../runtime/revive.js';
|
|
12
6
|
import { awaitCompanionBind, spawnReviewCompanion } from './companion.js';
|
|
13
7
|
import { signalReviewActivity } from './signal.js';
|
|
14
|
-
import { bindBridgeNode, getReview, openReviewRow } from './store.js';
|
|
15
8
|
import { COMPANION_BIND_DEADLINE_MS, ReviewOperationError } from './types.js';
|
|
16
|
-
function
|
|
17
|
-
|
|
9
|
+
function requireBinding(reviewId) {
|
|
10
|
+
const request = getRequest(reviewId);
|
|
11
|
+
if (request === null || request.kind !== 'review')
|
|
12
|
+
throw new ReviewOperationError('unknown_review', 'review was not found', { received: reviewId });
|
|
13
|
+
return request;
|
|
18
14
|
}
|
|
19
|
-
function
|
|
20
|
-
return new ReviewOperationError('review_origin_missing', 'review origin was not found', {
|
|
21
|
-
origin_node_id: originNodeId,
|
|
22
|
-
reason: 'origin_missing',
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
function companionUnbound(reviewId, waitedMs) {
|
|
26
|
-
return new ReviewOperationError('review_companion_unbound', 'review companion did not bind in time', {
|
|
27
|
-
review_id: reviewId,
|
|
28
|
-
waited_ms: waitedMs,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
function bridgeUnsubscribed(review, bridgeNodeId) {
|
|
32
|
-
return new ReviewOperationError('review_bridge_unsubscribed', 'review bridge is not subscribed to its origin', {
|
|
33
|
-
review_id: review.review_id,
|
|
34
|
-
bridge_node_id: bridgeNodeId,
|
|
35
|
-
origin_node_id: review.origin_node_id,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
/** Cancel only a binding whose immutable branch has disappeared. No later pass may recapture it. */
|
|
39
|
-
function cancelLostBinding(review) {
|
|
40
|
-
const canceled = withCanvasWrite((db) => db.prepare(`
|
|
41
|
-
UPDATE reviews
|
|
42
|
-
SET state = 'canceled', canceled_at = ?, cancel_reason = 'branch_lost', cancel_actor = NULL
|
|
43
|
-
WHERE review_id = ? AND state = 'binding'
|
|
44
|
-
`).run(new Date().toISOString(), review.review_id).changes > 0);
|
|
45
|
-
if (canceled)
|
|
46
|
-
signalReviewActivity();
|
|
47
|
-
}
|
|
48
|
-
function requireReview(reviewId) {
|
|
49
|
-
const review = getReview(reviewId);
|
|
50
|
-
if (review === null)
|
|
51
|
-
throw unknownReview(reviewId);
|
|
52
|
-
return review;
|
|
53
|
-
}
|
|
54
|
-
function requireOrigin(review) {
|
|
55
|
-
const origin = getNode(review.origin_node_id);
|
|
56
|
-
if (origin === null)
|
|
57
|
-
throw originMissing(review.origin_node_id);
|
|
58
|
-
return origin;
|
|
59
|
-
}
|
|
60
|
-
async function spawnCompanion(review) {
|
|
61
|
-
if (getNode(review.companion_node_id) !== null)
|
|
62
|
-
return;
|
|
63
|
-
const origin = requireOrigin(review);
|
|
15
|
+
function specification(request) {
|
|
64
16
|
try {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
branchFile: review.branch_file,
|
|
70
|
-
targetFile: review.file,
|
|
71
|
-
modelSpec: review.model_spec,
|
|
72
|
-
cwd: origin.cwd,
|
|
73
|
-
profileId: origin.profile_id ?? null,
|
|
74
|
-
});
|
|
17
|
+
const value = JSON.parse(request.specification_json);
|
|
18
|
+
if (typeof value !== 'object' || value === null)
|
|
19
|
+
throw new Error('not an object');
|
|
20
|
+
return value;
|
|
75
21
|
}
|
|
76
22
|
catch (error) {
|
|
77
|
-
|
|
78
|
-
throw error;
|
|
23
|
+
throw new Error(`corrupt review specification: ${request.request_id}`, { cause: error });
|
|
79
24
|
}
|
|
80
25
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
if (
|
|
94
|
-
throw
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
cwd: origin.cwd,
|
|
109
|
-
profile_id: origin.profile_id ?? null,
|
|
110
|
-
name: 'human-review',
|
|
111
|
-
});
|
|
112
|
-
bindTicketReplyRoute(ticketDir(bridge.node_id), bridge.node_id);
|
|
113
|
-
if (!bindBridgeNode(current.review_id, bridge.node_id)) {
|
|
114
|
-
cancelInvisibleBridge(bridge.node_id);
|
|
115
|
-
current = requireReview(current.review_id);
|
|
26
|
+
/** Finish a committed binding without bridge creation or directory descriptor publication. */
|
|
27
|
+
export async function realizeReview(reviewId) {
|
|
28
|
+
let request = requireBinding(reviewId);
|
|
29
|
+
if (request.state !== 'binding')
|
|
30
|
+
return request;
|
|
31
|
+
const spec = specification(request);
|
|
32
|
+
const branchFile = spec['branch_file'];
|
|
33
|
+
if (typeof branchFile !== 'string' || !existsSync(branchFile)) {
|
|
34
|
+
if (cancelBindingRequest(request.request_id, new Date().toISOString(), 'branch_lost'))
|
|
35
|
+
signalReviewActivity();
|
|
36
|
+
throw new ReviewOperationError('branch_lost', 'review branch was lost before realization', { review_id: request.request_id });
|
|
37
|
+
}
|
|
38
|
+
if (request.file === null || request.requester_node_id === null || request.companion_node_id === null) {
|
|
39
|
+
throw new Error(`binding review has incomplete identity: ${request.request_id}`);
|
|
40
|
+
}
|
|
41
|
+
const origin = getNode(request.requester_node_id);
|
|
42
|
+
if (origin === null)
|
|
43
|
+
throw new ReviewOperationError('review_origin_missing', 'review origin was not found', { origin_node_id: request.requester_node_id });
|
|
44
|
+
if (getNode(request.companion_node_id) === null) {
|
|
45
|
+
const modelSpec = spec['model_spec'];
|
|
46
|
+
if (typeof modelSpec !== 'string')
|
|
47
|
+
throw new Error(`binding review has no model spec: ${request.request_id}`);
|
|
48
|
+
try {
|
|
49
|
+
await spawnReviewCompanion({
|
|
50
|
+
nodeId: request.companion_node_id, reviewId: request.request_id, originNodeId: request.requester_node_id,
|
|
51
|
+
branchFile, targetFile: request.file, modelSpec, cwd: origin.cwd, profileId: origin.profile_id ?? null,
|
|
52
|
+
});
|
|
116
53
|
}
|
|
117
|
-
|
|
118
|
-
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (!(error instanceof NodeIdConflictError))
|
|
56
|
+
throw error;
|
|
119
57
|
}
|
|
120
58
|
}
|
|
121
|
-
|
|
122
|
-
throw bridgeUnsubscribed(current, '');
|
|
123
|
-
ensureBridgeSubscription(current, current.bridge_node_id);
|
|
124
|
-
return current;
|
|
125
|
-
}
|
|
126
|
-
function publishTicket(review) {
|
|
127
|
-
if (review.bridge_node_id === null)
|
|
128
|
-
throw bridgeUnsubscribed(review, '');
|
|
129
|
-
if (review.subtitle === null)
|
|
130
|
-
throw new Error(`ticket review has no subtitle: ${review.review_id}`);
|
|
131
|
-
const origin = requireOrigin(review);
|
|
132
|
-
const profileName = origin.profile_id == null
|
|
133
|
-
? undefined
|
|
134
|
-
: loadProfileManifest(origin.profile_id).manifest.name;
|
|
135
|
-
submitReview({
|
|
136
|
-
dir: ticketDir(review.bridge_node_id),
|
|
137
|
-
review: {
|
|
138
|
-
file: review.file,
|
|
139
|
-
...(review.output_path !== null ? { output: review.output_path } : {}),
|
|
140
|
-
title: basename(review.file),
|
|
141
|
-
subtitle: review.subtitle,
|
|
142
|
-
source: {
|
|
143
|
-
nodeId: review.origin_node_id,
|
|
144
|
-
...(profileName === undefined ? {} : { profileName }),
|
|
145
|
-
},
|
|
146
|
-
blockedSince: review.created,
|
|
147
|
-
},
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Finish a committed binding without ever recapturing its origin. Each step is
|
|
152
|
-
* safe to repeat after a crash; review.json is the final visibility switch.
|
|
153
|
-
*/
|
|
154
|
-
export async function realizeReview(reviewId) {
|
|
155
|
-
let review = requireReview(reviewId);
|
|
156
|
-
if (review.state !== 'binding')
|
|
157
|
-
return review;
|
|
158
|
-
if (!existsSync(review.branch_file)) {
|
|
159
|
-
cancelLostBinding(review);
|
|
160
|
-
throw new ReviewOperationError('branch_lost', 'review branch was lost before realization', { review_id: review.review_id });
|
|
161
|
-
}
|
|
162
|
-
// R1: creation consumes only the persisted coordinates and preallocated id.
|
|
163
|
-
await spawnCompanion(review);
|
|
164
|
-
// R2: ticket bridge birth and route assertion precede all public exposure.
|
|
165
|
-
review = await realizeBridge(requireReview(reviewId));
|
|
166
|
-
if (review.state !== 'binding')
|
|
167
|
-
return review;
|
|
168
|
-
// R3: only realization owns this initial launch/retry.
|
|
169
|
-
const companion = getNode(review.companion_node_id);
|
|
59
|
+
const companion = getNode(request.companion_node_id);
|
|
170
60
|
if (companion === null)
|
|
171
|
-
throw
|
|
172
|
-
// Realization is bounded by the bind deadline below, which only a live broker
|
|
173
|
-
// can meet: refuse at the cap rather than freeze into a certain timeout.
|
|
61
|
+
throw new ReviewOperationError('review_companion_unbound', 'review companion was not created', { review_id: request.request_id });
|
|
174
62
|
if (companion.pi_session_id === null)
|
|
175
63
|
await reviveNode(companion.node_id, { resume: false, capacity: 'refuse' });
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
throw companionUnbound(review.review_id, COMPANION_BIND_DEADLINE_MS);
|
|
64
|
+
if (!await awaitCompanionBind(request.companion_node_id, COMPANION_BIND_DEADLINE_MS)) {
|
|
65
|
+
throw new ReviewOperationError('review_companion_unbound', 'review companion did not bind in time', { review_id: request.request_id, waited_ms: COMPANION_BIND_DEADLINE_MS });
|
|
179
66
|
}
|
|
180
|
-
|
|
181
|
-
// projection is deliberately under-exposed and retried by the review lane.
|
|
182
|
-
if (openReviewRow(review.review_id, new Date().toISOString())) {
|
|
67
|
+
if (openRequest(request.request_id, new Date().toISOString()))
|
|
183
68
|
signalReviewActivity();
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
return requireReview(reviewId);
|
|
69
|
+
request = requireBinding(reviewId);
|
|
70
|
+
return request;
|
|
188
71
|
}
|
|
@@ -56,7 +56,7 @@ function appendReanchorEvent(db, args) {
|
|
|
56
56
|
/** Atomically replace every live review coordinate with ranges expressed against the current source. */
|
|
57
57
|
export function applyRangeBatch(args) {
|
|
58
58
|
const result = withCanvasWrite((db) => {
|
|
59
|
-
const review = db.prepare(
|
|
59
|
+
const review = db.prepare("SELECT file, anchor_base_sha256 FROM human_requests WHERE request_id = ? AND kind = 'review' AND state = 'open'").get(args.review_id);
|
|
60
60
|
if (review === undefined) {
|
|
61
61
|
throw new ReviewOperationError('unknown_review', 'review was not found', { received: args.review_id });
|
|
62
62
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type HumanRequestRecord } from '../human/requests.js';
|
|
2
|
+
import { type NewReviewRow, type ReviewOriginKind } from './types.js';
|
|
2
3
|
export interface StageReviewArgs {
|
|
3
4
|
origin_kind: ReviewOriginKind;
|
|
4
5
|
origin_node_id: string;
|
|
@@ -9,7 +10,7 @@ export interface StageReviewArgs {
|
|
|
9
10
|
}
|
|
10
11
|
/** A persisted winner needs realization, while a new stage has unreferenced filesystem state to commit or discard. */
|
|
11
12
|
export type StagedReview = {
|
|
12
|
-
existing:
|
|
13
|
+
existing: HumanRequestRecord;
|
|
13
14
|
row?: never;
|
|
14
15
|
review_dir?: never;
|
|
15
16
|
} | {
|
|
@@ -6,7 +6,7 @@ import { ensureReviewDir, reviewBranchPath, reviewDir } from '../canvas/paths.js
|
|
|
6
6
|
import { checkReviewableFile } from '../human/visible-paths.js';
|
|
7
7
|
import { newNodeId } from '../runtime/nodes.js';
|
|
8
8
|
import { captureOrigin, materializeReviewBranch } from './companion.js';
|
|
9
|
-
import {
|
|
9
|
+
import { getRequestByIdempotencyKey } from '../human/requests.js';
|
|
10
10
|
import { ReviewOperationError, } from './types.js';
|
|
11
11
|
function targetError(file, reason) {
|
|
12
12
|
return new ReviewOperationError('review_target_unreviewable', 'review target cannot be staged', {
|
|
@@ -114,7 +114,7 @@ export function discardStaging(reviewId) {
|
|
|
114
114
|
* canvas node or review row. The caller alone commits or discards this stage.
|
|
115
115
|
*/
|
|
116
116
|
export async function stageReview(args) {
|
|
117
|
-
const existing =
|
|
117
|
+
const existing = getRequestByIdempotencyKey(args.idempotency_key);
|
|
118
118
|
if (existing !== null)
|
|
119
119
|
return { existing };
|
|
120
120
|
if (getNode(args.origin_node_id) === null) {
|
|
@@ -140,7 +140,6 @@ export async function stageReview(args) {
|
|
|
140
140
|
idempotency_key: args.idempotency_key,
|
|
141
141
|
origin_kind: args.origin_kind,
|
|
142
142
|
origin_node_id: args.origin_node_id,
|
|
143
|
-
bridge_node_id: null,
|
|
144
143
|
companion_node_id: companionNodeId,
|
|
145
144
|
review_dir: reviewDir(reviewId),
|
|
146
145
|
file,
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
-
import { type
|
|
3
|
-
/** Fields written when an open review is conditionally approved. */
|
|
2
|
+
import { type ReviewRecord, type ReviewState } from './types.js';
|
|
4
3
|
export interface ApproveReviewArgs {
|
|
5
4
|
review_id: string;
|
|
6
5
|
approved_at: string;
|
|
@@ -10,38 +9,21 @@ export interface ApproveReviewArgs {
|
|
|
10
9
|
comments_unresolved: number;
|
|
11
10
|
result_json: string;
|
|
12
11
|
}
|
|
13
|
-
export declare function mintReviewId(): string;
|
|
14
|
-
/** Atomically claim the idempotency key, without publishing any non-SQLite state. */
|
|
15
|
-
export declare function commitBindingReview(row: NewReviewRow): {
|
|
16
|
-
review_id: string;
|
|
17
|
-
won: boolean;
|
|
18
|
-
};
|
|
19
12
|
export declare function getReview(reviewId: string): ReviewRecord | null;
|
|
20
|
-
/** The review `reviewId` names, for a caller that cannot proceed without one.
|
|
21
|
-
* A `binding` row is still mid-creation and reads as absent. */
|
|
22
13
|
export declare function requireVisibleReview(reviewId: string): ReviewRecord;
|
|
23
14
|
export declare function getReviewByIdempotencyKey(key: string): ReviewRecord | null;
|
|
24
15
|
export declare function getReviewByCompanion(nodeId: string): ReviewRecord | null;
|
|
25
|
-
export declare function getReviewByBridge(nodeId: string): ReviewRecord | null;
|
|
26
16
|
export declare function listReviews(filter: {
|
|
27
17
|
state?: ReviewState;
|
|
28
18
|
origin_node_id?: string;
|
|
29
19
|
file?: string;
|
|
30
20
|
}): ReviewRecord[];
|
|
31
|
-
/** Review ids whose immutable origin is one of `nodeIds`, including binding
|
|
32
|
-
* rows that normal user-facing review listings intentionally hide. */
|
|
33
21
|
export declare function reviewIdsByOriginNodes(nodeIds: readonly string[]): string[];
|
|
34
|
-
/** Delete review audit state for the selected origins in dependency order.
|
|
35
|
-
* Filesystem cleanup is deliberately left to the daemon lifecycle owner. */
|
|
36
22
|
export declare function deleteReviewsByOriginNodes(nodeIds: readonly string[]): string[];
|
|
37
23
|
export declare function listBindingReviews(): ReviewRecord[];
|
|
38
|
-
/** Open reviews the human has already submitted, still waiting on their companion. */
|
|
39
24
|
export declare function listSubmitRequestedReviews(): ReviewRecord[];
|
|
40
25
|
export declare function listUnprojectedTerminalReviews(): ReviewRecord[];
|
|
41
|
-
export declare function bindBridgeNode(reviewId: string, bridgeNodeId: string): boolean;
|
|
42
26
|
export declare function openReviewRow(reviewId: string, openedAt: string): boolean;
|
|
43
|
-
/** Record the human's submit intent on a review that stays open meanwhile.
|
|
44
|
-
* False when the review already left `open` or already carries an intent. */
|
|
45
27
|
export declare function requestReviewSubmit(reviewId: string, at: string): boolean;
|
|
46
28
|
export declare function approveReviewLocked(db: DatabaseSync, args: ApproveReviewArgs): boolean;
|
|
47
29
|
export declare function cancelReviewRow(reviewId: string, args: {
|
|
@@ -51,8 +33,8 @@ export declare function cancelReviewRow(reviewId: string, args: {
|
|
|
51
33
|
}): boolean;
|
|
52
34
|
export declare function markProjected(reviewId: string, at: string): void;
|
|
53
35
|
export declare function markProjectionError(reviewId: string, error: string): void;
|
|
54
|
-
export declare function markDelivered(
|
|
55
|
-
export declare function markDeliveryError(
|
|
36
|
+
export declare function markDelivered(_reviewId: string, _receipt: string | null, _at: string): void;
|
|
37
|
+
export declare function markDeliveryError(_reviewId: string, _error: string): void;
|
|
56
38
|
export declare function readAnchorBase(reviewId: string): {
|
|
57
39
|
bytes: Buffer;
|
|
58
40
|
sha256: string;
|