@north-light/crouter 0.3.312 → 0.3.314
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 +757 -746
- 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/fresh-home-commands.test.js +49 -0
- 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/command.js +11 -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 +18 -0
- package/dist/core/scoped-state/db.js +135 -0
- package/dist/core/scoped-state/migrate.d.ts +8 -0
- package/dist/core/scoped-state/migrate.js +181 -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.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
- /package/dist/core/__tests__/{human-deliver.test.d.ts → integration/fresh-home-commands.test.d.ts} +0 -0
|
@@ -22,10 +22,14 @@ import { headlessBrokerHost } from '../../runtime/host.js';
|
|
|
22
22
|
import { reviveNode } from '../../runtime/revive.js';
|
|
23
23
|
import { bindTestFleet } from '../helpers/fleet.js';
|
|
24
24
|
import { resetFleetForTests } from '../../runtime/fleet.js';
|
|
25
|
-
import { closeDb } from '../../canvas/db.js';
|
|
25
|
+
import { closeDb, migrate, openDb } from '../../canvas/db.js';
|
|
26
|
+
import { closeScopedStores } from '../../scoped-state/db.js';
|
|
27
|
+
import { initializeFreshScopedStore } from '../../scoped-state/migrate.js';
|
|
28
|
+
import { userScopeRoot } from '../../scope.js';
|
|
26
29
|
let home;
|
|
27
30
|
let remoteDir;
|
|
28
31
|
let sourceDir;
|
|
32
|
+
let previousHome;
|
|
29
33
|
const scratchRoot = join(homedir(), '.crouter', 'canvas', 'scratch');
|
|
30
34
|
function run(args, cwd) {
|
|
31
35
|
const res = gitSync(args, cwd);
|
|
@@ -53,6 +57,8 @@ before(() => {
|
|
|
53
57
|
// directory. Every path-ownership check must judge identity, not spelling.
|
|
54
58
|
mkdirSync(scratchRoot, { recursive: true });
|
|
55
59
|
home = mkdtempSync(join(scratchRoot, 'crtr-worktree-home-'));
|
|
60
|
+
previousHome = process.env['HOME'];
|
|
61
|
+
process.env['HOME'] = home;
|
|
56
62
|
process.env['CRTR_HOME'] = home;
|
|
57
63
|
// Bare "remote" wired up as origin so the test can prove landing NEVER pushes
|
|
58
64
|
// to it (managed worktrees are based on and land onto local `main` only).
|
|
@@ -70,15 +76,23 @@ before(() => {
|
|
|
70
76
|
});
|
|
71
77
|
beforeEach(() => {
|
|
72
78
|
closeDb();
|
|
79
|
+
closeScopedStores();
|
|
73
80
|
rmSync(home, { recursive: true, force: true });
|
|
74
81
|
process.env['CRTR_HOME'] = home;
|
|
82
|
+
migrate(openDb());
|
|
83
|
+
initializeFreshScopedStore({ kind: 'user', root: userScopeRoot() });
|
|
75
84
|
});
|
|
76
85
|
after(() => {
|
|
77
86
|
closeDb();
|
|
87
|
+
closeScopedStores();
|
|
78
88
|
rmSync(home, { recursive: true, force: true });
|
|
79
89
|
rmSync(remoteDir, { recursive: true, force: true });
|
|
80
90
|
rmSync(sourceDir, { recursive: true, force: true });
|
|
81
91
|
delete process.env['CRTR_HOME'];
|
|
92
|
+
if (previousHome === undefined)
|
|
93
|
+
delete process.env['HOME'];
|
|
94
|
+
else
|
|
95
|
+
process.env['HOME'] = previousHome;
|
|
82
96
|
});
|
|
83
97
|
// Fix B (#327/#333): a managed worktree with zero commits ahead of its base
|
|
84
98
|
// and nothing uncommitted has nothing to land — push-final's auto-drop path
|
|
@@ -10,9 +10,11 @@ import { tmpdir } from 'node:os';
|
|
|
10
10
|
import { join } from 'node:path';
|
|
11
11
|
import { createNode, getNode, subscribe } from '../canvas/canvas.js';
|
|
12
12
|
import { reportsDir } from '../canvas/paths.js';
|
|
13
|
-
import { closeDb } from '../canvas/db.js';
|
|
13
|
+
import { closeDb, migrate, openDb } from '../canvas/db.js';
|
|
14
|
+
import { acknowledgeNodeMail, claimNodeMail } from '../canvas/deliveries.js';
|
|
15
|
+
import { beginExecution } from '../canvas/executions.js';
|
|
14
16
|
import { buildReviveKickoff, clearYieldMessage, drainBearings, readYieldMessage, writeYieldMessage, yieldMessagePath, } from '../runtime/kickoff.js';
|
|
15
|
-
import {
|
|
17
|
+
import { enqueueNodeMail } from '../feed/messages.js';
|
|
16
18
|
import { appendSituationalContext } from '../runtime/situational-context.js';
|
|
17
19
|
import { buildContextBearings as buildContextIntro } from '../runtime/bearings.js';
|
|
18
20
|
let home;
|
|
@@ -36,6 +38,7 @@ before(() => {
|
|
|
36
38
|
beforeEach(() => {
|
|
37
39
|
closeDb();
|
|
38
40
|
rmSync(home, { recursive: true, force: true });
|
|
41
|
+
migrate(openDb());
|
|
39
42
|
});
|
|
40
43
|
after(() => {
|
|
41
44
|
closeDb();
|
|
@@ -45,18 +48,23 @@ after(() => {
|
|
|
45
48
|
test('drainBearings preserves the yield note until explicit boot confirmation', () => {
|
|
46
49
|
const id = 'n1';
|
|
47
50
|
const meta = createNode(node(id));
|
|
51
|
+
const executionId = beginExecution(id, { daemonEpoch: 'test' });
|
|
48
52
|
writeYieldMessage(id, 'on wake, finish step 3');
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const b1 = drainBearings(meta);
|
|
53
|
+
enqueueNodeMail(id, { senderNodeId: 'w1', kind: 'update', label: 'first', bodyRef: '/tmp/a.md', urgency: 'normal', wake: 1 });
|
|
54
|
+
enqueueNodeMail(id, { senderNodeId: 'w1', kind: 'update', label: 'second', bodyRef: '/tmp/b.md', urgency: 'normal', wake: 1 });
|
|
55
|
+
const b1 = drainBearings(meta, executionId);
|
|
52
56
|
assert.equal(b1.yieldMsg?.trim(), 'on wake, finish step 3');
|
|
53
57
|
assert.ok(b1.unreadDigest !== null && b1.unreadDigest.length > 0);
|
|
54
58
|
assert.equal(existsSync(yieldMessagePath(id)), true, 'yield note remains pending before confirmation');
|
|
55
59
|
assert.equal(readYieldMessage(id), 'on wake, finish step 3', 'reader sees the same persisted note');
|
|
56
|
-
|
|
57
|
-
const
|
|
60
|
+
const claim = claimNodeMail(id, executionId, 'wake');
|
|
61
|
+
const receipt = acknowledgeNodeMail(id, executionId, claim.deliveries.map((delivery) => ({
|
|
62
|
+
deliveryId: delivery.deliveryId, attempts: delivery.attempts, disposition: 'acknowledged',
|
|
63
|
+
})));
|
|
64
|
+
assert.deepEqual(receipt.results.map((result) => result.outcome), ['acknowledged', 'acknowledged']);
|
|
65
|
+
const b2 = drainBearings(meta, executionId);
|
|
58
66
|
assert.equal(b2.yieldMsg, 'on wake, finish step 3', 'a failed launch can read the same note again');
|
|
59
|
-
assert.equal(b2.unreadDigest, null, '
|
|
67
|
+
assert.equal(b2.unreadDigest, null, 'settled deliveries do not return to the next launch');
|
|
60
68
|
clearYieldMessage(id);
|
|
61
69
|
clearYieldMessage(id);
|
|
62
70
|
assert.equal(readYieldMessage(id), null, 'confirmation clear is idempotent');
|
|
@@ -65,30 +73,19 @@ test('drainBearings preserves the yield note until explicit boot confirmation',
|
|
|
65
73
|
test('fresh kickoff keeps each inbox card directly before its own message', () => {
|
|
66
74
|
const id = 'ordered-cards';
|
|
67
75
|
const meta = createNode(node(id));
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
kind: '
|
|
72
|
-
label: 'FIRST-BODY',
|
|
73
|
-
data: { body: 'FIRST-BODY', cards: ['<runtime kind="test-card">FIRST-CARD</runtime>'] },
|
|
76
|
+
const executionId = beginExecution(id, { daemonEpoch: 'test' });
|
|
77
|
+
enqueueNodeMail(id, {
|
|
78
|
+
senderNodeId: 'sender', kind: 'message', label: 'FIRST-BODY',
|
|
79
|
+
bodyJson: { body: 'FIRST-BODY', cards: ['<runtime kind="test-card">FIRST-CARD</runtime>'] }, urgency: 'normal', wake: 1,
|
|
74
80
|
});
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
kind: 'message',
|
|
79
|
-
label: 'SECOND-BODY',
|
|
80
|
-
data: { body: 'SECOND-BODY', cards: ['<runtime kind="test-card">SECOND-CARD</runtime>'] },
|
|
81
|
+
enqueueNodeMail(id, {
|
|
82
|
+
senderNodeId: 'sender', kind: 'message', label: 'SECOND-BODY',
|
|
83
|
+
bodyJson: { body: 'SECOND-BODY', cards: ['<runtime kind="test-card">SECOND-CARD</runtime>'] }, urgency: 'normal', wake: 1,
|
|
81
84
|
});
|
|
82
85
|
for (const body of ['GROUPED-BODY-1', 'GROUPED-BODY-2', 'GROUPED-BODY-3']) {
|
|
83
|
-
|
|
84
|
-
from: 'card-free-sender',
|
|
85
|
-
tier: 'normal',
|
|
86
|
-
kind: 'message',
|
|
87
|
-
label: body,
|
|
88
|
-
data: { body },
|
|
89
|
-
});
|
|
86
|
+
enqueueNodeMail(id, { senderNodeId: 'card-free-sender', kind: 'message', label: body, bodyJson: { body }, urgency: 'normal', wake: 1 });
|
|
90
87
|
}
|
|
91
|
-
const kickoff = buildReviveKickoff(meta, drainBearings(meta));
|
|
88
|
+
const kickoff = buildReviveKickoff(meta, drainBearings(meta, executionId));
|
|
92
89
|
const firstCard = kickoff.indexOf('FIRST-CARD');
|
|
93
90
|
const firstBody = kickoff.indexOf('FIRST-BODY');
|
|
94
91
|
const secondCard = kickoff.indexOf('SECOND-CARD');
|
|
@@ -109,7 +106,7 @@ test('drainBearings leaves persona drift pending until the replacement context e
|
|
|
109
106
|
mode: 'orchestrator',
|
|
110
107
|
persona_ack: oldPersona,
|
|
111
108
|
}));
|
|
112
|
-
const bearings = drainBearings(meta);
|
|
109
|
+
const bearings = drainBearings(meta, beginExecution(meta.node_id, { daemonEpoch: 'test' }));
|
|
113
110
|
assert.match(bearings.driftGuidance ?? '', /ORCHESTRATOR/);
|
|
114
111
|
assert.deepEqual(getNode(meta.node_id)?.persona_ack, oldPersona, 'pre-session_start launch work cannot acknowledge the drift');
|
|
115
112
|
});
|
|
@@ -117,7 +114,7 @@ test('the feed block frames awaiting workers as alive + auto-waking, so a fresh
|
|
|
117
114
|
const parent = createNode(node('p1'));
|
|
118
115
|
const child = createNode(node('c1')); // status 'active' by default
|
|
119
116
|
subscribe(parent.node_id, child.node_id); // parent awaits child
|
|
120
|
-
const msg = buildReviveKickoff(parent, drainBearings(parent));
|
|
117
|
+
const msg = buildReviveKickoff(parent, drainBearings(parent, beginExecution(parent.node_id, { daemonEpoch: 'test' })));
|
|
121
118
|
// The roster names the live child...
|
|
122
119
|
assert.ok(msg.includes(child.node_id), 'awaiting roster lists the live child');
|
|
123
120
|
// ...and asserts aliveness + the automatic wake at the source, so the node
|
|
@@ -143,7 +140,7 @@ test('a fresh revive is pointed at its subscriptions\' on-disk report history (c
|
|
|
143
140
|
const newer = join(dir, '20260608T130000-final.md');
|
|
144
141
|
writeFileSync(older, '---\n---\nearly progress', 'utf8');
|
|
145
142
|
writeFileSync(newer, '---\n---\nthe result', 'utf8');
|
|
146
|
-
const msg = buildReviveKickoff(parent, drainBearings(parent));
|
|
143
|
+
const msg = buildReviveKickoff(parent, drainBearings(parent, beginExecution(parent.node_id, { daemonEpoch: 'test' })));
|
|
147
144
|
// The feed block stays condensed: it reports that history exists and surfaces
|
|
148
145
|
// the newest report ref for immediate dereference, while older refs stay one
|
|
149
146
|
// command away instead of being preloaded into the revive prompt.
|
|
@@ -170,7 +167,7 @@ test('a fresh revive kickoff never carries situational context — it rides the
|
|
|
170
167
|
const id = 'n3';
|
|
171
168
|
const meta = createNode(node(id));
|
|
172
169
|
appendSituationalContext(id, 'user is mid-checkout on the store applet');
|
|
173
|
-
const kickoff = buildReviveKickoff(meta, drainBearings(meta));
|
|
170
|
+
const kickoff = buildReviveKickoff(meta, drainBearings(meta, beginExecution(meta.node_id, { daemonEpoch: 'test' })));
|
|
174
171
|
assert.doesNotMatch(kickoff, /kind="situational"/, 'visible kickoff never carries the ambient card');
|
|
175
172
|
assert.doesNotMatch(kickoff, /mid-checkout on the store applet/, 'visible kickoff never carries the ambient text');
|
|
176
173
|
const hidden = buildContextIntro(id);
|
|
@@ -180,20 +177,20 @@ test('a fresh revive kickoff never carries situational context — it rides the
|
|
|
180
177
|
test('buildReviveKickoff is pure — building twice eats nothing', () => {
|
|
181
178
|
const id = 'n2';
|
|
182
179
|
const meta = createNode(node(id));
|
|
180
|
+
const executionId = beginExecution(id, { daemonEpoch: 'test' });
|
|
183
181
|
writeYieldMessage(id, 'remember the invariant');
|
|
184
|
-
|
|
185
|
-
//
|
|
186
|
-
const bearings = drainBearings(meta);
|
|
187
|
-
const cursorAfterDrain = readCursor(id);
|
|
188
|
-
assert.equal(cursorAfterDrain, last.entry_id);
|
|
182
|
+
enqueueNodeMail(id, { senderNodeId: 'w', kind: 'update', label: 'r', bodyRef: '/tmp/r.md', urgency: 'normal', wake: 1 });
|
|
183
|
+
// Claim once, then build twice from the same immutable bearings.
|
|
184
|
+
const bearings = drainBearings(meta, executionId);
|
|
189
185
|
const s1 = buildReviveKickoff(meta, bearings);
|
|
190
186
|
const s2 = buildReviveKickoff(meta, bearings);
|
|
191
|
-
// Identical output, and the build
|
|
187
|
+
// Identical output, and the build mutates neither delivery receipts nor note.
|
|
192
188
|
assert.equal(s1, s2);
|
|
193
189
|
assert.match(s1, /<yield-message>\nremember the invariant\n<\/yield-message>/, 'yield note is delivered inline');
|
|
194
190
|
const contextInventory = s1.match(/<context-dir path="[^"]+">[\s\S]*?<\/context-dir>/)?.[0];
|
|
195
191
|
assert.ok(contextInventory, 'context inventory is present');
|
|
196
192
|
assert.doesNotMatch(contextInventory, /yield-message\.md/, 'ephemeral yield note is not addressable from inventory');
|
|
197
|
-
|
|
193
|
+
const claim = claimNodeMail(id, executionId, 'wake');
|
|
194
|
+
assert.equal(claim.deliveries.length, 1, 'build does not settle its claimed delivery');
|
|
198
195
|
assert.equal(readYieldMessage(id), 'remember the invariant', 'build does not mutate the persisted note');
|
|
199
196
|
});
|
|
@@ -4,7 +4,7 @@ import { mkdtempSync, rmSync } from 'node:fs';
|
|
|
4
4
|
import { tmpdir } from 'node:os';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
6
|
import { createNode, getNode } from '../canvas/canvas.js';
|
|
7
|
-
import { closeDb } from '../canvas/db.js';
|
|
7
|
+
import { closeDb, migrate, openDb } from '../canvas/db.js';
|
|
8
8
|
import { transition } from '../runtime/lifecycle.js';
|
|
9
9
|
let home;
|
|
10
10
|
function seed(nodeId) {
|
|
@@ -30,6 +30,7 @@ before(() => {
|
|
|
30
30
|
beforeEach(() => {
|
|
31
31
|
closeDb();
|
|
32
32
|
rmSync(home, { recursive: true, force: true });
|
|
33
|
+
migrate(openDb());
|
|
33
34
|
});
|
|
34
35
|
after(() => {
|
|
35
36
|
closeDb();
|
|
@@ -11,7 +11,7 @@ import { mkdtempSync, rmSync } from 'node:fs';
|
|
|
11
11
|
import { tmpdir } from 'node:os';
|
|
12
12
|
import { join } from 'node:path';
|
|
13
13
|
import { createNode, getNode, setStatus, setIntent } from '../canvas/canvas.js';
|
|
14
|
-
import { closeDb } from '../canvas/db.js';
|
|
14
|
+
import { closeDb, migrate, openDb } from '../canvas/db.js';
|
|
15
15
|
import { isParked, transition } from '../runtime/lifecycle.js';
|
|
16
16
|
let home;
|
|
17
17
|
function node(id) {
|
|
@@ -39,6 +39,7 @@ before(() => {
|
|
|
39
39
|
beforeEach(() => {
|
|
40
40
|
closeDb();
|
|
41
41
|
rmSync(home, { recursive: true, force: true });
|
|
42
|
+
migrate(openDb());
|
|
42
43
|
});
|
|
43
44
|
after(() => {
|
|
44
45
|
closeDb();
|
|
@@ -6,10 +6,13 @@ import { mkdtempSync, rmSync } from 'node:fs';
|
|
|
6
6
|
import { tmpdir } from 'node:os';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
import { createNode, updateNode } from '../canvas/canvas.js';
|
|
9
|
-
import { closeDb } from '../canvas/db.js';
|
|
9
|
+
import { closeDb, migrate, openDb } from '../canvas/db.js';
|
|
10
|
+
import { ensureScopeInitialized } from '../config.js';
|
|
11
|
+
import { closeScopedStores } from '../scoped-state/db.js';
|
|
10
12
|
import { renderPreferencesSection } from '../substrate/render-node.js';
|
|
11
13
|
import { clearSessionCache } from '../substrate/session-cache.js';
|
|
12
14
|
let home;
|
|
15
|
+
let priorUserHome;
|
|
13
16
|
function node(id) {
|
|
14
17
|
return {
|
|
15
18
|
node_id: id,
|
|
@@ -24,18 +27,27 @@ function node(id) {
|
|
|
24
27
|
}
|
|
25
28
|
before(() => {
|
|
26
29
|
home = mkdtempSync(join(tmpdir(), 'crtr-live-lifecycle-prompt-'));
|
|
30
|
+
priorUserHome = process.env['HOME'];
|
|
31
|
+
process.env['HOME'] = home;
|
|
27
32
|
process.env['CRTR_HOME'] = home;
|
|
28
33
|
});
|
|
29
34
|
beforeEach(() => {
|
|
30
35
|
closeDb();
|
|
31
36
|
clearSessionCache();
|
|
32
37
|
rmSync(home, { recursive: true, force: true });
|
|
38
|
+
ensureScopeInitialized('user', join(home, '.crouter'));
|
|
39
|
+
migrate(openDb());
|
|
33
40
|
});
|
|
34
41
|
after(() => {
|
|
35
42
|
closeDb();
|
|
36
43
|
clearSessionCache();
|
|
44
|
+
closeScopedStores();
|
|
37
45
|
rmSync(home, { recursive: true, force: true });
|
|
38
46
|
delete process.env['CRTR_HOME'];
|
|
47
|
+
if (priorUserHome === undefined)
|
|
48
|
+
delete process.env['HOME'];
|
|
49
|
+
else
|
|
50
|
+
process.env['HOME'] = priorUserHome;
|
|
39
51
|
});
|
|
40
52
|
test('a cached resident prompt becomes terminal after a live lifecycle change', () => {
|
|
41
53
|
createNode(node('live'));
|
|
@@ -23,6 +23,7 @@ import { tmpdir } from 'node:os';
|
|
|
23
23
|
import { join } from 'node:path';
|
|
24
24
|
import { gitSync } from '../git.js';
|
|
25
25
|
import { createProfile } from '../profiles/manifest.js';
|
|
26
|
+
import { initializeFreshScopedStore } from '../scoped-state/migrate.js';
|
|
26
27
|
import { resetScopeCache } from '../scope.js';
|
|
27
28
|
import { loadMemoryStoreView, openProjectMemoryStore, resolveMemoryCandidates, resolveMemoryDoc, resolveMemoryDocInStore, resolveMemoryDocs, } from '../memory-resolver.js';
|
|
28
29
|
let home;
|
|
@@ -54,6 +55,7 @@ before(() => {
|
|
|
54
55
|
prevHome = process.env.HOME;
|
|
55
56
|
prevProfile = process.env.CRTR_PROFILE_ID;
|
|
56
57
|
process.env.HOME = home;
|
|
58
|
+
initializeFreshScopedStore({ kind: 'user', root: join(home, '.crouter') });
|
|
57
59
|
// A wider user-scope doc whose name a project doc used to shadow.
|
|
58
60
|
mkdirSync(join(home, '.crouter', 'memory'), { recursive: true });
|
|
59
61
|
writeFileSync(join(home, '.crouter', 'memory', 'testing-stance.md'), '---\nkind: preference\n---\nUSER PREFERENCE BODY\n', 'utf8');
|