@north-light/crouter 0.3.318 → 0.3.320
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -3
- package/dist/api/client.js +2 -912
- package/dist/api/dto/attach.js +0 -13
- package/dist/api/dto/bash-jobs.js +1 -9
- package/dist/api/dto/broker-ops.js +0 -6
- package/dist/api/dto/broker.js +0 -20
- package/dist/api/dto/canvas.js +0 -2
- package/dist/api/dto/chat-inventory.js +0 -11
- package/dist/api/dto/common.js +1 -15
- package/dist/api/dto/config.js +0 -3
- package/dist/api/dto/crons.js +1 -10
- package/dist/api/dto/files.js +0 -7
- package/dist/api/dto/focus.js +0 -10
- package/dist/api/dto/health.js +0 -2
- package/dist/api/dto/human-requests.js +0 -4
- package/dist/api/dto/human.js +0 -4
- package/dist/api/dto/inbox.js +0 -4
- package/dist/api/dto/lifecycle.js +0 -3
- package/dist/api/dto/mail.js +0 -1
- package/dist/api/dto/memory.js +0 -6
- package/dist/api/dto/messages.js +0 -2
- package/dist/api/dto/model-config.js +0 -1
- package/dist/api/dto/modelauth.js +0 -4
- package/dist/api/dto/node-outcomes.js +0 -2
- package/dist/api/dto/nodes.js +0 -3
- package/dist/api/dto/profiles.js +1 -4
- package/dist/api/dto/recovery.js +0 -1
- package/dist/api/dto/reports.js +0 -2
- package/dist/api/dto/review-comments.js +0 -5
- package/dist/api/dto/reviews.js +0 -5
- package/dist/api/dto/subscriptions.js +0 -2
- package/dist/api/dto/worktree.js +0 -6
- package/dist/api/errors.js +1 -40
- package/dist/api/index.js +1 -33
- package/dist/api/plugin-manifest-schema.js +0 -23
- package/dist/api/routes.js +1 -147
- package/dist/build-root.js +1 -198
- package/dist/cli.js +3 -99
- package/dist/clients/attach/ansi-cells.js +1 -137
- package/dist/clients/attach/chrome/bash-jobs.js +1 -31
- package/dist/clients/attach/chrome/canvas-panels.js +1 -194
- package/dist/clients/attach/chrome/completion-bell.js +1 -89
- package/dist/clients/attach/chrome/cron-wait.js +1 -34
- package/dist/clients/attach/chrome/git-info.js +2 -44
- package/dist/clients/attach/chrome/header.js +1 -30
- package/dist/clients/attach/chrome/inbox-strip.js +1 -199
- package/dist/clients/attach/chrome/recap.js +1 -19
- package/dist/clients/attach/chrome/review-wait.js +1 -22
- package/dist/clients/attach/chrome/roster.js +4 -275
- package/dist/clients/attach/chrome/status-line.js +1 -117
- package/dist/clients/attach/chrome/ticket-panel.js +1 -280
- package/dist/clients/attach/chrome/widgets.js +1 -51
- package/dist/clients/attach/command.js +1 -107
- package/dist/clients/attach/config.js +1 -274
- package/dist/clients/attach/input/capabilities.js +1 -104
- package/dist/clients/attach/input/clipboard-image.js +3 -220
- package/dist/clients/attach/input/completion-frecency.js +1 -141
- package/dist/clients/attach/input/controller.js +7 -377
- package/dist/clients/attach/input/overlay-owner.js +1 -199
- package/dist/clients/attach/input/ref-autocomplete.js +2 -176
- package/dist/clients/attach/input/titled-editor.js +4 -859
- package/dist/clients/attach/overlays/auth.js +2 -271
- package/dist/clients/attach/overlays/dialogs.js +2 -102
- package/dist/clients/attach/overlays/file-review.js +2 -128
- package/dist/clients/attach/overlays/graph.js +1 -661
- package/dist/clients/attach/overlays/help.js +1 -211
- package/dist/clients/attach/overlays/mcp.js +1 -302
- package/dist/clients/attach/overlays/pickers.js +1 -163
- package/dist/clients/attach/render/activity-slot.js +1 -13
- package/dist/clients/attach/render/assistant-message.js +1 -56
- package/dist/clients/attach/render/card-presentation.js +5 -218
- package/dist/clients/attach/render/chat-view.js +5 -1708
- package/dist/clients/attach/render/condensed-history.js +1 -60
- package/dist/clients/attach/render/context-message.js +1 -63
- package/dist/clients/attach/render/crtr-output.js +17 -905
- package/dist/clients/attach/render/diagram.js +7 -111
- package/dist/clients/attach/render/edit-diff.js +5 -304
- package/dist/clients/attach/render/glyph-codepoints.js +1 -42
- package/dist/clients/attach/render/group-activity.js +2 -263
- package/dist/clients/attach/render/group-recap.js +1 -152
- package/dist/clients/attach/render/markdown-source.js +5 -266
- package/dist/clients/attach/render/measured-container.js +1 -322
- package/dist/clients/attach/render/page-block.js +1 -183
- package/dist/clients/attach/render/scroll-animation.js +1 -80
- package/dist/clients/attach/render/tool-calls.js +3 -361
- package/dist/clients/attach/render/transcript-copy.js +2 -81
- package/dist/clients/attach/render/transcript-search.js +1 -152
- package/dist/clients/attach/render/viewport.js +1 -184
- package/dist/clients/attach/session/banner.js +1 -29
- package/dist/clients/attach/session/bindings.js +1 -71
- package/dist/clients/attach/session/chrome-refresh.js +1 -94
- package/dist/clients/attach/session/connection.js +1 -186
- package/dist/clients/attach/session/context.js +0 -16
- package/dist/clients/attach/session/editor-frame.js +1 -142
- package/dist/clients/attach/session/editor-inventory.js +6 -160
- package/dist/clients/attach/session/file-links.js +1 -68
- package/dist/clients/attach/session/focus-events.js +1 -12
- package/dist/clients/attach/session/frame.js +1 -214
- package/dist/clients/attach/session/frames.js +1 -188
- package/dist/clients/attach/session/identity.js +1 -26
- package/dist/clients/attach/session/input-wiring.js +1 -140
- package/dist/clients/attach/session/invariant.js +1 -15
- package/dist/clients/attach/session/keys.js +1 -77
- package/dist/clients/attach/session/layout.js +1 -59
- package/dist/clients/attach/session/mouse.js +1 -78
- package/dist/clients/attach/session/pane-focus.js +1 -42
- package/dist/clients/attach/session/pane-tag.js +1 -112
- package/dist/clients/attach/session/pi-assets.js +1 -24
- package/dist/clients/attach/session/pi-oauth-flows.js +1 -21
- package/dist/clients/attach/session/profile-files.js +1 -228
- package/dist/clients/attach/session/reconnect.js +1 -175
- package/dist/clients/attach/session/selection.js +3 -108
- package/dist/clients/attach/session/state-sync.js +1 -67
- package/dist/clients/attach/session/surface-frame.js +1 -73
- package/dist/clients/attach/session/surface-host.js +1 -255
- package/dist/clients/attach/session/teardown.js +5 -94
- package/dist/clients/attach/session/transcript-search.js +3 -151
- package/dist/clients/attach/session/whip-achievements.js +2 -145
- package/dist/clients/attach/session/whip.js +1 -362
- package/dist/clients/attach/slash/dispatch.js +1 -706
- package/dist/clients/attach/slash/prompt-preview.js +1 -121
- package/dist/clients/attach/viewer.js +441 -441
- package/dist/clients/conversation/projection.js +1 -324
- package/dist/clients/conversation/submit.js +1 -51
- package/dist/clients/inbox/controller.js +1 -701
- package/dist/clients/inbox/dto-adapt.js +1 -93
- package/dist/clients/inbox/layout.js +1 -9
- package/dist/clients/inbox/page-adapter.js +1 -55
- package/dist/clients/inbox/resolve.js +1 -35
- package/dist/clients/inbox/review/anchors.js +1 -89
- package/dist/clients/inbox/review/comments-client.js +1 -98
- package/dist/clients/inbox/review/companion-pane.js +1 -82
- package/dist/clients/inbox/review/document-surface.js +2 -1188
- package/dist/clients/inbox/review/frame.js +1 -216
- package/dist/clients/inbox/review/keys.js +1 -123
- package/dist/clients/inbox/review/launch.js +1 -151
- package/dist/clients/inbox/review/live-source.js +1 -160
- package/dist/clients/inbox/review/nvim.js +1 -44
- package/dist/clients/inbox/review/remap.js +1 -157
- package/dist/clients/inbox/review/review-client.js +1 -123
- package/dist/clients/inbox/review/roundtrip.js +3 -36
- package/dist/clients/inbox/review/state.js +4 -315
- package/dist/clients/inbox/review-adapter.js +1 -43
- package/dist/clients/inbox/surface.js +1 -152
- package/dist/clients/inbox/tui/ansi.js +3 -321
- package/dist/clients/inbox/tui/input.js +5 -392
- package/dist/clients/inbox/tui/keys.js +1 -104
- package/dist/clients/inbox/tui/page-body.js +1 -66
- package/dist/clients/inbox/tui/panel.js +1 -84
- package/dist/clients/inbox/tui/render.js +2 -368
- package/dist/clients/inbox/tui/slots.js +3 -134
- package/dist/clients/inbox/tui/types.js +0 -1
- package/dist/clients/inbox/tui.js +1 -86
- package/dist/clients/surfaces/host.js +0 -1
- package/dist/commands/api-client.js +4 -290
- package/dist/commands/attention.js +1 -215
- package/dist/commands/canvas-browse.js +1 -70
- package/dist/commands/canvas-config.js +2 -192
- package/dist/commands/canvas-history/grep.js +7 -85
- package/dist/commands/canvas-history/read.js +3 -50
- package/dist/commands/canvas-history/search.js +10 -99
- package/dist/commands/canvas-history/shared.js +1 -139
- package/dist/commands/canvas-history/stats.js +6 -68
- package/dist/commands/canvas-history.js +1 -32
- package/dist/commands/canvas-issue.js +14 -149
- package/dist/commands/canvas-prune.js +1 -108
- package/dist/commands/canvas-roster.js +1 -69
- package/dist/commands/canvas-snapshot.js +1 -34
- package/dist/commands/canvas-use.js +1 -61
- package/dist/commands/canvas.js +1 -49
- package/dist/commands/chord.js +1 -241
- package/dist/commands/cron.js +11 -534
- package/dist/commands/dashboard.js +1 -85
- package/dist/commands/human/components.js +3 -77
- package/dist/commands/human/feedback.js +1 -112
- package/dist/commands/human/prompts.js +1 -331
- package/dist/commands/human/queue.js +1 -191
- package/dist/commands/human/request.js +1 -266
- package/dist/commands/human/review.js +1 -288
- package/dist/commands/human/shared.js +1 -67
- package/dist/commands/human.js +4 -60
- package/dist/commands/memory/delete.js +1 -100
- package/dist/commands/memory/edit.js +21 -219
- package/dist/commands/memory/find.js +2 -244
- package/dist/commands/memory/history.js +5 -199
- package/dist/commands/memory/lint.js +1 -107
- package/dist/commands/memory/list.js +1 -142
- package/dist/commands/memory/move.js +1 -223
- package/dist/commands/memory/origin.js +1 -130
- package/dist/commands/memory/read.js +6 -232
- package/dist/commands/memory/shared.js +12 -802
- package/dist/commands/memory/write.js +13 -235
- package/dist/commands/memory.js +1 -30
- package/dist/commands/node/bash.js +5 -245
- package/dist/commands/node/create.js +3 -332
- package/dist/commands/node/inspect.js +12 -300
- package/dist/commands/node/lifecycle.js +2 -453
- package/dist/commands/node/message.js +1 -161
- package/dist/commands/node/outcome.js +4 -134
- package/dist/commands/node/pyramid.js +2 -79
- package/dist/commands/node/subscription.js +1 -78
- package/dist/commands/node/wait.js +7 -163
- package/dist/commands/node-context.js +2 -159
- package/dist/commands/node-inspect-artifacts.js +8 -109
- package/dist/commands/node-lifecycle-revive.js +1 -217
- package/dist/commands/node-snapshot.js +1 -37
- package/dist/commands/node-transcript.js +1 -62
- package/dist/commands/node-worktree.js +1 -138
- package/dist/commands/node.js +1 -29
- package/dist/commands/pkg/browse/actions.js +1 -198
- package/dist/commands/pkg/browse/catalog.js +1 -466
- package/dist/commands/pkg/browse/command-view.js +1 -191
- package/dist/commands/pkg/browse/detail-panel.js +1 -402
- package/dist/commands/pkg/browse/doc-view.js +1 -89
- package/dist/commands/pkg/browse/list-panel.js +2 -168
- package/dist/commands/pkg/browse/model.js +1 -36
- package/dist/commands/pkg/browse/shell.js +1 -640
- package/dist/commands/pkg/browse.js +1 -27
- package/dist/commands/pkg/market-inspect.js +1 -141
- package/dist/commands/pkg/market-manage.js +1 -327
- package/dist/commands/pkg/market.js +1 -14
- package/dist/commands/pkg/plugin-inspect.js +1 -168
- package/dist/commands/pkg/plugin-manage.js +17 -1109
- package/dist/commands/pkg/plugin.js +1 -14
- package/dist/commands/pkg/shared.js +1 -62
- package/dist/commands/pkg.js +1 -21
- package/dist/commands/profile/default.js +1 -139
- package/dist/commands/profile/delete.js +1 -66
- package/dist/commands/profile/env.js +3 -188
- package/dist/commands/profile/kind.js +2 -35
- package/dist/commands/profile/list.js +1 -43
- package/dist/commands/profile/meta.js +1 -67
- package/dist/commands/profile/new.js +1 -115
- package/dist/commands/profile/pause.js +1 -59
- package/dist/commands/profile/project.js +1 -113
- package/dist/commands/profile/rename.js +1 -38
- package/dist/commands/profile/show.js +1 -52
- package/dist/commands/profile.js +1 -35
- package/dist/commands/push.js +9 -265
- package/dist/commands/revive.js +10 -181
- package/dist/commands/surface/node/cycle.js +1 -83
- package/dist/commands/surface/node/focus.js +1 -81
- package/dist/commands/surface/node/id.js +1 -38
- package/dist/commands/surface/node/pin.js +1 -42
- package/dist/commands/surface/node/placement.js +1 -134
- package/dist/commands/surface-edit.js +1 -157
- package/dist/commands/surface-inbox.js +1 -98
- package/dist/commands/surface-inspect.js +1 -39
- package/dist/commands/surface-node.js +1 -19
- package/dist/commands/surface-reload.js +2 -134
- package/dist/commands/surface-tmux-spread.js +1 -214
- package/dist/commands/surface.js +1 -28
- package/dist/commands/sys/branch.js +1 -19
- package/dist/commands/sys/config.js +1 -353
- package/dist/commands/sys/context/admin/actions.js +2 -246
- package/dist/commands/sys/context/admin/detail-panel.js +1 -247
- package/dist/commands/sys/context/admin/docs-panel.js +1 -191
- package/dist/commands/sys/context/admin/list-view.js +1 -183
- package/dist/commands/sys/context/admin/model.js +1 -229
- package/dist/commands/sys/context/admin/rail-panel.js +1 -227
- package/dist/commands/sys/context/admin/read-view.js +2 -194
- package/dist/commands/sys/context/admin/shell.js +1 -910
- package/dist/commands/sys/context/admin.js +2 -126
- package/dist/commands/sys/context/doc.js +3 -197
- package/dist/commands/sys/context/prompt-review.js +11 -291
- package/dist/commands/sys/context/resolve.js +10 -489
- package/dist/commands/sys/context/sysprompt.js +5 -96
- package/dist/commands/sys/context.js +1 -20
- package/dist/commands/sys/daemon.js +1 -313
- package/dist/commands/sys/doctor.js +1 -617
- package/dist/commands/sys/feedback.js +7 -228
- package/dist/commands/sys/logs.js +3 -129
- package/dist/commands/sys/migrate.js +1 -94
- package/dist/commands/sys/panels/broker-limits-panel.js +2 -110
- package/dist/commands/sys/panels/dependencies-panel.js +1 -80
- package/dist/commands/sys/panels/keybindings-panel.js +1 -703
- package/dist/commands/sys/panels/models-panel.js +1 -1133
- package/dist/commands/sys/panels/plugins-panel.js +1 -80
- package/dist/commands/sys/panels/prefs-panel.js +1 -85
- package/dist/commands/sys/panels/profiles-panel.js +1 -601
- package/dist/commands/sys/panels/provider-panel.js +1 -538
- package/dist/commands/sys/settings-shell.js +1 -400
- package/dist/commands/sys/settings.js +1 -46
- package/dist/commands/sys/setup-core.js +6 -579
- package/dist/commands/sys/setup-settings-runner.js +1 -16
- package/dist/commands/sys/setup-wizard.js +1 -279
- package/dist/commands/sys/setup.js +1 -34
- package/dist/commands/sys/shared.js +1 -81
- package/dist/commands/sys/support/prepare.js +3 -239
- package/dist/commands/sys/support/submit.js +6 -524
- package/dist/commands/sys/support.js +1 -18
- package/dist/commands/sys/sync-deps.js +15 -498
- package/dist/commands/sys/sync-project-guidance.js +4 -481
- package/dist/commands/sys/sync-shared.js +1 -49
- package/dist/commands/sys/sync-skills.js +2 -311
- package/dist/commands/sys/sync.js +1 -18
- package/dist/commands/sys/update.js +1 -147
- package/dist/commands/sys/worktrees.js +5 -53
- package/dist/commands/sys.js +1 -18
- package/dist/core/activity-signal.js +2 -38
- package/dist/core/asset-root.js +1 -18
- package/dist/core/auth-file.js +2 -179
- package/dist/core/auth-interaction.js +3 -94
- package/dist/core/auto-update.js +4 -94
- package/dist/core/bash-guard.js +11 -393
- package/dist/core/bash-jobs.js +7 -411
- package/dist/core/bootstrap.js +2 -53
- package/dist/core/broker-client/client.js +1 -184
- package/dist/core/broker-client/index.js +1 -13
- package/dist/core/broker-client/transport-relay.js +1 -157
- package/dist/core/broker-client/transport-socket.js +1 -179
- package/dist/core/broker-client/transport.js +1 -26
- package/dist/core/canvas/attention.js +1 -47
- package/dist/core/canvas/boot-id.js +1 -26
- package/dist/core/canvas/boot.js +1 -186
- package/dist/core/canvas/browse/app.js +3 -919
- package/dist/core/canvas/browse/model.js +1 -477
- package/dist/core/canvas/browse/pins.js +1 -29
- package/dist/core/canvas/browse/render.js +3 -1055
- package/dist/core/canvas/canvas.js +15 -922
- package/dist/core/canvas/crons.js +11 -481
- package/dist/core/canvas/daemon-owner.js +2 -146
- package/dist/core/canvas/db.js +2 -100
- package/dist/core/canvas/deliveries.js +22 -283
- package/dist/core/canvas/delivery-contract.js +1 -8
- package/dist/core/canvas/executions.js +1 -68
- package/dist/core/canvas/extensions.js +1 -83
- package/dist/core/canvas/focuses.js +1 -77
- package/dist/core/canvas/history.js +24 -860
- package/dist/core/canvas/index.js +1 -15
- package/dist/core/canvas/install-id.js +1 -84
- package/dist/core/canvas/labels.js +1 -43
- package/dist/core/canvas/meta-file.js +1 -89
- package/dist/core/canvas/migrations.js +41 -1150
- package/dist/core/canvas/nav-model.js +1 -231
- package/dist/core/canvas/nav-render.js +1 -260
- package/dist/core/canvas/node-order.js +1 -37
- package/dist/core/canvas/node-recap.js +2 -67
- package/dist/core/canvas/node-sql-migration.js +2 -209
- package/dist/core/canvas/paths.js +1 -153
- package/dist/core/canvas/pid.js +4 -683
- package/dist/core/canvas/recovery.js +3 -565
- package/dist/core/canvas/remote-canvas-source.js +1 -288
- package/dist/core/canvas/remote-transport.js +1 -57
- package/dist/core/canvas/render-source.js +10 -635
- package/dist/core/canvas/sessions.js +1 -78
- package/dist/core/canvas/source.js +1 -47
- package/dist/core/canvas/status-glyph.js +1 -132
- package/dist/core/canvas/telemetry.js +1 -35
- package/dist/core/canvas/types.js +1 -6
- package/dist/core/canvas/waits.js +4 -68
- package/dist/core/canvas/worktrees.js +1 -93
- package/dist/core/clipboard-text.js +1 -57
- package/dist/core/command-hooks/artifact.js +1 -145
- package/dist/core/command-hooks/catalog.js +1 -38
- package/dist/core/command-hooks/compose.js +1 -99
- package/dist/core/command-hooks/discovery.js +1 -228
- package/dist/core/command-hooks/help.js +1 -18
- package/dist/core/command-hooks/index.js +1 -7
- package/dist/core/command-hooks/lifecycle-catalog.js +1 -9
- package/dist/core/command-hooks/lifecycle-create.js +1 -51
- package/dist/core/command-hooks/report.js +1 -28
- package/dist/core/command-hooks/schema.js +1 -157
- package/dist/core/command-hooks/transport/exec-invoke.js +1 -276
- package/dist/core/command-hooks/transport/exec-lifecycle.js +1 -211
- package/dist/core/command-manifests/manifest.js +1 -324
- package/dist/core/command-manifests/registry.js +1 -118
- package/dist/core/command-manifests/schema.js +1 -736
- package/dist/core/command-plugins/bundle.js +1 -261
- package/dist/core/command-plugins/compose.js +1 -65
- package/dist/core/command-plugins/discovery.js +1 -245
- package/dist/core/command-plugins/endpoint.js +1 -48
- package/dist/core/command-plugins/extensions.js +1 -166
- package/dist/core/command-plugins/help-addenda.js +1 -44
- package/dist/core/command-plugins/presence.js +1 -17
- package/dist/core/command-plugins/revalidate.js +2 -152
- package/dist/core/command-plugins/transport/exec-invoke.js +1 -215
- package/dist/core/command-plugins/transport/http-fetch.js +1 -68
- package/dist/core/command-plugins/transport/http-invoke.js +3 -546
- package/dist/core/command.js +10 -739
- package/dist/core/config.js +1 -1059
- package/dist/core/document-lines.js +3 -6
- package/dist/core/env-name.js +1 -9
- package/dist/core/errors.js +1 -52
- package/dist/core/events/emit.js +1 -17
- package/dist/core/events/envelope.js +1 -84
- package/dist/core/events/errors.js +1 -69
- package/dist/core/events/index.js +1 -4
- package/dist/core/events/operation-id.js +1 -24
- package/dist/core/events/read.js +1 -623
- package/dist/core/events/serialize.js +1 -199
- package/dist/core/events/source.js +1 -31
- package/dist/core/events/types.js +1 -11
- package/dist/core/exclusive-lock.js +1 -197
- package/dist/core/fault-classifier.js +1 -96
- package/dist/core/feed/feed.js +7 -202
- package/dist/core/feed/inbox-migrate.js +3 -135
- package/dist/core/feed/inbox.js +10 -122
- package/dist/core/feed/messages.js +6 -212
- package/dist/core/frontmatter.js +1 -35
- package/dist/core/fs-utils.js +3 -202
- package/dist/core/git.js +2 -103
- package/dist/core/help.js +9 -310
- package/dist/core/host-exports/builtins.js +9 -68
- package/dist/core/host-exports/export.js +3 -124
- package/dist/core/human/action-binding.js +1 -40
- package/dist/core/human/answer-text.js +5 -100
- package/dist/core/human/answer.js +1 -119
- package/dist/core/human/claim.js +3 -67
- package/dist/core/human/completion.js +1 -27
- package/dist/core/human/component-docs.js +78 -272
- package/dist/core/human/convention.js +2 -82
- package/dist/core/human/feedback-companion.js +1 -106
- package/dist/core/human/feedback.js +1 -88
- package/dist/core/human/page-authoring.js +1 -19
- package/dist/core/human/page-catalog.js +1 -172
- package/dist/core/human/page-errors.js +1 -7
- package/dist/core/human/page-eval.js +1 -125
- package/dist/core/human/page-html-markdown.js +8 -260
- package/dist/core/human/page-markdown.js +17 -295
- package/dist/core/human/page-schema.js +1 -373
- package/dist/core/human/page-synth.js +8 -27
- package/dist/core/human/page.js +1 -198
- package/dist/core/human/requests.js +15 -466
- package/dist/core/human/review-schema.js +1 -34
- package/dist/core/human/root.js +1 -11
- package/dist/core/human/scan.js +1 -69
- package/dist/core/human/summary.js +1 -5
- package/dist/core/human/tickets.js +1 -171
- package/dist/core/human/types.js +0 -1
- package/dist/core/human/visible-paths.js +1 -77
- package/dist/core/human-actions.js +1 -101
- package/dist/core/inspector/chrome.js +1 -14
- package/dist/core/inspector/contract.js +0 -1
- package/dist/core/inspector/core.js +2 -295
- package/dist/core/inspector/host.js +4 -538
- package/dist/core/inspector/model.js +2 -226
- package/dist/core/inspector/text.js +6 -45
- package/dist/core/inspector/transport.js +1 -36
- package/dist/core/inspector/tui.js +2 -295
- package/dist/core/installed-plugins.js +1 -78
- package/dist/core/io.js +7 -356
- package/dist/core/keybindings/attach-control.js +1 -42
- package/dist/core/keybindings/background-bash.js +1 -33
- package/dist/core/keybindings/catalog.js +1 -256
- package/dist/core/keybindings/inbox.js +1 -25
- package/dist/core/keybindings/index.js +1 -7
- package/dist/core/keybindings/match.js +1 -127
- package/dist/core/keybindings/persistence.js +1 -49
- package/dist/core/keybindings/resolve.js +1 -348
- package/dist/core/keybindings/types.js +0 -1
- package/dist/core/locked-file.js +1 -118
- package/dist/core/log.js +3 -27
- package/dist/core/manifest-recovery.js +1 -72
- package/dist/core/manifest-stale.js +1 -39
- package/dist/core/manifest.js +1 -20
- package/dist/core/memory/doc-link-grammar.js +2 -109
- package/dist/core/memory/extensions.js +1 -221
- package/dist/core/memory/history.js +6 -268
- package/dist/core/memory/identity.js +1 -181
- package/dist/core/memory/inline-ref-grammar.js +1 -98
- package/dist/core/memory/inline-ref-guidance.js +2 -35
- package/dist/core/memory/inline-ref-inventory.js +1 -59
- package/dist/core/memory/lint.js +2 -671
- package/dist/core/memory/project-namespace.js +2 -85
- package/dist/core/memory/repository-association.js +1 -129
- package/dist/core/memory/tree.js +1 -93
- package/dist/core/memory-resolver.js +2 -611
- package/dist/core/model-config.js +1 -107
- package/dist/core/model-routes.js +1 -201
- package/dist/core/nested-stores.js +2 -166
- package/dist/core/output.js +7 -99
- package/dist/core/pagination.js +1 -88
- package/dist/core/plugin-swap-lock.js +1 -31
- package/dist/core/pool-credential-store.js +1 -116
- package/dist/core/predicate.js +1 -191
- package/dist/core/preview-registry.js +2 -411
- package/dist/core/preview-result-path.js +1 -26
- package/dist/core/profiles/default-binding.js +1 -24
- package/dist/core/profiles/deletion-reservation.js +1 -42
- package/dist/core/profiles/env-store.js +2 -162
- package/dist/core/profiles/fuzzy-match.js +1 -92
- package/dist/core/profiles/manifest.js +1 -574
- package/dist/core/profiles/select.js +35 -741
- package/dist/core/profiles/state-block.js +3 -17
- package/dist/core/provider-error-recognition.js +1 -74
- package/dist/core/provider-failure.js +1 -86
- package/dist/core/provider-management.js +1 -22
- package/dist/core/remote-canvas-target.js +1 -30
- package/dist/core/render.js +18 -138
- package/dist/core/resolver.js +1 -111
- package/dist/core/review/birth.js +1 -52
- package/dist/core/review/comments.js +5 -279
- package/dist/core/review/companion.js +1 -215
- package/dist/core/review/document.js +2 -138
- package/dist/core/review/project.js +1 -36
- package/dist/core/review/realize.js +1 -71
- package/dist/core/review/remap.js +4 -141
- package/dist/core/review/signal.js +1 -12
- package/dist/core/review/stage.js +1 -184
- package/dist/core/review/store.js +1 -168
- package/dist/core/review/types.js +1 -23
- package/dist/core/runtime/advertised-command-invocation.js +1 -233
- package/dist/core/runtime/auth-reload.js +1 -67
- package/dist/core/runtime/banner.js +1 -51
- package/dist/core/runtime/bearings-render.js +18 -250
- package/dist/core/runtime/bearings.js +7 -194
- package/dist/core/runtime/bin-contributions.js +2 -186
- package/dist/core/runtime/boot-root.js +1 -107
- package/dist/core/runtime/branded-host.js +2 -264
- package/dist/core/runtime/broker/auth-reload.js +1 -157
- package/dist/core/runtime/broker/client-registry.js +1 -179
- package/dist/core/runtime/broker/daemon-ops.js +1 -88
- package/dist/core/runtime/broker/engine-drive.js +1 -354
- package/dist/core/runtime/broker/engine-routing.js +1 -211
- package/dist/core/runtime/broker/event-projection.js +1 -193
- package/dist/core/runtime/broker/extension-abort.js +1 -36
- package/dist/core/runtime/broker/fault-retry.js +1 -588
- package/dist/core/runtime/broker/frame-client.js +1 -132
- package/dist/core/runtime/broker/frame-dispatch.js +1 -183
- package/dist/core/runtime/broker/frame-engine-control.js +1 -231
- package/dist/core/runtime/broker/frame-memory-refs.js +1 -41
- package/dist/core/runtime/broker/frame-model-query.js +1 -69
- package/dist/core/runtime/broker/frame-read.js +1 -116
- package/dist/core/runtime/broker/frame-replies.js +1 -64
- package/dist/core/runtime/broker/frame-session.js +4 -203
- package/dist/core/runtime/broker/held-deferred-inbox.js +1 -13
- package/dist/core/runtime/broker/inbox.js +13 -163
- package/dist/core/runtime/broker/node-named.js +1 -27
- package/dist/core/runtime/broker/read-ops.js +1 -171
- package/dist/core/runtime/broker/rebind.js +1 -318
- package/dist/core/runtime/broker/tool-groups.js +1 -246
- package/dist/core/runtime/broker/turn-admission.js +1 -31
- package/dist/core/runtime/broker/turn-ignition.js +1 -84
- package/dist/core/runtime/broker-cli.js +3 -81
- package/dist/core/runtime/broker-extension-render.js +5 -135
- package/dist/core/runtime/broker-inventory.js +1 -116
- package/dist/core/runtime/broker-persona-guidance.js +4 -154
- package/dist/core/runtime/broker-protocol.js +3 -152
- package/dist/core/runtime/broker-request.js +1 -85
- package/dist/core/runtime/broker-sdk.js +1 -129
- package/dist/core/runtime/broker.js +1 -1214
- package/dist/core/runtime/canvas-extensions.js +1 -96
- package/dist/core/runtime/chat-inventory-rows.js +1 -105
- package/dist/core/runtime/close.js +1 -265
- package/dist/core/runtime/command-expansion.js +9 -104
- package/dist/core/runtime/command-surface.js +1 -117
- package/dist/core/runtime/connectivity.js +1 -73
- package/dist/core/runtime/deliver-live.js +1 -88
- package/dist/core/runtime/fault-recovery.js +1 -83
- package/dist/core/runtime/fault.js +1 -17
- package/dist/core/runtime/fleet.js +1 -58
- package/dist/core/runtime/front-door-env.js +1 -16
- package/dist/core/runtime/front-door.js +7 -183
- package/dist/core/runtime/headless-pi.js +1 -161
- package/dist/core/runtime/host.js +1 -457
- package/dist/core/runtime/interactive-deliver.js +1 -51
- package/dist/core/runtime/invocation.js +0 -10
- package/dist/core/runtime/kickoff.js +30 -327
- package/dist/core/runtime/launch-config-worker.js +1 -12
- package/dist/core/runtime/launch-prompt.js +4 -13
- package/dist/core/runtime/launch-target.js +1 -55
- package/dist/core/runtime/launch.js +1 -483
- package/dist/core/runtime/lifecycle.js +2 -213
- package/dist/core/runtime/managed-provider-cooling.js +1 -62
- package/dist/core/runtime/memory.js +1 -17
- package/dist/core/runtime/model-registry.js +1 -13
- package/dist/core/runtime/model-selection.js +1 -135
- package/dist/core/runtime/model-swap.js +1 -86
- package/dist/core/runtime/naming.js +14 -298
- package/dist/core/runtime/nerd-font.js +2 -127
- package/dist/core/runtime/node-read.js +2 -386
- package/dist/core/runtime/nodes.js +1 -331
- package/dist/core/runtime/outcome-document.js +1 -97
- package/dist/core/runtime/package-health.js +4 -99
- package/dist/core/runtime/persona.js +2 -55
- package/dist/core/runtime/pi-cli.js +1 -65
- package/dist/core/runtime/pi-vendored.js +1 -66
- package/dist/core/runtime/placement-tmux.js +1 -81
- package/dist/core/runtime/placement.js +1 -386
- package/dist/core/runtime/promote.js +1 -174
- package/dist/core/runtime/prospective-inventory-cli.js +3 -61
- package/dist/core/runtime/prospective-inventory.js +2 -88
- package/dist/core/runtime/recap.js +27 -103
- package/dist/core/runtime/recycle.js +1 -190
- package/dist/core/runtime/reopen.js +1 -138
- package/dist/core/runtime/reset.js +1 -245
- package/dist/core/runtime/resume-root.js +10 -290
- package/dist/core/runtime/revive-all.js +1 -107
- package/dist/core/runtime/revive.js +4 -544
- package/dist/core/runtime/roadmap.js +4 -38
- package/dist/core/runtime/session-branch.js +1 -46
- package/dist/core/runtime/session-cycles.js +1 -110
- package/dist/core/runtime/session-list-cache.js +1 -406
- package/dist/core/runtime/session-visibility.js +1 -99
- package/dist/core/runtime/shell-expansion.js +9 -100
- package/dist/core/runtime/situational-context.js +2 -67
- package/dist/core/runtime/situational-live.js +1 -41
- package/dist/core/runtime/spawn-env.js +1 -255
- package/dist/core/runtime/spawn.js +3 -577
- package/dist/core/runtime/stamp/channel.js +1 -76
- package/dist/core/runtime/stamp/protocol.js +1 -113
- package/dist/core/runtime/stop-guard.js +7 -116
- package/dist/core/runtime/stop-signals.js +1 -46
- package/dist/core/runtime/stream-watchdog.js +1 -134
- package/dist/core/runtime/structured-output.js +4 -156
- package/dist/core/runtime/surface-bg.js +1 -85
- package/dist/core/runtime/tmux-bindings.js +4 -730
- package/dist/core/runtime/tmux-chrome.js +1 -5
- package/dist/core/runtime/tmux-driver.js +7 -637
- package/dist/core/runtime/tool-group-summary.js +6 -85
- package/dist/core/runtime/turn-visibility.js +1 -31
- package/dist/core/runtime/view-socket.js +1 -83
- package/dist/core/runtime/warm-pool.js +1 -395
- package/dist/core/scope.js +1 -254
- package/dist/core/scoped-state/db.js +1 -135
- package/dist/core/scoped-state/migrate.js +3 -181
- package/dist/core/scoped-state/paths.js +1 -27
- package/dist/core/scoped-state/profiles.js +1 -62
- package/dist/core/scoped-state/providers.js +1 -8
- package/dist/core/scoped-state/schema.js +3 -16
- package/dist/core/scoped-state/settings.js +1 -82
- package/dist/core/secrets.js +2 -55
- package/dist/core/self-update.js +1 -71
- package/dist/core/session-model/session-state.js +1 -180
- package/dist/core/shell-segments.js +4 -169
- package/dist/core/spawn.js +1 -26
- package/dist/core/stdout-errors.js +1 -14
- package/dist/core/subscription-state.js +3 -193
- package/dist/core/substrate/frontmatter-validation.js +1 -105
- package/dist/core/substrate/gate-explain.js +1 -424
- package/dist/core/substrate/gate.js +1 -26
- package/dist/core/substrate/index.js +1 -30
- package/dist/core/substrate/injected-store.js +1 -249
- package/dist/core/substrate/listings.js +1 -115
- package/dist/core/substrate/on-read-node.js +1 -36
- package/dist/core/substrate/on-read.js +9 -315
- package/dist/core/substrate/plan.js +1 -266
- package/dist/core/substrate/render-node.js +1 -30
- package/dist/core/substrate/render.js +65 -689
- package/dist/core/substrate/schema.js +1 -186
- package/dist/core/substrate/session-cache.js +1 -83
- package/dist/core/substrate/subject-fields.js +1 -35
- package/dist/core/substrate/subject.js +1 -47
- package/dist/core/substrate/surface-match.js +1 -242
- package/dist/core/termrender/code-doc.js +5 -92
- package/dist/core/termrender/display.js +2 -56
- package/dist/core/termrender/termrender.js +14 -719
- package/dist/core/termrender/version.js +1 -1
- package/dist/core/timing.js +2 -94
- package/dist/core/tui/draw.js +2 -378
- package/dist/core/tui/fuzzy.js +1 -38
- package/dist/core/tui/markdown.js +3 -407
- package/dist/core/tui/page-host.js +1 -74
- package/dist/core/tui/panel.js +1 -137
- package/dist/core/tui/terminal.js +2 -100
- package/dist/core/user-settings.js +1 -454
- package/dist/core/wake.js +1 -296
- package/dist/core/worktree-close.js +6 -228
- package/dist/core/worktree-containment.js +3 -48
- package/dist/core/worktree-landing.js +4 -56
- package/dist/core/worktree-mutation-async.js +10 -280
- package/dist/core/worktree-quarantine.js +1 -54
- package/dist/core/worktree-sweep.js +6 -453
- package/dist/core/worktree.js +18 -899
- package/dist/daemon/api/bridge.js +8 -418
- package/dist/daemon/api/handlers/attach.js +1 -65
- package/dist/daemon/api/handlers/bash-jobs.js +2 -91
- package/dist/daemon/api/handlers/broker-ops.js +1 -447
- package/dist/daemon/api/handlers/broker-recovery.js +1 -251
- package/dist/daemon/api/handlers/canvas.js +6 -490
- package/dist/daemon/api/handlers/chat-inventory.js +1 -25
- package/dist/daemon/api/handlers/crons.js +1 -373
- package/dist/daemon/api/handlers/daemon.js +1 -76
- package/dist/daemon/api/handlers/feedback-comments.js +3 -199
- package/dist/daemon/api/handlers/files.js +1 -63
- package/dist/daemon/api/handlers/focus.js +1 -92
- package/dist/daemon/api/handlers/health.js +1 -76
- package/dist/daemon/api/handlers/human-requests.js +1 -379
- package/dist/daemon/api/handlers/human.js +1 -3
- package/dist/daemon/api/handlers/inbox-page.js +1 -89
- package/dist/daemon/api/handlers/inbox.js +1 -301
- package/dist/daemon/api/handlers/memory.js +1 -50
- package/dist/daemon/api/handlers/messages.js +2 -506
- package/dist/daemon/api/handlers/model-config.js +1 -44
- package/dist/daemon/api/handlers/modelauth.js +1 -165
- package/dist/daemon/api/handlers/node-outcomes.js +1 -181
- package/dist/daemon/api/handlers/nodes.js +1 -939
- package/dist/daemon/api/handlers/profiles.js +1 -140
- package/dist/daemon/api/handlers/prospective-chat-inventory.js +1 -59
- package/dist/daemon/api/handlers/reports.js +16 -332
- package/dist/daemon/api/handlers/review-comments.js +1 -465
- package/dist/daemon/api/handlers/reviews.js +1 -200
- package/dist/daemon/api/handlers/subscriptions.js +1 -53
- package/dist/daemon/api/handlers/validate.js +1 -58
- package/dist/daemon/api/handlers/worktree.js +1 -39
- package/dist/daemon/api/map.js +2 -735
- package/dist/daemon/api/router.js +1 -190
- package/dist/daemon/api/server.js +11 -408
- package/dist/daemon/boot-migrations.js +1 -31
- package/dist/daemon/companion-retire.js +1 -34
- package/dist/daemon/control.js +1 -22
- package/dist/daemon/cron/armed-context.js +1 -100
- package/dist/daemon/cron/capture.js +2 -45
- package/dist/daemon/cron/disposition.js +1 -55
- package/dist/daemon/cron/escalation.js +3 -124
- package/dist/daemon/cron/held.js +1 -20
- package/dist/daemon/cron/lease-recovery.js +1 -119
- package/dist/daemon/cron/live-runs.js +1 -23
- package/dist/daemon/cron/passes.js +1 -58
- package/dist/daemon/cron/settle.js +1 -61
- package/dist/daemon/cron/sinks.js +2 -59
- package/dist/daemon/cron-run.js +1 -405
- package/dist/daemon/crtrd-cli.js +1 -23
- package/dist/daemon/crtrd.js +8 -854
- package/dist/daemon/delivery/run-delivery.js +1 -164
- package/dist/daemon/fleet.js +17 -475
- package/dist/daemon/human/finish.js +10 -179
- package/dist/daemon/human/settle.js +1 -89
- package/dist/daemon/human/sweep.js +1 -66
- package/dist/daemon/manage.js +2 -595
- package/dist/daemon/messaging/node-message.js +1 -99
- package/dist/daemon/park-activity.js +1 -30
- package/dist/daemon/park-pending.js +1 -52
- package/dist/daemon/pidfile.js +1 -37
- package/dist/daemon/profile-delete.js +1 -306
- package/dist/daemon/reconcilers/bash-deadline.js +1 -80
- package/dist/daemon/reconcilers/broker-supervision.js +4 -761
- package/dist/daemon/reconcilers/controller-death.js +1 -14
- package/dist/daemon/reconcilers/cron-lane.js +1 -29
- package/dist/daemon/reconcilers/delivery-lane.js +1 -130
- package/dist/daemon/reconcilers/live-obligation.js +1 -87
- package/dist/daemon/reconcilers/managed-worktree-sweep.js +1 -202
- package/dist/daemon/reconcilers/node-deadline.js +1 -82
- package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.js +1 -172
- package/dist/daemon/reconcilers/node-lifecycle/respawn-policy.js +1 -59
- package/dist/daemon/reconcilers/node-lifecycle/terminating.js +1 -12
- package/dist/daemon/reconcilers/node-lifecycle/tick.js +1 -146
- package/dist/daemon/reconcilers/node-lifecycle/wants-execution.js +1 -11
- package/dist/daemon/reconcilers/pending-review-submit.js +1 -36
- package/dist/daemon/reconcilers/storage-maintenance.js +1 -207
- package/dist/daemon/review/comment-notify.js +2 -109
- package/dist/daemon/review/companion.js +1 -29
- package/dist/daemon/review/deliver.js +3 -8
- package/dist/daemon/review/finish.js +1 -122
- package/dist/daemon/review/sweep.js +1 -18
- package/dist/daemon/startup-policy.js +1 -1
- package/dist/daemon/supervise-cadence.js +1 -6
- package/dist/hook-authoring.js +5 -447
- package/dist/hook-process.js +1 -34
- package/dist/index.js +1 -52
- package/dist/migrations/001-surfaces-frontmatter.js +1 -161
- package/dist/migrations/002-profile-project-memory.js +1 -72
- package/dist/migrations/003-repository-root-memory-identity/front-door.js +11 -231
- package/dist/migrations/003-repository-root-memory-identity/index.js +5 -513
- package/dist/migrations/003-repository-root-memory-identity/references.js +5 -469
- package/dist/migrations/003-repository-root-memory-identity/repository-facts.js +3 -349
- package/dist/migrations/activation.js +2 -89
- package/dist/migrations/convergent.js +2 -82
- package/dist/migrations/corpus.js +3 -483
- package/dist/migrations/frontmatter-splice.js +8 -176
- package/dist/migrations/profile-manifests.js +2 -70
- package/dist/migrations/registry.js +1 -42
- package/dist/migrations/runner.js +1 -85
- package/dist/migrations/types.js +0 -24
- package/dist/pi-extensions/broker-local.js +2 -106
- package/dist/pi-extensions/canvas-bash-valve.js +7 -461
- package/dist/pi-extensions/canvas-context-intro.js +2 -113
- package/dist/pi-extensions/canvas-doc-substrate.js +9 -178
- package/dist/pi-extensions/canvas-goal-capture.js +1 -83
- package/dist/pi-extensions/canvas-inbox-watcher.js +1 -1010
- package/dist/pi-extensions/canvas-passive-context.js +14 -203
- package/dist/pi-extensions/canvas-preview-result.js +2 -72
- package/dist/pi-extensions/canvas-prompt-scrub.js +2 -54
- package/dist/pi-extensions/canvas-recap.js +11 -405
- package/dist/pi-extensions/canvas-review-boundary.js +3 -63
- package/dist/pi-extensions/canvas-stamp.js +2 -77
- package/dist/pi-extensions/canvas-stophook.js +1 -643
- package/dist/pi-extensions/canvas-structured-output.js +13 -35
- package/dist/pi-extensions/canvas-tool-guide.js +9 -78
- package/dist/pi-extensions/envelope-merge.js +8 -29
- package/dist/prompts/review.js +20 -42
- package/dist/shared/birth-announcement.js +1 -25
- package/dist/shared/crtr-version.js +1 -18
- package/dist/shared/env.js +1 -214
- package/dist/shared/generated-context.js +11 -226
- package/dist/shared/predicates.js +1 -4
- package/dist/shared/shell-quote.js +1 -5
- package/dist/shared/tool-groups.js +1 -64
- package/dist/shared/working-activity.js +1 -27
- package/dist/suppress-experimental-warnings.js +1 -15
- package/dist/types.js +1 -185
- package/docs/public-api.md +10 -9
- package/package.json +6 -4
- package/runtime.lock.json +5 -5
- package/scripts/pack-minify.mjs +108 -0
- package/dist/api/__tests__/integration/client.test.d.ts +0 -1
- package/dist/api/__tests__/integration/client.test.js +0 -163
- package/dist/builtin-pi-packages/pi-crtr-extensions/__tests__/insights-active-init.test.ts +0 -98
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-commands.test.ts +0 -93
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/integration/provider-rotation.test.ts +0 -2530
- package/dist/clients/__tests__/helpers/human-daemon.d.ts +0 -11
- package/dist/clients/__tests__/helpers/human-daemon.js +0 -60
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.js +0 -97
- package/dist/clients/attach/__tests__/bash-call-width.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/bash-call-width.test.js +0 -38
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +0 -175
- package/dist/clients/attach/__tests__/completion-frecency.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/completion-frecency.test.js +0 -35
- package/dist/clients/attach/__tests__/context-message.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/context-message.test.js +0 -130
- package/dist/clients/attach/__tests__/crtr-output.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/crtr-output.test.js +0 -68
- package/dist/clients/attach/__tests__/diagram.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/diagram.test.js +0 -42
- package/dist/clients/attach/__tests__/edit-diff.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/edit-diff.test.js +0 -31
- package/dist/clients/attach/__tests__/frame-selection.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/frame-selection.test.js +0 -84
- package/dist/clients/attach/__tests__/group-activity.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/group-activity.test.js +0 -165
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.js +0 -83
- package/dist/clients/attach/__tests__/pane-tag-successor.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/pane-tag-successor.test.js +0 -56
- package/dist/clients/attach/__tests__/profile-files.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/profile-files.test.js +0 -21
- package/dist/clients/attach/__tests__/prompt-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/prompt-preview.test.js +0 -21
- package/dist/clients/attach/__tests__/ref-autocomplete.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/ref-autocomplete.test.js +0 -64
- package/dist/clients/attach/__tests__/titled-editor-paste.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-paste.test.js +0 -114
- package/dist/clients/attach/__tests__/titled-editor-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-preview.test.js +0 -83
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.js +0 -81
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.js +0 -135
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.js +0 -66
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +0 -35
- package/dist/clients/inbox/review/__tests__/review-core.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/review-core.test.js +0 -52
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.js +0 -100
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.d.ts +0 -1
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.js +0 -69
- package/dist/commands/__tests__/human.test.d.ts +0 -1
- package/dist/commands/__tests__/human.test.js +0 -172
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.js +0 -237
- package/dist/commands/__tests__/integration/migrate.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/migrate.test.js +0 -1330
- package/dist/commands/__tests__/node-message.test.d.ts +0 -1
- package/dist/commands/__tests__/node-message.test.js +0 -112
- package/dist/commands/__tests__/node-new.test.d.ts +0 -1
- package/dist/commands/__tests__/node-new.test.js +0 -58
- package/dist/commands/__tests__/revive-now-gate.test.d.ts +0 -1
- package/dist/commands/__tests__/revive-now-gate.test.js +0 -62
- package/dist/commands/__tests__/seam/daemon-status.test.d.ts +0 -1
- package/dist/commands/__tests__/seam/daemon-status.test.js +0 -29
- package/dist/commands/__tests__/surface-reload-target.test.d.ts +0 -1
- package/dist/commands/__tests__/surface-reload-target.test.js +0 -21
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.js +0 -379
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.js +0 -124
- package/dist/commands/memory/__tests__/repository-root-lint.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/repository-root-lint.test.js +0 -148
- package/dist/commands/sys/__tests__/config-model-ladders.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/config-model-ladders.test.js +0 -114
- package/dist/commands/sys/__tests__/setup-core.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/setup-core.test.js +0 -45
- package/dist/commands/sys/__tests__/sync-project-guidance.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/sync-project-guidance.test.js +0 -244
- package/dist/core/__tests__/bash-guard.test.d.ts +0 -1
- package/dist/core/__tests__/bash-guard.test.js +0 -190
- package/dist/core/__tests__/boot-fault-attempt.test.d.ts +0 -1
- package/dist/core/__tests__/boot-fault-attempt.test.js +0 -105
- package/dist/core/__tests__/boot.test.d.ts +0 -1
- package/dist/core/__tests__/boot.test.js +0 -274
- package/dist/core/__tests__/branded-host-concurrency.test.d.ts +0 -1
- package/dist/core/__tests__/branded-host-concurrency.test.js +0 -72
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +0 -75
- package/dist/core/__tests__/broker-launch-candidates.test.d.ts +0 -1
- package/dist/core/__tests__/broker-launch-candidates.test.js +0 -311
- package/dist/core/__tests__/broker-preflight.test.d.ts +0 -1
- package/dist/core/__tests__/broker-preflight.test.js +0 -95
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.d.ts +0 -1
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.js +0 -82
- package/dist/core/__tests__/broker-turn-admission.test.d.ts +0 -1
- package/dist/core/__tests__/broker-turn-admission.test.js +0 -44
- package/dist/core/__tests__/canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-db-boundary.test.js +0 -46
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +0 -710
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.js +0 -310
- package/dist/core/__tests__/canvas-inbox-watcher.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher.test.js +0 -397
- package/dist/core/__tests__/canvas.test.d.ts +0 -1
- package/dist/core/__tests__/canvas.test.js +0 -138
- package/dist/core/__tests__/child-death-wake.test.d.ts +0 -1
- package/dist/core/__tests__/child-death-wake.test.js +0 -153
- package/dist/core/__tests__/cli-help-contract.test.d.ts +0 -1
- package/dist/core/__tests__/cli-help-contract.test.js +0 -152
- package/dist/core/__tests__/close.test.d.ts +0 -1
- package/dist/core/__tests__/close.test.js +0 -284
- package/dist/core/__tests__/collectible.test.d.ts +0 -1
- package/dist/core/__tests__/collectible.test.js +0 -89
- package/dist/core/__tests__/config-change-delta.test.d.ts +0 -1
- package/dist/core/__tests__/config-change-delta.test.js +0 -108
- package/dist/core/__tests__/context-intro.test.d.ts +0 -1
- package/dist/core/__tests__/context-intro.test.js +0 -123
- package/dist/core/__tests__/cron-armed-context-failure.test.d.ts +0 -1
- package/dist/core/__tests__/cron-armed-context-failure.test.js +0 -150
- package/dist/core/__tests__/cron-held-settlement.test.d.ts +0 -1
- package/dist/core/__tests__/cron-held-settlement.test.js +0 -240
- package/dist/core/__tests__/cron-node-sink-parked-root.test.d.ts +0 -1
- package/dist/core/__tests__/cron-node-sink-parked-root.test.js +0 -166
- package/dist/core/__tests__/cron-self-cancel-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/cron-self-cancel-delivery.test.js +0 -84
- package/dist/core/__tests__/cron-timeout-descendants.test.d.ts +0 -1
- package/dist/core/__tests__/cron-timeout-descendants.test.js +0 -114
- package/dist/core/__tests__/daemon-boot.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-boot.test.js +0 -422
- package/dist/core/__tests__/daemon-wedge.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-wedge.test.js +0 -106
- package/dist/core/__tests__/dead-node-policy-table.test.d.ts +0 -1
- package/dist/core/__tests__/dead-node-policy-table.test.js +0 -77
- package/dist/core/__tests__/events-contract.test.d.ts +0 -1
- package/dist/core/__tests__/events-contract.test.js +0 -76
- package/dist/core/__tests__/extension-abort.test.d.ts +0 -1
- package/dist/core/__tests__/extension-abort.test.js +0 -21
- package/dist/core/__tests__/fault-classifier.test.d.ts +0 -1
- package/dist/core/__tests__/fault-classifier.test.js +0 -138
- package/dist/core/__tests__/fixtures/api-server-host.d.ts +0 -1
- package/dist/core/__tests__/fixtures/api-server-host.js +0 -47
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.js +0 -34
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.js +0 -32
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +0 -347
- package/dist/core/__tests__/fixtures/fake-engine.js +0 -1509
- package/dist/core/__tests__/fixtures/fake-pi-host.d.ts +0 -2
- package/dist/core/__tests__/fixtures/fake-pi-host.js +0 -311
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.d.ts +0 -1
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.js +0 -75
- package/dist/core/__tests__/fixtures/metadata-migration-race.d.ts +0 -1
- package/dist/core/__tests__/fixtures/metadata-migration-race.js +0 -49
- package/dist/core/__tests__/focuses.test.d.ts +0 -1
- package/dist/core/__tests__/focuses.test.js +0 -113
- package/dist/core/__tests__/fs-utils.test.d.ts +0 -1
- package/dist/core/__tests__/fs-utils.test.js +0 -50
- package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -43
- package/dist/core/__tests__/helpers/broker-clients.js +0 -174
- package/dist/core/__tests__/helpers/fleet.d.ts +0 -12
- package/dist/core/__tests__/helpers/fleet.js +0 -50
- package/dist/core/__tests__/helpers/harness.d.ts +0 -124
- package/dist/core/__tests__/helpers/harness.js +0 -806
- package/dist/core/__tests__/helpers/viewer-panes.d.ts +0 -12
- package/dist/core/__tests__/helpers/viewer-panes.js +0 -133
- package/dist/core/__tests__/history-inbox.test.d.ts +0 -1
- package/dist/core/__tests__/history-inbox.test.js +0 -121
- package/dist/core/__tests__/human-action-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/human-action-delivery.test.js +0 -162
- package/dist/core/__tests__/human-actions.test.d.ts +0 -1
- package/dist/core/__tests__/human-actions.test.js +0 -120
- package/dist/core/__tests__/inline-memory-refs.test.d.ts +0 -1
- package/dist/core/__tests__/inline-memory-refs.test.js +0 -225
- package/dist/core/__tests__/integration/broker-fork-seam.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-fork-seam.test.js +0 -193
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.js +0 -750
- package/dist/core/__tests__/integration/broker-snapshot-history.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-snapshot-history.test.js +0 -288
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.js +0 -103
- package/dist/core/__tests__/integration/command-plugins.test.d.ts +0 -1
- package/dist/core/__tests__/integration/command-plugins.test.js +0 -1200
- package/dist/core/__tests__/integration/deferred-no-wake.test.d.ts +0 -1
- package/dist/core/__tests__/integration/deferred-no-wake.test.js +0 -610
- package/dist/core/__tests__/integration/flagship-lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/flagship-lifecycle.test.js +0 -264
- package/dist/core/__tests__/integration/fresh-home-commands.test.d.ts +0 -1
- package/dist/core/__tests__/integration/fresh-home-commands.test.js +0 -49
- package/dist/core/__tests__/integration/git-optional-locks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/git-optional-locks.test.js +0 -81
- package/dist/core/__tests__/integration/host-teardown-process-group.test.d.ts +0 -1
- package/dist/core/__tests__/integration/host-teardown-process-group.test.js +0 -480
- package/dist/core/__tests__/integration/lifecycle-hooks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/lifecycle-hooks.test.js +0 -498
- package/dist/core/__tests__/integration/live-mutation-verbs.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation-verbs.test.js +0 -180
- package/dist/core/__tests__/integration/live-mutation.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation.test.js +0 -173
- package/dist/core/__tests__/integration/plugin-revalidate.test.d.ts +0 -1
- package/dist/core/__tests__/integration/plugin-revalidate.test.js +0 -359
- package/dist/core/__tests__/integration/profile-pause.test.d.ts +0 -1
- package/dist/core/__tests__/integration/profile-pause.test.js +0 -115
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.js +0 -151
- package/dist/core/__tests__/integration/revive.test.d.ts +0 -1
- package/dist/core/__tests__/integration/revive.test.js +0 -615
- package/dist/core/__tests__/integration/spawn-root.test.d.ts +0 -1
- package/dist/core/__tests__/integration/spawn-root.test.js +0 -536
- package/dist/core/__tests__/integration/subscription-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/integration/subscription-delivery.test.js +0 -132
- package/dist/core/__tests__/integration/tmux-surface.test.d.ts +0 -1
- package/dist/core/__tests__/integration/tmux-surface.test.js +0 -330
- package/dist/core/__tests__/integration/worktree-land.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-land.test.js +0 -607
- package/dist/core/__tests__/integration/worktree-reap.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-reap.test.js +0 -842
- package/dist/core/__tests__/kickoff.test.d.ts +0 -1
- package/dist/core/__tests__/kickoff.test.js +0 -196
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.js +0 -62
- package/dist/core/__tests__/lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle.test.js +0 -176
- package/dist/core/__tests__/live-lifecycle-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/live-lifecycle-prompt.test.js +0 -63
- package/dist/core/__tests__/memory-resolver-precedence.test.d.ts +0 -1
- package/dist/core/__tests__/memory-resolver-precedence.test.js +0 -228
- package/dist/core/__tests__/migration.test.d.ts +0 -1
- package/dist/core/__tests__/migration.test.js +0 -946
- package/dist/core/__tests__/model-pin-durability.test.d.ts +0 -1
- package/dist/core/__tests__/model-pin-durability.test.js +0 -195
- package/dist/core/__tests__/model-routes-config.test.d.ts +0 -1
- package/dist/core/__tests__/model-routes-config.test.js +0 -150
- package/dist/core/__tests__/nested-store-discovery.test.d.ts +0 -1
- package/dist/core/__tests__/nested-store-discovery.test.js +0 -89
- package/dist/core/__tests__/node-outcome.test.d.ts +0 -1
- package/dist/core/__tests__/node-outcome.test.js +0 -246
- package/dist/core/__tests__/on-read-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-crouter-home-fence.test.js +0 -66
- package/dist/core/__tests__/on-read-dedup-resume.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-dedup-resume.test.js +0 -132
- package/dist/core/__tests__/on-read-nested-store.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-nested-store.test.js +0 -135
- package/dist/core/__tests__/parse-argv-stdin-secret.test.d.ts +0 -1
- package/dist/core/__tests__/parse-argv-stdin-secret.test.js +0 -68
- package/dist/core/__tests__/passive-subscription.test.d.ts +0 -1
- package/dist/core/__tests__/passive-subscription.test.js +0 -120
- package/dist/core/__tests__/pid-identity-match.test.d.ts +0 -1
- package/dist/core/__tests__/pid-identity-match.test.js +0 -145
- package/dist/core/__tests__/pid-zombie.test.d.ts +0 -1
- package/dist/core/__tests__/pid-zombie.test.js +0 -42
- package/dist/core/__tests__/plugin-kinds.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-kinds.test.js +0 -182
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.js +0 -43
- package/dist/core/__tests__/plugin-page-components.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-page-components.test.js +0 -159
- package/dist/core/__tests__/preview-mirror-cap.test.d.ts +0 -1
- package/dist/core/__tests__/preview-mirror-cap.test.js +0 -53
- package/dist/core/__tests__/preview-registry-sync.test.d.ts +0 -1
- package/dist/core/__tests__/preview-registry-sync.test.js +0 -107
- package/dist/core/__tests__/profile-project-memory-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/profile-project-memory-delivery.test.js +0 -644
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.d.ts +0 -1
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.js +0 -91
- package/dist/core/__tests__/prune.test.d.ts +0 -1
- package/dist/core/__tests__/prune.test.js +0 -243
- package/dist/core/__tests__/push-final-guard.test.d.ts +0 -1
- package/dist/core/__tests__/push-final-guard.test.js +0 -191
- package/dist/core/__tests__/relaunch-root.test.d.ts +0 -1
- package/dist/core/__tests__/relaunch-root.test.js +0 -249
- package/dist/core/__tests__/remote-canvas-target.test.d.ts +0 -1
- package/dist/core/__tests__/remote-canvas-target.test.js +0 -93
- package/dist/core/__tests__/repository-association.test.d.ts +0 -1
- package/dist/core/__tests__/repository-association.test.js +0 -153
- package/dist/core/__tests__/repository-root-identity.test.d.ts +0 -1
- package/dist/core/__tests__/repository-root-identity.test.js +0 -223
- package/dist/core/__tests__/respawn-throttle.test.d.ts +0 -1
- package/dist/core/__tests__/respawn-throttle.test.js +0 -20
- package/dist/core/__tests__/review-model-floor.test.d.ts +0 -1
- package/dist/core/__tests__/review-model-floor.test.js +0 -83
- package/dist/core/__tests__/revive-all.test.d.ts +0 -1
- package/dist/core/__tests__/revive-all.test.js +0 -157
- package/dist/core/__tests__/revive-capacity.test.d.ts +0 -1
- package/dist/core/__tests__/revive-capacity.test.js +0 -184
- package/dist/core/__tests__/revive-parked-fresh.test.d.ts +0 -1
- package/dist/core/__tests__/revive-parked-fresh.test.js +0 -176
- package/dist/core/__tests__/scope-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/scope-crouter-home-fence.test.js +0 -55
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +0 -262
- package/dist/core/__tests__/seam/broker-attach-stream.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-stream.test.js +0 -176
- package/dist/core/__tests__/seam/broker-cap-freeze.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-cap-freeze.test.js +0 -155
- package/dist/core/__tests__/seam/broker-crash-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-crash-teardown.test.js +0 -131
- package/dist/core/__tests__/seam/broker-pane-resolution.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-pane-resolution.test.js +0 -204
- package/dist/core/__tests__/seam/broker-provider-retry.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-provider-retry.test.js +0 -686
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.js +0 -82
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.js +0 -50
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.js +0 -138
- package/dist/core/__tests__/seam/dormancy-release.test.d.ts +0 -1
- package/dist/core/__tests__/seam/dormancy-release.test.js +0 -516
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.js +0 -65
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.d.ts +0 -1
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.js +0 -84
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.d.ts +0 -1
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.js +0 -160
- package/dist/core/__tests__/seam/node-outcome-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/node-outcome-delivery.test.js +0 -177
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.d.ts +0 -1
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.js +0 -31
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.d.ts +0 -1
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.js +0 -60
- package/dist/core/__tests__/seam/self-close-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/self-close-teardown.test.js +0 -49
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.d.ts +0 -1
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.js +0 -100
- package/dist/core/__tests__/secrets.test.d.ts +0 -1
- package/dist/core/__tests__/secrets.test.js +0 -49
- package/dist/core/__tests__/self-update.test.d.ts +0 -1
- package/dist/core/__tests__/self-update.test.js +0 -46
- package/dist/core/__tests__/session-branch.test.d.ts +0 -1
- package/dist/core/__tests__/session-branch.test.js +0 -61
- package/dist/core/__tests__/session-cycles.test.d.ts +0 -1
- package/dist/core/__tests__/session-cycles.test.js +0 -133
- package/dist/core/__tests__/session-model.test.d.ts +0 -1
- package/dist/core/__tests__/session-model.test.js +0 -111
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.d.ts +0 -1
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +0 -71
- package/dist/core/__tests__/stdin-body-no-discard.test.d.ts +0 -1
- package/dist/core/__tests__/stdin-body-no-discard.test.js +0 -33
- package/dist/core/__tests__/stdout-errors.test.d.ts +0 -1
- package/dist/core/__tests__/stdout-errors.test.js +0 -16
- package/dist/core/__tests__/stop-guard.test.d.ts +0 -1
- package/dist/core/__tests__/stop-guard.test.js +0 -237
- package/dist/core/__tests__/stream-watchdog.test.d.ts +0 -1
- package/dist/core/__tests__/stream-watchdog.test.js +0 -154
- package/dist/core/__tests__/subscription-pool-credential-guard.test.d.ts +0 -1
- package/dist/core/__tests__/subscription-pool-credential-guard.test.js +0 -95
- package/dist/core/__tests__/tmux-driver-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/tmux-driver-boundary.test.js +0 -50
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.d.ts +0 -1
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.js +0 -54
- package/dist/core/__tests__/worktree-landing.test.d.ts +0 -1
- package/dist/core/__tests__/worktree-landing.test.js +0 -11
- package/dist/core/__tests__/yield-ensures-daemon.test.d.ts +0 -1
- package/dist/core/__tests__/yield-ensures-daemon.test.js +0 -55
- package/dist/core/broker-client/__tests__/transport-relay.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-relay.test.js +0 -214
- package/dist/core/broker-client/__tests__/transport-socket.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-socket.test.js +0 -73
- package/dist/core/canvas/__tests__/attention.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/attention.test.js +0 -83
- package/dist/core/canvas/__tests__/history-transcript.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/history-transcript.test.js +0 -102
- package/dist/core/canvas/__tests__/remote-canvas-source.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-canvas-source.test.js +0 -328
- package/dist/core/canvas/__tests__/remote-transport.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-transport.test.js +0 -97
- package/dist/core/canvas/__tests__/render-remote.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/render-remote.test.js +0 -243
- package/dist/core/canvas/__tests__/session-window.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/session-window.test.js +0 -70
- package/dist/core/feed/__tests__/inbox-migrate.test.d.ts +0 -1
- package/dist/core/feed/__tests__/inbox-migrate.test.js +0 -49
- package/dist/core/human/__tests__/page-catalog.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-catalog.test.js +0 -20
- package/dist/core/human/__tests__/page-html-markdown.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-html-markdown.test.js +0 -48
- package/dist/core/human/__tests__/page.test.d.ts +0 -1
- package/dist/core/human/__tests__/page.test.js +0 -92
- package/dist/core/keybindings/__tests__/resolve.test.d.ts +0 -1
- package/dist/core/keybindings/__tests__/resolve.test.js +0 -171
- package/dist/core/profiles/__tests__/env-store.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/env-store.test.js +0 -99
- package/dist/core/profiles/__tests__/fuzzy-match.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/fuzzy-match.test.js +0 -51
- package/dist/core/profiles/__tests__/root-profile.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/root-profile.test.js +0 -59
- package/dist/core/review/__tests__/capture-origin.test.d.ts +0 -1
- package/dist/core/review/__tests__/capture-origin.test.js +0 -150
- package/dist/core/review/__tests__/comments.test.d.ts +0 -1
- package/dist/core/review/__tests__/comments.test.js +0 -116
- package/dist/core/review/__tests__/remap.test.d.ts +0 -1
- package/dist/core/review/__tests__/remap.test.js +0 -177
- package/dist/core/review/__tests__/stage-identity.test.d.ts +0 -1
- package/dist/core/review/__tests__/stage-identity.test.js +0 -150
- package/dist/core/runtime/__tests__/engine-route.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/engine-route.test.js +0 -36
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.js +0 -45
- package/dist/core/runtime/__tests__/node-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/node-env.test.js +0 -73
- package/dist/core/runtime/__tests__/spawn-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/spawn-env.test.js +0 -259
- package/dist/core/substrate/__tests__/surface-match-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-command.test.js +0 -89
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.js +0 -28
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.js +0 -92
- package/dist/daemon/__tests__/autostart-storm.test.d.ts +0 -1
- package/dist/daemon/__tests__/autostart-storm.test.js +0 -128
- package/dist/daemon/__tests__/broker-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/broker-ownership.test.js +0 -25
- package/dist/daemon/__tests__/daemon-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/daemon-ownership.test.js +0 -27
- package/dist/daemon/__tests__/helpers/source-daemon.d.ts +0 -30
- package/dist/daemon/__tests__/helpers/source-daemon.js +0 -176
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.js +0 -83
- package/dist/daemon/__tests__/integration/migration-startup.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/migration-startup.test.js +0 -127
- package/dist/daemon/__tests__/node-deadline-lane.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-deadline-lane.test.js +0 -77
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.js +0 -146
- package/dist/daemon/__tests__/node-outcome-delivery.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-delivery.test.js +0 -116
- package/dist/daemon/__tests__/reconciler-signature.test.d.ts +0 -1
- package/dist/daemon/__tests__/reconciler-signature.test.js +0 -37
- package/dist/daemon/__tests__/subtree-filter-freshness.test.d.ts +0 -1
- package/dist/daemon/__tests__/subtree-filter-freshness.test.js +0 -63
- package/dist/daemon/__tests__/thaw-order.test.d.ts +0 -1
- package/dist/daemon/__tests__/thaw-order.test.js +0 -55
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.js +0 -58
- package/dist/daemon/api/__tests__/broker-settle-park.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/broker-settle-park.test.js +0 -175
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.js +0 -216
- package/dist/daemon/api/__tests__/error-seam.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/error-seam.test.js +0 -83
- package/dist/daemon/api/__tests__/model-config.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/model-config.test.js +0 -73
- package/dist/daemon/api/__tests__/node-create-description.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-create-description.test.js +0 -127
- package/dist/daemon/api/__tests__/node-model-validation.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-model-validation.test.js +0 -183
- package/dist/daemon/api/__tests__/nodes-activity-query.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/nodes-activity-query.test.js +0 -99
- package/dist/daemon/api/__tests__/profile-launch-gates.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-launch-gates.test.js +0 -172
- package/dist/daemon/api/__tests__/profile-metadata-route.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-metadata-route.test.js +0 -95
- package/dist/daemon/api/__tests__/reopen-delivery.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/reopen-delivery.test.js +0 -260
- package/dist/daemon/api/__tests__/seam/api-server.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/api-server.test.js +0 -442
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.js +0 -310
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.js +0 -351
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.js +0 -159
- package/dist/daemon/api/__tests__/seam/profile-delete.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/profile-delete.test.js +0 -372
- package/dist/daemon/api/__tests__/submit-result.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/submit-result.test.js +0 -215
- package/dist/migrations/__tests__/activation-concurrency.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation-concurrency.test.js +0 -146
- package/dist/migrations/__tests__/activation.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation.test.js +0 -152
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.d.ts +0 -1
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.js +0 -149
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.js +0 -86
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +0 -364
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.js +0 -106
- package/dist/pi-extensions/__tests__/canvas-recap.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-recap.test.js +0 -62
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +0 -432
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +0 -152
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +0 -88
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.js +0 -96
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.js +0 -133
- package/dist/pi-extensions/__tests__/pre-command-gate.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/pre-command-gate.test.js +0 -232
- package/dist/shared/__tests__/env-boundary.test.d.ts +0 -1
- package/dist/shared/__tests__/env-boundary.test.js +0 -95
- package/dist/shared/__tests__/generated-context-grammar.test.d.ts +0 -1
- package/dist/shared/__tests__/generated-context-grammar.test.js +0 -80
- package/docs/compat/hearth-crtr-v1.md +0 -179
- package/docs/compat/hearth-crtr-v2.md +0 -177
- package/docs/compat/hearth-crtr-v3.md +0 -176
- package/docs/compat/hearth-crtr-v4.md +0 -182
- package/docs/compat/hearth-crtr-v5.md +0 -169
|
@@ -1,46 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { dirname, isAbsolute, resolve } from 'node:path';
|
|
3
|
-
import { SessionManager } from './broker-sdk.js';
|
|
4
|
-
/**
|
|
5
|
-
* Materialize one immutable root-to-leaf Pi session branch without touching the
|
|
6
|
-
* source broker's manager. The SDK creates its branch in the supplied session
|
|
7
|
-
* directory, so opening the source through a detached manager directs the staged
|
|
8
|
-
* file straight into the ticket directory. Publication is an exclusive hard link:
|
|
9
|
-
* an existing destination is never read or replaced.
|
|
10
|
-
*/
|
|
11
|
-
export function materializeSessionBranchAt(coordinates, destination) {
|
|
12
|
-
if (!isAbsolute(coordinates.sourceFile) || !isAbsolute(destination)) {
|
|
13
|
-
throw new Error('session branch paths must be absolute');
|
|
14
|
-
}
|
|
15
|
-
if (coordinates.sourceSessionId === '' || coordinates.leafId === '') {
|
|
16
|
-
throw new Error('session branch coordinates require source session and leaf ids');
|
|
17
|
-
}
|
|
18
|
-
const finalPath = resolve(destination);
|
|
19
|
-
const detached = SessionManager.open(coordinates.sourceFile, dirname(finalPath));
|
|
20
|
-
if (detached.getSessionId() !== coordinates.sourceSessionId) {
|
|
21
|
-
throw new Error('source session id does not match captured coordinates');
|
|
22
|
-
}
|
|
23
|
-
let stagedPath;
|
|
24
|
-
try {
|
|
25
|
-
stagedPath = detached.createBranchedSession(coordinates.leafId);
|
|
26
|
-
if (stagedPath === undefined)
|
|
27
|
-
throw new Error('Pi did not persist the selected session branch');
|
|
28
|
-
stagedPath = resolve(stagedPath);
|
|
29
|
-
if (dirname(stagedPath) !== dirname(finalPath)) {
|
|
30
|
-
throw new Error('Pi staged the session branch outside the destination directory');
|
|
31
|
-
}
|
|
32
|
-
chmodSync(stagedPath, 0o600);
|
|
33
|
-
if ((statSync(stagedPath).mode & 0o777) !== 0o600) {
|
|
34
|
-
throw new Error('staged session branch does not have mode 0600');
|
|
35
|
-
}
|
|
36
|
-
const branch = SessionManager.open(stagedPath);
|
|
37
|
-
if (branch.getSessionFile() !== stagedPath || branch.getSessionId() === '') {
|
|
38
|
-
throw new Error('Pi produced an invalid session branch');
|
|
39
|
-
}
|
|
40
|
-
linkSync(stagedPath, finalPath);
|
|
41
|
-
}
|
|
42
|
-
finally {
|
|
43
|
-
if (stagedPath !== undefined)
|
|
44
|
-
unlinkSync(stagedPath);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
1
|
+
var f=Object.defineProperty;var a=(s,o)=>f(s,"name",{value:o,configurable:!0});import{chmodSync as l,linkSync as u,statSync as w,unlinkSync as m}from"node:fs";import{dirname as n,isAbsolute as d,resolve as c}from"node:path";import{SessionManager as h}from"./broker-sdk.js";function y(s,o){if(!d(s.sourceFile)||!d(o))throw new Error("session branch paths must be absolute");if(s.sourceSessionId===""||s.leafId==="")throw new Error("session branch coordinates require source session and leaf ids");const r=c(o),i=h.open(s.sourceFile,n(r));if(i.getSessionId()!==s.sourceSessionId)throw new Error("source session id does not match captured coordinates");let e;try{if(e=i.createBranchedSession(s.leafId),e===void 0)throw new Error("Pi did not persist the selected session branch");if(e=c(e),n(e)!==n(r))throw new Error("Pi staged the session branch outside the destination directory");if(l(e,384),(w(e).mode&511)!==384)throw new Error("staged session branch does not have mode 0600");const t=h.open(e);if(t.getSessionFile()!==e||t.getSessionId()==="")throw new Error("Pi produced an invalid session branch");u(e,r)}finally{e!==void 0&&m(e)}}a(y,"materializeSessionBranchAt");export{y as materializeSessionBranchAt};
|
|
@@ -1,110 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//
|
|
3
|
-
// A refresh-yield does not start a new session file: reviveNode reuses the
|
|
4
|
-
// node's existing `.jsonl` (buildPiArgv's `--crtr-new-cycle`), and the broker
|
|
5
|
-
// resets the session-tree leaf, appending a `crtr-cycle` custom entry as the
|
|
6
|
-
// new cycle's ROOT. Custom entries never participate in LLM context, so the
|
|
7
|
-
// refreshed window is exactly as clean as a brand-new session — but every
|
|
8
|
-
// cycle lives in the same tree as a sibling root branch, so the /tree
|
|
9
|
-
// navigator shows previous cycles natively.
|
|
10
|
-
//
|
|
11
|
-
// `cycleAwareMessages()` is the display-side counterpart: it rebuilds the FULL
|
|
12
|
-
// node history — each prior cycle's messages (via pi's own `buildSessionContext`,
|
|
13
|
-
// so a compacted prior cycle renders correctly), a synthetic divider message per
|
|
14
|
-
// boundary, then the live cycle's context — so the broker welcome snapshot
|
|
15
|
-
// (broker.ts) and the dormant snapshot (node-snapshot.ts) both render one
|
|
16
|
-
// continuous conversation.
|
|
17
|
-
import { buildContextEntries, sessionEntryToContextMessages, } from '@earendil-works/pi-coding-agent';
|
|
18
|
-
/** customType of the persisted tree entry that ROOTS each post-yield cycle.
|
|
19
|
-
* Data payload: `{ cycle, fromLeaf }` — `cycle` is the node's cycle counter at
|
|
20
|
-
* relaunch, `fromLeaf` the previous cycle's leaf entry id. */
|
|
21
|
-
export const CRTR_CYCLE_CUSTOM_TYPE = 'crtr-cycle';
|
|
22
|
-
/** customType of the SYNTHETIC divider message spliced between cycles in
|
|
23
|
-
* snapshot rendering. Never persisted to the session file. */
|
|
24
|
-
export const CRTR_CYCLE_DIVIDER_CUSTOM_TYPE = 'crtr-cycle-divider';
|
|
25
|
-
function cycleDivider(cycle, timestamp) {
|
|
26
|
-
const label = cycle !== undefined ? `cycle ${cycle}` : 'new cycle';
|
|
27
|
-
return {
|
|
28
|
-
role: 'custom',
|
|
29
|
-
customType: CRTR_CYCLE_DIVIDER_CUSTOM_TYPE,
|
|
30
|
-
content: `yielded — ${label} begins with a fresh context window`,
|
|
31
|
-
display: true,
|
|
32
|
-
timestamp: new Date(timestamp).getTime(),
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
/** Text a provider attaches when the request's own AbortSignal fired. Pi's
|
|
36
|
-
* providers stamp `stopReason: 'aborted'` when they observe the signal
|
|
37
|
-
* themselves, but an abort that lands while the next request is starting
|
|
38
|
-
* reaches their catch as a bare AbortError instead, and is recorded as
|
|
39
|
-
* `stopReason: 'error'` carrying this text. Both spellings are the same healthy
|
|
40
|
-
* event — a turn that stopped because something asked it to stop. */
|
|
41
|
-
const ABORT_ERROR_TEXT = /\b(?:request|operation) was aborted\b|\bthe user aborted\b/i;
|
|
42
|
-
/** True when an assistant turn ended because its own abort fired — an ESC, a
|
|
43
|
-
* critical-tier interrupt, or the self-abort a refresh-yield performs. */
|
|
44
|
-
export function endedByAbort(message) {
|
|
45
|
-
if (message.stopReason === 'aborted')
|
|
46
|
-
return true;
|
|
47
|
-
return message.stopReason === 'error' && ABORT_ERROR_TEXT.test(message.errorMessage ?? '');
|
|
48
|
-
}
|
|
49
|
-
/** A refresh-yield deliberately aborts its own turn before the next cycle is
|
|
50
|
-
* rooted. Preserve that assistant message (including tool calls and prose), but
|
|
51
|
-
* omit the failure annotation: the cycle divider is the truthful visible seam. */
|
|
52
|
-
export function withoutYieldAbort(message) {
|
|
53
|
-
if (message.role !== 'assistant' || !endedByAbort(message))
|
|
54
|
-
return message;
|
|
55
|
-
const { stopReason: _stopReason, errorMessage: _errorMessage, ...visible } = message;
|
|
56
|
-
return visible;
|
|
57
|
-
}
|
|
58
|
-
function identifiedContextMessages(entries, leafId, byId) {
|
|
59
|
-
return buildContextEntries(entries, leafId, byId).flatMap((entry) => sessionEntryToContextMessages(entry).map((message) => ({ id: entry.id, message: message })));
|
|
60
|
-
}
|
|
61
|
-
function priorCycleMessages(messages) {
|
|
62
|
-
const last = messages.at(-1);
|
|
63
|
-
return last === undefined
|
|
64
|
-
? messages
|
|
65
|
-
: [...messages.slice(0, -1), { ...last, message: withoutYieldAbort(last.message) }];
|
|
66
|
-
}
|
|
67
|
-
/** The full multi-cycle message history for display: prior cycles (oldest
|
|
68
|
-
* first, each closed by a divider), then the live cycle's context. Falls back
|
|
69
|
-
* to plain `buildSessionContext()` when the session has no cycle markers, when
|
|
70
|
-
* the manager lacks tree accessors (fake engine), or when the current leaf was
|
|
71
|
-
* tree-navigated back into a pre-yield branch (pi's active-branch semantics
|
|
72
|
-
* then apply unchanged). */
|
|
73
|
-
export function cycleAwareMessages(sm) {
|
|
74
|
-
if (typeof sm.getEntries !== 'function' || typeof sm.getBranch !== 'function')
|
|
75
|
-
return undefined;
|
|
76
|
-
// File order = append order = chronological cycle order.
|
|
77
|
-
const entries = sm.getEntries();
|
|
78
|
-
const byId = new Map(entries.map((e) => [e.id, e]));
|
|
79
|
-
const currentBranch = sm.getBranch();
|
|
80
|
-
const current = identifiedContextMessages(entries, currentBranch.at(-1)?.id ?? null, byId);
|
|
81
|
-
const markers = entries.filter((e) => e.type === 'custom' && e.customType === CRTR_CYCLE_CUSTOM_TYPE);
|
|
82
|
-
if (markers.length === 0)
|
|
83
|
-
return current;
|
|
84
|
-
// The current cycle's root: first entry on the leaf→root path. When it is
|
|
85
|
-
// not a cycle marker, the leaf sits in the ORIGINAL (pre-yield) branch —
|
|
86
|
-
// render just that branch. Otherwise replay every cycle up to and including
|
|
87
|
-
// the one the marker closes.
|
|
88
|
-
const currentRootId = currentBranch[0]?.id;
|
|
89
|
-
const rootMarkerIndex = markers.findIndex((m) => m.id === currentRootId);
|
|
90
|
-
if (rootMarkerIndex === -1)
|
|
91
|
-
return current;
|
|
92
|
-
const out = [];
|
|
93
|
-
for (let i = 0; i <= rootMarkerIndex; i++) {
|
|
94
|
-
const marker = markers[i];
|
|
95
|
-
const fromLeaf = marker.data?.fromLeaf;
|
|
96
|
-
if (typeof fromLeaf === 'string' && fromLeaf !== '') {
|
|
97
|
-
// Replay this prior cycle's own branch through pi's canonical context
|
|
98
|
-
// builder — preserving compaction semantics (one compactionSummary +
|
|
99
|
-
// kept + post-compaction messages only) exactly like the live cycle
|
|
100
|
-
// below.
|
|
101
|
-
out.push(...priorCycleMessages(identifiedContextMessages(entries, fromLeaf, byId)));
|
|
102
|
-
}
|
|
103
|
-
out.push({
|
|
104
|
-
id: `${marker.id}~divider`,
|
|
105
|
-
message: cycleDivider(marker.data?.cycle, marker.timestamp),
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
out.push(...current);
|
|
109
|
-
return out;
|
|
110
|
-
}
|
|
1
|
+
var y=Object.defineProperty;var i=(e,t)=>y(e,"name",{value:t,configurable:!0});import{buildContextEntries as b,sessionEntryToContextMessages as R}from"@earendil-works/pi-coding-agent";const T="crtr-cycle",g="crtr-cycle-divider";function C(e,t){const n=e!==void 0?`cycle ${e}`:"new cycle";return{role:"custom",customType:g,content:`yielded \u2014 ${n} begins with a fresh context window`,display:!0,timestamp:new Date(t).getTime()}}i(C,"cycleDivider");const M=/\b(?:request|operation) was aborted\b|\bthe user aborted\b/i;function h(e){return e.stopReason==="aborted"?!0:e.stopReason==="error"&&M.test(e.errorMessage??"")}i(h,"endedByAbort");function m(e){if(e.role!=="assistant"||!h(e))return e;const{stopReason:t,errorMessage:n,...o}=e;return o}i(m,"withoutYieldAbort");function p(e,t,n){return b(e,t,n).flatMap(o=>R(o).map(s=>({id:o.id,message:s})))}i(p,"identifiedContextMessages");function x(e){const t=e.at(-1);return t===void 0?e:[...e.slice(0,-1),{...t,message:m(t.message)}]}i(x,"priorCycleMessages");function w(e){if(typeof e.getEntries!="function"||typeof e.getBranch!="function")return;const t=e.getEntries(),n=new Map(t.map(r=>[r.id,r])),o=e.getBranch(),s=p(t,o.at(-1)?.id??null,n),u=t.filter(r=>r.type==="custom"&&r.customType===T);if(u.length===0)return s;const l=o[0]?.id,f=u.findIndex(r=>r.id===l);if(f===-1)return s;const c=[];for(let r=0;r<=f;r++){const a=u[r],d=a.data?.fromLeaf;typeof d=="string"&&d!==""&&c.push(...x(p(t,d,n))),c.push({id:`${a.id}~divider`,message:C(a.data?.cycle,a.timestamp)})}return c.push(...s),c}i(w,"cycleAwareMessages");export{T as CRTR_CYCLE_CUSTOM_TYPE,g as CRTR_CYCLE_DIVIDER_CUSTOM_TYPE,w as cycleAwareMessages,h as endedByAbort,m as withoutYieldAbort};
|
|
@@ -1,406 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//
|
|
3
|
-
// pi's `SessionManager.list()` reads EVERY `.jsonl` in a cwd's session dir in
|
|
4
|
-
// full, line-by-line, to build each session's `allMessagesText` search field.
|
|
5
|
-
// On a large corpus (3.3k files / 1.1 GiB here) that is ~3.6s of CPU-bound
|
|
6
|
-
// JSON.parse on EVERY picker open — pi exposes no per-file entry point and no
|
|
7
|
-
// cache. This module keeps a `(mtimeMs, size)`-keyed cache of the already-wire-
|
|
8
|
-
// shaped, search-text-bounded `WireSessionInfo`: on each open it stats every
|
|
9
|
-
// file (cheap — ~260ms for 3.3k) and rebuilds info ONLY for new/changed files,
|
|
10
|
-
// reusing cached entries for the rest and dropping deleted ones. The cache is
|
|
11
|
-
// persisted to one global JSON file so the first open after a broker restart is
|
|
12
|
-
// also fast.
|
|
13
|
-
//
|
|
14
|
-
// `buildWireSessionInfo` below is a faithful mirror of pi's private
|
|
15
|
-
// `buildSessionInfo` (node_modules/@earendil-works/pi-coding-agent/dist/core/
|
|
16
|
-
// session-manager.js) — it is not exported, so the only way to rebuild a single
|
|
17
|
-
// file's info without re-reading the whole corpus is to reproduce its parse.
|
|
18
|
-
// Keep it in sync with pi's session-file format (CURRENT_SESSION_VERSION).
|
|
19
|
-
import { createReadStream } from 'node:fs';
|
|
20
|
-
import { readFile, readdir, rename, stat, unlink, writeFile } from 'node:fs/promises';
|
|
21
|
-
import { createInterface } from 'node:readline';
|
|
22
|
-
import { dirname, join, normalize } from 'node:path';
|
|
23
|
-
/** Search-text bound: `allMessagesText` is searched on every query edit; pi's
|
|
24
|
-
* unbounded value retains gigabytes in the viewer and turns key-repeat into GC
|
|
25
|
-
* jitter. The opening and latest text keep search useful. */
|
|
26
|
-
const SESSION_SEARCH_TEXT_CHARS = 1024;
|
|
27
|
-
export function compactSessionSearchText(text) {
|
|
28
|
-
if (text.length <= SESSION_SEARCH_TEXT_CHARS)
|
|
29
|
-
return text;
|
|
30
|
-
const half = SESSION_SEARCH_TEXT_CHARS / 2;
|
|
31
|
-
return `${text.slice(0, half)} … ${text.slice(-half)}`;
|
|
32
|
-
}
|
|
33
|
-
const MAX_CONCURRENT_INFO_LOADS = 10;
|
|
34
|
-
/** Persisted-file schema version. Bump whenever `CacheEntry`'s shape (or
|
|
35
|
-
* `WireSessionInfo`'s) changes: on a version mismatch the whole file is
|
|
36
|
-
* discarded and rebuilt from disk — no per-entry migration, no lenient
|
|
37
|
-
* recovery (the cache is fully derivable). */
|
|
38
|
-
const CACHE_SCHEMA_VERSION = 1;
|
|
39
|
-
/** The full map is tens of MB (~15 MB for one cwd, ~46 MB for `all`); a
|
|
40
|
-
* synchronous `JSON.stringify` of it must never sit on the reply path. Persists
|
|
41
|
-
* are coalesced onto this trailing timer so rapid opens write at most once per
|
|
42
|
-
* window, off the hot path. */
|
|
43
|
-
const PERSIST_DEBOUNCE_MS = 2000;
|
|
44
|
-
function isFiniteNonNeg(v) {
|
|
45
|
-
return typeof v === 'number' && Number.isFinite(v) && v >= 0;
|
|
46
|
-
}
|
|
47
|
-
/** An optional field is valid iff absent/undefined or a string. */
|
|
48
|
-
function isOptionalString(v) {
|
|
49
|
-
return v === undefined || typeof v === 'string';
|
|
50
|
-
}
|
|
51
|
-
/** Validate the full persisted `WireSessionInfo` shape. A same-version file whose
|
|
52
|
-
* entry drifts from the current wire schema (any required field missing or
|
|
53
|
-
* mistyped, any optional field the wrong type, non-finite/negative metadata)
|
|
54
|
-
* must discard the whole cache and rebuild rather than feed a malformed entry to
|
|
55
|
-
* the viewer or the sort. */
|
|
56
|
-
function isValidWireInfo(v) {
|
|
57
|
-
if (typeof v !== 'object' || v === null)
|
|
58
|
-
return false;
|
|
59
|
-
const i = v;
|
|
60
|
-
return (typeof i['path'] === 'string' &&
|
|
61
|
-
typeof i['id'] === 'string' &&
|
|
62
|
-
typeof i['cwd'] === 'string' &&
|
|
63
|
-
typeof i['created'] === 'string' &&
|
|
64
|
-
typeof i['modified'] === 'string' &&
|
|
65
|
-
isFiniteNonNeg(i['messageCount']) &&
|
|
66
|
-
typeof i['firstMessage'] === 'string' &&
|
|
67
|
-
typeof i['allMessagesText'] === 'string' &&
|
|
68
|
-
isOptionalString(i['name']) &&
|
|
69
|
-
isOptionalString(i['parentSessionPath']));
|
|
70
|
-
}
|
|
71
|
-
/** Shape-check a loaded entry — a well-formed-JSON file with the right version
|
|
72
|
-
* but a stale entry shape would otherwise feed a malformed `WireSessionInfo` to
|
|
73
|
-
* the viewer/sort. Any failure discards the whole file (rebuild). */
|
|
74
|
-
function isValidEntry(e) {
|
|
75
|
-
if (typeof e !== 'object' || e === null)
|
|
76
|
-
return false;
|
|
77
|
-
const c = e;
|
|
78
|
-
return isFiniteNonNeg(c['mtimeMs']) && isFiniteNonNeg(c['size']) && isValidWireInfo(c['info']);
|
|
79
|
-
}
|
|
80
|
-
// faithful mirror of pi's private buildSessionInfo
|
|
81
|
-
function parseLine(line) {
|
|
82
|
-
if (!line.trim())
|
|
83
|
-
return null;
|
|
84
|
-
try {
|
|
85
|
-
return JSON.parse(line);
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function extractTextContent(message) {
|
|
92
|
-
const content = message['content'];
|
|
93
|
-
if (typeof content === 'string')
|
|
94
|
-
return content;
|
|
95
|
-
if (!Array.isArray(content))
|
|
96
|
-
return '';
|
|
97
|
-
return content
|
|
98
|
-
.filter((b) => b.type === 'text')
|
|
99
|
-
.map((b) => b.text)
|
|
100
|
-
.join(' ');
|
|
101
|
-
}
|
|
102
|
-
function messageActivityTime(entry) {
|
|
103
|
-
const message = entry['message'];
|
|
104
|
-
if (!message || !('content' in message))
|
|
105
|
-
return undefined;
|
|
106
|
-
const role = message['role'];
|
|
107
|
-
if (role !== 'user' && role !== 'assistant')
|
|
108
|
-
return undefined;
|
|
109
|
-
const ts = message['timestamp'];
|
|
110
|
-
if (typeof ts === 'number')
|
|
111
|
-
return ts;
|
|
112
|
-
const t = new Date(entry['timestamp']).getTime();
|
|
113
|
-
return Number.isNaN(t) ? undefined : t;
|
|
114
|
-
}
|
|
115
|
-
/** Build one session's wire info by streaming the file. Returns null for a
|
|
116
|
-
* malformed/headerless file (matches pi, which drops those from the list). */
|
|
117
|
-
async function buildWireSessionInfo(filePath) {
|
|
118
|
-
try {
|
|
119
|
-
const stats = await stat(filePath);
|
|
120
|
-
let header = null;
|
|
121
|
-
let messageCount = 0;
|
|
122
|
-
let firstMessage = '';
|
|
123
|
-
const allMessages = [];
|
|
124
|
-
let name;
|
|
125
|
-
let lastActivityTime;
|
|
126
|
-
const rl = createInterface({
|
|
127
|
-
input: createReadStream(filePath, { encoding: 'utf8' }),
|
|
128
|
-
crlfDelay: Infinity,
|
|
129
|
-
});
|
|
130
|
-
for await (const line of rl) {
|
|
131
|
-
const entry = parseLine(line);
|
|
132
|
-
if (!entry)
|
|
133
|
-
continue;
|
|
134
|
-
if (!header) {
|
|
135
|
-
if (entry['type'] !== 'session')
|
|
136
|
-
return null;
|
|
137
|
-
header = entry;
|
|
138
|
-
continue;
|
|
139
|
-
}
|
|
140
|
-
if (entry['type'] === 'session_info') {
|
|
141
|
-
name = entry['name']?.trim() || undefined;
|
|
142
|
-
}
|
|
143
|
-
if (entry['type'] !== 'message')
|
|
144
|
-
continue;
|
|
145
|
-
messageCount++;
|
|
146
|
-
const activityTime = messageActivityTime(entry);
|
|
147
|
-
if (typeof activityTime === 'number') {
|
|
148
|
-
lastActivityTime = Math.max(lastActivityTime ?? 0, activityTime);
|
|
149
|
-
}
|
|
150
|
-
const message = entry['message'];
|
|
151
|
-
if (!message || !('content' in message))
|
|
152
|
-
continue;
|
|
153
|
-
const role = message['role'];
|
|
154
|
-
if (role !== 'user' && role !== 'assistant')
|
|
155
|
-
continue;
|
|
156
|
-
const textContent = extractTextContent(message);
|
|
157
|
-
if (!textContent)
|
|
158
|
-
continue;
|
|
159
|
-
allMessages.push(textContent);
|
|
160
|
-
if (!firstMessage && role === 'user')
|
|
161
|
-
firstMessage = textContent;
|
|
162
|
-
}
|
|
163
|
-
if (!header)
|
|
164
|
-
return null;
|
|
165
|
-
const cwd = typeof header['cwd'] === 'string' ? header['cwd'] : '';
|
|
166
|
-
const headerTime = typeof header['timestamp'] === 'string' ? new Date(header['timestamp']).getTime() : NaN;
|
|
167
|
-
const modified = typeof lastActivityTime === 'number' && lastActivityTime > 0
|
|
168
|
-
? new Date(lastActivityTime)
|
|
169
|
-
: !Number.isNaN(headerTime)
|
|
170
|
-
? new Date(headerTime)
|
|
171
|
-
: stats.mtime;
|
|
172
|
-
return {
|
|
173
|
-
path: filePath,
|
|
174
|
-
id: header['id'],
|
|
175
|
-
cwd,
|
|
176
|
-
name,
|
|
177
|
-
parentSessionPath: header['parentSession'],
|
|
178
|
-
created: new Date(header['timestamp']).toISOString(),
|
|
179
|
-
modified: modified.toISOString(),
|
|
180
|
-
messageCount,
|
|
181
|
-
firstMessage: firstMessage || '(no messages)',
|
|
182
|
-
// Cache the already-bounded wire form (the selector searches this field).
|
|
183
|
-
allMessagesText: compactSessionSearchText(allMessages.join(' ')),
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
catch {
|
|
187
|
-
return null;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
// the cache
|
|
191
|
-
/** In-memory + file-backed cache keyed by absolute `.jsonl` path. One instance
|
|
192
|
-
* per broker; the file is shared across brokers (last-writer-wins via atomic
|
|
193
|
-
* rename — a lost update just costs one file's rebuild next open, never
|
|
194
|
-
* corruption). */
|
|
195
|
-
export class SessionListCache {
|
|
196
|
-
cacheFile;
|
|
197
|
-
cache = new Map();
|
|
198
|
-
/** In-flight cwd scans keyed by normalized session dir, so an immediate
|
|
199
|
-
* /resume that races the background prewarm (or a second identical open)
|
|
200
|
-
* shares the one running jsonlFiles/stat/build pass instead of queueing a
|
|
201
|
-
* redundant one behind it. */
|
|
202
|
-
inflightDir = new Map();
|
|
203
|
-
loadPromise = null;
|
|
204
|
-
buildChain = Promise.resolve();
|
|
205
|
-
persisting = false;
|
|
206
|
-
persistAgain = false;
|
|
207
|
-
persistTimer = null;
|
|
208
|
-
constructor(cacheFile) {
|
|
209
|
-
this.cacheFile = cacheFile;
|
|
210
|
-
}
|
|
211
|
-
/** Fire-and-forget warm of the cwd scope at broker start, so the first
|
|
212
|
-
* `/resume` open after this broker launches is already warm. The cold scan
|
|
213
|
-
* streams each file via readline (yields per chunk), so it never blocks the
|
|
214
|
-
* broker loop — pre-warming beats worker threads here. Errors are swallowed
|
|
215
|
-
* by the same paths that guard a normal open. */
|
|
216
|
-
prewarm(sessionDir) {
|
|
217
|
-
void this.listDir(sessionDir);
|
|
218
|
-
}
|
|
219
|
-
/** Sessions for one cwd's session dir (the picker's default `cwd` scope).
|
|
220
|
-
* Single-flight: an identical concurrent cwd open (prewarm ⇄ immediate
|
|
221
|
-
* /resume) shares the in-flight promise rather than repeating the scan.
|
|
222
|
-
* Incompatible cwd/all builds still serialize through the build chain. */
|
|
223
|
-
listDir(sessionDir) {
|
|
224
|
-
const key = normalize(sessionDir);
|
|
225
|
-
const existing = this.inflightDir.get(key);
|
|
226
|
-
if (existing)
|
|
227
|
-
return existing;
|
|
228
|
-
const op = this.buildDir(key);
|
|
229
|
-
this.inflightDir.set(key, op);
|
|
230
|
-
// Attach both settlement handlers so the slot is cleared on success OR
|
|
231
|
-
// rejection, a rejected scan can never poison the next open, and a
|
|
232
|
-
// discarded prewarm rejection never becomes unhandled.
|
|
233
|
-
const clear = () => {
|
|
234
|
-
if (this.inflightDir.get(key) === op)
|
|
235
|
-
this.inflightDir.delete(key);
|
|
236
|
-
};
|
|
237
|
-
op.then(clear, clear);
|
|
238
|
-
return op;
|
|
239
|
-
}
|
|
240
|
-
buildDir(sessionDir) {
|
|
241
|
-
// Prune only keys directly in this cwd's dir. A cwd-scope open must not evict
|
|
242
|
-
// other cwds' cached entries: they weren't rescanned, so their absence from
|
|
243
|
-
// `files` says nothing about whether they still exist on disk.
|
|
244
|
-
return jsonlFiles(sessionDir).then((files) => this.build(files, (key) => dirname(key) === sessionDir));
|
|
245
|
-
}
|
|
246
|
-
/** Sessions across every cwd's dir under the sessions root (`all` scope). */
|
|
247
|
-
async listAll(sessionsRoot) {
|
|
248
|
-
let dirEntries;
|
|
249
|
-
try {
|
|
250
|
-
dirEntries = (await readdir(sessionsRoot, { withFileTypes: true }))
|
|
251
|
-
.filter((e) => e.isDirectory())
|
|
252
|
-
.map((e) => join(sessionsRoot, e.name));
|
|
253
|
-
}
|
|
254
|
-
catch {
|
|
255
|
-
return [];
|
|
256
|
-
}
|
|
257
|
-
const files = [];
|
|
258
|
-
for (const dir of dirEntries)
|
|
259
|
-
files.push(...(await jsonlFiles(dir)));
|
|
260
|
-
// Prune every cached key that is a direct grandchild of the sessions root
|
|
261
|
-
// (`<root>/<cwd-dir>/<file>.jsonl`). Using the path boundary rather than the
|
|
262
|
-
// set of dirs that still exist means a wholly-deleted cwd dir — absent from
|
|
263
|
-
// this scan — also has its stale entries evicted, so the persisted file never
|
|
264
|
-
// accumulates bloat from removed cwds.
|
|
265
|
-
return this.build(files, (key) => dirname(dirname(key)) === sessionsRoot);
|
|
266
|
-
}
|
|
267
|
-
/** Serialize builds through a single chain: they mutate the shared cache map
|
|
268
|
-
* and, cold, scan the same large corpus. Identical cwd opens are already
|
|
269
|
-
* collapsed upstream by `listDir`'s in-flight sharing; chaining serializes
|
|
270
|
-
* the remaining incompatible builds (a cwd scan vs an `all` scan) so they
|
|
271
|
-
* never race map mutation or launch overlapping cold scans. */
|
|
272
|
-
build(files, shouldPrune) {
|
|
273
|
-
const run = this.buildChain.then(() => this.buildLocked(files, shouldPrune));
|
|
274
|
-
// Keep the chain alive past a rejected build without leaking the rejection.
|
|
275
|
-
this.buildChain = run.then(() => { }, () => { });
|
|
276
|
-
return run;
|
|
277
|
-
}
|
|
278
|
-
async buildLocked(files, shouldPrune) {
|
|
279
|
-
await this.ensureLoaded();
|
|
280
|
-
const present = new Set(files);
|
|
281
|
-
let changed = false;
|
|
282
|
-
for (const key of this.cache.keys()) {
|
|
283
|
-
if (!present.has(key) && shouldPrune(key)) {
|
|
284
|
-
this.cache.delete(key);
|
|
285
|
-
changed = true;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
// Positioned by file index so equal-`modified` ties keep readdir order
|
|
289
|
-
// deterministically (workers finish out of order); a stable sort preserves it.
|
|
290
|
-
const infos = new Array(files.length);
|
|
291
|
-
let next = 0;
|
|
292
|
-
const worker = async () => {
|
|
293
|
-
for (;;) {
|
|
294
|
-
const i = next++;
|
|
295
|
-
if (i >= files.length)
|
|
296
|
-
return;
|
|
297
|
-
const file = files[i];
|
|
298
|
-
if (file === undefined)
|
|
299
|
-
return;
|
|
300
|
-
const st = await stat(file).catch(() => null);
|
|
301
|
-
if (!st) {
|
|
302
|
-
if (this.cache.delete(file))
|
|
303
|
-
changed = true;
|
|
304
|
-
continue;
|
|
305
|
-
}
|
|
306
|
-
const cached = this.cache.get(file);
|
|
307
|
-
if (cached && cached.mtimeMs === st.mtimeMs && cached.size === st.size) {
|
|
308
|
-
infos[i] = cached.info;
|
|
309
|
-
continue;
|
|
310
|
-
}
|
|
311
|
-
const info = await buildWireSessionInfo(file);
|
|
312
|
-
changed = true;
|
|
313
|
-
if (!info) {
|
|
314
|
-
this.cache.delete(file);
|
|
315
|
-
continue;
|
|
316
|
-
}
|
|
317
|
-
this.cache.set(file, { mtimeMs: st.mtimeMs, size: st.size, info });
|
|
318
|
-
infos[i] = info;
|
|
319
|
-
}
|
|
320
|
-
};
|
|
321
|
-
await Promise.all(Array.from({ length: Math.min(MAX_CONCURRENT_INFO_LOADS, files.length) }, () => worker()));
|
|
322
|
-
if (changed)
|
|
323
|
-
this.schedulePersist();
|
|
324
|
-
const result = infos.filter((x) => x !== undefined);
|
|
325
|
-
result.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());
|
|
326
|
-
return result;
|
|
327
|
-
}
|
|
328
|
-
/** Load the persisted cache exactly once, single-flight. Returns a shared
|
|
329
|
-
* promise so a build that starts while the read is still in flight awaits the
|
|
330
|
-
* same load rather than proceeding against a not-yet-populated map. */
|
|
331
|
-
ensureLoaded() {
|
|
332
|
-
if (!this.loadPromise)
|
|
333
|
-
this.loadPromise = this.loadFromDisk();
|
|
334
|
-
return this.loadPromise;
|
|
335
|
-
}
|
|
336
|
-
async loadFromDisk() {
|
|
337
|
-
try {
|
|
338
|
-
const raw = JSON.parse(await readFile(this.cacheFile, 'utf8'));
|
|
339
|
-
// Version mismatch or shape drift → discard and rebuild. No lenient
|
|
340
|
-
// multi-path recovery: the cache is derivable, so a bad file is just
|
|
341
|
-
// overwritten on the next persist.
|
|
342
|
-
if (raw?.version !== CACHE_SCHEMA_VERSION || typeof raw.entries !== 'object')
|
|
343
|
-
return;
|
|
344
|
-
for (const [path, entry] of Object.entries(raw.entries)) {
|
|
345
|
-
if (!isValidEntry(entry)) {
|
|
346
|
-
this.cache.clear();
|
|
347
|
-
return;
|
|
348
|
-
}
|
|
349
|
-
this.cache.set(path, entry);
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
catch {
|
|
353
|
-
// Missing or corrupt cache file → start empty and rebuild.
|
|
354
|
-
this.cache.clear();
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
/** Coalesce persists onto a single trailing timer so the tens-of-MB
|
|
358
|
-
* `JSON.stringify` never runs on the reply path and rapid opens write once. */
|
|
359
|
-
schedulePersist() {
|
|
360
|
-
if (this.persistTimer)
|
|
361
|
-
return;
|
|
362
|
-
this.persistTimer = setTimeout(() => {
|
|
363
|
-
this.persistTimer = null;
|
|
364
|
-
void this.persist();
|
|
365
|
-
}, PERSIST_DEBOUNCE_MS);
|
|
366
|
-
this.persistTimer.unref?.();
|
|
367
|
-
}
|
|
368
|
-
/** Atomic write (temp + rename) so a concurrent reader never sees a partial
|
|
369
|
-
* file. Coalesces overlapping writes into one trailing flush. */
|
|
370
|
-
async persist() {
|
|
371
|
-
if (this.persisting) {
|
|
372
|
-
this.persistAgain = true;
|
|
373
|
-
return;
|
|
374
|
-
}
|
|
375
|
-
this.persisting = true;
|
|
376
|
-
const tmp = `${this.cacheFile}.${process.pid}.tmp`;
|
|
377
|
-
try {
|
|
378
|
-
const entries = {};
|
|
379
|
-
for (const [path, entry] of this.cache)
|
|
380
|
-
entries[path] = entry;
|
|
381
|
-
const payload = { version: CACHE_SCHEMA_VERSION, entries };
|
|
382
|
-
await writeFile(tmp, JSON.stringify(payload));
|
|
383
|
-
await rename(tmp, this.cacheFile);
|
|
384
|
-
}
|
|
385
|
-
catch {
|
|
386
|
-
// Best-effort: a failed persist only costs a rebuild next open. Clean up
|
|
387
|
-
// the temp file so a failed write never leaks it.
|
|
388
|
-
await unlink(tmp).catch(() => { });
|
|
389
|
-
}
|
|
390
|
-
finally {
|
|
391
|
-
this.persisting = false;
|
|
392
|
-
if (this.persistAgain) {
|
|
393
|
-
this.persistAgain = false;
|
|
394
|
-
void this.persist();
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
async function jsonlFiles(dir) {
|
|
400
|
-
try {
|
|
401
|
-
return (await readdir(dir)).filter((f) => f.endsWith('.jsonl')).map((f) => join(dir, f));
|
|
402
|
-
}
|
|
403
|
-
catch {
|
|
404
|
-
return [];
|
|
405
|
-
}
|
|
406
|
-
}
|
|
1
|
+
var O=Object.defineProperty;var a=(e,t)=>O(e,"name",{value:t,configurable:!0});import{createReadStream as E}from"node:fs";import{readFile as _,readdir as b,rename as x,stat as D,unlink as I,writeFile as j}from"node:fs/promises";import{createInterface as k}from"node:readline";import{dirname as w,join as N,normalize as P}from"node:path";const M=1024;function L(e){if(e.length<=M)return e;const t=M/2;return`${e.slice(0,t)} \u2026 ${e.slice(-t)}`}a(L,"compactSessionSearchText");const z=10,A=1,R=2e3;function S(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0}a(S,"isFiniteNonNeg");function C(e){return e===void 0||typeof e=="string"}a(C,"isOptionalString");function v(e){if(typeof e!="object"||e===null)return!1;const t=e;return typeof t.path=="string"&&typeof t.id=="string"&&typeof t.cwd=="string"&&typeof t.created=="string"&&typeof t.modified=="string"&&S(t.messageCount)&&typeof t.firstMessage=="string"&&typeof t.allMessagesText=="string"&&C(t.name)&&C(t.parentSessionPath)}a(v,"isValidWireInfo");function H(e){if(typeof e!="object"||e===null)return!1;const t=e;return S(t.mtimeMs)&&S(t.size)&&v(t.info)}a(H,"isValidEntry");function $(e){if(!e.trim())return null;try{return JSON.parse(e)}catch{return null}}a($,"parseLine");function J(e){const t=e.content;return typeof t=="string"?t:Array.isArray(t)?t.filter(i=>i.type==="text").map(i=>i.text).join(" "):""}a(J,"extractTextContent");function V(e){const t=e.message;if(!t||!("content"in t))return;const i=t.role;if(i!=="user"&&i!=="assistant")return;const s=t.timestamp;if(typeof s=="number")return s;const n=new Date(e.timestamp).getTime();return Number.isNaN(n)?void 0:n}a(V,"messageActivityTime");async function W(e){try{const t=await D(e);let i=null,s=0,n="";const f=[];let m,l;const d=k({input:E(e,{encoding:"utf8"}),crlfDelay:1/0});for await(const h of d){const c=$(h);if(!c)continue;if(!i){if(c.type!=="session")return null;i=c;continue}if(c.type==="session_info"&&(m=c.name?.trim()||void 0),c.type!=="message")continue;s++;const T=V(c);typeof T=="number"&&(l=Math.max(l??0,T));const p=c.message;if(!p||!("content"in p))continue;const g=p.role;if(g!=="user"&&g!=="assistant")continue;const y=J(p);y&&(f.push(y),!n&&g==="user"&&(n=y))}if(!i)return null;const r=typeof i.cwd=="string"?i.cwd:"",o=typeof i.timestamp=="string"?new Date(i.timestamp).getTime():NaN,u=typeof l=="number"&&l>0?new Date(l):Number.isNaN(o)?t.mtime:new Date(o);return{path:e,id:i.id,cwd:r,name:m,parentSessionPath:i.parentSession,created:new Date(i.timestamp).toISOString(),modified:u.toISOString(),messageCount:s,firstMessage:n||"(no messages)",allMessagesText:L(f.join(" "))}}catch{return null}}a(W,"buildWireSessionInfo");class K{static{a(this,"SessionListCache")}cacheFile;cache=new Map;inflightDir=new Map;loadPromise=null;buildChain=Promise.resolve();persisting=!1;persistAgain=!1;persistTimer=null;constructor(t){this.cacheFile=t}prewarm(t){this.listDir(t)}listDir(t){const i=P(t),s=this.inflightDir.get(i);if(s)return s;const n=this.buildDir(i);this.inflightDir.set(i,n);const f=a(()=>{this.inflightDir.get(i)===n&&this.inflightDir.delete(i)},"clear");return n.then(f,f),n}buildDir(t){return F(t).then(i=>this.build(i,s=>w(s)===t))}async listAll(t){let i;try{i=(await b(t,{withFileTypes:!0})).filter(n=>n.isDirectory()).map(n=>N(t,n.name))}catch{return[]}const s=[];for(const n of i)s.push(...await F(n));return this.build(s,n=>w(w(n))===t)}build(t,i){const s=this.buildChain.then(()=>this.buildLocked(t,i));return this.buildChain=s.then(()=>{},()=>{}),s}async buildLocked(t,i){await this.ensureLoaded();const s=new Set(t);let n=!1;for(const r of this.cache.keys())!s.has(r)&&i(r)&&(this.cache.delete(r),n=!0);const f=new Array(t.length);let m=0;const l=a(async()=>{for(;;){const r=m++;if(r>=t.length)return;const o=t[r];if(o===void 0)return;const u=await D(o).catch(()=>null);if(!u){this.cache.delete(o)&&(n=!0);continue}const h=this.cache.get(o);if(h&&h.mtimeMs===u.mtimeMs&&h.size===u.size){f[r]=h.info;continue}const c=await W(o);if(n=!0,!c){this.cache.delete(o);continue}this.cache.set(o,{mtimeMs:u.mtimeMs,size:u.size,info:c}),f[r]=c}},"worker");await Promise.all(Array.from({length:Math.min(z,t.length)},()=>l())),n&&this.schedulePersist();const d=f.filter(r=>r!==void 0);return d.sort((r,o)=>new Date(o.modified).getTime()-new Date(r.modified).getTime()),d}ensureLoaded(){return this.loadPromise||(this.loadPromise=this.loadFromDisk()),this.loadPromise}async loadFromDisk(){try{const t=JSON.parse(await _(this.cacheFile,"utf8"));if(t?.version!==A||typeof t.entries!="object")return;for(const[i,s]of Object.entries(t.entries)){if(!H(s)){this.cache.clear();return}this.cache.set(i,s)}}catch{this.cache.clear()}}schedulePersist(){this.persistTimer||(this.persistTimer=setTimeout(()=>{this.persistTimer=null,this.persist()},R),this.persistTimer.unref?.())}async persist(){if(this.persisting){this.persistAgain=!0;return}this.persisting=!0;const t=`${this.cacheFile}.${process.pid}.tmp`;try{const i={};for(const[n,f]of this.cache)i[n]=f;await j(t,JSON.stringify({version:A,entries:i})),await x(t,this.cacheFile)}catch{await I(t).catch(()=>{})}finally{this.persisting=!1,this.persistAgain&&(this.persistAgain=!1,this.persist())}}}async function F(e){try{return(await b(e)).filter(t=>t.endsWith(".jsonl")).map(t=>N(e,t))}catch{return[]}}a(F,"jsonlFiles");export{K as SessionListCache,L as compactSessionSearchText};
|