@north-light/crouter 0.3.318 → 0.3.320
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -3
- package/dist/api/client.js +2 -912
- package/dist/api/dto/attach.js +0 -13
- package/dist/api/dto/bash-jobs.js +1 -9
- package/dist/api/dto/broker-ops.js +0 -6
- package/dist/api/dto/broker.js +0 -20
- package/dist/api/dto/canvas.js +0 -2
- package/dist/api/dto/chat-inventory.js +0 -11
- package/dist/api/dto/common.js +1 -15
- package/dist/api/dto/config.js +0 -3
- package/dist/api/dto/crons.js +1 -10
- package/dist/api/dto/files.js +0 -7
- package/dist/api/dto/focus.js +0 -10
- package/dist/api/dto/health.js +0 -2
- package/dist/api/dto/human-requests.js +0 -4
- package/dist/api/dto/human.js +0 -4
- package/dist/api/dto/inbox.js +0 -4
- package/dist/api/dto/lifecycle.js +0 -3
- package/dist/api/dto/mail.js +0 -1
- package/dist/api/dto/memory.js +0 -6
- package/dist/api/dto/messages.js +0 -2
- package/dist/api/dto/model-config.js +0 -1
- package/dist/api/dto/modelauth.js +0 -4
- package/dist/api/dto/node-outcomes.js +0 -2
- package/dist/api/dto/nodes.js +0 -3
- package/dist/api/dto/profiles.js +1 -4
- package/dist/api/dto/recovery.js +0 -1
- package/dist/api/dto/reports.js +0 -2
- package/dist/api/dto/review-comments.js +0 -5
- package/dist/api/dto/reviews.js +0 -5
- package/dist/api/dto/subscriptions.js +0 -2
- package/dist/api/dto/worktree.js +0 -6
- package/dist/api/errors.js +1 -40
- package/dist/api/index.js +1 -33
- package/dist/api/plugin-manifest-schema.js +0 -23
- package/dist/api/routes.js +1 -147
- package/dist/build-root.js +1 -198
- package/dist/cli.js +3 -99
- package/dist/clients/attach/ansi-cells.js +1 -137
- package/dist/clients/attach/chrome/bash-jobs.js +1 -31
- package/dist/clients/attach/chrome/canvas-panels.js +1 -194
- package/dist/clients/attach/chrome/completion-bell.js +1 -89
- package/dist/clients/attach/chrome/cron-wait.js +1 -34
- package/dist/clients/attach/chrome/git-info.js +2 -44
- package/dist/clients/attach/chrome/header.js +1 -30
- package/dist/clients/attach/chrome/inbox-strip.js +1 -199
- package/dist/clients/attach/chrome/recap.js +1 -19
- package/dist/clients/attach/chrome/review-wait.js +1 -22
- package/dist/clients/attach/chrome/roster.js +4 -275
- package/dist/clients/attach/chrome/status-line.js +1 -117
- package/dist/clients/attach/chrome/ticket-panel.js +1 -280
- package/dist/clients/attach/chrome/widgets.js +1 -51
- package/dist/clients/attach/command.js +1 -107
- package/dist/clients/attach/config.js +1 -274
- package/dist/clients/attach/input/capabilities.js +1 -104
- package/dist/clients/attach/input/clipboard-image.js +3 -220
- package/dist/clients/attach/input/completion-frecency.js +1 -141
- package/dist/clients/attach/input/controller.js +7 -377
- package/dist/clients/attach/input/overlay-owner.js +1 -199
- package/dist/clients/attach/input/ref-autocomplete.js +2 -176
- package/dist/clients/attach/input/titled-editor.js +4 -859
- package/dist/clients/attach/overlays/auth.js +2 -271
- package/dist/clients/attach/overlays/dialogs.js +2 -102
- package/dist/clients/attach/overlays/file-review.js +2 -128
- package/dist/clients/attach/overlays/graph.js +1 -661
- package/dist/clients/attach/overlays/help.js +1 -211
- package/dist/clients/attach/overlays/mcp.js +1 -302
- package/dist/clients/attach/overlays/pickers.js +1 -163
- package/dist/clients/attach/render/activity-slot.js +1 -13
- package/dist/clients/attach/render/assistant-message.js +1 -56
- package/dist/clients/attach/render/card-presentation.js +5 -218
- package/dist/clients/attach/render/chat-view.js +5 -1708
- package/dist/clients/attach/render/condensed-history.js +1 -60
- package/dist/clients/attach/render/context-message.js +1 -63
- package/dist/clients/attach/render/crtr-output.js +17 -905
- package/dist/clients/attach/render/diagram.js +7 -111
- package/dist/clients/attach/render/edit-diff.js +5 -304
- package/dist/clients/attach/render/glyph-codepoints.js +1 -42
- package/dist/clients/attach/render/group-activity.js +2 -263
- package/dist/clients/attach/render/group-recap.js +1 -152
- package/dist/clients/attach/render/markdown-source.js +5 -266
- package/dist/clients/attach/render/measured-container.js +1 -322
- package/dist/clients/attach/render/page-block.js +1 -183
- package/dist/clients/attach/render/scroll-animation.js +1 -80
- package/dist/clients/attach/render/tool-calls.js +3 -361
- package/dist/clients/attach/render/transcript-copy.js +2 -81
- package/dist/clients/attach/render/transcript-search.js +1 -152
- package/dist/clients/attach/render/viewport.js +1 -184
- package/dist/clients/attach/session/banner.js +1 -29
- package/dist/clients/attach/session/bindings.js +1 -71
- package/dist/clients/attach/session/chrome-refresh.js +1 -94
- package/dist/clients/attach/session/connection.js +1 -186
- package/dist/clients/attach/session/context.js +0 -16
- package/dist/clients/attach/session/editor-frame.js +1 -142
- package/dist/clients/attach/session/editor-inventory.js +6 -160
- package/dist/clients/attach/session/file-links.js +1 -68
- package/dist/clients/attach/session/focus-events.js +1 -12
- package/dist/clients/attach/session/frame.js +1 -214
- package/dist/clients/attach/session/frames.js +1 -188
- package/dist/clients/attach/session/identity.js +1 -26
- package/dist/clients/attach/session/input-wiring.js +1 -140
- package/dist/clients/attach/session/invariant.js +1 -15
- package/dist/clients/attach/session/keys.js +1 -77
- package/dist/clients/attach/session/layout.js +1 -59
- package/dist/clients/attach/session/mouse.js +1 -78
- package/dist/clients/attach/session/pane-focus.js +1 -42
- package/dist/clients/attach/session/pane-tag.js +1 -112
- package/dist/clients/attach/session/pi-assets.js +1 -24
- package/dist/clients/attach/session/pi-oauth-flows.js +1 -21
- package/dist/clients/attach/session/profile-files.js +1 -228
- package/dist/clients/attach/session/reconnect.js +1 -175
- package/dist/clients/attach/session/selection.js +3 -108
- package/dist/clients/attach/session/state-sync.js +1 -67
- package/dist/clients/attach/session/surface-frame.js +1 -73
- package/dist/clients/attach/session/surface-host.js +1 -255
- package/dist/clients/attach/session/teardown.js +5 -94
- package/dist/clients/attach/session/transcript-search.js +3 -151
- package/dist/clients/attach/session/whip-achievements.js +2 -145
- package/dist/clients/attach/session/whip.js +1 -362
- package/dist/clients/attach/slash/dispatch.js +1 -706
- package/dist/clients/attach/slash/prompt-preview.js +1 -121
- package/dist/clients/attach/viewer.js +441 -441
- package/dist/clients/conversation/projection.js +1 -324
- package/dist/clients/conversation/submit.js +1 -51
- package/dist/clients/inbox/controller.js +1 -701
- package/dist/clients/inbox/dto-adapt.js +1 -93
- package/dist/clients/inbox/layout.js +1 -9
- package/dist/clients/inbox/page-adapter.js +1 -55
- package/dist/clients/inbox/resolve.js +1 -35
- package/dist/clients/inbox/review/anchors.js +1 -89
- package/dist/clients/inbox/review/comments-client.js +1 -98
- package/dist/clients/inbox/review/companion-pane.js +1 -82
- package/dist/clients/inbox/review/document-surface.js +2 -1188
- package/dist/clients/inbox/review/frame.js +1 -216
- package/dist/clients/inbox/review/keys.js +1 -123
- package/dist/clients/inbox/review/launch.js +1 -151
- package/dist/clients/inbox/review/live-source.js +1 -160
- package/dist/clients/inbox/review/nvim.js +1 -44
- package/dist/clients/inbox/review/remap.js +1 -157
- package/dist/clients/inbox/review/review-client.js +1 -123
- package/dist/clients/inbox/review/roundtrip.js +3 -36
- package/dist/clients/inbox/review/state.js +4 -315
- package/dist/clients/inbox/review-adapter.js +1 -43
- package/dist/clients/inbox/surface.js +1 -152
- package/dist/clients/inbox/tui/ansi.js +3 -321
- package/dist/clients/inbox/tui/input.js +5 -392
- package/dist/clients/inbox/tui/keys.js +1 -104
- package/dist/clients/inbox/tui/page-body.js +1 -66
- package/dist/clients/inbox/tui/panel.js +1 -84
- package/dist/clients/inbox/tui/render.js +2 -368
- package/dist/clients/inbox/tui/slots.js +3 -134
- package/dist/clients/inbox/tui/types.js +0 -1
- package/dist/clients/inbox/tui.js +1 -86
- package/dist/clients/surfaces/host.js +0 -1
- package/dist/commands/api-client.js +4 -290
- package/dist/commands/attention.js +1 -215
- package/dist/commands/canvas-browse.js +1 -70
- package/dist/commands/canvas-config.js +2 -192
- package/dist/commands/canvas-history/grep.js +7 -85
- package/dist/commands/canvas-history/read.js +3 -50
- package/dist/commands/canvas-history/search.js +10 -99
- package/dist/commands/canvas-history/shared.js +1 -139
- package/dist/commands/canvas-history/stats.js +6 -68
- package/dist/commands/canvas-history.js +1 -32
- package/dist/commands/canvas-issue.js +14 -149
- package/dist/commands/canvas-prune.js +1 -108
- package/dist/commands/canvas-roster.js +1 -69
- package/dist/commands/canvas-snapshot.js +1 -34
- package/dist/commands/canvas-use.js +1 -61
- package/dist/commands/canvas.js +1 -49
- package/dist/commands/chord.js +1 -241
- package/dist/commands/cron.js +11 -534
- package/dist/commands/dashboard.js +1 -85
- package/dist/commands/human/components.js +3 -77
- package/dist/commands/human/feedback.js +1 -112
- package/dist/commands/human/prompts.js +1 -331
- package/dist/commands/human/queue.js +1 -191
- package/dist/commands/human/request.js +1 -266
- package/dist/commands/human/review.js +1 -288
- package/dist/commands/human/shared.js +1 -67
- package/dist/commands/human.js +4 -60
- package/dist/commands/memory/delete.js +1 -100
- package/dist/commands/memory/edit.js +21 -219
- package/dist/commands/memory/find.js +2 -244
- package/dist/commands/memory/history.js +5 -199
- package/dist/commands/memory/lint.js +1 -107
- package/dist/commands/memory/list.js +1 -142
- package/dist/commands/memory/move.js +1 -223
- package/dist/commands/memory/origin.js +1 -130
- package/dist/commands/memory/read.js +6 -232
- package/dist/commands/memory/shared.js +12 -802
- package/dist/commands/memory/write.js +13 -235
- package/dist/commands/memory.js +1 -30
- package/dist/commands/node/bash.js +5 -245
- package/dist/commands/node/create.js +3 -332
- package/dist/commands/node/inspect.js +12 -300
- package/dist/commands/node/lifecycle.js +2 -453
- package/dist/commands/node/message.js +1 -161
- package/dist/commands/node/outcome.js +4 -134
- package/dist/commands/node/pyramid.js +2 -79
- package/dist/commands/node/subscription.js +1 -78
- package/dist/commands/node/wait.js +7 -163
- package/dist/commands/node-context.js +2 -159
- package/dist/commands/node-inspect-artifacts.js +8 -109
- package/dist/commands/node-lifecycle-revive.js +1 -217
- package/dist/commands/node-snapshot.js +1 -37
- package/dist/commands/node-transcript.js +1 -62
- package/dist/commands/node-worktree.js +1 -138
- package/dist/commands/node.js +1 -29
- package/dist/commands/pkg/browse/actions.js +1 -198
- package/dist/commands/pkg/browse/catalog.js +1 -466
- package/dist/commands/pkg/browse/command-view.js +1 -191
- package/dist/commands/pkg/browse/detail-panel.js +1 -402
- package/dist/commands/pkg/browse/doc-view.js +1 -89
- package/dist/commands/pkg/browse/list-panel.js +2 -168
- package/dist/commands/pkg/browse/model.js +1 -36
- package/dist/commands/pkg/browse/shell.js +1 -640
- package/dist/commands/pkg/browse.js +1 -27
- package/dist/commands/pkg/market-inspect.js +1 -141
- package/dist/commands/pkg/market-manage.js +1 -327
- package/dist/commands/pkg/market.js +1 -14
- package/dist/commands/pkg/plugin-inspect.js +1 -168
- package/dist/commands/pkg/plugin-manage.js +17 -1109
- package/dist/commands/pkg/plugin.js +1 -14
- package/dist/commands/pkg/shared.js +1 -62
- package/dist/commands/pkg.js +1 -21
- package/dist/commands/profile/default.js +1 -139
- package/dist/commands/profile/delete.js +1 -66
- package/dist/commands/profile/env.js +3 -188
- package/dist/commands/profile/kind.js +2 -35
- package/dist/commands/profile/list.js +1 -43
- package/dist/commands/profile/meta.js +1 -67
- package/dist/commands/profile/new.js +1 -115
- package/dist/commands/profile/pause.js +1 -59
- package/dist/commands/profile/project.js +1 -113
- package/dist/commands/profile/rename.js +1 -38
- package/dist/commands/profile/show.js +1 -52
- package/dist/commands/profile.js +1 -35
- package/dist/commands/push.js +9 -265
- package/dist/commands/revive.js +10 -181
- package/dist/commands/surface/node/cycle.js +1 -83
- package/dist/commands/surface/node/focus.js +1 -81
- package/dist/commands/surface/node/id.js +1 -38
- package/dist/commands/surface/node/pin.js +1 -42
- package/dist/commands/surface/node/placement.js +1 -134
- package/dist/commands/surface-edit.js +1 -157
- package/dist/commands/surface-inbox.js +1 -98
- package/dist/commands/surface-inspect.js +1 -39
- package/dist/commands/surface-node.js +1 -19
- package/dist/commands/surface-reload.js +2 -134
- package/dist/commands/surface-tmux-spread.js +1 -214
- package/dist/commands/surface.js +1 -28
- package/dist/commands/sys/branch.js +1 -19
- package/dist/commands/sys/config.js +1 -353
- package/dist/commands/sys/context/admin/actions.js +2 -246
- package/dist/commands/sys/context/admin/detail-panel.js +1 -247
- package/dist/commands/sys/context/admin/docs-panel.js +1 -191
- package/dist/commands/sys/context/admin/list-view.js +1 -183
- package/dist/commands/sys/context/admin/model.js +1 -229
- package/dist/commands/sys/context/admin/rail-panel.js +1 -227
- package/dist/commands/sys/context/admin/read-view.js +2 -194
- package/dist/commands/sys/context/admin/shell.js +1 -910
- package/dist/commands/sys/context/admin.js +2 -126
- package/dist/commands/sys/context/doc.js +3 -197
- package/dist/commands/sys/context/prompt-review.js +11 -291
- package/dist/commands/sys/context/resolve.js +10 -489
- package/dist/commands/sys/context/sysprompt.js +5 -96
- package/dist/commands/sys/context.js +1 -20
- package/dist/commands/sys/daemon.js +1 -313
- package/dist/commands/sys/doctor.js +1 -617
- package/dist/commands/sys/feedback.js +7 -228
- package/dist/commands/sys/logs.js +3 -129
- package/dist/commands/sys/migrate.js +1 -94
- package/dist/commands/sys/panels/broker-limits-panel.js +2 -110
- package/dist/commands/sys/panels/dependencies-panel.js +1 -80
- package/dist/commands/sys/panels/keybindings-panel.js +1 -703
- package/dist/commands/sys/panels/models-panel.js +1 -1133
- package/dist/commands/sys/panels/plugins-panel.js +1 -80
- package/dist/commands/sys/panels/prefs-panel.js +1 -85
- package/dist/commands/sys/panels/profiles-panel.js +1 -601
- package/dist/commands/sys/panels/provider-panel.js +1 -538
- package/dist/commands/sys/settings-shell.js +1 -400
- package/dist/commands/sys/settings.js +1 -46
- package/dist/commands/sys/setup-core.js +6 -579
- package/dist/commands/sys/setup-settings-runner.js +1 -16
- package/dist/commands/sys/setup-wizard.js +1 -279
- package/dist/commands/sys/setup.js +1 -34
- package/dist/commands/sys/shared.js +1 -81
- package/dist/commands/sys/support/prepare.js +3 -239
- package/dist/commands/sys/support/submit.js +6 -524
- package/dist/commands/sys/support.js +1 -18
- package/dist/commands/sys/sync-deps.js +15 -498
- package/dist/commands/sys/sync-project-guidance.js +4 -481
- package/dist/commands/sys/sync-shared.js +1 -49
- package/dist/commands/sys/sync-skills.js +2 -311
- package/dist/commands/sys/sync.js +1 -18
- package/dist/commands/sys/update.js +1 -147
- package/dist/commands/sys/worktrees.js +5 -53
- package/dist/commands/sys.js +1 -18
- package/dist/core/activity-signal.js +2 -38
- package/dist/core/asset-root.js +1 -18
- package/dist/core/auth-file.js +2 -179
- package/dist/core/auth-interaction.js +3 -94
- package/dist/core/auto-update.js +4 -94
- package/dist/core/bash-guard.js +11 -393
- package/dist/core/bash-jobs.js +7 -411
- package/dist/core/bootstrap.js +2 -53
- package/dist/core/broker-client/client.js +1 -184
- package/dist/core/broker-client/index.js +1 -13
- package/dist/core/broker-client/transport-relay.js +1 -157
- package/dist/core/broker-client/transport-socket.js +1 -179
- package/dist/core/broker-client/transport.js +1 -26
- package/dist/core/canvas/attention.js +1 -47
- package/dist/core/canvas/boot-id.js +1 -26
- package/dist/core/canvas/boot.js +1 -186
- package/dist/core/canvas/browse/app.js +3 -919
- package/dist/core/canvas/browse/model.js +1 -477
- package/dist/core/canvas/browse/pins.js +1 -29
- package/dist/core/canvas/browse/render.js +3 -1055
- package/dist/core/canvas/canvas.js +15 -922
- package/dist/core/canvas/crons.js +11 -481
- package/dist/core/canvas/daemon-owner.js +2 -146
- package/dist/core/canvas/db.js +2 -100
- package/dist/core/canvas/deliveries.js +22 -283
- package/dist/core/canvas/delivery-contract.js +1 -8
- package/dist/core/canvas/executions.js +1 -68
- package/dist/core/canvas/extensions.js +1 -83
- package/dist/core/canvas/focuses.js +1 -77
- package/dist/core/canvas/history.js +24 -860
- package/dist/core/canvas/index.js +1 -15
- package/dist/core/canvas/install-id.js +1 -84
- package/dist/core/canvas/labels.js +1 -43
- package/dist/core/canvas/meta-file.js +1 -89
- package/dist/core/canvas/migrations.js +41 -1150
- package/dist/core/canvas/nav-model.js +1 -231
- package/dist/core/canvas/nav-render.js +1 -260
- package/dist/core/canvas/node-order.js +1 -37
- package/dist/core/canvas/node-recap.js +2 -67
- package/dist/core/canvas/node-sql-migration.js +2 -209
- package/dist/core/canvas/paths.js +1 -153
- package/dist/core/canvas/pid.js +4 -683
- package/dist/core/canvas/recovery.js +3 -565
- package/dist/core/canvas/remote-canvas-source.js +1 -288
- package/dist/core/canvas/remote-transport.js +1 -57
- package/dist/core/canvas/render-source.js +10 -635
- package/dist/core/canvas/sessions.js +1 -78
- package/dist/core/canvas/source.js +1 -47
- package/dist/core/canvas/status-glyph.js +1 -132
- package/dist/core/canvas/telemetry.js +1 -35
- package/dist/core/canvas/types.js +1 -6
- package/dist/core/canvas/waits.js +4 -68
- package/dist/core/canvas/worktrees.js +1 -93
- package/dist/core/clipboard-text.js +1 -57
- package/dist/core/command-hooks/artifact.js +1 -145
- package/dist/core/command-hooks/catalog.js +1 -38
- package/dist/core/command-hooks/compose.js +1 -99
- package/dist/core/command-hooks/discovery.js +1 -228
- package/dist/core/command-hooks/help.js +1 -18
- package/dist/core/command-hooks/index.js +1 -7
- package/dist/core/command-hooks/lifecycle-catalog.js +1 -9
- package/dist/core/command-hooks/lifecycle-create.js +1 -51
- package/dist/core/command-hooks/report.js +1 -28
- package/dist/core/command-hooks/schema.js +1 -157
- package/dist/core/command-hooks/transport/exec-invoke.js +1 -276
- package/dist/core/command-hooks/transport/exec-lifecycle.js +1 -211
- package/dist/core/command-manifests/manifest.js +1 -324
- package/dist/core/command-manifests/registry.js +1 -118
- package/dist/core/command-manifests/schema.js +1 -736
- package/dist/core/command-plugins/bundle.js +1 -261
- package/dist/core/command-plugins/compose.js +1 -65
- package/dist/core/command-plugins/discovery.js +1 -245
- package/dist/core/command-plugins/endpoint.js +1 -48
- package/dist/core/command-plugins/extensions.js +1 -166
- package/dist/core/command-plugins/help-addenda.js +1 -44
- package/dist/core/command-plugins/presence.js +1 -17
- package/dist/core/command-plugins/revalidate.js +2 -152
- package/dist/core/command-plugins/transport/exec-invoke.js +1 -215
- package/dist/core/command-plugins/transport/http-fetch.js +1 -68
- package/dist/core/command-plugins/transport/http-invoke.js +3 -546
- package/dist/core/command.js +10 -739
- package/dist/core/config.js +1 -1059
- package/dist/core/document-lines.js +3 -6
- package/dist/core/env-name.js +1 -9
- package/dist/core/errors.js +1 -52
- package/dist/core/events/emit.js +1 -17
- package/dist/core/events/envelope.js +1 -84
- package/dist/core/events/errors.js +1 -69
- package/dist/core/events/index.js +1 -4
- package/dist/core/events/operation-id.js +1 -24
- package/dist/core/events/read.js +1 -623
- package/dist/core/events/serialize.js +1 -199
- package/dist/core/events/source.js +1 -31
- package/dist/core/events/types.js +1 -11
- package/dist/core/exclusive-lock.js +1 -197
- package/dist/core/fault-classifier.js +1 -96
- package/dist/core/feed/feed.js +7 -202
- package/dist/core/feed/inbox-migrate.js +3 -135
- package/dist/core/feed/inbox.js +10 -122
- package/dist/core/feed/messages.js +6 -212
- package/dist/core/frontmatter.js +1 -35
- package/dist/core/fs-utils.js +3 -202
- package/dist/core/git.js +2 -103
- package/dist/core/help.js +9 -310
- package/dist/core/host-exports/builtins.js +9 -68
- package/dist/core/host-exports/export.js +3 -124
- package/dist/core/human/action-binding.js +1 -40
- package/dist/core/human/answer-text.js +5 -100
- package/dist/core/human/answer.js +1 -119
- package/dist/core/human/claim.js +3 -67
- package/dist/core/human/completion.js +1 -27
- package/dist/core/human/component-docs.js +78 -272
- package/dist/core/human/convention.js +2 -82
- package/dist/core/human/feedback-companion.js +1 -106
- package/dist/core/human/feedback.js +1 -88
- package/dist/core/human/page-authoring.js +1 -19
- package/dist/core/human/page-catalog.js +1 -172
- package/dist/core/human/page-errors.js +1 -7
- package/dist/core/human/page-eval.js +1 -125
- package/dist/core/human/page-html-markdown.js +8 -260
- package/dist/core/human/page-markdown.js +17 -295
- package/dist/core/human/page-schema.js +1 -373
- package/dist/core/human/page-synth.js +8 -27
- package/dist/core/human/page.js +1 -198
- package/dist/core/human/requests.js +15 -466
- package/dist/core/human/review-schema.js +1 -34
- package/dist/core/human/root.js +1 -11
- package/dist/core/human/scan.js +1 -69
- package/dist/core/human/summary.js +1 -5
- package/dist/core/human/tickets.js +1 -171
- package/dist/core/human/types.js +0 -1
- package/dist/core/human/visible-paths.js +1 -77
- package/dist/core/human-actions.js +1 -101
- package/dist/core/inspector/chrome.js +1 -14
- package/dist/core/inspector/contract.js +0 -1
- package/dist/core/inspector/core.js +2 -295
- package/dist/core/inspector/host.js +4 -538
- package/dist/core/inspector/model.js +2 -226
- package/dist/core/inspector/text.js +6 -45
- package/dist/core/inspector/transport.js +1 -36
- package/dist/core/inspector/tui.js +2 -295
- package/dist/core/installed-plugins.js +1 -78
- package/dist/core/io.js +7 -356
- package/dist/core/keybindings/attach-control.js +1 -42
- package/dist/core/keybindings/background-bash.js +1 -33
- package/dist/core/keybindings/catalog.js +1 -256
- package/dist/core/keybindings/inbox.js +1 -25
- package/dist/core/keybindings/index.js +1 -7
- package/dist/core/keybindings/match.js +1 -127
- package/dist/core/keybindings/persistence.js +1 -49
- package/dist/core/keybindings/resolve.js +1 -348
- package/dist/core/keybindings/types.js +0 -1
- package/dist/core/locked-file.js +1 -118
- package/dist/core/log.js +3 -27
- package/dist/core/manifest-recovery.js +1 -72
- package/dist/core/manifest-stale.js +1 -39
- package/dist/core/manifest.js +1 -20
- package/dist/core/memory/doc-link-grammar.js +2 -109
- package/dist/core/memory/extensions.js +1 -221
- package/dist/core/memory/history.js +6 -268
- package/dist/core/memory/identity.js +1 -181
- package/dist/core/memory/inline-ref-grammar.js +1 -98
- package/dist/core/memory/inline-ref-guidance.js +2 -35
- package/dist/core/memory/inline-ref-inventory.js +1 -59
- package/dist/core/memory/lint.js +2 -671
- package/dist/core/memory/project-namespace.js +2 -85
- package/dist/core/memory/repository-association.js +1 -129
- package/dist/core/memory/tree.js +1 -93
- package/dist/core/memory-resolver.js +2 -611
- package/dist/core/model-config.js +1 -107
- package/dist/core/model-routes.js +1 -201
- package/dist/core/nested-stores.js +2 -166
- package/dist/core/output.js +7 -99
- package/dist/core/pagination.js +1 -88
- package/dist/core/plugin-swap-lock.js +1 -31
- package/dist/core/pool-credential-store.js +1 -116
- package/dist/core/predicate.js +1 -191
- package/dist/core/preview-registry.js +2 -411
- package/dist/core/preview-result-path.js +1 -26
- package/dist/core/profiles/default-binding.js +1 -24
- package/dist/core/profiles/deletion-reservation.js +1 -42
- package/dist/core/profiles/env-store.js +2 -162
- package/dist/core/profiles/fuzzy-match.js +1 -92
- package/dist/core/profiles/manifest.js +1 -574
- package/dist/core/profiles/select.js +35 -741
- package/dist/core/profiles/state-block.js +3 -17
- package/dist/core/provider-error-recognition.js +1 -74
- package/dist/core/provider-failure.js +1 -86
- package/dist/core/provider-management.js +1 -22
- package/dist/core/remote-canvas-target.js +1 -30
- package/dist/core/render.js +18 -138
- package/dist/core/resolver.js +1 -111
- package/dist/core/review/birth.js +1 -52
- package/dist/core/review/comments.js +5 -279
- package/dist/core/review/companion.js +1 -215
- package/dist/core/review/document.js +2 -138
- package/dist/core/review/project.js +1 -36
- package/dist/core/review/realize.js +1 -71
- package/dist/core/review/remap.js +4 -141
- package/dist/core/review/signal.js +1 -12
- package/dist/core/review/stage.js +1 -184
- package/dist/core/review/store.js +1 -168
- package/dist/core/review/types.js +1 -23
- package/dist/core/runtime/advertised-command-invocation.js +1 -233
- package/dist/core/runtime/auth-reload.js +1 -67
- package/dist/core/runtime/banner.js +1 -51
- package/dist/core/runtime/bearings-render.js +18 -250
- package/dist/core/runtime/bearings.js +7 -194
- package/dist/core/runtime/bin-contributions.js +2 -186
- package/dist/core/runtime/boot-root.js +1 -107
- package/dist/core/runtime/branded-host.js +2 -264
- package/dist/core/runtime/broker/auth-reload.js +1 -157
- package/dist/core/runtime/broker/client-registry.js +1 -179
- package/dist/core/runtime/broker/daemon-ops.js +1 -88
- package/dist/core/runtime/broker/engine-drive.js +1 -354
- package/dist/core/runtime/broker/engine-routing.js +1 -211
- package/dist/core/runtime/broker/event-projection.js +1 -193
- package/dist/core/runtime/broker/extension-abort.js +1 -36
- package/dist/core/runtime/broker/fault-retry.js +1 -588
- package/dist/core/runtime/broker/frame-client.js +1 -132
- package/dist/core/runtime/broker/frame-dispatch.js +1 -183
- package/dist/core/runtime/broker/frame-engine-control.js +1 -231
- package/dist/core/runtime/broker/frame-memory-refs.js +1 -41
- package/dist/core/runtime/broker/frame-model-query.js +1 -69
- package/dist/core/runtime/broker/frame-read.js +1 -116
- package/dist/core/runtime/broker/frame-replies.js +1 -64
- package/dist/core/runtime/broker/frame-session.js +4 -203
- package/dist/core/runtime/broker/held-deferred-inbox.js +1 -13
- package/dist/core/runtime/broker/inbox.js +13 -163
- package/dist/core/runtime/broker/node-named.js +1 -27
- package/dist/core/runtime/broker/read-ops.js +1 -171
- package/dist/core/runtime/broker/rebind.js +1 -318
- package/dist/core/runtime/broker/tool-groups.js +1 -246
- package/dist/core/runtime/broker/turn-admission.js +1 -31
- package/dist/core/runtime/broker/turn-ignition.js +1 -84
- package/dist/core/runtime/broker-cli.js +3 -81
- package/dist/core/runtime/broker-extension-render.js +5 -135
- package/dist/core/runtime/broker-inventory.js +1 -116
- package/dist/core/runtime/broker-persona-guidance.js +4 -154
- package/dist/core/runtime/broker-protocol.js +3 -152
- package/dist/core/runtime/broker-request.js +1 -85
- package/dist/core/runtime/broker-sdk.js +1 -129
- package/dist/core/runtime/broker.js +1 -1214
- package/dist/core/runtime/canvas-extensions.js +1 -96
- package/dist/core/runtime/chat-inventory-rows.js +1 -105
- package/dist/core/runtime/close.js +1 -265
- package/dist/core/runtime/command-expansion.js +9 -104
- package/dist/core/runtime/command-surface.js +1 -117
- package/dist/core/runtime/connectivity.js +1 -73
- package/dist/core/runtime/deliver-live.js +1 -88
- package/dist/core/runtime/fault-recovery.js +1 -83
- package/dist/core/runtime/fault.js +1 -17
- package/dist/core/runtime/fleet.js +1 -58
- package/dist/core/runtime/front-door-env.js +1 -16
- package/dist/core/runtime/front-door.js +7 -183
- package/dist/core/runtime/headless-pi.js +1 -161
- package/dist/core/runtime/host.js +1 -457
- package/dist/core/runtime/interactive-deliver.js +1 -51
- package/dist/core/runtime/invocation.js +0 -10
- package/dist/core/runtime/kickoff.js +30 -327
- package/dist/core/runtime/launch-config-worker.js +1 -12
- package/dist/core/runtime/launch-prompt.js +4 -13
- package/dist/core/runtime/launch-target.js +1 -55
- package/dist/core/runtime/launch.js +1 -483
- package/dist/core/runtime/lifecycle.js +2 -213
- package/dist/core/runtime/managed-provider-cooling.js +1 -62
- package/dist/core/runtime/memory.js +1 -17
- package/dist/core/runtime/model-registry.js +1 -13
- package/dist/core/runtime/model-selection.js +1 -135
- package/dist/core/runtime/model-swap.js +1 -86
- package/dist/core/runtime/naming.js +14 -298
- package/dist/core/runtime/nerd-font.js +2 -127
- package/dist/core/runtime/node-read.js +2 -386
- package/dist/core/runtime/nodes.js +1 -331
- package/dist/core/runtime/outcome-document.js +1 -97
- package/dist/core/runtime/package-health.js +4 -99
- package/dist/core/runtime/persona.js +2 -55
- package/dist/core/runtime/pi-cli.js +1 -65
- package/dist/core/runtime/pi-vendored.js +1 -66
- package/dist/core/runtime/placement-tmux.js +1 -81
- package/dist/core/runtime/placement.js +1 -386
- package/dist/core/runtime/promote.js +1 -174
- package/dist/core/runtime/prospective-inventory-cli.js +3 -61
- package/dist/core/runtime/prospective-inventory.js +2 -88
- package/dist/core/runtime/recap.js +27 -103
- package/dist/core/runtime/recycle.js +1 -190
- package/dist/core/runtime/reopen.js +1 -138
- package/dist/core/runtime/reset.js +1 -245
- package/dist/core/runtime/resume-root.js +10 -290
- package/dist/core/runtime/revive-all.js +1 -107
- package/dist/core/runtime/revive.js +4 -544
- package/dist/core/runtime/roadmap.js +4 -38
- package/dist/core/runtime/session-branch.js +1 -46
- package/dist/core/runtime/session-cycles.js +1 -110
- package/dist/core/runtime/session-list-cache.js +1 -406
- package/dist/core/runtime/session-visibility.js +1 -99
- package/dist/core/runtime/shell-expansion.js +9 -100
- package/dist/core/runtime/situational-context.js +2 -67
- package/dist/core/runtime/situational-live.js +1 -41
- package/dist/core/runtime/spawn-env.js +1 -255
- package/dist/core/runtime/spawn.js +3 -577
- package/dist/core/runtime/stamp/channel.js +1 -76
- package/dist/core/runtime/stamp/protocol.js +1 -113
- package/dist/core/runtime/stop-guard.js +7 -116
- package/dist/core/runtime/stop-signals.js +1 -46
- package/dist/core/runtime/stream-watchdog.js +1 -134
- package/dist/core/runtime/structured-output.js +4 -156
- package/dist/core/runtime/surface-bg.js +1 -85
- package/dist/core/runtime/tmux-bindings.js +4 -730
- package/dist/core/runtime/tmux-chrome.js +1 -5
- package/dist/core/runtime/tmux-driver.js +7 -637
- package/dist/core/runtime/tool-group-summary.js +6 -85
- package/dist/core/runtime/turn-visibility.js +1 -31
- package/dist/core/runtime/view-socket.js +1 -83
- package/dist/core/runtime/warm-pool.js +1 -395
- package/dist/core/scope.js +1 -254
- package/dist/core/scoped-state/db.js +1 -135
- package/dist/core/scoped-state/migrate.js +3 -181
- package/dist/core/scoped-state/paths.js +1 -27
- package/dist/core/scoped-state/profiles.js +1 -62
- package/dist/core/scoped-state/providers.js +1 -8
- package/dist/core/scoped-state/schema.js +3 -16
- package/dist/core/scoped-state/settings.js +1 -82
- package/dist/core/secrets.js +2 -55
- package/dist/core/self-update.js +1 -71
- package/dist/core/session-model/session-state.js +1 -180
- package/dist/core/shell-segments.js +4 -169
- package/dist/core/spawn.js +1 -26
- package/dist/core/stdout-errors.js +1 -14
- package/dist/core/subscription-state.js +3 -193
- package/dist/core/substrate/frontmatter-validation.js +1 -105
- package/dist/core/substrate/gate-explain.js +1 -424
- package/dist/core/substrate/gate.js +1 -26
- package/dist/core/substrate/index.js +1 -30
- package/dist/core/substrate/injected-store.js +1 -249
- package/dist/core/substrate/listings.js +1 -115
- package/dist/core/substrate/on-read-node.js +1 -36
- package/dist/core/substrate/on-read.js +9 -315
- package/dist/core/substrate/plan.js +1 -266
- package/dist/core/substrate/render-node.js +1 -30
- package/dist/core/substrate/render.js +65 -689
- package/dist/core/substrate/schema.js +1 -186
- package/dist/core/substrate/session-cache.js +1 -83
- package/dist/core/substrate/subject-fields.js +1 -35
- package/dist/core/substrate/subject.js +1 -47
- package/dist/core/substrate/surface-match.js +1 -242
- package/dist/core/termrender/code-doc.js +5 -92
- package/dist/core/termrender/display.js +2 -56
- package/dist/core/termrender/termrender.js +14 -719
- package/dist/core/termrender/version.js +1 -1
- package/dist/core/timing.js +2 -94
- package/dist/core/tui/draw.js +2 -378
- package/dist/core/tui/fuzzy.js +1 -38
- package/dist/core/tui/markdown.js +3 -407
- package/dist/core/tui/page-host.js +1 -74
- package/dist/core/tui/panel.js +1 -137
- package/dist/core/tui/terminal.js +2 -100
- package/dist/core/user-settings.js +1 -454
- package/dist/core/wake.js +1 -296
- package/dist/core/worktree-close.js +6 -228
- package/dist/core/worktree-containment.js +3 -48
- package/dist/core/worktree-landing.js +4 -56
- package/dist/core/worktree-mutation-async.js +10 -280
- package/dist/core/worktree-quarantine.js +1 -54
- package/dist/core/worktree-sweep.js +6 -453
- package/dist/core/worktree.js +18 -899
- package/dist/daemon/api/bridge.js +8 -418
- package/dist/daemon/api/handlers/attach.js +1 -65
- package/dist/daemon/api/handlers/bash-jobs.js +2 -91
- package/dist/daemon/api/handlers/broker-ops.js +1 -447
- package/dist/daemon/api/handlers/broker-recovery.js +1 -251
- package/dist/daemon/api/handlers/canvas.js +6 -490
- package/dist/daemon/api/handlers/chat-inventory.js +1 -25
- package/dist/daemon/api/handlers/crons.js +1 -373
- package/dist/daemon/api/handlers/daemon.js +1 -76
- package/dist/daemon/api/handlers/feedback-comments.js +3 -199
- package/dist/daemon/api/handlers/files.js +1 -63
- package/dist/daemon/api/handlers/focus.js +1 -92
- package/dist/daemon/api/handlers/health.js +1 -76
- package/dist/daemon/api/handlers/human-requests.js +1 -379
- package/dist/daemon/api/handlers/human.js +1 -3
- package/dist/daemon/api/handlers/inbox-page.js +1 -89
- package/dist/daemon/api/handlers/inbox.js +1 -301
- package/dist/daemon/api/handlers/memory.js +1 -50
- package/dist/daemon/api/handlers/messages.js +2 -506
- package/dist/daemon/api/handlers/model-config.js +1 -44
- package/dist/daemon/api/handlers/modelauth.js +1 -165
- package/dist/daemon/api/handlers/node-outcomes.js +1 -181
- package/dist/daemon/api/handlers/nodes.js +1 -939
- package/dist/daemon/api/handlers/profiles.js +1 -140
- package/dist/daemon/api/handlers/prospective-chat-inventory.js +1 -59
- package/dist/daemon/api/handlers/reports.js +16 -332
- package/dist/daemon/api/handlers/review-comments.js +1 -465
- package/dist/daemon/api/handlers/reviews.js +1 -200
- package/dist/daemon/api/handlers/subscriptions.js +1 -53
- package/dist/daemon/api/handlers/validate.js +1 -58
- package/dist/daemon/api/handlers/worktree.js +1 -39
- package/dist/daemon/api/map.js +2 -735
- package/dist/daemon/api/router.js +1 -190
- package/dist/daemon/api/server.js +11 -408
- package/dist/daemon/boot-migrations.js +1 -31
- package/dist/daemon/companion-retire.js +1 -34
- package/dist/daemon/control.js +1 -22
- package/dist/daemon/cron/armed-context.js +1 -100
- package/dist/daemon/cron/capture.js +2 -45
- package/dist/daemon/cron/disposition.js +1 -55
- package/dist/daemon/cron/escalation.js +3 -124
- package/dist/daemon/cron/held.js +1 -20
- package/dist/daemon/cron/lease-recovery.js +1 -119
- package/dist/daemon/cron/live-runs.js +1 -23
- package/dist/daemon/cron/passes.js +1 -58
- package/dist/daemon/cron/settle.js +1 -61
- package/dist/daemon/cron/sinks.js +2 -59
- package/dist/daemon/cron-run.js +1 -405
- package/dist/daemon/crtrd-cli.js +1 -23
- package/dist/daemon/crtrd.js +8 -854
- package/dist/daemon/delivery/run-delivery.js +1 -164
- package/dist/daemon/fleet.js +17 -475
- package/dist/daemon/human/finish.js +10 -179
- package/dist/daemon/human/settle.js +1 -89
- package/dist/daemon/human/sweep.js +1 -66
- package/dist/daemon/manage.js +2 -595
- package/dist/daemon/messaging/node-message.js +1 -99
- package/dist/daemon/park-activity.js +1 -30
- package/dist/daemon/park-pending.js +1 -52
- package/dist/daemon/pidfile.js +1 -37
- package/dist/daemon/profile-delete.js +1 -306
- package/dist/daemon/reconcilers/bash-deadline.js +1 -80
- package/dist/daemon/reconcilers/broker-supervision.js +4 -761
- package/dist/daemon/reconcilers/controller-death.js +1 -14
- package/dist/daemon/reconcilers/cron-lane.js +1 -29
- package/dist/daemon/reconcilers/delivery-lane.js +1 -130
- package/dist/daemon/reconcilers/live-obligation.js +1 -87
- package/dist/daemon/reconcilers/managed-worktree-sweep.js +1 -202
- package/dist/daemon/reconcilers/node-deadline.js +1 -82
- package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.js +1 -172
- package/dist/daemon/reconcilers/node-lifecycle/respawn-policy.js +1 -59
- package/dist/daemon/reconcilers/node-lifecycle/terminating.js +1 -12
- package/dist/daemon/reconcilers/node-lifecycle/tick.js +1 -146
- package/dist/daemon/reconcilers/node-lifecycle/wants-execution.js +1 -11
- package/dist/daemon/reconcilers/pending-review-submit.js +1 -36
- package/dist/daemon/reconcilers/storage-maintenance.js +1 -207
- package/dist/daemon/review/comment-notify.js +2 -109
- package/dist/daemon/review/companion.js +1 -29
- package/dist/daemon/review/deliver.js +3 -8
- package/dist/daemon/review/finish.js +1 -122
- package/dist/daemon/review/sweep.js +1 -18
- package/dist/daemon/startup-policy.js +1 -1
- package/dist/daemon/supervise-cadence.js +1 -6
- package/dist/hook-authoring.js +5 -447
- package/dist/hook-process.js +1 -34
- package/dist/index.js +1 -52
- package/dist/migrations/001-surfaces-frontmatter.js +1 -161
- package/dist/migrations/002-profile-project-memory.js +1 -72
- package/dist/migrations/003-repository-root-memory-identity/front-door.js +11 -231
- package/dist/migrations/003-repository-root-memory-identity/index.js +5 -513
- package/dist/migrations/003-repository-root-memory-identity/references.js +5 -469
- package/dist/migrations/003-repository-root-memory-identity/repository-facts.js +3 -349
- package/dist/migrations/activation.js +2 -89
- package/dist/migrations/convergent.js +2 -82
- package/dist/migrations/corpus.js +3 -483
- package/dist/migrations/frontmatter-splice.js +8 -176
- package/dist/migrations/profile-manifests.js +2 -70
- package/dist/migrations/registry.js +1 -42
- package/dist/migrations/runner.js +1 -85
- package/dist/migrations/types.js +0 -24
- package/dist/pi-extensions/broker-local.js +2 -106
- package/dist/pi-extensions/canvas-bash-valve.js +7 -461
- package/dist/pi-extensions/canvas-context-intro.js +2 -113
- package/dist/pi-extensions/canvas-doc-substrate.js +9 -178
- package/dist/pi-extensions/canvas-goal-capture.js +1 -83
- package/dist/pi-extensions/canvas-inbox-watcher.js +1 -1010
- package/dist/pi-extensions/canvas-passive-context.js +14 -203
- package/dist/pi-extensions/canvas-preview-result.js +2 -72
- package/dist/pi-extensions/canvas-prompt-scrub.js +2 -54
- package/dist/pi-extensions/canvas-recap.js +11 -405
- package/dist/pi-extensions/canvas-review-boundary.js +3 -63
- package/dist/pi-extensions/canvas-stamp.js +2 -77
- package/dist/pi-extensions/canvas-stophook.js +1 -643
- package/dist/pi-extensions/canvas-structured-output.js +13 -35
- package/dist/pi-extensions/canvas-tool-guide.js +9 -78
- package/dist/pi-extensions/envelope-merge.js +8 -29
- package/dist/prompts/review.js +20 -42
- package/dist/shared/birth-announcement.js +1 -25
- package/dist/shared/crtr-version.js +1 -18
- package/dist/shared/env.js +1 -214
- package/dist/shared/generated-context.js +11 -226
- package/dist/shared/predicates.js +1 -4
- package/dist/shared/shell-quote.js +1 -5
- package/dist/shared/tool-groups.js +1 -64
- package/dist/shared/working-activity.js +1 -27
- package/dist/suppress-experimental-warnings.js +1 -15
- package/dist/types.js +1 -185
- package/docs/public-api.md +10 -9
- package/package.json +6 -4
- package/runtime.lock.json +5 -5
- package/scripts/pack-minify.mjs +108 -0
- package/dist/api/__tests__/integration/client.test.d.ts +0 -1
- package/dist/api/__tests__/integration/client.test.js +0 -163
- package/dist/builtin-pi-packages/pi-crtr-extensions/__tests__/insights-active-init.test.ts +0 -98
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-commands.test.ts +0 -93
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/integration/provider-rotation.test.ts +0 -2530
- package/dist/clients/__tests__/helpers/human-daemon.d.ts +0 -11
- package/dist/clients/__tests__/helpers/human-daemon.js +0 -60
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.js +0 -97
- package/dist/clients/attach/__tests__/bash-call-width.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/bash-call-width.test.js +0 -38
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +0 -175
- package/dist/clients/attach/__tests__/completion-frecency.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/completion-frecency.test.js +0 -35
- package/dist/clients/attach/__tests__/context-message.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/context-message.test.js +0 -130
- package/dist/clients/attach/__tests__/crtr-output.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/crtr-output.test.js +0 -68
- package/dist/clients/attach/__tests__/diagram.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/diagram.test.js +0 -42
- package/dist/clients/attach/__tests__/edit-diff.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/edit-diff.test.js +0 -31
- package/dist/clients/attach/__tests__/frame-selection.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/frame-selection.test.js +0 -84
- package/dist/clients/attach/__tests__/group-activity.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/group-activity.test.js +0 -165
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.js +0 -83
- package/dist/clients/attach/__tests__/pane-tag-successor.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/pane-tag-successor.test.js +0 -56
- package/dist/clients/attach/__tests__/profile-files.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/profile-files.test.js +0 -21
- package/dist/clients/attach/__tests__/prompt-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/prompt-preview.test.js +0 -21
- package/dist/clients/attach/__tests__/ref-autocomplete.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/ref-autocomplete.test.js +0 -64
- package/dist/clients/attach/__tests__/titled-editor-paste.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-paste.test.js +0 -114
- package/dist/clients/attach/__tests__/titled-editor-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-preview.test.js +0 -83
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.js +0 -81
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.js +0 -135
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.js +0 -66
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +0 -35
- package/dist/clients/inbox/review/__tests__/review-core.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/review-core.test.js +0 -52
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.js +0 -100
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.d.ts +0 -1
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.js +0 -69
- package/dist/commands/__tests__/human.test.d.ts +0 -1
- package/dist/commands/__tests__/human.test.js +0 -172
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.js +0 -237
- package/dist/commands/__tests__/integration/migrate.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/migrate.test.js +0 -1330
- package/dist/commands/__tests__/node-message.test.d.ts +0 -1
- package/dist/commands/__tests__/node-message.test.js +0 -112
- package/dist/commands/__tests__/node-new.test.d.ts +0 -1
- package/dist/commands/__tests__/node-new.test.js +0 -58
- package/dist/commands/__tests__/revive-now-gate.test.d.ts +0 -1
- package/dist/commands/__tests__/revive-now-gate.test.js +0 -62
- package/dist/commands/__tests__/seam/daemon-status.test.d.ts +0 -1
- package/dist/commands/__tests__/seam/daemon-status.test.js +0 -29
- package/dist/commands/__tests__/surface-reload-target.test.d.ts +0 -1
- package/dist/commands/__tests__/surface-reload-target.test.js +0 -21
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.js +0 -379
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.js +0 -124
- package/dist/commands/memory/__tests__/repository-root-lint.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/repository-root-lint.test.js +0 -148
- package/dist/commands/sys/__tests__/config-model-ladders.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/config-model-ladders.test.js +0 -114
- package/dist/commands/sys/__tests__/setup-core.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/setup-core.test.js +0 -45
- package/dist/commands/sys/__tests__/sync-project-guidance.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/sync-project-guidance.test.js +0 -244
- package/dist/core/__tests__/bash-guard.test.d.ts +0 -1
- package/dist/core/__tests__/bash-guard.test.js +0 -190
- package/dist/core/__tests__/boot-fault-attempt.test.d.ts +0 -1
- package/dist/core/__tests__/boot-fault-attempt.test.js +0 -105
- package/dist/core/__tests__/boot.test.d.ts +0 -1
- package/dist/core/__tests__/boot.test.js +0 -274
- package/dist/core/__tests__/branded-host-concurrency.test.d.ts +0 -1
- package/dist/core/__tests__/branded-host-concurrency.test.js +0 -72
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +0 -75
- package/dist/core/__tests__/broker-launch-candidates.test.d.ts +0 -1
- package/dist/core/__tests__/broker-launch-candidates.test.js +0 -311
- package/dist/core/__tests__/broker-preflight.test.d.ts +0 -1
- package/dist/core/__tests__/broker-preflight.test.js +0 -95
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.d.ts +0 -1
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.js +0 -82
- package/dist/core/__tests__/broker-turn-admission.test.d.ts +0 -1
- package/dist/core/__tests__/broker-turn-admission.test.js +0 -44
- package/dist/core/__tests__/canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-db-boundary.test.js +0 -46
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +0 -710
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.js +0 -310
- package/dist/core/__tests__/canvas-inbox-watcher.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher.test.js +0 -397
- package/dist/core/__tests__/canvas.test.d.ts +0 -1
- package/dist/core/__tests__/canvas.test.js +0 -138
- package/dist/core/__tests__/child-death-wake.test.d.ts +0 -1
- package/dist/core/__tests__/child-death-wake.test.js +0 -153
- package/dist/core/__tests__/cli-help-contract.test.d.ts +0 -1
- package/dist/core/__tests__/cli-help-contract.test.js +0 -152
- package/dist/core/__tests__/close.test.d.ts +0 -1
- package/dist/core/__tests__/close.test.js +0 -284
- package/dist/core/__tests__/collectible.test.d.ts +0 -1
- package/dist/core/__tests__/collectible.test.js +0 -89
- package/dist/core/__tests__/config-change-delta.test.d.ts +0 -1
- package/dist/core/__tests__/config-change-delta.test.js +0 -108
- package/dist/core/__tests__/context-intro.test.d.ts +0 -1
- package/dist/core/__tests__/context-intro.test.js +0 -123
- package/dist/core/__tests__/cron-armed-context-failure.test.d.ts +0 -1
- package/dist/core/__tests__/cron-armed-context-failure.test.js +0 -150
- package/dist/core/__tests__/cron-held-settlement.test.d.ts +0 -1
- package/dist/core/__tests__/cron-held-settlement.test.js +0 -240
- package/dist/core/__tests__/cron-node-sink-parked-root.test.d.ts +0 -1
- package/dist/core/__tests__/cron-node-sink-parked-root.test.js +0 -166
- package/dist/core/__tests__/cron-self-cancel-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/cron-self-cancel-delivery.test.js +0 -84
- package/dist/core/__tests__/cron-timeout-descendants.test.d.ts +0 -1
- package/dist/core/__tests__/cron-timeout-descendants.test.js +0 -114
- package/dist/core/__tests__/daemon-boot.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-boot.test.js +0 -422
- package/dist/core/__tests__/daemon-wedge.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-wedge.test.js +0 -106
- package/dist/core/__tests__/dead-node-policy-table.test.d.ts +0 -1
- package/dist/core/__tests__/dead-node-policy-table.test.js +0 -77
- package/dist/core/__tests__/events-contract.test.d.ts +0 -1
- package/dist/core/__tests__/events-contract.test.js +0 -76
- package/dist/core/__tests__/extension-abort.test.d.ts +0 -1
- package/dist/core/__tests__/extension-abort.test.js +0 -21
- package/dist/core/__tests__/fault-classifier.test.d.ts +0 -1
- package/dist/core/__tests__/fault-classifier.test.js +0 -138
- package/dist/core/__tests__/fixtures/api-server-host.d.ts +0 -1
- package/dist/core/__tests__/fixtures/api-server-host.js +0 -47
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.js +0 -34
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.js +0 -32
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +0 -347
- package/dist/core/__tests__/fixtures/fake-engine.js +0 -1509
- package/dist/core/__tests__/fixtures/fake-pi-host.d.ts +0 -2
- package/dist/core/__tests__/fixtures/fake-pi-host.js +0 -311
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.d.ts +0 -1
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.js +0 -75
- package/dist/core/__tests__/fixtures/metadata-migration-race.d.ts +0 -1
- package/dist/core/__tests__/fixtures/metadata-migration-race.js +0 -49
- package/dist/core/__tests__/focuses.test.d.ts +0 -1
- package/dist/core/__tests__/focuses.test.js +0 -113
- package/dist/core/__tests__/fs-utils.test.d.ts +0 -1
- package/dist/core/__tests__/fs-utils.test.js +0 -50
- package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -43
- package/dist/core/__tests__/helpers/broker-clients.js +0 -174
- package/dist/core/__tests__/helpers/fleet.d.ts +0 -12
- package/dist/core/__tests__/helpers/fleet.js +0 -50
- package/dist/core/__tests__/helpers/harness.d.ts +0 -124
- package/dist/core/__tests__/helpers/harness.js +0 -806
- package/dist/core/__tests__/helpers/viewer-panes.d.ts +0 -12
- package/dist/core/__tests__/helpers/viewer-panes.js +0 -133
- package/dist/core/__tests__/history-inbox.test.d.ts +0 -1
- package/dist/core/__tests__/history-inbox.test.js +0 -121
- package/dist/core/__tests__/human-action-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/human-action-delivery.test.js +0 -162
- package/dist/core/__tests__/human-actions.test.d.ts +0 -1
- package/dist/core/__tests__/human-actions.test.js +0 -120
- package/dist/core/__tests__/inline-memory-refs.test.d.ts +0 -1
- package/dist/core/__tests__/inline-memory-refs.test.js +0 -225
- package/dist/core/__tests__/integration/broker-fork-seam.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-fork-seam.test.js +0 -193
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.js +0 -750
- package/dist/core/__tests__/integration/broker-snapshot-history.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-snapshot-history.test.js +0 -288
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.js +0 -103
- package/dist/core/__tests__/integration/command-plugins.test.d.ts +0 -1
- package/dist/core/__tests__/integration/command-plugins.test.js +0 -1200
- package/dist/core/__tests__/integration/deferred-no-wake.test.d.ts +0 -1
- package/dist/core/__tests__/integration/deferred-no-wake.test.js +0 -610
- package/dist/core/__tests__/integration/flagship-lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/flagship-lifecycle.test.js +0 -264
- package/dist/core/__tests__/integration/fresh-home-commands.test.d.ts +0 -1
- package/dist/core/__tests__/integration/fresh-home-commands.test.js +0 -49
- package/dist/core/__tests__/integration/git-optional-locks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/git-optional-locks.test.js +0 -81
- package/dist/core/__tests__/integration/host-teardown-process-group.test.d.ts +0 -1
- package/dist/core/__tests__/integration/host-teardown-process-group.test.js +0 -480
- package/dist/core/__tests__/integration/lifecycle-hooks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/lifecycle-hooks.test.js +0 -498
- package/dist/core/__tests__/integration/live-mutation-verbs.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation-verbs.test.js +0 -180
- package/dist/core/__tests__/integration/live-mutation.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation.test.js +0 -173
- package/dist/core/__tests__/integration/plugin-revalidate.test.d.ts +0 -1
- package/dist/core/__tests__/integration/plugin-revalidate.test.js +0 -359
- package/dist/core/__tests__/integration/profile-pause.test.d.ts +0 -1
- package/dist/core/__tests__/integration/profile-pause.test.js +0 -115
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.js +0 -151
- package/dist/core/__tests__/integration/revive.test.d.ts +0 -1
- package/dist/core/__tests__/integration/revive.test.js +0 -615
- package/dist/core/__tests__/integration/spawn-root.test.d.ts +0 -1
- package/dist/core/__tests__/integration/spawn-root.test.js +0 -536
- package/dist/core/__tests__/integration/subscription-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/integration/subscription-delivery.test.js +0 -132
- package/dist/core/__tests__/integration/tmux-surface.test.d.ts +0 -1
- package/dist/core/__tests__/integration/tmux-surface.test.js +0 -330
- package/dist/core/__tests__/integration/worktree-land.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-land.test.js +0 -607
- package/dist/core/__tests__/integration/worktree-reap.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-reap.test.js +0 -842
- package/dist/core/__tests__/kickoff.test.d.ts +0 -1
- package/dist/core/__tests__/kickoff.test.js +0 -196
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.js +0 -62
- package/dist/core/__tests__/lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle.test.js +0 -176
- package/dist/core/__tests__/live-lifecycle-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/live-lifecycle-prompt.test.js +0 -63
- package/dist/core/__tests__/memory-resolver-precedence.test.d.ts +0 -1
- package/dist/core/__tests__/memory-resolver-precedence.test.js +0 -228
- package/dist/core/__tests__/migration.test.d.ts +0 -1
- package/dist/core/__tests__/migration.test.js +0 -946
- package/dist/core/__tests__/model-pin-durability.test.d.ts +0 -1
- package/dist/core/__tests__/model-pin-durability.test.js +0 -195
- package/dist/core/__tests__/model-routes-config.test.d.ts +0 -1
- package/dist/core/__tests__/model-routes-config.test.js +0 -150
- package/dist/core/__tests__/nested-store-discovery.test.d.ts +0 -1
- package/dist/core/__tests__/nested-store-discovery.test.js +0 -89
- package/dist/core/__tests__/node-outcome.test.d.ts +0 -1
- package/dist/core/__tests__/node-outcome.test.js +0 -246
- package/dist/core/__tests__/on-read-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-crouter-home-fence.test.js +0 -66
- package/dist/core/__tests__/on-read-dedup-resume.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-dedup-resume.test.js +0 -132
- package/dist/core/__tests__/on-read-nested-store.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-nested-store.test.js +0 -135
- package/dist/core/__tests__/parse-argv-stdin-secret.test.d.ts +0 -1
- package/dist/core/__tests__/parse-argv-stdin-secret.test.js +0 -68
- package/dist/core/__tests__/passive-subscription.test.d.ts +0 -1
- package/dist/core/__tests__/passive-subscription.test.js +0 -120
- package/dist/core/__tests__/pid-identity-match.test.d.ts +0 -1
- package/dist/core/__tests__/pid-identity-match.test.js +0 -145
- package/dist/core/__tests__/pid-zombie.test.d.ts +0 -1
- package/dist/core/__tests__/pid-zombie.test.js +0 -42
- package/dist/core/__tests__/plugin-kinds.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-kinds.test.js +0 -182
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.js +0 -43
- package/dist/core/__tests__/plugin-page-components.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-page-components.test.js +0 -159
- package/dist/core/__tests__/preview-mirror-cap.test.d.ts +0 -1
- package/dist/core/__tests__/preview-mirror-cap.test.js +0 -53
- package/dist/core/__tests__/preview-registry-sync.test.d.ts +0 -1
- package/dist/core/__tests__/preview-registry-sync.test.js +0 -107
- package/dist/core/__tests__/profile-project-memory-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/profile-project-memory-delivery.test.js +0 -644
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.d.ts +0 -1
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.js +0 -91
- package/dist/core/__tests__/prune.test.d.ts +0 -1
- package/dist/core/__tests__/prune.test.js +0 -243
- package/dist/core/__tests__/push-final-guard.test.d.ts +0 -1
- package/dist/core/__tests__/push-final-guard.test.js +0 -191
- package/dist/core/__tests__/relaunch-root.test.d.ts +0 -1
- package/dist/core/__tests__/relaunch-root.test.js +0 -249
- package/dist/core/__tests__/remote-canvas-target.test.d.ts +0 -1
- package/dist/core/__tests__/remote-canvas-target.test.js +0 -93
- package/dist/core/__tests__/repository-association.test.d.ts +0 -1
- package/dist/core/__tests__/repository-association.test.js +0 -153
- package/dist/core/__tests__/repository-root-identity.test.d.ts +0 -1
- package/dist/core/__tests__/repository-root-identity.test.js +0 -223
- package/dist/core/__tests__/respawn-throttle.test.d.ts +0 -1
- package/dist/core/__tests__/respawn-throttle.test.js +0 -20
- package/dist/core/__tests__/review-model-floor.test.d.ts +0 -1
- package/dist/core/__tests__/review-model-floor.test.js +0 -83
- package/dist/core/__tests__/revive-all.test.d.ts +0 -1
- package/dist/core/__tests__/revive-all.test.js +0 -157
- package/dist/core/__tests__/revive-capacity.test.d.ts +0 -1
- package/dist/core/__tests__/revive-capacity.test.js +0 -184
- package/dist/core/__tests__/revive-parked-fresh.test.d.ts +0 -1
- package/dist/core/__tests__/revive-parked-fresh.test.js +0 -176
- package/dist/core/__tests__/scope-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/scope-crouter-home-fence.test.js +0 -55
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +0 -262
- package/dist/core/__tests__/seam/broker-attach-stream.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-stream.test.js +0 -176
- package/dist/core/__tests__/seam/broker-cap-freeze.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-cap-freeze.test.js +0 -155
- package/dist/core/__tests__/seam/broker-crash-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-crash-teardown.test.js +0 -131
- package/dist/core/__tests__/seam/broker-pane-resolution.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-pane-resolution.test.js +0 -204
- package/dist/core/__tests__/seam/broker-provider-retry.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-provider-retry.test.js +0 -686
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.js +0 -82
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.js +0 -50
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.js +0 -138
- package/dist/core/__tests__/seam/dormancy-release.test.d.ts +0 -1
- package/dist/core/__tests__/seam/dormancy-release.test.js +0 -516
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.js +0 -65
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.d.ts +0 -1
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.js +0 -84
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.d.ts +0 -1
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.js +0 -160
- package/dist/core/__tests__/seam/node-outcome-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/node-outcome-delivery.test.js +0 -177
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.d.ts +0 -1
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.js +0 -31
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.d.ts +0 -1
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.js +0 -60
- package/dist/core/__tests__/seam/self-close-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/self-close-teardown.test.js +0 -49
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.d.ts +0 -1
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.js +0 -100
- package/dist/core/__tests__/secrets.test.d.ts +0 -1
- package/dist/core/__tests__/secrets.test.js +0 -49
- package/dist/core/__tests__/self-update.test.d.ts +0 -1
- package/dist/core/__tests__/self-update.test.js +0 -46
- package/dist/core/__tests__/session-branch.test.d.ts +0 -1
- package/dist/core/__tests__/session-branch.test.js +0 -61
- package/dist/core/__tests__/session-cycles.test.d.ts +0 -1
- package/dist/core/__tests__/session-cycles.test.js +0 -133
- package/dist/core/__tests__/session-model.test.d.ts +0 -1
- package/dist/core/__tests__/session-model.test.js +0 -111
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.d.ts +0 -1
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +0 -71
- package/dist/core/__tests__/stdin-body-no-discard.test.d.ts +0 -1
- package/dist/core/__tests__/stdin-body-no-discard.test.js +0 -33
- package/dist/core/__tests__/stdout-errors.test.d.ts +0 -1
- package/dist/core/__tests__/stdout-errors.test.js +0 -16
- package/dist/core/__tests__/stop-guard.test.d.ts +0 -1
- package/dist/core/__tests__/stop-guard.test.js +0 -237
- package/dist/core/__tests__/stream-watchdog.test.d.ts +0 -1
- package/dist/core/__tests__/stream-watchdog.test.js +0 -154
- package/dist/core/__tests__/subscription-pool-credential-guard.test.d.ts +0 -1
- package/dist/core/__tests__/subscription-pool-credential-guard.test.js +0 -95
- package/dist/core/__tests__/tmux-driver-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/tmux-driver-boundary.test.js +0 -50
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.d.ts +0 -1
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.js +0 -54
- package/dist/core/__tests__/worktree-landing.test.d.ts +0 -1
- package/dist/core/__tests__/worktree-landing.test.js +0 -11
- package/dist/core/__tests__/yield-ensures-daemon.test.d.ts +0 -1
- package/dist/core/__tests__/yield-ensures-daemon.test.js +0 -55
- package/dist/core/broker-client/__tests__/transport-relay.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-relay.test.js +0 -214
- package/dist/core/broker-client/__tests__/transport-socket.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-socket.test.js +0 -73
- package/dist/core/canvas/__tests__/attention.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/attention.test.js +0 -83
- package/dist/core/canvas/__tests__/history-transcript.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/history-transcript.test.js +0 -102
- package/dist/core/canvas/__tests__/remote-canvas-source.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-canvas-source.test.js +0 -328
- package/dist/core/canvas/__tests__/remote-transport.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-transport.test.js +0 -97
- package/dist/core/canvas/__tests__/render-remote.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/render-remote.test.js +0 -243
- package/dist/core/canvas/__tests__/session-window.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/session-window.test.js +0 -70
- package/dist/core/feed/__tests__/inbox-migrate.test.d.ts +0 -1
- package/dist/core/feed/__tests__/inbox-migrate.test.js +0 -49
- package/dist/core/human/__tests__/page-catalog.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-catalog.test.js +0 -20
- package/dist/core/human/__tests__/page-html-markdown.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-html-markdown.test.js +0 -48
- package/dist/core/human/__tests__/page.test.d.ts +0 -1
- package/dist/core/human/__tests__/page.test.js +0 -92
- package/dist/core/keybindings/__tests__/resolve.test.d.ts +0 -1
- package/dist/core/keybindings/__tests__/resolve.test.js +0 -171
- package/dist/core/profiles/__tests__/env-store.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/env-store.test.js +0 -99
- package/dist/core/profiles/__tests__/fuzzy-match.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/fuzzy-match.test.js +0 -51
- package/dist/core/profiles/__tests__/root-profile.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/root-profile.test.js +0 -59
- package/dist/core/review/__tests__/capture-origin.test.d.ts +0 -1
- package/dist/core/review/__tests__/capture-origin.test.js +0 -150
- package/dist/core/review/__tests__/comments.test.d.ts +0 -1
- package/dist/core/review/__tests__/comments.test.js +0 -116
- package/dist/core/review/__tests__/remap.test.d.ts +0 -1
- package/dist/core/review/__tests__/remap.test.js +0 -177
- package/dist/core/review/__tests__/stage-identity.test.d.ts +0 -1
- package/dist/core/review/__tests__/stage-identity.test.js +0 -150
- package/dist/core/runtime/__tests__/engine-route.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/engine-route.test.js +0 -36
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.js +0 -45
- package/dist/core/runtime/__tests__/node-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/node-env.test.js +0 -73
- package/dist/core/runtime/__tests__/spawn-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/spawn-env.test.js +0 -259
- package/dist/core/substrate/__tests__/surface-match-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-command.test.js +0 -89
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.js +0 -28
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.js +0 -92
- package/dist/daemon/__tests__/autostart-storm.test.d.ts +0 -1
- package/dist/daemon/__tests__/autostart-storm.test.js +0 -128
- package/dist/daemon/__tests__/broker-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/broker-ownership.test.js +0 -25
- package/dist/daemon/__tests__/daemon-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/daemon-ownership.test.js +0 -27
- package/dist/daemon/__tests__/helpers/source-daemon.d.ts +0 -30
- package/dist/daemon/__tests__/helpers/source-daemon.js +0 -176
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.js +0 -83
- package/dist/daemon/__tests__/integration/migration-startup.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/migration-startup.test.js +0 -127
- package/dist/daemon/__tests__/node-deadline-lane.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-deadline-lane.test.js +0 -77
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.js +0 -146
- package/dist/daemon/__tests__/node-outcome-delivery.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-delivery.test.js +0 -116
- package/dist/daemon/__tests__/reconciler-signature.test.d.ts +0 -1
- package/dist/daemon/__tests__/reconciler-signature.test.js +0 -37
- package/dist/daemon/__tests__/subtree-filter-freshness.test.d.ts +0 -1
- package/dist/daemon/__tests__/subtree-filter-freshness.test.js +0 -63
- package/dist/daemon/__tests__/thaw-order.test.d.ts +0 -1
- package/dist/daemon/__tests__/thaw-order.test.js +0 -55
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.js +0 -58
- package/dist/daemon/api/__tests__/broker-settle-park.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/broker-settle-park.test.js +0 -175
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.js +0 -216
- package/dist/daemon/api/__tests__/error-seam.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/error-seam.test.js +0 -83
- package/dist/daemon/api/__tests__/model-config.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/model-config.test.js +0 -73
- package/dist/daemon/api/__tests__/node-create-description.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-create-description.test.js +0 -127
- package/dist/daemon/api/__tests__/node-model-validation.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-model-validation.test.js +0 -183
- package/dist/daemon/api/__tests__/nodes-activity-query.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/nodes-activity-query.test.js +0 -99
- package/dist/daemon/api/__tests__/profile-launch-gates.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-launch-gates.test.js +0 -172
- package/dist/daemon/api/__tests__/profile-metadata-route.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-metadata-route.test.js +0 -95
- package/dist/daemon/api/__tests__/reopen-delivery.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/reopen-delivery.test.js +0 -260
- package/dist/daemon/api/__tests__/seam/api-server.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/api-server.test.js +0 -442
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.js +0 -310
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.js +0 -351
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.js +0 -159
- package/dist/daemon/api/__tests__/seam/profile-delete.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/profile-delete.test.js +0 -372
- package/dist/daemon/api/__tests__/submit-result.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/submit-result.test.js +0 -215
- package/dist/migrations/__tests__/activation-concurrency.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation-concurrency.test.js +0 -146
- package/dist/migrations/__tests__/activation.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation.test.js +0 -152
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.d.ts +0 -1
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.js +0 -149
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.js +0 -86
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +0 -364
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.js +0 -106
- package/dist/pi-extensions/__tests__/canvas-recap.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-recap.test.js +0 -62
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +0 -432
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +0 -152
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +0 -88
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.js +0 -96
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.js +0 -133
- package/dist/pi-extensions/__tests__/pre-command-gate.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/pre-command-gate.test.js +0 -232
- package/dist/shared/__tests__/env-boundary.test.d.ts +0 -1
- package/dist/shared/__tests__/env-boundary.test.js +0 -95
- package/dist/shared/__tests__/generated-context-grammar.test.d.ts +0 -1
- package/dist/shared/__tests__/generated-context-grammar.test.js +0 -80
- package/docs/compat/hearth-crtr-v1.md +0 -179
- package/docs/compat/hearth-crtr-v2.md +0 -177
- package/docs/compat/hearth-crtr-v3.md +0 -176
- package/docs/compat/hearth-crtr-v4.md +0 -182
- package/docs/compat/hearth-crtr-v5.md +0 -169
package/dist/core/scope.js
CHANGED
|
@@ -1,254 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { homedir } from 'node:os';
|
|
3
|
-
import { existsSync, statSync } from 'node:fs';
|
|
4
|
-
import { join, resolve, dirname } from 'node:path';
|
|
5
|
-
import { CRTR_DIR_NAME } from '../types.js';
|
|
6
|
-
import { assetRoot } from './asset-root.js';
|
|
7
|
-
import { usage } from './errors.js';
|
|
8
|
-
import { loadProfileManifest } from './profiles/manifest.js';
|
|
9
|
-
import { realpathOrSelf } from './fs-utils.js';
|
|
10
|
-
import { resetRepositoryAssociationCache } from './memory/repository-association.js';
|
|
11
|
-
/** The ceiling a project root carries when no profile relationship contributes
|
|
12
|
-
* it — the top rung, i.e. no cap at all. */
|
|
13
|
-
export const NEUTRAL_PROJECT_MEMORY = 'content';
|
|
14
|
-
// Cache of resolved project-scope-root STACKS, keyed by (resolved cwd, profile
|
|
15
|
-
// id). A profile widens the pointer set beyond the bare cwd (see
|
|
16
|
-
// findProjectScopeRoots below), so the cache key must carry both — the same
|
|
17
|
-
// cwd resolves to a different stack under a different (or no) profile.
|
|
18
|
-
// `resetScopeCache()` (called by every profile mutation in
|
|
19
|
-
// src/core/profiles/manifest.ts) clears the whole cache; there is no
|
|
20
|
-
// per-entry invalidation because a profile edit can change which pointer set
|
|
21
|
-
// any cached cwd belongs to. Path-only callers read `roots`, which is the same
|
|
22
|
-
// array in the same order as `annotated`.
|
|
23
|
-
const scopeRootsCache = new Map();
|
|
24
|
-
function scopeRootsCacheKey(resolvedStartDir, profileId) {
|
|
25
|
-
return `${resolvedStartDir}\u0000${profileId ?? ''}`;
|
|
26
|
-
}
|
|
27
|
-
export function builtinMemoryRoot() {
|
|
28
|
-
// Builtin memory is the only content the builtin scope carries — the scope
|
|
29
|
-
// has no scopeRoot (scopeRoot('builtin') is null).
|
|
30
|
-
return join(assetRoot(), 'builtin-memory');
|
|
31
|
-
}
|
|
32
|
-
export function builtinPiPackagesDir() {
|
|
33
|
-
return join(assetRoot(), 'builtin-pi-packages');
|
|
34
|
-
}
|
|
35
|
-
export function builtinPiPackageDir(name) {
|
|
36
|
-
return join(builtinPiPackagesDir(), name);
|
|
37
|
-
}
|
|
38
|
-
export function userScopeRoot() {
|
|
39
|
-
return join(homedir(), CRTR_DIR_NAME);
|
|
40
|
-
}
|
|
41
|
-
function isProjectScopeDir(candidate, userRoot) {
|
|
42
|
-
if (!existsSync(candidate))
|
|
43
|
-
return false;
|
|
44
|
-
// Compare realpaths, not raw strings: on macOS `$HOME` is commonly under a
|
|
45
|
-
// symlinked prefix (`/tmp` -> `/private/tmp`) while `process.cwd()` (the
|
|
46
|
-
// walk's start point, resolved by the OS) is already realpath'd. A raw
|
|
47
|
-
// string compare then fails to recognize the user root one level up from a
|
|
48
|
-
// project dir nested under HOME, leaking the user scope in as a bogus
|
|
49
|
-
// project scope root.
|
|
50
|
-
if (realpathOrSelf(candidate) === realpathOrSelf(userRoot))
|
|
51
|
-
return false;
|
|
52
|
-
try {
|
|
53
|
-
return statSync(candidate).isDirectory();
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
export function findProjectScopeRoot(startDir = process.cwd()) {
|
|
60
|
-
return findProjectScopeRoots(startDir)[0] ?? null;
|
|
61
|
-
}
|
|
62
|
-
/** Walk `startDir` upward collecting every ancestor `.crouter/` dir (nearest
|
|
63
|
-
* first). The user-global `~/.crouter/` is excluded because it is the separate
|
|
64
|
-
* user scope, not a project ancestor.
|
|
65
|
-
*
|
|
66
|
-
* The walk is FENCED at `homedir()`: it must never climb at or above HOME.
|
|
67
|
-
* Home's own `.crouter/` is the user scope (already excluded), and nothing at
|
|
68
|
-
* or above HOME is a project ancestor. Without this fence, a relocated HOME
|
|
69
|
-
* nested under a directory tree that itself contains a `.crouter/` (e.g. a
|
|
70
|
-
* mock-VM home under the real host home) would sweep the host's `~/.crouter`
|
|
71
|
-
* (and any other above-HOME `.crouter`) in as a bogus project ancestor,
|
|
72
|
-
* leaking one machine's user-global memory into a nested-HOME node. The
|
|
73
|
-
* explicit file-context store discovery in substrate/on-read.ts applies the
|
|
74
|
-
* same fence. A read whose start dir is outside HOME (e.g. a production VM
|
|
75
|
-
* with HOME=/root and no ancestor `.crouter`) walks to the filesystem root. */
|
|
76
|
-
function collectAncestorScopeRoots(startDir, userRoot) {
|
|
77
|
-
const roots = [];
|
|
78
|
-
const home = realpathOrSelf(homedir());
|
|
79
|
-
let dir = resolve(startDir);
|
|
80
|
-
while (true) {
|
|
81
|
-
const candidate = join(dir, CRTR_DIR_NAME);
|
|
82
|
-
if (isProjectScopeDir(candidate, userRoot))
|
|
83
|
-
roots.push(candidate);
|
|
84
|
-
if (realpathOrSelf(dir) === home)
|
|
85
|
-
return roots;
|
|
86
|
-
const parent = dirname(dir);
|
|
87
|
-
if (parent === dir)
|
|
88
|
-
return roots;
|
|
89
|
-
dir = parent;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/** Every project scope root visible from `startDir`, nearest first — now a
|
|
93
|
-
* PROFILE-AWARE pointer walk, not a single-pointer ancestor walk. Pointers are
|
|
94
|
-
* `[startDir]` plus, when `profileId` resolves to a manifest, each of its
|
|
95
|
-
* `projects` in manifest order; each pointer independently walks upward
|
|
96
|
-
* collecting every ancestor `.crouter/` dir, the pointers' contributions
|
|
97
|
-
* concatenate in pointer order, and the combined list dedupes to first
|
|
98
|
-
* occurrence — so a `.crouter/` shared by two pointers contributes once, at
|
|
99
|
-
* whichever pointer reached it first. `profileId` defaults to the process's
|
|
100
|
-
* selected profile (`CRTR_PROFILE_ID`); a null/unresolvable profile collapses
|
|
101
|
-
* to the single `[startDir]` pointer, reproducing today's behavior exactly.
|
|
102
|
-
* Results are cached per (resolved startDir, profileId) — `resetScopeCache()`
|
|
103
|
-
* invalidates on any profile mutation that can change project dirs or names.
|
|
104
|
-
*
|
|
105
|
-
* Each root also carries the selected profile relationship's memory ceiling
|
|
106
|
-
* (`findProjectScopeRootsWithMemory`), a projection layered onto this order
|
|
107
|
-
* rather than part of it: discovery provenance decides precedence, the
|
|
108
|
-
* relationship decides the ceiling, and the two never influence each other. */
|
|
109
|
-
export function findProjectScopeRoots(startDir = process.cwd(), profileId = envProfileId() || null) {
|
|
110
|
-
return resolveProjectScopeRoots(startDir, profileId).roots;
|
|
111
|
-
}
|
|
112
|
-
/** `findProjectScopeRoots` with each root's profile memory ceiling attached —
|
|
113
|
-
* same roots, same order. A root contributed by a profile entry's ancestor
|
|
114
|
-
* walk takes that entry's `memory` (first entry in manifest order wins, even
|
|
115
|
-
* when cwd also reaches the root); every other root takes the neutral
|
|
116
|
-
* `content` ceiling. */
|
|
117
|
-
export function findProjectScopeRootsWithMemory(startDir = process.cwd(), profileId = envProfileId() || null) {
|
|
118
|
-
return resolveProjectScopeRoots(startDir, profileId).annotated;
|
|
119
|
-
}
|
|
120
|
-
function resolveProjectScopeRoots(startDir, profileId) {
|
|
121
|
-
const resolvedStart = resolve(startDir);
|
|
122
|
-
const key = scopeRootsCacheKey(resolvedStart, profileId);
|
|
123
|
-
const cached = scopeRootsCache.get(key);
|
|
124
|
-
if (cached !== undefined)
|
|
125
|
-
return cached;
|
|
126
|
-
const userRoot = userScopeRoot();
|
|
127
|
-
// A null `memory` marks the cwd pointer: it decides precedence like any
|
|
128
|
-
// other pointer but contributes no ceiling.
|
|
129
|
-
const pointers = [
|
|
130
|
-
{ dir: resolvedStart, memory: null },
|
|
131
|
-
];
|
|
132
|
-
if (profileId !== null && profileId !== '') {
|
|
133
|
-
try {
|
|
134
|
-
const { manifest } = loadProfileManifest(profileId);
|
|
135
|
-
for (const project of manifest.projects)
|
|
136
|
-
pointers.push({ dir: project.path, memory: project.memory });
|
|
137
|
-
}
|
|
138
|
-
catch {
|
|
139
|
-
// Missing/deleted/invalid profile: this is a hot path every memory and
|
|
140
|
-
// launch-config resolve runs through, so fall back to the bare
|
|
141
|
-
// `[startDir]` pointer rather than throwing.
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
const seen = new Set();
|
|
145
|
-
const roots = [];
|
|
146
|
-
const caps = new Map();
|
|
147
|
-
for (const pointer of pointers) {
|
|
148
|
-
for (const root of collectAncestorScopeRoots(pointer.dir, userRoot)) {
|
|
149
|
-
if (!seen.has(root)) {
|
|
150
|
-
seen.add(root);
|
|
151
|
-
roots.push(root);
|
|
152
|
-
}
|
|
153
|
-
// Independent of the order dedupe above: a root already discovered from
|
|
154
|
-
// cwd still takes the first profile entry's ceiling.
|
|
155
|
-
if (pointer.memory !== null && !caps.has(root))
|
|
156
|
-
caps.set(root, pointer.memory);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
const annotated = roots.map((root) => ({ root, memory: caps.get(root) ?? NEUTRAL_PROJECT_MEMORY }));
|
|
160
|
-
const entry = { roots, annotated };
|
|
161
|
-
scopeRootsCache.set(key, entry);
|
|
162
|
-
return entry;
|
|
163
|
-
}
|
|
164
|
-
export function projectScopeRoot(startDir) {
|
|
165
|
-
return findProjectScopeRoot(startDir);
|
|
166
|
-
}
|
|
167
|
-
export function projectScopeRoots(startDir, profileId) {
|
|
168
|
-
return findProjectScopeRoots(startDir, profileId);
|
|
169
|
-
}
|
|
170
|
-
export function projectScopeRootsWithMemory(startDir, profileId) {
|
|
171
|
-
return findProjectScopeRootsWithMemory(startDir, profileId);
|
|
172
|
-
}
|
|
173
|
-
export function scopeRoot(scope) {
|
|
174
|
-
// The builtin scope has no scope-root dir; its content lives in dedicated
|
|
175
|
-
// package directories such as builtinMemoryRoot().
|
|
176
|
-
if (scope === 'builtin')
|
|
177
|
-
return null;
|
|
178
|
-
return scope === 'user' ? userScopeRoot() : projectScopeRoot();
|
|
179
|
-
}
|
|
180
|
-
export function requireScopeRoot(scope) {
|
|
181
|
-
const root = scopeRoot(scope);
|
|
182
|
-
if (!root) {
|
|
183
|
-
throw usage(`no ${scope} scope available — run \`crtr init\` here or use --scope user`);
|
|
184
|
-
}
|
|
185
|
-
return root;
|
|
186
|
-
}
|
|
187
|
-
export function ensureProjectScopeRoot(startDir = process.cwd()) {
|
|
188
|
-
const found = findProjectScopeRoot(startDir);
|
|
189
|
-
if (found)
|
|
190
|
-
return found;
|
|
191
|
-
// Initialize new project scope at startDir. `found` was falsy, which means
|
|
192
|
-
// the (resolvedStart, profileId) cache key above resolved to an EMPTY stack
|
|
193
|
-
// (no pointer had an existing `.crouter/` yet) — seed that same cache entry
|
|
194
|
-
// with the about-to-exist root so a caller that immediately writes under it
|
|
195
|
-
// (without an intervening disk rescan) sees it without a stale empty-array
|
|
196
|
-
// cache hit.
|
|
197
|
-
const resolvedStart = resolve(startDir);
|
|
198
|
-
const root = join(resolvedStart, CRTR_DIR_NAME);
|
|
199
|
-
const profileId = envProfileId() || null;
|
|
200
|
-
// Neutral ceiling: the empty cached stack proves no profile entry's ancestor
|
|
201
|
-
// walk reached this root, since it did not exist to be walked into.
|
|
202
|
-
scopeRootsCache.set(scopeRootsCacheKey(resolvedStart, profileId), {
|
|
203
|
-
roots: [root],
|
|
204
|
-
annotated: [{ root, memory: NEUTRAL_PROJECT_MEMORY }],
|
|
205
|
-
});
|
|
206
|
-
return root;
|
|
207
|
-
}
|
|
208
|
-
export function pluginsDir(scope) {
|
|
209
|
-
const root = scopeRoot(scope);
|
|
210
|
-
return root ? join(root, 'plugins') : null;
|
|
211
|
-
}
|
|
212
|
-
export function marketplacesDir(scope) {
|
|
213
|
-
const root = scopeRoot(scope);
|
|
214
|
-
return root ? join(root, 'marketplaces') : null;
|
|
215
|
-
}
|
|
216
|
-
/** Where substrate memory documents live per scope. Builtin memory is the
|
|
217
|
-
* special case — its own package dir (builtinMemoryRoot), since the builtin
|
|
218
|
-
* scope has no scopeRoot. User and project memory live at
|
|
219
|
-
* scopeRoot(scope)/memory. */
|
|
220
|
-
export function scopeMemoryDir(scope) {
|
|
221
|
-
if (scope === 'builtin')
|
|
222
|
-
return builtinMemoryRoot();
|
|
223
|
-
const root = scope === 'user' ? userScopeRoot() : projectScopeRoot();
|
|
224
|
-
return root ? join(root, 'memory') : null;
|
|
225
|
-
}
|
|
226
|
-
/** Where a plugin's substrate memory documents live: `<plugin.root>/memory`.
|
|
227
|
-
* The resolver mounts these under the virtual `<pluginName>/` namespace. */
|
|
228
|
-
export function pluginMemoryDir(plugin) {
|
|
229
|
-
return join(plugin.root, 'memory');
|
|
230
|
-
}
|
|
231
|
-
export function resolveScopeArg(scopeArg) {
|
|
232
|
-
if (scopeArg === undefined)
|
|
233
|
-
return 'all';
|
|
234
|
-
const value = scopeArg.toLowerCase();
|
|
235
|
-
if (value === 'user' || value === 'project' || value === 'builtin' || value === 'all')
|
|
236
|
-
return value;
|
|
237
|
-
throw usage(`invalid --scope: ${scopeArg} (expected user|project|builtin|all)`);
|
|
238
|
-
}
|
|
239
|
-
export function listScopes(scopeArg) {
|
|
240
|
-
const v = resolveScopeArg(scopeArg);
|
|
241
|
-
if (v === 'all') {
|
|
242
|
-
const out = [];
|
|
243
|
-
if (projectScopeRoot())
|
|
244
|
-
out.push('project');
|
|
245
|
-
out.push('user');
|
|
246
|
-
out.push('builtin');
|
|
247
|
-
return out;
|
|
248
|
-
}
|
|
249
|
-
return [v];
|
|
250
|
-
}
|
|
251
|
-
export function resetScopeCache() {
|
|
252
|
-
scopeRootsCache.clear();
|
|
253
|
-
resetRepositoryAssociationCache();
|
|
254
|
-
}
|
|
1
|
+
var $=Object.defineProperty;var r=(o,t)=>$(o,"name",{value:t,configurable:!0});import{envProfileId as h}from"../shared/env.js";import{homedir as w}from"node:os";import{existsSync as A,statSync as O}from"node:fs";import{join as c,resolve as y,dirname as T}from"node:path";import{CRTR_DIR_NAME as R}from"../types.js";import{assetRoot as M}from"./asset-root.js";import{usage as v}from"./errors.js";import{loadProfileManifest as L}from"./profiles/manifest.js";import{realpathOrSelf as l}from"./fs-utils.js";import{resetRepositoryAssociationCache as N}from"./memory/repository-association.js";const g="content",a=new Map;function D(o,t){return`${o}\0${t??""}`}r(D,"scopeRootsCacheKey");function W(){return c(M(),"builtin-memory")}r(W,"builtinMemoryRoot");function q(){return c(M(),"builtin-pi-packages")}r(q,"builtinPiPackagesDir");function to(o){return c(q(),o)}r(to,"builtinPiPackageDir");function x(){return c(w(),R)}r(x,"userScopeRoot");function J(o,t){if(!A(o)||l(o)===l(t))return!1;try{return O(o).isDirectory()}catch{return!1}}r(J,"isProjectScopeDir");function C(o=process.cwd()){return k(o)[0]??null}r(C,"findProjectScopeRoot");function K(o,t){const e=[],i=l(w());let n=y(o);for(;;){const f=c(n,R);if(J(f,t)&&e.push(f),l(n)===i)return e;const p=T(n);if(p===n)return e;n=p}}r(K,"collectAncestorScopeRoots");function k(o=process.cwd(),t=h()||null){return E(o,t).roots}r(k,"findProjectScopeRoots");function U(o=process.cwd(),t=h()||null){return E(o,t).annotated}r(U,"findProjectScopeRootsWithMemory");function E(o,t){const e=y(o),i=D(e,t),n=a.get(i);if(n!==void 0)return n;const f=x(),p=[{dir:e,memory:null}];if(t!==null&&t!=="")try{const{manifest:s}=L(t);for(const u of s.projects)p.push({dir:u.path,memory:u.memory})}catch{}const P=new Set,m=[],d=new Map;for(const s of p)for(const u of K(s.dir,f))P.has(u)||(P.add(u),m.push(u)),s.memory!==null&&!d.has(u)&&d.set(u,s.memory);const _=m.map(s=>({root:s,memory:d.get(s)??g})),b={roots:m,annotated:_};return a.set(i,b),b}r(E,"resolveProjectScopeRoots");function S(o){return C(o)}r(S,"projectScopeRoot");function ro(o,t){return k(o,t)}r(ro,"projectScopeRoots");function eo(o,t){return U(o,t)}r(eo,"projectScopeRootsWithMemory");function j(o){return o==="builtin"?null:o==="user"?x():S()}r(j,"scopeRoot");function no(o){const t=j(o);if(!t)throw v(`no ${o} scope available \u2014 run \`crtr init\` here or use --scope user`);return t}r(no,"requireScopeRoot");function co(o=process.cwd()){const t=C(o);if(t)return t;const e=y(o),i=c(e,R),n=h()||null;return a.set(D(e,n),{roots:[i],annotated:[{root:i,memory:g}]}),i}r(co,"ensureProjectScopeRoot");function io(o){const t=j(o);return t?c(t,"plugins"):null}r(io,"pluginsDir");function so(o){const t=j(o);return t?c(t,"marketplaces"):null}r(so,"marketplacesDir");function uo(o){if(o==="builtin")return W();const t=o==="user"?x():S();return t?c(t,"memory"):null}r(uo,"scopeMemoryDir");function po(o){return c(o.root,"memory")}r(po,"pluginMemoryDir");function Y(o){if(o===void 0)return"all";const t=o.toLowerCase();if(t==="user"||t==="project"||t==="builtin"||t==="all")return t;throw v(`invalid --scope: ${o} (expected user|project|builtin|all)`)}r(Y,"resolveScopeArg");function fo(o){const t=Y(o);if(t==="all"){const e=[];return S()&&e.push("project"),e.push("user"),e.push("builtin"),e}return[t]}r(fo,"listScopes");function lo(){a.clear(),N()}r(lo,"resetScopeCache");export{g as NEUTRAL_PROJECT_MEMORY,W as builtinMemoryRoot,to as builtinPiPackageDir,q as builtinPiPackagesDir,co as ensureProjectScopeRoot,C as findProjectScopeRoot,k as findProjectScopeRoots,U as findProjectScopeRootsWithMemory,fo as listScopes,so as marketplacesDir,po as pluginMemoryDir,io as pluginsDir,S as projectScopeRoot,ro as projectScopeRoots,eo as projectScopeRootsWithMemory,no as requireScopeRoot,lo as resetScopeCache,Y as resolveScopeArg,uo as scopeMemoryDir,j as scopeRoot,x as userScopeRoot};
|
|
@@ -1,135 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { chmodSync, existsSync, mkdirSync, readdirSync, statSync, writeFileSync } from 'node:fs';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import { CONFIG_FILE, PROFILE_DIR, STATE_FILE } from '../../types.js';
|
|
5
|
-
import { withExclusiveDirectoryLock } from '../exclusive-lock.js';
|
|
6
|
-
import { providerStore, projectStore, userStore } from './paths.js';
|
|
7
|
-
import { createScopedSchema, SCOPED_SCHEMA_VERSION } from './schema.js';
|
|
8
|
-
const handles = new Map();
|
|
9
|
-
export const PROFILE_ID_SHAPE = /^[a-z0-9]+(?:-[a-z0-9]+)*-[0-9a-f]{8}$/;
|
|
10
|
-
export function writeOwnerRoot(db, key, root) {
|
|
11
|
-
db.prepare('UPDATE scope_owners SET root=? WHERE owner_key=?').run(root, key);
|
|
12
|
-
}
|
|
13
|
-
function version(db) {
|
|
14
|
-
return Number(db.prepare('PRAGMA user_version').get().user_version);
|
|
15
|
-
}
|
|
16
|
-
function secure(path) {
|
|
17
|
-
if (existsSync(path))
|
|
18
|
-
chmodSync(path, 0o600);
|
|
19
|
-
for (const suffix of ['-wal', '-shm'])
|
|
20
|
-
if (existsSync(`${path}${suffix}`))
|
|
21
|
-
chmodSync(`${path}${suffix}`, 0o600);
|
|
22
|
-
}
|
|
23
|
-
export function scopedStoreExists(store) {
|
|
24
|
-
return existsSync(store.path);
|
|
25
|
-
}
|
|
26
|
-
export function legacyScopedStorePaths(store) {
|
|
27
|
-
if (store.kind === 'project')
|
|
28
|
-
return [join(store.root, STATE_FILE)];
|
|
29
|
-
if (store.kind === 'provider')
|
|
30
|
-
return [join(store.root, 'anthropic-subscriptions.json'), join(store.root, 'openai-codex-subscriptions.json'), join(store.root, 'provider-rotation.json')];
|
|
31
|
-
const paths = [join(store.root, CONFIG_FILE), join(store.root, STATE_FILE), join(store.root, 'profile-defaults.json')];
|
|
32
|
-
const profiles = join(store.root, PROFILE_DIR);
|
|
33
|
-
if (existsSync(profiles))
|
|
34
|
-
for (const entry of readdirSync(profiles, { withFileTypes: true }))
|
|
35
|
-
if (entry.isDirectory() && PROFILE_ID_SHAPE.test(entry.name))
|
|
36
|
-
paths.push(join(profiles, entry.name, 'profile.json'), join(profiles, entry.name, CONFIG_FILE), join(profiles, entry.name, STATE_FILE));
|
|
37
|
-
return paths;
|
|
38
|
-
}
|
|
39
|
-
/** Acquiring the store on demand races every other process reaching the same
|
|
40
|
-
* fresh root at once (e.g. two brokers sharing a fresh agent dir on first
|
|
41
|
-
* launch), so the check-then-create runs under a cross-process lock — the
|
|
42
|
-
* same primitive worktree-sweep and the plugin-swap path already use. */
|
|
43
|
-
export function initializeFreshScopedStore(input) {
|
|
44
|
-
const store = input.kind === 'user' ? userStore(input.root) : input.kind === 'project' ? projectStore(input.root) : providerStore(input.root);
|
|
45
|
-
if (scopedStoreExists(store))
|
|
46
|
-
return;
|
|
47
|
-
mkdirSync(store.root, { recursive: true, mode: 0o700 });
|
|
48
|
-
withExclusiveDirectoryLock(join(store.root, '.init.lock'), () => {
|
|
49
|
-
if (scopedStoreExists(store))
|
|
50
|
-
return;
|
|
51
|
-
const legacyPath = legacyScopedStorePaths(store).find(existsSync);
|
|
52
|
-
if (legacyPath !== undefined)
|
|
53
|
-
throw new Error(`legacy scoped state exists at ${legacyPath}; crtr was updated and \`crtr sys daemon restart\` converts local state`);
|
|
54
|
-
createScopedStore(store, (db) => {
|
|
55
|
-
createScopedSchema(db, store.kind);
|
|
56
|
-
if (store.kind !== 'provider')
|
|
57
|
-
writeOwnerRoot(db, store.kind, store.root);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
export function openScopedStore(store) {
|
|
62
|
-
const cached = handles.get(store.path);
|
|
63
|
-
if (cached !== undefined)
|
|
64
|
-
return cached;
|
|
65
|
-
if (!existsSync(store.path))
|
|
66
|
-
initializeFreshScopedStore(store);
|
|
67
|
-
const db = new DatabaseSync(store.path);
|
|
68
|
-
db.exec('PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON;');
|
|
69
|
-
const found = version(db);
|
|
70
|
-
if (found === 0) {
|
|
71
|
-
db.close();
|
|
72
|
-
throw new Error(`scoped SQL store is uninitialized: ${store.path}; crtr was updated and \`crtr sys daemon restart\` converts local state`);
|
|
73
|
-
}
|
|
74
|
-
if (found > SCOPED_SCHEMA_VERSION) {
|
|
75
|
-
db.close();
|
|
76
|
-
throw new Error(`scoped SQL store ${store.path} uses unsupported schema version ${found}`);
|
|
77
|
-
}
|
|
78
|
-
if (found !== SCOPED_SCHEMA_VERSION) {
|
|
79
|
-
db.close();
|
|
80
|
-
throw new Error(`scoped SQL store ${store.path} requires an explicit conversion`);
|
|
81
|
-
}
|
|
82
|
-
secure(store.path);
|
|
83
|
-
handles.set(store.path, db);
|
|
84
|
-
return db;
|
|
85
|
-
}
|
|
86
|
-
export function createScopedStore(store, create) {
|
|
87
|
-
if (existsSync(store.path))
|
|
88
|
-
throw new Error(`scoped SQL store already exists: ${store.path}`);
|
|
89
|
-
mkdirSync(store.root, { recursive: true, mode: 0o700 });
|
|
90
|
-
if (!statSync(store.root).isDirectory())
|
|
91
|
-
throw new Error(`scoped SQL root is not a directory: ${store.root}`);
|
|
92
|
-
chmodSync(store.root, 0o700);
|
|
93
|
-
writeFileSync(store.path, '', { mode: 0o600 });
|
|
94
|
-
const db = new DatabaseSync(store.path);
|
|
95
|
-
try {
|
|
96
|
-
db.exec('PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; BEGIN IMMEDIATE;');
|
|
97
|
-
create(db);
|
|
98
|
-
db.exec('COMMIT');
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
try {
|
|
102
|
-
db.exec('ROLLBACK');
|
|
103
|
-
}
|
|
104
|
-
catch { }
|
|
105
|
-
throw error;
|
|
106
|
-
}
|
|
107
|
-
finally {
|
|
108
|
-
secure(store.path);
|
|
109
|
-
db.close();
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
export function withScopedWrite(store, run) {
|
|
113
|
-
const db = openScopedStore(store);
|
|
114
|
-
if (db.isTransaction)
|
|
115
|
-
return run(db);
|
|
116
|
-
db.exec('BEGIN IMMEDIATE');
|
|
117
|
-
try {
|
|
118
|
-
const value = run(db);
|
|
119
|
-
db.exec('COMMIT');
|
|
120
|
-
secure(store.path);
|
|
121
|
-
return value;
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
try {
|
|
125
|
-
db.exec('ROLLBACK');
|
|
126
|
-
}
|
|
127
|
-
catch { }
|
|
128
|
-
throw error;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
export function closeScopedStores() {
|
|
132
|
-
for (const db of handles.values())
|
|
133
|
-
db.close();
|
|
134
|
-
handles.clear();
|
|
135
|
-
}
|
|
1
|
+
var m=Object.defineProperty;var c=(o,e)=>m(o,"name",{value:e,configurable:!0});import{DatabaseSync as f}from"node:sqlite";import{chmodSync as a,existsSync as i,mkdirSync as u,readdirSync as y,statSync as w,writeFileSync as E}from"node:fs";import{join as n}from"node:path";import{CONFIG_FILE as h,PROFILE_DIR as x,STATE_FILE as p}from"../../types.js";import{withExclusiveDirectoryLock as A}from"../exclusive-lock.js";import{providerStore as M,projectStore as _,userStore as v}from"./paths.js";import{createScopedSchema as I,SCOPED_SCHEMA_VERSION as S}from"./schema.js";const s=new Map,L=/^[a-z0-9]+(?:-[a-z0-9]+)*-[0-9a-f]{8}$/;function R(o,e,r){o.prepare("UPDATE scope_owners SET root=? WHERE owner_key=?").run(r,e)}c(R,"writeOwnerRoot");function P(o){return Number(o.prepare("PRAGMA user_version").get().user_version)}c(P,"version");function d(o){i(o)&&a(o,384);for(const e of["-wal","-shm"])i(`${o}${e}`)&&a(`${o}${e}`,384)}c(d,"secure");function l(o){return i(o.path)}c(l,"scopedStoreExists");function k(o){if(o.kind==="project")return[n(o.root,p)];if(o.kind==="provider")return[n(o.root,"anthropic-subscriptions.json"),n(o.root,"openai-codex-subscriptions.json"),n(o.root,"provider-rotation.json")];const e=[n(o.root,h),n(o.root,p),n(o.root,"profile-defaults.json")],r=n(o.root,x);if(i(r))for(const t of y(r,{withFileTypes:!0}))t.isDirectory()&&L.test(t.name)&&e.push(n(r,t.name,"profile.json"),n(r,t.name,h),n(r,t.name,p));return e}c(k,"legacyScopedStorePaths");function O(o){const e=o.kind==="user"?v(o.root):o.kind==="project"?_(o.root):M(o.root);l(e)||(u(e.root,{recursive:!0,mode:448}),A(n(e.root,".init.lock"),()=>{if(l(e))return;const r=k(e).find(i);if(r!==void 0)throw new Error(`legacy scoped state exists at ${r}; crtr was updated and \`crtr sys daemon restart\` converts local state`);j(e,t=>{I(t,e.kind),e.kind!=="provider"&&R(t,e.kind,e.root)})}))}c(O,"initializeFreshScopedStore");function $(o){const e=s.get(o.path);if(e!==void 0)return e;i(o.path)||O(o);const r=new f(o.path);r.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON;");const t=P(r);if(t===0)throw r.close(),new Error(`scoped SQL store is uninitialized: ${o.path}; crtr was updated and \`crtr sys daemon restart\` converts local state`);if(t>S)throw r.close(),new Error(`scoped SQL store ${o.path} uses unsupported schema version ${t}`);if(t!==S)throw r.close(),new Error(`scoped SQL store ${o.path} requires an explicit conversion`);return d(o.path),s.set(o.path,r),r}c($,"openScopedStore");function j(o,e){if(i(o.path))throw new Error(`scoped SQL store already exists: ${o.path}`);if(u(o.root,{recursive:!0,mode:448}),!w(o.root).isDirectory())throw new Error(`scoped SQL root is not a directory: ${o.root}`);a(o.root,448),E(o.path,"",{mode:384});const r=new f(o.path);try{r.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; BEGIN IMMEDIATE;"),e(r),r.exec("COMMIT")}catch(t){try{r.exec("ROLLBACK")}catch{}throw t}finally{d(o.path),r.close()}}c(j,"createScopedStore");function Q(o,e){const r=$(o);if(r.isTransaction)return e(r);r.exec("BEGIN IMMEDIATE");try{const t=e(r);return r.exec("COMMIT"),d(o.path),t}catch(t){try{r.exec("ROLLBACK")}catch{}throw t}}c(Q,"withScopedWrite");function z(){for(const o of s.values())o.close();s.clear()}c(z,"closeScopedStores");export{L as PROFILE_ID_SHAPE,z as closeScopedStores,j as createScopedStore,O as initializeFreshScopedStore,k as legacyScopedStorePaths,$ as openScopedStore,l as scopedStoreExists,Q as withScopedWrite,R as writeOwnerRoot};
|
|
@@ -1,181 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import lockfile from 'proper-lockfile';
|
|
5
|
-
import { CONFIG_FILE, PROFILE_DIR, STATE_FILE } from '../../types.js';
|
|
6
|
-
import { LockedJsonFile } from '../locked-file.js';
|
|
7
|
-
import { createScopedStore, legacyScopedStorePaths, PROFILE_ID_SHAPE, scopedStoreExists, writeOwnerRoot } from './db.js';
|
|
8
|
-
import { providerStore, projectStore, userStore } from './paths.js';
|
|
9
|
-
import { createScopedSchema } from './schema.js';
|
|
10
|
-
function json(path) { return JSON.parse(readFileSync(path, 'utf8')); }
|
|
11
|
-
function existsLegacy(paths) { return paths.some(existsSync); }
|
|
12
|
-
function preserve(root, paths) { const target = join(root, '.legacy-scoped-state'); mkdirSync(target, { recursive: true, mode: 0o700 }); chmodSync(target, 0o700); for (const path of paths)
|
|
13
|
-
if (existsSync(path) && statSync(path).isFile()) {
|
|
14
|
-
const fromRoot = relative(root, path);
|
|
15
|
-
if (fromRoot === '' || fromRoot.startsWith('..'))
|
|
16
|
-
throw new Error(`legacy state is outside its owning root: ${path}`);
|
|
17
|
-
const destination = join(target, fromRoot);
|
|
18
|
-
mkdirSync(dirname(destination), { recursive: true, mode: 0o700 });
|
|
19
|
-
copyFileSync(path, destination);
|
|
20
|
-
chmodSync(destination, 0o600);
|
|
21
|
-
} }
|
|
22
|
-
function withLegacyProjectStateLock(root, run) {
|
|
23
|
-
const path = join(root, STATE_FILE);
|
|
24
|
-
const release = lockfile.lockSync(path, { realpath: false, retries: 0, stale: 30_000, update: 10_000 });
|
|
25
|
-
try {
|
|
26
|
-
return run();
|
|
27
|
-
}
|
|
28
|
-
finally {
|
|
29
|
-
release();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
export { initializeFreshScopedStore } from './db.js';
|
|
33
|
-
/** Conversion is intentionally explicit. Deployment coordination must prove all legacy writers at these shared roots are stopped before calling it. */
|
|
34
|
-
export function convertLegacyScopedStore(input) {
|
|
35
|
-
const store = input.kind === 'user' ? userStore(input.root) : input.kind === 'project' ? projectStore(input.root) : providerStore(input.root);
|
|
36
|
-
if (scopedStoreExists(store))
|
|
37
|
-
return;
|
|
38
|
-
if (input.kind === 'provider')
|
|
39
|
-
throw new Error('provider conversion requires convertLegacyProviderStore() under coordinated shared-agent-dir activation');
|
|
40
|
-
const paths = legacyScopedStorePaths(store);
|
|
41
|
-
const convert = () => {
|
|
42
|
-
if (scopedStoreExists(store))
|
|
43
|
-
return;
|
|
44
|
-
createScopedStore(store, (db) => {
|
|
45
|
-
createScopedSchema(db, input.kind);
|
|
46
|
-
const owner = input.kind === 'user' ? 'user' : 'project';
|
|
47
|
-
writeOwnerRoot(db, owner, store.root);
|
|
48
|
-
if (input.kind === 'user')
|
|
49
|
-
importUser(db, store.root);
|
|
50
|
-
else
|
|
51
|
-
importState(db, owner, join(store.root, STATE_FILE));
|
|
52
|
-
});
|
|
53
|
-
if (existsLegacy(paths))
|
|
54
|
-
preserve(store.root, paths);
|
|
55
|
-
};
|
|
56
|
-
if (input.kind === 'project')
|
|
57
|
-
withLegacyProjectStateLock(store.root, convert);
|
|
58
|
-
else
|
|
59
|
-
convert();
|
|
60
|
-
}
|
|
61
|
-
function parseLegacyProviderPool(path) {
|
|
62
|
-
if (!existsSync(path))
|
|
63
|
-
return [];
|
|
64
|
-
const raw = JSON.parse(readFileSync(path, 'utf8'));
|
|
65
|
-
if (!Array.isArray(raw))
|
|
66
|
-
throw new Error(`legacy subscription pool is malformed: ${path}`);
|
|
67
|
-
const labels = new Set();
|
|
68
|
-
return raw.map((item, position) => {
|
|
69
|
-
if (item === null || typeof item !== 'object' || Array.isArray(item))
|
|
70
|
-
throw new Error(`legacy subscription pool entry ${position + 1} is malformed: ${path}`);
|
|
71
|
-
const value = item;
|
|
72
|
-
const label = typeof value.label === 'string' ? value.label.trim() : '';
|
|
73
|
-
const refresh = typeof value.refresh === 'string' ? value.refresh.trim() : '';
|
|
74
|
-
const access = typeof value.access === 'string' ? value.access.trim() : '';
|
|
75
|
-
const expires = Number(value.expires);
|
|
76
|
-
if (!label || !refresh || !access || !Number.isFinite(expires))
|
|
77
|
-
throw new Error(`legacy subscription pool entry ${position + 1} is incomplete: ${path}`);
|
|
78
|
-
const labelKey = label.toLowerCase();
|
|
79
|
-
if (labels.has(labelKey))
|
|
80
|
-
throw new Error(`legacy subscription pool has duplicate label "${label}": ${path}`);
|
|
81
|
-
labels.add(labelKey);
|
|
82
|
-
const timing = (field) => Number.isFinite(Number(value[field])) ? Number(value[field]) : 0;
|
|
83
|
-
const accountId = typeof value.accountId === 'string' && value.accountId.trim() !== '' ? value.accountId.trim() : undefined;
|
|
84
|
-
return { label, refresh, access, expires, rateLimitedUntil: timing('rateLimitedUntil'), lastAttemptAt: timing('lastAttemptAt'), lastRateLimitedAt: timing('lastRateLimitedAt'), ...(value.authFailure === 'invalid_grant' ? { authFailure: 'invalid_grant' } : {}), ...(accountId ? { accountId } : {}) };
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
function parseLegacyRotation(path) {
|
|
88
|
-
if (!existsSync(path))
|
|
89
|
-
return {};
|
|
90
|
-
const raw = JSON.parse(readFileSync(path, 'utf8'));
|
|
91
|
-
if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
|
|
92
|
-
throw new Error(`legacy provider rotation settings are malformed: ${path}`);
|
|
93
|
-
const value = raw;
|
|
94
|
-
return { ...(value.defaultFallbackStrength === 'ultra' || value.defaultFallbackStrength === 'strong' || value.defaultFallbackStrength === 'medium' || value.defaultFallbackStrength === 'light' ? { defaultFallbackStrength: value.defaultFallbackStrength } : {}), ...(typeof value.revertWhenAvailable === 'boolean' ? { revertWhenAvailable: value.revertWhenAvailable } : {}) };
|
|
95
|
-
}
|
|
96
|
-
async function withLegacyProviderLocks(paths, run) {
|
|
97
|
-
const releases = [];
|
|
98
|
-
try {
|
|
99
|
-
for (const path of paths)
|
|
100
|
-
if (existsSync(path))
|
|
101
|
-
releases.push(await lockfile.lock(path, { realpath: false, retries: 0, stale: 30_000, update: 10_000 }));
|
|
102
|
-
return await run();
|
|
103
|
-
}
|
|
104
|
-
finally {
|
|
105
|
-
await Promise.allSettled(releases.reverse().map((release) => release()));
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/** Converts legacy provider pools only after the activation owner has stopped every writer sharing this agent directory. */
|
|
109
|
-
export async function convertLegacyProviderStore(agentDir) {
|
|
110
|
-
const store = providerStore(agentDir);
|
|
111
|
-
if (scopedStoreExists(store))
|
|
112
|
-
return;
|
|
113
|
-
const paths = legacyScopedStorePaths(store);
|
|
114
|
-
await withLegacyProviderLocks(paths, async () => {
|
|
115
|
-
if (scopedStoreExists(store))
|
|
116
|
-
return;
|
|
117
|
-
const pools = new Map(paths.slice(0, 2).map((path, index) => [index === 0 ? 'anthropic' : 'openai-codex', parseLegacyProviderPool(path)]));
|
|
118
|
-
const rotation = parseLegacyRotation(paths[2]);
|
|
119
|
-
preserve(store.root, paths);
|
|
120
|
-
for (const [provider, pool] of pools) {
|
|
121
|
-
const accounts = Object.fromEntries(pool.map((entry) => { const id = randomUUID(); return [id, { refresh: entry.refresh, access: entry.access, expires: entry.expires, ...(entry.accountId ? { accountId: entry.accountId } : {}) }]; }));
|
|
122
|
-
const file = new LockedJsonFile(join(store.root, `${provider}-credentials.json`), true, '{"version":1,"accounts":{}}\n');
|
|
123
|
-
await file.withLockAsync(async (_current, _held, publish) => { publish(`${JSON.stringify({ version: 1, accounts })}\n`); return { result: undefined }; });
|
|
124
|
-
}
|
|
125
|
-
createScopedStore(store, (db) => {
|
|
126
|
-
createScopedSchema(db, 'provider');
|
|
127
|
-
for (const [provider, pool] of pools) {
|
|
128
|
-
const accounts = JSON.parse(readFileSync(join(store.root, `${provider}-credentials.json`), 'utf8'));
|
|
129
|
-
const ids = Object.keys(accounts.accounts);
|
|
130
|
-
const insert = db.prepare('INSERT INTO managed_accounts(provider_id,id,label,label_key,position,last_attempt_at,last_rate_limited_at,rate_limited_until,auth_failure) VALUES(?,?,?,?,?,?,?,?,?)');
|
|
131
|
-
pool.forEach((entry, position) => insert.run(provider, ids[position], entry.label, entry.label.toLowerCase(), position, entry.lastAttemptAt, entry.lastRateLimitedAt, entry.rateLimitedUntil, entry.authFailure ?? null));
|
|
132
|
-
}
|
|
133
|
-
if (rotation.defaultFallbackStrength !== undefined || rotation.revertWhenAvailable !== undefined)
|
|
134
|
-
db.prepare('INSERT INTO rotation_settings(singleton,default_fallback_strength,revert_when_available) VALUES(1,?,?)').run(rotation.defaultFallbackStrength ?? null, rotation.revertWhenAvailable === undefined ? null : rotation.revertWhenAvailable ? 1 : 0);
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
function importSettings(db, owner, path) { if (!existsSync(path))
|
|
139
|
-
return; const raw = json(path); if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
|
|
140
|
-
throw new Error(`legacy config is malformed: ${path}`); db.prepare('INSERT INTO scope_settings(owner_key,raw_json) VALUES(?,?)').run(owner, JSON.stringify(raw)); }
|
|
141
|
-
function importState(db, owner, path) { if (!existsSync(path))
|
|
142
|
-
return; const raw = json(path); if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
|
|
143
|
-
throw new Error(`legacy state is malformed: ${path}`); const state = raw; db.prepare('INSERT INTO scope_bookkeeping(owner_key,last_self_check,active_canvas) VALUES(?,?,?)').run(owner, state.last_self_check ?? null, state.activeCanvas ?? null); const market = db.prepare('INSERT INTO scope_marketplaces(owner_key,name,last_updated) VALUES(?,?,?)'); for (const [name, value] of Object.entries(state.marketplaces ?? {}))
|
|
144
|
-
market.run(owner, name, value.last_updated ?? null); const plugins = db.prepare('INSERT INTO scope_plugins(owner_key,name,last_updated,etag,checked_at) VALUES(?,?,?,?,?)'); for (const [name, value] of Object.entries(state.plugins ?? {}))
|
|
145
|
-
plugins.run(owner, name, value.last_updated ?? null, value.etag ?? null, value.checked_at ?? null); }
|
|
146
|
-
function importUser(db, root) {
|
|
147
|
-
importSettings(db, 'user', join(root, CONFIG_FILE));
|
|
148
|
-
importState(db, 'user', join(root, STATE_FILE));
|
|
149
|
-
const profiles = join(root, PROFILE_DIR);
|
|
150
|
-
if (existsSync(profiles))
|
|
151
|
-
for (const entry of readdirSync(profiles, { withFileTypes: true })) {
|
|
152
|
-
if (!entry.isDirectory() || !PROFILE_ID_SHAPE.test(entry.name))
|
|
153
|
-
continue;
|
|
154
|
-
const id = entry.name;
|
|
155
|
-
const profileRoot = join(profiles, id);
|
|
156
|
-
const path = join(profileRoot, 'profile.json');
|
|
157
|
-
if (!existsSync(path))
|
|
158
|
-
throw new Error(`legacy profile manifest is missing: ${path}`);
|
|
159
|
-
const manifest = json(path);
|
|
160
|
-
if (!manifest || typeof manifest !== 'object' || !Array.isArray(manifest.projects) || typeof manifest.name !== 'string' || typeof manifest.created_at !== 'string')
|
|
161
|
-
throw new Error(`legacy profile manifest is malformed: ${path}`);
|
|
162
|
-
db.prepare('INSERT INTO profiles(id,name,created_at,last_used_at,paused_at,home,default_kind,metadata_json) VALUES(?,?,?,?,?,?,?,?)').run(id, manifest.name, manifest.created_at, manifest.last_used_at ?? null, manifest.paused_at ?? null, manifest.home ?? null, manifest.default_kind ?? null, JSON.stringify(manifest.metadata ?? {}));
|
|
163
|
-
db.prepare('INSERT INTO scope_owners(owner_key,kind,root,profile_id) VALUES(?,?,?,?)').run(`profile:${id}`, 'profile', profileRoot, id);
|
|
164
|
-
const project = db.prepare('INSERT INTO profile_projects(profile_id,path,position,memory) VALUES(?,?,?,?)');
|
|
165
|
-
manifest.projects.forEach((p, position) => project.run(id, p.path, position, p.memory));
|
|
166
|
-
importSettings(db, `profile:${id}`, join(profileRoot, CONFIG_FILE));
|
|
167
|
-
importState(db, `profile:${id}`, join(profileRoot, STATE_FILE));
|
|
168
|
-
}
|
|
169
|
-
const defaults = join(root, 'profile-defaults.json');
|
|
170
|
-
if (existsSync(defaults)) {
|
|
171
|
-
const raw = json(defaults);
|
|
172
|
-
if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
|
|
173
|
-
throw new Error(`legacy profile defaults are malformed: ${defaults}`);
|
|
174
|
-
const insert = db.prepare('INSERT INTO profile_defaults(directory,profile_id) VALUES(?,?)');
|
|
175
|
-
for (const [directory, id] of Object.entries(raw)) {
|
|
176
|
-
if (typeof id !== 'string')
|
|
177
|
-
throw new Error(`legacy profile default is malformed: ${defaults}`);
|
|
178
|
-
insert.run(directory, id);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
1
|
+
var T=Object.defineProperty;var l=(e,r)=>T(e,"name",{value:r,configurable:!0});import{randomUUID as $}from"node:crypto";import{chmodSync as k,copyFileSync as R,existsSync as d,mkdirSync as E,readFileSync as _,readdirSync as U,statSync as x}from"node:fs";import{dirname as P,join as u,relative as V}from"node:path";import A from"proper-lockfile";import{CONFIG_FILE as I,PROFILE_DIR as J,STATE_FILE as S}from"../../types.js";import{LockedJsonFile as W}from"../locked-file.js";import{createScopedStore as b,legacyScopedStorePaths as L,PROFILE_ID_SHAPE as C,scopedStoreExists as g,writeOwnerRoot as D}from"./db.js";import{providerStore as N,projectStore as q,userStore as z}from"./paths.js";import{createScopedSchema as j}from"./schema.js";function h(e){return JSON.parse(_(e,"utf8"))}l(h,"json");function G(e){return e.some(d)}l(G,"existsLegacy");function O(e,r){const o=u(e,".legacy-scoped-state");E(o,{recursive:!0,mode:448}),k(o,448);for(const a of r)if(d(a)&&x(a).isFile()){const n=V(e,a);if(n===""||n.startsWith(".."))throw new Error(`legacy state is outside its owning root: ${a}`);const t=u(o,n);E(P(t),{recursive:!0,mode:448}),R(a,t),k(t,384)}}l(O,"preserve");function H(e,r){const o=u(e,S),a=A.lockSync(o,{realpath:!1,retries:0,stale:3e4,update:1e4});try{return r()}finally{a()}}l(H,"withLegacyProjectStateLock");import{initializeFreshScopedStore as ue}from"./db.js";function se(e){const r=e.kind==="user"?z(e.root):e.kind==="project"?q(e.root):N(e.root);if(g(r))return;if(e.kind==="provider")throw new Error("provider conversion requires convertLegacyProviderStore() under coordinated shared-agent-dir activation");const o=L(r),a=l(()=>{g(r)||(b(r,n=>{j(n,e.kind);const t=e.kind==="user"?"user":"project";D(n,t,r.root),e.kind==="user"?Q(n,r.root):w(n,t,u(r.root,S))}),G(o)&&O(r.root,o))},"convert");e.kind==="project"?H(r.root,a):a()}l(se,"convertLegacyScopedStore");function K(e){if(!d(e))return[];const r=JSON.parse(_(e,"utf8"));if(!Array.isArray(r))throw new Error(`legacy subscription pool is malformed: ${e}`);const o=new Set;return r.map((a,n)=>{if(a===null||typeof a!="object"||Array.isArray(a))throw new Error(`legacy subscription pool entry ${n+1} is malformed: ${e}`);const t=a,s=typeof t.label=="string"?t.label.trim():"",c=typeof t.refresh=="string"?t.refresh.trim():"",i=typeof t.access=="string"?t.access.trim():"",p=Number(t.expires);if(!s||!c||!i||!Number.isFinite(p))throw new Error(`legacy subscription pool entry ${n+1} is incomplete: ${e}`);const m=s.toLowerCase();if(o.has(m))throw new Error(`legacy subscription pool has duplicate label "${s}": ${e}`);o.add(m);const f=l(v=>Number.isFinite(Number(t[v]))?Number(t[v]):0,"timing"),y=typeof t.accountId=="string"&&t.accountId.trim()!==""?t.accountId.trim():void 0;return{label:s,refresh:c,access:i,expires:p,rateLimitedUntil:f("rateLimitedUntil"),lastAttemptAt:f("lastAttemptAt"),lastRateLimitedAt:f("lastRateLimitedAt"),...t.authFailure==="invalid_grant"?{authFailure:"invalid_grant"}:{},...y?{accountId:y}:{}}})}l(K,"parseLegacyProviderPool");function M(e){if(!d(e))return{};const r=JSON.parse(_(e,"utf8"));if(r===null||typeof r!="object"||Array.isArray(r))throw new Error(`legacy provider rotation settings are malformed: ${e}`);const o=r;return{...o.defaultFallbackStrength==="ultra"||o.defaultFallbackStrength==="strong"||o.defaultFallbackStrength==="medium"||o.defaultFallbackStrength==="light"?{defaultFallbackStrength:o.defaultFallbackStrength}:{},...typeof o.revertWhenAvailable=="boolean"?{revertWhenAvailable:o.revertWhenAvailable}:{}}}l(M,"parseLegacyRotation");async function B(e,r){const o=[];try{for(const a of e)d(a)&&o.push(await A.lock(a,{realpath:!1,retries:0,stale:3e4,update:1e4}));return await r()}finally{await Promise.allSettled(o.reverse().map(a=>a()))}}l(B,"withLegacyProviderLocks");async function ce(e){const r=N(e);if(g(r))return;const o=L(r);await B(o,async()=>{if(g(r))return;const a=new Map(o.slice(0,2).map((t,s)=>[s===0?"anthropic":"openai-codex",K(t)])),n=M(o[2]);O(r.root,o);for(const[t,s]of a){const c=Object.fromEntries(s.map(p=>[$(),{refresh:p.refresh,access:p.access,expires:p.expires,...p.accountId?{accountId:p.accountId}:{}}]));await new W(u(r.root,`${t}-credentials.json`),!0,`{"version":1,"accounts":{}}
|
|
2
|
+
`).withLockAsync(async(p,m,f)=>(f(`${JSON.stringify({version:1,accounts:c})}
|
|
3
|
+
`),{result:void 0}))}b(r,t=>{j(t,"provider");for(const[s,c]of a){const i=JSON.parse(_(u(r.root,`${s}-credentials.json`),"utf8")),p=Object.keys(i.accounts),m=t.prepare("INSERT INTO managed_accounts(provider_id,id,label,label_key,position,last_attempt_at,last_rate_limited_at,rate_limited_until,auth_failure) VALUES(?,?,?,?,?,?,?,?,?)");c.forEach((f,y)=>m.run(s,p[y],f.label,f.label.toLowerCase(),y,f.lastAttemptAt,f.lastRateLimitedAt,f.rateLimitedUntil,f.authFailure??null))}(n.defaultFallbackStrength!==void 0||n.revertWhenAvailable!==void 0)&&t.prepare("INSERT INTO rotation_settings(singleton,default_fallback_strength,revert_when_available) VALUES(1,?,?)").run(n.defaultFallbackStrength??null,n.revertWhenAvailable===void 0?null:n.revertWhenAvailable?1:0)})})}l(ce,"convertLegacyProviderStore");function F(e,r,o){if(!d(o))return;const a=h(o);if(a===null||typeof a!="object"||Array.isArray(a))throw new Error(`legacy config is malformed: ${o}`);e.prepare("INSERT INTO scope_settings(owner_key,raw_json) VALUES(?,?)").run(r,JSON.stringify(a))}l(F,"importSettings");function w(e,r,o){if(!d(o))return;const a=h(o);if(a===null||typeof a!="object"||Array.isArray(a))throw new Error(`legacy state is malformed: ${o}`);const n=a;e.prepare("INSERT INTO scope_bookkeeping(owner_key,last_self_check,active_canvas) VALUES(?,?,?)").run(r,n.last_self_check??null,n.activeCanvas??null);const t=e.prepare("INSERT INTO scope_marketplaces(owner_key,name,last_updated) VALUES(?,?,?)");for(const[c,i]of Object.entries(n.marketplaces??{}))t.run(r,c,i.last_updated??null);const s=e.prepare("INSERT INTO scope_plugins(owner_key,name,last_updated,etag,checked_at) VALUES(?,?,?,?,?)");for(const[c,i]of Object.entries(n.plugins??{}))s.run(r,c,i.last_updated??null,i.etag??null,i.checked_at??null)}l(w,"importState");function Q(e,r){F(e,"user",u(r,I)),w(e,"user",u(r,S));const o=u(r,J);if(d(o))for(const n of U(o,{withFileTypes:!0})){if(!n.isDirectory()||!C.test(n.name))continue;const t=n.name,s=u(o,t),c=u(s,"profile.json");if(!d(c))throw new Error(`legacy profile manifest is missing: ${c}`);const i=h(c);if(!i||typeof i!="object"||!Array.isArray(i.projects)||typeof i.name!="string"||typeof i.created_at!="string")throw new Error(`legacy profile manifest is malformed: ${c}`);e.prepare("INSERT INTO profiles(id,name,created_at,last_used_at,paused_at,home,default_kind,metadata_json) VALUES(?,?,?,?,?,?,?,?)").run(t,i.name,i.created_at,i.last_used_at??null,i.paused_at??null,i.home??null,i.default_kind??null,JSON.stringify(i.metadata??{})),e.prepare("INSERT INTO scope_owners(owner_key,kind,root,profile_id) VALUES(?,?,?,?)").run(`profile:${t}`,"profile",s,t);const p=e.prepare("INSERT INTO profile_projects(profile_id,path,position,memory) VALUES(?,?,?,?)");i.projects.forEach((m,f)=>p.run(t,m.path,f,m.memory)),F(e,`profile:${t}`,u(s,I)),w(e,`profile:${t}`,u(s,S))}const a=u(r,"profile-defaults.json");if(d(a)){const n=h(a);if(n===null||typeof n!="object"||Array.isArray(n))throw new Error(`legacy profile defaults are malformed: ${a}`);const t=e.prepare("INSERT INTO profile_defaults(directory,profile_id) VALUES(?,?)");for(const[s,c]of Object.entries(n)){if(typeof c!="string")throw new Error(`legacy profile default is malformed: ${a}`);t.run(s,c)}}}l(Q,"importUser");export{ce as convertLegacyProviderStore,se as convertLegacyScopedStore,ue as initializeFreshScopedStore};
|
|
@@ -1,27 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { basename, dirname, join, resolve } from 'node:path';
|
|
3
|
-
export function canonicalRoot(root) {
|
|
4
|
-
const absolute = resolve(root);
|
|
5
|
-
let existing = absolute;
|
|
6
|
-
const missing = [];
|
|
7
|
-
while (!existsSync(existing)) {
|
|
8
|
-
const parent = dirname(existing);
|
|
9
|
-
if (parent === existing)
|
|
10
|
-
return absolute;
|
|
11
|
-
missing.unshift(basename(existing));
|
|
12
|
-
existing = parent;
|
|
13
|
-
}
|
|
14
|
-
return resolve(realpathSync(existing), ...missing);
|
|
15
|
-
}
|
|
16
|
-
export function userStore(root) {
|
|
17
|
-
const canonical = canonicalRoot(root);
|
|
18
|
-
return { path: join(canonical, 'operations.db'), root: canonical, kind: 'user' };
|
|
19
|
-
}
|
|
20
|
-
export function projectStore(root) {
|
|
21
|
-
const canonical = canonicalRoot(root);
|
|
22
|
-
return { path: join(canonical, 'operations.db'), root: canonical, kind: 'project' };
|
|
23
|
-
}
|
|
24
|
-
export function providerStore(agentDir) {
|
|
25
|
-
const canonical = canonicalRoot(agentDir);
|
|
26
|
-
return { path: join(canonical, 'crouter-operations.db'), root: canonical, kind: 'provider' };
|
|
27
|
-
}
|
|
1
|
+
var p=Object.defineProperty;var r=(t,o)=>p(t,"name",{value:o,configurable:!0});import{existsSync as u,realpathSync as d}from"node:fs";import{basename as l,dirname as f,join as e,resolve as s}from"node:path";function i(t){const o=s(t);let n=o;const c=[];for(;!u(n);){const a=f(n);if(a===n)return o;c.unshift(l(n)),n=a}return s(d(n),...c)}r(i,"canonicalRoot");function b(t){const o=i(t);return{path:e(o,"operations.db"),root:o,kind:"user"}}r(b,"userStore");function S(t){const o=i(t);return{path:e(o,"operations.db"),root:o,kind:"project"}}r(S,"projectStore");function j(t){const o=i(t);return{path:e(o,"crouter-operations.db"),root:o,kind:"provider"}}r(j,"providerStore");export{i as canonicalRoot,S as projectStore,j as providerStore,b as userStore};
|