@north-light/crouter 0.3.318 → 0.3.319
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 +5 -4
- package/runtime.lock.json +5 -5
- package/dist/api/__tests__/integration/client.test.d.ts +0 -1
- package/dist/api/__tests__/integration/client.test.js +0 -163
- package/dist/builtin-pi-packages/pi-crtr-extensions/__tests__/insights-active-init.test.ts +0 -98
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-commands.test.ts +0 -93
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/integration/provider-rotation.test.ts +0 -2530
- package/dist/clients/__tests__/helpers/human-daemon.d.ts +0 -11
- package/dist/clients/__tests__/helpers/human-daemon.js +0 -60
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.js +0 -97
- package/dist/clients/attach/__tests__/bash-call-width.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/bash-call-width.test.js +0 -38
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +0 -175
- package/dist/clients/attach/__tests__/completion-frecency.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/completion-frecency.test.js +0 -35
- package/dist/clients/attach/__tests__/context-message.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/context-message.test.js +0 -130
- package/dist/clients/attach/__tests__/crtr-output.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/crtr-output.test.js +0 -68
- package/dist/clients/attach/__tests__/diagram.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/diagram.test.js +0 -42
- package/dist/clients/attach/__tests__/edit-diff.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/edit-diff.test.js +0 -31
- package/dist/clients/attach/__tests__/frame-selection.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/frame-selection.test.js +0 -84
- package/dist/clients/attach/__tests__/group-activity.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/group-activity.test.js +0 -165
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.js +0 -83
- package/dist/clients/attach/__tests__/pane-tag-successor.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/pane-tag-successor.test.js +0 -56
- package/dist/clients/attach/__tests__/profile-files.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/profile-files.test.js +0 -21
- package/dist/clients/attach/__tests__/prompt-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/prompt-preview.test.js +0 -21
- package/dist/clients/attach/__tests__/ref-autocomplete.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/ref-autocomplete.test.js +0 -64
- package/dist/clients/attach/__tests__/titled-editor-paste.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-paste.test.js +0 -114
- package/dist/clients/attach/__tests__/titled-editor-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-preview.test.js +0 -83
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.js +0 -81
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.js +0 -135
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.js +0 -66
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +0 -35
- package/dist/clients/inbox/review/__tests__/review-core.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/review-core.test.js +0 -52
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.js +0 -100
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.d.ts +0 -1
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.js +0 -69
- package/dist/commands/__tests__/human.test.d.ts +0 -1
- package/dist/commands/__tests__/human.test.js +0 -172
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.js +0 -237
- package/dist/commands/__tests__/integration/migrate.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/migrate.test.js +0 -1330
- package/dist/commands/__tests__/node-message.test.d.ts +0 -1
- package/dist/commands/__tests__/node-message.test.js +0 -112
- package/dist/commands/__tests__/node-new.test.d.ts +0 -1
- package/dist/commands/__tests__/node-new.test.js +0 -58
- package/dist/commands/__tests__/revive-now-gate.test.d.ts +0 -1
- package/dist/commands/__tests__/revive-now-gate.test.js +0 -62
- package/dist/commands/__tests__/seam/daemon-status.test.d.ts +0 -1
- package/dist/commands/__tests__/seam/daemon-status.test.js +0 -29
- package/dist/commands/__tests__/surface-reload-target.test.d.ts +0 -1
- package/dist/commands/__tests__/surface-reload-target.test.js +0 -21
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.js +0 -379
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.js +0 -124
- package/dist/commands/memory/__tests__/repository-root-lint.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/repository-root-lint.test.js +0 -148
- package/dist/commands/sys/__tests__/config-model-ladders.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/config-model-ladders.test.js +0 -114
- package/dist/commands/sys/__tests__/setup-core.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/setup-core.test.js +0 -45
- package/dist/commands/sys/__tests__/sync-project-guidance.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/sync-project-guidance.test.js +0 -244
- package/dist/core/__tests__/bash-guard.test.d.ts +0 -1
- package/dist/core/__tests__/bash-guard.test.js +0 -190
- package/dist/core/__tests__/boot-fault-attempt.test.d.ts +0 -1
- package/dist/core/__tests__/boot-fault-attempt.test.js +0 -105
- package/dist/core/__tests__/boot.test.d.ts +0 -1
- package/dist/core/__tests__/boot.test.js +0 -274
- package/dist/core/__tests__/branded-host-concurrency.test.d.ts +0 -1
- package/dist/core/__tests__/branded-host-concurrency.test.js +0 -72
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +0 -75
- package/dist/core/__tests__/broker-launch-candidates.test.d.ts +0 -1
- package/dist/core/__tests__/broker-launch-candidates.test.js +0 -311
- package/dist/core/__tests__/broker-preflight.test.d.ts +0 -1
- package/dist/core/__tests__/broker-preflight.test.js +0 -95
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.d.ts +0 -1
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.js +0 -82
- package/dist/core/__tests__/broker-turn-admission.test.d.ts +0 -1
- package/dist/core/__tests__/broker-turn-admission.test.js +0 -44
- package/dist/core/__tests__/canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-db-boundary.test.js +0 -46
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +0 -710
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.js +0 -310
- package/dist/core/__tests__/canvas-inbox-watcher.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher.test.js +0 -397
- package/dist/core/__tests__/canvas.test.d.ts +0 -1
- package/dist/core/__tests__/canvas.test.js +0 -138
- package/dist/core/__tests__/child-death-wake.test.d.ts +0 -1
- package/dist/core/__tests__/child-death-wake.test.js +0 -153
- package/dist/core/__tests__/cli-help-contract.test.d.ts +0 -1
- package/dist/core/__tests__/cli-help-contract.test.js +0 -152
- package/dist/core/__tests__/close.test.d.ts +0 -1
- package/dist/core/__tests__/close.test.js +0 -284
- package/dist/core/__tests__/collectible.test.d.ts +0 -1
- package/dist/core/__tests__/collectible.test.js +0 -89
- package/dist/core/__tests__/config-change-delta.test.d.ts +0 -1
- package/dist/core/__tests__/config-change-delta.test.js +0 -108
- package/dist/core/__tests__/context-intro.test.d.ts +0 -1
- package/dist/core/__tests__/context-intro.test.js +0 -123
- package/dist/core/__tests__/cron-armed-context-failure.test.d.ts +0 -1
- package/dist/core/__tests__/cron-armed-context-failure.test.js +0 -150
- package/dist/core/__tests__/cron-held-settlement.test.d.ts +0 -1
- package/dist/core/__tests__/cron-held-settlement.test.js +0 -240
- package/dist/core/__tests__/cron-node-sink-parked-root.test.d.ts +0 -1
- package/dist/core/__tests__/cron-node-sink-parked-root.test.js +0 -166
- package/dist/core/__tests__/cron-self-cancel-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/cron-self-cancel-delivery.test.js +0 -84
- package/dist/core/__tests__/cron-timeout-descendants.test.d.ts +0 -1
- package/dist/core/__tests__/cron-timeout-descendants.test.js +0 -114
- package/dist/core/__tests__/daemon-boot.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-boot.test.js +0 -422
- package/dist/core/__tests__/daemon-wedge.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-wedge.test.js +0 -106
- package/dist/core/__tests__/dead-node-policy-table.test.d.ts +0 -1
- package/dist/core/__tests__/dead-node-policy-table.test.js +0 -77
- package/dist/core/__tests__/events-contract.test.d.ts +0 -1
- package/dist/core/__tests__/events-contract.test.js +0 -76
- package/dist/core/__tests__/extension-abort.test.d.ts +0 -1
- package/dist/core/__tests__/extension-abort.test.js +0 -21
- package/dist/core/__tests__/fault-classifier.test.d.ts +0 -1
- package/dist/core/__tests__/fault-classifier.test.js +0 -138
- package/dist/core/__tests__/fixtures/api-server-host.d.ts +0 -1
- package/dist/core/__tests__/fixtures/api-server-host.js +0 -47
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.js +0 -34
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.js +0 -32
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +0 -347
- package/dist/core/__tests__/fixtures/fake-engine.js +0 -1509
- package/dist/core/__tests__/fixtures/fake-pi-host.d.ts +0 -2
- package/dist/core/__tests__/fixtures/fake-pi-host.js +0 -311
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.d.ts +0 -1
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.js +0 -75
- package/dist/core/__tests__/fixtures/metadata-migration-race.d.ts +0 -1
- package/dist/core/__tests__/fixtures/metadata-migration-race.js +0 -49
- package/dist/core/__tests__/focuses.test.d.ts +0 -1
- package/dist/core/__tests__/focuses.test.js +0 -113
- package/dist/core/__tests__/fs-utils.test.d.ts +0 -1
- package/dist/core/__tests__/fs-utils.test.js +0 -50
- package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -43
- package/dist/core/__tests__/helpers/broker-clients.js +0 -174
- package/dist/core/__tests__/helpers/fleet.d.ts +0 -12
- package/dist/core/__tests__/helpers/fleet.js +0 -50
- package/dist/core/__tests__/helpers/harness.d.ts +0 -124
- package/dist/core/__tests__/helpers/harness.js +0 -806
- package/dist/core/__tests__/helpers/viewer-panes.d.ts +0 -12
- package/dist/core/__tests__/helpers/viewer-panes.js +0 -133
- package/dist/core/__tests__/history-inbox.test.d.ts +0 -1
- package/dist/core/__tests__/history-inbox.test.js +0 -121
- package/dist/core/__tests__/human-action-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/human-action-delivery.test.js +0 -162
- package/dist/core/__tests__/human-actions.test.d.ts +0 -1
- package/dist/core/__tests__/human-actions.test.js +0 -120
- package/dist/core/__tests__/inline-memory-refs.test.d.ts +0 -1
- package/dist/core/__tests__/inline-memory-refs.test.js +0 -225
- package/dist/core/__tests__/integration/broker-fork-seam.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-fork-seam.test.js +0 -193
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.js +0 -750
- package/dist/core/__tests__/integration/broker-snapshot-history.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-snapshot-history.test.js +0 -288
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.js +0 -103
- package/dist/core/__tests__/integration/command-plugins.test.d.ts +0 -1
- package/dist/core/__tests__/integration/command-plugins.test.js +0 -1200
- package/dist/core/__tests__/integration/deferred-no-wake.test.d.ts +0 -1
- package/dist/core/__tests__/integration/deferred-no-wake.test.js +0 -610
- package/dist/core/__tests__/integration/flagship-lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/flagship-lifecycle.test.js +0 -264
- package/dist/core/__tests__/integration/fresh-home-commands.test.d.ts +0 -1
- package/dist/core/__tests__/integration/fresh-home-commands.test.js +0 -49
- package/dist/core/__tests__/integration/git-optional-locks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/git-optional-locks.test.js +0 -81
- package/dist/core/__tests__/integration/host-teardown-process-group.test.d.ts +0 -1
- package/dist/core/__tests__/integration/host-teardown-process-group.test.js +0 -480
- package/dist/core/__tests__/integration/lifecycle-hooks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/lifecycle-hooks.test.js +0 -498
- package/dist/core/__tests__/integration/live-mutation-verbs.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation-verbs.test.js +0 -180
- package/dist/core/__tests__/integration/live-mutation.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation.test.js +0 -173
- package/dist/core/__tests__/integration/plugin-revalidate.test.d.ts +0 -1
- package/dist/core/__tests__/integration/plugin-revalidate.test.js +0 -359
- package/dist/core/__tests__/integration/profile-pause.test.d.ts +0 -1
- package/dist/core/__tests__/integration/profile-pause.test.js +0 -115
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.js +0 -151
- package/dist/core/__tests__/integration/revive.test.d.ts +0 -1
- package/dist/core/__tests__/integration/revive.test.js +0 -615
- package/dist/core/__tests__/integration/spawn-root.test.d.ts +0 -1
- package/dist/core/__tests__/integration/spawn-root.test.js +0 -536
- package/dist/core/__tests__/integration/subscription-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/integration/subscription-delivery.test.js +0 -132
- package/dist/core/__tests__/integration/tmux-surface.test.d.ts +0 -1
- package/dist/core/__tests__/integration/tmux-surface.test.js +0 -330
- package/dist/core/__tests__/integration/worktree-land.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-land.test.js +0 -607
- package/dist/core/__tests__/integration/worktree-reap.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-reap.test.js +0 -842
- package/dist/core/__tests__/kickoff.test.d.ts +0 -1
- package/dist/core/__tests__/kickoff.test.js +0 -196
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.js +0 -62
- package/dist/core/__tests__/lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle.test.js +0 -176
- package/dist/core/__tests__/live-lifecycle-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/live-lifecycle-prompt.test.js +0 -63
- package/dist/core/__tests__/memory-resolver-precedence.test.d.ts +0 -1
- package/dist/core/__tests__/memory-resolver-precedence.test.js +0 -228
- package/dist/core/__tests__/migration.test.d.ts +0 -1
- package/dist/core/__tests__/migration.test.js +0 -946
- package/dist/core/__tests__/model-pin-durability.test.d.ts +0 -1
- package/dist/core/__tests__/model-pin-durability.test.js +0 -195
- package/dist/core/__tests__/model-routes-config.test.d.ts +0 -1
- package/dist/core/__tests__/model-routes-config.test.js +0 -150
- package/dist/core/__tests__/nested-store-discovery.test.d.ts +0 -1
- package/dist/core/__tests__/nested-store-discovery.test.js +0 -89
- package/dist/core/__tests__/node-outcome.test.d.ts +0 -1
- package/dist/core/__tests__/node-outcome.test.js +0 -246
- package/dist/core/__tests__/on-read-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-crouter-home-fence.test.js +0 -66
- package/dist/core/__tests__/on-read-dedup-resume.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-dedup-resume.test.js +0 -132
- package/dist/core/__tests__/on-read-nested-store.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-nested-store.test.js +0 -135
- package/dist/core/__tests__/parse-argv-stdin-secret.test.d.ts +0 -1
- package/dist/core/__tests__/parse-argv-stdin-secret.test.js +0 -68
- package/dist/core/__tests__/passive-subscription.test.d.ts +0 -1
- package/dist/core/__tests__/passive-subscription.test.js +0 -120
- package/dist/core/__tests__/pid-identity-match.test.d.ts +0 -1
- package/dist/core/__tests__/pid-identity-match.test.js +0 -145
- package/dist/core/__tests__/pid-zombie.test.d.ts +0 -1
- package/dist/core/__tests__/pid-zombie.test.js +0 -42
- package/dist/core/__tests__/plugin-kinds.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-kinds.test.js +0 -182
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.js +0 -43
- package/dist/core/__tests__/plugin-page-components.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-page-components.test.js +0 -159
- package/dist/core/__tests__/preview-mirror-cap.test.d.ts +0 -1
- package/dist/core/__tests__/preview-mirror-cap.test.js +0 -53
- package/dist/core/__tests__/preview-registry-sync.test.d.ts +0 -1
- package/dist/core/__tests__/preview-registry-sync.test.js +0 -107
- package/dist/core/__tests__/profile-project-memory-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/profile-project-memory-delivery.test.js +0 -644
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.d.ts +0 -1
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.js +0 -91
- package/dist/core/__tests__/prune.test.d.ts +0 -1
- package/dist/core/__tests__/prune.test.js +0 -243
- package/dist/core/__tests__/push-final-guard.test.d.ts +0 -1
- package/dist/core/__tests__/push-final-guard.test.js +0 -191
- package/dist/core/__tests__/relaunch-root.test.d.ts +0 -1
- package/dist/core/__tests__/relaunch-root.test.js +0 -249
- package/dist/core/__tests__/remote-canvas-target.test.d.ts +0 -1
- package/dist/core/__tests__/remote-canvas-target.test.js +0 -93
- package/dist/core/__tests__/repository-association.test.d.ts +0 -1
- package/dist/core/__tests__/repository-association.test.js +0 -153
- package/dist/core/__tests__/repository-root-identity.test.d.ts +0 -1
- package/dist/core/__tests__/repository-root-identity.test.js +0 -223
- package/dist/core/__tests__/respawn-throttle.test.d.ts +0 -1
- package/dist/core/__tests__/respawn-throttle.test.js +0 -20
- package/dist/core/__tests__/review-model-floor.test.d.ts +0 -1
- package/dist/core/__tests__/review-model-floor.test.js +0 -83
- package/dist/core/__tests__/revive-all.test.d.ts +0 -1
- package/dist/core/__tests__/revive-all.test.js +0 -157
- package/dist/core/__tests__/revive-capacity.test.d.ts +0 -1
- package/dist/core/__tests__/revive-capacity.test.js +0 -184
- package/dist/core/__tests__/revive-parked-fresh.test.d.ts +0 -1
- package/dist/core/__tests__/revive-parked-fresh.test.js +0 -176
- package/dist/core/__tests__/scope-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/scope-crouter-home-fence.test.js +0 -55
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +0 -262
- package/dist/core/__tests__/seam/broker-attach-stream.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-stream.test.js +0 -176
- package/dist/core/__tests__/seam/broker-cap-freeze.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-cap-freeze.test.js +0 -155
- package/dist/core/__tests__/seam/broker-crash-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-crash-teardown.test.js +0 -131
- package/dist/core/__tests__/seam/broker-pane-resolution.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-pane-resolution.test.js +0 -204
- package/dist/core/__tests__/seam/broker-provider-retry.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-provider-retry.test.js +0 -686
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.js +0 -82
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.js +0 -50
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.js +0 -138
- package/dist/core/__tests__/seam/dormancy-release.test.d.ts +0 -1
- package/dist/core/__tests__/seam/dormancy-release.test.js +0 -516
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.js +0 -65
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.d.ts +0 -1
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.js +0 -84
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.d.ts +0 -1
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.js +0 -160
- package/dist/core/__tests__/seam/node-outcome-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/node-outcome-delivery.test.js +0 -177
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.d.ts +0 -1
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.js +0 -31
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.d.ts +0 -1
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.js +0 -60
- package/dist/core/__tests__/seam/self-close-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/self-close-teardown.test.js +0 -49
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.d.ts +0 -1
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.js +0 -100
- package/dist/core/__tests__/secrets.test.d.ts +0 -1
- package/dist/core/__tests__/secrets.test.js +0 -49
- package/dist/core/__tests__/self-update.test.d.ts +0 -1
- package/dist/core/__tests__/self-update.test.js +0 -46
- package/dist/core/__tests__/session-branch.test.d.ts +0 -1
- package/dist/core/__tests__/session-branch.test.js +0 -61
- package/dist/core/__tests__/session-cycles.test.d.ts +0 -1
- package/dist/core/__tests__/session-cycles.test.js +0 -133
- package/dist/core/__tests__/session-model.test.d.ts +0 -1
- package/dist/core/__tests__/session-model.test.js +0 -111
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.d.ts +0 -1
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +0 -71
- package/dist/core/__tests__/stdin-body-no-discard.test.d.ts +0 -1
- package/dist/core/__tests__/stdin-body-no-discard.test.js +0 -33
- package/dist/core/__tests__/stdout-errors.test.d.ts +0 -1
- package/dist/core/__tests__/stdout-errors.test.js +0 -16
- package/dist/core/__tests__/stop-guard.test.d.ts +0 -1
- package/dist/core/__tests__/stop-guard.test.js +0 -237
- package/dist/core/__tests__/stream-watchdog.test.d.ts +0 -1
- package/dist/core/__tests__/stream-watchdog.test.js +0 -154
- package/dist/core/__tests__/subscription-pool-credential-guard.test.d.ts +0 -1
- package/dist/core/__tests__/subscription-pool-credential-guard.test.js +0 -95
- package/dist/core/__tests__/tmux-driver-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/tmux-driver-boundary.test.js +0 -50
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.d.ts +0 -1
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.js +0 -54
- package/dist/core/__tests__/worktree-landing.test.d.ts +0 -1
- package/dist/core/__tests__/worktree-landing.test.js +0 -11
- package/dist/core/__tests__/yield-ensures-daemon.test.d.ts +0 -1
- package/dist/core/__tests__/yield-ensures-daemon.test.js +0 -55
- package/dist/core/broker-client/__tests__/transport-relay.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-relay.test.js +0 -214
- package/dist/core/broker-client/__tests__/transport-socket.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-socket.test.js +0 -73
- package/dist/core/canvas/__tests__/attention.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/attention.test.js +0 -83
- package/dist/core/canvas/__tests__/history-transcript.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/history-transcript.test.js +0 -102
- package/dist/core/canvas/__tests__/remote-canvas-source.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-canvas-source.test.js +0 -328
- package/dist/core/canvas/__tests__/remote-transport.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-transport.test.js +0 -97
- package/dist/core/canvas/__tests__/render-remote.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/render-remote.test.js +0 -243
- package/dist/core/canvas/__tests__/session-window.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/session-window.test.js +0 -70
- package/dist/core/feed/__tests__/inbox-migrate.test.d.ts +0 -1
- package/dist/core/feed/__tests__/inbox-migrate.test.js +0 -49
- package/dist/core/human/__tests__/page-catalog.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-catalog.test.js +0 -20
- package/dist/core/human/__tests__/page-html-markdown.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-html-markdown.test.js +0 -48
- package/dist/core/human/__tests__/page.test.d.ts +0 -1
- package/dist/core/human/__tests__/page.test.js +0 -92
- package/dist/core/keybindings/__tests__/resolve.test.d.ts +0 -1
- package/dist/core/keybindings/__tests__/resolve.test.js +0 -171
- package/dist/core/profiles/__tests__/env-store.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/env-store.test.js +0 -99
- package/dist/core/profiles/__tests__/fuzzy-match.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/fuzzy-match.test.js +0 -51
- package/dist/core/profiles/__tests__/root-profile.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/root-profile.test.js +0 -59
- package/dist/core/review/__tests__/capture-origin.test.d.ts +0 -1
- package/dist/core/review/__tests__/capture-origin.test.js +0 -150
- package/dist/core/review/__tests__/comments.test.d.ts +0 -1
- package/dist/core/review/__tests__/comments.test.js +0 -116
- package/dist/core/review/__tests__/remap.test.d.ts +0 -1
- package/dist/core/review/__tests__/remap.test.js +0 -177
- package/dist/core/review/__tests__/stage-identity.test.d.ts +0 -1
- package/dist/core/review/__tests__/stage-identity.test.js +0 -150
- package/dist/core/runtime/__tests__/engine-route.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/engine-route.test.js +0 -36
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.js +0 -45
- package/dist/core/runtime/__tests__/node-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/node-env.test.js +0 -73
- package/dist/core/runtime/__tests__/spawn-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/spawn-env.test.js +0 -259
- package/dist/core/substrate/__tests__/surface-match-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-command.test.js +0 -89
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.js +0 -28
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.js +0 -92
- package/dist/daemon/__tests__/autostart-storm.test.d.ts +0 -1
- package/dist/daemon/__tests__/autostart-storm.test.js +0 -128
- package/dist/daemon/__tests__/broker-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/broker-ownership.test.js +0 -25
- package/dist/daemon/__tests__/daemon-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/daemon-ownership.test.js +0 -27
- package/dist/daemon/__tests__/helpers/source-daemon.d.ts +0 -30
- package/dist/daemon/__tests__/helpers/source-daemon.js +0 -176
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.js +0 -83
- package/dist/daemon/__tests__/integration/migration-startup.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/migration-startup.test.js +0 -127
- package/dist/daemon/__tests__/node-deadline-lane.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-deadline-lane.test.js +0 -77
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.js +0 -146
- package/dist/daemon/__tests__/node-outcome-delivery.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-delivery.test.js +0 -116
- package/dist/daemon/__tests__/reconciler-signature.test.d.ts +0 -1
- package/dist/daemon/__tests__/reconciler-signature.test.js +0 -37
- package/dist/daemon/__tests__/subtree-filter-freshness.test.d.ts +0 -1
- package/dist/daemon/__tests__/subtree-filter-freshness.test.js +0 -63
- package/dist/daemon/__tests__/thaw-order.test.d.ts +0 -1
- package/dist/daemon/__tests__/thaw-order.test.js +0 -55
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.js +0 -58
- package/dist/daemon/api/__tests__/broker-settle-park.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/broker-settle-park.test.js +0 -175
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.js +0 -216
- package/dist/daemon/api/__tests__/error-seam.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/error-seam.test.js +0 -83
- package/dist/daemon/api/__tests__/model-config.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/model-config.test.js +0 -73
- package/dist/daemon/api/__tests__/node-create-description.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-create-description.test.js +0 -127
- package/dist/daemon/api/__tests__/node-model-validation.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-model-validation.test.js +0 -183
- package/dist/daemon/api/__tests__/nodes-activity-query.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/nodes-activity-query.test.js +0 -99
- package/dist/daemon/api/__tests__/profile-launch-gates.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-launch-gates.test.js +0 -172
- package/dist/daemon/api/__tests__/profile-metadata-route.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-metadata-route.test.js +0 -95
- package/dist/daemon/api/__tests__/reopen-delivery.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/reopen-delivery.test.js +0 -260
- package/dist/daemon/api/__tests__/seam/api-server.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/api-server.test.js +0 -442
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.js +0 -310
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.js +0 -351
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.js +0 -159
- package/dist/daemon/api/__tests__/seam/profile-delete.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/profile-delete.test.js +0 -372
- package/dist/daemon/api/__tests__/submit-result.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/submit-result.test.js +0 -215
- package/dist/migrations/__tests__/activation-concurrency.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation-concurrency.test.js +0 -146
- package/dist/migrations/__tests__/activation.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation.test.js +0 -152
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.d.ts +0 -1
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.js +0 -149
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.js +0 -86
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +0 -364
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.js +0 -106
- package/dist/pi-extensions/__tests__/canvas-recap.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-recap.test.js +0 -62
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +0 -432
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +0 -152
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +0 -88
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.js +0 -96
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.js +0 -133
- package/dist/pi-extensions/__tests__/pre-command-gate.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/pre-command-gate.test.js +0 -232
- package/dist/shared/__tests__/env-boundary.test.d.ts +0 -1
- package/dist/shared/__tests__/env-boundary.test.js +0 -95
- package/dist/shared/__tests__/generated-context-grammar.test.d.ts +0 -1
- package/dist/shared/__tests__/generated-context-grammar.test.js +0 -80
- package/docs/compat/hearth-crtr-v1.md +0 -179
- package/docs/compat/hearth-crtr-v2.md +0 -177
- package/docs/compat/hearth-crtr-v3.md +0 -176
- package/docs/compat/hearth-crtr-v4.md +0 -182
- package/docs/compat/hearth-crtr-v5.md +0 -169
|
@@ -1,244 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { listAllMemoryDocs, loadMemoryStoreView } from '../../core/memory-resolver.js';
|
|
4
|
-
import { parseSubstrateDoc } from '../../core/substrate/schema.js';
|
|
5
|
-
import { paginate } from '../../core/pagination.js';
|
|
6
|
-
import { candidateRow } from './read.js';
|
|
7
|
-
import { MEMORY_KINDS, registerMemoryListingExposure, requireMountedStore, resolveReadSelector, selectorParam, } from './shared.js';
|
|
8
|
-
/** The search space over one corpus: every substrate memory document, narrowed
|
|
9
|
-
* to one kind when asked. Within that narrowing find searches EVERYTHING — it
|
|
10
|
-
* never applies gate or visibility-rung filtering; --kind/--scope/--dir are
|
|
11
|
-
* caller intent, not a visibility policy.
|
|
12
|
-
*
|
|
13
|
-
* A target view is deduped by canonical name, first in source order wins, so a
|
|
14
|
-
* hit names the document a read of that name returns. An exact store (`--dir`)
|
|
15
|
-
* is not deduped: naming a store means seeing what it physically holds. */
|
|
16
|
-
function searchUnits(kindFilter, docs, dedup) {
|
|
17
|
-
const byName = new Map();
|
|
18
|
-
for (const doc of docs) {
|
|
19
|
-
const bucket = byName.get(doc.name);
|
|
20
|
-
if (bucket !== undefined)
|
|
21
|
-
bucket.push(doc);
|
|
22
|
-
else
|
|
23
|
-
byName.set(doc.name, [doc]);
|
|
24
|
-
}
|
|
25
|
-
const seen = new Set();
|
|
26
|
-
const units = [];
|
|
27
|
-
for (const doc of docs) {
|
|
28
|
-
const sub = parseSubstrateDoc(doc);
|
|
29
|
-
if (sub === null)
|
|
30
|
-
continue;
|
|
31
|
-
if (kindFilter !== undefined && sub.kind !== kindFilter)
|
|
32
|
-
continue;
|
|
33
|
-
if (dedup) {
|
|
34
|
-
if (seen.has(sub.name))
|
|
35
|
-
continue;
|
|
36
|
-
seen.add(sub.name);
|
|
37
|
-
}
|
|
38
|
-
units.push({
|
|
39
|
-
name: sub.name,
|
|
40
|
-
localName: doc.localName,
|
|
41
|
-
kind: sub.kind,
|
|
42
|
-
scope: sub.scope,
|
|
43
|
-
path: sub.path,
|
|
44
|
-
storeRoot: doc.root,
|
|
45
|
-
physicalRelativePath: doc.physicalRelativePath,
|
|
46
|
-
routing: sub.whenAndWhyToRead,
|
|
47
|
-
shortForm: sub.shortForm,
|
|
48
|
-
candidates: byName.get(doc.name) ?? [doc],
|
|
49
|
-
loadBody: () => sub.body,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
return units;
|
|
53
|
-
}
|
|
54
|
-
/** The physical location fields --paths adds to any hit shape. */
|
|
55
|
-
function pathFields(u) {
|
|
56
|
-
return {
|
|
57
|
-
path: u.path,
|
|
58
|
-
store_root: u.storeRoot,
|
|
59
|
-
physical_relative_path: u.physicalRelativePath,
|
|
60
|
-
...(u.candidates.length > 1 ? { candidates: u.candidates.map((c) => candidateRow(c, u.candidates[0])) } : {}),
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
export const findLeaf = defineLeaf({
|
|
64
|
-
name: 'find',
|
|
65
|
-
description: 'relevance search across memory documents',
|
|
66
|
-
whenToUse: 'the discovery surface when you do NOT know a document\u2019s canonical name — ranks documents by relevance over the canonical name, the store-local name, the physical path, the read-routing line, and short-form (add --body to also weigh body text), and every hit reports the canonical name `crtr memory read` takes. Searches every scope by default regardless of any visibility gate; --scope narrows to one class of store, --dir to one exact store. Reach for `crtr memory list` instead when you want the whole inventory rather than a topic match, and --grep when you need an exact regex or literal-string match across document bodies.',
|
|
67
|
-
help: {
|
|
68
|
-
name: 'memory find',
|
|
69
|
-
summary: 'bounded relevance search across memory documents, weighted over name/local name/physical path/routing-line/short-form (and body with --body)',
|
|
70
|
-
params: [
|
|
71
|
-
{ kind: 'positional', name: 'query', required: true, constraint: 'With ranked search (default): whitespace-separated terms, matched case-insensitively and weighted over the document\u2019s names (canonical, store-local, and physical path), the read-routing line, and short-form (plus body with --body); documents matching more/stronger fields rank higher. By default returns at most 10 hits scoring at least half the top score. With --grep: an ECMAScript regex applied to each document body line.' },
|
|
72
|
-
{ kind: 'flag', name: 'kind', type: 'enum', choices: [...MEMORY_KINDS], required: false, constraint: 'Filter to a single kind. Default: all kinds.' },
|
|
73
|
-
selectorParam('scope-read', {}, 'Default: every resolved scope, builtin included.'),
|
|
74
|
-
selectorParam('dir', {}, 'Searches that store alone, and searches it physically: two documents sharing one canonical name are both searched and both reported, where the default view searches only the winner.'),
|
|
75
|
-
{ kind: 'flag', name: 'grep', type: 'bool', required: false, constraint: 'Treat the query as an ECMAScript regex and match it against document bodies, instead of weighted relevance ranking. Mutually exclusive with --body.' },
|
|
76
|
-
{ kind: 'flag', name: 'body', type: 'bool', required: false, constraint: 'Also weigh document body text in the relevance ranking (in addition to name/when/why/short-form). Ignored under --grep, which always scans bodies.' },
|
|
77
|
-
{ kind: 'flag', name: 'limit', type: 'int', required: false, constraint: 'Maximum hits to return per page after relevance filtering. Default 10, hard max 100.' },
|
|
78
|
-
{ kind: 'flag', name: 'cursor', type: 'string', required: false, constraint: 'Opaque token from next_cursor. Omit on first call.' },
|
|
79
|
-
{ kind: 'flag', name: 'min-score', type: 'int', required: false, constraint: 'Ranked mode only. Minimum score to return, replacing the default adaptive floor of half the top score. Must be at least 1.' },
|
|
80
|
-
{ kind: 'flag', name: 'paths', type: 'bool', required: false, constraint: 'Include each hit\u2019s physical location — absolute path, store root, store-relative path, and every other physical document sharing its canonical name. Off by default; the canonical name is sufficient for `crtr memory read <name>`.' },
|
|
81
|
-
],
|
|
82
|
-
output: [
|
|
83
|
-
{ name: 'query', type: 'string', required: true, constraint: 'Echo of the input query.' },
|
|
84
|
-
{ name: 'matches', type: 'integer', required: true, constraint: 'Total matches before the default relevance floor and limit are applied (ranked mode) or total matching lines (grep mode) — across all pages, not just this one.' },
|
|
85
|
-
{ name: 'hits', type: 'object[]', required: true, constraint: 'Ranked mode — each: {name, kind, scope, score, short_form}, sorted by score descending. Grep mode — each: {name, scope, line, text}, sorted by name then line. `name` is always the canonical name, whatever field matched. With --paths, each shape also carries path, store_root, physical_relative_path, and candidates when several physical documents share the name. Paginated via --limit/--cursor.' },
|
|
86
|
-
{ name: 'next_cursor', type: 'string | null', required: true, constraint: 'Opaque token for the next page; null means no more items.' },
|
|
87
|
-
{ name: 'follow_up', type: 'string', required: true, constraint: 'Concrete next commands for reading a hit in full or refining the search.' },
|
|
88
|
-
],
|
|
89
|
-
outputKind: 'object',
|
|
90
|
-
effects: ['Records this search page as listing context for the current node without marking any matched document as loaded.'],
|
|
91
|
-
},
|
|
92
|
-
run: async (input) => {
|
|
93
|
-
const query = input['query'];
|
|
94
|
-
const kindFilter = input['kind'];
|
|
95
|
-
const dirArg = input['dir'];
|
|
96
|
-
const selector = resolveReadSelector({ scope: input['scope'], dir: dirArg });
|
|
97
|
-
const grep = input['grep'];
|
|
98
|
-
const weighBody = input['body'];
|
|
99
|
-
const limitArg = input['limit'];
|
|
100
|
-
const cursor = input['cursor'];
|
|
101
|
-
const minScore = input['minScore'];
|
|
102
|
-
const includePaths = input['paths'];
|
|
103
|
-
if (grep && weighBody) {
|
|
104
|
-
throw usage('--grep and --body are mutually exclusive (--grep always scans bodies).');
|
|
105
|
-
}
|
|
106
|
-
if (grep && minScore !== undefined)
|
|
107
|
-
throw usage('--min-score is only available in ranked mode.');
|
|
108
|
-
if (limitArg !== undefined && (limitArg < 1 || limitArg > 100)) {
|
|
109
|
-
throw usage('--limit must be between 1 and 100.');
|
|
110
|
-
}
|
|
111
|
-
if (minScore !== undefined && minScore < 1)
|
|
112
|
-
throw usage('--min-score must be at least 1.');
|
|
113
|
-
const limit = limitArg ?? 10;
|
|
114
|
-
const listingIdentity = `listing:memory-find:${JSON.stringify({
|
|
115
|
-
query,
|
|
116
|
-
kind: kindFilter ?? null,
|
|
117
|
-
scope: selector.scope ?? null,
|
|
118
|
-
dir: dirArg ?? null,
|
|
119
|
-
grep: grep === true,
|
|
120
|
-
body: weighBody === true,
|
|
121
|
-
limit,
|
|
122
|
-
cursor: cursor ?? null,
|
|
123
|
-
minScore: minScore ?? null,
|
|
124
|
-
paths: includePaths === true,
|
|
125
|
-
})}`;
|
|
126
|
-
const units = selector.store !== null
|
|
127
|
-
? searchUnits(kindFilter, loadMemoryStoreView(requireMountedStore(selector.store), false).docs, false)
|
|
128
|
-
: searchUnits(kindFilter, listAllMemoryDocs(selector.scope, false, true), true);
|
|
129
|
-
// grep mode: regex over every unit's body, one row per matching line
|
|
130
|
-
if (grep) {
|
|
131
|
-
let regex;
|
|
132
|
-
try {
|
|
133
|
-
regex = new RegExp(query);
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
throw usage(`invalid regex pattern: ${query}`);
|
|
137
|
-
}
|
|
138
|
-
const matches = [];
|
|
139
|
-
for (const u of units) {
|
|
140
|
-
const lines = u.loadBody().split('\n');
|
|
141
|
-
lines.forEach((text, idx) => {
|
|
142
|
-
if (regex.test(text))
|
|
143
|
-
matches.push({ name: u.name, scope: u.scope, unit: u, line: idx + 1, text });
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
// Physical path is part of the identity: under --dir two documents can
|
|
147
|
-
// share one canonical name, and pagination needs unique ascending keys.
|
|
148
|
-
matches.sort((a, b) => {
|
|
149
|
-
const nc = a.name.localeCompare(b.name);
|
|
150
|
-
if (nc !== 0)
|
|
151
|
-
return nc;
|
|
152
|
-
const sc = a.scope.localeCompare(b.scope);
|
|
153
|
-
if (sc !== 0)
|
|
154
|
-
return sc;
|
|
155
|
-
const pc = a.unit.physicalRelativePath.localeCompare(b.unit.physicalRelativePath);
|
|
156
|
-
return pc !== 0 ? pc : a.line - b.line;
|
|
157
|
-
});
|
|
158
|
-
const keyOf = (m) => `${m.name}:${m.scope}:${m.unit.physicalRelativePath}:${String(m.line).padStart(7, '0')}`;
|
|
159
|
-
const page = paginate(matches, { limit, cursor }, { defaultLimit: 10, maxLimit: 100, keyOf, total: 'omit' });
|
|
160
|
-
const output = {
|
|
161
|
-
query,
|
|
162
|
-
matches: matches.length,
|
|
163
|
-
hits: page.items.map(({ unit, ...match }) => (includePaths ? { ...match, ...pathFields(unit) } : match)),
|
|
164
|
-
next_cursor: page.next_cursor,
|
|
165
|
-
follow_up: 'Read a hit with `crtr memory read <name>`. Run `crtr memory find -h` for filters and verbosity.',
|
|
166
|
-
};
|
|
167
|
-
registerMemoryListingExposure(listingIdentity);
|
|
168
|
-
return output;
|
|
169
|
-
}
|
|
170
|
-
// ranked mode: weighted relevance over name/routing-line/short-form(+body)
|
|
171
|
-
const terms = query
|
|
172
|
-
.toLowerCase()
|
|
173
|
-
.split(/\s+/)
|
|
174
|
-
.filter((t) => t.length > 0);
|
|
175
|
-
if (terms.length === 0)
|
|
176
|
-
throw usage('query must contain at least one non-whitespace term');
|
|
177
|
-
const hits = [];
|
|
178
|
-
for (const u of units) {
|
|
179
|
-
// One name weight over three spellings of the same document: an agent
|
|
180
|
-
// searching a store-local name or a physical path is searching for the
|
|
181
|
-
// identity, and counting each spelling separately would inflate the band
|
|
182
|
-
// the adaptive floor is calibrated against.
|
|
183
|
-
const nameLc = u.name.toLowerCase();
|
|
184
|
-
const localLc = u.localName.toLowerCase();
|
|
185
|
-
const physLc = u.physicalRelativePath.toLowerCase();
|
|
186
|
-
const routingLc = u.routing.toLowerCase();
|
|
187
|
-
const shortLc = u.shortForm.toLowerCase();
|
|
188
|
-
const bodyLc = weighBody ? u.loadBody().toLowerCase() : null;
|
|
189
|
-
let score = 0;
|
|
190
|
-
for (const term of terms) {
|
|
191
|
-
if (nameLc.includes(term) || localLc.includes(term) || physLc.includes(term))
|
|
192
|
-
score += 10;
|
|
193
|
-
if (routingLc.includes(term))
|
|
194
|
-
score += 5;
|
|
195
|
-
if (shortLc.includes(term))
|
|
196
|
-
score += 3;
|
|
197
|
-
if (bodyLc !== null && bodyLc.includes(term))
|
|
198
|
-
score += 1;
|
|
199
|
-
}
|
|
200
|
-
if (score > 0)
|
|
201
|
-
hits.push({ unit: u, score });
|
|
202
|
-
}
|
|
203
|
-
// Sort comparator MUST match keyOf exactly (score desc, then scope asc,
|
|
204
|
-
// then name asc, then physical path asc — which is unique even under --dir,
|
|
205
|
-
// where two documents can share one canonical name). Sorting equal-score
|
|
206
|
-
// hits by one order while the cursor key uses another would let the array
|
|
207
|
-
// disagree with its own keys, and paginate() would silently skip an item.
|
|
208
|
-
hits.sort((a, b) => {
|
|
209
|
-
if (b.score !== a.score)
|
|
210
|
-
return b.score - a.score;
|
|
211
|
-
const scopeCmp = a.unit.scope.localeCompare(b.unit.scope);
|
|
212
|
-
if (scopeCmp !== 0)
|
|
213
|
-
return scopeCmp;
|
|
214
|
-
const nameCmp = a.unit.name.localeCompare(b.unit.name);
|
|
215
|
-
if (nameCmp !== 0)
|
|
216
|
-
return nameCmp;
|
|
217
|
-
return a.unit.physicalRelativePath.localeCompare(b.unit.physicalRelativePath);
|
|
218
|
-
});
|
|
219
|
-
const adaptiveFloor = hits.length === 0 ? 1 : Math.max(1, Math.ceil(hits[0].score / 2));
|
|
220
|
-
const floor = minScore ?? adaptiveFloor;
|
|
221
|
-
const relevant = hits.filter((hit) => hit.score >= floor);
|
|
222
|
-
// relevant is already sorted score-desc/scope-asc/name-asc, which is
|
|
223
|
-
// exactly ascending order by this key (higher score → smaller key),
|
|
224
|
-
// satisfying paginate's ascending-key precondition.
|
|
225
|
-
const keyOf = (h) => `${String(1_000_000 - h.score).padStart(7, '0')}:${h.unit.scope}:${h.unit.name}:${h.unit.physicalRelativePath}`;
|
|
226
|
-
const page = paginate(relevant, { limit, cursor }, { defaultLimit: 10, maxLimit: 100, keyOf, total: 'omit' });
|
|
227
|
-
const output = {
|
|
228
|
-
query,
|
|
229
|
-
matches: hits.length,
|
|
230
|
-
hits: page.items.map((h) => ({
|
|
231
|
-
name: h.unit.name,
|
|
232
|
-
kind: h.unit.kind,
|
|
233
|
-
scope: h.unit.scope,
|
|
234
|
-
score: h.score,
|
|
235
|
-
short_form: h.unit.shortForm,
|
|
236
|
-
...(includePaths ? pathFields(h.unit) : {}),
|
|
237
|
-
})),
|
|
238
|
-
next_cursor: page.next_cursor,
|
|
239
|
-
follow_up: 'Read a hit with `crtr memory read <name>`. Run `crtr memory find -h` for filters and verbosity.',
|
|
240
|
-
};
|
|
241
|
-
registerMemoryListingExposure(listingIdentity);
|
|
242
|
-
return output;
|
|
243
|
-
},
|
|
244
|
-
});
|
|
1
|
+
var B=Object.defineProperty;var u=(t,r)=>B(t,"name",{value:r,configurable:!0});import{defineLeaf as T}from"../../core/command.js";import{usage as y}from"../../core/errors.js";import{listAllMemoryDocs as I,loadMemoryStoreView as W}from"../../core/memory-resolver.js";import{parseSubstrateDoc as j}from"../../core/substrate/schema.js";import{paginate as M}from"../../core/pagination.js";import{candidateRow as K}from"./read.js";import{MEMORY_KINDS as U,registerMemoryListingExposure as P,requireMountedStore as G,resolveReadSelector as J,selectorParam as O}from"./shared.js";function $(t,r,g){const p=new Map;for(const a of r){const o=p.get(a.name);o!==void 0?o.push(a):p.set(a.name,[a])}const d=new Set,m=[];for(const a of r){const o=j(a);if(o!==null&&!(t!==void 0&&o.kind!==t)){if(g){if(d.has(o.name))continue;d.add(o.name)}m.push({name:o.name,localName:a.localName,kind:o.kind,scope:o.scope,path:o.path,storeRoot:a.root,physicalRelativePath:a.physicalRelativePath,routing:o.whenAndWhyToRead,shortForm:o.shortForm,candidates:p.get(a.name)??[a],loadBody:u(()=>o.body,"loadBody")})}}return m}u($,"searchUnits");function A(t){return{path:t.path,store_root:t.storeRoot,physical_relative_path:t.physicalRelativePath,...t.candidates.length>1?{candidates:t.candidates.map(r=>K(r,t.candidates[0]))}:{}}}u(A,"pathFields");const oe=T({name:"find",description:"relevance search across memory documents",whenToUse:"the discovery surface when you do NOT know a document\u2019s canonical name \u2014 ranks documents by relevance over the canonical name, the store-local name, the physical path, the read-routing line, and short-form (add --body to also weigh body text), and every hit reports the canonical name `crtr memory read` takes. Searches every scope by default regardless of any visibility gate; --scope narrows to one class of store, --dir to one exact store. Reach for `crtr memory list` instead when you want the whole inventory rather than a topic match, and --grep when you need an exact regex or literal-string match across document bodies.",help:{name:"memory find",summary:"bounded relevance search across memory documents, weighted over name/local name/physical path/routing-line/short-form (and body with --body)",params:[{kind:"positional",name:"query",required:!0,constraint:"With ranked search (default): whitespace-separated terms, matched case-insensitively and weighted over the document\u2019s names (canonical, store-local, and physical path), the read-routing line, and short-form (plus body with --body); documents matching more/stronger fields rank higher. By default returns at most 10 hits scoring at least half the top score. With --grep: an ECMAScript regex applied to each document body line."},{kind:"flag",name:"kind",type:"enum",choices:[...U],required:!1,constraint:"Filter to a single kind. Default: all kinds."},O("scope-read",{},"Default: every resolved scope, builtin included."),O("dir",{},"Searches that store alone, and searches it physically: two documents sharing one canonical name are both searched and both reported, where the default view searches only the winner."),{kind:"flag",name:"grep",type:"bool",required:!1,constraint:"Treat the query as an ECMAScript regex and match it against document bodies, instead of weighted relevance ranking. Mutually exclusive with --body."},{kind:"flag",name:"body",type:"bool",required:!1,constraint:"Also weigh document body text in the relevance ranking (in addition to name/when/why/short-form). Ignored under --grep, which always scans bodies."},{kind:"flag",name:"limit",type:"int",required:!1,constraint:"Maximum hits to return per page after relevance filtering. Default 10, hard max 100."},{kind:"flag",name:"cursor",type:"string",required:!1,constraint:"Opaque token from next_cursor. Omit on first call."},{kind:"flag",name:"min-score",type:"int",required:!1,constraint:"Ranked mode only. Minimum score to return, replacing the default adaptive floor of half the top score. Must be at least 1."},{kind:"flag",name:"paths",type:"bool",required:!1,constraint:"Include each hit\u2019s physical location \u2014 absolute path, store root, store-relative path, and every other physical document sharing its canonical name. Off by default; the canonical name is sufficient for `crtr memory read <name>`."}],output:[{name:"query",type:"string",required:!0,constraint:"Echo of the input query."},{name:"matches",type:"integer",required:!0,constraint:"Total matches before the default relevance floor and limit are applied (ranked mode) or total matching lines (grep mode) \u2014 across all pages, not just this one."},{name:"hits",type:"object[]",required:!0,constraint:"Ranked mode \u2014 each: {name, kind, scope, score, short_form}, sorted by score descending. Grep mode \u2014 each: {name, scope, line, text}, sorted by name then line. `name` is always the canonical name, whatever field matched. With --paths, each shape also carries path, store_root, physical_relative_path, and candidates when several physical documents share the name. Paginated via --limit/--cursor."},{name:"next_cursor",type:"string | null",required:!0,constraint:"Opaque token for the next page; null means no more items."},{name:"follow_up",type:"string",required:!0,constraint:"Concrete next commands for reading a hit in full or refining the search."}],outputKind:"object",effects:["Records this search page as listing context for the current node without marking any matched document as loaded."]},run:u(async t=>{const r=t.query,g=t.kind,p=t.dir,d=J({scope:t.scope,dir:p}),m=t.grep,a=t.body,o=t.limit,b=t.cursor,w=t.minScore,k=t.paths;if(m&&a)throw y("--grep and --body are mutually exclusive (--grep always scans bodies).");if(m&&w!==void 0)throw y("--min-score is only available in ranked mode.");if(o!==void 0&&(o<1||o>100))throw y("--limit must be between 1 and 100.");if(w!==void 0&&w<1)throw y("--min-score must be at least 1.");const x=o??10,q=`listing:memory-find:${JSON.stringify({query:r,kind:g??null,scope:d.scope??null,dir:p??null,grep:m===!0,body:a===!0,limit:x,cursor:b??null,minScore:w??null,paths:k===!0})}`,L=d.store!==null?$(g,W(G(d.store),!1).docs,!1):$(g,I(d.scope,!1,!0),!0);if(m){let e;try{e=new RegExp(r)}catch{throw y(`invalid regex pattern: ${r}`)}const s=[];for(const n of L)n.loadBody().split(`
|
|
2
|
+
`).forEach((i,l)=>{e.test(i)&&s.push({name:n.name,scope:n.scope,unit:n,line:l+1,text:i})});s.sort((n,c)=>{const i=n.name.localeCompare(c.name);if(i!==0)return i;const l=n.scope.localeCompare(c.scope);if(l!==0)return l;const S=n.unit.physicalRelativePath.localeCompare(c.unit.physicalRelativePath);return S!==0?S:n.line-c.line});const h=M(s,{limit:x,cursor:b},{defaultLimit:10,maxLimit:100,keyOf:u(n=>`${n.name}:${n.scope}:${n.unit.physicalRelativePath}:${String(n.line).padStart(7,"0")}`,"keyOf"),total:"omit"}),R={query:r,matches:s.length,hits:h.items.map(({unit:n,...c})=>k?{...c,...A(n)}:c),next_cursor:h.next_cursor,follow_up:"Read a hit with `crtr memory read <name>`. Run `crtr memory find -h` for filters and verbosity."};return P(q),R}const _=r.toLowerCase().split(/\s+/).filter(e=>e.length>0);if(_.length===0)throw y("query must contain at least one non-whitespace term");const f=[];for(const e of L){const s=e.name.toLowerCase(),v=e.localName.toLowerCase(),h=e.physicalRelativePath.toLowerCase(),R=e.routing.toLowerCase(),n=e.shortForm.toLowerCase(),c=a?e.loadBody().toLowerCase():null;let i=0;for(const l of _)(s.includes(l)||v.includes(l)||h.includes(l))&&(i+=10),R.includes(l)&&(i+=5),n.includes(l)&&(i+=3),c!==null&&c.includes(l)&&(i+=1);i>0&&f.push({unit:e,score:i})}f.sort((e,s)=>{if(s.score!==e.score)return s.score-e.score;const v=e.unit.scope.localeCompare(s.unit.scope);if(v!==0)return v;const h=e.unit.name.localeCompare(s.unit.name);return h!==0?h:e.unit.physicalRelativePath.localeCompare(s.unit.physicalRelativePath)});const E=f.length===0?1:Math.max(1,Math.ceil(f[0].score/2)),F=w??E,N=f.filter(e=>e.score>=F),C=M(N,{limit:x,cursor:b},{defaultLimit:10,maxLimit:100,keyOf:u(e=>`${String(1e6-e.score).padStart(7,"0")}:${e.unit.scope}:${e.unit.name}:${e.unit.physicalRelativePath}`,"keyOf"),total:"omit"}),D={query:r,matches:f.length,hits:C.items.map(e=>({name:e.unit.name,kind:e.unit.kind,scope:e.unit.scope,score:e.score,short_form:e.unit.shortForm,...k?A(e.unit):{}})),next_cursor:C.next_cursor,follow_up:"Read a hit with `crtr memory read <name>`. Run `crtr memory find -h` for filters and verbosity."};return P(q),D},"run")});export{oe as findLeaf};
|
|
@@ -1,199 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import { requireCanonicalName, requireLocalNameInStore, requireMountedStore, resolveReadSelector, selectorParam, } from './shared.js';
|
|
7
|
-
import { stripNamespace } from '../../core/memory/identity.js';
|
|
8
|
-
/** Locate a document's revision log. A live doc is resolved to its physical
|
|
9
|
-
* descriptor first; a deleted doc is looked up in the selected store(s) by the
|
|
10
|
-
* exact canonical name, stripping only that store's declared project namespace.
|
|
11
|
-
* There is no scope-prefix or leaf fallback. */
|
|
12
|
-
function resolveLog(nameRaw, selectorInput) {
|
|
13
|
-
const selector = resolveReadSelector(selectorInput);
|
|
14
|
-
if (selector.store !== null)
|
|
15
|
-
requireMountedStore(selector.store);
|
|
16
|
-
let doc;
|
|
17
|
-
try {
|
|
18
|
-
doc = selector.store !== null
|
|
19
|
-
? resolveMemoryDocInStore(nameRaw, selector.store)
|
|
20
|
-
: resolveMemoryDoc(nameRaw, { includeDescendants: true, ...(selector.scope ? { scope: selector.scope } : {}) });
|
|
21
|
-
}
|
|
22
|
-
catch (e) {
|
|
23
|
-
if (!(e instanceof CrtrError && e.code === 'not_found'))
|
|
24
|
-
throw e;
|
|
25
|
-
}
|
|
26
|
-
if (doc !== undefined) {
|
|
27
|
-
if (doc.plugin !== undefined) {
|
|
28
|
-
throw usage(`${doc.name} belongs to the installed plugin "${doc.plugin}" — a read-only corpus with no revision history.`, {
|
|
29
|
-
memory: doc.name,
|
|
30
|
-
plugin: doc.plugin,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
if (doc.scope === 'builtin') {
|
|
34
|
-
throw usage(`${doc.name} is a builtin document shipped with the package — a read-only corpus with no revision history.`, {
|
|
35
|
-
memory: doc.name,
|
|
36
|
-
scope: 'builtin',
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
return { name: doc.name, scope: doc.scope, logPath: historyLogPathForDoc(doc) };
|
|
40
|
-
}
|
|
41
|
-
const canonicalName = requireCanonicalName(nameRaw);
|
|
42
|
-
const stores = selector.store !== null
|
|
43
|
-
? [{ scope: selector.store.scope, memoryDir: selector.store.storeRoot, store: selector.store }]
|
|
44
|
-
: nativeMemoryStoresInPrecedence(selector.scope, true);
|
|
45
|
-
for (const store of stores) {
|
|
46
|
-
if (selector.store === null && store.store.namespace !== '' && stripNamespace(canonicalName, store.store.namespace) === null)
|
|
47
|
-
continue;
|
|
48
|
-
const localName = requireLocalNameInStore(store.store, canonicalName);
|
|
49
|
-
const deleted = resolveDeletedHistoryLogPath(store.memoryDir, localName);
|
|
50
|
-
if (deleted !== null) {
|
|
51
|
-
return { name: canonicalName, scope: store.scope, logPath: deleted.logPath, deleted };
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
throw notFound(`no memory document or revision history found: ${nameRaw}`, {
|
|
55
|
-
memory: nameRaw,
|
|
56
|
-
next: 'Run `crtr memory find <query>` to locate the document. A document that exists but has no history predates this surface or has never been mutated through it.',
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
export const historyLeaf = defineLeaf({
|
|
60
|
-
name: 'history',
|
|
61
|
-
description: 'read a memory document\u2019s revision history',
|
|
62
|
-
whenToUse: 'you want to know how a document reached its current state \u2014 who revised it, when, why, and what changed per revision. Works for a deleted document too: the log outlives the doc. A diagnostics read; it advances nothing and changes nothing.',
|
|
63
|
-
help: {
|
|
64
|
-
name: 'memory history',
|
|
65
|
-
summary: 'list a document\u2019s revisions newest-first, with diffs or one full record on demand',
|
|
66
|
-
guide: 'Every mutation through `crtr memory write`, `edit`, `move`, and `delete` appends one self-contained record \u2014 complete document text before and after, plus who, when, and (on an edit) why. Diffs and revision numbers are derived here at read time, never stored.\n\n' +
|
|
67
|
-
'A record whose `before` differs from the previous record\u2019s `after` is the evidence of an out-of-band direct file edit; nothing prevents those, and nothing detects them beyond this.\n\n' +
|
|
68
|
-
'The log is a plain JSONL file at `log_path`, one JSON object per line \u2014 an external consumer reads it directly rather than through this command.',
|
|
69
|
-
params: [
|
|
70
|
-
{ kind: 'positional', name: 'name', required: true, constraint: 'Full canonical memory name (a project document includes its namespace), resolved exactly. Deleted history uses the same canonical name and the selected store\u2019s physical sidecars; there is no leaf or scope-prefix fallback. Builtin and installed-plugin docs are read-only corpora and carry no history.' },
|
|
71
|
-
selectorParam('scope-read'),
|
|
72
|
-
selectorParam('dir'),
|
|
73
|
-
selectorParam('profile'),
|
|
74
|
-
{ kind: 'flag', name: 'limit', type: 'int', required: false, default: 10, constraint: 'How many revisions to return, newest first. Default 10.' },
|
|
75
|
-
{ kind: 'flag', name: 'diff', type: 'bool', required: false, constraint: 'Include a unified diff per listed revision, computed from that record\u2019s own before/after texts.' },
|
|
76
|
-
{ kind: 'flag', name: 'revision', type: 'int', required: false, constraint: 'Show ONE revision in full \u2014 its metadata plus the complete before and after document texts. 1-based position in the log: the number `crtr memory edit` reports. Overrides --limit and --diff.' },
|
|
77
|
-
// Scope, --dir, and --profile are shared selector contracts above.
|
|
78
|
-
],
|
|
79
|
-
output: [
|
|
80
|
-
{ name: 'name', type: 'string', required: true, constraint: 'Resolved document name.' },
|
|
81
|
-
{ name: 'scope', type: 'string', required: true, constraint: 'Scope whose store holds the log: node, project, profile, or user.' },
|
|
82
|
-
{ name: 'log_path', type: 'string', required: true, constraint: 'Absolute path to the append-only JSONL log \u2014 the direct-consumption pointer, one self-contained record per line.' },
|
|
83
|
-
{ name: 'history_candidates', type: 'object[]', required: false, constraint: 'Deleted-history physical candidates: {path, representation, winner}. The directory-index form is listed first and wins deterministically.' },
|
|
84
|
-
{ name: 'history_collision', type: 'object', required: false, constraint: 'Present when deleted history has both physical forms: {paths, winner}.' },
|
|
85
|
-
{ name: 'total', type: 'number', required: true, constraint: 'Total revisions in the log.' },
|
|
86
|
-
{ name: 'revisions', type: 'object[]', required: false, constraint: 'Newest-first, capped by --limit. Each: {revision, op, at, node, rationale, body_changed, frontmatter_changed, diff}. `node` and `rationale` are present only when recorded; `diff` only with --diff. Absent when --revision selects one record.' },
|
|
87
|
-
{ name: 'record', type: 'object', required: false, constraint: 'Present only with --revision: {revision, op, at, node, cwd, rationale, verbatim, before, after} \u2014 the full record including both complete document texts.' },
|
|
88
|
-
{ name: 'follow_up', type: 'string', required: true, constraint: 'Concrete next commands \u2014 the flag variants and the doc read, or, for a deleted document, the revision carrying its retained final text.' },
|
|
89
|
-
],
|
|
90
|
-
outputKind: 'object',
|
|
91
|
-
effects: ['None. Read-only.'],
|
|
92
|
-
},
|
|
93
|
-
// A unified diff is multi-line, and the default object[] renderer flattens it
|
|
94
|
-
// into one table cell. With --diff each revision gets its own block instead;
|
|
95
|
-
// every other shape falls through to the default rendering.
|
|
96
|
-
render: (result) => {
|
|
97
|
-
const revisions = result['revisions'];
|
|
98
|
-
if (revisions === undefined || !revisions.some((r) => typeof r['diff'] === 'string')) {
|
|
99
|
-
return renderResult(result, historyLeaf.help);
|
|
100
|
-
}
|
|
101
|
-
const blocks = revisions.map((r) => {
|
|
102
|
-
const meta = [`op: ${String(r['op'])}`, `at: ${String(r['at'])}`];
|
|
103
|
-
if (r['node'] !== undefined)
|
|
104
|
-
meta.push(`node: ${String(r['node'])}`);
|
|
105
|
-
if (r['verbatim'] === true)
|
|
106
|
-
meta.push('verbatim');
|
|
107
|
-
const fields = r['frontmatter_changed'] ?? [];
|
|
108
|
-
const changed = [
|
|
109
|
-
...(r['body_changed'] === true ? ['body'] : []),
|
|
110
|
-
...(fields.length > 0 ? [`frontmatter: ${fields.join(', ')}`] : []),
|
|
111
|
-
];
|
|
112
|
-
const diff = String(r['diff'] ?? '');
|
|
113
|
-
return [
|
|
114
|
-
`## revision ${String(r['revision'])} \u2014 ${meta.join(' \u00b7 ')}`,
|
|
115
|
-
...(r['rationale'] !== undefined ? [`rationale: ${String(r['rationale'])}`] : []),
|
|
116
|
-
`changed: ${changed.length > 0 ? changed.join('; ') : 'nothing'}`,
|
|
117
|
-
...(diff === '' ? [] : ['', '```diff', diff, '```']),
|
|
118
|
-
].join('\n');
|
|
119
|
-
});
|
|
120
|
-
return [
|
|
121
|
-
`- name: ${String(result['name'])}`,
|
|
122
|
-
`- scope: ${String(result['scope'])}`,
|
|
123
|
-
`- log_path: ${String(result['log_path'])}`,
|
|
124
|
-
`- total: ${String(result['total'])}`,
|
|
125
|
-
'',
|
|
126
|
-
blocks.join('\n\n'),
|
|
127
|
-
'',
|
|
128
|
-
String(result['follow_up']),
|
|
129
|
-
].join('\n');
|
|
130
|
-
},
|
|
131
|
-
run: async (input) => {
|
|
132
|
-
const nameRaw = input['name'];
|
|
133
|
-
const scopeArg = input['scope'];
|
|
134
|
-
const dirArg = input['dir'];
|
|
135
|
-
const profileArg = input['profile'];
|
|
136
|
-
const limit = input['limit'] ?? 10;
|
|
137
|
-
const wantDiff = input['diff'] === true;
|
|
138
|
-
const revisionArg = input['revision'];
|
|
139
|
-
const { name, scope, logPath, deleted } = resolveLog(nameRaw, { scope: scopeArg, dir: dirArg, profile: profileArg });
|
|
140
|
-
const historyMeta = deleted === undefined ? {} : {
|
|
141
|
-
history_candidates: deleted.candidates,
|
|
142
|
-
...(deleted.collision === undefined ? {} : { history_collision: deleted.collision }),
|
|
143
|
-
};
|
|
144
|
-
const records = readHistoryRecords(logPath);
|
|
145
|
-
if (records.length === 0) {
|
|
146
|
-
throw notFound(`no revision history recorded for ${name}`, {
|
|
147
|
-
memory: name,
|
|
148
|
-
next: 'The document predates this surface or has never been mutated through `crtr memory write`/`edit`/`delete`. Its first edit records the pre-existing content in full.',
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
if (revisionArg !== undefined) {
|
|
152
|
-
if (revisionArg < 1 || revisionArg > records.length) {
|
|
153
|
-
throw usage(`revision ${revisionArg} is out of range for ${name} (1..${records.length})`, {
|
|
154
|
-
memory: name,
|
|
155
|
-
next: `Run \`crtr memory history ${name}\` to see which revisions exist.`,
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
const r = records[revisionArg - 1];
|
|
159
|
-
return {
|
|
160
|
-
name,
|
|
161
|
-
scope,
|
|
162
|
-
log_path: logPath,
|
|
163
|
-
...historyMeta,
|
|
164
|
-
total: records.length,
|
|
165
|
-
record: { revision: revisionArg, ...r },
|
|
166
|
-
follow_up: deleted === undefined
|
|
167
|
-
? `Read the document as it stands with \`crtr memory read ${name}\`, or list the revisions with \`crtr memory history ${name} --diff\`.`
|
|
168
|
-
: `${name} is deleted — no read answers to it. This record's \`before\` is its text at that revision; the last revision (${records.length}) carries the text it was deleted with. List the revisions with \`crtr memory history ${name} --diff\`.`,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
const revisions = records
|
|
172
|
-
.map((r, i) => {
|
|
173
|
-
const summary = summarizeChange(r.before, r.after);
|
|
174
|
-
return {
|
|
175
|
-
revision: i + 1,
|
|
176
|
-
op: r.op,
|
|
177
|
-
at: r.at,
|
|
178
|
-
...(r.node !== undefined ? { node: r.node } : {}),
|
|
179
|
-
...(r.rationale !== undefined ? { rationale: r.rationale } : {}),
|
|
180
|
-
...(r.verbatim === true ? { verbatim: true } : {}),
|
|
181
|
-
...summary,
|
|
182
|
-
...(wantDiff ? { diff: unifiedDiff(r.before, r.after) } : {}),
|
|
183
|
-
};
|
|
184
|
-
})
|
|
185
|
-
.reverse()
|
|
186
|
-
.slice(0, Math.max(0, limit));
|
|
187
|
-
return {
|
|
188
|
-
name,
|
|
189
|
-
scope,
|
|
190
|
-
log_path: logPath,
|
|
191
|
-
...historyMeta,
|
|
192
|
-
total: records.length,
|
|
193
|
-
revisions,
|
|
194
|
-
follow_up: deleted === undefined
|
|
195
|
-
? `Add --diff for per-revision unified diffs, --revision N for one record's full before/after text, or read the document as it stands with \`crtr memory read ${name}\`.`
|
|
196
|
-
: `${name} is deleted and only this log survives — no read answers to it. Add --diff for per-revision unified diffs, or recover its final text with \`crtr memory history ${name} --revision ${records.length}\`, whose \`before\` is the document as it stood when deleted.`,
|
|
197
|
-
};
|
|
198
|
-
},
|
|
199
|
-
});
|
|
1
|
+
var x=Object.defineProperty;var h=(t,a)=>x(t,"name",{value:a,configurable:!0});import{defineLeaf as S}from"../../core/command.js";import{CrtrError as _,notFound as v,usage as u}from"../../core/errors.js";import{nativeMemoryStoresInPrecedence as q,resolveMemoryDoc as j,resolveMemoryDocInStore as D}from"../../core/memory-resolver.js";import{renderResult as N}from"../../core/render.js";import{historyLogPathForDoc as A,readHistoryRecords as P,resolveDeletedHistoryLogPath as k,summarizeChange as L,unifiedDiff as M}from"../../core/memory/history.js";import{requireCanonicalName as R,requireLocalNameInStore as T,requireMountedStore as I,resolveReadSelector as O,selectorParam as p}from"./shared.js";import{stripNamespace as C}from"../../core/memory/identity.js";function E(t,a){const r=O(a);r.store!==null&&I(r.store);let e;try{e=r.store!==null?D(t,r.store):j(t,{includeDescendants:!0,...r.scope?{scope:r.scope}:{}})}catch(n){if(!(n instanceof _&&n.code==="not_found"))throw n}if(e!==void 0){if(e.plugin!==void 0)throw u(`${e.name} belongs to the installed plugin "${e.plugin}" \u2014 a read-only corpus with no revision history.`,{memory:e.name,plugin:e.plugin});if(e.scope==="builtin")throw u(`${e.name} is a builtin document shipped with the package \u2014 a read-only corpus with no revision history.`,{memory:e.name,scope:"builtin"});return{name:e.name,scope:e.scope,logPath:A(e)}}const d=R(t),l=r.store!==null?[{scope:r.store.scope,memoryDir:r.store.storeRoot,store:r.store}]:q(r.scope,!0);for(const n of l){if(r.store===null&&n.store.namespace!==""&&C(d,n.store.namespace)===null)continue;const s=T(n.store,d),o=k(n.memoryDir,s);if(o!==null)return{name:d,scope:n.scope,logPath:o.logPath,deleted:o}}throw v(`no memory document or revision history found: ${t}`,{memory:t,next:"Run `crtr memory find <query>` to locate the document. A document that exists but has no history predates this surface or has never been mutated through it."})}h(E,"resolveLog");const F=S({name:"history",description:"read a memory document\u2019s revision history",whenToUse:"you want to know how a document reached its current state \u2014 who revised it, when, why, and what changed per revision. Works for a deleted document too: the log outlives the doc. A diagnostics read; it advances nothing and changes nothing.",help:{name:"memory history",summary:"list a document\u2019s revisions newest-first, with diffs or one full record on demand",guide:"Every mutation through `crtr memory write`, `edit`, `move`, and `delete` appends one self-contained record \u2014 complete document text before and after, plus who, when, and (on an edit) why. Diffs and revision numbers are derived here at read time, never stored.\n\nA record whose `before` differs from the previous record\u2019s `after` is the evidence of an out-of-band direct file edit; nothing prevents those, and nothing detects them beyond this.\n\nThe log is a plain JSONL file at `log_path`, one JSON object per line \u2014 an external consumer reads it directly rather than through this command.",params:[{kind:"positional",name:"name",required:!0,constraint:"Full canonical memory name (a project document includes its namespace), resolved exactly. Deleted history uses the same canonical name and the selected store\u2019s physical sidecars; there is no leaf or scope-prefix fallback. Builtin and installed-plugin docs are read-only corpora and carry no history."},p("scope-read"),p("dir"),p("profile"),{kind:"flag",name:"limit",type:"int",required:!1,default:10,constraint:"How many revisions to return, newest first. Default 10."},{kind:"flag",name:"diff",type:"bool",required:!1,constraint:"Include a unified diff per listed revision, computed from that record\u2019s own before/after texts."},{kind:"flag",name:"revision",type:"int",required:!1,constraint:"Show ONE revision in full \u2014 its metadata plus the complete before and after document texts. 1-based position in the log: the number `crtr memory edit` reports. Overrides --limit and --diff."}],output:[{name:"name",type:"string",required:!0,constraint:"Resolved document name."},{name:"scope",type:"string",required:!0,constraint:"Scope whose store holds the log: node, project, profile, or user."},{name:"log_path",type:"string",required:!0,constraint:"Absolute path to the append-only JSONL log \u2014 the direct-consumption pointer, one self-contained record per line."},{name:"history_candidates",type:"object[]",required:!1,constraint:"Deleted-history physical candidates: {path, representation, winner}. The directory-index form is listed first and wins deterministically."},{name:"history_collision",type:"object",required:!1,constraint:"Present when deleted history has both physical forms: {paths, winner}."},{name:"total",type:"number",required:!0,constraint:"Total revisions in the log."},{name:"revisions",type:"object[]",required:!1,constraint:"Newest-first, capped by --limit. Each: {revision, op, at, node, rationale, body_changed, frontmatter_changed, diff}. `node` and `rationale` are present only when recorded; `diff` only with --diff. Absent when --revision selects one record."},{name:"record",type:"object",required:!1,constraint:"Present only with --revision: {revision, op, at, node, cwd, rationale, verbatim, before, after} \u2014 the full record including both complete document texts."},{name:"follow_up",type:"string",required:!0,constraint:"Concrete next commands \u2014 the flag variants and the doc read, or, for a deleted document, the revision carrying its retained final text."}],outputKind:"object",effects:["None. Read-only."]},render:h(t=>{const a=t.revisions;if(a===void 0||!a.some(e=>typeof e.diff=="string"))return N(t,F.help);const r=a.map(e=>{const d=[`op: ${String(e.op)}`,`at: ${String(e.at)}`];e.node!==void 0&&d.push(`node: ${String(e.node)}`),e.verbatim===!0&&d.push("verbatim");const l=e.frontmatter_changed??[],n=[...e.body_changed===!0?["body"]:[],...l.length>0?[`frontmatter: ${l.join(", ")}`]:[]],s=String(e.diff??"");return[`## revision ${String(e.revision)} \u2014 ${d.join(" \xB7 ")}`,...e.rationale!==void 0?[`rationale: ${String(e.rationale)}`]:[],`changed: ${n.length>0?n.join("; "):"nothing"}`,...s===""?[]:["","```diff",s,"```"]].join(`
|
|
2
|
+
`)});return[`- name: ${String(t.name)}`,`- scope: ${String(t.scope)}`,`- log_path: ${String(t.log_path)}`,`- total: ${String(t.total)}`,"",r.join(`
|
|
3
|
+
|
|
4
|
+
`),"",String(t.follow_up)].join(`
|
|
5
|
+
`)},"render"),run:h(async t=>{const a=t.name,r=t.scope,e=t.dir,d=t.profile,l=t.limit??10,n=t.diff===!0,s=t.revision,{name:o,scope:y,logPath:m,deleted:f}=E(a,{scope:r,dir:e,profile:d}),g=f===void 0?{}:{history_candidates:f.candidates,...f.collision===void 0?{}:{history_collision:f.collision}},c=P(m);if(c.length===0)throw v(`no revision history recorded for ${o}`,{memory:o,next:"The document predates this surface or has never been mutated through `crtr memory write`/`edit`/`delete`. Its first edit records the pre-existing content in full."});if(s!==void 0){if(s<1||s>c.length)throw u(`revision ${s} is out of range for ${o} (1..${c.length})`,{memory:o,next:`Run \`crtr memory history ${o}\` to see which revisions exist.`});const i=c[s-1];return{name:o,scope:y,log_path:m,...g,total:c.length,record:{revision:s,...i},follow_up:f===void 0?`Read the document as it stands with \`crtr memory read ${o}\`, or list the revisions with \`crtr memory history ${o} --diff\`.`:`${o} is deleted \u2014 no read answers to it. This record's \`before\` is its text at that revision; the last revision (${c.length}) carries the text it was deleted with. List the revisions with \`crtr memory history ${o} --diff\`.`}}const w=c.map((i,b)=>{const $=L(i.before,i.after);return{revision:b+1,op:i.op,at:i.at,...i.node!==void 0?{node:i.node}:{},...i.rationale!==void 0?{rationale:i.rationale}:{},...i.verbatim===!0?{verbatim:!0}:{},...$,...n?{diff:M(i.before,i.after)}:{}}}).reverse().slice(0,Math.max(0,l));return{name:o,scope:y,log_path:m,...g,total:c.length,revisions:w,follow_up:f===void 0?`Add --diff for per-revision unified diffs, --revision N for one record's full before/after text, or read the document as it stands with \`crtr memory read ${o}\`.`:`${o} is deleted and only this log survives \u2014 no read answers to it. Add --diff for per-revision unified diffs, or recover its final text with \`crtr memory history ${o} --revision ${c.length}\`, whose \`before\` is the document as it stood when deleted.`}},"run")});export{F as historyLeaf};
|
|
@@ -1,107 +1 @@
|
|
|
1
|
-
|
|
2
|
-
// (`core/memory/lint.ts`). Every rule lives in the engine, which migration
|
|
3
|
-
// verification, the plugin candidate gate, and the build's builtin gate consume
|
|
4
|
-
// too; this leaf only picks WHAT to lint (a target view, or one exact store
|
|
5
|
-
// with --dir) and shapes the findings for the CLI.
|
|
6
|
-
import { envProfileId } from '../../shared/env.js';
|
|
7
|
-
import { defineLeaf } from '../../core/command.js';
|
|
8
|
-
import { warn } from '../../core/output.js';
|
|
9
|
-
import { ExitCode } from '../../types.js';
|
|
10
|
-
import { lintMemoryStore, lintMemoryTarget, lintOrphans, resolvableCanonicalNames, } from '../../core/memory/lint.js';
|
|
11
|
-
import { loadMemoryTargetView } from '../../core/memory-resolver.js';
|
|
12
|
-
import { resolveReadSelector, selectorParam } from './shared.js';
|
|
13
|
-
function findingRow(finding) {
|
|
14
|
-
return {
|
|
15
|
-
rule: finding.rule,
|
|
16
|
-
path: finding.path,
|
|
17
|
-
message: finding.message,
|
|
18
|
-
...(finding.name === undefined ? {} : { name: finding.name }),
|
|
19
|
-
...(finding.scope === undefined ? {} : { scope: finding.scope }),
|
|
20
|
-
...(finding.storeRoot === undefined ? {} : { store_root: finding.storeRoot }),
|
|
21
|
-
...(finding.paths === undefined ? {} : { paths: [...finding.paths] }),
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
/** The target view an agent standing in a `--dir` store's project sees. Both a
|
|
25
|
-
* project doc's links/routes and its reachability are resolved against this,
|
|
26
|
-
* never the store in isolation — a project doc legitimately links a user or
|
|
27
|
-
* builtin doc, and is legitimately reached from one. */
|
|
28
|
-
function targetViewForStore(store) {
|
|
29
|
-
return loadMemoryTargetView({
|
|
30
|
-
cwd: store.ownerDir ?? store.storeRoot,
|
|
31
|
-
profileId: envProfileId() || null,
|
|
32
|
-
nodeId: null,
|
|
33
|
-
}, { quiet: true, includeDescendants: true });
|
|
34
|
-
}
|
|
35
|
-
export const lintLeaf = defineLeaf({
|
|
36
|
-
name: 'lint',
|
|
37
|
-
description: 'validate memory identity, frontmatter, and references across a target view or one exact store',
|
|
38
|
-
whenToUse: 'you authored, moved, or migrated documents and want the authoring-time gate before shipping them. It strict-parses every doc the selection covers and fails on: invalid YAML or substrate schema, a repository whose root store declares no valid `namespace:` (so the runtime refuses to mount it), a `namespace:` outside the repository-root store\u2019s root INDEX.md, two directories in one repository whose paths normalize to the same prefix, a `name:` on a root INDEX.md or a non-root `name:` that is not a valid store-LOCAL name, two files in one store owning one canonical identity, a `[[link]]` or literal `memory-read` route naming no document or directory in the view (a directory\u2019s own document answers at the directory name, never at `<dir>/INDEX`), a body longer than its delivery entries earn, and a repository whose root store’s workspace front door is missing or sits anywhere but its root INDEX.md. One canonical identity held by SEVERAL stores is legitimate (a linked worktree sharing its main checkout\u2019s namespace), so it is reported as a notice with the view\u2019s winner and every candidate, never failed. CI-friendly: non-zero exit on any error, warnings and notices stay non-fatal.',
|
|
39
|
-
help: {
|
|
40
|
-
name: 'memory lint',
|
|
41
|
-
summary: 'validate canonical identity, frontmatter, and references across the memory corpus',
|
|
42
|
-
params: [
|
|
43
|
-
selectorParam('scope-read', {}, 'Lints only that source class. Cross-store candidate notices and project front-door coverage need the unfiltered view, so a scope filter suppresses them.'),
|
|
44
|
-
selectorParam('dir', {}, 'Lints that one store even when the runtime refuses to mount it — the only way to check a project store before its repository namespace is declared. Its links and routes are resolved against the target view that project\u2019s own directory sees, and an unmounted store defers those reference checks (its identities are undetermined until the namespace exists).'),
|
|
45
|
-
],
|
|
46
|
-
output: [
|
|
47
|
-
{ name: 'checked', type: 'number', required: true, constraint: 'Markdown files examined.' },
|
|
48
|
-
{ name: 'stores', type: 'number', required: true, constraint: 'Physical memory stores linted.' },
|
|
49
|
-
{ name: 'profile_projects', type: 'number', required: false, constraint: 'Projects the selected profile manages that were checked for a workspace front door — zero under a scope filter excluding project stores. Absent under --dir.' },
|
|
50
|
-
{ name: 'findings', type: 'object[]', required: true, constraint: 'One row per ERROR: {rule, path, message, name?, scope?, store_root?, paths?}. `rule` names the violated rule (yaml, schema, extension, length, store-namespace, namespace-placement, root-name, root-index-unaddressable, local-name, canonical-collision, dangling-link, memory-read-route, front-door, owner-path-collision). `paths` carries every file sharing a collided identity, read winner first. Empty when green.' },
|
|
51
|
-
{ name: 'warnings', type: 'object[]', required: true, constraint: 'Same row shape, non-fatal authoring smells: short-preview, broad-memory-read, nested-store-boot, an advisory missing front door, a wildcard memory-read glob matching nothing, and orphan (a doc no reachability path routes an agent to — unfiltered target/--dir view only, never under --scope).' },
|
|
52
|
-
{ name: 'notices', type: 'object[]', required: true, constraint: 'Same row shape, inspection data rather than faults: cross-store-candidates (one canonical name held by several stores, winner first) and reference-check-deferred.' },
|
|
53
|
-
{ name: 'follow_up', type: 'string', required: true, constraint: 'Concrete next command.' },
|
|
54
|
-
],
|
|
55
|
-
outputKind: 'object',
|
|
56
|
-
effects: ['None. Read-only. Exits non-zero when any error finding exists.'],
|
|
57
|
-
},
|
|
58
|
-
run: async (input) => {
|
|
59
|
-
const selector = resolveReadSelector({
|
|
60
|
-
scope: input['scope'],
|
|
61
|
-
dir: input['dir'],
|
|
62
|
-
});
|
|
63
|
-
let result;
|
|
64
|
-
if (selector.store !== null) {
|
|
65
|
-
const view = targetViewForStore(selector.store);
|
|
66
|
-
const base = lintMemoryStore(selector.store, {
|
|
67
|
-
resolvable: resolvableCanonicalNames(view.docs),
|
|
68
|
-
// Asked about directly, not as a profile-managed project: a missing
|
|
69
|
-
// front door is a gap to report, not a failed gate.
|
|
70
|
-
frontDoor: 'advisory',
|
|
71
|
-
});
|
|
72
|
-
// Reachability is a whole-view property, so orphans are computed over the
|
|
73
|
-
// project's target view but flagged only for this store's own docs.
|
|
74
|
-
const orphans = lintOrphans(view.docs, { flagStoreRoot: selector.store.storeRoot });
|
|
75
|
-
result = { ...base, findings: [...base.findings, ...orphans], warnings: [...base.warnings, ...orphans] };
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
result = lintMemoryTarget({ ...(selector.scope === undefined ? {} : { scope: selector.scope }) });
|
|
79
|
-
}
|
|
80
|
-
const errors = result.errors.map(findingRow);
|
|
81
|
-
const warnings = result.warnings.map(findingRow);
|
|
82
|
-
const notices = result.notices.map(findingRow);
|
|
83
|
-
const counts = {
|
|
84
|
-
checked: result.checked,
|
|
85
|
-
stores: result.storesLinted,
|
|
86
|
-
...('profileProjects' in result ? { profile_projects: result.profileProjects } : {}),
|
|
87
|
-
};
|
|
88
|
-
for (const finding of [...result.warnings, ...result.errors]) {
|
|
89
|
-
warn(`memory lint: ${finding.rule}: ${finding.path}: ${finding.message}`);
|
|
90
|
-
}
|
|
91
|
-
// A failing lint still owes its declared rows — the findings ARE the
|
|
92
|
-
// result. It fails by exit code, not by throwing them away.
|
|
93
|
-
if (errors.length > 0)
|
|
94
|
-
process.exitCode = ExitCode.GENERAL;
|
|
95
|
-
return {
|
|
96
|
-
...counts,
|
|
97
|
-
findings: errors,
|
|
98
|
-
warnings,
|
|
99
|
-
notices,
|
|
100
|
-
follow_up: errors.length > 0
|
|
101
|
-
? `${errors.length} error(s) across ${result.checked} files in ${result.storesLinted} store(s) — fix each, then re-run. A repository store that does not mount is repaired with \`crtr sys migrate --dir <repository-root>\`; an owner-path collision is fixed by renaming one of the directories named in the finding; a canonical collision is recovered with \`crtr memory move <name> --to <new-free-name>\` (it selects the first physical path in stable lexical order); a dangling link or route is retargeted with the name \`crtr memory find <leaf>\` reports, or dropped; an over-length body splits into [[linked]] surface-less reference docs.`
|
|
102
|
-
: warnings.length > 0
|
|
103
|
-
? 'No errors — review the warnings above, then revise with `crtr memory edit <name> --rationale "<why>"`.'
|
|
104
|
-
: 'No errors. Notices are inspection data, not faults: a canonical name held by several stores is reachable per-store with `crtr memory read <name> --dir <project>`.',
|
|
105
|
-
};
|
|
106
|
-
},
|
|
107
|
-
});
|
|
1
|
+
var h=Object.defineProperty;var s=(e,o)=>h(e,"name",{value:o,configurable:!0});import{envProfileId as u}from"../../shared/env.js";import{defineLeaf as f}from"../../core/command.js";import{warn as y}from"../../core/output.js";import{ExitCode as w}from"../../types.js";import{lintMemoryStore as g,lintMemoryTarget as v,lintOrphans as b,resolvableCanonicalNames as k}from"../../core/memory/lint.js";import{loadMemoryTargetView as x}from"../../core/memory-resolver.js";import{resolveReadSelector as j,selectorParam as l}from"./shared.js";function i(e){return{rule:e.rule,path:e.path,message:e.message,...e.name===void 0?{}:{name:e.name},...e.scope===void 0?{}:{scope:e.scope},...e.storeRoot===void 0?{}:{store_root:e.storeRoot},...e.paths===void 0?{}:{paths:[...e.paths]}}}s(i,"findingRow");function R(e){return x({cwd:e.ownerDir??e.storeRoot,profileId:u()||null,nodeId:null},{quiet:!0,includeDescendants:!0})}s(R,"targetViewForStore");const A=f({name:"lint",description:"validate memory identity, frontmatter, and references across a target view or one exact store",whenToUse:"you authored, moved, or migrated documents and want the authoring-time gate before shipping them. It strict-parses every doc the selection covers and fails on: invalid YAML or substrate schema, a repository whose root store declares no valid `namespace:` (so the runtime refuses to mount it), a `namespace:` outside the repository-root store\u2019s root INDEX.md, two directories in one repository whose paths normalize to the same prefix, a `name:` on a root INDEX.md or a non-root `name:` that is not a valid store-LOCAL name, two files in one store owning one canonical identity, a `[[link]]` or literal `memory-read` route naming no document or directory in the view (a directory\u2019s own document answers at the directory name, never at `<dir>/INDEX`), a body longer than its delivery entries earn, and a repository whose root store\u2019s workspace front door is missing or sits anywhere but its root INDEX.md. One canonical identity held by SEVERAL stores is legitimate (a linked worktree sharing its main checkout\u2019s namespace), so it is reported as a notice with the view\u2019s winner and every candidate, never failed. CI-friendly: non-zero exit on any error, warnings and notices stay non-fatal.",help:{name:"memory lint",summary:"validate canonical identity, frontmatter, and references across the memory corpus",params:[l("scope-read",{},"Lints only that source class. Cross-store candidate notices and project front-door coverage need the unfiltered view, so a scope filter suppresses them."),l("dir",{},"Lints that one store even when the runtime refuses to mount it \u2014 the only way to check a project store before its repository namespace is declared. Its links and routes are resolved against the target view that project\u2019s own directory sees, and an unmounted store defers those reference checks (its identities are undetermined until the namespace exists).")],output:[{name:"checked",type:"number",required:!0,constraint:"Markdown files examined."},{name:"stores",type:"number",required:!0,constraint:"Physical memory stores linted."},{name:"profile_projects",type:"number",required:!1,constraint:"Projects the selected profile manages that were checked for a workspace front door \u2014 zero under a scope filter excluding project stores. Absent under --dir."},{name:"findings",type:"object[]",required:!0,constraint:"One row per ERROR: {rule, path, message, name?, scope?, store_root?, paths?}. `rule` names the violated rule (yaml, schema, extension, length, store-namespace, namespace-placement, root-name, root-index-unaddressable, local-name, canonical-collision, dangling-link, memory-read-route, front-door, owner-path-collision). `paths` carries every file sharing a collided identity, read winner first. Empty when green."},{name:"warnings",type:"object[]",required:!0,constraint:"Same row shape, non-fatal authoring smells: short-preview, broad-memory-read, nested-store-boot, an advisory missing front door, a wildcard memory-read glob matching nothing, and orphan (a doc no reachability path routes an agent to \u2014 unfiltered target/--dir view only, never under --scope)."},{name:"notices",type:"object[]",required:!0,constraint:"Same row shape, inspection data rather than faults: cross-store-candidates (one canonical name held by several stores, winner first) and reference-check-deferred."},{name:"follow_up",type:"string",required:!0,constraint:"Concrete next command."}],outputKind:"object",effects:["None. Read-only. Exits non-zero when any error finding exists."]},run:s(async e=>{const o=j({scope:e.scope,dir:e.dir});let r;if(o.store!==null){const t=R(o.store),a=g(o.store,{resolvable:k(t.docs),frontDoor:"advisory"}),d=b(t.docs,{flagStoreRoot:o.store.storeRoot});r={...a,findings:[...a.findings,...d],warnings:[...a.warnings,...d]}}else r=v({...o.scope===void 0?{}:{scope:o.scope}});const n=r.errors.map(i),c=r.warnings.map(i),m=r.notices.map(i),p={checked:r.checked,stores:r.storesLinted,..."profileProjects"in r?{profile_projects:r.profileProjects}:{}};for(const t of[...r.warnings,...r.errors])y(`memory lint: ${t.rule}: ${t.path}: ${t.message}`);return n.length>0&&(process.exitCode=w.GENERAL),{...p,findings:n,warnings:c,notices:m,follow_up:n.length>0?`${n.length} error(s) across ${r.checked} files in ${r.storesLinted} store(s) \u2014 fix each, then re-run. A repository store that does not mount is repaired with \`crtr sys migrate --dir <repository-root>\`; an owner-path collision is fixed by renaming one of the directories named in the finding; a canonical collision is recovered with \`crtr memory move <name> --to <new-free-name>\` (it selects the first physical path in stable lexical order); a dangling link or route is retargeted with the name \`crtr memory find <leaf>\` reports, or dropped; an over-length body splits into [[linked]] surface-less reference docs.`:c.length>0?'No errors \u2014 review the warnings above, then revise with `crtr memory edit <name> --rationale "<why>"`.':"No errors. Notices are inspection data, not faults: a canonical name held by several stores is reachable per-store with `crtr memory read <name> --dir <project>`."}},"run")});export{A as lintLeaf};
|