@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,274 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//
|
|
3
|
-
// These loaders are CLI-layer: pi does the *resolution* (the KeybindingsManager
|
|
4
|
-
// matcher, `initTheme`) but the FILE reads are not reusable from pi, so we own
|
|
5
|
-
// them. We read pi's own config locations so an attach viewer honors the same
|
|
6
|
-
// `~/.pi/agent/keybindings.json` + theme the user already configured for pi.
|
|
7
|
-
//
|
|
8
|
-
// THE KEYBINDINGS MANAGER. pi's app-level KeybindingsManager (`core/keybindings`,
|
|
9
|
-
// with `.create()` + the `app.*` definition table `KEYBINDINGS`) is NOT exported
|
|
10
|
-
// — only its TYPE is re-exported, and the `KEYBINDINGS` const not at all. So we
|
|
11
|
-
// construct pi-tui's KeybindingsManager (the base class CustomEditor actually
|
|
12
|
-
// matches against) over the merged definition set: pi-tui's `TUI_KEYBINDINGS`
|
|
13
|
-
// (editor/cursor/select bindings) + a VENDORED copy of pi's `app.*` editor
|
|
14
|
-
// bindings below (required — CustomEditor.handleInput gates onEscape/onPasteImage/
|
|
15
|
-
// onAction on `keybindings.matches(data, "app.*")`, so without the app defs those
|
|
16
|
-
// never fire). We also register it globally via `setKeybindings` so the reused
|
|
17
|
-
// pi-tui components (SelectList autocomplete, the dialog editor) honor overrides.
|
|
18
|
-
import { readFileSync } from 'node:fs';
|
|
19
|
-
import { createRequire } from 'node:module';
|
|
20
|
-
import { homedir } from 'node:os';
|
|
21
|
-
import { join } from 'node:path';
|
|
22
|
-
import { pathToFileURL } from 'node:url';
|
|
23
|
-
import { KeybindingsManager, TUI_KEYBINDINGS, setKeybindings, } from '@earendil-works/pi-tui';
|
|
24
|
-
import { initTheme, getMarkdownTheme, getSelectListTheme } from '@earendil-works/pi-coding-agent';
|
|
25
|
-
import { surfaceBgAnsi } from '../../core/runtime/surface-bg.js';
|
|
26
|
-
/** pi's user config dir: `~/.pi/agent/`. */
|
|
27
|
-
export function defaultAgentDir() {
|
|
28
|
-
return join(homedir(), '.pi', 'agent');
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* pi's `app.*` editor keybindings — VENDORED from pi `core/keybindings.ts`
|
|
32
|
-
* `KEYBINDINGS` (the const is not exported). This is the subset CustomEditor's
|
|
33
|
-
* main editor consults; the selector-internal bindings (`app.tree.*`,
|
|
34
|
-
* `app.models.*`, session delete/rename) are omitted because the attach viewer
|
|
35
|
-
* does not open those selectors. Re-sync on each SDK
|
|
36
|
-
* bump against `core/keybindings.js`.
|
|
37
|
-
*/
|
|
38
|
-
const APP_KEYBINDINGS = {
|
|
39
|
-
'app.interrupt': { defaultKeys: 'escape', description: 'Cancel or abort' },
|
|
40
|
-
'app.clear': { defaultKeys: 'ctrl+c', description: 'Clear editor' },
|
|
41
|
-
'app.exit': { defaultKeys: 'ctrl+d', description: 'Exit when editor is empty' },
|
|
42
|
-
'app.suspend': { defaultKeys: 'ctrl+z', description: 'Suspend to background' },
|
|
43
|
-
'app.thinking.cycle': { defaultKeys: 'shift+tab', description: 'Cycle thinking level' },
|
|
44
|
-
'app.model.cycleForward': { defaultKeys: 'ctrl+p', description: 'Cycle to next model' },
|
|
45
|
-
'app.model.cycleBackward': { defaultKeys: 'shift+ctrl+p', description: 'Cycle to previous model' },
|
|
46
|
-
'app.model.select': { defaultKeys: 'ctrl+l', description: 'Open model selector' },
|
|
47
|
-
'app.tools.expand': { defaultKeys: 'ctrl+o', description: 'Toggle tool output' },
|
|
48
|
-
'app.thinking.toggle': { defaultKeys: 'ctrl+t', description: 'Toggle thinking blocks' },
|
|
49
|
-
'app.editor.external': { defaultKeys: 'ctrl+g', description: 'Open external editor' },
|
|
50
|
-
// Alt+Enter inserts a newline in the attach editor (shift+enter is unreliable
|
|
51
|
-
// across terminals), so the follow-up-queue action drops its alt+enter default
|
|
52
|
-
// to free the chord — see ATTACH_KEYBINDING_OVERRIDES below.
|
|
53
|
-
'app.message.followUp': { defaultKeys: [], description: 'Queue follow-up message' },
|
|
54
|
-
'app.message.dequeue': { defaultKeys: 'alt+up', description: 'Restore queued messages' },
|
|
55
|
-
'app.clipboard.pasteImage': { defaultKeys: ['alt+v', 'ctrl+v'], description: 'Paste image from clipboard' },
|
|
56
|
-
'app.session.new': { defaultKeys: [], description: 'Start a new session' },
|
|
57
|
-
'app.session.tree': { defaultKeys: [], description: 'Open session tree' },
|
|
58
|
-
'app.session.fork': { defaultKeys: [], description: 'Fork current session' },
|
|
59
|
-
'app.session.resume': { defaultKeys: [], description: 'Resume a session' },
|
|
60
|
-
};
|
|
61
|
-
/**
|
|
62
|
-
* Read `~/.pi/agent/keybindings.json` (if present) and return the user's binding
|
|
63
|
-
* overrides. Tolerates a flat `{action: keys}` map or a `{keybindings: {...}}`
|
|
64
|
-
* wrapper; a missing/malformed file → `undefined` (fall back to defaults).
|
|
65
|
-
*/
|
|
66
|
-
export function loadUserKeybindings(agentDir = defaultAgentDir()) {
|
|
67
|
-
try {
|
|
68
|
-
const raw = JSON.parse(readFileSync(join(agentDir, 'keybindings.json'), 'utf8'));
|
|
69
|
-
const obj = raw && typeof raw === 'object' && 'keybindings' in raw
|
|
70
|
-
? raw.keybindings
|
|
71
|
-
: raw;
|
|
72
|
-
if (!obj || typeof obj !== 'object')
|
|
73
|
-
return undefined;
|
|
74
|
-
return obj;
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
return undefined;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Build the KeybindingsManager the attach viewer drives input with: TUI defaults
|
|
82
|
-
* + vendored `app.*` defs, with the user's overrides applied, registered as the
|
|
83
|
-
* global pi-tui keybindings so reused components pick up the same bindings.
|
|
84
|
-
* (`as unknown as` bridges the readonly `TUI_KEYBINDINGS`/string-literal defs to
|
|
85
|
-
* the mutable `KeybindingDefinitions` param — vendoring cast, no behavior change.)
|
|
86
|
-
*/
|
|
87
|
-
/**
|
|
88
|
-
* Attach-specific default overrides applied OVER pi's TUI defaults. Alt+Enter
|
|
89
|
-
* inserts a newline here (the follow-up-queue action gives up its alt+enter
|
|
90
|
-
* default above), because shift+enter — pi's stock newline chord — does not
|
|
91
|
-
* transmit a distinct sequence in many terminals. User `keybindings.json` still
|
|
92
|
-
* wins on top of these (applied as the manager's override config).
|
|
93
|
-
*/
|
|
94
|
-
const ATTACH_KEYBINDING_OVERRIDES = {
|
|
95
|
-
'tui.input.newLine': { defaultKeys: ['shift+enter', 'alt+enter'], description: 'Insert new line' },
|
|
96
|
-
};
|
|
97
|
-
export function createKeybindingsManager(agentDir = defaultAgentDir()) {
|
|
98
|
-
const definitions = {
|
|
99
|
-
...TUI_KEYBINDINGS,
|
|
100
|
-
...APP_KEYBINDINGS,
|
|
101
|
-
...ATTACH_KEYBINDING_OVERRIDES,
|
|
102
|
-
};
|
|
103
|
-
const km = new KeybindingsManager(definitions, loadUserKeybindings(agentDir));
|
|
104
|
-
setKeybindings(km);
|
|
105
|
-
return km;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* pi-coding-agent's `CustomEditor` resolves `@earendil-works/pi-tui` from its OWN
|
|
109
|
-
* `node_modules`, which can be a SEPARATE module instance from the one this file
|
|
110
|
-
* imports (a non-deduped install leaves a nested copy). The editor's newline /
|
|
111
|
-
* submit handling reads keybindings AND the kitty-protocol flag from THAT
|
|
112
|
-
* instance's module-globals via `getKeybindings()` / `isKittyProtocolActive()`,
|
|
113
|
-
* so state we set only on our copy is invisible to it — the user's `alt+enter`
|
|
114
|
-
* newline binding never applies and Enter falls through to submit. We mirror our
|
|
115
|
-
* state onto the editor's instance too. When the install IS deduped both resolve
|
|
116
|
-
* to one module and the mirror is a harmless re-set. Best-effort: a resolution /
|
|
117
|
-
* import failure leaves the editor on our copy's state (the deduped case).
|
|
118
|
-
*/
|
|
119
|
-
let editorPiTuiPromise;
|
|
120
|
-
function editorPiTui() {
|
|
121
|
-
if (!editorPiTuiPromise) {
|
|
122
|
-
editorPiTuiPromise = (async () => {
|
|
123
|
-
try {
|
|
124
|
-
const pcaEntry = import.meta.resolve('@earendil-works/pi-coding-agent');
|
|
125
|
-
const piTuiPath = createRequire(pcaEntry).resolve('@earendil-works/pi-tui');
|
|
126
|
-
return (await import(pathToFileURL(piTuiPath).href));
|
|
127
|
-
}
|
|
128
|
-
catch {
|
|
129
|
-
return undefined;
|
|
130
|
-
}
|
|
131
|
-
})();
|
|
132
|
-
}
|
|
133
|
-
return editorPiTuiPromise;
|
|
134
|
-
}
|
|
135
|
-
/** Register the manager on the editor's pi-tui instance too (see `editorPiTui`),
|
|
136
|
-
* so the editor's newline/submit handling honors the same (user-overridden)
|
|
137
|
-
* bindings as the rest of the viewer. Call once, after `createKeybindingsManager`. */
|
|
138
|
-
export async function mirrorKeybindingsToEditor(km) {
|
|
139
|
-
(await editorPiTui())?.setKeybindings(km);
|
|
140
|
-
}
|
|
141
|
-
/** Mirror the negotiated kitty-keyboard-protocol flag onto the editor's pi-tui
|
|
142
|
-
* instance (ProcessTerminal sets it only on OUR copy). Call after the terminal
|
|
143
|
-
* has negotiated, i.e. after `tui.start()`. */
|
|
144
|
-
export async function mirrorKittyProtocolToEditor(active) {
|
|
145
|
-
(await editorPiTui())?.setKittyProtocolActive(active);
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Resolve the `fd` binary path the @-mention file picker needs. pi-tui's
|
|
149
|
-
* `CombinedAutocompleteProvider` only returns file suggestions when handed an
|
|
150
|
-
* `fdPath` (its third ctor arg) — without it, typing `@` triggers the picker but
|
|
151
|
-
* `getFuzzyFileSuggestions` returns `[]`, so the picker never appears.
|
|
152
|
-
* pi's own interactive mode resolves this via `ensureTool('fd')` from its
|
|
153
|
-
* internal `utils/tools-manager` (checks pi's managed bin dir + system PATH,
|
|
154
|
-
* downloading the binary if missing). That module is NOT on pi-coding-agent's
|
|
155
|
-
* `.`-only export map, so we reach it the same way we reach the editor's pi-tui
|
|
156
|
-
* instance: resolve the package entry, then import the sibling file by URL
|
|
157
|
-
* (file URLs bypass the bare-specifier exports gate). Best-effort: any
|
|
158
|
-
* resolution/import failure (or no fd available) → `null`, and the picker stays
|
|
159
|
-
* file-less rather than crashing.
|
|
160
|
-
*/
|
|
161
|
-
let fdPathPromise;
|
|
162
|
-
export function resolveFdPath() {
|
|
163
|
-
if (!fdPathPromise) {
|
|
164
|
-
fdPathPromise = (async () => {
|
|
165
|
-
try {
|
|
166
|
-
const pcaEntry = import.meta.resolve('@earendil-works/pi-coding-agent');
|
|
167
|
-
const toolsManagerUrl = new URL('./utils/tools-manager.js', pcaEntry).href;
|
|
168
|
-
const toolsManager = (await import(toolsManagerUrl));
|
|
169
|
-
return (await toolsManager.ensureTool('fd', true)) ?? null;
|
|
170
|
-
}
|
|
171
|
-
catch {
|
|
172
|
-
return null;
|
|
173
|
-
}
|
|
174
|
-
})();
|
|
175
|
-
}
|
|
176
|
-
return fdPathPromise;
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* The user's theme name from pi settings — project (`<cwd>/.pi/settings.json`)
|
|
180
|
-
* overrides global (`~/.pi/agent/settings.json`). `undefined` → pi's default.
|
|
181
|
-
*/
|
|
182
|
-
export function loadThemeName(opts) {
|
|
183
|
-
const files = [
|
|
184
|
-
join(opts?.cwd ?? process.cwd(), '.pi', 'settings.json'),
|
|
185
|
-
join(opts?.agentDir ?? defaultAgentDir(), 'settings.json'),
|
|
186
|
-
];
|
|
187
|
-
for (const file of files) {
|
|
188
|
-
try {
|
|
189
|
-
const raw = JSON.parse(readFileSync(file, 'utf8'));
|
|
190
|
-
if (raw && typeof raw === 'object' && typeof raw.theme === 'string') {
|
|
191
|
-
return raw.theme;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
catch {
|
|
195
|
-
/* missing/malformed — try the next location */
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return undefined;
|
|
199
|
-
}
|
|
200
|
-
/** Resolve + activate the user's theme so the reused pi components (markdown,
|
|
201
|
-
* editor, select-list themes) render at parity with the user's pi. */
|
|
202
|
-
export function applyTheme(opts) {
|
|
203
|
-
initTheme(loadThemeName(opts));
|
|
204
|
-
}
|
|
205
|
-
const FAINT = (s) => `\x1b[2m${s}\x1b[22m`;
|
|
206
|
-
const RED = (s) => `\x1b[31m${s}\x1b[39m`;
|
|
207
|
-
const YELLOW = (s) => `\x1b[33m${s}\x1b[39m`;
|
|
208
|
-
const GREEN = (s) => `\x1b[32m${s}\x1b[39m`;
|
|
209
|
-
const BRIGHT_GREEN = (s) => `\x1b[92m${s}\x1b[39m`;
|
|
210
|
-
const DIFF_REMOVED = (s) => `\x1b[91m${s}\x1b[39m`;
|
|
211
|
-
// Terminals do not support alpha. This neutral charcoal is the dark-theme
|
|
212
|
-
// equivalent of a low-opacity gray overlay, without borrowing the purple
|
|
213
|
-
// selection surface used by interactive chrome.
|
|
214
|
-
const CODE_BLOCK_BACKGROUND = '\x1b[48;2;36;36;36m';
|
|
215
|
-
/** Paint a code-block fragment and keep its background active through the
|
|
216
|
-
* renderer's trailing spaces, so the surface reaches the transcript's edge.
|
|
217
|
-
* TUI applies a full reset after every rendered line. */
|
|
218
|
-
function codeSurfaceFragment(render, text) {
|
|
219
|
-
return `${CODE_BLOCK_BACKGROUND}${render(text).replace(/\x1b\[0m/g, `\x1b[0m${CODE_BLOCK_BACKGROUND}`)}`;
|
|
220
|
-
}
|
|
221
|
-
/** Markdown theme for the attach transcript. Fenced code keeps pi's native
|
|
222
|
-
* shape and syntax, but its content is painted on a distinct theme surface. */
|
|
223
|
-
export function attachMarkdownTheme() {
|
|
224
|
-
const base = getMarkdownTheme();
|
|
225
|
-
const paint = (render, text) => codeSurfaceFragment(render, text);
|
|
226
|
-
return {
|
|
227
|
-
...base,
|
|
228
|
-
// `Markdown` emits this before each body line; leave the surface on until
|
|
229
|
-
// the following code fragment closes it.
|
|
230
|
-
codeBlockIndent: `${CODE_BLOCK_BACKGROUND}${base.codeBlockIndent ?? ' '}`,
|
|
231
|
-
codeBlock: (text) => paint(base.codeBlock, text),
|
|
232
|
-
codeBlockBorder: (text) => paint(base.codeBlockBorder, text),
|
|
233
|
-
highlightCode: base.highlightCode
|
|
234
|
-
? (code, language) => base.highlightCode(code, language).map((line) => paint((value) => value, line))
|
|
235
|
-
: undefined,
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Build the attach chrome's color palette from the LIVE theme. Call AFTER
|
|
240
|
-
* `applyTheme()` — the colors are pulled from pi's `getMarkdownTheme()` /
|
|
241
|
-
* `getSelectListTheme()`, which read the active theme singleton at call time.
|
|
242
|
-
*
|
|
243
|
-
* pi does not re-export the raw `Theme` instance (its `.` export map omits the
|
|
244
|
-
* `theme` const and `getEditorTheme`/`getTheme`), so the accent/border/muted hues
|
|
245
|
-
* are sourced from the markdown + select-list theme colorizers, which ARE
|
|
246
|
-
* re-exported and are themselves backed by `theme.fg(...)`. The two semantic
|
|
247
|
-
* colors pi never exposes through that surface — `error`/`warning` — fall back to
|
|
248
|
-
* standard ANSI red/yellow.
|
|
249
|
-
*/
|
|
250
|
-
export function attachPalette() {
|
|
251
|
-
const md = getMarkdownTheme();
|
|
252
|
-
const sel = getSelectListTheme();
|
|
253
|
-
// The distinct-surface bg-on SGR, captured once. Re-asserted after every
|
|
254
|
-
// embedded `\x1b[0m` (full reset) inside a line so a coloured cell can't drop
|
|
255
|
-
// back to the default background mid-row; the line ends with `\x1b[49m` (reset
|
|
256
|
-
// background only) so the surface never bleeds onto the next line.
|
|
257
|
-
const bgOn = surfaceBgAnsi();
|
|
258
|
-
return {
|
|
259
|
-
accent: md.heading,
|
|
260
|
-
active: md.code,
|
|
261
|
-
info: md.link,
|
|
262
|
-
muted: sel.description,
|
|
263
|
-
faint: FAINT,
|
|
264
|
-
border: md.hr,
|
|
265
|
-
bold: md.bold,
|
|
266
|
-
error: RED,
|
|
267
|
-
warning: YELLOW,
|
|
268
|
-
diffAdded: GREEN,
|
|
269
|
-
diffRemoved: DIFF_REMOVED,
|
|
270
|
-
bashMode: GREEN,
|
|
271
|
-
bashModeAlt: BRIGHT_GREEN,
|
|
272
|
-
surface: (line) => `${bgOn}${line.replace(/\x1b\[0m/g, `\x1b[0m${bgOn}`)}\x1b[49m`,
|
|
273
|
-
};
|
|
274
|
-
}
|
|
1
|
+
var y=Object.defineProperty;var t=(e,o)=>y(e,"name",{value:o,configurable:!0});import{readFileSync as p}from"node:fs";import{createRequire as b}from"node:module";import{homedir as h}from"node:os";import{join as i}from"node:path";import{pathToFileURL as x}from"node:url";import{KeybindingsManager as K,TUI_KEYBINDINGS as w,setKeybindings as k}from"@earendil-works/pi-tui";import{initTheme as T,getMarkdownTheme as l,getSelectListTheme as E}from"@earendil-works/pi-coding-agent";import{surfaceBgAnsi as B}from"../../core/runtime/surface-bg.js";function s(){return i(h(),".pi","agent")}t(s,"defaultAgentDir");const I={"app.interrupt":{defaultKeys:"escape",description:"Cancel or abort"},"app.clear":{defaultKeys:"ctrl+c",description:"Clear editor"},"app.exit":{defaultKeys:"ctrl+d",description:"Exit when editor is empty"},"app.suspend":{defaultKeys:"ctrl+z",description:"Suspend to background"},"app.thinking.cycle":{defaultKeys:"shift+tab",description:"Cycle thinking level"},"app.model.cycleForward":{defaultKeys:"ctrl+p",description:"Cycle to next model"},"app.model.cycleBackward":{defaultKeys:"shift+ctrl+p",description:"Cycle to previous model"},"app.model.select":{defaultKeys:"ctrl+l",description:"Open model selector"},"app.tools.expand":{defaultKeys:"ctrl+o",description:"Toggle tool output"},"app.thinking.toggle":{defaultKeys:"ctrl+t",description:"Toggle thinking blocks"},"app.editor.external":{defaultKeys:"ctrl+g",description:"Open external editor"},"app.message.followUp":{defaultKeys:[],description:"Queue follow-up message"},"app.message.dequeue":{defaultKeys:"alt+up",description:"Restore queued messages"},"app.clipboard.pasteImage":{defaultKeys:["alt+v","ctrl+v"],description:"Paste image from clipboard"},"app.session.new":{defaultKeys:[],description:"Start a new session"},"app.session.tree":{defaultKeys:[],description:"Open session tree"},"app.session.fork":{defaultKeys:[],description:"Fork current session"},"app.session.resume":{defaultKeys:[],description:"Resume a session"}};function R(e=s()){try{const o=JSON.parse(p(i(e,"keybindings.json"),"utf8")),n=o&&typeof o=="object"&&"keybindings"in o?o.keybindings:o;return!n||typeof n!="object"?void 0:n}catch{return}}t(R,"loadUserKeybindings");const $={"tui.input.newLine":{defaultKeys:["shift+enter","alt+enter"],description:"Insert new line"}};function q(e=s()){const o={...w,...I,...$},n=new K(o,R(e));return k(n),n}t(q,"createKeybindingsManager");let a;function u(){return a||(a=(async()=>{try{const e=import.meta.resolve("@earendil-works/pi-coding-agent"),o=b(e).resolve("@earendil-works/pi-tui");return await import(x(o).href)}catch{return}})()),a}t(u,"editorPiTui");async function H(e){(await u())?.setKeybindings(e)}t(H,"mirrorKeybindingsToEditor");async function J(e){(await u())?.setKittyProtocolActive(e)}t(J,"mirrorKittyProtocolToEditor");let c;function V(){return c||(c=(async()=>{try{const e=import.meta.resolve("@earendil-works/pi-coding-agent");return await(await import(new URL("./utils/tools-manager.js",e).href)).ensureTool("fd",!0)??null}catch{return null}})()),c}t(V,"resolveFdPath");function N(e){const o=[i(e?.cwd??process.cwd(),".pi","settings.json"),i(e?.agentDir??s(),"settings.json")];for(const n of o)try{const r=JSON.parse(p(n,"utf8"));if(r&&typeof r=="object"&&typeof r.theme=="string")return r.theme}catch{}}t(N,"loadThemeName");function z(e){T(N(e))}t(z,"applyTheme");const P=t(e=>`\x1B[2m${e}\x1B[22m`,"FAINT"),C=t(e=>`\x1B[31m${e}\x1B[39m`,"RED"),O=t(e=>`\x1B[33m${e}\x1B[39m`,"YELLOW"),f=t(e=>`\x1B[32m${e}\x1B[39m`,"GREEN"),v=t(e=>`\x1B[92m${e}\x1B[39m`,"BRIGHT_GREEN"),D=t(e=>`\x1B[91m${e}\x1B[39m`,"DIFF_REMOVED"),d="\x1B[48;2;36;36;36m";function M(e,o){return`${d}${e(o).replace(/\x1b\[0m/g,`\x1B[0m${d}`)}`}t(M,"codeSurfaceFragment");function Q(){const e=l(),o=t((n,r)=>M(n,r),"paint");return{...e,codeBlockIndent:`${d}${e.codeBlockIndent??" "}`,codeBlock:t(n=>o(e.codeBlock,n),"codeBlock"),codeBlockBorder:t(n=>o(e.codeBlockBorder,n),"codeBlockBorder"),highlightCode:e.highlightCode?(n,r)=>e.highlightCode(n,r).map(m=>o(g=>g,m)):void 0}}t(Q,"attachMarkdownTheme");function W(){const e=l(),o=E(),n=B();return{accent:e.heading,active:e.code,info:e.link,muted:o.description,faint:P,border:e.hr,bold:e.bold,error:C,warning:O,diffAdded:f,diffRemoved:D,bashMode:f,bashModeAlt:v,surface:t(r=>`${n}${r.replace(/\x1b\[0m/g,`\x1B[0m${n}`)}\x1B[49m`,"surface")}}t(W,"attachPalette");export{z as applyTheme,Q as attachMarkdownTheme,W as attachPalette,q as createKeybindingsManager,s as defaultAgentDir,N as loadThemeName,R as loadUserKeybindings,H as mirrorKeybindingsToEditor,J as mirrorKittyProtocolToEditor,V as resolveFdPath};
|
|
@@ -1,104 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* even when a caller supplied a controller role; keep that invariant local to
|
|
3
|
-
* this construction boundary. */
|
|
4
|
-
export function createViewerCapabilities(input) {
|
|
5
|
-
const remote = input.remote;
|
|
6
|
-
const role = remote ? 'observer' : input.role;
|
|
7
|
-
const permittedOperations = new Set();
|
|
8
|
-
// Viewer-local reads and inspection remain available to a local observer.
|
|
9
|
-
if (!remote) {
|
|
10
|
-
permittedOperations.add('local-canvas-inspect');
|
|
11
|
-
permittedOperations.add('canvas-inbox');
|
|
12
|
-
}
|
|
13
|
-
if (role === 'controller') {
|
|
14
|
-
permittedOperations.add('engine-drive');
|
|
15
|
-
permittedOperations.add('dequeue');
|
|
16
|
-
permittedOperations.add('wake-dormant');
|
|
17
|
-
permittedOperations.add('auth');
|
|
18
|
-
permittedOperations.add('canvas-resume');
|
|
19
|
-
}
|
|
20
|
-
return {
|
|
21
|
-
role,
|
|
22
|
-
remote,
|
|
23
|
-
nodeId: input.nodeId,
|
|
24
|
-
profileId: input.profileId,
|
|
25
|
-
permittedOperations,
|
|
26
|
-
permits: (operation) => permittedOperations.has(operation),
|
|
27
|
-
refusal: (operation, command) => {
|
|
28
|
-
const prefix = command === undefined ? '' : `/${command} `;
|
|
29
|
-
if (input.isBrokerOffline?.() === true
|
|
30
|
-
&& (operation === 'engine-drive' || operation === 'dequeue' || operation === 'auth')) {
|
|
31
|
-
return `${prefix}needs a live broker; this node is parked — submit a message to wake it`;
|
|
32
|
-
}
|
|
33
|
-
if (permittedOperations.has(operation))
|
|
34
|
-
return undefined;
|
|
35
|
-
if (remote && (operation === 'canvas-resume' || operation === 'local-canvas-inspect' || operation === 'canvas-inbox')) {
|
|
36
|
-
return `${prefix}Read-only remote attach — not available with --canvas because it acts on this machine's local canvas`;
|
|
37
|
-
}
|
|
38
|
-
if (remote)
|
|
39
|
-
return `${prefix}Read-only remote attach — not available with --canvas (view-only)`;
|
|
40
|
-
return `${prefix}is not available to a read-only observer attach (--observer) — it would drive this node`;
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
/** The slash dispatcher asks the capability model for a command's operation;
|
|
45
|
-
* commands with no returned operation are viewer-local/read-only. */
|
|
46
|
-
export function viewerOperationForFrame(frame) {
|
|
47
|
-
switch (frame.type) {
|
|
48
|
-
case 'prompt':
|
|
49
|
-
case 'steer':
|
|
50
|
-
case 'follow_up':
|
|
51
|
-
case 'abort':
|
|
52
|
-
case 'bash':
|
|
53
|
-
case 'set_model':
|
|
54
|
-
case 'cycle_model':
|
|
55
|
-
case 'cycle_ladder':
|
|
56
|
-
case 'cycle_thinking':
|
|
57
|
-
case 'set_thinking_level':
|
|
58
|
-
case 'set_auto_retry':
|
|
59
|
-
case 'set_auto_compaction':
|
|
60
|
-
case 'compact':
|
|
61
|
-
case 'new_session':
|
|
62
|
-
case 'switch_session':
|
|
63
|
-
case 'fork':
|
|
64
|
-
case 'set_session_name':
|
|
65
|
-
case 'navigate_tree':
|
|
66
|
-
case 'reload':
|
|
67
|
-
case 'export':
|
|
68
|
-
case 'clone':
|
|
69
|
-
case 'share':
|
|
70
|
-
case 'reload_auth': return 'engine-drive';
|
|
71
|
-
default: return undefined;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
export function viewerOperationForSlash(name, builtin, canvas) {
|
|
75
|
-
if (canvas) {
|
|
76
|
-
switch (name) {
|
|
77
|
-
case 'resume': return 'canvas-resume';
|
|
78
|
-
case 'context':
|
|
79
|
-
case 'node-metadata': return 'local-canvas-inspect';
|
|
80
|
-
// `/plugins` configures the local machine, not this node; observers and
|
|
81
|
-
// remote attaches can open its local popup.
|
|
82
|
-
case 'plugins': return undefined;
|
|
83
|
-
case 'inbox': return 'canvas-inbox';
|
|
84
|
-
case 'clear':
|
|
85
|
-
case 'promote':
|
|
86
|
-
case 'rename':
|
|
87
|
-
case 'resume-session':
|
|
88
|
-
case 'mcp': return 'engine-drive';
|
|
89
|
-
default: return undefined;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
if (!builtin)
|
|
93
|
-
return undefined;
|
|
94
|
-
switch (name) {
|
|
95
|
-
case 'copy':
|
|
96
|
-
case 'session':
|
|
97
|
-
case 'changelog':
|
|
98
|
-
case 'hotkeys':
|
|
99
|
-
case 'quit': return undefined;
|
|
100
|
-
case 'login':
|
|
101
|
-
case 'logout': return 'auth';
|
|
102
|
-
default: return 'engine-drive';
|
|
103
|
-
}
|
|
104
|
-
}
|
|
1
|
+
var o=Object.defineProperty;var r=(e,s)=>o(e,"name",{value:s,configurable:!0});function l(e){const s=e.remote,t=s?"observer":e.role,a=new Set;return s||(a.add("local-canvas-inspect"),a.add("canvas-inbox")),t==="controller"&&(a.add("engine-drive"),a.add("dequeue"),a.add("wake-dormant"),a.add("auth"),a.add("canvas-resume")),{role:t,remote:s,nodeId:e.nodeId,profileId:e.profileId,permittedOperations:a,permits:r(n=>a.has(n),"permits"),refusal:r((n,i)=>{const c=i===void 0?"":`/${i} `;if(e.isBrokerOffline?.()===!0&&(n==="engine-drive"||n==="dequeue"||n==="auth"))return`${c}needs a live broker; this node is parked \u2014 submit a message to wake it`;if(!a.has(n))return s&&(n==="canvas-resume"||n==="local-canvas-inspect"||n==="canvas-inbox")?`${c}Read-only remote attach \u2014 not available with --canvas because it acts on this machine's local canvas`:s?`${c}Read-only remote attach \u2014 not available with --canvas (view-only)`:`${c}is not available to a read-only observer attach (--observer) \u2014 it would drive this node`},"refusal")}}r(l,"createViewerCapabilities");function u(e){switch(e.type){case"prompt":case"steer":case"follow_up":case"abort":case"bash":case"set_model":case"cycle_model":case"cycle_ladder":case"cycle_thinking":case"set_thinking_level":case"set_auto_retry":case"set_auto_compaction":case"compact":case"new_session":case"switch_session":case"fork":case"set_session_name":case"navigate_tree":case"reload":case"export":case"clone":case"share":case"reload_auth":return"engine-drive";default:return}}r(u,"viewerOperationForFrame");function v(e,s,t){if(t)switch(e){case"resume":return"canvas-resume";case"context":case"node-metadata":return"local-canvas-inspect";case"plugins":return;case"inbox":return"canvas-inbox";case"clear":case"promote":case"rename":case"resume-session":case"mcp":return"engine-drive";default:return}if(s)switch(e){case"copy":case"session":case"changelog":case"hotkeys":case"quit":return;case"login":case"logout":return"auth";default:return"engine-drive"}}r(v,"viewerOperationForSlash");export{l as createViewerCapabilities,u as viewerOperationForFrame,v as viewerOperationForSlash};
|
|
@@ -1,164 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
//
|
|
3
|
-
// pi's `readClipboardImage` is NOT re-exported (it lives behind a native
|
|
4
|
-
// clipboard binding + Photon worker the package gates off `.`-only exports), so
|
|
5
|
-
// we reimplement the READ by shelling out to the platform clipboard tool. macOS:
|
|
6
|
-
// `pngpaste` is a faster path IF present, but it is NOT a built-in (`brew install
|
|
7
|
-
// pngpaste`), so the authoritative read is the dependency-free `osascript` path
|
|
8
|
-
// (`the clipboard as «class PNGf»` → temp PNG), which works on a stock Mac.
|
|
9
|
-
// Linux: `wl-paste` on Wayland, `xclip` on X11. The reader DISTINGUISHES three
|
|
10
|
-
// outcomes — got bytes, clipboard genuinely empty, or no clipboard tool / read
|
|
11
|
-
// failure — so the caller's notice is accurate ("No image in the clipboard" vs a
|
|
12
|
-
// precise "install xclip" / "osascript failed") instead of collapsing every
|
|
13
|
-
// miss to "no image".
|
|
14
|
-
//
|
|
15
|
-
// The bytes are then resized AGGRESSIVELY through pi's exported `resizeImage`
|
|
16
|
-
// (which is reusable, unlike the reader) so the base64 stays well within the
|
|
17
|
-
// broker's client-read line cap (`BROKER_READ_CAPS.maxLineBytes` = 24 MiB).
|
|
18
|
-
// `resizeImage`'s `maxBytes` is the BASE64-PAYLOAD ceiling (it compares the
|
|
19
|
-
// encoded size, not raw bytes — see image-resize-core), so MAX_BYTES (3 MiB)
|
|
20
|
-
// bounds the base64 itself, far under 24 MiB. `resizeImage` already tries PNG and
|
|
21
|
-
// JPEG and picks the smaller, so it doubles as format normalization;
|
|
22
|
-
// `convertToPng` is the fallback when the Photon resizer is unavailable. The
|
|
23
|
-
// fallbacks (convertToPng / raw bytes) are NOT size-bounded by `resizeImage`, so
|
|
24
|
-
// each is gated on the SAME MAX_BYTES base64 ceiling: over it → the
|
|
25
|
-
// image is DROPPED with a user-visible note rather than shipped as an over-cap
|
|
26
|
-
// frame that would overflow BROKER_READ_CAPS.maxLineBytes (24 MiB) and destroy
|
|
27
|
-
// the viewer socket. The result is an `ImageContent` (pi-ai) ready to drop
|
|
28
|
-
// straight into a `prompt`/`steer`/`follow_up` frame's `images?` array (or, when
|
|
29
|
-
// dropped, a `note`-only result and no image).
|
|
30
|
-
import { spawnSync } from 'node:child_process';
|
|
31
|
-
import { mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
32
|
-
import { tmpdir } from 'node:os';
|
|
33
|
-
import { join } from 'node:path';
|
|
34
|
-
import { convertToPng, formatDimensionNote, resizeImage, } from '@earendil-works/pi-coding-agent';
|
|
35
|
-
/** Longest edge (px) the pasted image is resized to — aggressive, matches the
|
|
36
|
-
* ~1568px long-edge guidance vision models use. */
|
|
37
|
-
const MAX_EDGE = 1568;
|
|
38
|
-
/** Largest BASE64 payload per image — the ceiling for BOTH paths: passed as
|
|
39
|
-
* `resizeImage`'s `maxBytes` (which bounds the encoded base64, not raw bytes)
|
|
40
|
-
* on the primary path, and compared against the fallbacks' base64 length. 3 MiB
|
|
41
|
-
* base64, far under BROKER_READ_CAPS.maxLineBytes (24 MiB). */
|
|
42
|
-
const MAX_BYTES = 3 * 1024 * 1024;
|
|
43
|
-
/** Bound the shell read so a giant/garbage clipboard can't blow up memory. */
|
|
44
|
-
const SPAWN_MAX_BUFFER = 64 * 1024 * 1024;
|
|
45
|
-
const SPAWN_TIMEOUT_MS = 3000;
|
|
46
|
-
/** Persist a (already-resized) clipboard image to a stable temp file and return
|
|
47
|
-
* its absolute path, so the attach editor can drop the PATH inline into the
|
|
48
|
-
* prompt instead of inlining base64 the agent can't see. The broker runs on the
|
|
49
|
-
* same host, so a tmpdir path is readable by the engine. */
|
|
50
|
-
export function writeClipboardImageToFile(image) {
|
|
51
|
-
const dir = join(tmpdir(), 'crtr-clip-images');
|
|
52
|
-
mkdirSync(dir, { recursive: true });
|
|
53
|
-
const ext = image.mimeType === 'image/jpeg' ? 'jpg' : 'png';
|
|
54
|
-
const path = join(dir, `paste-${Date.now()}-${process.pid}.${ext}`);
|
|
55
|
-
writeFileSync(path, Buffer.from(image.data, 'base64'));
|
|
56
|
-
return path;
|
|
57
|
-
}
|
|
58
|
-
/** Read + resize the current clipboard image. Returns `null` ONLY when the
|
|
59
|
-
* clipboard genuinely holds no image; a `note`-only result means there is a
|
|
60
|
-
* precise reason to surface (no clipboard tool, read failure, or an over-cap
|
|
61
|
-
* drop). All best-effort — the caller shows a brief notice and carries on. */
|
|
62
|
-
export async function readClipboardImage() {
|
|
63
|
-
const outcome = readRawClipboardImage();
|
|
64
|
-
const raw = outcome.image;
|
|
65
|
-
if (!raw) {
|
|
66
|
-
// No bytes. A `note` means a precise reason worth surfacing (no clipboard
|
|
67
|
-
// tool, or a read failure) — return it so the caller shows it instead of the
|
|
68
|
-
// generic "No image in the clipboard". No note → the clipboard is genuinely
|
|
69
|
-
// empty → null (caller shows the generic notice).
|
|
70
|
-
return outcome.note ? { note: outcome.note } : null;
|
|
71
|
-
}
|
|
72
|
-
// Primary path: resize aggressively. Handles format (PNG/JPEG) + size bound.
|
|
73
|
-
const resized = await resizeImage(new Uint8Array(raw.bytes), raw.mimeType, {
|
|
74
|
-
maxWidth: MAX_EDGE,
|
|
75
|
-
maxHeight: MAX_EDGE,
|
|
76
|
-
maxBytes: MAX_BYTES,
|
|
77
|
-
});
|
|
78
|
-
if (resized) {
|
|
79
|
-
return {
|
|
80
|
-
image: { type: 'image', data: resized.data, mimeType: resized.mimeType },
|
|
81
|
-
note: resized.wasResized ? formatDimensionNote(resized) : undefined,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
// Fallback: the Photon resizer is unavailable — at least normalize to PNG so
|
|
85
|
-
// the engine gets a format it accepts. Capped at MAX_BYTES (base64).
|
|
86
|
-
const png = await convertToPng(raw.bytes.toString('base64'), raw.mimeType);
|
|
87
|
-
if (png)
|
|
88
|
-
return capped({ type: 'image', data: png.data, mimeType: png.mimeType });
|
|
89
|
-
// Last resort: ship the raw bytes — also capped, never an over-cap frame.
|
|
90
|
-
return capped({ type: 'image', data: raw.bytes.toString('base64'), mimeType: raw.mimeType });
|
|
91
|
-
}
|
|
92
|
-
/** Gate a FALLBACK image on the per-image base64 ceiling (MAX_BYTES): under it →
|
|
93
|
-
* attach; over → DROP with a user-visible note rather than ship a frame that
|
|
94
|
-
* would overflow the broker's 24 MiB read cap and destroy the viewer socket.
|
|
95
|
-
* base64 is ASCII, so its byte length equals the bytes the frame puts on the
|
|
96
|
-
* wire. */
|
|
97
|
-
function capped(image) {
|
|
98
|
-
const encodedBytes = Buffer.byteLength(image.data);
|
|
99
|
-
if (encodedBytes <= MAX_BYTES)
|
|
100
|
-
return { image };
|
|
101
|
-
const mib = (n) => Math.round(n / (1024 * 1024));
|
|
102
|
-
return {
|
|
103
|
-
note: `Image not attached: ${mib(encodedBytes)} MiB exceeds the ${mib(MAX_BYTES)} MiB attach limit (clipboard resizer unavailable)`,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
/** Shell out to the platform clipboard tool for raw image bytes. */
|
|
107
|
-
function readRawClipboardImage() {
|
|
108
|
-
if (process.platform === 'darwin') {
|
|
109
|
-
return selectMacOutcome(run, readMacClipboardViaOsascript);
|
|
110
|
-
}
|
|
111
|
-
return selectLinuxOutcome(run, isWayland());
|
|
112
|
-
}
|
|
113
|
-
/** Pure macOS dispatch (the regression-test seam): try `pngpaste` if present,
|
|
114
|
-
* else fall through to the native osascript read — a missing `pngpaste` must
|
|
115
|
-
* NOT collapse to "no image", which was the stock-Mac bug. */
|
|
116
|
-
export function selectMacOutcome(runTool, readNative) {
|
|
117
|
-
const fast = runTool('pngpaste', ['-']);
|
|
118
|
-
if (fast.bytes)
|
|
119
|
-
return { image: { bytes: fast.bytes, mimeType: 'image/png' } };
|
|
120
|
-
// pngpaste missing OR clipboard empty → osascript is authoritative.
|
|
121
|
-
return readNative();
|
|
122
|
-
}
|
|
123
|
-
/** Pure Linux dispatch (the regression-test seam): Wayland (`wl-paste`) first,
|
|
124
|
-
* then X11 (`xclip`), PNG then JPEG. If NO tool binary was found, surface a
|
|
125
|
-
* precise "install …" note; if a tool ran but found no image, report empty. */
|
|
126
|
-
export function selectLinuxOutcome(runTool, wayland) {
|
|
127
|
-
let anyToolPresent = false;
|
|
128
|
-
if (wayland) {
|
|
129
|
-
const out = runTool('wl-paste', ['--type', 'image/png', '--no-newline']);
|
|
130
|
-
if (out.bytes)
|
|
131
|
-
return { image: { bytes: out.bytes, mimeType: 'image/png' } };
|
|
132
|
-
if (!out.missing)
|
|
133
|
-
anyToolPresent = true;
|
|
134
|
-
}
|
|
135
|
-
for (const mimeType of ['image/png', 'image/jpeg']) {
|
|
136
|
-
const out = runTool('xclip', ['-selection', 'clipboard', '-t', mimeType, '-o']);
|
|
137
|
-
if (out.bytes)
|
|
138
|
-
return { image: { bytes: out.bytes, mimeType } };
|
|
139
|
-
if (!out.missing)
|
|
140
|
-
anyToolPresent = true;
|
|
141
|
-
}
|
|
142
|
-
if (!anyToolPresent) {
|
|
143
|
-
return {
|
|
144
|
-
note: wayland
|
|
145
|
-
? 'No clipboard tool found — install wl-clipboard (wl-paste) to paste images'
|
|
146
|
-
: 'No clipboard tool found — install xclip to paste images',
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
return {}; // a tool ran but the clipboard holds no image
|
|
150
|
-
}
|
|
151
|
-
/** AppleScript that writes the clipboard's PNG representation to the temp path
|
|
152
|
-
* in `argv`. `the clipboard as «class PNGf»` THROWS when the clipboard has no
|
|
153
|
-
* PNG-convertible image — caught → "NO_IMAGE" (a clean empty signal, distinct
|
|
154
|
-
* from a failure). A write failure (after `set eof` already truncated the file)
|
|
155
|
-
* closes the handle and returns "WRITE_FAILED" rather than swallowing the error
|
|
156
|
-
* and reporting a false "OK" over a 0-byte/partial file — so "OK" reliably means
|
|
157
|
-
* the full bytes are in the temp file, preserving the empty-vs-failure split. */
|
|
158
|
-
const MAC_PNG_SCRIPT = `on run argv
|
|
1
|
+
var g=Object.defineProperty;var o=(n,e)=>g(n,"name",{value:e,configurable:!0});import{spawnSync as c}from"node:child_process";import{mkdirSync as y,readFileSync as b,unlinkSync as h,writeFileSync as T}from"node:fs";import{tmpdir as m}from"node:os";import{join as a}from"node:path";import{convertToPng as w,formatDimensionNote as S,resizeImage as x}from"@earendil-works/pi-coding-agent";const p=1568,s=3*1024*1024,u=64*1024*1024,f=3e3;function F(n){const e=a(m(),"crtr-clip-images");y(e,{recursive:!0});const t=n.mimeType==="image/jpeg"?"jpg":"png",r=a(e,`paste-${Date.now()}-${process.pid}.${t}`);return T(r,Buffer.from(n.data,"base64")),r}o(F,"writeClipboardImageToFile");async function $(){const n=B(),e=n.image;if(!e)return n.note?{note:n.note}:null;const t=await x(new Uint8Array(e.bytes),e.mimeType,{maxWidth:p,maxHeight:p,maxBytes:s});if(t)return{image:{type:"image",data:t.data,mimeType:t.mimeType},note:t.wasResized?S(t):void 0};const r=await w(e.bytes.toString("base64"),e.mimeType);return l(r?{type:"image",data:r.data,mimeType:r.mimeType}:{type:"image",data:e.bytes.toString("base64"),mimeType:e.mimeType})}o($,"readClipboardImage");function l(n){const e=Buffer.byteLength(n.data);if(e<=s)return{image:n};const t=o(r=>Math.round(r/(1024*1024)),"mib");return{note:`Image not attached: ${t(e)} MiB exceeds the ${t(s)} MiB attach limit (clipboard resizer unavailable)`}}o(l,"capped");function B(){return process.platform==="darwin"?I(d,E):_(d,M())}o(B,"readRawClipboardImage");function I(n,e){const t=n("pngpaste",["-"]);return t.bytes?{image:{bytes:t.bytes,mimeType:"image/png"}}:e()}o(I,"selectMacOutcome");function _(n,e){let t=!1;if(e){const r=n("wl-paste",["--type","image/png","--no-newline"]);if(r.bytes)return{image:{bytes:r.bytes,mimeType:"image/png"}};r.missing||(t=!0)}for(const r of["image/png","image/jpeg"]){const i=n("xclip",["-selection","clipboard","-t",r,"-o"]);if(i.bytes)return{image:{bytes:i.bytes,mimeType:r}};i.missing||(t=!0)}return t?{}:{note:e?"No clipboard tool found \u2014 install wl-clipboard (wl-paste) to paste images":"No clipboard tool found \u2014 install xclip to paste images"}}o(_,"selectLinuxOutcome");const A=`on run argv
|
|
159
2
|
set outPath to item 1 of argv
|
|
160
3
|
try
|
|
161
|
-
set pngData to (the clipboard as
|
|
4
|
+
set pngData to (the clipboard as \xABclass PNGf\xBB)
|
|
162
5
|
on error
|
|
163
6
|
return "NO_IMAGE"
|
|
164
7
|
end try
|
|
@@ -174,64 +17,4 @@ const MAC_PNG_SCRIPT = `on run argv
|
|
|
174
17
|
return "WRITE_FAILED"
|
|
175
18
|
end try
|
|
176
19
|
return "OK"
|
|
177
|
-
end run`;
|
|
178
|
-
/** Native, dependency-free macOS read: osascript (always present) writes the
|
|
179
|
-
* clipboard PNG to a temp file we then read. Distinguishes empty ("NO_IMAGE")
|
|
180
|
-
* from a genuine read failure so the caller's notice is accurate. */
|
|
181
|
-
function readMacClipboardViaOsascript() {
|
|
182
|
-
const tmpFile = join(tmpdir(), `crtr-clip-${process.pid}-${Date.now()}.png`);
|
|
183
|
-
try {
|
|
184
|
-
const result = spawnSync('osascript', ['-e', MAC_PNG_SCRIPT, tmpFile], {
|
|
185
|
-
timeout: SPAWN_TIMEOUT_MS,
|
|
186
|
-
maxBuffer: SPAWN_MAX_BUFFER,
|
|
187
|
-
encoding: 'utf-8',
|
|
188
|
-
});
|
|
189
|
-
if (result.error || result.status !== 0) {
|
|
190
|
-
return { note: 'Could not read the clipboard (osascript failed)' };
|
|
191
|
-
}
|
|
192
|
-
const signal = (result.stdout ?? '').trim();
|
|
193
|
-
if (signal === 'NO_IMAGE')
|
|
194
|
-
return {}; // clipboard genuinely holds no image
|
|
195
|
-
if (signal !== 'OK')
|
|
196
|
-
return { note: 'Could not read the clipboard image' };
|
|
197
|
-
let bytes;
|
|
198
|
-
try {
|
|
199
|
-
bytes = readFileSync(tmpFile);
|
|
200
|
-
}
|
|
201
|
-
catch {
|
|
202
|
-
return { note: 'Could not read the clipboard image' };
|
|
203
|
-
}
|
|
204
|
-
return bytes.length > 0 ? { image: { bytes, mimeType: 'image/png' } } : {};
|
|
205
|
-
}
|
|
206
|
-
finally {
|
|
207
|
-
try {
|
|
208
|
-
unlinkSync(tmpFile);
|
|
209
|
-
}
|
|
210
|
-
catch {
|
|
211
|
-
/* ignore temp-file cleanup errors (NO_IMAGE never created it) */
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
function isWayland() {
|
|
216
|
-
return Boolean(process.env.WAYLAND_DISPLAY) || process.env.XDG_SESSION_TYPE === 'wayland';
|
|
217
|
-
}
|
|
218
|
-
/** Run a clipboard tool; return its stdout bytes, or a `missing` flag when the
|
|
219
|
-
* binary isn't on PATH (so the caller can distinguish "no tool" from "no
|
|
220
|
-
* image"). Any other failure (non-zero exit, timeout, empty output) → an empty
|
|
221
|
-
* result ({}), i.e. the tool ran but yielded no image. */
|
|
222
|
-
function run(command, args) {
|
|
223
|
-
const result = spawnSync(command, args, {
|
|
224
|
-
timeout: SPAWN_TIMEOUT_MS,
|
|
225
|
-
maxBuffer: SPAWN_MAX_BUFFER,
|
|
226
|
-
});
|
|
227
|
-
if (result.error) {
|
|
228
|
-
const missing = result.error.code === 'ENOENT';
|
|
229
|
-
return { missing };
|
|
230
|
-
}
|
|
231
|
-
if (result.status !== 0)
|
|
232
|
-
return {};
|
|
233
|
-
const stdout = result.stdout;
|
|
234
|
-
if (!stdout || stdout.length === 0)
|
|
235
|
-
return {};
|
|
236
|
-
return { bytes: Buffer.isBuffer(stdout) ? stdout : Buffer.from(stdout) };
|
|
237
|
-
}
|
|
20
|
+
end run`;function E(){const n=a(m(),`crtr-clip-${process.pid}-${Date.now()}.png`);try{const e=c("osascript",["-e",A,n],{timeout:f,maxBuffer:u,encoding:"utf-8"});if(e.error||e.status!==0)return{note:"Could not read the clipboard (osascript failed)"};const t=(e.stdout??"").trim();if(t==="NO_IMAGE")return{};if(t!=="OK")return{note:"Could not read the clipboard image"};let r;try{r=b(n)}catch{return{note:"Could not read the clipboard image"}}return r.length>0?{image:{bytes:r,mimeType:"image/png"}}:{}}finally{try{h(n)}catch{}}}o(E,"readMacClipboardViaOsascript");function M(){return!!process.env.WAYLAND_DISPLAY||process.env.XDG_SESSION_TYPE==="wayland"}o(M,"isWayland");function d(n,e){const t=c(n,e,{timeout:f,maxBuffer:u});if(t.error)return{missing:t.error.code==="ENOENT"};if(t.status!==0)return{};const r=t.stdout;return!r||r.length===0?{}:{bytes:Buffer.isBuffer(r)?r:Buffer.from(r)}}o(d,"run");export{$ as readClipboardImage,_ as selectLinuxOutcome,I as selectMacOutcome,F as writeClipboardImageToFile};
|