@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,106 +1 @@
|
|
|
1
|
-
|
|
2
|
-
// companion conversation. The first feedback comment forks the page's sending
|
|
3
|
-
// node at its then-current state; the ticket then records that companion and
|
|
4
|
-
// every later comment reaches the same conversation. No fork point is captured
|
|
5
|
-
// at page send and no placeholder exists before feedback.
|
|
6
|
-
import { createHash } from 'node:crypto';
|
|
7
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
8
|
-
import { resolve } from 'node:path';
|
|
9
|
-
import { getNode } from '../canvas/index.js';
|
|
10
|
-
import { awaitCompanionBind, captureOrigin } from '../review/companion.js';
|
|
11
|
-
import { COMPANION_BIND_DEADLINE_MS } from '../review/types.js';
|
|
12
|
-
import { SessionManager } from '../runtime/broker-sdk.js';
|
|
13
|
-
import { buildLaunchSpec } from '../runtime/launch.js';
|
|
14
|
-
import { transition } from '../runtime/lifecycle.js';
|
|
15
|
-
import { headlessBrokerHost } from '../runtime/host.js';
|
|
16
|
-
import { spawnNode } from '../runtime/nodes.js';
|
|
17
|
-
import { reviveNode } from '../runtime/revive.js';
|
|
18
|
-
import { materializeSessionBranchAt } from '../runtime/session-branch.js';
|
|
19
|
-
import { initializeForkContextExposure } from '../substrate/injected-store.js';
|
|
20
|
-
import { pagePath } from './convention.js';
|
|
21
|
-
import { selectedPageDir } from './tickets.js';
|
|
22
|
-
export function feedbackCompanionBranchPath(dir) { return `${dir}/companion-branch.jsonl`; }
|
|
23
|
-
/** Hex sha256 of the ticket's page document, recorded at first comment so the
|
|
24
|
-
* settle-time completion can say whether the page changed during feedback. */
|
|
25
|
-
export function pageDocumentSha256(dir) {
|
|
26
|
-
return createHash('sha256').update(readFileSync(pagePath(selectedPageDir(dir), 'jsx'))).digest('hex');
|
|
27
|
-
}
|
|
28
|
-
/** Materialize the companion's fork branch, reusing only an already-valid one. */
|
|
29
|
-
function materializeFeedbackBranch(dir, capture) {
|
|
30
|
-
const branchFile = feedbackCompanionBranchPath(dir);
|
|
31
|
-
if (existsSync(branchFile)) {
|
|
32
|
-
const branch = SessionManager.open(branchFile);
|
|
33
|
-
if (branch.getSessionFile() === resolve(branchFile) && branch.getSessionId() !== '')
|
|
34
|
-
return branchFile;
|
|
35
|
-
}
|
|
36
|
-
materializeSessionBranchAt(capture, branchFile);
|
|
37
|
-
return branchFile;
|
|
38
|
-
}
|
|
39
|
-
/** A companion node nothing on the ticket points at must not stay resident:
|
|
40
|
-
* the comment that would have bound it was refused, failed to commit, or lost
|
|
41
|
-
* the first-comment race to a concurrently recorded companion. */
|
|
42
|
-
export function discardFeedbackCompanion(nodeId) {
|
|
43
|
-
try {
|
|
44
|
-
transition(nodeId, 'cancel', { reason: 'retired' });
|
|
45
|
-
headlessBrokerHost.teardown(nodeId);
|
|
46
|
-
}
|
|
47
|
-
catch { /* the refusal is authoritative; a straggler node is inert */ }
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Fork the sending node's current state into the ticket-bound companion and
|
|
51
|
-
* wait for its durable boundary bind. Throws on any failure — the caller
|
|
52
|
-
* refuses the comment so no feedback is accepted without a visible
|
|
53
|
-
* conversation able to receive it.
|
|
54
|
-
*/
|
|
55
|
-
export async function realizeFeedbackCompanion(args) {
|
|
56
|
-
const origin = getNode(args.senderNodeId);
|
|
57
|
-
if (origin === null)
|
|
58
|
-
throw new Error(`page sender was not found: ${args.senderNodeId}`);
|
|
59
|
-
const capture = await captureOrigin(args.senderNodeId);
|
|
60
|
-
const branchFile = materializeFeedbackBranch(args.dir, capture);
|
|
61
|
-
const { launch } = buildLaunchSpec(origin.kind, origin.mode, {
|
|
62
|
-
lifecycle: 'resident',
|
|
63
|
-
hasManager: false,
|
|
64
|
-
model: capture.modelSpec,
|
|
65
|
-
modelExact: true,
|
|
66
|
-
cwd: origin.cwd,
|
|
67
|
-
profileId: origin.profile_id ?? null,
|
|
68
|
-
});
|
|
69
|
-
const node = await spawnNode({
|
|
70
|
-
kind: origin.kind,
|
|
71
|
-
mode: origin.mode,
|
|
72
|
-
lifecycle: 'resident',
|
|
73
|
-
cwd: origin.cwd,
|
|
74
|
-
profile_id: origin.profile_id ?? null,
|
|
75
|
-
parent: args.senderNodeId,
|
|
76
|
-
creator: args.senderNodeId,
|
|
77
|
-
subscribe: false,
|
|
78
|
-
forkFrom: branchFile,
|
|
79
|
-
forkSourceFile: branchFile,
|
|
80
|
-
modelOverride: capture.modelSpec,
|
|
81
|
-
reviewBinding: {
|
|
82
|
-
kind: 'page_feedback',
|
|
83
|
-
review_id: args.ticketId,
|
|
84
|
-
origin_node_id: args.senderNodeId,
|
|
85
|
-
branch_file: branchFile,
|
|
86
|
-
target_file: pagePath(selectedPageDir(args.dir), 'jsx'),
|
|
87
|
-
},
|
|
88
|
-
name: `Feedback · ${args.title}`,
|
|
89
|
-
launch,
|
|
90
|
-
});
|
|
91
|
-
try {
|
|
92
|
-
initializeForkContextExposure(node.node_id, args.senderNodeId);
|
|
93
|
-
// The bind deadline below only a live broker can meet, so a capacity
|
|
94
|
-
// refusal must surface here and discard the companion — freezing would
|
|
95
|
-
// burn the whole deadline waiting for a launch that is not coming.
|
|
96
|
-
await reviveNode(node.node_id, { resume: false, capacity: 'refuse' });
|
|
97
|
-
if (!await awaitCompanionBind(node.node_id, COMPANION_BIND_DEADLINE_MS)) {
|
|
98
|
-
throw new Error(`feedback companion did not bind within ${COMPANION_BIND_DEADLINE_MS}ms`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
discardFeedbackCompanion(node.node_id);
|
|
103
|
-
throw error;
|
|
104
|
-
}
|
|
105
|
-
return node.node_id;
|
|
106
|
-
}
|
|
1
|
+
var s=Object.defineProperty;var n=(e,o)=>s(e,"name",{value:o,configurable:!0});import{createHash as f}from"node:crypto";import{existsSync as l,readFileSync as u}from"node:fs";import{resolve as h}from"node:path";import{getNode as w}from"../canvas/index.js";import{awaitCompanionBind as _,captureOrigin as b}from"../review/companion.js";import{COMPANION_BIND_DEADLINE_MS as d}from"../review/types.js";import{SessionManager as k}from"../runtime/broker-sdk.js";import{buildLaunchSpec as N}from"../runtime/launch.js";import{transition as I}from"../runtime/lifecycle.js";import{headlessBrokerHost as S}from"../runtime/host.js";import{spawnNode as x}from"../runtime/nodes.js";import{reviveNode as F}from"../runtime/revive.js";import{materializeSessionBranchAt as y}from"../runtime/session-branch.js";import{initializeForkContextExposure as B}from"../substrate/injected-store.js";import{pagePath as a}from"./convention.js";import{selectedPageDir as c}from"./tickets.js";function g(e){return`${e}/companion-branch.jsonl`}n(g,"feedbackCompanionBranchPath");function T(e){return f("sha256").update(u(a(c(e),"jsx"))).digest("hex")}n(T,"pageDocumentSha256");function v(e,o){const r=g(e);if(l(r)){const i=k.open(r);if(i.getSessionFile()===h(r)&&i.getSessionId()!=="")return r}return y(o,r),r}n(v,"materializeFeedbackBranch");function C(e){try{I(e,"cancel",{reason:"retired"}),S.teardown(e)}catch{}}n(C,"discardFeedbackCompanion");async function U(e){const o=w(e.senderNodeId);if(o===null)throw new Error(`page sender was not found: ${e.senderNodeId}`);const r=await b(e.senderNodeId),i=v(e.dir,r),{launch:m}=N(o.kind,o.mode,{lifecycle:"resident",hasManager:!1,model:r.modelSpec,modelExact:!0,cwd:o.cwd,profileId:o.profile_id??null}),t=await x({kind:o.kind,mode:o.mode,lifecycle:"resident",cwd:o.cwd,profile_id:o.profile_id??null,parent:e.senderNodeId,creator:e.senderNodeId,subscribe:!1,forkFrom:i,forkSourceFile:i,modelOverride:r.modelSpec,reviewBinding:{kind:"page_feedback",review_id:e.ticketId,origin_node_id:e.senderNodeId,branch_file:i,target_file:a(c(e.dir),"jsx")},name:`Feedback \xB7 ${e.title}`,launch:m});try{if(B(t.node_id,e.senderNodeId),await F(t.node_id,{resume:!1,capacity:"refuse"}),!await _(t.node_id,d))throw new Error(`feedback companion did not bind within ${d}ms`)}catch(p){throw C(t.node_id),p}return t.node_id}n(U,"realizeFeedbackCompanion");export{C as discardFeedbackCompanion,g as feedbackCompanionBranchPath,T as pageDocumentSha256,U as realizeFeedbackCompanion};
|
|
@@ -1,88 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { withCanvasWrite } from '../canvas/db.js';
|
|
4
|
-
import { getRequestByDirectory } from './requests.js';
|
|
5
|
-
export const PAGE_FEEDBACK_SCHEMA = 'crtr.page-feedback/v1';
|
|
6
|
-
/** The path is a presentation projection, not the feedback authority. */
|
|
7
|
-
export function pageFeedbackPath(dir) { return `${dir}/feedback-comments.json`; }
|
|
8
|
-
const pageFeedbackCommentSchema = z.object({
|
|
9
|
-
id: z.string().min(1), quote: z.string().min(1), context: z.string().optional(), note: z.string().min(1),
|
|
10
|
-
status: z.enum(['open', 'resolved']), createdAt: z.string().datetime({ offset: true }), resolvedAt: z.string().datetime({ offset: true }).optional(),
|
|
11
|
-
}).strict();
|
|
12
|
-
const pageFeedbackSchema = z.object({
|
|
13
|
-
schema: z.literal(PAGE_FEEDBACK_SCHEMA), companionNodeId: z.string().min(1).optional(),
|
|
14
|
-
firstCommentedSha256: z.string().min(1).optional(), comments: z.array(pageFeedbackCommentSchema),
|
|
15
|
-
}).strict();
|
|
16
|
-
function emptyFeedback() { return { schema: PAGE_FEEDBACK_SCHEMA, comments: [] }; }
|
|
17
|
-
function requestForDirectory(dir) {
|
|
18
|
-
const request = getRequestByDirectory(dir);
|
|
19
|
-
if (request === null || request.kind !== 'page')
|
|
20
|
-
throw new Error(`unknown page request directory: ${dir}`);
|
|
21
|
-
return request;
|
|
22
|
-
}
|
|
23
|
-
function feedback(request) {
|
|
24
|
-
if (request.feedback_json === null)
|
|
25
|
-
return request.companion_node_id === null ? emptyFeedback() : { ...emptyFeedback(), companionNodeId: request.companion_node_id };
|
|
26
|
-
try {
|
|
27
|
-
return pageFeedbackSchema.parse(JSON.parse(request.feedback_json));
|
|
28
|
-
}
|
|
29
|
-
catch (error) {
|
|
30
|
-
throw new Error(`page feedback is malformed for ${request.request_id}`, { cause: error });
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/** Read page feedback from the request row. */
|
|
34
|
-
export function readPageFeedback(dir) { return feedback(requestForDirectory(dir)); }
|
|
35
|
-
export class PageTicketTerminalError extends Error {
|
|
36
|
-
constructor() { super('ticket already has a terminal outcome'); }
|
|
37
|
-
}
|
|
38
|
-
export class UnknownPageFeedbackCommentError extends Error {
|
|
39
|
-
constructor(commentId) { super(`no feedback comment ${commentId} on this ticket`); }
|
|
40
|
-
}
|
|
41
|
-
export class PageFeedbackCommentAlreadyResolvedError extends Error {
|
|
42
|
-
constructor(commentId) { super(`feedback comment ${commentId} is already resolved`); }
|
|
43
|
-
}
|
|
44
|
-
/** Append feedback in the request transaction; terminal rows reject it. */
|
|
45
|
-
export function createPageFeedbackComment(dir, input) {
|
|
46
|
-
const request = requestForDirectory(dir);
|
|
47
|
-
return withCanvasWrite((db) => {
|
|
48
|
-
const current = db.prepare('SELECT * FROM human_requests WHERE request_id = ?').get(request.request_id);
|
|
49
|
-
if (current === undefined)
|
|
50
|
-
throw new Error(`human request disappeared: ${request.request_id}`);
|
|
51
|
-
if (current['state'] !== 'open')
|
|
52
|
-
throw new PageTicketTerminalError();
|
|
53
|
-
const row = { ...request, feedback_json: current['feedback_json'], companion_node_id: current['companion_node_id'] };
|
|
54
|
-
const next = feedback(row);
|
|
55
|
-
if (next.companionNodeId === undefined && input.companionNodeId !== undefined) {
|
|
56
|
-
next.companionNodeId = input.companionNodeId;
|
|
57
|
-
if (input.firstCommentedSha256 !== undefined)
|
|
58
|
-
next.firstCommentedSha256 = input.firstCommentedSha256;
|
|
59
|
-
}
|
|
60
|
-
const comment = { id: randomUUID(), quote: input.quote, ...(input.context === undefined ? {} : { context: input.context }), note: input.note, status: 'open', createdAt: new Date().toISOString() };
|
|
61
|
-
next.comments.push(comment);
|
|
62
|
-
pageFeedbackSchema.parse(next);
|
|
63
|
-
db.prepare('UPDATE human_requests SET feedback_json = ?, companion_node_id = COALESCE(companion_node_id, ?), updated_at = ? WHERE request_id = ?').run(JSON.stringify(next), next.companionNodeId ?? null, new Date().toISOString(), request.request_id);
|
|
64
|
-
return { comment, feedback: next };
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
/** Resolve one feedback comment in the request transaction. */
|
|
68
|
-
export function resolvePageFeedbackComment(dir, commentId) {
|
|
69
|
-
const request = requestForDirectory(dir);
|
|
70
|
-
return withCanvasWrite((db) => {
|
|
71
|
-
const current = db.prepare('SELECT * FROM human_requests WHERE request_id = ?').get(request.request_id);
|
|
72
|
-
if (current === undefined)
|
|
73
|
-
throw new Error(`human request disappeared: ${request.request_id}`);
|
|
74
|
-
if (current['state'] !== 'open')
|
|
75
|
-
throw new PageTicketTerminalError();
|
|
76
|
-
const row = { ...request, feedback_json: current['feedback_json'], companion_node_id: current['companion_node_id'] };
|
|
77
|
-
const next = feedback(row);
|
|
78
|
-
const comment = next.comments.find((entry) => entry.id === commentId);
|
|
79
|
-
if (comment === undefined)
|
|
80
|
-
throw new UnknownPageFeedbackCommentError(commentId);
|
|
81
|
-
if (comment.status === 'resolved')
|
|
82
|
-
throw new PageFeedbackCommentAlreadyResolvedError(commentId);
|
|
83
|
-
comment.status = 'resolved';
|
|
84
|
-
comment.resolvedAt = new Date().toISOString();
|
|
85
|
-
db.prepare('UPDATE human_requests SET feedback_json = ?, updated_at = ? WHERE request_id = ?').run(JSON.stringify(next), new Date().toISOString(), request.request_id);
|
|
86
|
-
return { comment, feedback: next };
|
|
87
|
-
});
|
|
88
|
-
}
|
|
1
|
+
var g=Object.defineProperty;var r=(t,e)=>g(t,"name",{value:e,configurable:!0});import{randomUUID as h}from"node:crypto";import{z as n}from"zod";import{withCanvasWrite as f}from"../canvas/db.js";import{getRequestByDirectory as b}from"./requests.js";const p="crtr.page-feedback/v1";function A(t){return`${t}/feedback-comments.json`}r(A,"pageFeedbackPath");const w=n.object({id:n.string().min(1),quote:n.string().min(1),context:n.string().optional(),note:n.string().min(1),status:n.enum(["open","resolved"]),createdAt:n.string().datetime({offset:!0}),resolvedAt:n.string().datetime({offset:!0}).optional()}).strict(),_=n.object({schema:n.literal(p),companionNodeId:n.string().min(1).optional(),firstCommentedSha256:n.string().min(1).optional(),comments:n.array(w)}).strict();function E(){return{schema:p,comments:[]}}r(E,"emptyFeedback");function m(t){const e=b(t);if(e===null||e.kind!=="page")throw new Error(`unknown page request directory: ${t}`);return e}r(m,"requestForDirectory");function u(t){if(t.feedback_json===null)return t.companion_node_id===null?E():{...E(),companionNodeId:t.companion_node_id};try{return _.parse(JSON.parse(t.feedback_json))}catch(e){throw new Error(`page feedback is malformed for ${t.request_id}`,{cause:e})}}r(u,"feedback");function v(t){return u(m(t))}r(v,"readPageFeedback");class k extends Error{static{r(this,"PageTicketTerminalError")}constructor(){super("ticket already has a terminal outcome")}}class S extends Error{static{r(this,"UnknownPageFeedbackCommentError")}constructor(e){super(`no feedback comment ${e} on this ticket`)}}class q extends Error{static{r(this,"PageFeedbackCommentAlreadyResolvedError")}constructor(e){super(`feedback comment ${e} is already resolved`)}}function D(t,e){const a=m(t);return f(i=>{const s=i.prepare("SELECT * FROM human_requests WHERE request_id = ?").get(a.request_id);if(s===void 0)throw new Error(`human request disappeared: ${a.request_id}`);if(s.state!=="open")throw new k;const c={...a,feedback_json:s.feedback_json,companion_node_id:s.companion_node_id},o=u(c);o.companionNodeId===void 0&&e.companionNodeId!==void 0&&(o.companionNodeId=e.companionNodeId,e.firstCommentedSha256!==void 0&&(o.firstCommentedSha256=e.firstCommentedSha256));const d={id:h(),quote:e.quote,...e.context===void 0?{}:{context:e.context},note:e.note,status:"open",createdAt:new Date().toISOString()};return o.comments.push(d),_.parse(o),i.prepare("UPDATE human_requests SET feedback_json = ?, companion_node_id = COALESCE(companion_node_id, ?), updated_at = ? WHERE request_id = ?").run(JSON.stringify(o),o.companionNodeId??null,new Date().toISOString(),a.request_id),{comment:d,feedback:o}})}r(D,"createPageFeedbackComment");function I(t,e){const a=m(t);return f(i=>{const s=i.prepare("SELECT * FROM human_requests WHERE request_id = ?").get(a.request_id);if(s===void 0)throw new Error(`human request disappeared: ${a.request_id}`);if(s.state!=="open")throw new k;const c={...a,feedback_json:s.feedback_json,companion_node_id:s.companion_node_id},o=u(c),d=o.comments.find(l=>l.id===e);if(d===void 0)throw new S(e);if(d.status==="resolved")throw new q(e);return d.status="resolved",d.resolvedAt=new Date().toISOString(),i.prepare("UPDATE human_requests SET feedback_json = ?, updated_at = ? WHERE request_id = ?").run(JSON.stringify(o),new Date().toISOString(),a.request_id),{comment:d,feedback:o}})}r(I,"resolvePageFeedbackComment");export{p as PAGE_FEEDBACK_SCHEMA,q as PageFeedbackCommentAlreadyResolvedError,k as PageTicketTerminalError,S as UnknownPageFeedbackCommentError,D as createPageFeedbackComment,A as pageFeedbackPath,v as readPageFeedback,I as resolvePageFeedbackComment};
|
|
@@ -1,19 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { compilePage, deriveHtmlPageManifest, derivePageManifestFromDocument, PageAuthoringError } from './page.js';
|
|
3
|
-
/** Validate one authored page document into a transportable request. */
|
|
4
|
-
export function preparePageSource(opts) {
|
|
5
|
-
const stamped = { ...(opts.source ?? {}), emittedAt: opts.source?.emittedAt ?? new Date().toISOString() };
|
|
6
|
-
const delivery = opts.delivery ?? { placement: 'inline', inbox: false, reply: false };
|
|
7
|
-
if (opts.dialect === 'html')
|
|
8
|
-
return { document: opts.document, manifest: deriveHtmlPageManifest(opts.document, stamped, delivery) };
|
|
9
|
-
return { document: opts.document, module: compilePage(opts.document), manifest: derivePageManifestFromDocument(opts.document, opts.productKinds ?? [], stamped, delivery) };
|
|
10
|
-
}
|
|
11
|
-
/** Validate one authored page source file without reading or writing canvas state. */
|
|
12
|
-
export function preparePage(opts) {
|
|
13
|
-
const html = /\.html?$/i.test(opts.sourceFile);
|
|
14
|
-
if (!html && !opts.sourceFile.endsWith('.tsx'))
|
|
15
|
-
throw new PageAuthoringError(`page source file must be .tsx, .html, or .htm: ${opts.sourceFile}`);
|
|
16
|
-
if (!existsSync(opts.sourceFile))
|
|
17
|
-
throw new PageAuthoringError(`page source file does not exist: ${opts.sourceFile}`);
|
|
18
|
-
return preparePageSource({ ...opts, dialect: html ? 'html' : 'jsx', document: readFileSync(opts.sourceFile, 'utf8') });
|
|
19
|
-
}
|
|
1
|
+
var c=Object.defineProperty;var r=(e,t)=>c(e,"name",{value:t,configurable:!0});import{existsSync as m,readFileSync as u}from"node:fs";import{compilePage as o,deriveHtmlPageManifest as l,derivePageManifestFromDocument as d,PageAuthoringError as n}from"./page.js";function a(e){const t={...e.source??{},emittedAt:e.source?.emittedAt??new Date().toISOString()},i=e.delivery??{placement:"inline",inbox:!1,reply:!1};return e.dialect==="html"?{document:e.document,manifest:l(e.document,t,i)}:{document:e.document,module:o(e.document),manifest:d(e.document,e.productKinds??[],t,i)}}r(a,"preparePageSource");function h(e){const t=/\.html?$/i.test(e.sourceFile);if(!t&&!e.sourceFile.endsWith(".tsx"))throw new n(`page source file must be .tsx, .html, or .htm: ${e.sourceFile}`);if(!m(e.sourceFile))throw new n(`page source file does not exist: ${e.sourceFile}`);return a({...e,dialect:t?"html":"jsx",document:u(e.sourceFile,"utf8")})}r(h,"preparePage");export{h as preparePage,a as preparePageSource};
|
|
@@ -1,172 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export const BUILTIN_PAGE_KINDS = ['options', 'text', 'table', 'cards', 'chart'];
|
|
3
|
-
export const STRUCTURAL_PAGE_KINDS = ['page', 'step'];
|
|
4
|
-
const PAGE_KIND_PATTERN = /^[a-z][a-z0-9-]{0,63}$/;
|
|
5
|
-
const BUILTIN_PAGE_KIND_SET = new Set(BUILTIN_PAGE_KINDS);
|
|
6
|
-
const BUILTIN_COMPONENTS = [
|
|
7
|
-
{ kind: 'page', tag: 'Page', description: 'the page itself: title, subtitle, and every step it contains', useWhen: 'use as the single root element every page returns', builtin: true, structural: true },
|
|
8
|
-
{ kind: 'step', tag: 'Step', description: 'one step inside a Page', useWhen: 'use for each step the user sees and completes in sequence', builtin: true, structural: true },
|
|
9
|
-
{ kind: 'options', tag: 'UserQuestion', description: 'known alternatives with single or multiple selection', useWhen: 'use when the user picks among known alternatives, optionally with freetext', builtin: true, structural: false },
|
|
10
|
-
{ kind: 'text', tag: 'UserText', description: 'writing surface whose answer is the text the user hands back', useWhen: 'use when you need prose from the user — a value they write, or a draft they revise; prose they only read is a plain element', builtin: true, structural: false },
|
|
11
|
-
{ kind: 'table', tag: 'UserTable', description: 'rows and columns with optional selection', useWhen: 'use when structured records are easiest to compare in rows and columns', builtin: true, structural: false },
|
|
12
|
-
{ kind: 'cards', tag: 'UserCards', description: 'visual records with optional selection', useWhen: 'use when the user compares or picks richer items than a compact option list can carry', builtin: true, structural: false },
|
|
13
|
-
{ kind: 'chart', tag: 'Chart', description: 'line, bar, or area data visualization', useWhen: 'use when shape, trend, or magnitude matters more than exact tabular values', builtin: true, structural: false },
|
|
14
|
-
];
|
|
15
|
-
/** The JSX component name a registered kind is authored as. Registry names reach page
|
|
16
|
-
* code as JS identifiers, so a hyphenated kind is authored in its PascalCase form
|
|
17
|
-
* (`worker-card` → `<WorkerCard>`); the registered kind string is what travels on
|
|
18
|
-
* the wire. */
|
|
19
|
-
export function pageComponentTag(kind) {
|
|
20
|
-
return kind.split('-').map((part) => (part === '' ? '' : `${part[0].toUpperCase()}${part.slice(1)}`)).join('');
|
|
21
|
-
}
|
|
22
|
-
/** The built-in component kind each authored JSX component name maps to. */
|
|
23
|
-
export const BUILTIN_KIND_BY_TAG = Object.fromEntries(BUILTIN_COMPONENTS.filter((entry) => !entry.structural).map((entry) => [entry.tag, entry.kind]));
|
|
24
|
-
/** Every JSX identifier reserved by the built-in page registry, including structure. */
|
|
25
|
-
export const BUILTIN_PAGE_COMPONENT_TAGS = new Set(BUILTIN_COMPONENTS.map((entry) => entry.tag));
|
|
26
|
-
/** The shadcn display set a page may compose with. These carry no response and never
|
|
27
|
-
* appear in the page manifest; they are in scope so an authored page can lay its
|
|
28
|
-
* content out. */
|
|
29
|
-
export const DISPLAY_PAGE_COMPONENT_TAGS = new Set([
|
|
30
|
-
'Card', 'CardHeader', 'CardTitle', 'CardDescription', 'CardContent', 'CardFooter', 'CardAction',
|
|
31
|
-
'Badge', 'Button', 'Separator', 'Progress', 'Alert', 'AlertTitle', 'AlertDescription',
|
|
32
|
-
'Table', 'TableHeader', 'TableBody', 'TableFooter', 'TableRow', 'TableHead', 'TableCell', 'TableCaption',
|
|
33
|
-
'Tabs', 'TabsList', 'TabsTrigger', 'TabsContent',
|
|
34
|
-
'Accordion', 'AccordionItem', 'AccordionTrigger', 'AccordionContent',
|
|
35
|
-
]);
|
|
36
|
-
function describeEntry(entry) {
|
|
37
|
-
try {
|
|
38
|
-
const json = JSON.stringify(entry);
|
|
39
|
-
return json === undefined ? String(entry) : json;
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
return String(entry);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function optionalText(value, field, label, index) {
|
|
46
|
-
if (value === undefined)
|
|
47
|
-
return undefined;
|
|
48
|
-
if (typeof value !== 'string' || value.trim() === '') {
|
|
49
|
-
throw new Error(`${label}[${index}].${field} must be a non-empty string; received ${describeEntry(value)}`);
|
|
50
|
-
}
|
|
51
|
-
return value.trim();
|
|
52
|
-
}
|
|
53
|
-
/** Normalize legacy kind strings and documented product component registrations.
|
|
54
|
-
* `label` names the source in every error message — the default is a scope
|
|
55
|
-
* `config.json` block; a plugin contribution passes its own plugin-named
|
|
56
|
-
* label so a bad registration points at the package that shipped it. */
|
|
57
|
-
export function normalizePageComponents(raw, label = 'page_components') {
|
|
58
|
-
if (raw === undefined)
|
|
59
|
-
return [];
|
|
60
|
-
if (!Array.isArray(raw))
|
|
61
|
-
throw new Error(`${label} must be an array; received ${describeEntry(raw)}`);
|
|
62
|
-
const seenKinds = new Set();
|
|
63
|
-
const seenTags = new Set();
|
|
64
|
-
return raw.map((entry, index) => {
|
|
65
|
-
let registration;
|
|
66
|
-
if (typeof entry === 'string') {
|
|
67
|
-
registration = { kind: entry.trim() };
|
|
68
|
-
}
|
|
69
|
-
else if (entry !== null && typeof entry === 'object' && !Array.isArray(entry)) {
|
|
70
|
-
const object = entry;
|
|
71
|
-
const extra = Object.keys(object).filter((key) => !['kind', 'description', 'useWhen', 'doc', 'display'].includes(key));
|
|
72
|
-
if (extra.length > 0)
|
|
73
|
-
throw new Error(`${label}[${index}] has unknown field(s): ${extra.join(', ')}`);
|
|
74
|
-
if (typeof object['kind'] !== 'string')
|
|
75
|
-
throw new Error(`${label}[${index}].kind must be a string; offending entry: ${describeEntry(entry)}`);
|
|
76
|
-
if (object['display'] !== undefined && typeof object['display'] !== 'boolean')
|
|
77
|
-
throw new Error(`${label}[${index}].display must be a boolean; offending entry: ${describeEntry(entry)}`);
|
|
78
|
-
registration = {
|
|
79
|
-
kind: object['kind'].trim(),
|
|
80
|
-
...(optionalText(object['description'], 'description', label, index) === undefined ? {} : { description: optionalText(object['description'], 'description', label, index) }),
|
|
81
|
-
...(optionalText(object['useWhen'], 'useWhen', label, index) === undefined ? {} : { useWhen: optionalText(object['useWhen'], 'useWhen', label, index) }),
|
|
82
|
-
...(optionalText(object['doc'], 'doc', label, index) === undefined ? {} : { doc: optionalText(object['doc'], 'doc', label, index) }),
|
|
83
|
-
...(object['display'] === true ? { display: true } : {}),
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
throw new Error(`${label}[${index}] must be a string or component object; offending entry: ${describeEntry(entry)}`);
|
|
88
|
-
}
|
|
89
|
-
const kind = registration.kind;
|
|
90
|
-
if (!PAGE_KIND_PATTERN.test(kind))
|
|
91
|
-
throw new Error(`${label}[${index}] has invalid page kind ${describeEntry(kind)}; expected /^[a-z][a-z0-9-]{0,63}$/`);
|
|
92
|
-
if (BUILTIN_PAGE_KIND_SET.has(kind) || STRUCTURAL_PAGE_KINDS.includes(kind))
|
|
93
|
-
throw new Error(`${label}[${index}] collides with built-in page kind "${kind}"`);
|
|
94
|
-
if (seenKinds.has(kind))
|
|
95
|
-
throw new Error(`${label}[${index}] duplicates page kind "${kind}"`);
|
|
96
|
-
const tag = pageComponentTag(kind);
|
|
97
|
-
if (BUILTIN_PAGE_COMPONENT_TAGS.has(tag))
|
|
98
|
-
throw new Error(`${label}[${index}] kind "${kind}" derives JSX tag "${tag}", which collides with a built-in page component`);
|
|
99
|
-
if (seenTags.has(tag))
|
|
100
|
-
throw new Error(`${label}[${index}] kind "${kind}" derives JSX tag "${tag}", which duplicates another product page component`);
|
|
101
|
-
seenKinds.add(kind);
|
|
102
|
-
seenTags.add(tag);
|
|
103
|
-
return registration;
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
/** Concatenate every contributing layer into one active catalog, rejecting a
|
|
107
|
-
* kind — or a derived JSX tag — that two sources both register. There is no
|
|
108
|
-
* precedence here on purpose: two sources claiming one component kind is an
|
|
109
|
-
* authoring defect, and silently letting either win would ship a page component
|
|
110
|
-
* bound to a renderer nobody chose. Each layer's own entries are already
|
|
111
|
-
* validated by `normalizePageComponents`; this is the cross-source gate. */
|
|
112
|
-
export function mergePageComponentLayers(layers) {
|
|
113
|
-
const originByKind = new Map();
|
|
114
|
-
const claimByTag = new Map();
|
|
115
|
-
const out = [];
|
|
116
|
-
for (const layer of layers) {
|
|
117
|
-
for (const component of layer.components) {
|
|
118
|
-
const kindOrigin = originByKind.get(component.kind);
|
|
119
|
-
if (kindOrigin !== undefined) {
|
|
120
|
-
throw new Error(`page component kind "${component.kind}" is registered by both ${kindOrigin} and ${layer.origin}`);
|
|
121
|
-
}
|
|
122
|
-
const tag = pageComponentTag(component.kind);
|
|
123
|
-
const tagClaim = claimByTag.get(tag);
|
|
124
|
-
if (tagClaim !== undefined) {
|
|
125
|
-
throw new Error(`page component kind "${component.kind}" (${layer.origin}) derives JSX tag "${tag}", which duplicates kind "${tagClaim.kind}" from ${tagClaim.origin}`);
|
|
126
|
-
}
|
|
127
|
-
originByKind.set(component.kind, layer.origin);
|
|
128
|
-
claimByTag.set(tag, { kind: component.kind, origin: layer.origin });
|
|
129
|
-
out.push(component);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return out;
|
|
133
|
-
}
|
|
134
|
-
/** STRICT install-time validation of a plugin-declared `page_components` block
|
|
135
|
-
* — the loud counterpart to a read path that must never ship a half-valid
|
|
136
|
-
* catalog. Returns one human-readable reason per defect; empty = valid. Used
|
|
137
|
-
* by the archive-bundle validator and by source plugin installs. */
|
|
138
|
-
export function invalidPageComponentsReasons(raw) {
|
|
139
|
-
try {
|
|
140
|
-
normalizePageComponents(raw);
|
|
141
|
-
return [];
|
|
142
|
-
}
|
|
143
|
-
catch (error) {
|
|
144
|
-
return [error instanceof Error ? error.message : String(error)];
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
/** Names-only projection for page validation and rendering consumers. */
|
|
148
|
-
export function pageComponentKinds(components) {
|
|
149
|
-
return components.map((component) => component.kind);
|
|
150
|
-
}
|
|
151
|
-
/** Full built-in + product catalog for CLI discovery. */
|
|
152
|
-
export function pageComponentCatalog(components) {
|
|
153
|
-
return [
|
|
154
|
-
...BUILTIN_COMPONENTS,
|
|
155
|
-
...components.map((component) => ({
|
|
156
|
-
kind: component.kind,
|
|
157
|
-
tag: pageComponentTag(component.kind),
|
|
158
|
-
description: component.description ?? 'product-registered page component',
|
|
159
|
-
useWhen: component.useWhen ?? 'use when the product component matches the structured UI the user needs',
|
|
160
|
-
...(component.doc === undefined ? {} : { doc: component.doc }),
|
|
161
|
-
builtin: false,
|
|
162
|
-
structural: false,
|
|
163
|
-
})),
|
|
164
|
-
];
|
|
165
|
-
}
|
|
166
|
-
/** Whether crtr or the product catalog registers a page component kind. */
|
|
167
|
-
export function productPageComponent(kind, components) {
|
|
168
|
-
return components.find((component) => component.kind === kind);
|
|
169
|
-
}
|
|
170
|
-
export function isRegisteredPageKind(kind, productComponents) {
|
|
171
|
-
return BUILTIN_PAGE_KIND_SET.has(kind) || productPageComponent(kind, productComponents) !== undefined;
|
|
172
|
-
}
|
|
1
|
+
var $=Object.defineProperty;var s=(t,e)=>$(t,"name",{value:e,configurable:!0});const k=["options","text","table","cards","chart"],T=["page","step"],b=/^[a-z][a-z0-9-]{0,63}$/,w=new Set(k),h=[{kind:"page",tag:"Page",description:"the page itself: title, subtitle, and every step it contains",useWhen:"use as the single root element every page returns",builtin:!0,structural:!0},{kind:"step",tag:"Step",description:"one step inside a Page",useWhen:"use for each step the user sees and completes in sequence",builtin:!0,structural:!0},{kind:"options",tag:"UserQuestion",description:"known alternatives with single or multiple selection",useWhen:"use when the user picks among known alternatives, optionally with freetext",builtin:!0,structural:!1},{kind:"text",tag:"UserText",description:"writing surface whose answer is the text the user hands back",useWhen:"use when you need prose from the user \u2014 a value they write, or a draft they revise; prose they only read is a plain element",builtin:!0,structural:!1},{kind:"table",tag:"UserTable",description:"rows and columns with optional selection",useWhen:"use when structured records are easiest to compare in rows and columns",builtin:!0,structural:!1},{kind:"cards",tag:"UserCards",description:"visual records with optional selection",useWhen:"use when the user compares or picks richer items than a compact option list can carry",builtin:!0,structural:!1},{kind:"chart",tag:"Chart",description:"line, bar, or area data visualization",useWhen:"use when shape, trend, or magnitude matters more than exact tabular values",builtin:!0,structural:!1}];function l(t){return t.split("-").map(e=>e===""?"":`${e[0].toUpperCase()}${e.slice(1)}`).join("")}s(l,"pageComponentTag");const S=Object.fromEntries(h.filter(t=>!t.structural).map(t=>[t.tag,t.kind])),y=new Set(h.map(t=>t.tag)),_=new Set(["Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","CardAction","Badge","Button","Separator","Progress","Alert","AlertTitle","AlertDescription","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","Tabs","TabsList","TabsTrigger","TabsContent","Accordion","AccordionItem","AccordionTrigger","AccordionContent"]);function p(t){try{const e=JSON.stringify(t);return e===void 0?String(t):e}catch{return String(t)}}s(p,"describeEntry");function g(t,e,a,c){if(t!==void 0){if(typeof t!="string"||t.trim()==="")throw new Error(`${a}[${c}].${e} must be a non-empty string; received ${p(t)}`);return t.trim()}}s(g,"optionalText");function C(t,e="page_components"){if(t===void 0)return[];if(!Array.isArray(t))throw new Error(`${e} must be an array; received ${p(t)}`);const a=new Set,c=new Set;return t.map((r,n)=>{let u;if(typeof r=="string")u={kind:r.trim()};else if(r!==null&&typeof r=="object"&&!Array.isArray(r)){const o=r,f=Object.keys(o).filter(m=>!["kind","description","useWhen","doc","display"].includes(m));if(f.length>0)throw new Error(`${e}[${n}] has unknown field(s): ${f.join(", ")}`);if(typeof o.kind!="string")throw new Error(`${e}[${n}].kind must be a string; offending entry: ${p(r)}`);if(o.display!==void 0&&typeof o.display!="boolean")throw new Error(`${e}[${n}].display must be a boolean; offending entry: ${p(r)}`);u={kind:o.kind.trim(),...g(o.description,"description",e,n)===void 0?{}:{description:g(o.description,"description",e,n)},...g(o.useWhen,"useWhen",e,n)===void 0?{}:{useWhen:g(o.useWhen,"useWhen",e,n)},...g(o.doc,"doc",e,n)===void 0?{}:{doc:g(o.doc,"doc",e,n)},...o.display===!0?{display:!0}:{}}}else throw new Error(`${e}[${n}] must be a string or component object; offending entry: ${p(r)}`);const i=u.kind;if(!b.test(i))throw new Error(`${e}[${n}] has invalid page kind ${p(i)}; expected /^[a-z][a-z0-9-]{0,63}$/`);if(w.has(i)||T.includes(i))throw new Error(`${e}[${n}] collides with built-in page kind "${i}"`);if(a.has(i))throw new Error(`${e}[${n}] duplicates page kind "${i}"`);const d=l(i);if(y.has(d))throw new Error(`${e}[${n}] kind "${i}" derives JSX tag "${d}", which collides with a built-in page component`);if(c.has(d))throw new Error(`${e}[${n}] kind "${i}" derives JSX tag "${d}", which duplicates another product page component`);return a.add(i),c.add(d),u})}s(C,"normalizePageComponents");function P(t){const e=new Map,a=new Map,c=[];for(const r of t)for(const n of r.components){const u=e.get(n.kind);if(u!==void 0)throw new Error(`page component kind "${n.kind}" is registered by both ${u} and ${r.origin}`);const i=l(n.kind),d=a.get(i);if(d!==void 0)throw new Error(`page component kind "${n.kind}" (${r.origin}) derives JSX tag "${i}", which duplicates kind "${d.kind}" from ${d.origin}`);e.set(n.kind,r.origin),a.set(i,{kind:n.kind,origin:r.origin}),c.push(n)}return c}s(P,"mergePageComponentLayers");function I(t){try{return C(t),[]}catch(e){return[e instanceof Error?e.message:String(e)]}}s(I,"invalidPageComponentsReasons");function N(t){return t.map(e=>e.kind)}s(N,"pageComponentKinds");function W(t){return[...h,...t.map(e=>({kind:e.kind,tag:l(e.kind),description:e.description??"product-registered page component",useWhen:e.useWhen??"use when the product component matches the structured UI the user needs",...e.doc===void 0?{}:{doc:e.doc},builtin:!1,structural:!1}))]}s(W,"pageComponentCatalog");function E(t,e){return e.find(a=>a.kind===t)}s(E,"productPageComponent");function U(t,e){return w.has(t)||E(t,e)!==void 0}s(U,"isRegisteredPageKind");export{S as BUILTIN_KIND_BY_TAG,y as BUILTIN_PAGE_COMPONENT_TAGS,k as BUILTIN_PAGE_KINDS,_ as DISPLAY_PAGE_COMPONENT_TAGS,T as STRUCTURAL_PAGE_KINDS,I as invalidPageComponentsReasons,U as isRegisteredPageKind,P as mergePageComponentLayers,C as normalizePageComponents,W as pageComponentCatalog,N as pageComponentKinds,l as pageComponentTag,E as productPageComponent};
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export class PageAuthoringError extends Error {
|
|
3
|
-
constructor(message) {
|
|
4
|
-
super(message);
|
|
5
|
-
this.name = 'PageAuthoringError';
|
|
6
|
-
}
|
|
7
|
-
}
|
|
1
|
+
var t=Object.defineProperty;var e=(o,r)=>t(o,"name",{value:r,configurable:!0});class n extends Error{static{e(this,"PageAuthoringError")}constructor(r){super(r),this.name="PageAuthoringError"}}export{n as PageAuthoringError};
|
|
@@ -1,125 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { PageAuthoringError } from './page-errors.js';
|
|
3
|
-
const EVAL_TIMEOUT_MS = 2000;
|
|
4
|
-
const MAX_DEPTH = 64;
|
|
5
|
-
const FRAGMENT = Symbol('page.fragment');
|
|
6
|
-
/** Generic static-extraction binding for the host hook. It must tolerate any product capability name while leaving unrelated free identifiers as errors. */
|
|
7
|
-
function hostStub() {
|
|
8
|
-
let proxy;
|
|
9
|
-
const callable = () => proxy;
|
|
10
|
-
proxy = new Proxy(callable, { get: () => proxy, apply: () => proxy });
|
|
11
|
-
return proxy;
|
|
12
|
-
}
|
|
13
|
-
/** A page is authored against React's classic runtime, so the compiled module calls
|
|
14
|
-
* `React.createElement`. Nothing here renders: the stub records the tree and returns
|
|
15
|
-
* initial values for the hooks a page might reach for, which is what a manifest wants. */
|
|
16
|
-
function stubReact() {
|
|
17
|
-
// A helper component is expanded here, while the render is still inside the vm, so a
|
|
18
|
-
// component that never returns is stopped by the same timeout as the page itself.
|
|
19
|
-
const createElement = (type, props, ...children) => {
|
|
20
|
-
const { key: _key, ref: _ref, ...rest } = props ?? {};
|
|
21
|
-
const flat = children.flat(Infinity);
|
|
22
|
-
if (typeof type === 'function')
|
|
23
|
-
return type({ ...rest, ...(flat.length === 0 ? {} : { children: flat }) });
|
|
24
|
-
return { $page_element: true, type, props: rest, children: flat };
|
|
25
|
-
};
|
|
26
|
-
return {
|
|
27
|
-
createElement,
|
|
28
|
-
Fragment: FRAGMENT,
|
|
29
|
-
useState: (initial) => [typeof initial === 'function' ? initial() : initial, () => { }],
|
|
30
|
-
useReducer: (_reducer, initial) => [initial, () => { }],
|
|
31
|
-
useMemo: (factory) => factory(),
|
|
32
|
-
useCallback: (fn) => fn,
|
|
33
|
-
useRef: (initial) => ({ current: initial }),
|
|
34
|
-
useEffect: () => { },
|
|
35
|
-
useLayoutEffect: () => { },
|
|
36
|
-
useId: () => 'page-id',
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function isRawElement(value) {
|
|
40
|
-
return typeof value === 'object' && value !== null && value.$page_element === true;
|
|
41
|
-
}
|
|
42
|
-
/** Evaluate the compiled page module and return the element tree its default export renders.
|
|
43
|
-
*
|
|
44
|
-
* Each in-scope component name is bound to itself, so `<UserQuestion>` renders as the tag
|
|
45
|
-
* string `"UserQuestion"`. A name outside that set is not defined, and the page fails with
|
|
46
|
-
* the reference error rather than rendering a component the host does not have. */
|
|
47
|
-
export function evaluatePageTree(code, tags) {
|
|
48
|
-
const exported = {};
|
|
49
|
-
const base = {
|
|
50
|
-
React: stubReact(),
|
|
51
|
-
module: { exports: exported },
|
|
52
|
-
exports: exported,
|
|
53
|
-
console: { log: () => { }, warn: () => { }, error: () => { }, info: () => { }, debug: () => { } },
|
|
54
|
-
usePageHost: hostStub(),
|
|
55
|
-
};
|
|
56
|
-
for (const tag of tags)
|
|
57
|
-
base[tag] = tag;
|
|
58
|
-
const deadline = Date.now() + EVAL_TIMEOUT_MS;
|
|
59
|
-
let rendered;
|
|
60
|
-
try {
|
|
61
|
-
vm.createContext(base);
|
|
62
|
-
new vm.Script(code, { filename: 'page.tsx' }).runInContext(base, { timeout: EVAL_TIMEOUT_MS });
|
|
63
|
-
const component = base['module'].exports.default;
|
|
64
|
-
if (typeof component !== 'function')
|
|
65
|
-
throw new PageAuthoringError('page module must `export default` a component function');
|
|
66
|
-
// Render inside the context so a page that never returns is stopped by the timeout
|
|
67
|
-
// rather than hanging the caller.
|
|
68
|
-
rendered = new vm.Script('(module.exports.default)({})', { filename: 'page.tsx' }).runInContext(base, { timeout: EVAL_TIMEOUT_MS });
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
71
|
-
if (error instanceof PageAuthoringError)
|
|
72
|
-
throw error;
|
|
73
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
74
|
-
throw new PageAuthoringError(`page failed while rendering: ${message}`);
|
|
75
|
-
}
|
|
76
|
-
// The promise is built in the vm's realm, so identity checks against this realm's
|
|
77
|
-
// Promise do not hold; thenable is the honest test.
|
|
78
|
-
if (typeof rendered?.then === 'function')
|
|
79
|
-
throw new PageAuthoringError('page component is async; a page renders synchronously');
|
|
80
|
-
const normalize = (value, depth) => {
|
|
81
|
-
if (value === null || value === undefined || typeof value === 'boolean')
|
|
82
|
-
return [];
|
|
83
|
-
if (depth > MAX_DEPTH)
|
|
84
|
-
throw new PageAuthoringError('page nests deeper than a page can render; check for a component that renders itself');
|
|
85
|
-
if (Date.now() > deadline)
|
|
86
|
-
throw new PageAuthoringError('page took too long to render; check for a component that never finishes');
|
|
87
|
-
if (typeof value === 'string' || typeof value === 'number')
|
|
88
|
-
return [{ kind: 'text', text: String(value) }];
|
|
89
|
-
if (Array.isArray(value))
|
|
90
|
-
return value.flatMap((item) => normalize(item, depth + 1));
|
|
91
|
-
if (!isRawElement(value))
|
|
92
|
-
return [];
|
|
93
|
-
const { type, props, children } = value;
|
|
94
|
-
const nested = [...normalize(props['children'], depth + 1), ...children.flatMap((child) => normalize(child, depth + 1))];
|
|
95
|
-
if (type === FRAGMENT)
|
|
96
|
-
return nested;
|
|
97
|
-
if (typeof type !== 'string')
|
|
98
|
-
return nested;
|
|
99
|
-
const { children: _children, ...rest } = props;
|
|
100
|
-
return [{ kind: 'element', tag: type, props: rest, children: nested }];
|
|
101
|
-
};
|
|
102
|
-
try {
|
|
103
|
-
return normalize(rendered, 0);
|
|
104
|
-
}
|
|
105
|
-
catch (error) {
|
|
106
|
-
if (error instanceof PageAuthoringError)
|
|
107
|
-
throw error;
|
|
108
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
109
|
-
throw new PageAuthoringError(`page failed while rendering: ${message}`);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
/** Keep only what can cross the wire. A manifest is JSON, so handlers and undefined values
|
|
113
|
-
* are dropped rather than rejected — a click handler is legitimate authoring, it simply has
|
|
114
|
-
* no meaning to a host reading the manifest. The round-trip also rebuilds the props in this
|
|
115
|
-
* realm: values born in the vm carry that realm's prototypes, which prototype-sensitive
|
|
116
|
-
* comparisons reject. */
|
|
117
|
-
export function jsonProps(props) {
|
|
118
|
-
try {
|
|
119
|
-
return JSON.parse(JSON.stringify(props));
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
123
|
-
throw new PageAuthoringError(`page prop cannot cross the wire: ${message}`);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
1
|
+
var E=Object.defineProperty;var n=(r,t)=>E(r,"name",{value:t,configurable:!0});import l from"node:vm";import{PageAuthoringError as o}from"./page-errors.js";const m=2e3,S=64,w=Symbol("page.fragment");function b(){let r;const t=n(()=>r,"callable");return r=new Proxy(t,{get:n(()=>r,"get"),apply:n(()=>r,"apply")}),r}n(b,"hostStub");function _(){return{createElement:n((t,s,...a)=>{const{key:d,ref:i,...f}=s??{},e=a.flat(1/0);return typeof t=="function"?t({...f,...e.length===0?{}:{children:e}}):{$page_element:!0,type:t,props:f,children:e}},"createElement"),Fragment:w,useState:n(t=>[typeof t=="function"?t():t,()=>{}],"useState"),useReducer:n((t,s)=>[s,()=>{}],"useReducer"),useMemo:n(t=>t(),"useMemo"),useCallback:n(t=>t,"useCallback"),useRef:n(t=>({current:t}),"useRef"),useEffect:n(()=>{},"useEffect"),useLayoutEffect:n(()=>{},"useLayoutEffect"),useId:n(()=>"page-id","useId")}}n(_,"stubReact");function k(r){return typeof r=="object"&&r!==null&&r.$page_element===!0}n(k,"isRawElement");function I(r,t){const s={},a={React:_(),module:{exports:s},exports:s,console:{log:n(()=>{},"log"),warn:n(()=>{},"warn"),error:n(()=>{},"error"),info:n(()=>{},"info"),debug:n(()=>{},"debug")},usePageHost:b()};for(const e of t)a[e]=e;const d=Date.now()+m;let i;try{if(l.createContext(a),new l.Script(r,{filename:"page.tsx"}).runInContext(a,{timeout:m}),typeof a.module.exports.default!="function")throw new o("page module must `export default` a component function");i=new l.Script("(module.exports.default)({})",{filename:"page.tsx"}).runInContext(a,{timeout:m})}catch(e){if(e instanceof o)throw e;const c=e instanceof Error?e.message:String(e);throw new o(`page failed while rendering: ${c}`)}if(typeof i?.then=="function")throw new o("page component is async; a page renders synchronously");const f=n((e,c)=>{if(e==null||typeof e=="boolean")return[];if(c>S)throw new o("page nests deeper than a page can render; check for a component that renders itself");if(Date.now()>d)throw new o("page took too long to render; check for a component that never finishes");if(typeof e=="string"||typeof e=="number")return[{kind:"text",text:String(e)}];if(Array.isArray(e))return e.flatMap(g=>f(g,c+1));if(!k(e))return[];const{type:p,props:h,children:y}=e,u=[...f(h.children,c+1),...y.flatMap(g=>f(g,c+1))];if(p===w||typeof p!="string")return u;const{children:M,...x}=h;return[{kind:"element",tag:p,props:x,children:u}]},"normalize");try{return f(i,0)}catch(e){if(e instanceof o)throw e;const c=e instanceof Error?e.message:String(e);throw new o(`page failed while rendering: ${c}`)}}n(I,"evaluatePageTree");function T(r){try{return JSON.parse(JSON.stringify(r))}catch(t){const s=t instanceof Error?t.message:String(t);throw new o(`page prop cannot cross the wire: ${s}`)}}n(T,"jsonProps");export{I as evaluatePageTree,T as jsonProps};
|