@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,231 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//
|
|
3
|
-
// The PURE render + telemetry helpers (ANSI styling, fillBar/truncate,
|
|
4
|
-
// nodeGlyph, tokensCell, the graph row/fold types, …) live in nav-render.ts and
|
|
5
|
-
// are RE-EXPORTED here so existing importers of nav-model keep working. What
|
|
6
|
-
// stays here is the canvas-db graph layer: getNode/subscriptions walks and the
|
|
7
|
-
// fold/flatten model built over them.
|
|
8
|
-
//
|
|
9
|
-
// Everything is pi-API-free. Per-view interaction state, including ask counts
|
|
10
|
-
// and manual fold overrides, is threaded through parameters (see `asks` and
|
|
11
|
-
// `FoldState`) so this layer owns no singletons and each consumer keeps its own
|
|
12
|
-
// state.
|
|
13
|
-
import { getNode, subscribersOf, subscriptionsOf } from './index.js';
|
|
14
|
-
import { faultSummary } from './status-glyph.js';
|
|
15
|
-
import { statusRank } from './node-order.js';
|
|
16
|
-
import { nodeGlyph, navLabel, shortId, tokensCell, activityCell, cycleBadge, askBadge, liveBelowBadge, truncate, fillBar, fillWidth, isAttached, BOLD, DIM, RESET, REVERSE, BG_ATTACHED, } from './nav-render.js';
|
|
17
|
-
// Re-export the pure render/telemetry half so existing nav-model importers
|
|
18
|
-
// (chrome/canvas-panels, overlays/graph, resume) keep resolving these here.
|
|
19
|
-
export { PI_MAX_WIDGET_LINES, VIEWPORT_FALLBACK_ROWS, ESC, RESET, BOLD, DIM, REVERSE, BG_ATTACHED, GREEN, RED, YELLOW, CYAN, GRAY, nodeGlyph, visibleWidth, truncate, fillWidth, fillBar, readTelemetry, fmtTokens, tokensCell, activityCell, cycleBadge, navLabel, shortId, askBadge, liveBelowBadge, isAttached, hasBrokerViewers, fetchAsksMap, graphWidgetBudget, GRAPH_HINT, } from './nav-render.js';
|
|
20
|
-
// Read primitives — UNCACHED, deliberately
|
|
21
|
-
//
|
|
22
|
-
// These once memoized into module-global Maps that a `beginFrame()` cleared at
|
|
23
|
-
// the top of each TUI render. That cache is gone. Nothing in this module is
|
|
24
|
-
// frame-scoped any more: the GRAPH overlay reads the canvas through crtrd's
|
|
25
|
-
// remote CanvasSource (clients/attach/overlays/graph.ts) and never imports this
|
|
26
|
-
// file, while the one live consumer left — crtrd's `GET /v1/nodes?under=` via
|
|
27
|
-
// `subtreeIds` — is a daemon that runs for HOURS between restarts.
|
|
28
|
-
//
|
|
29
|
-
// A process-lifetime memo there is not "at worst one frame stale", it is
|
|
30
|
-
// permanent: the first `?under=X` request that lands before X has spawned any
|
|
31
|
-
// children pinned `[]` under X and every later request returned it. Correctness
|
|
32
|
-
// on the daemon outranks a render amortization no caller asks for, so each read
|
|
33
|
-
// goes straight to the canvas db. The only frame cache still in play is
|
|
34
|
-
// nav-render's telemetry memo, whose TUI callers clear it themselves via
|
|
35
|
-
// `beginFrameTelem()`.
|
|
36
|
-
/** subscriptionsOf (a node's reports); an unreadable row reads as no edges. */
|
|
37
|
-
function subsOf(id) {
|
|
38
|
-
try {
|
|
39
|
-
return subscriptionsOf(id);
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
return [];
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/** subscribersOf (a node's managers); an unreadable row reads as no edges. */
|
|
46
|
-
function mgrsOf(id) {
|
|
47
|
-
try {
|
|
48
|
-
return subscribersOf(id);
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return [];
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
// Attachment — is a human currently WATCHING a node? A separate axis from
|
|
55
|
-
// running (status 'active' = the engine is live on its detached broker, watched
|
|
56
|
-
// or not). Two signals:
|
|
57
|
-
// viewer pane — a `focuses` row points at the node (one cheap sqlite read per
|
|
58
|
-
// render pass; pane-existence alone is NOT the signal).
|
|
59
|
-
// broker — the broker persists its helloed-viewer count (tmux panes AND
|
|
60
|
-
// web tabs) to job/attach.json on every viewer change
|
|
61
|
-
// (src/core/runtime/broker.ts). Trusted only while the node is
|
|
62
|
-
// 'active': a broker crash can leave a stale file.
|
|
63
|
-
// Graph queries (dependency-free, straight off the canvas db)
|
|
64
|
-
/** First manager (by created) — the UP step for the ancestry spine. */
|
|
65
|
-
export function managerOf(id) {
|
|
66
|
-
return mgrsOf(id)[0]?.node_id;
|
|
67
|
-
}
|
|
68
|
-
/** A kind:'human' node is a control-plane ASK (a page on the human's
|
|
69
|
-
* screen), NOT a pi conversation — it has no session, so focusing/reviving it
|
|
70
|
-
* boots a confused blank "you have been revived" pi. Its pending-ask signal
|
|
71
|
-
* already rides the ⚑ badge on the ASKING node (attention.ts follows the
|
|
72
|
-
* bridge node's parent relation), so the row carries no signal of its
|
|
73
|
-
* own. Drop it from every navigable list (the tree, BASE reports, child counts,
|
|
74
|
-
* subtree expansion) so it can never be selected. */
|
|
75
|
-
export function isHumanAsk(id) {
|
|
76
|
-
return getNode(id)?.kind === 'human';
|
|
77
|
-
}
|
|
78
|
-
/** A node's direct children that are navigable conversations — human-ask nodes
|
|
79
|
-
* dropped. The one place the nav chrome enumerates children. */
|
|
80
|
-
export function convoChildIds(id) {
|
|
81
|
-
return subsOf(id).map((s) => s.node_id).filter((cid) => !isHumanAsk(cid));
|
|
82
|
-
}
|
|
83
|
-
/** Live reports (active|idle) of a node — the DOWN set in BASE. */
|
|
84
|
-
export function liveReports(id) {
|
|
85
|
-
return convoChildIds(id).filter((cid) => {
|
|
86
|
-
const st = getNode(cid)?.status;
|
|
87
|
-
return st === 'active' || st === 'idle';
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
/** Direct navigable children — used for the ⤳ badge (human-ask nodes excluded,
|
|
91
|
-
* so the count matches what the tree actually shows). */
|
|
92
|
-
export function childCount(id) {
|
|
93
|
-
return convoChildIds(id).length;
|
|
94
|
-
}
|
|
95
|
-
/** Climb first-manager edges from `self` to the ancestry root (cycle-guarded). */
|
|
96
|
-
export function climbRoot(self) {
|
|
97
|
-
let cur = self;
|
|
98
|
-
const seen = new Set([cur]);
|
|
99
|
-
for (;;) {
|
|
100
|
-
const mgr = managerOf(cur);
|
|
101
|
-
if (mgr === undefined || seen.has(mgr))
|
|
102
|
-
break;
|
|
103
|
-
seen.add(mgr);
|
|
104
|
-
cur = mgr;
|
|
105
|
-
}
|
|
106
|
-
return cur;
|
|
107
|
-
}
|
|
108
|
-
/** Space-joined ids of a node's subtree (cursor-relative {subtree} var). */
|
|
109
|
-
export function subtreeIds(root) {
|
|
110
|
-
const out = [];
|
|
111
|
-
const seen = new Set([root]);
|
|
112
|
-
const q = convoChildIds(root);
|
|
113
|
-
while (q.length > 0) {
|
|
114
|
-
const id = q.shift();
|
|
115
|
-
if (seen.has(id))
|
|
116
|
-
continue;
|
|
117
|
-
seen.add(id);
|
|
118
|
-
out.push(id);
|
|
119
|
-
for (const cid of convoChildIds(id))
|
|
120
|
-
if (!seen.has(cid))
|
|
121
|
-
q.push(cid);
|
|
122
|
-
}
|
|
123
|
-
return out;
|
|
124
|
-
}
|
|
125
|
-
// Shared cell builders
|
|
126
|
-
/** ⤳M direct-children badge — the single child-count signal, shown on any row
|
|
127
|
-
* with navigable children (folded or not). In GRAPH the ▸ caret separately marks
|
|
128
|
-
* a collapsed row, so this stays a pure count and never doubles as a fold badge. */
|
|
129
|
-
export function childBadge(node) {
|
|
130
|
-
if (node === null)
|
|
131
|
-
return '';
|
|
132
|
-
const m = childCount(node.node_id);
|
|
133
|
-
return m > 0 ? ` ${DIM}⤳${m}${RESET}` : '';
|
|
134
|
-
}
|
|
135
|
-
/** Direct children, live-first — the sibling order used both when flattening
|
|
136
|
-
* the tree and when stepping into a subtree (`l`). Array.sort is stable, so
|
|
137
|
-
* equal-status siblings keep their creation order. */
|
|
138
|
-
export function sortedChildIds(id) {
|
|
139
|
-
return convoChildIds(id).sort((a, b) => statusRank(getNode(a)?.status) - statusRank(getNode(b)?.status));
|
|
140
|
-
}
|
|
141
|
-
// GRAPH model — flatten the local graph fold-aware. Rebuilt every render (cheap
|
|
142
|
-
// sqlite reads) so a finished child / new spawn shows live; the manual fold
|
|
143
|
-
// overrides and the cursor id are the only persisted state.
|
|
144
|
-
export function computeSubtreeActivity(root, self) {
|
|
145
|
-
const expand = new Set();
|
|
146
|
-
const activeBelow = new Map();
|
|
147
|
-
const seen = new Set();
|
|
148
|
-
// Returns the count of active nodes in subtree(id) INCLUDING id, and whether
|
|
149
|
-
// that subtree is worth revealing (holds an active node or self).
|
|
150
|
-
const visit = (id) => {
|
|
151
|
-
const selfActive = getNode(id)?.status === 'active';
|
|
152
|
-
if (seen.has(id))
|
|
153
|
-
return { active: selfActive ? 1 : 0, reveal: selfActive || id === self };
|
|
154
|
-
seen.add(id);
|
|
155
|
-
let below = 0;
|
|
156
|
-
let childReveal = false;
|
|
157
|
-
for (const c of convoChildIds(id)) {
|
|
158
|
-
const r = visit(c);
|
|
159
|
-
below += r.active;
|
|
160
|
-
if (r.reveal)
|
|
161
|
-
childReveal = true;
|
|
162
|
-
}
|
|
163
|
-
activeBelow.set(id, below);
|
|
164
|
-
if (childReveal)
|
|
165
|
-
expand.add(id); // a descendant is worth revealing → unfold id
|
|
166
|
-
return { active: below + (selfActive ? 1 : 0), reveal: childReveal || selfActive || id === self };
|
|
167
|
-
};
|
|
168
|
-
visit(root);
|
|
169
|
-
return { expand, activeBelow };
|
|
170
|
-
}
|
|
171
|
-
/** Fold policy alone — thin wrapper over computeSubtreeActivity for the keypress
|
|
172
|
-
* path (buildGraphModel without a precomputed set). The render path computes the
|
|
173
|
-
* activity once and threads `expand` in, so it never recomputes here. */
|
|
174
|
-
export function computeDefaultExpanded(root, self) {
|
|
175
|
-
return computeSubtreeActivity(root, self).expand;
|
|
176
|
-
}
|
|
177
|
-
export function buildGraphModel(self, folds, expand) {
|
|
178
|
-
const rootId = climbRoot(self);
|
|
179
|
-
const defaultExpanded = expand ?? computeDefaultExpanded(rootId, self);
|
|
180
|
-
// userExpanded / userCollapsed override the auto policy; absent → policy decides.
|
|
181
|
-
const isFolded = (id) => folds.userExpanded.has(id) ? false : folds.userCollapsed.has(id) ? true : !defaultExpanded.has(id);
|
|
182
|
-
const rows = [];
|
|
183
|
-
const visited = new Set();
|
|
184
|
-
const walk = (id, prefix, isRoot, isLast) => {
|
|
185
|
-
if (visited.has(id)) {
|
|
186
|
-
const connector = isRoot ? '' : isLast ? '└─ ' : '├─ ';
|
|
187
|
-
rows.push({ id, hasKids: false, isSelf: id === self, branch: prefix + connector, cycle: true, collapsed: false });
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
visited.add(id);
|
|
191
|
-
const kids = sortedChildIds(id);
|
|
192
|
-
const folded = isFolded(id);
|
|
193
|
-
const connector = isRoot ? '' : isLast ? '└─ ' : '├─ ';
|
|
194
|
-
rows.push({ id, hasKids: kids.length > 0, isSelf: id === self, branch: prefix + connector, cycle: false, collapsed: folded });
|
|
195
|
-
if (folded)
|
|
196
|
-
return; // folded — don't descend
|
|
197
|
-
const childPrefix = isRoot ? '' : prefix + (isLast ? ' ' : '│ ');
|
|
198
|
-
for (let i = 0; i < kids.length; i++)
|
|
199
|
-
walk(kids[i], childPrefix, false, i === kids.length - 1);
|
|
200
|
-
};
|
|
201
|
-
walk(rootId, '', true, true);
|
|
202
|
-
return rows;
|
|
203
|
-
}
|
|
204
|
-
/** Render one GRAPH row. CURSOR (selected) → reverse-video bar; an ATTACHED
|
|
205
|
-
* (human-watched) node → a coloured background bar; SELF → bold name. The
|
|
206
|
-
* cursor outranks the attached tint when both land on the same row. The
|
|
207
|
-
* overlay-aware glyph alone carries the live signal (status / ⟳ / ⚠). */
|
|
208
|
-
export function renderGraphRow(r, isCursor, focused, activeBelow, asks) {
|
|
209
|
-
const wrap = (line, attached) => isCursor ? fillBar(line, fillWidth(), REVERSE)
|
|
210
|
-
: attached ? fillBar(line, fillWidth(), BG_ATTACHED)
|
|
211
|
-
: truncate(line);
|
|
212
|
-
if (r.cycle) {
|
|
213
|
-
const line = `${r.branch} ${DIM}↺ ${shortId(r.id)}${RESET}`;
|
|
214
|
-
return wrap(line, false);
|
|
215
|
-
}
|
|
216
|
-
const node = getNode(r.id);
|
|
217
|
-
const dot = nodeGlyph(node);
|
|
218
|
-
const rawName = navLabel(node, r.id);
|
|
219
|
-
const name = r.isSelf ? `${BOLD}${rawName}${RESET}` : rawName;
|
|
220
|
-
const kind = `${DIM}${node?.kind ?? ''}${RESET}`;
|
|
221
|
-
const tokens = `${DIM}${tokensCell(r.id)}${RESET}`;
|
|
222
|
-
// ▸ marks an expandable (collapsed-with-kids) row. The cursor row gets no
|
|
223
|
-
// caret — its reverse-video bar already distinguishes it — so the triangle
|
|
224
|
-
// reads purely as "this unfolds".
|
|
225
|
-
const expandable = r.hasKids && r.collapsed;
|
|
226
|
-
const caret = !isCursor && expandable ? `${DIM}▸${RESET} ` : ' ';
|
|
227
|
-
const fault = node?.fault ?? null;
|
|
228
|
-
const faultSuffix = fault !== null ? ` · ${faultSummary(fault)}` : '';
|
|
229
|
-
const line = `${r.branch}${caret}${dot} ${name} ${kind} ${tokens}${cycleBadge(node)}${childBadge(node)}${liveBelowBadge(node, activeBelow)}${askBadge(r.id, asks)}${activityCell(r.id, node)}${faultSuffix}`;
|
|
230
|
-
return wrap(line, isAttached(r.id, node, focused));
|
|
231
|
-
}
|
|
1
|
+
var R=Object.defineProperty;var o=(t,e)=>R(t,"name",{value:e,configurable:!0});import{getNode as $,subscribersOf as y,subscriptionsOf as I}from"./index.js";import{faultSummary as C}from"./status-glyph.js";import{statusRank as S}from"./node-order.js";import{nodeGlyph as T,navLabel as _,shortId as G,tokensCell as O,activityCell as D,cycleBadge as W,askBadge as L,liveBelowBadge as M,truncate as N,fillBar as w,fillWidth as k,isAttached as H,BOLD as K,DIM as g,RESET as m,REVERSE as P,BG_ATTACHED as V}from"./nav-render.js";import{PI_MAX_WIDGET_LINES as dt,VIEWPORT_FALLBACK_ROWS as ft,ESC as ht,RESET as pt,BOLD as $t,DIM as mt,REVERSE as vt,BG_ATTACHED as Et,GREEN as xt,RED as gt,YELLOW as Bt,CYAN as bt,GRAY as St,nodeGlyph as wt,visibleWidth as kt,truncate as At,fillWidth as Rt,fillBar as yt,readTelemetry as It,fmtTokens as Ct,tokensCell as Tt,activityCell as _t,cycleBadge as Gt,navLabel as Ot,shortId as Dt,askBadge as Wt,liveBelowBadge as Lt,isAttached as Mt,hasBrokerViewers as Nt,fetchAsksMap as Ht,graphWidgetBudget as Kt,GRAPH_HINT as Pt}from"./nav-render.js";function Y(t){try{return I(t)}catch{return[]}}o(Y,"subsOf");function F(t){try{return y(t)}catch{return[]}}o(F,"mgrsOf");function q(t){return F(t)[0]?.node_id}o(q,"managerOf");function X(t){return $(t)?.kind==="human"}o(X,"isHumanAsk");function v(t){return Y(t).map(e=>e.node_id).filter(e=>!X(e))}o(v,"convoChildIds");function rt(t){return v(t).filter(e=>{const s=$(e)?.status;return s==="active"||s==="idle"})}o(rt,"liveReports");function j(t){return v(t).length}o(j,"childCount");function z(t){let e=t;const s=new Set([e]);for(;;){const c=q(e);if(c===void 0||s.has(c))break;s.add(c),e=c}return e}o(z,"climbRoot");function ct(t){const e=[],s=new Set([t]),c=v(t);for(;c.length>0;){const l=c.shift();if(!s.has(l)){s.add(l),e.push(l);for(const i of v(l))s.has(i)||c.push(i)}}return e}o(ct,"subtreeIds");function J(t){if(t===null)return"";const e=j(t.node_id);return e>0?` ${g}\u2933${e}${m}`:""}o(J,"childBadge");function Q(t){return v(t).sort((e,s)=>S($(e)?.status)-S($(s)?.status))}o(Q,"sortedChildIds");function U(t,e){const s=new Set,c=new Map,l=new Set,i=o(n=>{const u=$(n)?.status==="active";if(l.has(n))return{active:u?1:0,reveal:u||n===e};l.add(n);let d=0,r=!1;for(const h of v(n)){const f=i(h);d+=f.active,f.reveal&&(r=!0)}return c.set(n,d),r&&s.add(n),{active:d+(u?1:0),reveal:r||u||n===e}},"visit");return i(t),{expand:s,activeBelow:c}}o(U,"computeSubtreeActivity");function Z(t,e){return U(t,e).expand}o(Z,"computeDefaultExpanded");function at(t,e,s){const c=z(t),l=s??Z(c,t),i=o(r=>e.userExpanded.has(r)?!1:e.userCollapsed.has(r)?!0:!l.has(r),"isFolded"),n=[],u=new Set,d=o((r,h,f,E)=>{if(u.has(r)){const a=f?"":E?"\u2514\u2500 ":"\u251C\u2500 ";n.push({id:r,hasKids:!1,isSelf:r===t,branch:h+a,cycle:!0,collapsed:!1});return}u.add(r);const p=Q(r),x=i(r),B=f?"":E?"\u2514\u2500 ":"\u251C\u2500 ";if(n.push({id:r,hasKids:p.length>0,isSelf:r===t,branch:h+B,cycle:!1,collapsed:x}),x)return;const b=f?"":h+(E?" ":"\u2502 ");for(let a=0;a<p.length;a++)d(p[a],b,!1,a===p.length-1)},"walk");return d(c,"",!0,!0),n}o(at,"buildGraphModel");function lt(t,e,s,c,l){const i=o((a,A)=>e?w(a,k(),P):A?w(a,k(),V):N(a),"wrap");if(t.cycle){const a=`${t.branch} ${g}\u21BA ${G(t.id)}${m}`;return i(a,!1)}const n=$(t.id),u=T(n),d=_(n,t.id),r=t.isSelf?`${K}${d}${m}`:d,h=`${g}${n?.kind??""}${m}`,f=`${g}${O(t.id)}${m}`,E=t.hasKids&&t.collapsed,p=!e&&E?`${g}\u25B8${m} `:" ",x=n?.fault??null,B=x!==null?` \xB7 ${C(x)}`:"",b=`${t.branch}${p}${u} ${r} ${h} ${f}${W(n)}${J(n)}${M(n,c)}${L(t.id,l)}${D(t.id,n)}${B}`;return i(b,H(t.id,n,s))}o(lt,"renderGraphRow");export{Et as BG_ATTACHED,$t as BOLD,bt as CYAN,mt as DIM,ht as ESC,Pt as GRAPH_HINT,St as GRAY,xt as GREEN,dt as PI_MAX_WIDGET_LINES,gt as RED,pt as RESET,vt as REVERSE,ft as VIEWPORT_FALLBACK_ROWS,Bt as YELLOW,_t as activityCell,Wt as askBadge,at as buildGraphModel,J as childBadge,j as childCount,z as climbRoot,Z as computeDefaultExpanded,U as computeSubtreeActivity,v as convoChildIds,Gt as cycleBadge,Ht as fetchAsksMap,yt as fillBar,Rt as fillWidth,Ct as fmtTokens,Kt as graphWidgetBudget,Nt as hasBrokerViewers,Mt as isAttached,X as isHumanAsk,Lt as liveBelowBadge,rt as liveReports,q as managerOf,Ot as navLabel,wt as nodeGlyph,It as readTelemetry,lt as renderGraphRow,Dt as shortId,Q as sortedChildIds,ct as subtreeIds,Tt as tokensCell,At as truncate,kt as visibleWidth};
|
|
@@ -1,260 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//
|
|
3
|
-
// Everything here is canvas-db-free: it reads node telemetry (job/telemetry.json,
|
|
4
|
-
// attach.json — pure `jobDir` fs reads) plus the fault/streaming fields already
|
|
5
|
-
// projected onto the node row, and produces ANSI-styled strings. No `getNode`/`subscriptionsOf`/`listFocuses` — the
|
|
6
|
-
// graph-walking half lives in nav-model.ts (which re-exports these helpers for its
|
|
7
|
-
// own callers). This split lets the attach viewer's pure chrome pull render helpers
|
|
8
|
-
// without dragging the canvas state-store into its bundle.
|
|
9
|
-
import { execFileSync } from 'node:child_process';
|
|
10
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
11
|
-
import { join } from 'node:path';
|
|
12
|
-
import { jobDir } from './paths.js';
|
|
13
|
-
import { isFrozenRow, resolveNodeVisual } from './status-glyph.js';
|
|
14
|
-
// Tuning constants
|
|
15
|
-
/** pi's InteractiveMode.MAX_WIDGET_LINES — the hard cap on lines in a string
|
|
16
|
-
* array widget; anything beyond it pi truncates with its own "... (widget
|
|
17
|
-
* truncated)". Our GRAPH viewport stays at/under this and scrolls internally. */
|
|
18
|
-
export const PI_MAX_WIDGET_LINES = 10;
|
|
19
|
-
export const VIEWPORT_FALLBACK_ROWS = 30;
|
|
20
|
-
// ANSI styling. pi renders embedded escapes in widget lines and measures width
|
|
21
|
-
// ANSI-aware, so raw escapes are safe and need no pi-tui dependency. The cursor
|
|
22
|
-
// (selected row) uses a theme-agnostic ATTRIBUTE (reverse), so it reads under
|
|
23
|
-
// NO_COLOR; the attached-row tint is a background COLOUR, while the overlay-
|
|
24
|
-
// aware glyph (●/○/✓/✗/⟳/⚠) carries the live signal independently, even where
|
|
25
|
-
// colour is stripped.
|
|
26
|
-
export const ESC = '\x1b[';
|
|
27
|
-
export const RESET = `${ESC}0m`;
|
|
28
|
-
export const BOLD = `${ESC}1m`;
|
|
29
|
-
export const DIM = `${ESC}2m`;
|
|
30
|
-
export const REVERSE = `${ESC}7m`;
|
|
31
|
-
/** Dark-green background bar marking an ATTACHED node (a human is currently
|
|
32
|
-
* watching it) — distinct from the cursor's reverse-video bar; chosen so
|
|
33
|
-
* default-fg text stays readable. */
|
|
34
|
-
export const BG_ATTACHED = `${ESC}48;5;22m`;
|
|
35
|
-
export const GREEN = `${ESC}32m`;
|
|
36
|
-
export const RED = `${ESC}31m`;
|
|
37
|
-
export const YELLOW = `${ESC}33m`;
|
|
38
|
-
export const CYAN = `${ESC}36m`;
|
|
39
|
-
export const GRAY = `${ESC}90m`;
|
|
40
|
-
function streamingFor(node) {
|
|
41
|
-
if (node.status !== 'active' && node.status !== 'idle')
|
|
42
|
-
return false;
|
|
43
|
-
// The projected field is the live execution's open turn AND-ed with broker-pid
|
|
44
|
-
// liveness, so a witness left by a crashed pi reads false.
|
|
45
|
-
return node.streaming === true;
|
|
46
|
-
}
|
|
47
|
-
/** Overlay-aware glyph for a node: hanging ⚠ outranks streaming ⟳, which
|
|
48
|
-
* outranks the base status glyph. Every input is a projected row field — the
|
|
49
|
-
* owning daemon computed `fault`/`streaming` — so this holds for a remote node
|
|
50
|
-
* too, with no local read keyed on a node id that may collide. */
|
|
51
|
-
export function nodeGlyph(node) {
|
|
52
|
-
if (node === null)
|
|
53
|
-
return '?';
|
|
54
|
-
const v = resolveNodeVisual(node.status, {
|
|
55
|
-
streaming: streamingFor(node),
|
|
56
|
-
frozen: isFrozenRow(node),
|
|
57
|
-
hanging: node.fault ?? null,
|
|
58
|
-
});
|
|
59
|
-
return `${ESC}${v.color}m${v.glyph}${RESET}`;
|
|
60
|
-
}
|
|
61
|
-
const ANSI_RE = /\x1b\[[0-9;]*m/g;
|
|
62
|
-
/** Drop every SGR sequence, keeping the visible text. The selection bar uses
|
|
63
|
-
* this: reverse-video INVERTS a coloured cell into a coloured block, so a row
|
|
64
|
-
* built from tinted spans highlights as a patchwork of background swatches
|
|
65
|
-
* instead of one bar. Stripping colour first leaves a single clean bar — the
|
|
66
|
-
* glyphs (●/○/✓/✗/⚙/◷) still carry the signal, exactly as under NO_COLOR. */
|
|
67
|
-
export function stripSgr(s) {
|
|
68
|
-
return s.replace(ANSI_RE, '');
|
|
69
|
-
}
|
|
70
|
-
/** Visible width, ignoring ANSI escapes. */
|
|
71
|
-
export function visibleWidth(s) {
|
|
72
|
-
return s.replace(ANSI_RE, '').length;
|
|
73
|
-
}
|
|
74
|
-
/** Truncate to `max` VISIBLE columns: escape sequences are copied through
|
|
75
|
-
* verbatim (so a cut never lands mid-escape) and the result always ends in
|
|
76
|
-
* RESET, so a clipped style can't bleed into the editor below. */
|
|
77
|
-
export function truncate(s, max = fillWidth()) {
|
|
78
|
-
if (visibleWidth(s) <= max)
|
|
79
|
-
return s;
|
|
80
|
-
let out = '';
|
|
81
|
-
let w = 0;
|
|
82
|
-
let i = 0;
|
|
83
|
-
while (i < s.length && w < max - 1) {
|
|
84
|
-
if (s[i] === '\x1b') {
|
|
85
|
-
const m = /^\x1b\[[0-9;]*m/.exec(s.slice(i));
|
|
86
|
-
if (m) {
|
|
87
|
-
out += m[0];
|
|
88
|
-
i += m[0].length;
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
out += s[i];
|
|
93
|
-
w++;
|
|
94
|
-
i++;
|
|
95
|
-
}
|
|
96
|
-
return `${out}…${RESET}`;
|
|
97
|
-
}
|
|
98
|
-
/** Visible columns available to ONE widget line — the cap for every line we
|
|
99
|
-
* emit, and the width a full-width reverse-video SELF bar fills to.
|
|
100
|
-
*
|
|
101
|
-
* pi does NOT clip widget lines; it WRAPS them. Each string line is wrapped in
|
|
102
|
-
* a `Text(paddingX = 1)` inside a full-terminal-width container, so the usable
|
|
103
|
-
* content width is `columns - 2` (a 1-col margin on each side). A line wider
|
|
104
|
-
* than that wraps, and the overflow spills onto a second row as a stray
|
|
105
|
-
* reverse-video block (the bug this guards against). Clamp to `columns - 2`. */
|
|
106
|
-
export function fillWidth() {
|
|
107
|
-
return Math.max(20, Math.min((process.stdout.columns ?? 80) - 2, 180));
|
|
108
|
-
}
|
|
109
|
-
/** Wrap `content` in a full-width background bar opened by `open` (REVERSE for
|
|
110
|
-
* the cursor, BG_ATTACHED for a human-watched node). `open` is re-asserted after every
|
|
111
|
-
* embedded RESET so a coloured cell (the status dot) can't punch a hole in the
|
|
112
|
-
* bar; the visible width is padded out to `width`; the line closes with a real
|
|
113
|
-
* RESET so the style never bleeds into the editor below. */
|
|
114
|
-
export function fillBar(content, width, open) {
|
|
115
|
-
const clipped = truncate(content, width);
|
|
116
|
-
const reasserted = clipped.replace(/\x1b\[0m/g, `${RESET}${open}`);
|
|
117
|
-
const pad = Math.max(0, width - visibleWidth(clipped));
|
|
118
|
-
return `${open}${reasserted}${' '.repeat(pad)}${RESET}`;
|
|
119
|
-
}
|
|
120
|
-
// Per-frame telemetry cache. Its callers are TUI render passes ONLY (the GRAPH
|
|
121
|
-
// overlay and the canvas panels), each of which calls beginFrameTelem() at the
|
|
122
|
-
// top of the pass, so token/activity cells read fresh once per frame instead of
|
|
123
|
-
// once per row and a stale entry can at worst be one frame old. Never memoize a
|
|
124
|
-
// canvas read for a caller that is not a render pass: crtrd lives for hours, and
|
|
125
|
-
// a memo it never clears is permanent, not per-frame.
|
|
126
|
-
const frameTelem = new Map();
|
|
127
|
-
/** Clear the per-frame telemetry cache. Every render pass calls this first, so
|
|
128
|
-
* one keystroke re-reads each node's telemetry exactly once. */
|
|
129
|
-
export function beginFrameTelem() {
|
|
130
|
-
frameTelem.clear();
|
|
131
|
-
}
|
|
132
|
-
export function readTelemetry(nodeId) {
|
|
133
|
-
const hit = frameTelem.get(nodeId);
|
|
134
|
-
if (hit !== undefined)
|
|
135
|
-
return hit;
|
|
136
|
-
let v;
|
|
137
|
-
try {
|
|
138
|
-
const p = join(jobDir(nodeId), 'telemetry.json');
|
|
139
|
-
v = existsSync(p) ? JSON.parse(readFileSync(p, 'utf8')) : {};
|
|
140
|
-
}
|
|
141
|
-
catch {
|
|
142
|
-
v = {};
|
|
143
|
-
}
|
|
144
|
-
frameTelem.set(nodeId, v);
|
|
145
|
-
return v;
|
|
146
|
-
}
|
|
147
|
-
export function fmtTokens(n) {
|
|
148
|
-
return n < 1_000 ? `${n}` : `${Math.round(n / 1_000)}k`;
|
|
149
|
-
}
|
|
150
|
-
/** The context-window cell — live window fill rounded to the nearest 1k (the same
|
|
151
|
-
* figure pi's footer shows), NOT a per-turn token delta. `remote` skips the local
|
|
152
|
-
* `telemetry.json` read entirely and reports 0 (a remote node id may collide
|
|
153
|
-
* with a local one). */
|
|
154
|
-
export function tokensCell(id, remote = false) {
|
|
155
|
-
return fmtTokens(remote ? 0 : (readTelemetry(id).context_tokens ?? 0));
|
|
156
|
-
}
|
|
157
|
-
/** Dimmed live "what is it doing" cue for an ACTIVE node — the last tool it ran.
|
|
158
|
-
* Empty for non-active rows (stale once a node parks) and when none is recorded.
|
|
159
|
-
* `remote` skips the local `telemetry.json` read entirely and reports empty. */
|
|
160
|
-
export function activityCell(id, node, remote = false) {
|
|
161
|
-
if (remote)
|
|
162
|
-
return '';
|
|
163
|
-
if (node?.status !== 'active')
|
|
164
|
-
return '';
|
|
165
|
-
const a = (readTelemetry(id).last_activity ?? '').trim();
|
|
166
|
-
return a === '' ? '' : ` ${DIM}· ${a}${RESET}`;
|
|
167
|
-
}
|
|
168
|
-
/** Revive-count badge (meta.cycles). Hidden on the first cycle (0) to cut noise. */
|
|
169
|
-
export function cycleBadge(node) {
|
|
170
|
-
const c = node?.cycles ?? 0;
|
|
171
|
-
return c > 0 ? ` ${DIM}⟳${c}${RESET}` : '';
|
|
172
|
-
}
|
|
173
|
-
/** Short on-screen label: the explicit handle when set, else the pi-generated
|
|
174
|
-
* description, else the bare name. fullName joins BOTH (`handle description`);
|
|
175
|
-
* the nav chrome shows just the first so rows stay compact. */
|
|
176
|
-
export function navLabel(node, id) {
|
|
177
|
-
if (node === null)
|
|
178
|
-
return shortId(id);
|
|
179
|
-
const handle = node.name && node.name !== node.kind ? node.name : '';
|
|
180
|
-
if (handle !== '')
|
|
181
|
-
return handle;
|
|
182
|
-
const desc = (node.description ?? '').trim();
|
|
183
|
-
return desc !== '' ? desc : node.name;
|
|
184
|
-
}
|
|
185
|
-
export function shortId(id) {
|
|
186
|
-
return id.slice(0, 8);
|
|
187
|
-
}
|
|
188
|
-
/** True when a human is watching `id` right now via the broker viewer count
|
|
189
|
-
* (attach.json). The tmux-focus axis (a `focuses` row) is a canvas-db read and
|
|
190
|
-
* stays in nav-model's `isAttached`, which ORs this signal with the focus set.
|
|
191
|
-
* `remote` skips the local `attach.json` read entirely and reports false (a
|
|
192
|
-
* remote node id may collide with a local one). */
|
|
193
|
-
export function hasBrokerViewers(id, node, remote = false) {
|
|
194
|
-
if (remote)
|
|
195
|
-
return false;
|
|
196
|
-
if (node?.status !== 'active')
|
|
197
|
-
return false; // stale attach.json from a crash
|
|
198
|
-
try {
|
|
199
|
-
const p = join(jobDir(id), 'attach.json');
|
|
200
|
-
if (!existsSync(p))
|
|
201
|
-
return false;
|
|
202
|
-
const rec = JSON.parse(readFileSync(p, 'utf8'));
|
|
203
|
-
return typeof rec.viewers === 'number' && rec.viewers > 0;
|
|
204
|
-
}
|
|
205
|
-
catch {
|
|
206
|
-
return false;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
/** True when a human is watching `id` right now (tmux focus or broker viewer).
|
|
210
|
-
* `focused` is the tmux-focus set (a canvas-db read the caller supplies). The
|
|
211
|
-
* broker-viewer half is a pure `attach.json` read. `remote` skips the local read
|
|
212
|
-
* entirely and reports false (a remote node id may collide with a local one). */
|
|
213
|
-
export function isAttached(id, node, focused, remote = false) {
|
|
214
|
-
if (remote)
|
|
215
|
-
return false;
|
|
216
|
-
if (focused.has(id))
|
|
217
|
-
return true;
|
|
218
|
-
return hasBrokerViewers(id, node, remote);
|
|
219
|
-
}
|
|
220
|
-
/** ⚑K pending-asks badge for a node, read from the supplied per-node ask map. */
|
|
221
|
-
export function askBadge(id, asks) {
|
|
222
|
-
const k = asks[id] ?? 0;
|
|
223
|
-
return k > 0 ? ` ${YELLOW}⚑${k}${RESET}` : '';
|
|
224
|
-
}
|
|
225
|
-
/** "Live work below" badge — green ⇣N when this node is NOT itself active but has
|
|
226
|
-
* N active descendants. The one signal that an idle/parked node isn't dead: real
|
|
227
|
-
* work is still running beneath it. Count comes from the single subtree-activity
|
|
228
|
-
* pass (no per-row walk). Suppressed on active rows (their own ● already says so). */
|
|
229
|
-
export function liveBelowBadge(node, activeBelow) {
|
|
230
|
-
if (node === null || node.status === 'active')
|
|
231
|
-
return '';
|
|
232
|
-
const n = activeBelow.get(node.node_id) ?? 0;
|
|
233
|
-
return n > 0 ? ` ${GREEN}⇣${n}${RESET}` : '';
|
|
234
|
-
}
|
|
235
|
-
// Per-node ask counts — ONE shell-out per poll. `crtr canvas attention map`
|
|
236
|
-
// buckets a whole sub-DAG's pending asks by node in a single process, so the
|
|
237
|
-
// timer stays cheap (< 2 s) regardless of how many nodes are visible. --json
|
|
238
|
-
// gives a parseable {counts} blob (the default render is XML chrome).
|
|
239
|
-
export function fetchAsksMap(rootId) {
|
|
240
|
-
try {
|
|
241
|
-
const raw = execFileSync('crtr', ['canvas', 'attention', 'map', '--view', rootId, '--json'], {
|
|
242
|
-
timeout: 2_500,
|
|
243
|
-
encoding: 'utf8',
|
|
244
|
-
});
|
|
245
|
-
const parsed = JSON.parse(raw.trim());
|
|
246
|
-
return parsed.counts ?? {};
|
|
247
|
-
}
|
|
248
|
-
catch {
|
|
249
|
-
return {};
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
/** Total lines the GRAPH widget may emit. pi hard-caps extension widgets at
|
|
253
|
-
* MAX_WIDGET_LINES — anything past that pi truncates itself, eating our own
|
|
254
|
-
* scroll chrome — so never exceed it (and shrink on a very short terminal).
|
|
255
|
-
* The viewport scrolls WITHIN this cap as the cursor moves. */
|
|
256
|
-
export function graphWidgetBudget() {
|
|
257
|
-
const rows = process.stdout.rows ?? VIEWPORT_FALLBACK_ROWS;
|
|
258
|
-
return Math.max(4, Math.min(PI_MAX_WIDGET_LINES, rows - 4));
|
|
259
|
-
}
|
|
260
|
-
export const GRAPH_HINT = `${DIM}jk move · hl fold · ↵ focus · e expand · x kill · m mgr · esc${RESET}`;
|
|
1
|
+
var v=Object.defineProperty;var n=(t,e)=>v(t,"name",{value:e,configurable:!0});import{execFileSync as y}from"node:child_process";import{existsSync as f,readFileSync as p}from"node:fs";import{join as m}from"node:path";import{jobDir as x}from"./paths.js";import{isFrozenRow as E,resolveNodeVisual as _}from"./status-glyph.js";const d=10,S=30,c="\x1B[",i=`${c}0m`,D=`${c}1m`,a=`${c}2m`,F=`${c}7m`,G=`${c}48;5;22m`,k=`${c}32m`,I=`${c}31m`,w=`${c}33m`,V=`${c}36m`,H=`${c}90m`;function A(t){return t.status!=="active"&&t.status!=="idle"?!1:t.streaming===!0}n(A,"streamingFor");function J(t){if(t===null)return"?";const e=_(t.status,{streaming:A(t),frozen:E(t),hanging:t.fault??null});return`${c}${e.color}m${e.glyph}${i}`}n(J,"nodeGlyph");const $=/\x1b\[[0-9;]*m/g;function P(t){return t.replace($,"")}n(P,"stripSgr");function h(t){return t.replace($,"").length}n(h,"visibleWidth");function R(t,e=b()){if(h(t)<=e)return t;let r="",o=0,s=0;for(;s<t.length&&o<e-1;){if(t[s]==="\x1B"){const u=/^\x1b\[[0-9;]*m/.exec(t.slice(s));if(u){r+=u[0],s+=u[0].length;continue}}r+=t[s],o++,s++}return`${r}\u2026${i}`}n(R,"truncate");function b(){return Math.max(20,Math.min((process.stdout.columns??80)-2,180))}n(b,"fillWidth");function Y(t,e,r){const o=R(t,e),s=o.replace(/\x1b\[0m/g,`${i}${r}`),u=Math.max(0,e-h(o));return`${r}${s}${" ".repeat(u)}${i}`}n(Y,"fillBar");const l=new Map;function z(){l.clear()}n(z,"beginFrameTelem");function g(t){const e=l.get(t);if(e!==void 0)return e;let r;try{const o=m(x(t),"telemetry.json");r=f(o)?JSON.parse(p(o,"utf8")):{}}catch{r={}}return l.set(t,r),r}n(g,"readTelemetry");function B(t){return t<1e3?`${t}`:`${Math.round(t/1e3)}k`}n(B,"fmtTokens");function K(t,e=!1){return B(e?0:g(t).context_tokens??0)}n(K,"tokensCell");function X(t,e,r=!1){if(r||e?.status!=="active")return"";const o=(g(t).last_activity??"").trim();return o===""?"":` ${a}\xB7 ${o}${i}`}n(X,"activityCell");function q(t){const e=t?.cycles??0;return e>0?` ${a}\u27F3${e}${i}`:""}n(q,"cycleBadge");function Q(t,e){if(t===null)return M(e);const r=t.name&&t.name!==t.kind?t.name:"";if(r!=="")return r;const o=(t.description??"").trim();return o!==""?o:t.name}n(Q,"navLabel");function M(t){return t.slice(0,8)}n(M,"shortId");function T(t,e,r=!1){if(r||e?.status!=="active")return!1;try{const o=m(x(t),"attach.json");if(!f(o))return!1;const s=JSON.parse(p(o,"utf8"));return typeof s.viewers=="number"&&s.viewers>0}catch{return!1}}n(T,"hasBrokerViewers");function U(t,e,r,o=!1){return o?!1:r.has(t)?!0:T(t,e,o)}n(U,"isAttached");function Z(t,e){const r=e[t]??0;return r>0?` ${w}\u2691${r}${i}`:""}n(Z,"askBadge");function tt(t,e){if(t===null||t.status==="active")return"";const r=e.get(t.node_id)??0;return r>0?` ${k}\u21E3${r}${i}`:""}n(tt,"liveBelowBadge");function et(t){try{const e=y("crtr",["canvas","attention","map","--view",t,"--json"],{timeout:2500,encoding:"utf8"});return JSON.parse(e.trim()).counts??{}}catch{return{}}}n(et,"fetchAsksMap");function rt(){const t=process.stdout.rows??S;return Math.max(4,Math.min(d,t-4))}n(rt,"graphWidgetBudget");const nt=`${a}jk move \xB7 hl fold \xB7 \u21B5 focus \xB7 e expand \xB7 x kill \xB7 m mgr \xB7 esc${i}`;export{G as BG_ATTACHED,D as BOLD,V as CYAN,a as DIM,c as ESC,nt as GRAPH_HINT,H as GRAY,k as GREEN,d as PI_MAX_WIDGET_LINES,I as RED,i as RESET,F as REVERSE,S as VIEWPORT_FALLBACK_ROWS,w as YELLOW,X as activityCell,Z as askBadge,z as beginFrameTelem,q as cycleBadge,et as fetchAsksMap,Y as fillBar,b as fillWidth,B as fmtTokens,rt as graphWidgetBudget,T as hasBrokerViewers,U as isAttached,tt as liveBelowBadge,Q as navLabel,J as nodeGlyph,g as readTelemetry,M as shortId,P as stripSgr,K as tokensCell,R as truncate,h as visibleWidth};
|
|
@@ -1,37 +1 @@
|
|
|
1
|
-
|
|
2
|
-
// canvas nodes. Pure (type-only imports) so every surface — the browser model,
|
|
3
|
-
// command leaves, renderers — can share one answer to "is this node live?" and
|
|
4
|
-
// "did this node finish?" without reaching the db.
|
|
5
|
-
/** Sort live work before terminal work; unknown statuses sort last. */
|
|
6
|
-
export function statusRank(status) {
|
|
7
|
-
switch (status) {
|
|
8
|
-
case 'active': return 0;
|
|
9
|
-
case 'idle': return 1;
|
|
10
|
-
case 'done': return 2;
|
|
11
|
-
case 'canceled': return 3;
|
|
12
|
-
case 'dead': return 4;
|
|
13
|
-
default: return 5;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
/** True when the node has a broker the daemon supervises — the statuses that
|
|
17
|
-
* mean "a live engine is (or should be) running right now". */
|
|
18
|
-
export function isLiveStatus(status) {
|
|
19
|
-
return status === 'active' || status === 'idle';
|
|
20
|
-
}
|
|
21
|
-
/** True when a node's work is FINISHED — a terminal one-shot worker, or any node
|
|
22
|
-
* that pushed a final report.
|
|
23
|
-
*
|
|
24
|
-
* This is deliberately NOT "is it running": a non-live status alone conflates two
|
|
25
|
-
* unrelated situations. Finished work is archive — opening it is inspection, and
|
|
26
|
-
* relaunching it puts a completed worker back to work (the stop-guard reprompts a
|
|
27
|
-
* terminal node that never pushed a final). A RESIDENT node with no final report
|
|
28
|
-
* is the opposite: its `done` is only `markCleanExitDone` recording a clean broker
|
|
29
|
-
* exit, which the stop-guard itself rules a legitimate stop (`reason: 'dormant'`),
|
|
30
|
-
* so it never finished anything and resuming it is simply reopening a conversation.
|
|
31
|
-
*
|
|
32
|
-
* `lifecycle` is optional because DashboardRow only carries it on the full browser
|
|
33
|
-
* snapshot; absent, this answers `true` (treat as finished), keeping the caller on
|
|
34
|
-
* the conservative inspect-don't-revive path. */
|
|
35
|
-
export function isFinishedWork(node) {
|
|
36
|
-
return node.lifecycle !== 'resident' || node.finalized;
|
|
37
|
-
}
|
|
1
|
+
var n=Object.defineProperty;var r=(e,t)=>n(e,"name",{value:t,configurable:!0});function c(e){switch(e){case"active":return 0;case"idle":return 1;case"done":return 2;case"canceled":return 3;case"dead":return 4;default:return 5}}r(c,"statusRank");function a(e){return e==="active"||e==="idle"}r(a,"isLiveStatus");function u(e){return e.lifecycle!=="resident"||e.finalized}r(u,"isFinishedWork");export{u as isFinishedWork,a as isLiveStatus,c as statusRank};
|
|
@@ -1,67 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// The recap itself is generated in the broker (`pi-extensions/canvas-recap.ts`)
|
|
4
|
-
// and painted above the editor as throwaway chrome. That widget lives in broker
|
|
5
|
-
// memory, so the moment a node goes dormant its briefing is gone — which is
|
|
6
|
-
// exactly when a developer scanning `crtr canvas browse` needs it most ("what was
|
|
7
|
-
// this one for, and where did it stop?"). Persisting the two lines the viewer
|
|
8
|
-
// already produced makes them readable without a broker and without a model call.
|
|
9
|
-
//
|
|
10
|
-
// Stored beside telemetry in `job/` because it is machine-generated runtime
|
|
11
|
-
// state, not a document the node authored: safe to delete, rebuilt on the node's
|
|
12
|
-
// next idle recap. `context/` stays the agent's own document space.
|
|
13
|
-
import { join } from 'node:path';
|
|
14
|
-
import { mkdirSync } from 'node:fs';
|
|
15
|
-
import { jobDir } from './paths.js';
|
|
16
|
-
import { readJsonIfExists, atomicWriteJson } from '../fs-utils.js';
|
|
17
|
-
function recapPath(nodeId) {
|
|
18
|
-
return join(jobDir(nodeId), 'recap.json');
|
|
19
|
-
}
|
|
20
|
-
/** Strip one leading `Goal:` / `State:` label from a briefing line. */
|
|
21
|
-
function stripLabel(line) {
|
|
22
|
-
return line.replace(/^\s*(goal|state)\s*:\s*/i, '').trim();
|
|
23
|
-
}
|
|
24
|
-
/** Split the model's two-line briefing into its labelled halves. Returns null for
|
|
25
|
-
* anything that doesn't yield at least one non-empty line — a garbled recap is
|
|
26
|
-
* worse than none, so it is never stored. Missing labels fall back to line order
|
|
27
|
-
* (the prompt asks for Goal first, State second). */
|
|
28
|
-
export function parseRecapBriefing(briefing) {
|
|
29
|
-
const lines = briefing.split('\n').map((l) => l.trim()).filter((l) => l !== '');
|
|
30
|
-
if (lines.length === 0)
|
|
31
|
-
return null;
|
|
32
|
-
const labelled = (prefix) => lines.find((l) => new RegExp(`^${prefix}\\s*:`, 'i').test(l));
|
|
33
|
-
const goalLine = labelled('goal') ?? lines[0];
|
|
34
|
-
const stateLine = labelled('state') ?? (lines[1] !== goalLine ? lines[1] : undefined);
|
|
35
|
-
const goal = goalLine === undefined ? '' : stripLabel(goalLine);
|
|
36
|
-
const state = stateLine === undefined ? '' : stripLabel(stateLine);
|
|
37
|
-
if (goal === '' && state === '')
|
|
38
|
-
return null;
|
|
39
|
-
return { goal, state };
|
|
40
|
-
}
|
|
41
|
-
/** Persist a freshly generated briefing. Best-effort — a write failure only costs
|
|
42
|
-
* the browse preview one stale panel, so it must never disturb the broker. */
|
|
43
|
-
export function writeNodeRecap(nodeId, briefing) {
|
|
44
|
-
const parsed = parseRecapBriefing(briefing);
|
|
45
|
-
if (parsed === null)
|
|
46
|
-
return;
|
|
47
|
-
try {
|
|
48
|
-
mkdirSync(jobDir(nodeId), { recursive: true });
|
|
49
|
-
atomicWriteJson(recapPath(nodeId), { ...parsed, at: new Date().toISOString() });
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
/* best-effort: the recap is regenerated on the node's next idle window */
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
/** The node's stored briefing, or undefined when it never generated one (a node
|
|
56
|
-
* that finished before its first idle window, or one last run before this file
|
|
57
|
-
* existed). Never throws. */
|
|
58
|
-
export function readNodeRecap(nodeId) {
|
|
59
|
-
const raw = readJsonIfExists(recapPath(nodeId));
|
|
60
|
-
if (raw === null || typeof raw !== 'object')
|
|
61
|
-
return undefined;
|
|
62
|
-
const goal = typeof raw.goal === 'string' ? raw.goal : '';
|
|
63
|
-
const state = typeof raw.state === 'string' ? raw.state : '';
|
|
64
|
-
if (goal === '' && state === '')
|
|
65
|
-
return undefined;
|
|
66
|
-
return { goal, state, at: typeof raw.at === 'string' ? raw.at : '' };
|
|
67
|
-
}
|
|
1
|
+
var d=Object.defineProperty;var r=(e,t)=>d(e,"name",{value:t,configurable:!0});import{join as g}from"node:path";import{mkdirSync as m}from"node:fs";import{jobDir as f}from"./paths.js";import{readJsonIfExists as y,atomicWriteJson as x}from"../fs-utils.js";function u(e){return g(f(e),"recap.json")}r(u,"recapPath");function l(e){return e.replace(/^\s*(goal|state)\s*:\s*/i,"").trim()}r(l,"stripLabel");function b(e){const t=e.split(`
|
|
2
|
+
`).map(i=>i.trim()).filter(i=>i!=="");if(t.length===0)return null;const n=r(i=>t.find(p=>new RegExp(`^${i}\\s*:`,"i").test(p)),"labelled"),o=n("goal")??t[0],a=n("state")??(t[1]!==o?t[1]:void 0),s=o===void 0?"":l(o),c=a===void 0?"":l(a);return s===""&&c===""?null:{goal:s,state:c}}r(b,"parseRecapBriefing");function S(e,t){const n=b(t);if(n!==null)try{m(f(e),{recursive:!0}),x(u(e),{...n,at:new Date().toISOString()})}catch{}}r(S,"writeNodeRecap");function D(e){const t=y(u(e));if(t===null||typeof t!="object")return;const n=typeof t.goal=="string"?t.goal:"",o=typeof t.state=="string"?t.state:"";if(!(n===""&&o===""))return{goal:n,state:o,at:typeof t.at=="string"?t.at:""}}r(D,"readNodeRecap");export{b as parseRecapBriefing,D as readNodeRecap,S as writeNodeRecap};
|