@north-light/crouter 0.3.318 → 0.3.319
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -3
- package/dist/api/client.js +2 -912
- package/dist/api/dto/attach.js +0 -13
- package/dist/api/dto/bash-jobs.js +1 -9
- package/dist/api/dto/broker-ops.js +0 -6
- package/dist/api/dto/broker.js +0 -20
- package/dist/api/dto/canvas.js +0 -2
- package/dist/api/dto/chat-inventory.js +0 -11
- package/dist/api/dto/common.js +1 -15
- package/dist/api/dto/config.js +0 -3
- package/dist/api/dto/crons.js +1 -10
- package/dist/api/dto/files.js +0 -7
- package/dist/api/dto/focus.js +0 -10
- package/dist/api/dto/health.js +0 -2
- package/dist/api/dto/human-requests.js +0 -4
- package/dist/api/dto/human.js +0 -4
- package/dist/api/dto/inbox.js +0 -4
- package/dist/api/dto/lifecycle.js +0 -3
- package/dist/api/dto/mail.js +0 -1
- package/dist/api/dto/memory.js +0 -6
- package/dist/api/dto/messages.js +0 -2
- package/dist/api/dto/model-config.js +0 -1
- package/dist/api/dto/modelauth.js +0 -4
- package/dist/api/dto/node-outcomes.js +0 -2
- package/dist/api/dto/nodes.js +0 -3
- package/dist/api/dto/profiles.js +1 -4
- package/dist/api/dto/recovery.js +0 -1
- package/dist/api/dto/reports.js +0 -2
- package/dist/api/dto/review-comments.js +0 -5
- package/dist/api/dto/reviews.js +0 -5
- package/dist/api/dto/subscriptions.js +0 -2
- package/dist/api/dto/worktree.js +0 -6
- package/dist/api/errors.js +1 -40
- package/dist/api/index.js +1 -33
- package/dist/api/plugin-manifest-schema.js +0 -23
- package/dist/api/routes.js +1 -147
- package/dist/build-root.js +1 -198
- package/dist/cli.js +3 -99
- package/dist/clients/attach/ansi-cells.js +1 -137
- package/dist/clients/attach/chrome/bash-jobs.js +1 -31
- package/dist/clients/attach/chrome/canvas-panels.js +1 -194
- package/dist/clients/attach/chrome/completion-bell.js +1 -89
- package/dist/clients/attach/chrome/cron-wait.js +1 -34
- package/dist/clients/attach/chrome/git-info.js +2 -44
- package/dist/clients/attach/chrome/header.js +1 -30
- package/dist/clients/attach/chrome/inbox-strip.js +1 -199
- package/dist/clients/attach/chrome/recap.js +1 -19
- package/dist/clients/attach/chrome/review-wait.js +1 -22
- package/dist/clients/attach/chrome/roster.js +4 -275
- package/dist/clients/attach/chrome/status-line.js +1 -117
- package/dist/clients/attach/chrome/ticket-panel.js +1 -280
- package/dist/clients/attach/chrome/widgets.js +1 -51
- package/dist/clients/attach/command.js +1 -107
- package/dist/clients/attach/config.js +1 -274
- package/dist/clients/attach/input/capabilities.js +1 -104
- package/dist/clients/attach/input/clipboard-image.js +3 -220
- package/dist/clients/attach/input/completion-frecency.js +1 -141
- package/dist/clients/attach/input/controller.js +7 -377
- package/dist/clients/attach/input/overlay-owner.js +1 -199
- package/dist/clients/attach/input/ref-autocomplete.js +2 -176
- package/dist/clients/attach/input/titled-editor.js +4 -859
- package/dist/clients/attach/overlays/auth.js +2 -271
- package/dist/clients/attach/overlays/dialogs.js +2 -102
- package/dist/clients/attach/overlays/file-review.js +2 -128
- package/dist/clients/attach/overlays/graph.js +1 -661
- package/dist/clients/attach/overlays/help.js +1 -211
- package/dist/clients/attach/overlays/mcp.js +1 -302
- package/dist/clients/attach/overlays/pickers.js +1 -163
- package/dist/clients/attach/render/activity-slot.js +1 -13
- package/dist/clients/attach/render/assistant-message.js +1 -56
- package/dist/clients/attach/render/card-presentation.js +5 -218
- package/dist/clients/attach/render/chat-view.js +5 -1708
- package/dist/clients/attach/render/condensed-history.js +1 -60
- package/dist/clients/attach/render/context-message.js +1 -63
- package/dist/clients/attach/render/crtr-output.js +17 -905
- package/dist/clients/attach/render/diagram.js +7 -111
- package/dist/clients/attach/render/edit-diff.js +5 -304
- package/dist/clients/attach/render/glyph-codepoints.js +1 -42
- package/dist/clients/attach/render/group-activity.js +2 -263
- package/dist/clients/attach/render/group-recap.js +1 -152
- package/dist/clients/attach/render/markdown-source.js +5 -266
- package/dist/clients/attach/render/measured-container.js +1 -322
- package/dist/clients/attach/render/page-block.js +1 -183
- package/dist/clients/attach/render/scroll-animation.js +1 -80
- package/dist/clients/attach/render/tool-calls.js +3 -361
- package/dist/clients/attach/render/transcript-copy.js +2 -81
- package/dist/clients/attach/render/transcript-search.js +1 -152
- package/dist/clients/attach/render/viewport.js +1 -184
- package/dist/clients/attach/session/banner.js +1 -29
- package/dist/clients/attach/session/bindings.js +1 -71
- package/dist/clients/attach/session/chrome-refresh.js +1 -94
- package/dist/clients/attach/session/connection.js +1 -186
- package/dist/clients/attach/session/context.js +0 -16
- package/dist/clients/attach/session/editor-frame.js +1 -142
- package/dist/clients/attach/session/editor-inventory.js +6 -160
- package/dist/clients/attach/session/file-links.js +1 -68
- package/dist/clients/attach/session/focus-events.js +1 -12
- package/dist/clients/attach/session/frame.js +1 -214
- package/dist/clients/attach/session/frames.js +1 -188
- package/dist/clients/attach/session/identity.js +1 -26
- package/dist/clients/attach/session/input-wiring.js +1 -140
- package/dist/clients/attach/session/invariant.js +1 -15
- package/dist/clients/attach/session/keys.js +1 -77
- package/dist/clients/attach/session/layout.js +1 -59
- package/dist/clients/attach/session/mouse.js +1 -78
- package/dist/clients/attach/session/pane-focus.js +1 -42
- package/dist/clients/attach/session/pane-tag.js +1 -112
- package/dist/clients/attach/session/pi-assets.js +1 -24
- package/dist/clients/attach/session/pi-oauth-flows.js +1 -21
- package/dist/clients/attach/session/profile-files.js +1 -228
- package/dist/clients/attach/session/reconnect.js +1 -175
- package/dist/clients/attach/session/selection.js +3 -108
- package/dist/clients/attach/session/state-sync.js +1 -67
- package/dist/clients/attach/session/surface-frame.js +1 -73
- package/dist/clients/attach/session/surface-host.js +1 -255
- package/dist/clients/attach/session/teardown.js +5 -94
- package/dist/clients/attach/session/transcript-search.js +3 -151
- package/dist/clients/attach/session/whip-achievements.js +2 -145
- package/dist/clients/attach/session/whip.js +1 -362
- package/dist/clients/attach/slash/dispatch.js +1 -706
- package/dist/clients/attach/slash/prompt-preview.js +1 -121
- package/dist/clients/attach/viewer.js +441 -441
- package/dist/clients/conversation/projection.js +1 -324
- package/dist/clients/conversation/submit.js +1 -51
- package/dist/clients/inbox/controller.js +1 -701
- package/dist/clients/inbox/dto-adapt.js +1 -93
- package/dist/clients/inbox/layout.js +1 -9
- package/dist/clients/inbox/page-adapter.js +1 -55
- package/dist/clients/inbox/resolve.js +1 -35
- package/dist/clients/inbox/review/anchors.js +1 -89
- package/dist/clients/inbox/review/comments-client.js +1 -98
- package/dist/clients/inbox/review/companion-pane.js +1 -82
- package/dist/clients/inbox/review/document-surface.js +2 -1188
- package/dist/clients/inbox/review/frame.js +1 -216
- package/dist/clients/inbox/review/keys.js +1 -123
- package/dist/clients/inbox/review/launch.js +1 -151
- package/dist/clients/inbox/review/live-source.js +1 -160
- package/dist/clients/inbox/review/nvim.js +1 -44
- package/dist/clients/inbox/review/remap.js +1 -157
- package/dist/clients/inbox/review/review-client.js +1 -123
- package/dist/clients/inbox/review/roundtrip.js +3 -36
- package/dist/clients/inbox/review/state.js +4 -315
- package/dist/clients/inbox/review-adapter.js +1 -43
- package/dist/clients/inbox/surface.js +1 -152
- package/dist/clients/inbox/tui/ansi.js +3 -321
- package/dist/clients/inbox/tui/input.js +5 -392
- package/dist/clients/inbox/tui/keys.js +1 -104
- package/dist/clients/inbox/tui/page-body.js +1 -66
- package/dist/clients/inbox/tui/panel.js +1 -84
- package/dist/clients/inbox/tui/render.js +2 -368
- package/dist/clients/inbox/tui/slots.js +3 -134
- package/dist/clients/inbox/tui/types.js +0 -1
- package/dist/clients/inbox/tui.js +1 -86
- package/dist/clients/surfaces/host.js +0 -1
- package/dist/commands/api-client.js +4 -290
- package/dist/commands/attention.js +1 -215
- package/dist/commands/canvas-browse.js +1 -70
- package/dist/commands/canvas-config.js +2 -192
- package/dist/commands/canvas-history/grep.js +7 -85
- package/dist/commands/canvas-history/read.js +3 -50
- package/dist/commands/canvas-history/search.js +10 -99
- package/dist/commands/canvas-history/shared.js +1 -139
- package/dist/commands/canvas-history/stats.js +6 -68
- package/dist/commands/canvas-history.js +1 -32
- package/dist/commands/canvas-issue.js +14 -149
- package/dist/commands/canvas-prune.js +1 -108
- package/dist/commands/canvas-roster.js +1 -69
- package/dist/commands/canvas-snapshot.js +1 -34
- package/dist/commands/canvas-use.js +1 -61
- package/dist/commands/canvas.js +1 -49
- package/dist/commands/chord.js +1 -241
- package/dist/commands/cron.js +11 -534
- package/dist/commands/dashboard.js +1 -85
- package/dist/commands/human/components.js +3 -77
- package/dist/commands/human/feedback.js +1 -112
- package/dist/commands/human/prompts.js +1 -331
- package/dist/commands/human/queue.js +1 -191
- package/dist/commands/human/request.js +1 -266
- package/dist/commands/human/review.js +1 -288
- package/dist/commands/human/shared.js +1 -67
- package/dist/commands/human.js +4 -60
- package/dist/commands/memory/delete.js +1 -100
- package/dist/commands/memory/edit.js +21 -219
- package/dist/commands/memory/find.js +2 -244
- package/dist/commands/memory/history.js +5 -199
- package/dist/commands/memory/lint.js +1 -107
- package/dist/commands/memory/list.js +1 -142
- package/dist/commands/memory/move.js +1 -223
- package/dist/commands/memory/origin.js +1 -130
- package/dist/commands/memory/read.js +6 -232
- package/dist/commands/memory/shared.js +12 -802
- package/dist/commands/memory/write.js +13 -235
- package/dist/commands/memory.js +1 -30
- package/dist/commands/node/bash.js +5 -245
- package/dist/commands/node/create.js +3 -332
- package/dist/commands/node/inspect.js +12 -300
- package/dist/commands/node/lifecycle.js +2 -453
- package/dist/commands/node/message.js +1 -161
- package/dist/commands/node/outcome.js +4 -134
- package/dist/commands/node/pyramid.js +2 -79
- package/dist/commands/node/subscription.js +1 -78
- package/dist/commands/node/wait.js +7 -163
- package/dist/commands/node-context.js +2 -159
- package/dist/commands/node-inspect-artifacts.js +8 -109
- package/dist/commands/node-lifecycle-revive.js +1 -217
- package/dist/commands/node-snapshot.js +1 -37
- package/dist/commands/node-transcript.js +1 -62
- package/dist/commands/node-worktree.js +1 -138
- package/dist/commands/node.js +1 -29
- package/dist/commands/pkg/browse/actions.js +1 -198
- package/dist/commands/pkg/browse/catalog.js +1 -466
- package/dist/commands/pkg/browse/command-view.js +1 -191
- package/dist/commands/pkg/browse/detail-panel.js +1 -402
- package/dist/commands/pkg/browse/doc-view.js +1 -89
- package/dist/commands/pkg/browse/list-panel.js +2 -168
- package/dist/commands/pkg/browse/model.js +1 -36
- package/dist/commands/pkg/browse/shell.js +1 -640
- package/dist/commands/pkg/browse.js +1 -27
- package/dist/commands/pkg/market-inspect.js +1 -141
- package/dist/commands/pkg/market-manage.js +1 -327
- package/dist/commands/pkg/market.js +1 -14
- package/dist/commands/pkg/plugin-inspect.js +1 -168
- package/dist/commands/pkg/plugin-manage.js +17 -1109
- package/dist/commands/pkg/plugin.js +1 -14
- package/dist/commands/pkg/shared.js +1 -62
- package/dist/commands/pkg.js +1 -21
- package/dist/commands/profile/default.js +1 -139
- package/dist/commands/profile/delete.js +1 -66
- package/dist/commands/profile/env.js +3 -188
- package/dist/commands/profile/kind.js +2 -35
- package/dist/commands/profile/list.js +1 -43
- package/dist/commands/profile/meta.js +1 -67
- package/dist/commands/profile/new.js +1 -115
- package/dist/commands/profile/pause.js +1 -59
- package/dist/commands/profile/project.js +1 -113
- package/dist/commands/profile/rename.js +1 -38
- package/dist/commands/profile/show.js +1 -52
- package/dist/commands/profile.js +1 -35
- package/dist/commands/push.js +9 -265
- package/dist/commands/revive.js +10 -181
- package/dist/commands/surface/node/cycle.js +1 -83
- package/dist/commands/surface/node/focus.js +1 -81
- package/dist/commands/surface/node/id.js +1 -38
- package/dist/commands/surface/node/pin.js +1 -42
- package/dist/commands/surface/node/placement.js +1 -134
- package/dist/commands/surface-edit.js +1 -157
- package/dist/commands/surface-inbox.js +1 -98
- package/dist/commands/surface-inspect.js +1 -39
- package/dist/commands/surface-node.js +1 -19
- package/dist/commands/surface-reload.js +2 -134
- package/dist/commands/surface-tmux-spread.js +1 -214
- package/dist/commands/surface.js +1 -28
- package/dist/commands/sys/branch.js +1 -19
- package/dist/commands/sys/config.js +1 -353
- package/dist/commands/sys/context/admin/actions.js +2 -246
- package/dist/commands/sys/context/admin/detail-panel.js +1 -247
- package/dist/commands/sys/context/admin/docs-panel.js +1 -191
- package/dist/commands/sys/context/admin/list-view.js +1 -183
- package/dist/commands/sys/context/admin/model.js +1 -229
- package/dist/commands/sys/context/admin/rail-panel.js +1 -227
- package/dist/commands/sys/context/admin/read-view.js +2 -194
- package/dist/commands/sys/context/admin/shell.js +1 -910
- package/dist/commands/sys/context/admin.js +2 -126
- package/dist/commands/sys/context/doc.js +3 -197
- package/dist/commands/sys/context/prompt-review.js +11 -291
- package/dist/commands/sys/context/resolve.js +10 -489
- package/dist/commands/sys/context/sysprompt.js +5 -96
- package/dist/commands/sys/context.js +1 -20
- package/dist/commands/sys/daemon.js +1 -313
- package/dist/commands/sys/doctor.js +1 -617
- package/dist/commands/sys/feedback.js +7 -228
- package/dist/commands/sys/logs.js +3 -129
- package/dist/commands/sys/migrate.js +1 -94
- package/dist/commands/sys/panels/broker-limits-panel.js +2 -110
- package/dist/commands/sys/panels/dependencies-panel.js +1 -80
- package/dist/commands/sys/panels/keybindings-panel.js +1 -703
- package/dist/commands/sys/panels/models-panel.js +1 -1133
- package/dist/commands/sys/panels/plugins-panel.js +1 -80
- package/dist/commands/sys/panels/prefs-panel.js +1 -85
- package/dist/commands/sys/panels/profiles-panel.js +1 -601
- package/dist/commands/sys/panels/provider-panel.js +1 -538
- package/dist/commands/sys/settings-shell.js +1 -400
- package/dist/commands/sys/settings.js +1 -46
- package/dist/commands/sys/setup-core.js +6 -579
- package/dist/commands/sys/setup-settings-runner.js +1 -16
- package/dist/commands/sys/setup-wizard.js +1 -279
- package/dist/commands/sys/setup.js +1 -34
- package/dist/commands/sys/shared.js +1 -81
- package/dist/commands/sys/support/prepare.js +3 -239
- package/dist/commands/sys/support/submit.js +6 -524
- package/dist/commands/sys/support.js +1 -18
- package/dist/commands/sys/sync-deps.js +15 -498
- package/dist/commands/sys/sync-project-guidance.js +4 -481
- package/dist/commands/sys/sync-shared.js +1 -49
- package/dist/commands/sys/sync-skills.js +2 -311
- package/dist/commands/sys/sync.js +1 -18
- package/dist/commands/sys/update.js +1 -147
- package/dist/commands/sys/worktrees.js +5 -53
- package/dist/commands/sys.js +1 -18
- package/dist/core/activity-signal.js +2 -38
- package/dist/core/asset-root.js +1 -18
- package/dist/core/auth-file.js +2 -179
- package/dist/core/auth-interaction.js +3 -94
- package/dist/core/auto-update.js +4 -94
- package/dist/core/bash-guard.js +11 -393
- package/dist/core/bash-jobs.js +7 -411
- package/dist/core/bootstrap.js +2 -53
- package/dist/core/broker-client/client.js +1 -184
- package/dist/core/broker-client/index.js +1 -13
- package/dist/core/broker-client/transport-relay.js +1 -157
- package/dist/core/broker-client/transport-socket.js +1 -179
- package/dist/core/broker-client/transport.js +1 -26
- package/dist/core/canvas/attention.js +1 -47
- package/dist/core/canvas/boot-id.js +1 -26
- package/dist/core/canvas/boot.js +1 -186
- package/dist/core/canvas/browse/app.js +3 -919
- package/dist/core/canvas/browse/model.js +1 -477
- package/dist/core/canvas/browse/pins.js +1 -29
- package/dist/core/canvas/browse/render.js +3 -1055
- package/dist/core/canvas/canvas.js +15 -922
- package/dist/core/canvas/crons.js +11 -481
- package/dist/core/canvas/daemon-owner.js +2 -146
- package/dist/core/canvas/db.js +2 -100
- package/dist/core/canvas/deliveries.js +22 -283
- package/dist/core/canvas/delivery-contract.js +1 -8
- package/dist/core/canvas/executions.js +1 -68
- package/dist/core/canvas/extensions.js +1 -83
- package/dist/core/canvas/focuses.js +1 -77
- package/dist/core/canvas/history.js +24 -860
- package/dist/core/canvas/index.js +1 -15
- package/dist/core/canvas/install-id.js +1 -84
- package/dist/core/canvas/labels.js +1 -43
- package/dist/core/canvas/meta-file.js +1 -89
- package/dist/core/canvas/migrations.js +41 -1150
- package/dist/core/canvas/nav-model.js +1 -231
- package/dist/core/canvas/nav-render.js +1 -260
- package/dist/core/canvas/node-order.js +1 -37
- package/dist/core/canvas/node-recap.js +2 -67
- package/dist/core/canvas/node-sql-migration.js +2 -209
- package/dist/core/canvas/paths.js +1 -153
- package/dist/core/canvas/pid.js +4 -683
- package/dist/core/canvas/recovery.js +3 -565
- package/dist/core/canvas/remote-canvas-source.js +1 -288
- package/dist/core/canvas/remote-transport.js +1 -57
- package/dist/core/canvas/render-source.js +10 -635
- package/dist/core/canvas/sessions.js +1 -78
- package/dist/core/canvas/source.js +1 -47
- package/dist/core/canvas/status-glyph.js +1 -132
- package/dist/core/canvas/telemetry.js +1 -35
- package/dist/core/canvas/types.js +1 -6
- package/dist/core/canvas/waits.js +4 -68
- package/dist/core/canvas/worktrees.js +1 -93
- package/dist/core/clipboard-text.js +1 -57
- package/dist/core/command-hooks/artifact.js +1 -145
- package/dist/core/command-hooks/catalog.js +1 -38
- package/dist/core/command-hooks/compose.js +1 -99
- package/dist/core/command-hooks/discovery.js +1 -228
- package/dist/core/command-hooks/help.js +1 -18
- package/dist/core/command-hooks/index.js +1 -7
- package/dist/core/command-hooks/lifecycle-catalog.js +1 -9
- package/dist/core/command-hooks/lifecycle-create.js +1 -51
- package/dist/core/command-hooks/report.js +1 -28
- package/dist/core/command-hooks/schema.js +1 -157
- package/dist/core/command-hooks/transport/exec-invoke.js +1 -276
- package/dist/core/command-hooks/transport/exec-lifecycle.js +1 -211
- package/dist/core/command-manifests/manifest.js +1 -324
- package/dist/core/command-manifests/registry.js +1 -118
- package/dist/core/command-manifests/schema.js +1 -736
- package/dist/core/command-plugins/bundle.js +1 -261
- package/dist/core/command-plugins/compose.js +1 -65
- package/dist/core/command-plugins/discovery.js +1 -245
- package/dist/core/command-plugins/endpoint.js +1 -48
- package/dist/core/command-plugins/extensions.js +1 -166
- package/dist/core/command-plugins/help-addenda.js +1 -44
- package/dist/core/command-plugins/presence.js +1 -17
- package/dist/core/command-plugins/revalidate.js +2 -152
- package/dist/core/command-plugins/transport/exec-invoke.js +1 -215
- package/dist/core/command-plugins/transport/http-fetch.js +1 -68
- package/dist/core/command-plugins/transport/http-invoke.js +3 -546
- package/dist/core/command.js +10 -739
- package/dist/core/config.js +1 -1059
- package/dist/core/document-lines.js +3 -6
- package/dist/core/env-name.js +1 -9
- package/dist/core/errors.js +1 -52
- package/dist/core/events/emit.js +1 -17
- package/dist/core/events/envelope.js +1 -84
- package/dist/core/events/errors.js +1 -69
- package/dist/core/events/index.js +1 -4
- package/dist/core/events/operation-id.js +1 -24
- package/dist/core/events/read.js +1 -623
- package/dist/core/events/serialize.js +1 -199
- package/dist/core/events/source.js +1 -31
- package/dist/core/events/types.js +1 -11
- package/dist/core/exclusive-lock.js +1 -197
- package/dist/core/fault-classifier.js +1 -96
- package/dist/core/feed/feed.js +7 -202
- package/dist/core/feed/inbox-migrate.js +3 -135
- package/dist/core/feed/inbox.js +10 -122
- package/dist/core/feed/messages.js +6 -212
- package/dist/core/frontmatter.js +1 -35
- package/dist/core/fs-utils.js +3 -202
- package/dist/core/git.js +2 -103
- package/dist/core/help.js +9 -310
- package/dist/core/host-exports/builtins.js +9 -68
- package/dist/core/host-exports/export.js +3 -124
- package/dist/core/human/action-binding.js +1 -40
- package/dist/core/human/answer-text.js +5 -100
- package/dist/core/human/answer.js +1 -119
- package/dist/core/human/claim.js +3 -67
- package/dist/core/human/completion.js +1 -27
- package/dist/core/human/component-docs.js +78 -272
- package/dist/core/human/convention.js +2 -82
- package/dist/core/human/feedback-companion.js +1 -106
- package/dist/core/human/feedback.js +1 -88
- package/dist/core/human/page-authoring.js +1 -19
- package/dist/core/human/page-catalog.js +1 -172
- package/dist/core/human/page-errors.js +1 -7
- package/dist/core/human/page-eval.js +1 -125
- package/dist/core/human/page-html-markdown.js +8 -260
- package/dist/core/human/page-markdown.js +17 -295
- package/dist/core/human/page-schema.js +1 -373
- package/dist/core/human/page-synth.js +8 -27
- package/dist/core/human/page.js +1 -198
- package/dist/core/human/requests.js +15 -466
- package/dist/core/human/review-schema.js +1 -34
- package/dist/core/human/root.js +1 -11
- package/dist/core/human/scan.js +1 -69
- package/dist/core/human/summary.js +1 -5
- package/dist/core/human/tickets.js +1 -171
- package/dist/core/human/types.js +0 -1
- package/dist/core/human/visible-paths.js +1 -77
- package/dist/core/human-actions.js +1 -101
- package/dist/core/inspector/chrome.js +1 -14
- package/dist/core/inspector/contract.js +0 -1
- package/dist/core/inspector/core.js +2 -295
- package/dist/core/inspector/host.js +4 -538
- package/dist/core/inspector/model.js +2 -226
- package/dist/core/inspector/text.js +6 -45
- package/dist/core/inspector/transport.js +1 -36
- package/dist/core/inspector/tui.js +2 -295
- package/dist/core/installed-plugins.js +1 -78
- package/dist/core/io.js +7 -356
- package/dist/core/keybindings/attach-control.js +1 -42
- package/dist/core/keybindings/background-bash.js +1 -33
- package/dist/core/keybindings/catalog.js +1 -256
- package/dist/core/keybindings/inbox.js +1 -25
- package/dist/core/keybindings/index.js +1 -7
- package/dist/core/keybindings/match.js +1 -127
- package/dist/core/keybindings/persistence.js +1 -49
- package/dist/core/keybindings/resolve.js +1 -348
- package/dist/core/keybindings/types.js +0 -1
- package/dist/core/locked-file.js +1 -118
- package/dist/core/log.js +3 -27
- package/dist/core/manifest-recovery.js +1 -72
- package/dist/core/manifest-stale.js +1 -39
- package/dist/core/manifest.js +1 -20
- package/dist/core/memory/doc-link-grammar.js +2 -109
- package/dist/core/memory/extensions.js +1 -221
- package/dist/core/memory/history.js +6 -268
- package/dist/core/memory/identity.js +1 -181
- package/dist/core/memory/inline-ref-grammar.js +1 -98
- package/dist/core/memory/inline-ref-guidance.js +2 -35
- package/dist/core/memory/inline-ref-inventory.js +1 -59
- package/dist/core/memory/lint.js +2 -671
- package/dist/core/memory/project-namespace.js +2 -85
- package/dist/core/memory/repository-association.js +1 -129
- package/dist/core/memory/tree.js +1 -93
- package/dist/core/memory-resolver.js +2 -611
- package/dist/core/model-config.js +1 -107
- package/dist/core/model-routes.js +1 -201
- package/dist/core/nested-stores.js +2 -166
- package/dist/core/output.js +7 -99
- package/dist/core/pagination.js +1 -88
- package/dist/core/plugin-swap-lock.js +1 -31
- package/dist/core/pool-credential-store.js +1 -116
- package/dist/core/predicate.js +1 -191
- package/dist/core/preview-registry.js +2 -411
- package/dist/core/preview-result-path.js +1 -26
- package/dist/core/profiles/default-binding.js +1 -24
- package/dist/core/profiles/deletion-reservation.js +1 -42
- package/dist/core/profiles/env-store.js +2 -162
- package/dist/core/profiles/fuzzy-match.js +1 -92
- package/dist/core/profiles/manifest.js +1 -574
- package/dist/core/profiles/select.js +35 -741
- package/dist/core/profiles/state-block.js +3 -17
- package/dist/core/provider-error-recognition.js +1 -74
- package/dist/core/provider-failure.js +1 -86
- package/dist/core/provider-management.js +1 -22
- package/dist/core/remote-canvas-target.js +1 -30
- package/dist/core/render.js +18 -138
- package/dist/core/resolver.js +1 -111
- package/dist/core/review/birth.js +1 -52
- package/dist/core/review/comments.js +5 -279
- package/dist/core/review/companion.js +1 -215
- package/dist/core/review/document.js +2 -138
- package/dist/core/review/project.js +1 -36
- package/dist/core/review/realize.js +1 -71
- package/dist/core/review/remap.js +4 -141
- package/dist/core/review/signal.js +1 -12
- package/dist/core/review/stage.js +1 -184
- package/dist/core/review/store.js +1 -168
- package/dist/core/review/types.js +1 -23
- package/dist/core/runtime/advertised-command-invocation.js +1 -233
- package/dist/core/runtime/auth-reload.js +1 -67
- package/dist/core/runtime/banner.js +1 -51
- package/dist/core/runtime/bearings-render.js +18 -250
- package/dist/core/runtime/bearings.js +7 -194
- package/dist/core/runtime/bin-contributions.js +2 -186
- package/dist/core/runtime/boot-root.js +1 -107
- package/dist/core/runtime/branded-host.js +2 -264
- package/dist/core/runtime/broker/auth-reload.js +1 -157
- package/dist/core/runtime/broker/client-registry.js +1 -179
- package/dist/core/runtime/broker/daemon-ops.js +1 -88
- package/dist/core/runtime/broker/engine-drive.js +1 -354
- package/dist/core/runtime/broker/engine-routing.js +1 -211
- package/dist/core/runtime/broker/event-projection.js +1 -193
- package/dist/core/runtime/broker/extension-abort.js +1 -36
- package/dist/core/runtime/broker/fault-retry.js +1 -588
- package/dist/core/runtime/broker/frame-client.js +1 -132
- package/dist/core/runtime/broker/frame-dispatch.js +1 -183
- package/dist/core/runtime/broker/frame-engine-control.js +1 -231
- package/dist/core/runtime/broker/frame-memory-refs.js +1 -41
- package/dist/core/runtime/broker/frame-model-query.js +1 -69
- package/dist/core/runtime/broker/frame-read.js +1 -116
- package/dist/core/runtime/broker/frame-replies.js +1 -64
- package/dist/core/runtime/broker/frame-session.js +4 -203
- package/dist/core/runtime/broker/held-deferred-inbox.js +1 -13
- package/dist/core/runtime/broker/inbox.js +13 -163
- package/dist/core/runtime/broker/node-named.js +1 -27
- package/dist/core/runtime/broker/read-ops.js +1 -171
- package/dist/core/runtime/broker/rebind.js +1 -318
- package/dist/core/runtime/broker/tool-groups.js +1 -246
- package/dist/core/runtime/broker/turn-admission.js +1 -31
- package/dist/core/runtime/broker/turn-ignition.js +1 -84
- package/dist/core/runtime/broker-cli.js +3 -81
- package/dist/core/runtime/broker-extension-render.js +5 -135
- package/dist/core/runtime/broker-inventory.js +1 -116
- package/dist/core/runtime/broker-persona-guidance.js +4 -154
- package/dist/core/runtime/broker-protocol.js +3 -152
- package/dist/core/runtime/broker-request.js +1 -85
- package/dist/core/runtime/broker-sdk.js +1 -129
- package/dist/core/runtime/broker.js +1 -1214
- package/dist/core/runtime/canvas-extensions.js +1 -96
- package/dist/core/runtime/chat-inventory-rows.js +1 -105
- package/dist/core/runtime/close.js +1 -265
- package/dist/core/runtime/command-expansion.js +9 -104
- package/dist/core/runtime/command-surface.js +1 -117
- package/dist/core/runtime/connectivity.js +1 -73
- package/dist/core/runtime/deliver-live.js +1 -88
- package/dist/core/runtime/fault-recovery.js +1 -83
- package/dist/core/runtime/fault.js +1 -17
- package/dist/core/runtime/fleet.js +1 -58
- package/dist/core/runtime/front-door-env.js +1 -16
- package/dist/core/runtime/front-door.js +7 -183
- package/dist/core/runtime/headless-pi.js +1 -161
- package/dist/core/runtime/host.js +1 -457
- package/dist/core/runtime/interactive-deliver.js +1 -51
- package/dist/core/runtime/invocation.js +0 -10
- package/dist/core/runtime/kickoff.js +30 -327
- package/dist/core/runtime/launch-config-worker.js +1 -12
- package/dist/core/runtime/launch-prompt.js +4 -13
- package/dist/core/runtime/launch-target.js +1 -55
- package/dist/core/runtime/launch.js +1 -483
- package/dist/core/runtime/lifecycle.js +2 -213
- package/dist/core/runtime/managed-provider-cooling.js +1 -62
- package/dist/core/runtime/memory.js +1 -17
- package/dist/core/runtime/model-registry.js +1 -13
- package/dist/core/runtime/model-selection.js +1 -135
- package/dist/core/runtime/model-swap.js +1 -86
- package/dist/core/runtime/naming.js +14 -298
- package/dist/core/runtime/nerd-font.js +2 -127
- package/dist/core/runtime/node-read.js +2 -386
- package/dist/core/runtime/nodes.js +1 -331
- package/dist/core/runtime/outcome-document.js +1 -97
- package/dist/core/runtime/package-health.js +4 -99
- package/dist/core/runtime/persona.js +2 -55
- package/dist/core/runtime/pi-cli.js +1 -65
- package/dist/core/runtime/pi-vendored.js +1 -66
- package/dist/core/runtime/placement-tmux.js +1 -81
- package/dist/core/runtime/placement.js +1 -386
- package/dist/core/runtime/promote.js +1 -174
- package/dist/core/runtime/prospective-inventory-cli.js +3 -61
- package/dist/core/runtime/prospective-inventory.js +2 -88
- package/dist/core/runtime/recap.js +27 -103
- package/dist/core/runtime/recycle.js +1 -190
- package/dist/core/runtime/reopen.js +1 -138
- package/dist/core/runtime/reset.js +1 -245
- package/dist/core/runtime/resume-root.js +10 -290
- package/dist/core/runtime/revive-all.js +1 -107
- package/dist/core/runtime/revive.js +4 -544
- package/dist/core/runtime/roadmap.js +4 -38
- package/dist/core/runtime/session-branch.js +1 -46
- package/dist/core/runtime/session-cycles.js +1 -110
- package/dist/core/runtime/session-list-cache.js +1 -406
- package/dist/core/runtime/session-visibility.js +1 -99
- package/dist/core/runtime/shell-expansion.js +9 -100
- package/dist/core/runtime/situational-context.js +2 -67
- package/dist/core/runtime/situational-live.js +1 -41
- package/dist/core/runtime/spawn-env.js +1 -255
- package/dist/core/runtime/spawn.js +3 -577
- package/dist/core/runtime/stamp/channel.js +1 -76
- package/dist/core/runtime/stamp/protocol.js +1 -113
- package/dist/core/runtime/stop-guard.js +7 -116
- package/dist/core/runtime/stop-signals.js +1 -46
- package/dist/core/runtime/stream-watchdog.js +1 -134
- package/dist/core/runtime/structured-output.js +4 -156
- package/dist/core/runtime/surface-bg.js +1 -85
- package/dist/core/runtime/tmux-bindings.js +4 -730
- package/dist/core/runtime/tmux-chrome.js +1 -5
- package/dist/core/runtime/tmux-driver.js +7 -637
- package/dist/core/runtime/tool-group-summary.js +6 -85
- package/dist/core/runtime/turn-visibility.js +1 -31
- package/dist/core/runtime/view-socket.js +1 -83
- package/dist/core/runtime/warm-pool.js +1 -395
- package/dist/core/scope.js +1 -254
- package/dist/core/scoped-state/db.js +1 -135
- package/dist/core/scoped-state/migrate.js +3 -181
- package/dist/core/scoped-state/paths.js +1 -27
- package/dist/core/scoped-state/profiles.js +1 -62
- package/dist/core/scoped-state/providers.js +1 -8
- package/dist/core/scoped-state/schema.js +3 -16
- package/dist/core/scoped-state/settings.js +1 -82
- package/dist/core/secrets.js +2 -55
- package/dist/core/self-update.js +1 -71
- package/dist/core/session-model/session-state.js +1 -180
- package/dist/core/shell-segments.js +4 -169
- package/dist/core/spawn.js +1 -26
- package/dist/core/stdout-errors.js +1 -14
- package/dist/core/subscription-state.js +3 -193
- package/dist/core/substrate/frontmatter-validation.js +1 -105
- package/dist/core/substrate/gate-explain.js +1 -424
- package/dist/core/substrate/gate.js +1 -26
- package/dist/core/substrate/index.js +1 -30
- package/dist/core/substrate/injected-store.js +1 -249
- package/dist/core/substrate/listings.js +1 -115
- package/dist/core/substrate/on-read-node.js +1 -36
- package/dist/core/substrate/on-read.js +9 -315
- package/dist/core/substrate/plan.js +1 -266
- package/dist/core/substrate/render-node.js +1 -30
- package/dist/core/substrate/render.js +65 -689
- package/dist/core/substrate/schema.js +1 -186
- package/dist/core/substrate/session-cache.js +1 -83
- package/dist/core/substrate/subject-fields.js +1 -35
- package/dist/core/substrate/subject.js +1 -47
- package/dist/core/substrate/surface-match.js +1 -242
- package/dist/core/termrender/code-doc.js +5 -92
- package/dist/core/termrender/display.js +2 -56
- package/dist/core/termrender/termrender.js +14 -719
- package/dist/core/termrender/version.js +1 -1
- package/dist/core/timing.js +2 -94
- package/dist/core/tui/draw.js +2 -378
- package/dist/core/tui/fuzzy.js +1 -38
- package/dist/core/tui/markdown.js +3 -407
- package/dist/core/tui/page-host.js +1 -74
- package/dist/core/tui/panel.js +1 -137
- package/dist/core/tui/terminal.js +2 -100
- package/dist/core/user-settings.js +1 -454
- package/dist/core/wake.js +1 -296
- package/dist/core/worktree-close.js +6 -228
- package/dist/core/worktree-containment.js +3 -48
- package/dist/core/worktree-landing.js +4 -56
- package/dist/core/worktree-mutation-async.js +10 -280
- package/dist/core/worktree-quarantine.js +1 -54
- package/dist/core/worktree-sweep.js +6 -453
- package/dist/core/worktree.js +18 -899
- package/dist/daemon/api/bridge.js +8 -418
- package/dist/daemon/api/handlers/attach.js +1 -65
- package/dist/daemon/api/handlers/bash-jobs.js +2 -91
- package/dist/daemon/api/handlers/broker-ops.js +1 -447
- package/dist/daemon/api/handlers/broker-recovery.js +1 -251
- package/dist/daemon/api/handlers/canvas.js +6 -490
- package/dist/daemon/api/handlers/chat-inventory.js +1 -25
- package/dist/daemon/api/handlers/crons.js +1 -373
- package/dist/daemon/api/handlers/daemon.js +1 -76
- package/dist/daemon/api/handlers/feedback-comments.js +3 -199
- package/dist/daemon/api/handlers/files.js +1 -63
- package/dist/daemon/api/handlers/focus.js +1 -92
- package/dist/daemon/api/handlers/health.js +1 -76
- package/dist/daemon/api/handlers/human-requests.js +1 -379
- package/dist/daemon/api/handlers/human.js +1 -3
- package/dist/daemon/api/handlers/inbox-page.js +1 -89
- package/dist/daemon/api/handlers/inbox.js +1 -301
- package/dist/daemon/api/handlers/memory.js +1 -50
- package/dist/daemon/api/handlers/messages.js +2 -506
- package/dist/daemon/api/handlers/model-config.js +1 -44
- package/dist/daemon/api/handlers/modelauth.js +1 -165
- package/dist/daemon/api/handlers/node-outcomes.js +1 -181
- package/dist/daemon/api/handlers/nodes.js +1 -939
- package/dist/daemon/api/handlers/profiles.js +1 -140
- package/dist/daemon/api/handlers/prospective-chat-inventory.js +1 -59
- package/dist/daemon/api/handlers/reports.js +16 -332
- package/dist/daemon/api/handlers/review-comments.js +1 -465
- package/dist/daemon/api/handlers/reviews.js +1 -200
- package/dist/daemon/api/handlers/subscriptions.js +1 -53
- package/dist/daemon/api/handlers/validate.js +1 -58
- package/dist/daemon/api/handlers/worktree.js +1 -39
- package/dist/daemon/api/map.js +2 -735
- package/dist/daemon/api/router.js +1 -190
- package/dist/daemon/api/server.js +11 -408
- package/dist/daemon/boot-migrations.js +1 -31
- package/dist/daemon/companion-retire.js +1 -34
- package/dist/daemon/control.js +1 -22
- package/dist/daemon/cron/armed-context.js +1 -100
- package/dist/daemon/cron/capture.js +2 -45
- package/dist/daemon/cron/disposition.js +1 -55
- package/dist/daemon/cron/escalation.js +3 -124
- package/dist/daemon/cron/held.js +1 -20
- package/dist/daemon/cron/lease-recovery.js +1 -119
- package/dist/daemon/cron/live-runs.js +1 -23
- package/dist/daemon/cron/passes.js +1 -58
- package/dist/daemon/cron/settle.js +1 -61
- package/dist/daemon/cron/sinks.js +2 -59
- package/dist/daemon/cron-run.js +1 -405
- package/dist/daemon/crtrd-cli.js +1 -23
- package/dist/daemon/crtrd.js +8 -854
- package/dist/daemon/delivery/run-delivery.js +1 -164
- package/dist/daemon/fleet.js +17 -475
- package/dist/daemon/human/finish.js +10 -179
- package/dist/daemon/human/settle.js +1 -89
- package/dist/daemon/human/sweep.js +1 -66
- package/dist/daemon/manage.js +2 -595
- package/dist/daemon/messaging/node-message.js +1 -99
- package/dist/daemon/park-activity.js +1 -30
- package/dist/daemon/park-pending.js +1 -52
- package/dist/daemon/pidfile.js +1 -37
- package/dist/daemon/profile-delete.js +1 -306
- package/dist/daemon/reconcilers/bash-deadline.js +1 -80
- package/dist/daemon/reconcilers/broker-supervision.js +4 -761
- package/dist/daemon/reconcilers/controller-death.js +1 -14
- package/dist/daemon/reconcilers/cron-lane.js +1 -29
- package/dist/daemon/reconcilers/delivery-lane.js +1 -130
- package/dist/daemon/reconcilers/live-obligation.js +1 -87
- package/dist/daemon/reconcilers/managed-worktree-sweep.js +1 -202
- package/dist/daemon/reconcilers/node-deadline.js +1 -82
- package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.js +1 -172
- package/dist/daemon/reconcilers/node-lifecycle/respawn-policy.js +1 -59
- package/dist/daemon/reconcilers/node-lifecycle/terminating.js +1 -12
- package/dist/daemon/reconcilers/node-lifecycle/tick.js +1 -146
- package/dist/daemon/reconcilers/node-lifecycle/wants-execution.js +1 -11
- package/dist/daemon/reconcilers/pending-review-submit.js +1 -36
- package/dist/daemon/reconcilers/storage-maintenance.js +1 -207
- package/dist/daemon/review/comment-notify.js +2 -109
- package/dist/daemon/review/companion.js +1 -29
- package/dist/daemon/review/deliver.js +3 -8
- package/dist/daemon/review/finish.js +1 -122
- package/dist/daemon/review/sweep.js +1 -18
- package/dist/daemon/startup-policy.js +1 -1
- package/dist/daemon/supervise-cadence.js +1 -6
- package/dist/hook-authoring.js +5 -447
- package/dist/hook-process.js +1 -34
- package/dist/index.js +1 -52
- package/dist/migrations/001-surfaces-frontmatter.js +1 -161
- package/dist/migrations/002-profile-project-memory.js +1 -72
- package/dist/migrations/003-repository-root-memory-identity/front-door.js +11 -231
- package/dist/migrations/003-repository-root-memory-identity/index.js +5 -513
- package/dist/migrations/003-repository-root-memory-identity/references.js +5 -469
- package/dist/migrations/003-repository-root-memory-identity/repository-facts.js +3 -349
- package/dist/migrations/activation.js +2 -89
- package/dist/migrations/convergent.js +2 -82
- package/dist/migrations/corpus.js +3 -483
- package/dist/migrations/frontmatter-splice.js +8 -176
- package/dist/migrations/profile-manifests.js +2 -70
- package/dist/migrations/registry.js +1 -42
- package/dist/migrations/runner.js +1 -85
- package/dist/migrations/types.js +0 -24
- package/dist/pi-extensions/broker-local.js +2 -106
- package/dist/pi-extensions/canvas-bash-valve.js +7 -461
- package/dist/pi-extensions/canvas-context-intro.js +2 -113
- package/dist/pi-extensions/canvas-doc-substrate.js +9 -178
- package/dist/pi-extensions/canvas-goal-capture.js +1 -83
- package/dist/pi-extensions/canvas-inbox-watcher.js +1 -1010
- package/dist/pi-extensions/canvas-passive-context.js +14 -203
- package/dist/pi-extensions/canvas-preview-result.js +2 -72
- package/dist/pi-extensions/canvas-prompt-scrub.js +2 -54
- package/dist/pi-extensions/canvas-recap.js +11 -405
- package/dist/pi-extensions/canvas-review-boundary.js +3 -63
- package/dist/pi-extensions/canvas-stamp.js +2 -77
- package/dist/pi-extensions/canvas-stophook.js +1 -643
- package/dist/pi-extensions/canvas-structured-output.js +13 -35
- package/dist/pi-extensions/canvas-tool-guide.js +9 -78
- package/dist/pi-extensions/envelope-merge.js +8 -29
- package/dist/prompts/review.js +20 -42
- package/dist/shared/birth-announcement.js +1 -25
- package/dist/shared/crtr-version.js +1 -18
- package/dist/shared/env.js +1 -214
- package/dist/shared/generated-context.js +11 -226
- package/dist/shared/predicates.js +1 -4
- package/dist/shared/shell-quote.js +1 -5
- package/dist/shared/tool-groups.js +1 -64
- package/dist/shared/working-activity.js +1 -27
- package/dist/suppress-experimental-warnings.js +1 -15
- package/dist/types.js +1 -185
- package/docs/public-api.md +10 -9
- package/package.json +5 -4
- package/runtime.lock.json +5 -5
- package/dist/api/__tests__/integration/client.test.d.ts +0 -1
- package/dist/api/__tests__/integration/client.test.js +0 -163
- package/dist/builtin-pi-packages/pi-crtr-extensions/__tests__/insights-active-init.test.ts +0 -98
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-commands.test.ts +0 -93
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/integration/provider-rotation.test.ts +0 -2530
- package/dist/clients/__tests__/helpers/human-daemon.d.ts +0 -11
- package/dist/clients/__tests__/helpers/human-daemon.js +0 -60
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/attach-remote-readonly.test.js +0 -97
- package/dist/clients/attach/__tests__/bash-call-width.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/bash-call-width.test.js +0 -38
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +0 -175
- package/dist/clients/attach/__tests__/completion-frecency.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/completion-frecency.test.js +0 -35
- package/dist/clients/attach/__tests__/context-message.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/context-message.test.js +0 -130
- package/dist/clients/attach/__tests__/crtr-output.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/crtr-output.test.js +0 -68
- package/dist/clients/attach/__tests__/diagram.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/diagram.test.js +0 -42
- package/dist/clients/attach/__tests__/edit-diff.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/edit-diff.test.js +0 -31
- package/dist/clients/attach/__tests__/frame-selection.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/frame-selection.test.js +0 -84
- package/dist/clients/attach/__tests__/group-activity.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/group-activity.test.js +0 -165
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/oauth-dialog-lifecycle.test.js +0 -83
- package/dist/clients/attach/__tests__/pane-tag-successor.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/pane-tag-successor.test.js +0 -56
- package/dist/clients/attach/__tests__/profile-files.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/profile-files.test.js +0 -21
- package/dist/clients/attach/__tests__/prompt-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/prompt-preview.test.js +0 -21
- package/dist/clients/attach/__tests__/ref-autocomplete.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/ref-autocomplete.test.js +0 -64
- package/dist/clients/attach/__tests__/titled-editor-paste.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-paste.test.js +0 -114
- package/dist/clients/attach/__tests__/titled-editor-preview.test.d.ts +0 -1
- package/dist/clients/attach/__tests__/titled-editor-preview.test.js +0 -83
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/inbox-controller.test.js +0 -81
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/mount-panel.test.js +0 -135
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.d.ts +0 -1
- package/dist/clients/inbox/__tests__/integration/stale-row-activation.test.js +0 -66
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/editor-roundtrip.test.js +0 -35
- package/dist/clients/inbox/review/__tests__/review-core.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/review-core.test.js +0 -52
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.d.ts +0 -1
- package/dist/clients/inbox/review/__tests__/teardown-notice.test.js +0 -100
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.d.ts +0 -1
- package/dist/commands/__tests__/api-client-cold-start-diagnostic.test.js +0 -69
- package/dist/commands/__tests__/human.test.d.ts +0 -1
- package/dist/commands/__tests__/human.test.js +0 -172
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/dashboard-snapshot.test.js +0 -237
- package/dist/commands/__tests__/integration/migrate.test.d.ts +0 -1
- package/dist/commands/__tests__/integration/migrate.test.js +0 -1330
- package/dist/commands/__tests__/node-message.test.d.ts +0 -1
- package/dist/commands/__tests__/node-message.test.js +0 -112
- package/dist/commands/__tests__/node-new.test.d.ts +0 -1
- package/dist/commands/__tests__/node-new.test.js +0 -58
- package/dist/commands/__tests__/revive-now-gate.test.d.ts +0 -1
- package/dist/commands/__tests__/revive-now-gate.test.js +0 -62
- package/dist/commands/__tests__/seam/daemon-status.test.d.ts +0 -1
- package/dist/commands/__tests__/seam/daemon-status.test.js +0 -29
- package/dist/commands/__tests__/surface-reload-target.test.d.ts +0 -1
- package/dist/commands/__tests__/surface-reload-target.test.js +0 -21
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/command-selector-and-mutation-guards.test.js +0 -379
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/memory-list-and-lint-ignore.test.js +0 -124
- package/dist/commands/memory/__tests__/repository-root-lint.test.d.ts +0 -1
- package/dist/commands/memory/__tests__/repository-root-lint.test.js +0 -148
- package/dist/commands/sys/__tests__/config-model-ladders.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/config-model-ladders.test.js +0 -114
- package/dist/commands/sys/__tests__/setup-core.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/setup-core.test.js +0 -45
- package/dist/commands/sys/__tests__/sync-project-guidance.test.d.ts +0 -1
- package/dist/commands/sys/__tests__/sync-project-guidance.test.js +0 -244
- package/dist/core/__tests__/bash-guard.test.d.ts +0 -1
- package/dist/core/__tests__/bash-guard.test.js +0 -190
- package/dist/core/__tests__/boot-fault-attempt.test.d.ts +0 -1
- package/dist/core/__tests__/boot-fault-attempt.test.js +0 -105
- package/dist/core/__tests__/boot.test.d.ts +0 -1
- package/dist/core/__tests__/boot.test.js +0 -274
- package/dist/core/__tests__/branded-host-concurrency.test.d.ts +0 -1
- package/dist/core/__tests__/branded-host-concurrency.test.js +0 -72
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/broker-extension-canvas-db-boundary.test.js +0 -75
- package/dist/core/__tests__/broker-launch-candidates.test.d.ts +0 -1
- package/dist/core/__tests__/broker-launch-candidates.test.js +0 -311
- package/dist/core/__tests__/broker-preflight.test.d.ts +0 -1
- package/dist/core/__tests__/broker-preflight.test.js +0 -95
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.d.ts +0 -1
- package/dist/core/__tests__/broker-stream-watchdog-floor.test.js +0 -82
- package/dist/core/__tests__/broker-turn-admission.test.d.ts +0 -1
- package/dist/core/__tests__/broker-turn-admission.test.js +0 -44
- package/dist/core/__tests__/canvas-db-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-db-boundary.test.js +0 -46
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-hold.test.js +0 -710
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher-naming.test.js +0 -310
- package/dist/core/__tests__/canvas-inbox-watcher.test.d.ts +0 -1
- package/dist/core/__tests__/canvas-inbox-watcher.test.js +0 -397
- package/dist/core/__tests__/canvas.test.d.ts +0 -1
- package/dist/core/__tests__/canvas.test.js +0 -138
- package/dist/core/__tests__/child-death-wake.test.d.ts +0 -1
- package/dist/core/__tests__/child-death-wake.test.js +0 -153
- package/dist/core/__tests__/cli-help-contract.test.d.ts +0 -1
- package/dist/core/__tests__/cli-help-contract.test.js +0 -152
- package/dist/core/__tests__/close.test.d.ts +0 -1
- package/dist/core/__tests__/close.test.js +0 -284
- package/dist/core/__tests__/collectible.test.d.ts +0 -1
- package/dist/core/__tests__/collectible.test.js +0 -89
- package/dist/core/__tests__/config-change-delta.test.d.ts +0 -1
- package/dist/core/__tests__/config-change-delta.test.js +0 -108
- package/dist/core/__tests__/context-intro.test.d.ts +0 -1
- package/dist/core/__tests__/context-intro.test.js +0 -123
- package/dist/core/__tests__/cron-armed-context-failure.test.d.ts +0 -1
- package/dist/core/__tests__/cron-armed-context-failure.test.js +0 -150
- package/dist/core/__tests__/cron-held-settlement.test.d.ts +0 -1
- package/dist/core/__tests__/cron-held-settlement.test.js +0 -240
- package/dist/core/__tests__/cron-node-sink-parked-root.test.d.ts +0 -1
- package/dist/core/__tests__/cron-node-sink-parked-root.test.js +0 -166
- package/dist/core/__tests__/cron-self-cancel-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/cron-self-cancel-delivery.test.js +0 -84
- package/dist/core/__tests__/cron-timeout-descendants.test.d.ts +0 -1
- package/dist/core/__tests__/cron-timeout-descendants.test.js +0 -114
- package/dist/core/__tests__/daemon-boot.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-boot.test.js +0 -422
- package/dist/core/__tests__/daemon-wedge.test.d.ts +0 -1
- package/dist/core/__tests__/daemon-wedge.test.js +0 -106
- package/dist/core/__tests__/dead-node-policy-table.test.d.ts +0 -1
- package/dist/core/__tests__/dead-node-policy-table.test.js +0 -77
- package/dist/core/__tests__/events-contract.test.d.ts +0 -1
- package/dist/core/__tests__/events-contract.test.js +0 -76
- package/dist/core/__tests__/extension-abort.test.d.ts +0 -1
- package/dist/core/__tests__/extension-abort.test.js +0 -21
- package/dist/core/__tests__/fault-classifier.test.d.ts +0 -1
- package/dist/core/__tests__/fault-classifier.test.js +0 -138
- package/dist/core/__tests__/fixtures/api-server-host.d.ts +0 -1
- package/dist/core/__tests__/fixtures/api-server-host.js +0 -47
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c3-custom-provider-ext.js +0 -34
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.d.ts +0 -2
- package/dist/core/__tests__/fixtures/c5-command-boundary-ext.js +0 -32
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +0 -347
- package/dist/core/__tests__/fixtures/fake-engine.js +0 -1509
- package/dist/core/__tests__/fixtures/fake-pi-host.d.ts +0 -2
- package/dist/core/__tests__/fixtures/fake-pi-host.js +0 -311
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.d.ts +0 -1
- package/dist/core/__tests__/fixtures/memory-slash-live-probe.js +0 -75
- package/dist/core/__tests__/fixtures/metadata-migration-race.d.ts +0 -1
- package/dist/core/__tests__/fixtures/metadata-migration-race.js +0 -49
- package/dist/core/__tests__/focuses.test.d.ts +0 -1
- package/dist/core/__tests__/focuses.test.js +0 -113
- package/dist/core/__tests__/fs-utils.test.d.ts +0 -1
- package/dist/core/__tests__/fs-utils.test.js +0 -50
- package/dist/core/__tests__/helpers/broker-clients.d.ts +0 -43
- package/dist/core/__tests__/helpers/broker-clients.js +0 -174
- package/dist/core/__tests__/helpers/fleet.d.ts +0 -12
- package/dist/core/__tests__/helpers/fleet.js +0 -50
- package/dist/core/__tests__/helpers/harness.d.ts +0 -124
- package/dist/core/__tests__/helpers/harness.js +0 -806
- package/dist/core/__tests__/helpers/viewer-panes.d.ts +0 -12
- package/dist/core/__tests__/helpers/viewer-panes.js +0 -133
- package/dist/core/__tests__/history-inbox.test.d.ts +0 -1
- package/dist/core/__tests__/history-inbox.test.js +0 -121
- package/dist/core/__tests__/human-action-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/human-action-delivery.test.js +0 -162
- package/dist/core/__tests__/human-actions.test.d.ts +0 -1
- package/dist/core/__tests__/human-actions.test.js +0 -120
- package/dist/core/__tests__/inline-memory-refs.test.d.ts +0 -1
- package/dist/core/__tests__/inline-memory-refs.test.js +0 -225
- package/dist/core/__tests__/integration/broker-fork-seam.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-fork-seam.test.js +0 -193
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-sdk-wiring.test.js +0 -750
- package/dist/core/__tests__/integration/broker-snapshot-history.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-snapshot-history.test.js +0 -288
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.d.ts +0 -1
- package/dist/core/__tests__/integration/broker-wedge-supervision.test.js +0 -103
- package/dist/core/__tests__/integration/command-plugins.test.d.ts +0 -1
- package/dist/core/__tests__/integration/command-plugins.test.js +0 -1200
- package/dist/core/__tests__/integration/deferred-no-wake.test.d.ts +0 -1
- package/dist/core/__tests__/integration/deferred-no-wake.test.js +0 -610
- package/dist/core/__tests__/integration/flagship-lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/flagship-lifecycle.test.js +0 -264
- package/dist/core/__tests__/integration/fresh-home-commands.test.d.ts +0 -1
- package/dist/core/__tests__/integration/fresh-home-commands.test.js +0 -49
- package/dist/core/__tests__/integration/git-optional-locks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/git-optional-locks.test.js +0 -81
- package/dist/core/__tests__/integration/host-teardown-process-group.test.d.ts +0 -1
- package/dist/core/__tests__/integration/host-teardown-process-group.test.js +0 -480
- package/dist/core/__tests__/integration/lifecycle-hooks.test.d.ts +0 -1
- package/dist/core/__tests__/integration/lifecycle-hooks.test.js +0 -498
- package/dist/core/__tests__/integration/live-mutation-verbs.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation-verbs.test.js +0 -180
- package/dist/core/__tests__/integration/live-mutation.test.d.ts +0 -1
- package/dist/core/__tests__/integration/live-mutation.test.js +0 -173
- package/dist/core/__tests__/integration/plugin-revalidate.test.d.ts +0 -1
- package/dist/core/__tests__/integration/plugin-revalidate.test.js +0 -359
- package/dist/core/__tests__/integration/profile-pause.test.d.ts +0 -1
- package/dist/core/__tests__/integration/profile-pause.test.js +0 -115
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.d.ts +0 -1
- package/dist/core/__tests__/integration/refresh-stall-recycle.test.js +0 -151
- package/dist/core/__tests__/integration/revive.test.d.ts +0 -1
- package/dist/core/__tests__/integration/revive.test.js +0 -615
- package/dist/core/__tests__/integration/spawn-root.test.d.ts +0 -1
- package/dist/core/__tests__/integration/spawn-root.test.js +0 -536
- package/dist/core/__tests__/integration/subscription-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/integration/subscription-delivery.test.js +0 -132
- package/dist/core/__tests__/integration/tmux-surface.test.d.ts +0 -1
- package/dist/core/__tests__/integration/tmux-surface.test.js +0 -330
- package/dist/core/__tests__/integration/worktree-land.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-land.test.js +0 -607
- package/dist/core/__tests__/integration/worktree-reap.test.d.ts +0 -1
- package/dist/core/__tests__/integration/worktree-reap.test.js +0 -842
- package/dist/core/__tests__/kickoff.test.d.ts +0 -1
- package/dist/core/__tests__/kickoff.test.js +0 -196
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle-terminal-reasons.test.js +0 -62
- package/dist/core/__tests__/lifecycle.test.d.ts +0 -1
- package/dist/core/__tests__/lifecycle.test.js +0 -176
- package/dist/core/__tests__/live-lifecycle-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/live-lifecycle-prompt.test.js +0 -63
- package/dist/core/__tests__/memory-resolver-precedence.test.d.ts +0 -1
- package/dist/core/__tests__/memory-resolver-precedence.test.js +0 -228
- package/dist/core/__tests__/migration.test.d.ts +0 -1
- package/dist/core/__tests__/migration.test.js +0 -946
- package/dist/core/__tests__/model-pin-durability.test.d.ts +0 -1
- package/dist/core/__tests__/model-pin-durability.test.js +0 -195
- package/dist/core/__tests__/model-routes-config.test.d.ts +0 -1
- package/dist/core/__tests__/model-routes-config.test.js +0 -150
- package/dist/core/__tests__/nested-store-discovery.test.d.ts +0 -1
- package/dist/core/__tests__/nested-store-discovery.test.js +0 -89
- package/dist/core/__tests__/node-outcome.test.d.ts +0 -1
- package/dist/core/__tests__/node-outcome.test.js +0 -246
- package/dist/core/__tests__/on-read-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-crouter-home-fence.test.js +0 -66
- package/dist/core/__tests__/on-read-dedup-resume.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-dedup-resume.test.js +0 -132
- package/dist/core/__tests__/on-read-nested-store.test.d.ts +0 -1
- package/dist/core/__tests__/on-read-nested-store.test.js +0 -135
- package/dist/core/__tests__/parse-argv-stdin-secret.test.d.ts +0 -1
- package/dist/core/__tests__/parse-argv-stdin-secret.test.js +0 -68
- package/dist/core/__tests__/passive-subscription.test.d.ts +0 -1
- package/dist/core/__tests__/passive-subscription.test.js +0 -120
- package/dist/core/__tests__/pid-identity-match.test.d.ts +0 -1
- package/dist/core/__tests__/pid-identity-match.test.js +0 -145
- package/dist/core/__tests__/pid-zombie.test.d.ts +0 -1
- package/dist/core/__tests__/pid-zombie.test.js +0 -42
- package/dist/core/__tests__/plugin-kinds.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-kinds.test.js +0 -182
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-link-symlinked-scope-root.test.js +0 -43
- package/dist/core/__tests__/plugin-page-components.test.d.ts +0 -1
- package/dist/core/__tests__/plugin-page-components.test.js +0 -159
- package/dist/core/__tests__/preview-mirror-cap.test.d.ts +0 -1
- package/dist/core/__tests__/preview-mirror-cap.test.js +0 -53
- package/dist/core/__tests__/preview-registry-sync.test.d.ts +0 -1
- package/dist/core/__tests__/preview-registry-sync.test.js +0 -107
- package/dist/core/__tests__/profile-project-memory-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/profile-project-memory-delivery.test.js +0 -644
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.d.ts +0 -1
- package/dist/core/__tests__/prospective-inventory-capability-parity.test.js +0 -91
- package/dist/core/__tests__/prune.test.d.ts +0 -1
- package/dist/core/__tests__/prune.test.js +0 -243
- package/dist/core/__tests__/push-final-guard.test.d.ts +0 -1
- package/dist/core/__tests__/push-final-guard.test.js +0 -191
- package/dist/core/__tests__/relaunch-root.test.d.ts +0 -1
- package/dist/core/__tests__/relaunch-root.test.js +0 -249
- package/dist/core/__tests__/remote-canvas-target.test.d.ts +0 -1
- package/dist/core/__tests__/remote-canvas-target.test.js +0 -93
- package/dist/core/__tests__/repository-association.test.d.ts +0 -1
- package/dist/core/__tests__/repository-association.test.js +0 -153
- package/dist/core/__tests__/repository-root-identity.test.d.ts +0 -1
- package/dist/core/__tests__/repository-root-identity.test.js +0 -223
- package/dist/core/__tests__/respawn-throttle.test.d.ts +0 -1
- package/dist/core/__tests__/respawn-throttle.test.js +0 -20
- package/dist/core/__tests__/review-model-floor.test.d.ts +0 -1
- package/dist/core/__tests__/review-model-floor.test.js +0 -83
- package/dist/core/__tests__/revive-all.test.d.ts +0 -1
- package/dist/core/__tests__/revive-all.test.js +0 -157
- package/dist/core/__tests__/revive-capacity.test.d.ts +0 -1
- package/dist/core/__tests__/revive-capacity.test.js +0 -184
- package/dist/core/__tests__/revive-parked-fresh.test.d.ts +0 -1
- package/dist/core/__tests__/revive-parked-fresh.test.js +0 -176
- package/dist/core/__tests__/scope-crouter-home-fence.test.d.ts +0 -1
- package/dist/core/__tests__/scope-crouter-home-fence.test.js +0 -55
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-multiclient.test.js +0 -262
- package/dist/core/__tests__/seam/broker-attach-stream.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-attach-stream.test.js +0 -176
- package/dist/core/__tests__/seam/broker-cap-freeze.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-cap-freeze.test.js +0 -155
- package/dist/core/__tests__/seam/broker-crash-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-crash-teardown.test.js +0 -131
- package/dist/core/__tests__/seam/broker-pane-resolution.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-pane-resolution.test.js +0 -204
- package/dist/core/__tests__/seam/broker-provider-retry.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-provider-retry.test.js +0 -686
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-startup-diagnostics.test.js +0 -82
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/broker-whip-interrupt.test.js +0 -50
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/deadline-wake-delivery.test.js +0 -138
- package/dist/core/__tests__/seam/dormancy-release.test.d.ts +0 -1
- package/dist/core/__tests__/seam/dormancy-release.test.js +0 -516
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.d.ts +0 -1
- package/dist/core/__tests__/seam/held-deferred-human-prompt.test.js +0 -65
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.d.ts +0 -1
- package/dist/core/__tests__/seam/inbox-reference-guidance.test.js +0 -84
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.d.ts +0 -1
- package/dist/core/__tests__/seam/memory-slash-node-relative-inventory.test.js +0 -160
- package/dist/core/__tests__/seam/node-outcome-delivery.test.d.ts +0 -1
- package/dist/core/__tests__/seam/node-outcome-delivery.test.js +0 -177
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.d.ts +0 -1
- package/dist/core/__tests__/seam/prospective-inventory-stdout.test.js +0 -31
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.d.ts +0 -1
- package/dist/core/__tests__/seam/reopen-invalidated-worktree.test.js +0 -60
- package/dist/core/__tests__/seam/self-close-teardown.test.d.ts +0 -1
- package/dist/core/__tests__/seam/self-close-teardown.test.js +0 -49
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.d.ts +0 -1
- package/dist/core/__tests__/seam/yield-refresh-transaction.test.js +0 -100
- package/dist/core/__tests__/secrets.test.d.ts +0 -1
- package/dist/core/__tests__/secrets.test.js +0 -49
- package/dist/core/__tests__/self-update.test.d.ts +0 -1
- package/dist/core/__tests__/self-update.test.js +0 -46
- package/dist/core/__tests__/session-branch.test.d.ts +0 -1
- package/dist/core/__tests__/session-branch.test.js +0 -61
- package/dist/core/__tests__/session-cycles.test.d.ts +0 -1
- package/dist/core/__tests__/session-cycles.test.js +0 -133
- package/dist/core/__tests__/session-model.test.d.ts +0 -1
- package/dist/core/__tests__/session-model.test.js +0 -111
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.d.ts +0 -1
- package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +0 -71
- package/dist/core/__tests__/stdin-body-no-discard.test.d.ts +0 -1
- package/dist/core/__tests__/stdin-body-no-discard.test.js +0 -33
- package/dist/core/__tests__/stdout-errors.test.d.ts +0 -1
- package/dist/core/__tests__/stdout-errors.test.js +0 -16
- package/dist/core/__tests__/stop-guard.test.d.ts +0 -1
- package/dist/core/__tests__/stop-guard.test.js +0 -237
- package/dist/core/__tests__/stream-watchdog.test.d.ts +0 -1
- package/dist/core/__tests__/stream-watchdog.test.js +0 -154
- package/dist/core/__tests__/subscription-pool-credential-guard.test.d.ts +0 -1
- package/dist/core/__tests__/subscription-pool-credential-guard.test.js +0 -95
- package/dist/core/__tests__/tmux-driver-boundary.test.d.ts +0 -1
- package/dist/core/__tests__/tmux-driver-boundary.test.js +0 -50
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.d.ts +0 -1
- package/dist/core/__tests__/warm-claim-preference-snapshot.test.js +0 -54
- package/dist/core/__tests__/worktree-landing.test.d.ts +0 -1
- package/dist/core/__tests__/worktree-landing.test.js +0 -11
- package/dist/core/__tests__/yield-ensures-daemon.test.d.ts +0 -1
- package/dist/core/__tests__/yield-ensures-daemon.test.js +0 -55
- package/dist/core/broker-client/__tests__/transport-relay.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-relay.test.js +0 -214
- package/dist/core/broker-client/__tests__/transport-socket.test.d.ts +0 -1
- package/dist/core/broker-client/__tests__/transport-socket.test.js +0 -73
- package/dist/core/canvas/__tests__/attention.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/attention.test.js +0 -83
- package/dist/core/canvas/__tests__/history-transcript.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/history-transcript.test.js +0 -102
- package/dist/core/canvas/__tests__/remote-canvas-source.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-canvas-source.test.js +0 -328
- package/dist/core/canvas/__tests__/remote-transport.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/remote-transport.test.js +0 -97
- package/dist/core/canvas/__tests__/render-remote.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/render-remote.test.js +0 -243
- package/dist/core/canvas/__tests__/session-window.test.d.ts +0 -1
- package/dist/core/canvas/__tests__/session-window.test.js +0 -70
- package/dist/core/feed/__tests__/inbox-migrate.test.d.ts +0 -1
- package/dist/core/feed/__tests__/inbox-migrate.test.js +0 -49
- package/dist/core/human/__tests__/page-catalog.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-catalog.test.js +0 -20
- package/dist/core/human/__tests__/page-html-markdown.test.d.ts +0 -1
- package/dist/core/human/__tests__/page-html-markdown.test.js +0 -48
- package/dist/core/human/__tests__/page.test.d.ts +0 -1
- package/dist/core/human/__tests__/page.test.js +0 -92
- package/dist/core/keybindings/__tests__/resolve.test.d.ts +0 -1
- package/dist/core/keybindings/__tests__/resolve.test.js +0 -171
- package/dist/core/profiles/__tests__/env-store.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/env-store.test.js +0 -99
- package/dist/core/profiles/__tests__/fuzzy-match.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/fuzzy-match.test.js +0 -51
- package/dist/core/profiles/__tests__/root-profile.test.d.ts +0 -1
- package/dist/core/profiles/__tests__/root-profile.test.js +0 -59
- package/dist/core/review/__tests__/capture-origin.test.d.ts +0 -1
- package/dist/core/review/__tests__/capture-origin.test.js +0 -150
- package/dist/core/review/__tests__/comments.test.d.ts +0 -1
- package/dist/core/review/__tests__/comments.test.js +0 -116
- package/dist/core/review/__tests__/remap.test.d.ts +0 -1
- package/dist/core/review/__tests__/remap.test.js +0 -177
- package/dist/core/review/__tests__/stage-identity.test.d.ts +0 -1
- package/dist/core/review/__tests__/stage-identity.test.js +0 -150
- package/dist/core/runtime/__tests__/engine-route.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/engine-route.test.js +0 -36
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/install-id-cache-scoping.test.js +0 -45
- package/dist/core/runtime/__tests__/node-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/node-env.test.js +0 -73
- package/dist/core/runtime/__tests__/spawn-env.test.d.ts +0 -1
- package/dist/core/runtime/__tests__/spawn-env.test.js +0 -259
- package/dist/core/substrate/__tests__/surface-match-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-command.test.js +0 -89
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-memory-read.test.js +0 -28
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.d.ts +0 -1
- package/dist/core/substrate/__tests__/surface-match-pre-command.test.js +0 -92
- package/dist/daemon/__tests__/autostart-storm.test.d.ts +0 -1
- package/dist/daemon/__tests__/autostart-storm.test.js +0 -128
- package/dist/daemon/__tests__/broker-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/broker-ownership.test.js +0 -25
- package/dist/daemon/__tests__/daemon-ownership.test.d.ts +0 -1
- package/dist/daemon/__tests__/daemon-ownership.test.js +0 -27
- package/dist/daemon/__tests__/helpers/source-daemon.d.ts +0 -30
- package/dist/daemon/__tests__/helpers/source-daemon.js +0 -176
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/api-startup-readiness.test.js +0 -83
- package/dist/daemon/__tests__/integration/migration-startup.test.d.ts +0 -1
- package/dist/daemon/__tests__/integration/migration-startup.test.js +0 -127
- package/dist/daemon/__tests__/node-deadline-lane.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-deadline-lane.test.js +0 -77
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-birth-invariants.test.js +0 -146
- package/dist/daemon/__tests__/node-outcome-delivery.test.d.ts +0 -1
- package/dist/daemon/__tests__/node-outcome-delivery.test.js +0 -116
- package/dist/daemon/__tests__/reconciler-signature.test.d.ts +0 -1
- package/dist/daemon/__tests__/reconciler-signature.test.js +0 -37
- package/dist/daemon/__tests__/subtree-filter-freshness.test.d.ts +0 -1
- package/dist/daemon/__tests__/subtree-filter-freshness.test.js +0 -63
- package/dist/daemon/__tests__/thaw-order.test.d.ts +0 -1
- package/dist/daemon/__tests__/thaw-order.test.js +0 -55
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/bridge-heartbeat.test.js +0 -58
- package/dist/daemon/api/__tests__/broker-settle-park.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/broker-settle-park.test.js +0 -175
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/canvas-snapshot-fields.test.js +0 -216
- package/dist/daemon/api/__tests__/error-seam.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/error-seam.test.js +0 -83
- package/dist/daemon/api/__tests__/model-config.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/model-config.test.js +0 -73
- package/dist/daemon/api/__tests__/node-create-description.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-create-description.test.js +0 -127
- package/dist/daemon/api/__tests__/node-model-validation.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/node-model-validation.test.js +0 -183
- package/dist/daemon/api/__tests__/nodes-activity-query.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/nodes-activity-query.test.js +0 -99
- package/dist/daemon/api/__tests__/profile-launch-gates.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-launch-gates.test.js +0 -172
- package/dist/daemon/api/__tests__/profile-metadata-route.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/profile-metadata-route.test.js +0 -95
- package/dist/daemon/api/__tests__/reopen-delivery.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/reopen-delivery.test.js +0 -260
- package/dist/daemon/api/__tests__/seam/api-server.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/api-server.test.js +0 -442
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/b10-attach-modelauth.test.js +0 -310
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/leaf-api-parity.test.js +0 -351
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/node-outcome-api.test.js +0 -159
- package/dist/daemon/api/__tests__/seam/profile-delete.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/seam/profile-delete.test.js +0 -372
- package/dist/daemon/api/__tests__/submit-result.test.d.ts +0 -1
- package/dist/daemon/api/__tests__/submit-result.test.js +0 -215
- package/dist/migrations/__tests__/activation-concurrency.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation-concurrency.test.js +0 -146
- package/dist/migrations/__tests__/activation.test.d.ts +0 -1
- package/dist/migrations/__tests__/activation.test.js +0 -152
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.d.ts +0 -1
- package/dist/migrations/__tests__/deletion-and-root-declaration.test.js +0 -149
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-bash-valve.test.js +0 -86
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +0 -364
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-goal-capture-envelope.test.js +0 -106
- package/dist/pi-extensions/__tests__/canvas-recap.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-recap.test.js +0 -62
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-agentend.test.js +0 -432
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-stophook-context-nudge.test.js +0 -152
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +0 -88
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/canvas-tool-guide.test.js +0 -96
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/integration/canvas-bash-valve.test.js +0 -133
- package/dist/pi-extensions/__tests__/pre-command-gate.test.d.ts +0 -1
- package/dist/pi-extensions/__tests__/pre-command-gate.test.js +0 -232
- package/dist/shared/__tests__/env-boundary.test.d.ts +0 -1
- package/dist/shared/__tests__/env-boundary.test.js +0 -95
- package/dist/shared/__tests__/generated-context-grammar.test.d.ts +0 -1
- package/dist/shared/__tests__/generated-context-grammar.test.js +0 -80
- package/docs/compat/hearth-crtr-v1.md +0 -179
- package/docs/compat/hearth-crtr-v2.md +0 -177
- package/docs/compat/hearth-crtr-v3.md +0 -176
- package/docs/compat/hearth-crtr-v4.md +0 -182
- package/docs/compat/hearth-crtr-v5.md +0 -169
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
// titled-editor-paste.test.ts — regression for the unbracketed multi-line paste
|
|
2
|
-
// bug: a multi-line paste into the attach viewer submitted its FIRST line as a
|
|
3
|
-
// prompt, then turned every following line into its own turn, a queued steering
|
|
4
|
-
// message, or a "Agent is already processing" rejection.
|
|
5
|
-
//
|
|
6
|
-
// Root cause: when a terminal delivers a paste WITHOUT bracketed-paste markers,
|
|
7
|
-
// pi-tui's StdinBuffer never enters paste mode and splits the paste into single
|
|
8
|
-
// sequences, so each embedded line ending reaches the editor as a bare Enter and
|
|
9
|
-
// the stock editor submits on it. TitledEditor.handleInput holds a line ending
|
|
10
|
-
// for PASTE_BURST_MS and settles it on what FOLLOWS: more input means a paste's
|
|
11
|
-
// own line break (insert a newline), silence means a human pressed Enter
|
|
12
|
-
// (submit).
|
|
13
|
-
//
|
|
14
|
-
// Deciding on what follows — not on the gap before — is what keeps
|
|
15
|
-
// `tmux send-keys <text> Enter` (one write, so its Enter arrives microseconds
|
|
16
|
-
// after the text) submitting, which the earlier gap-based rescue broke. Both
|
|
17
|
-
// properties are pinned below.
|
|
18
|
-
//
|
|
19
|
-
// The tests drive handleInput directly, bypassing the heavy TUI/stdin
|
|
20
|
-
// constructor via Object.create and stubbing only the members the branch
|
|
21
|
-
// touches; `super.handleInput` is intercepted by replacing
|
|
22
|
-
// CustomEditor.prototype.handleInput (what the ES `super` call resolves to).
|
|
23
|
-
import { test } from 'node:test';
|
|
24
|
-
import assert from 'node:assert/strict';
|
|
25
|
-
import { setTimeout as delay } from 'node:timers/promises';
|
|
26
|
-
import { CustomEditor } from '@earendil-works/pi-coding-agent';
|
|
27
|
-
import { TitledEditor } from '../input/titled-editor.js';
|
|
28
|
-
/** Longer than PASTE_BURST_MS (10ms) — the hold window must have expired. */
|
|
29
|
-
const AFTER_HOLD_MS = 40;
|
|
30
|
-
/** A TitledEditor with its constructor bypassed and its collaborators stubbed:
|
|
31
|
-
* - `km.matches` recognizes only the real Enter (`\r`) as `tui.input.submit`
|
|
32
|
-
* and never the newLine chord (so that branch stays out of the way);
|
|
33
|
-
* - `isShowingAutocomplete` is always false;
|
|
34
|
-
* - `insertTextAtCursor` records inserts;
|
|
35
|
-
* - the inherited (super) handleInput records what would have been submitted. */
|
|
36
|
-
function makeHarness() {
|
|
37
|
-
const inserted = [];
|
|
38
|
-
const submitted = [];
|
|
39
|
-
const editor = Object.create(TitledEditor.prototype);
|
|
40
|
-
Object.assign(editor, {
|
|
41
|
-
km: {
|
|
42
|
-
matches: (data, binding) => binding === 'tui.input.submit' ? data === '\r' : false,
|
|
43
|
-
},
|
|
44
|
-
tui: { requestRender: () => { } },
|
|
45
|
-
isShowingAutocomplete: () => false,
|
|
46
|
-
insertTextAtCursor: (s) => inserted.push(s),
|
|
47
|
-
getCursor: () => ({ line: 0, col: 0 }),
|
|
48
|
-
getLines: () => [''],
|
|
49
|
-
maybeTriggerNonLeadingRefAutocomplete: () => { },
|
|
50
|
-
});
|
|
51
|
-
const originalSuper = CustomEditor.prototype.handleInput;
|
|
52
|
-
// `super.handleInput(data)` inside TitledEditor resolves to this prototype
|
|
53
|
-
// method; the stock editor SUBMITS a bare `\r`, so record that as a submit.
|
|
54
|
-
CustomEditor.prototype.handleInput = function (data) {
|
|
55
|
-
if (data === '\r' || data === '\n')
|
|
56
|
-
submitted.push(data);
|
|
57
|
-
};
|
|
58
|
-
return { editor, inserted, submitted, restore: () => { CustomEditor.prototype.handleInput = originalSuper; } };
|
|
59
|
-
}
|
|
60
|
-
test('unbracketed multi-line paste becomes newlines, never a mid-paste submit', async () => {
|
|
61
|
-
const { editor, inserted, submitted, restore } = makeHarness();
|
|
62
|
-
try {
|
|
63
|
-
// A paste floods handleInput synchronously: "line1\rline2\rline3".
|
|
64
|
-
for (const ch of ['l', 'i', 'n', 'e', '1', '\r', 'l', 'i', 'n', 'e', '2', '\r', 'l', 'i', 'n', 'e', '3']) {
|
|
65
|
-
editor.handleInput(ch);
|
|
66
|
-
}
|
|
67
|
-
await delay(AFTER_HOLD_MS);
|
|
68
|
-
assert.equal(inserted.filter((s) => s === '\n').length, 2, 'both pasted returns became newlines');
|
|
69
|
-
assert.equal(submitted.length, 0, 'no submit fired mid-paste — the full paste survives');
|
|
70
|
-
}
|
|
71
|
-
finally {
|
|
72
|
-
restore();
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
test('an unbracketed paste ending in a newline submits ONCE, carrying the whole block', async () => {
|
|
76
|
-
const { editor, inserted, submitted, restore } = makeHarness();
|
|
77
|
-
try {
|
|
78
|
-
for (const ch of ['a', '\n', 'b', '\n'])
|
|
79
|
-
editor.handleInput(ch);
|
|
80
|
-
await delay(AFTER_HOLD_MS);
|
|
81
|
-
assert.equal(inserted.filter((s) => s === '\n').length, 1, 'the interior line feed became a newline');
|
|
82
|
-
assert.equal(submitted.length, 1, 'only the trailing line feed submitted, with both lines in the editor');
|
|
83
|
-
}
|
|
84
|
-
finally {
|
|
85
|
-
restore();
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
test('a human Enter submits', async () => {
|
|
89
|
-
const { editor, inserted, submitted, restore } = makeHarness();
|
|
90
|
-
try {
|
|
91
|
-
editor.handleInput('\r');
|
|
92
|
-
await delay(AFTER_HOLD_MS);
|
|
93
|
-
assert.equal(submitted.length, 1, 'a pressed Enter submits');
|
|
94
|
-
assert.equal(inserted.length, 0, 'a pressed Enter does not insert a newline');
|
|
95
|
-
}
|
|
96
|
-
finally {
|
|
97
|
-
restore();
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
test('text and Enter delivered in one write (tmux send-keys) still submits', async () => {
|
|
101
|
-
const { editor, inserted, submitted, restore } = makeHarness();
|
|
102
|
-
try {
|
|
103
|
-
// `tmux send-keys -t <pane> '/graph' Enter` flushes both in a single write,
|
|
104
|
-
// so the Enter arrives microseconds after the text — with nothing after it.
|
|
105
|
-
for (const ch of ['/', 'g', 'r', 'a', 'p', 'h', '\r'])
|
|
106
|
-
editor.handleInput(ch);
|
|
107
|
-
await delay(AFTER_HOLD_MS);
|
|
108
|
-
assert.equal(submitted.length, 1, 'the trailing Enter of a send-keys burst submits');
|
|
109
|
-
assert.equal(inserted.length, 0, 'nothing was turned into a newline');
|
|
110
|
-
}
|
|
111
|
-
finally {
|
|
112
|
-
restore();
|
|
113
|
-
}
|
|
114
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test from 'node:test';
|
|
3
|
-
import { visibleWidth } from '@earendil-works/pi-tui';
|
|
4
|
-
import { RefAwareAutocompleteProvider } from '../input/ref-autocomplete.js';
|
|
5
|
-
import { compactLoadedCommandPreview, TitledEditor } from '../input/titled-editor.js';
|
|
6
|
-
function makeEditor(rows = 24) {
|
|
7
|
-
const tui = { requestRender: () => { }, terminal: { rows } };
|
|
8
|
-
const theme = { borderColor: (s) => s, selectList: {} };
|
|
9
|
-
const keybindings = { matches: () => false };
|
|
10
|
-
return new TitledEditor(tui, theme, keybindings);
|
|
11
|
-
}
|
|
12
|
-
// The frame-width invariant: the viewer renders exactly `terminal.rows` lines
|
|
13
|
-
// with no overflow, so a decoration that changes a rendered line's visible
|
|
14
|
-
// width crashes the pane.
|
|
15
|
-
test("ref decoration never changes a rendered line's visible width", () => {
|
|
16
|
-
const width = 40;
|
|
17
|
-
const texts = [
|
|
18
|
-
'ünïcödé prefix /dev then more text that wraps across the available width for sure',
|
|
19
|
-
'short /dev line',
|
|
20
|
-
];
|
|
21
|
-
for (const text of texts) {
|
|
22
|
-
const plain = makeEditor();
|
|
23
|
-
const decorated = makeEditor();
|
|
24
|
-
decorated.setResolvedRefNames(['dev']);
|
|
25
|
-
plain.setText(text);
|
|
26
|
-
decorated.setText(text);
|
|
27
|
-
const linesPlain = plain.render(width);
|
|
28
|
-
const linesDecorated = decorated.render(width);
|
|
29
|
-
assert.equal(linesDecorated.length, linesPlain.length, `line count parity for: ${text}`);
|
|
30
|
-
for (let i = 0; i < linesPlain.length; i++) {
|
|
31
|
-
assert.equal(visibleWidth(linesDecorated[i]), visibleWidth(linesPlain[i]), `line ${i} width parity for: ${text}`);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
// An untrusted command body reaches the inline disclosure verbatim; a live
|
|
36
|
-
// escape sequence there would repaint or hyperlink the user's terminal.
|
|
37
|
-
test('inline disclosure strips hostile terminal controls', () => {
|
|
38
|
-
const lines = compactLoadedCommandPreview('safe\x1b[2J\x1b]8;;https://evil.example\x07link\x1b]8;;\x07\u0000', 32);
|
|
39
|
-
const visible = lines.join('\n');
|
|
40
|
-
assert.match(visible, /safelink/);
|
|
41
|
-
assert.doesNotMatch(visible, /\x1b|\u0000|evil\.example/);
|
|
42
|
-
});
|
|
43
|
-
test('Enter-confirming a non-leading ref completion accepts the token and returns to editing, never submits', async () => {
|
|
44
|
-
const editor = makeEditor();
|
|
45
|
-
editor.focused = true;
|
|
46
|
-
let submitted;
|
|
47
|
-
editor.onSubmit = (text) => {
|
|
48
|
-
submitted = text;
|
|
49
|
-
};
|
|
50
|
-
const refs = [{ name: 'dev', kind: 'knowledge', scope: 'user', shortForm: 'dev docs', gatewayVisible: true }];
|
|
51
|
-
const delegate = {
|
|
52
|
-
async getSuggestions() {
|
|
53
|
-
return null;
|
|
54
|
-
},
|
|
55
|
-
applyCompletion(lines, cursorLine, cursorCol) {
|
|
56
|
-
return { lines, cursorLine, cursorCol };
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
const noopFrecency = { record() { }, bonus: () => 0 };
|
|
60
|
-
editor.setAutocompleteProvider(new RefAwareAutocompleteProvider(refs, delegate, noopFrecency));
|
|
61
|
-
editor.setText('hey check /d');
|
|
62
|
-
editor.handleInput('e'); // completes the typed prefix to '/de', triggering the non-leading bridge
|
|
63
|
-
await new Promise((resolve) => setTimeout(resolve, 20));
|
|
64
|
-
assert.equal(editor.isShowingAutocomplete(), true, 'the ref suggestion popup is open');
|
|
65
|
-
editor.handleInput('\r'); // real Enter keystroke — tui.select.confirm
|
|
66
|
-
assert.equal(editor.isShowingAutocomplete(), false, 'Enter closes the popup');
|
|
67
|
-
assert.equal(editor.getText(), 'hey check /dev', 'the token was replaced in place, not submitted as typed');
|
|
68
|
-
assert.equal(submitted, undefined, 'Enter-confirming a ref completion must never submit the message');
|
|
69
|
-
});
|
|
70
|
-
test('a real Enter submission preserves raw leading/trailing whitespace end-to-end', async () => {
|
|
71
|
-
const editor = makeEditor();
|
|
72
|
-
let submitted;
|
|
73
|
-
editor.onSubmit = (text) => {
|
|
74
|
-
submitted = text;
|
|
75
|
-
};
|
|
76
|
-
editor.setText(' hello world ');
|
|
77
|
-
editor.handleInput('\r'); // real Enter keystroke — tui.input.submit
|
|
78
|
-
// The unbracketed-paste rescue holds a line ending for PASTE_BURST_MS to see
|
|
79
|
-
// whether more input follows it (a paste's own line break) before submitting.
|
|
80
|
-
await new Promise((resolve) => setTimeout(resolve, 40));
|
|
81
|
-
assert.equal(submitted, ' hello world ', 'onSubmit receives the exact untrimmed text, not the base editor\'s trimmed copy');
|
|
82
|
-
assert.equal(editor.getText(), '', 'submitValue still resets editor state as usual');
|
|
83
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
// The inbox controller against a real daemon: every row, page body, progress
|
|
2
|
-
// autosave and settlement crosses the human/inbox routes, so this fixture binds
|
|
3
|
-
// the daemon's own route tables rather than re-implementing their projections.
|
|
4
|
-
import assert from 'node:assert/strict';
|
|
5
|
-
import { startHumanDaemon } from '../../../__tests__/helpers/human-daemon.js';
|
|
6
|
-
const daemon = await startHumanDaemon('crtr-inbox-controller');
|
|
7
|
-
// Imported after the isolated home is in place, so nothing resolves the
|
|
8
|
-
// developer's own canvas at module load.
|
|
9
|
-
const { cliClient } = await import('#commands/api-client');
|
|
10
|
-
const { InboxController } = await import('../../controller.js');
|
|
11
|
-
const key = (part = {}) => ({ ctrl: false, meta: false, upArrow: false, downArrow: false, leftArrow: false, rightArrow: false, wordLeft: false, wordRight: false, home: false, end: false, pageUp: false, pageDown: false, del: false, return: false, newline: false, escape: false, tab: false, backspace: false, ...part });
|
|
12
|
-
function fakeHost() {
|
|
13
|
-
const handle = { close() { }, invalidate() { }, onClose() { } };
|
|
14
|
-
return { capabilities: { remote: false, canFocusNode: false, selfPane: undefined }, mount: () => handle, notice() { }, suspendForChild: () => () => { }, focusNode: async () => false, pickReviewFile: async () => null };
|
|
15
|
-
}
|
|
16
|
-
const controller = (cols, rows) => new InboxController({ host: fakeHost(), onDirty() { }, onClosed() { }, cols, rows });
|
|
17
|
-
async function waitFor(predicate, message) { const end = Date.now() + 5000; for (;;) {
|
|
18
|
-
if (await predicate())
|
|
19
|
-
return;
|
|
20
|
-
if (Date.now() > end)
|
|
21
|
-
throw new Error(message);
|
|
22
|
-
await new Promise((r) => setTimeout(r, 10));
|
|
23
|
-
} }
|
|
24
|
-
const client = cliClient();
|
|
25
|
-
// A ticket reaches the inbox and settles only with a response lifecycle; a page
|
|
26
|
-
// carrying neither is a passive display that never opens here.
|
|
27
|
-
const delivery = { placement: 'inline', inbox: true, reply: false };
|
|
28
|
-
const createPage = (source) => client.createHumanRequest({ page: { dialect: 'jsx', source }, delivery, creator_cwd: daemon.home });
|
|
29
|
-
const ticketIdOf = async (requestId) => {
|
|
30
|
-
const { tickets } = await client.listHumanInbox();
|
|
31
|
-
const row = tickets.find((ticket) => ticket.request_id === requestId);
|
|
32
|
-
if (row === undefined)
|
|
33
|
-
throw new Error(`request is not listed in the inbox: ${requestId}`);
|
|
34
|
-
return row.ticket_id;
|
|
35
|
-
};
|
|
36
|
-
const ask = 'export default () => (\n <Page title="Restored page" subtitle="Pick one">\n <UserQuestion id="choice" label="Restore?" body="Pick one to continue." mode="single" options={[{ id: "yes", label: "Yes" }, { id: "no", label: "No" }]} />\n </Page>\n);\n';
|
|
37
|
-
const rich = 'export default () => (\n <Page title="Rich page" subtitle="Browser content">\n <Chart kind="bar" x="day" y={[{ field: "count" }]} />\n </Page>\n);\n';
|
|
38
|
-
try {
|
|
39
|
-
// A page opens with the manifest-backed terminal projection of its content.
|
|
40
|
-
const richRequest = await createPage(rich);
|
|
41
|
-
const preview = controller(100, 24);
|
|
42
|
-
await waitFor(() => preview.snapshot().items.length === 1, 'the rich page reaches the inbox list');
|
|
43
|
-
preview.selectDir(richRequest.request_dir);
|
|
44
|
-
assert.match(preview.render().join('\n'), /Rich page/, 'a pending page is listed before it is opened');
|
|
45
|
-
await preview.activate();
|
|
46
|
-
assert.match(preview.render().join('\n'), /chart — bar: day vs count/, 'a page uses the manifest-backed terminal projection');
|
|
47
|
-
preview.close();
|
|
48
|
-
// The list preview shows what the page says, because `s` settles the selected
|
|
49
|
-
// ticket from this screen without ever opening it. The body is a round trip,
|
|
50
|
-
// so the first frame schedules it and a later frame carries it.
|
|
51
|
-
const previewRequest = await createPage(ask);
|
|
52
|
-
const listing = controller(100, 40);
|
|
53
|
-
await waitFor(() => listing.snapshot().items.length === 2, 'both pending pages reach the inbox list');
|
|
54
|
-
listing.selectDir(previewRequest.request_dir);
|
|
55
|
-
await waitFor(() => listing.render().join('\n').includes('Pick one to continue'), 'the preview carries the question body');
|
|
56
|
-
const shown = listing.render().join('\n');
|
|
57
|
-
assert.match(shown, /Yes/, 'the preview carries the options the reader would pick from');
|
|
58
|
-
assert.doesNotMatch(shown, /\d+ components?\b/, 'the component count no longer stands in for the content');
|
|
59
|
-
listing.close();
|
|
60
|
-
// Autosaved progress is restored into the page the reader opens, and the
|
|
61
|
-
// answer it submits crosses the daemon's settlement route.
|
|
62
|
-
const request = await createPage(ask);
|
|
63
|
-
await client.postInboxProgress(await ticketIdOf(request.request_id), { choice: { selectedOptionIds: ['yes'], comments: [] } });
|
|
64
|
-
const active = controller(100, 24);
|
|
65
|
-
await waitFor(() => active.snapshot().items.length === 3, 'the created page reaches the inbox list');
|
|
66
|
-
active.selectDir(request.request_dir);
|
|
67
|
-
await active.activate();
|
|
68
|
-
assert.equal(active.snapshot().screen, 'detail', 'page ticket opens in the page panel');
|
|
69
|
-
assert.match(active.render().join('\n'), /✓|\[✓\]/, 'the autosaved answer is restored into the open page');
|
|
70
|
-
active.handleKey('n', key());
|
|
71
|
-
active.handleKey('', key({ return: true }));
|
|
72
|
-
await waitFor(async () => (await client.getHumanRequest(request.request_id)).state !== 'pending', 'restored page responses cross the daemon seam');
|
|
73
|
-
const settled = await client.getHumanRequest(request.request_id);
|
|
74
|
-
assert.equal(settled.page?.result?.kind, 'page', 'the page settled with an answer');
|
|
75
|
-
assert.deepEqual(settled.page?.result?.kind === 'page' ? settled.page.result.responses : undefined, { choice: { selectedOptionIds: ['yes'], comments: [] } }, 'saved progress is restored into the response map');
|
|
76
|
-
active.close();
|
|
77
|
-
}
|
|
78
|
-
finally {
|
|
79
|
-
await daemon.dispose();
|
|
80
|
-
}
|
|
81
|
-
console.log('inbox controller tests passed');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import { mountPanel } from '../../tui/panel.js';
|
|
3
|
-
function key(partial = {}) { return { ctrl: false, meta: false, upArrow: false, downArrow: false, leftArrow: false, rightArrow: false, wordLeft: false, wordRight: false, home: false, end: false, pageUp: false, pageDown: false, del: false, return: false, newline: false, escape: false, tab: false, backspace: false, ...partial }; }
|
|
4
|
-
const enter = key({ return: true });
|
|
5
|
-
const manifest = (slots, extra = {}) => ({ schema: 'crtr.page/v2', dialect: 'jsx', title: 'Test page', delivery: { placement: 'panel', inbox: true, reply: true }, document: 'page.tsx', steps: 1, slots, ...extra });
|
|
6
|
-
// Option comment is anchored and survives the subsequent single-select completion.
|
|
7
|
-
const options = manifest([{ id: 'choice', kind: 'options', step: 0, config: { mode: 'single', options: [{ id: 'yes', label: 'Yes' }, { id: 'no', label: 'No' }] } }]);
|
|
8
|
-
let optionResponses = {};
|
|
9
|
-
const optionsPanel = mountPanel({ manifest: options, cols: 80, rows: 24, onComplete: (r) => { optionResponses = r; } });
|
|
10
|
-
optionsPanel.handleKey('c', key());
|
|
11
|
-
for (const ch of 'ship it')
|
|
12
|
-
optionsPanel.handleKey(ch, key());
|
|
13
|
-
optionsPanel.handleKey('', enter);
|
|
14
|
-
optionsPanel.handleKey('y', key());
|
|
15
|
-
assert.deepEqual(optionResponses, { choice: { selectedOptionIds: ['yes'], comments: [{ id: 'option:yes', anchor: { kind: 'option', optionId: 'yes' }, text: 'ship it' }] } });
|
|
16
|
-
optionsPanel.unmount();
|
|
17
|
-
// A required multi-select refuses an empty Enter; selection confirmation lands on Summary before submit.
|
|
18
|
-
const multi = manifest([{ id: 'toppings', kind: 'options', step: 0, config: { mode: 'multi', required: true, options: [{ id: 'mush', label: 'Mushroom' }, { id: 'onion', label: 'Onion' }] } }]);
|
|
19
|
-
let multiResponses;
|
|
20
|
-
const multiPanel = mountPanel({ manifest: multi, cols: 80, rows: 24, onComplete: (r) => { multiResponses = r; } });
|
|
21
|
-
multiPanel.handleKey('', enter);
|
|
22
|
-
assert.equal(multiResponses, undefined);
|
|
23
|
-
assert.match(multiPanel.render().join('\n'), /select at least one/i);
|
|
24
|
-
multiPanel.handleKey(' ', key());
|
|
25
|
-
multiPanel.handleKey('', enter);
|
|
26
|
-
assert.match(multiPanel.render().join('\n'), /Summary/);
|
|
27
|
-
assert.equal(multiResponses, undefined);
|
|
28
|
-
multiPanel.handleKey('', enter);
|
|
29
|
-
assert.deepEqual(multiResponses, { toppings: { selectedOptionIds: ['mush'], comments: [] } });
|
|
30
|
-
multiPanel.unmount();
|
|
31
|
-
// Table selection uses row ids and permits an empty committed selection by schema.
|
|
32
|
-
const table = manifest([{ id: 'rows', kind: 'table', step: 0, config: { columns: [{ id: 'name', label: 'Name' }], rows: [{ id: 'a', cells: { name: 'Alpha' } }, { id: 'b', cells: { name: 'Beta' } }], rowSelect: 'multi', columnSelect: 'none' } }]);
|
|
33
|
-
let tableResponses = {};
|
|
34
|
-
const tablePanel = mountPanel({ manifest: table, cols: 80, rows: 24, onComplete: (r) => { tableResponses = r; } });
|
|
35
|
-
assert.match(tablePanel.render().join('\n'), /Alpha/);
|
|
36
|
-
tablePanel.handleKey(' ', key());
|
|
37
|
-
tablePanel.handleKey('', enter);
|
|
38
|
-
tablePanel.handleKey('', enter);
|
|
39
|
-
assert.deepEqual(tableResponses, { rows: { selectedRowIds: ['a'], selectedColumnIds: [], comments: [] } });
|
|
40
|
-
tablePanel.unmount();
|
|
41
|
-
// A display-only page is dismissed with q and completes with an empty response map.
|
|
42
|
-
let displayResponses;
|
|
43
|
-
const displayPanel = mountPanel({ manifest: manifest([]), cols: 80, rows: 24, onComplete: (r) => { displayResponses = r; } });
|
|
44
|
-
displayPanel.handleKey('q', key());
|
|
45
|
-
assert.deepEqual(displayResponses, {});
|
|
46
|
-
displayPanel.unmount();
|
|
47
|
-
// An HTML page has no slots to carry its content, so the document itself is
|
|
48
|
-
// projected into the panel — dismissing it with q means the reader saw it.
|
|
49
|
-
const html = manifest([], { dialect: 'html', title: 'Deploy sign-off', document: 'page.html' });
|
|
50
|
-
const htmlDoc = '<html><body><h1>Deploy sign-off</h1><p>Staging is green for <strong>6 hours</strong>.</p><ul><li>Smoke suite passed</li></ul></body></html>';
|
|
51
|
-
const htmlPanel = mountPanel({ manifest: html, document: htmlDoc, cols: 80, rows: 24 });
|
|
52
|
-
const htmlView = htmlPanel.render().join('\n');
|
|
53
|
-
assert.match(htmlView, /Staging is green for/);
|
|
54
|
-
assert.match(htmlView, /Smoke suite passed/);
|
|
55
|
-
assert.match(htmlView, /q.*dismiss/);
|
|
56
|
-
htmlPanel.unmount();
|
|
57
|
-
// An HTML page whose document never arrived says so rather than showing a bare title.
|
|
58
|
-
const blindPanel = mountPanel({ manifest: html, cols: 80, rows: 24 });
|
|
59
|
-
assert.match(blindPanel.render().join('\n'), /open in Northlight to read this/);
|
|
60
|
-
blindPanel.unmount();
|
|
61
|
-
// A single-slot page opens straight in item-review.
|
|
62
|
-
const lone = manifest([{ id: 'only', kind: 'options', step: 0, config: { label: 'Pick one', mode: 'single', options: [{ id: 'a', label: 'Alpha' }] } }]);
|
|
63
|
-
const lonePanel = mountPanel({ manifest: lone, cols: 80, rows: 24 });
|
|
64
|
-
assert.match(lonePanel.render().join('\n'), /Pick one/);
|
|
65
|
-
lonePanel.unmount();
|
|
66
|
-
// An unvalidated slot takes no terminal input and keeps the page unsubmittable.
|
|
67
|
-
const unvalidated = manifest([{ id: 'widget', kind: 'acme.widget', step: 0, config: {}, unvalidated: true }]);
|
|
68
|
-
let unvalidatedResponses;
|
|
69
|
-
const unvalidatedPanel = mountPanel({ manifest: unvalidated, cols: 80, rows: 24, productKinds: [{ kind: 'acme.widget' }], onComplete: (r) => { unvalidatedResponses = r; } });
|
|
70
|
-
unvalidatedPanel.handleKey('c', key());
|
|
71
|
-
assert.equal(unvalidatedPanel.getInputBuffer(), undefined);
|
|
72
|
-
// The item screen names the route out instead of dead-ending on a submit gate
|
|
73
|
-
// that cannot open.
|
|
74
|
-
assert.match(unvalidatedPanel.render().join('\n'), /the terminal cannot submit/);
|
|
75
|
-
assert.match(unvalidatedPanel.render().join('\n'), /q leaves it in your inbox/);
|
|
76
|
-
unvalidatedPanel.handleKey('n', key());
|
|
77
|
-
unvalidatedPanel.handleKey('', enter);
|
|
78
|
-
assert.equal(unvalidatedResponses, undefined);
|
|
79
|
-
unvalidatedPanel.unmount();
|
|
80
|
-
const mixed = manifest([
|
|
81
|
-
{ id: 'widget', kind: 'acme.widget', step: 0, config: {}, unvalidated: true },
|
|
82
|
-
{ id: 'choice', kind: 'options', step: 0, config: { mode: 'single', options: [{ id: 'a', label: 'Alpha' }] } },
|
|
83
|
-
]);
|
|
84
|
-
// The overview says the same before the reader answers anything else.
|
|
85
|
-
const mixedPanel = mountPanel({ manifest: mixed, cols: 80, rows: 24, productKinds: [{ kind: 'acme.widget' }] });
|
|
86
|
-
assert.match(mixedPanel.render().join('\n'), /This page must be answered in Northlight/);
|
|
87
|
-
mixedPanel.unmount();
|
|
88
|
-
// Overview groups slots by step, without adding a progression gate.
|
|
89
|
-
const stepped = manifest([
|
|
90
|
-
{ id: 'one', kind: 'options', step: 0, config: { mode: 'single', options: [{ id: 'a', label: 'Alpha' }] } },
|
|
91
|
-
{ id: 'two', kind: 'options', step: 1, config: { mode: 'single', options: [{ id: 'b', label: 'Beta' }] } },
|
|
92
|
-
], { steps: 2 });
|
|
93
|
-
const steppedPanel = mountPanel({ manifest: stepped, cols: 80, rows: 24 });
|
|
94
|
-
const overview = steppedPanel.render().join('\n');
|
|
95
|
-
assert.match(overview, /Test page/);
|
|
96
|
-
assert.match(overview, /Step 1\/2/);
|
|
97
|
-
assert.match(overview, /Step 2\/2/);
|
|
98
|
-
steppedPanel.unmount();
|
|
99
|
-
// A page taller than the pane scrolls on overview and on the summary; before
|
|
100
|
-
// this, only item-review moved its window, so a long page was truncated with no
|
|
101
|
-
// key that could reach the rest of it.
|
|
102
|
-
const long = manifest(Array.from({ length: 30 }, (_v, i) => ({ id: `q${i}`, kind: 'options', step: 0, config: { label: `Question ${i}`, mode: 'single', options: [{ id: 'a', label: 'Alpha' }] } })));
|
|
103
|
-
const longPanel = mountPanel({ manifest: long, cols: 80, rows: 24 });
|
|
104
|
-
assert.doesNotMatch(longPanel.render().join('\n'), /Question 29/);
|
|
105
|
-
for (let i = 0; i < 5; i++)
|
|
106
|
-
longPanel.handleKey('d', key());
|
|
107
|
-
assert.match(longPanel.render().join('\n'), /Question 29/);
|
|
108
|
-
longPanel.handleKey('u', key());
|
|
109
|
-
assert.match(longPanel.render().join('\n'), /Question 2\b/);
|
|
110
|
-
// j/k keeps steering the selection, and the window follows it rather than
|
|
111
|
-
// letting the cursor wander off screen.
|
|
112
|
-
for (let i = 0; i < 29; i++)
|
|
113
|
-
longPanel.handleKey('j', key());
|
|
114
|
-
assert.match(longPanel.render().join('\n'), /Question 29/);
|
|
115
|
-
// The key hints hold the bottom row instead of scrolling away with the content,
|
|
116
|
-
// and carry the position badge that says there is more to scroll to.
|
|
117
|
-
const plain = (line) => line.replace(/\x1b\[[0-9;]*m/g, '');
|
|
118
|
-
const lastRow = () => plain(longPanel.render().at(-1) ?? '');
|
|
119
|
-
for (let i = 0; i < 20; i++)
|
|
120
|
-
longPanel.handleKey('u', key());
|
|
121
|
-
assert.match(lastRow(), /j\/k navigate/);
|
|
122
|
-
assert.match(lastRow(), /▾ 1–\d+\/\d+/);
|
|
123
|
-
assert.doesNotMatch(lastRow(), /▴/);
|
|
124
|
-
for (let i = 0; i < 20; i++)
|
|
125
|
-
longPanel.handleKey('d', key());
|
|
126
|
-
assert.match(lastRow(), /j\/k navigate/);
|
|
127
|
-
assert.match(lastRow(), /▴/);
|
|
128
|
-
assert.doesNotMatch(lastRow(), /▾/);
|
|
129
|
-
longPanel.unmount();
|
|
130
|
-
// A page shorter than the pane keeps its hints and shows no position badge.
|
|
131
|
-
const shortPanel = mountPanel({ manifest: manifest([{ id: 'only', kind: 'options', step: 0, config: { label: 'Pick one', mode: 'single', options: [{ id: 'a', label: 'Alpha' }] } }]), cols: 80, rows: 24 });
|
|
132
|
-
assert.match(plain(shortPanel.render().at(-1) ?? ''), /q close/);
|
|
133
|
-
assert.doesNotMatch(shortPanel.render().join('\n'), /[▴▾]/);
|
|
134
|
-
shortPanel.unmount();
|
|
135
|
-
console.log('OK');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
// A page request that settles out-of-band (answered from another surface, or a
|
|
2
|
-
// row this inbox failed to drop) must not read as "being edited by another
|
|
3
|
-
// inbox" when the reader presses Enter: its request row is already settled, so
|
|
4
|
-
// the row is stale and this activation must report the settlement and drop it.
|
|
5
|
-
import assert from 'node:assert/strict';
|
|
6
|
-
import { existsSync } from 'node:fs';
|
|
7
|
-
import { startHumanDaemon } from '../../../__tests__/helpers/human-daemon.js';
|
|
8
|
-
const daemon = await startHumanDaemon('crtr-stale-row');
|
|
9
|
-
// Imported after the isolated home is in place, so nothing resolves the
|
|
10
|
-
// developer's own canvas at module load.
|
|
11
|
-
const { cliClient } = await import('#commands/api-client');
|
|
12
|
-
const { withCanvasWrite } = await import('#core/canvas/db');
|
|
13
|
-
const { settleRequestLocked } = await import('#core/human/requests');
|
|
14
|
-
const { claimPath } = await import('#core/human/convention');
|
|
15
|
-
const { InboxController } = await import('../../controller.js');
|
|
16
|
-
const key = (part = {}) => ({ ctrl: false, meta: false, upArrow: false, downArrow: false, leftArrow: false, rightArrow: false, wordLeft: false, wordRight: false, home: false, end: false, pageUp: false, pageDown: false, del: false, return: false, newline: false, escape: false, tab: false, backspace: false, ...part });
|
|
17
|
-
function fakeHost() {
|
|
18
|
-
const handle = { close() { }, invalidate() { }, onClose() { } };
|
|
19
|
-
return { capabilities: { remote: false, canFocusNode: false, selfPane: undefined }, mount: () => handle, notice() { }, suspendForChild: () => () => { }, focusNode: async () => false, pickReviewFile: async () => null };
|
|
20
|
-
}
|
|
21
|
-
const status = (c) => c.status;
|
|
22
|
-
async function waitFor(predicate, message) { const end = Date.now() + 5000; while (!predicate()) {
|
|
23
|
-
if (Date.now() > end)
|
|
24
|
-
throw new Error(message);
|
|
25
|
-
await new Promise((r) => setTimeout(r, 10));
|
|
26
|
-
} }
|
|
27
|
-
try {
|
|
28
|
-
const client = cliClient();
|
|
29
|
-
const request = await client.createHumanRequest({
|
|
30
|
-
page: { dialect: 'jsx', source: 'export default () => (\n <Page title="Stale row page" subtitle="Pick one">\n <UserQuestion id="choice" label="Restore?" body="Pick one." mode="single" options={[{ id: "yes", label: "Yes" }, { id: "no", label: "No" }]} />\n </Page>\n);\n' },
|
|
31
|
-
delivery: { placement: 'inline', inbox: true, reply: false },
|
|
32
|
-
creator_cwd: daemon.home,
|
|
33
|
-
});
|
|
34
|
-
// Seed the controller's in-memory list while the request is open.
|
|
35
|
-
const controller = new InboxController({ host: fakeHost(), onDirty() { }, onClosed() { }, cols: 100, rows: 24 });
|
|
36
|
-
await waitFor(() => controller.snapshot().items.length === 1, 'pending page is listed');
|
|
37
|
-
// Settle it in the canvas without letting the controller rescan: this is the
|
|
38
|
-
// stale-row state the bug leaves behind, and it stands for a settlement some
|
|
39
|
-
// other surface performed.
|
|
40
|
-
const settledAt = new Date().toISOString();
|
|
41
|
-
const settled = withCanvasWrite((db) => settleRequestLocked(db, {
|
|
42
|
-
request_id: request.request_id,
|
|
43
|
-
outcome: 'answered',
|
|
44
|
-
result_json: JSON.stringify({ schema: 'crtr.page-response/v1', kind: 'page', responses: { choice: { selectedOptionIds: ['yes'], comments: [] } }, summary: 'page submitted', completedAt: settledAt }),
|
|
45
|
-
settled_at: settledAt,
|
|
46
|
-
}));
|
|
47
|
-
assert.notEqual(settled, null, 'the out-of-band settlement wins the terminal transition');
|
|
48
|
-
assert.equal((await client.getHumanRequest(request.request_id)).state, 'answered', 'the request row is terminal');
|
|
49
|
-
assert.equal(existsSync(claimPath(request.request_dir)), false, 'settlement leaves no claim behind');
|
|
50
|
-
assert.equal(controller.snapshot().items.length, 1, 'the in-memory row is still stale');
|
|
51
|
-
// Pressing Enter on the stale row must report the settlement and drop it,
|
|
52
|
-
// never claim it is edited by another inbox. A claim would still succeed on
|
|
53
|
-
// the directory, so the settled row is recognized from its request record.
|
|
54
|
-
controller.handleKey('', key({ return: true }));
|
|
55
|
-
await waitFor(() => controller.snapshot().items.length === 0, 'the stale row drops on activation');
|
|
56
|
-
const reported = status(controller) ?? '';
|
|
57
|
-
assert.match(reported, /already resolved/, `stale-row activation reports the settlement, got: ${JSON.stringify(reported)}`);
|
|
58
|
-
assert.doesNotMatch(reported, /being edited/, 'a settled row is never "edited by another inbox"');
|
|
59
|
-
assert.equal(controller.snapshot().screen, 'list', 'a settled row never opens the detail pane');
|
|
60
|
-
assert.equal(existsSync(claimPath(request.request_dir)), false, 'a stale row is never claimed');
|
|
61
|
-
controller.close();
|
|
62
|
-
console.log('stale-row regression passed');
|
|
63
|
-
}
|
|
64
|
-
finally {
|
|
65
|
-
await daemon.dispose();
|
|
66
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import { chmodSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
3
|
-
import { tmpdir } from 'node:os';
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
-
import { editBufferInEditor } from '../roundtrip.js';
|
|
6
|
-
const temp = mkdtempSync(join(tmpdir(), 'humanloop-editor-roundtrip-'));
|
|
7
|
-
const priorEditor = process.env.EDITOR;
|
|
8
|
-
const priorVisual = process.env.VISUAL;
|
|
9
|
-
delete process.env.VISUAL;
|
|
10
|
-
try {
|
|
11
|
-
const successfulEditor = join(temp, 'success-editor');
|
|
12
|
-
writeFileSync(successfulEditor, '#!/bin/sh\nprintf "edited\\n" > "$1"\n');
|
|
13
|
-
chmodSync(successfulEditor, 0o755);
|
|
14
|
-
process.env.EDITOR = successfulEditor;
|
|
15
|
-
assert.deepEqual(editBufferInEditor('original'), { text: 'edited' }, 'editor readback replaces the buffer and removes one editor-added newline');
|
|
16
|
-
const failingEditor = join(temp, 'failing-editor');
|
|
17
|
-
writeFileSync(failingEditor, '#!/bin/sh\nexit 9\n');
|
|
18
|
-
chmodSync(failingEditor, 0o755);
|
|
19
|
-
process.env.EDITOR = failingEditor;
|
|
20
|
-
const failed = editBufferInEditor('keep this');
|
|
21
|
-
assert.equal(failed.text, 'keep this', 'a failing editor leaves the active input intact');
|
|
22
|
-
assert.match(failed.error ?? '', /exited with status 9/, 'a failing editor reports its status to the host');
|
|
23
|
-
}
|
|
24
|
-
finally {
|
|
25
|
-
if (priorEditor === undefined)
|
|
26
|
-
delete process.env.EDITOR;
|
|
27
|
-
else
|
|
28
|
-
process.env.EDITOR = priorEditor;
|
|
29
|
-
if (priorVisual === undefined)
|
|
30
|
-
delete process.env.VISUAL;
|
|
31
|
-
else
|
|
32
|
-
process.env.VISUAL = priorVisual;
|
|
33
|
-
rmSync(temp, { recursive: true, force: true });
|
|
34
|
-
}
|
|
35
|
-
console.log('editor round-trip tests passed');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import stringWidth from 'string-width';
|
|
3
|
-
import { deriveAnchorUnits } from '../anchors.js';
|
|
4
|
-
import { initReviewState } from '../state.js';
|
|
5
|
-
import { maxHScroll, panBy, renderReviewFrame } from '../frame.js';
|
|
6
|
-
// ── Regression: a Mermaid diagram wider than the pane (reported bug) ────────
|
|
7
|
-
// Wide diagram rows used to run past the terminal's right edge; the spillover
|
|
8
|
-
// wrapped and was unreachable. Every emitted row must now fit the frame, and
|
|
9
|
-
// h/l must reach the far end of the diagram.
|
|
10
|
-
{
|
|
11
|
-
const wide = '\u2500'.repeat(300);
|
|
12
|
-
const wideDoc = {
|
|
13
|
-
lines: ['TITLE', '', wide, '', 'tail'],
|
|
14
|
-
rows: [0, null, 1, null, 2],
|
|
15
|
-
spans: [[1, 1], null, [3, 3], null, [5, 5]],
|
|
16
|
-
blocks: [
|
|
17
|
-
{ type: 'heading', start: 1, end: 1 },
|
|
18
|
-
{ type: 'mermaid', start: 3, end: 3 },
|
|
19
|
-
{ type: 'paragraph', start: 5, end: 5 },
|
|
20
|
-
],
|
|
21
|
-
};
|
|
22
|
-
const cols = 80;
|
|
23
|
-
let s = initReviewState(['# t', '', 'diagram', '', 'tail'], deriveAnchorUnits(wideDoc), [], 0);
|
|
24
|
-
const widths = (frame) => frame.map((line) => stringWidth(line));
|
|
25
|
-
const frame = renderReviewFrame(s, 'doc.md', wideDoc, cols, 20);
|
|
26
|
-
assert.equal(frame.length, 20, 'the frame always fills the requested row count');
|
|
27
|
-
assert.ok(Math.max(...widths(frame)) <= cols, 'every frame row fits inside the terminal');
|
|
28
|
-
// The readable column stays centered while a full-pane diagram enters and
|
|
29
|
-
// leaves the viewport; only the diagram rows claim the pane.
|
|
30
|
-
const titleIndent = (at) => {
|
|
31
|
-
const title = renderReviewFrame({ ...s, scroll: at }, 'doc.md', wideDoc, 200, 7)[1];
|
|
32
|
-
return title.match(/^ */)?.[0].length ?? 0;
|
|
33
|
-
};
|
|
34
|
-
assert.equal(titleIndent(1), titleIndent(0), 'a visible wide diagram does not pull the review column left');
|
|
35
|
-
assert.equal(titleIndent(2), titleIndent(0), 'the review column remains fixed after scrolling past the diagram');
|
|
36
|
-
assert.ok(frame[3 + 2].includes('\u203a'), 'a diagram continuing to the right says so');
|
|
37
|
-
assert.ok(!frame[3 + 2].includes('\u2039'), 'nothing is hidden to the left at offset 0');
|
|
38
|
-
// h/l pan is bounded by what the visible rows actually overflow by.
|
|
39
|
-
const max = maxHScroll(s, wideDoc, cols, 20);
|
|
40
|
-
assert.equal(max, 300 - (cols - 4), 'pan reach is the widest visible row minus the body rectangle');
|
|
41
|
-
s = panBy(s, 10_000, wideDoc, cols, 20);
|
|
42
|
-
assert.equal(s.hscroll, max, 'panning right clamps at the end of the diagram');
|
|
43
|
-
const panned = renderReviewFrame(s, 'doc.md', wideDoc, cols, 20);
|
|
44
|
-
assert.ok(Math.max(...widths(panned)) <= cols, 'panned rows stay inside the terminal too');
|
|
45
|
-
assert.ok(panned[3 + 2].includes('\u2039'), 'a diagram continuing to the left says so');
|
|
46
|
-
assert.ok(!panned[3 + 2].includes('\u203a'), 'the far edge of the diagram is reachable');
|
|
47
|
-
// Prose rows never move under panning — only overflowing rows do.
|
|
48
|
-
assert.equal(panned[3 + 4].replace(/\x1b\[[0-9;]*m/g, '').trim(), 'tail');
|
|
49
|
-
s = panBy(s, -10_000, wideDoc, cols, 20);
|
|
50
|
-
assert.equal(s.hscroll, 0, 'panning left returns to the diagram start');
|
|
51
|
-
}
|
|
52
|
-
console.log('terminal review tests passed');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|