@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,228 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// command owns the report — its contract, its context collection, its templating
|
|
9
|
-
// — while the deployment owns delivery. A host with `gh` and a person behind it
|
|
10
|
-
// opens the issue directly; a hosted runtime (a Northlight guest VM, say) has no
|
|
11
|
-
// GitHub credential and shouldn't be given one, so it sets
|
|
12
|
-
// CRTR_FEEDBACK_ENDPOINT and its backend forwards the report with an identity
|
|
13
|
-
// crtr never has to hold. Exactly one sink is chosen per deployment — this is a
|
|
14
|
-
// configured provider, not a fallback chain. Delivery failure on either path
|
|
15
|
-
// still writes a durable local file so the report is never lost.
|
|
16
|
-
import { spawnSync } from 'node:child_process';
|
|
17
|
-
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
18
|
-
import { join } from 'node:path';
|
|
19
|
-
import os from 'node:os';
|
|
20
|
-
import { defineLeaf } from '../../core/command.js';
|
|
21
|
-
import { usage } from '../../core/errors.js';
|
|
22
|
-
import { userScopeRoot } from '../../core/scope.js';
|
|
23
|
-
import { readTelemetry } from '../../core/canvas/telemetry.js';
|
|
24
|
-
import { ApiError } from '../../api/index.js';
|
|
25
|
-
import { cliClient } from '../api-client.js';
|
|
26
|
-
import { projectTier1Event, readLogSnapshot } from '../../core/events/read.js';
|
|
27
|
-
import { readPackageVersion } from './shared.js';
|
|
28
|
-
/** Canonical repo for crtr harness feedback — feedback is always about the
|
|
29
|
-
* tool, regardless of which project the reporting agent is working in. */
|
|
30
|
-
const FEEDBACK_REPO = 'vallum-security/crouter';
|
|
31
|
-
/** Deployment-configured delivery. When CRTR_FEEDBACK_ENDPOINT names an HTTP
|
|
32
|
-
* endpoint, it is the sink and gh is not consulted; CRTR_FEEDBACK_TOKEN, when
|
|
33
|
-
* present, is sent as a bearer credential. */
|
|
34
|
-
const ENDPOINT_ENV = 'CRTR_FEEDBACK_ENDPOINT';
|
|
35
|
-
const TOKEN_ENV = 'CRTR_FEEDBACK_TOKEN';
|
|
36
|
-
const ENDPOINT_TIMEOUT_MS = 15_000;
|
|
37
|
-
async function collectContext() {
|
|
38
|
-
const env = process.env;
|
|
39
|
-
const nodeId = env['CRTR_NODE_ID'] ?? null;
|
|
40
|
-
let cycle = null;
|
|
41
|
-
let logTail = [];
|
|
42
|
-
if (nodeId !== null) {
|
|
43
|
-
const meta = await fetchNodeOrNull(nodeId);
|
|
44
|
-
if (meta !== null && typeof meta.cycles === 'number')
|
|
45
|
-
cycle = meta.cycles;
|
|
46
|
-
logTail = readRecentActivity(nodeId);
|
|
47
|
-
}
|
|
48
|
-
const contextTokens = nodeId !== null ? readTelemetry(nodeId).context_tokens ?? null : null;
|
|
49
|
-
return {
|
|
50
|
-
version: readPackageVersion(),
|
|
51
|
-
platform: `${os.platform()} ${os.release()} (${os.arch()})`,
|
|
52
|
-
nodeId,
|
|
53
|
-
kind: env['CRTR_KIND'] ?? null,
|
|
54
|
-
mode: env['CRTR_MODE'] ?? null,
|
|
55
|
-
lifecycle: env['CRTR_LIFECYCLE'] ?? null,
|
|
56
|
-
cwd: env['CRTR_NODE_CWD'] ?? process.cwd(),
|
|
57
|
-
cycle,
|
|
58
|
-
contextTokens,
|
|
59
|
-
logTail,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
/** Fetch a node's detail via the API, mapping the daemon's 404 (and any other
|
|
63
|
-
* failure) to null so feedback context collection never fails because the node
|
|
64
|
-
* is absent or the daemon is momentarily unreachable — the report must survive. */
|
|
65
|
-
async function fetchNodeOrNull(nodeId) {
|
|
66
|
-
try {
|
|
67
|
-
return await cliClient().getNode(nodeId);
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
if (err instanceof ApiError)
|
|
71
|
-
return null;
|
|
72
|
-
throw err;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
/** Recent canonical broker events — best-effort, never throws. */
|
|
76
|
-
function readRecentActivity(nodeId) {
|
|
77
|
-
try {
|
|
78
|
-
return readLogSnapshot({ nodeId, component: 'broker' }, false).items
|
|
79
|
-
.filter((item) => item.kind === 'event')
|
|
80
|
-
.slice(-15)
|
|
81
|
-
.map((item) => JSON.stringify(projectTier1Event(item.envelope)));
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
return [];
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
function deriveTitle(raw, message) {
|
|
88
|
-
const explicit = raw !== undefined && raw.trim() !== '' ? raw.trim() : undefined;
|
|
89
|
-
const base = explicit ?? message.split('\n')[0].trim();
|
|
90
|
-
const trimmed = base.length > 80 ? base.slice(0, 79) + '…' : base;
|
|
91
|
-
return `[feedback] ${trimmed}`;
|
|
92
|
-
}
|
|
93
|
-
function buildBody(message, ctx) {
|
|
94
|
-
const rows = [
|
|
95
|
-
`| crtr version | \`${ctx.version}\` |`,
|
|
96
|
-
`| platform | ${ctx.platform} |`,
|
|
97
|
-
];
|
|
98
|
-
if (ctx.nodeId !== null) {
|
|
99
|
-
rows.push(`| node id | \`${ctx.nodeId}\` |`);
|
|
100
|
-
rows.push(`| kind / mode / lifecycle | ${ctx.kind ?? '?'} / ${ctx.mode ?? '?'} / ${ctx.lifecycle ?? '?'} |`);
|
|
101
|
-
if (ctx.cycle !== null)
|
|
102
|
-
rows.push(`| cycle | ${ctx.cycle} |`);
|
|
103
|
-
if (ctx.contextTokens !== null)
|
|
104
|
-
rows.push(`| context tokens | ${ctx.contextTokens.toLocaleString('en-US')} |`);
|
|
105
|
-
}
|
|
106
|
-
if (ctx.cwd !== null)
|
|
107
|
-
rows.push(`| working dir | \`${ctx.cwd}\` |`);
|
|
108
|
-
const parts = [
|
|
109
|
-
message.trim(),
|
|
110
|
-
'',
|
|
111
|
-
'---',
|
|
112
|
-
'_Filed via `crtr sys feedback` — context below auto-attached by the harness._',
|
|
113
|
-
'',
|
|
114
|
-
'### Environment',
|
|
115
|
-
'| | |',
|
|
116
|
-
'|---|---|',
|
|
117
|
-
...rows,
|
|
118
|
-
];
|
|
119
|
-
if (ctx.logTail.length > 0) {
|
|
120
|
-
parts.push('', `### Recent node activity (last ${ctx.logTail.length} log events)`, '```jsonl', ...ctx.logTail, '```');
|
|
121
|
-
}
|
|
122
|
-
return parts.join('\n') + '\n';
|
|
123
|
-
}
|
|
124
|
-
/** POST the report to the deployment's configured endpoint. The endpoint may
|
|
125
|
-
* answer with a `url` naming where the report landed; anything else about the
|
|
126
|
-
* response body is the backend's business, not ours. */
|
|
127
|
-
async function deliverToEndpoint(endpoint, title, body, message, ctx) {
|
|
128
|
-
const token = process.env[TOKEN_ENV];
|
|
129
|
-
try {
|
|
130
|
-
const res = await fetch(endpoint, {
|
|
131
|
-
method: 'POST',
|
|
132
|
-
headers: {
|
|
133
|
-
'content-type': 'application/json',
|
|
134
|
-
...(token !== undefined && token !== '' ? { authorization: `Bearer ${token}` } : {}),
|
|
135
|
-
},
|
|
136
|
-
body: JSON.stringify({ title, body, message, context: ctx }),
|
|
137
|
-
signal: AbortSignal.timeout(ENDPOINT_TIMEOUT_MS),
|
|
138
|
-
});
|
|
139
|
-
if (!res.ok) {
|
|
140
|
-
const detail = (await res.text().catch(() => '')).trim().slice(0, 400);
|
|
141
|
-
return { error: `${ENDPOINT_ENV} returned HTTP ${res.status}${detail === '' ? '' : `: ${detail}`}` };
|
|
142
|
-
}
|
|
143
|
-
const payload = (await res.json().catch(() => null));
|
|
144
|
-
const url = typeof payload?.url === 'string' ? payload.url : undefined;
|
|
145
|
-
return url === undefined ? {} : { url };
|
|
146
|
-
}
|
|
147
|
-
catch (err) {
|
|
148
|
-
return { error: `${ENDPOINT_ENV} unreachable: ${err instanceof Error ? err.message : String(err)}` };
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
/** Open the GitHub issue directly with the host's own gh credential. */
|
|
152
|
-
function deliverToGitHub(title, body) {
|
|
153
|
-
const res = spawnSync('gh', ['issue', 'create', '--repo', FEEDBACK_REPO, '--title', title, '--body-file', '-'], { input: body, encoding: 'utf8' });
|
|
154
|
-
if (res.error === undefined && res.status === 0) {
|
|
155
|
-
const url = res.stdout.trim().split('\n').filter((l) => l.startsWith('http')).pop() ?? res.stdout.trim();
|
|
156
|
-
return { url };
|
|
157
|
-
}
|
|
158
|
-
return {
|
|
159
|
-
error: res.error !== undefined
|
|
160
|
-
? `gh not available: ${res.error.message}`
|
|
161
|
-
: (res.stderr?.trim() || `gh exited ${res.status}`),
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
/** Persist a report locally when delivery fails, so nothing is lost. Returns
|
|
165
|
-
* the absolute path written. */
|
|
166
|
-
function saveLocally(title, body) {
|
|
167
|
-
const dir = join(userScopeRoot(), 'feedback');
|
|
168
|
-
mkdirSync(dir, { recursive: true });
|
|
169
|
-
const ts = new Date().toISOString().replace(/[:.]/g, '-');
|
|
170
|
-
const path = join(dir, `${ts}.md`);
|
|
171
|
-
writeFileSync(path, `# ${title}\n\n${body}`, 'utf8');
|
|
172
|
-
return path;
|
|
173
|
-
}
|
|
174
|
-
export const sysFeedbackLeaf = defineLeaf({
|
|
175
|
-
name: 'feedback',
|
|
176
|
-
description: 'report a crtr harness bug to whoever maintains this crtr install',
|
|
177
|
-
whenToUse: 'a crtr command itself misbehaves — it errors unexpectedly, hangs, churns, double-spawns, or acts contrary to its documented contract. NOT for your task work or decisions the user should make (that is `crtr human send`); this reports the TOOL, filing a report with the crtr maintainers with your node context auto-attached.',
|
|
178
|
-
help: {
|
|
179
|
-
name: 'sys feedback',
|
|
180
|
-
summary: 'file a report describing a crtr harness bug, with node context auto-attached',
|
|
181
|
-
params: [
|
|
182
|
-
{
|
|
183
|
-
kind: 'positional',
|
|
184
|
-
name: 'message',
|
|
185
|
-
required: true,
|
|
186
|
-
constraint: 'What broke, in your own words: the command you ran, what you expected, what happened instead. Be concrete — this is the only part you write; everything else is auto-collected.',
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
kind: 'flag',
|
|
190
|
-
name: 'title',
|
|
191
|
-
type: 'string',
|
|
192
|
-
required: false,
|
|
193
|
-
constraint: 'Issue title. Default: first line of the message, truncated.',
|
|
194
|
-
},
|
|
195
|
-
],
|
|
196
|
-
output: [
|
|
197
|
-
{ name: 'status', type: 'string', required: true, constraint: 'filed | saved-locally.' },
|
|
198
|
-
{ name: 'url', type: 'string', required: false, constraint: 'Where the report landed, when the sink names a location.' },
|
|
199
|
-
{ name: 'path', type: 'string', required: false, constraint: 'Local report path when status is saved-locally.' },
|
|
200
|
-
{ name: 'error', type: 'string', required: false, constraint: 'Why filing fell back to local save.' },
|
|
201
|
-
],
|
|
202
|
-
outputKind: 'object',
|
|
203
|
-
effects: [
|
|
204
|
-
`Sends the report where this install delivers harness feedback: the ${ENDPOINT_ENV} endpoint when the deployment sets one, otherwise a public GitHub issue on ${FEEDBACK_REPO} via gh.`,
|
|
205
|
-
'On delivery failure, writes the report to ~/.crouter/feedback/ instead — never lost.',
|
|
206
|
-
],
|
|
207
|
-
},
|
|
208
|
-
run: async (input) => {
|
|
209
|
-
const message = input['message']?.trim();
|
|
210
|
-
if (message === undefined || message === '') {
|
|
211
|
-
throw usage('feedback message is required: describe what broke. Run `crtr sys feedback -h`.');
|
|
212
|
-
}
|
|
213
|
-
const ctx = await collectContext();
|
|
214
|
-
const title = deriveTitle(input['title'], message);
|
|
215
|
-
const body = buildBody(message, ctx);
|
|
216
|
-
const endpoint = process.env[ENDPOINT_ENV]?.trim();
|
|
217
|
-
const delivery = endpoint !== undefined && endpoint !== ''
|
|
218
|
-
? await deliverToEndpoint(endpoint, title, body, message, ctx)
|
|
219
|
-
: deliverToGitHub(title, body);
|
|
220
|
-
if (delivery.error === undefined) {
|
|
221
|
-
return delivery.url === undefined ? { status: 'filed' } : { status: 'filed', url: delivery.url };
|
|
222
|
-
}
|
|
223
|
-
// The sink rejected or was unreachable — persist locally so the report
|
|
224
|
-
// survives, and tell the agent why.
|
|
225
|
-
const path = saveLocally(title, body);
|
|
226
|
-
return { status: 'saved-locally', path, error: delivery.error };
|
|
227
|
-
},
|
|
228
|
-
});
|
|
1
|
+
var h=Object.defineProperty;var a=(r,e)=>h(r,"name",{value:e,configurable:!0});import{spawnSync as y}from"node:child_process";import{mkdirSync as g,writeFileSync as w}from"node:fs";import{join as m}from"node:path";import u from"node:os";import{defineLeaf as b}from"../../core/command.js";import{usage as k}from"../../core/errors.js";import{userScopeRoot as v}from"../../core/scope.js";import{readTelemetry as T}from"../../core/canvas/telemetry.js";import{ApiError as $}from"../../api/index.js";import{cliClient as E}from"../api-client.js";import{projectTier1Event as _,readLogSnapshot as N}from"../../core/events/read.js";import{readPackageVersion as O}from"./shared.js";const p="vallum-security/crouter",l="CRTR_FEEDBACK_ENDPOINT",R="CRTR_FEEDBACK_TOKEN",S=15e3;async function C(){const r=process.env,e=r.CRTR_NODE_ID??null;let t=null,n=[];if(e!==null){const s=await D(e);s!==null&&typeof s.cycles=="number"&&(t=s.cycles),n=I(e)}const o=e!==null?T(e).context_tokens??null:null;return{version:O(),platform:`${u.platform()} ${u.release()} (${u.arch()})`,nodeId:e,kind:r.CRTR_KIND??null,mode:r.CRTR_MODE??null,lifecycle:r.CRTR_LIFECYCLE??null,cwd:r.CRTR_NODE_CWD??process.cwd(),cycle:t,contextTokens:o,logTail:n}}a(C,"collectContext");async function D(r){try{return await E().getNode(r)}catch(e){if(e instanceof $)return null;throw e}}a(D,"fetchNodeOrNull");function I(r){try{return N({nodeId:r,component:"broker"},!1).items.filter(e=>e.kind==="event").slice(-15).map(e=>JSON.stringify(_(e.envelope)))}catch{return[]}}a(I,"readRecentActivity");function L(r,e){const n=(r!==void 0&&r.trim()!==""?r.trim():void 0)??e.split(`
|
|
2
|
+
`)[0].trim();return`[feedback] ${n.length>80?n.slice(0,79)+"\u2026":n}`}a(L,"deriveTitle");function j(r,e){const t=[`| crtr version | \`${e.version}\` |`,`| platform | ${e.platform} |`];e.nodeId!==null&&(t.push(`| node id | \`${e.nodeId}\` |`),t.push(`| kind / mode / lifecycle | ${e.kind??"?"} / ${e.mode??"?"} / ${e.lifecycle??"?"} |`),e.cycle!==null&&t.push(`| cycle | ${e.cycle} |`),e.contextTokens!==null&&t.push(`| context tokens | ${e.contextTokens.toLocaleString("en-US")} |`)),e.cwd!==null&&t.push(`| working dir | \`${e.cwd}\` |`);const n=[r.trim(),"","---","_Filed via `crtr sys feedback` \u2014 context below auto-attached by the harness._","","### Environment","| | |","|---|---|",...t];return e.logTail.length>0&&n.push("",`### Recent node activity (last ${e.logTail.length} log events)`,"```jsonl",...e.logTail,"```"),n.join(`
|
|
3
|
+
`)+`
|
|
4
|
+
`}a(j,"buildBody");async function q(r,e,t,n,o){const s=process.env[R];try{const i=await fetch(r,{method:"POST",headers:{"content-type":"application/json",...s!==void 0&&s!==""?{authorization:`Bearer ${s}`}:{}},body:JSON.stringify({title:e,body:t,message:n,context:o}),signal:AbortSignal.timeout(S)});if(!i.ok){const f=(await i.text().catch(()=>"")).trim().slice(0,400);return{error:`${l} returned HTTP ${i.status}${f===""?"":`: ${f}`}`}}const c=await i.json().catch(()=>null),d=typeof c?.url=="string"?c.url:void 0;return d===void 0?{}:{url:d}}catch(i){return{error:`${l} unreachable: ${i instanceof Error?i.message:String(i)}`}}}a(q,"deliverToEndpoint");function F(r,e){const t=y("gh",["issue","create","--repo",p,"--title",r,"--body-file","-"],{input:e,encoding:"utf8"});return t.error===void 0&&t.status===0?{url:t.stdout.trim().split(`
|
|
5
|
+
`).filter(o=>o.startsWith("http")).pop()??t.stdout.trim()}:{error:t.error!==void 0?`gh not available: ${t.error.message}`:t.stderr?.trim()||`gh exited ${t.status}`}}a(F,"deliverToGitHub");function K(r,e){const t=m(v(),"feedback");g(t,{recursive:!0});const n=new Date().toISOString().replace(/[:.]/g,"-"),o=m(t,`${n}.md`);return w(o,`# ${r}
|
|
6
|
+
|
|
7
|
+
${e}`,"utf8"),o}a(K,"saveLocally");const Q=b({name:"feedback",description:"report a crtr harness bug to whoever maintains this crtr install",whenToUse:"a crtr command itself misbehaves \u2014 it errors unexpectedly, hangs, churns, double-spawns, or acts contrary to its documented contract. NOT for your task work or decisions the user should make (that is `crtr human send`); this reports the TOOL, filing a report with the crtr maintainers with your node context auto-attached.",help:{name:"sys feedback",summary:"file a report describing a crtr harness bug, with node context auto-attached",params:[{kind:"positional",name:"message",required:!0,constraint:"What broke, in your own words: the command you ran, what you expected, what happened instead. Be concrete \u2014 this is the only part you write; everything else is auto-collected."},{kind:"flag",name:"title",type:"string",required:!1,constraint:"Issue title. Default: first line of the message, truncated."}],output:[{name:"status",type:"string",required:!0,constraint:"filed | saved-locally."},{name:"url",type:"string",required:!1,constraint:"Where the report landed, when the sink names a location."},{name:"path",type:"string",required:!1,constraint:"Local report path when status is saved-locally."},{name:"error",type:"string",required:!1,constraint:"Why filing fell back to local save."}],outputKind:"object",effects:[`Sends the report where this install delivers harness feedback: the ${l} endpoint when the deployment sets one, otherwise a public GitHub issue on ${p} via gh.`,"On delivery failure, writes the report to ~/.crouter/feedback/ instead \u2014 never lost."]},run:a(async r=>{const e=r.message?.trim();if(e===void 0||e==="")throw k("feedback message is required: describe what broke. Run `crtr sys feedback -h`.");const t=await C(),n=L(r.title,e),o=j(e,t),s=process.env[l]?.trim(),i=s!==void 0&&s!==""?await q(s,n,o,e,t):F(n,o);return i.error===void 0?i.url===void 0?{status:"filed"}:{status:"filed",url:i.url}:{status:"saved-locally",path:K(n,o),error:i.error}},"run")});export{Q as sysFeedbackLeaf};
|
|
@@ -1,129 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { validateOperationId } from '../../core/events/operation-id.js';
|
|
5
|
-
import { readLogSnapshot } from '../../core/events/read.js';
|
|
6
|
-
import { emitLine, isJsonOutput, recordPreviewLine } from '../../core/io.js';
|
|
7
|
-
const ISO_TIMESTAMP = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/u;
|
|
8
|
-
const MAX_PATTERN_BYTES = 4_096;
|
|
9
|
-
function invalidFlag(flag, received, expected) {
|
|
10
|
-
throw usage(`--${flag} ${expected}; received ${JSON.stringify(received)}.`, {
|
|
11
|
-
received,
|
|
12
|
-
field: flag,
|
|
13
|
-
next: `Retry with a value that ${expected}.`,
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
function parseTimestamp(flag, raw) {
|
|
17
|
-
if (raw === undefined)
|
|
18
|
-
return undefined;
|
|
19
|
-
const value = raw.trim();
|
|
20
|
-
const match = ISO_TIMESTAMP.exec(value);
|
|
21
|
-
const parsed = Date.parse(value);
|
|
22
|
-
if (match === null || !Number.isFinite(parsed)) {
|
|
23
|
-
invalidFlag(flag, raw, 'must be a valid ISO 8601 timestamp with a timezone');
|
|
24
|
-
}
|
|
25
|
-
const calendar = new Date(Date.parse(`${match[1]}-${match[2]}-${match[3]}T${match[4]}:${match[5]}:${match[6]}Z`));
|
|
26
|
-
if (calendar.getUTCFullYear() !== Number(match[1])
|
|
27
|
-
|| calendar.getUTCMonth() + 1 !== Number(match[2])
|
|
28
|
-
|| calendar.getUTCDate() !== Number(match[3])
|
|
29
|
-
|| calendar.getUTCHours() !== Number(match[4])
|
|
30
|
-
|| calendar.getUTCMinutes() !== Number(match[5])
|
|
31
|
-
|| calendar.getUTCSeconds() !== Number(match[6])) {
|
|
32
|
-
invalidFlag(flag, raw, 'must be a valid ISO 8601 timestamp with a timezone');
|
|
33
|
-
}
|
|
34
|
-
return parsed;
|
|
35
|
-
}
|
|
36
|
-
function parseNodeId(raw) {
|
|
37
|
-
if (raw === undefined)
|
|
38
|
-
return undefined;
|
|
39
|
-
const nodeId = raw.trim();
|
|
40
|
-
if (!isSafeNodeId(nodeId)) {
|
|
41
|
-
invalidFlag('node', raw, 'must be one non-empty path segment of at most 128 UTF-8 bytes');
|
|
42
|
-
}
|
|
43
|
-
return nodeId;
|
|
44
|
-
}
|
|
45
|
-
function parseOperationId(raw) {
|
|
46
|
-
if (raw === undefined)
|
|
47
|
-
return undefined;
|
|
48
|
-
const operationId = raw.trim();
|
|
49
|
-
try {
|
|
50
|
-
return validateOperationId(operationId);
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
invalidFlag('operation', raw, 'must be 32 lowercase non-zero hexadecimal characters');
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
function parsePattern(raw) {
|
|
57
|
-
if (raw === undefined)
|
|
58
|
-
return undefined;
|
|
59
|
-
const bytes = Buffer.byteLength(raw, 'utf8');
|
|
60
|
-
if (bytes === 0 || bytes > MAX_PATTERN_BYTES) {
|
|
61
|
-
invalidFlag('pattern', raw, `must be a non-empty literal of at most ${MAX_PATTERN_BYTES.toLocaleString('en-US')} UTF-8 bytes`);
|
|
62
|
-
}
|
|
63
|
-
return raw;
|
|
64
|
-
}
|
|
65
|
-
function renderEvent(envelope) {
|
|
66
|
-
const { v: _version, ts, level, event, component, operation_id: operationId, ...optional } = envelope;
|
|
67
|
-
const suffix = Object.keys(optional).length === 0 ? '' : ` ${JSON.stringify(optional)}`;
|
|
68
|
-
return `${ts} ${level.toUpperCase()} ${component} ${event} op=${operationId}${suffix}`;
|
|
69
|
-
}
|
|
70
|
-
export const sysLogsLeaf = defineLeaf({
|
|
71
|
-
name: 'logs',
|
|
72
|
-
description: 'inspect recent local runtime events',
|
|
73
|
-
whenToUse: 'you need a bounded local diagnostic snapshot, especially to correlate a node with an operation ID.',
|
|
74
|
-
help: {
|
|
75
|
-
name: 'sys logs',
|
|
76
|
-
summary: 'show the latest 200 matching local event and raw-residue records, oldest first',
|
|
77
|
-
params: [
|
|
78
|
-
{ kind: 'flag', name: 'node', type: 'string', required: false, constraint: 'Safe node ID; the node need not still be active.' },
|
|
79
|
-
{ kind: 'flag', name: 'component', type: 'enum', choices: ['daemon', 'broker'], required: false, constraint: 'Owning runtime component.' },
|
|
80
|
-
{ kind: 'flag', name: 'operation', type: 'string', required: false, constraint: 'Exact 32-character lowercase non-zero hexadecimal operation ID.' },
|
|
81
|
-
{ kind: 'flag', name: 'since', type: 'string', required: false, constraint: 'Inclusive ISO 8601 lower bound with a timezone.' },
|
|
82
|
-
{ kind: 'flag', name: 'until', type: 'string', required: false, constraint: 'Inclusive ISO 8601 upper bound with a timezone; cannot precede --since.' },
|
|
83
|
-
{ kind: 'flag', name: 'level', type: 'enum', choices: ['debug', 'info', 'warn', 'error'], required: false, constraint: 'Minimum severity.' },
|
|
84
|
-
{ kind: 'flag', name: 'pattern', type: 'string', required: false, constraint: 'Case-insensitive literal, non-empty and at most 4,096 UTF-8 bytes.' },
|
|
85
|
-
],
|
|
86
|
-
output: [
|
|
87
|
-
{ name: 'record', type: 'EventEnvelope | RAW line', required: false, constraint: 'At most 200 matches, oldest to newest. Default canonical summaries occupy one line; unstructured daemon/broker residue is visibly prefixed RAW. Machine JSON output is canonical EventEnvelope JSONL only.' },
|
|
88
|
-
],
|
|
89
|
-
outputKind: 'jsonl',
|
|
90
|
-
effects: ['None. Read-only.'],
|
|
91
|
-
},
|
|
92
|
-
run: async (input) => {
|
|
93
|
-
const nodeId = parseNodeId(input.node);
|
|
94
|
-
const operationId = parseOperationId(input.operation);
|
|
95
|
-
const sinceMs = parseTimestamp('since', input.since);
|
|
96
|
-
const untilMs = parseTimestamp('until', input.until);
|
|
97
|
-
if (sinceMs !== undefined && untilMs !== undefined && sinceMs > untilMs) {
|
|
98
|
-
throw usage('--since cannot be later than --until.', {
|
|
99
|
-
received: { since: input.since, until: input.until },
|
|
100
|
-
field: 'since/until',
|
|
101
|
-
next: 'Retry with an inclusive range whose lower bound does not exceed its upper bound.',
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
const query = {
|
|
105
|
-
nodeId,
|
|
106
|
-
component: input.component,
|
|
107
|
-
operationId,
|
|
108
|
-
sinceMs,
|
|
109
|
-
untilMs,
|
|
110
|
-
minimumLevel: input.level,
|
|
111
|
-
pattern: parsePattern(input.pattern),
|
|
112
|
-
};
|
|
113
|
-
const json = isJsonOutput();
|
|
114
|
-
const snapshot = readLogSnapshot(query, !json);
|
|
115
|
-
for (const item of snapshot.items) {
|
|
116
|
-
if (item.kind === 'event') {
|
|
117
|
-
if (json)
|
|
118
|
-
emitLine({ ...item.envelope });
|
|
119
|
-
else {
|
|
120
|
-
recordPreviewLine({ ...item.envelope });
|
|
121
|
-
process.stdout.write(`${renderEvent(item.envelope)}\n`);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
else if (!json) {
|
|
125
|
-
process.stdout.write(`RAW ${item.source} ${new Date(item.effectiveTsMs).toISOString()} ${JSON.stringify(item.content)}\n`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
});
|
|
1
|
+
var p=Object.defineProperty;var a=(e,n)=>p(e,"name",{value:n,configurable:!0});import{defineLeaf as g}from"../../core/command.js";import{isSafeNodeId as h}from"../../core/canvas/paths.js";import{usage as l}from"../../core/errors.js";import{validateOperationId as y}from"../../core/events/operation-id.js";import{readLogSnapshot as v}from"../../core/events/read.js";import{emitLine as b,isJsonOutput as $,recordPreviewLine as I}from"../../core/io.js";const S=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/u,m=4096;function c(e,n,i){throw l(`--${e} ${i}; received ${JSON.stringify(n)}.`,{received:n,field:e,next:`Retry with a value that ${i}.`})}a(c,"invalidFlag");function f(e,n){if(n===void 0)return;const i=n.trim(),t=S.exec(i),s=Date.parse(i);(t===null||!Number.isFinite(s))&&c(e,n,"must be a valid ISO 8601 timestamp with a timezone");const o=new Date(Date.parse(`${t[1]}-${t[2]}-${t[3]}T${t[4]}:${t[5]}:${t[6]}Z`));return(o.getUTCFullYear()!==Number(t[1])||o.getUTCMonth()+1!==Number(t[2])||o.getUTCDate()!==Number(t[3])||o.getUTCHours()!==Number(t[4])||o.getUTCMinutes()!==Number(t[5])||o.getUTCSeconds()!==Number(t[6]))&&c(e,n,"must be a valid ISO 8601 timestamp with a timezone"),s}a(f,"parseTimestamp");function T(e){if(e===void 0)return;const n=e.trim();return h(n)||c("node",e,"must be one non-empty path segment of at most 128 UTF-8 bytes"),n}a(T,"parseNodeId");function N(e){if(e===void 0)return;const n=e.trim();try{return y(n)}catch{c("operation",e,"must be 32 lowercase non-zero hexadecimal characters")}}a(N,"parseOperationId");function O(e){if(e===void 0)return;const n=Buffer.byteLength(e,"utf8");return(n===0||n>m)&&c("pattern",e,`must be a non-empty literal of at most ${m.toLocaleString("en-US")} UTF-8 bytes`),e}a(O,"parsePattern");function w(e){const{v:n,ts:i,level:t,event:s,component:o,operation_id:d,...u}=e,r=Object.keys(u).length===0?"":` ${JSON.stringify(u)}`;return`${i} ${t.toUpperCase()} ${o} ${s} op=${d}${r}`}a(w,"renderEvent");const E=g({name:"logs",description:"inspect recent local runtime events",whenToUse:"you need a bounded local diagnostic snapshot, especially to correlate a node with an operation ID.",help:{name:"sys logs",summary:"show the latest 200 matching local event and raw-residue records, oldest first",params:[{kind:"flag",name:"node",type:"string",required:!1,constraint:"Safe node ID; the node need not still be active."},{kind:"flag",name:"component",type:"enum",choices:["daemon","broker"],required:!1,constraint:"Owning runtime component."},{kind:"flag",name:"operation",type:"string",required:!1,constraint:"Exact 32-character lowercase non-zero hexadecimal operation ID."},{kind:"flag",name:"since",type:"string",required:!1,constraint:"Inclusive ISO 8601 lower bound with a timezone."},{kind:"flag",name:"until",type:"string",required:!1,constraint:"Inclusive ISO 8601 upper bound with a timezone; cannot precede --since."},{kind:"flag",name:"level",type:"enum",choices:["debug","info","warn","error"],required:!1,constraint:"Minimum severity."},{kind:"flag",name:"pattern",type:"string",required:!1,constraint:"Case-insensitive literal, non-empty and at most 4,096 UTF-8 bytes."}],output:[{name:"record",type:"EventEnvelope | RAW line",required:!1,constraint:"At most 200 matches, oldest to newest. Default canonical summaries occupy one line; unstructured daemon/broker residue is visibly prefixed RAW. Machine JSON output is canonical EventEnvelope JSONL only."}],outputKind:"jsonl",effects:["None. Read-only."]},run:a(async e=>{const n=T(e.node),i=N(e.operation),t=f("since",e.since),s=f("until",e.until);if(t!==void 0&&s!==void 0&&t>s)throw l("--since cannot be later than --until.",{received:{since:e.since,until:e.until},field:"since/until",next:"Retry with an inclusive range whose lower bound does not exceed its upper bound."});const o={nodeId:n,component:e.component,operationId:i,sinceMs:t,untilMs:s,minimumLevel:e.level,pattern:O(e.pattern)},d=$(),u=v(o,!d);for(const r of u.items)r.kind==="event"?d?b({...r.envelope}):(I({...r.envelope}),process.stdout.write(`${w(r.envelope)}
|
|
2
|
+
`)):d||process.stdout.write(`RAW ${r.source} ${new Date(r.effectiveTsMs).toISOString()} ${JSON.stringify(r.content)}
|
|
3
|
+
`)},"run")});export{E as sysLogsLeaf};
|
|
@@ -1,94 +1 @@
|
|
|
1
|
-
|
|
2
|
-
// Journaled canvas-db migrations remain in the database's ordered chain.
|
|
3
|
-
import { defineLeaf } from '../../core/command.js';
|
|
4
|
-
import { general, usage } from '../../core/errors.js';
|
|
5
|
-
import { resolve } from 'node:path';
|
|
6
|
-
import { pathExists } from '../../core/fs-utils.js';
|
|
7
|
-
import { cliClient, rethrowAsCliError } from '../api-client.js';
|
|
8
|
-
export const sysMigrateLeaf = defineLeaf({
|
|
9
|
-
name: 'migrate',
|
|
10
|
-
description: 'converge every profile manifest and writable memory store to the current on-disk format',
|
|
11
|
-
whenToUse: 'after a crtr update whose release notes name a state migration, when profiles stop resolving on a home that predates the update, or when old-format docs resurface (a restore, a sync, a hand-authored file). Convergent and idempotent: re-running over current state changes nothing, so use --dry-run first only when you want to review the rewrite.',
|
|
12
|
-
help: {
|
|
13
|
-
name: 'sys migrate',
|
|
14
|
-
summary: 'run the registered state migrations over every profile manifest and discovered memory store',
|
|
15
|
-
guide: 'Discovery decides what is migrated: the profiles and the projects they name, the ancestors of this directory, every nested store below any project root it reaches (a node\'s recorded cwd included), every installed plugin (disabled included), the node stores holding documents, and builtin as read-only input. A store outside that frontier is invisible to the run — add it with --dir; discovery_roots reports the frontier the run actually searched. A migration that changes a canonical identity plans across the whole corpus at once and applies in two phases, every reference rewrite before any identity rewrite, so one blocker writes nothing anywhere.',
|
|
16
|
-
params: [
|
|
17
|
-
{ kind: 'flag', name: 'dry-run', type: 'bool', required: false, constraint: 'Plan and report every rewrite without writing any file.' },
|
|
18
|
-
{ kind: 'flag', name: 'dir', type: 'path', required: false, repeatable: true, constraint: 'Project directory (the one containing `.crouter/`, not the memory dir) to add to discovery, once per occurrence. For a store no profile names and this directory does not sit under. The path must exist.' },
|
|
19
|
-
],
|
|
20
|
-
output: [
|
|
21
|
-
{ name: 'profiles', type: 'number', required: true, constraint: 'Profile manifests scanned.' },
|
|
22
|
-
{ name: 'stores', type: 'number', required: true, constraint: 'Memory stores discovered, deduped by realpath. Builtin is counted: it is read-only corpus input.' },
|
|
23
|
-
{ name: 'changed', type: 'number', required: true, constraint: 'Files rewritten (or, under --dry-run, that would be) — manifests, per-store documents, and corpus phases together.' },
|
|
24
|
-
{ name: 'applied', type: 'object[]', required: true, constraint: 'One row per migration that changed files: {store, lane, migration, files}, lane one of profile-manifest, convergent, corpus. Empty when the state is already current.' },
|
|
25
|
-
{ name: 'skipped', type: 'object[]', required: true, constraint: 'Files left untouched because they could not be parsed — a doc whose frontmatter is not valid YAML, or a manifest that is not valid JSON: {store, relPath, error}. Fix the file, then re-run.' },
|
|
26
|
-
{ name: 'blockers', type: 'object[]', required: true, constraint: 'Why the corpus lane may not write: {kind, message, store?, target?, path?, name?, paths?}. kind is inaccessible-root, inaccessible-target, parse-failure, namespace, association, front-door, divergent-reference, unsafe-route, collision, package-owned-corpus, or verification. A non-empty list with a corpus migration registered fails the run, and `received` carries this whole report plus {corpus_phase, wrote} — corpus_phase is not-started (the corpus is untouched), planned (--dry-run), or written (both phases landed and verification then failed, so `wrote` is the inventory on disk).' },
|
|
27
|
-
{ name: 'discovery_roots', type: 'object[]', required: true, constraint: 'The frontier searched: {reason, root, boundary, detail?}. reason is user, profile, profile-project, cwd-ancestor, descendant, node, plugin, builtin, or explicit-dir; boundary is store, ancestors, descendants, plugins, or nodes.' },
|
|
28
|
-
{ name: 'discovered_stores', type: 'object[]', required: true, constraint: 'One row per physical store: {store, scope, namespace, mount_status, writable, reasons, targets, docs}. reasons holds every way the store was reached; targets the target ids that mount it; docs its parseable document count.' },
|
|
29
|
-
{ name: 'discovered_targets', type: 'object[]', required: true, constraint: 'One row per resolution view: {id, kind, origin, cwd, profile_id, node_id, stores}. stores lists store keys in that target\'s precedence order.' },
|
|
30
|
-
{ name: 'repository_namespaces', type: 'object[]', required: true, constraint: 'Repository-root namespace decisions this run makes: {repository_root, repository_key, declaration_path, namespace, source, action}. A nested store inherits this declaration; its reported effective prefix is not a declaration.' },
|
|
31
|
-
{ name: 'store_prefixes', type: 'object[]', required: true, constraint: 'Effective prefix facts for each project store: {store_root, owner_dir, repository_root, owner_relative_path, old_prefix, old_rule, effective_prefix, nested_declaration_action, front_door_action}. A nonempty owner_relative_path always reports front_door_action `none`; a nested effective_prefix is derived, not a declaration.' },
|
|
32
|
-
{ name: 'renames', type: 'object[]', required: true, constraint: 'Canonical identity changes: {store_root, path, from, to}.' },
|
|
33
|
-
{ name: 'references', type: 'object[]', required: true, constraint: 'Rewritten pointers at a changed identity: {store_root, path, kind, from, to}, kind link or memory-read.' },
|
|
34
|
-
{ name: 'dryRun', type: 'boolean', required: true, constraint: 'True when nothing was written (preview only).' },
|
|
35
|
-
{ name: 'resumed', type: 'boolean', required: true, constraint: 'True only when this repair resumed the blocked daemon startup.' },
|
|
36
|
-
{ name: 'resume_error', type: 'string', required: false, constraint: 'Present when corpus repair succeeded but normal daemon startup then failed.' },
|
|
37
|
-
],
|
|
38
|
-
outputKind: 'object',
|
|
39
|
-
effects: [
|
|
40
|
-
'The daemon that owns this canvas runs the migration. Rewrites old-format `profile.json` manifests in place (atomic, under the same per-profile lock `profile project add/remove` take). A manifest whose structure cannot be converted fails the whole run — no project setting is ever guessed.',
|
|
41
|
-
'Rewrites old-format memory documents in place (atomic per-file writes) across every writable discovered store: profiles, profile-owned projects, this directory\'s ancestors, nested descendant stores, installed plugin stores, and node stores. Builtin docs are package-owned and never touched.',
|
|
42
|
-
'Applies corpus-wide identity changes in two ordered phases across every writable store, after the global plan comes back blocker-free; a post-write pass re-reads the corpus from disk and verifies it.',
|
|
43
|
-
'Under --dry-run: read-only, writes nothing.',
|
|
44
|
-
],
|
|
45
|
-
},
|
|
46
|
-
run: async (input) => {
|
|
47
|
-
const dryRun = input.dryRun === true;
|
|
48
|
-
const explicitDirs = (input['dir'] ?? []).map((dir) => resolve(dir));
|
|
49
|
-
const missingDirs = explicitDirs.filter((dir) => !pathExists(dir));
|
|
50
|
-
if (missingDirs.length > 0) {
|
|
51
|
-
throw usage(`--dir path does not exist: ${missingDirs.join(', ')}`, {
|
|
52
|
-
received: missingDirs,
|
|
53
|
-
field: 'dir',
|
|
54
|
-
next: 'Pass the project directory that contains `.crouter/`, or omit --dir to migrate the discovered frontier only.',
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
let report;
|
|
58
|
-
try {
|
|
59
|
-
report = await cliClient().migrateState({ dry_run: dryRun, dirs: explicitDirs });
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
rethrowAsCliError(error);
|
|
63
|
-
}
|
|
64
|
-
if (report.blocked) {
|
|
65
|
-
const blockers = report.blockers;
|
|
66
|
-
const earlier = report.applied.filter((row) => row.lane !== 'corpus').flatMap((row) => row.files);
|
|
67
|
-
const corpusPhase = report.corpus_phase;
|
|
68
|
-
const wrote = report.wrote;
|
|
69
|
-
const wroteSummary = dryRun
|
|
70
|
-
? '— this was a --dry-run; nothing was written'
|
|
71
|
-
: corpusPhase === 'written'
|
|
72
|
-
? `after both write phases — ${wrote.corpus_consumers.length} reference and ${wrote.corpus_identities.length} identity rewrite(s) are on disk and are NOT rolled back`
|
|
73
|
-
: earlier.length > 0
|
|
74
|
-
? `before any corpus write — the corpus is unchanged, but ${earlier.length} earlier manifest/document rewrite(s) are already on disk`
|
|
75
|
-
: '— nothing was written';
|
|
76
|
-
throw general(`corpus migration ${corpusPhase === 'written' ? 'verification failed with' : 'blocked by'} ${blockers.length} finding(s) ${wroteSummary}`, {
|
|
77
|
-
received: report,
|
|
78
|
-
next: corpusPhase === 'written'
|
|
79
|
-
? 'Resolve every verification finding against the files listed in received.wrote.corpus_identities and .corpus_consumers, then re-run `crtr sys migrate` — the lane converges from file truth.'
|
|
80
|
-
: 'Resolve every blocker, then re-run `crtr sys migrate` — the earlier lanes are convergent and re-running them is a no-op.',
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
return {
|
|
84
|
-
...report,
|
|
85
|
-
follow_up: report.skipped.length > 0
|
|
86
|
-
? 'Some files could not be parsed and were left untouched — fix each named file, then re-run `crtr sys migrate`.'
|
|
87
|
-
: report.changed === 0
|
|
88
|
-
? 'State already current — nothing to rewrite.'
|
|
89
|
-
: dryRun
|
|
90
|
-
? 'Preview only — re-run without --dry-run to write these changes.'
|
|
91
|
-
: undefined,
|
|
92
|
-
};
|
|
93
|
-
},
|
|
94
|
-
});
|
|
1
|
+
var u=Object.defineProperty;var l=(o,t)=>u(o,"name",{value:t,configurable:!0});import{defineLeaf as h}from"../../core/command.js";import{general as m,usage as f}from"../../core/errors.js";import{resolve as y}from"node:path";import{pathExists as w}from"../../core/fs-utils.js";import{cliClient as g,rethrowAsCliError as v}from"../api-client.js";const A=h({name:"migrate",description:"converge every profile manifest and writable memory store to the current on-disk format",whenToUse:"after a crtr update whose release notes name a state migration, when profiles stop resolving on a home that predates the update, or when old-format docs resurface (a restore, a sync, a hand-authored file). Convergent and idempotent: re-running over current state changes nothing, so use --dry-run first only when you want to review the rewrite.",help:{name:"sys migrate",summary:"run the registered state migrations over every profile manifest and discovered memory store",guide:"Discovery decides what is migrated: the profiles and the projects they name, the ancestors of this directory, every nested store below any project root it reaches (a node's recorded cwd included), every installed plugin (disabled included), the node stores holding documents, and builtin as read-only input. A store outside that frontier is invisible to the run \u2014 add it with --dir; discovery_roots reports the frontier the run actually searched. A migration that changes a canonical identity plans across the whole corpus at once and applies in two phases, every reference rewrite before any identity rewrite, so one blocker writes nothing anywhere.",params:[{kind:"flag",name:"dry-run",type:"bool",required:!1,constraint:"Plan and report every rewrite without writing any file."},{kind:"flag",name:"dir",type:"path",required:!1,repeatable:!0,constraint:"Project directory (the one containing `.crouter/`, not the memory dir) to add to discovery, once per occurrence. For a store no profile names and this directory does not sit under. The path must exist."}],output:[{name:"profiles",type:"number",required:!0,constraint:"Profile manifests scanned."},{name:"stores",type:"number",required:!0,constraint:"Memory stores discovered, deduped by realpath. Builtin is counted: it is read-only corpus input."},{name:"changed",type:"number",required:!0,constraint:"Files rewritten (or, under --dry-run, that would be) \u2014 manifests, per-store documents, and corpus phases together."},{name:"applied",type:"object[]",required:!0,constraint:"One row per migration that changed files: {store, lane, migration, files}, lane one of profile-manifest, convergent, corpus. Empty when the state is already current."},{name:"skipped",type:"object[]",required:!0,constraint:"Files left untouched because they could not be parsed \u2014 a doc whose frontmatter is not valid YAML, or a manifest that is not valid JSON: {store, relPath, error}. Fix the file, then re-run."},{name:"blockers",type:"object[]",required:!0,constraint:"Why the corpus lane may not write: {kind, message, store?, target?, path?, name?, paths?}. kind is inaccessible-root, inaccessible-target, parse-failure, namespace, association, front-door, divergent-reference, unsafe-route, collision, package-owned-corpus, or verification. A non-empty list with a corpus migration registered fails the run, and `received` carries this whole report plus {corpus_phase, wrote} \u2014 corpus_phase is not-started (the corpus is untouched), planned (--dry-run), or written (both phases landed and verification then failed, so `wrote` is the inventory on disk)."},{name:"discovery_roots",type:"object[]",required:!0,constraint:"The frontier searched: {reason, root, boundary, detail?}. reason is user, profile, profile-project, cwd-ancestor, descendant, node, plugin, builtin, or explicit-dir; boundary is store, ancestors, descendants, plugins, or nodes."},{name:"discovered_stores",type:"object[]",required:!0,constraint:"One row per physical store: {store, scope, namespace, mount_status, writable, reasons, targets, docs}. reasons holds every way the store was reached; targets the target ids that mount it; docs its parseable document count."},{name:"discovered_targets",type:"object[]",required:!0,constraint:"One row per resolution view: {id, kind, origin, cwd, profile_id, node_id, stores}. stores lists store keys in that target's precedence order."},{name:"repository_namespaces",type:"object[]",required:!0,constraint:"Repository-root namespace decisions this run makes: {repository_root, repository_key, declaration_path, namespace, source, action}. A nested store inherits this declaration; its reported effective prefix is not a declaration."},{name:"store_prefixes",type:"object[]",required:!0,constraint:"Effective prefix facts for each project store: {store_root, owner_dir, repository_root, owner_relative_path, old_prefix, old_rule, effective_prefix, nested_declaration_action, front_door_action}. A nonempty owner_relative_path always reports front_door_action `none`; a nested effective_prefix is derived, not a declaration."},{name:"renames",type:"object[]",required:!0,constraint:"Canonical identity changes: {store_root, path, from, to}."},{name:"references",type:"object[]",required:!0,constraint:"Rewritten pointers at a changed identity: {store_root, path, kind, from, to}, kind link or memory-read."},{name:"dryRun",type:"boolean",required:!0,constraint:"True when nothing was written (preview only)."},{name:"resumed",type:"boolean",required:!0,constraint:"True only when this repair resumed the blocked daemon startup."},{name:"resume_error",type:"string",required:!1,constraint:"Present when corpus repair succeeded but normal daemon startup then failed."}],outputKind:"object",effects:["The daemon that owns this canvas runs the migration. Rewrites old-format `profile.json` manifests in place (atomic, under the same per-profile lock `profile project add/remove` take). A manifest whose structure cannot be converted fails the whole run \u2014 no project setting is ever guessed.","Rewrites old-format memory documents in place (atomic per-file writes) across every writable discovered store: profiles, profile-owned projects, this directory's ancestors, nested descendant stores, installed plugin stores, and node stores. Builtin docs are package-owned and never touched.","Applies corpus-wide identity changes in two ordered phases across every writable store, after the global plan comes back blocker-free; a post-write pass re-reads the corpus from disk and verifies it.","Under --dry-run: read-only, writes nothing."]},run:l(async o=>{const t=o.dryRun===!0,a=(o.dir??[]).map(r=>y(r)),n=a.filter(r=>!w(r));if(n.length>0)throw f(`--dir path does not exist: ${n.join(", ")}`,{received:n,field:"dir",next:"Pass the project directory that contains `.crouter/`, or omit --dir to migrate the discovered frontier only."});let e;try{e=await g().migrateState({dry_run:t,dirs:a})}catch(r){v(r)}if(e.blocked){const r=e.blockers,d=e.applied.filter(s=>s.lane!=="corpus").flatMap(s=>s.files),i=e.corpus_phase,c=e.wrote,p=t?"\u2014 this was a --dry-run; nothing was written":i==="written"?`after both write phases \u2014 ${c.corpus_consumers.length} reference and ${c.corpus_identities.length} identity rewrite(s) are on disk and are NOT rolled back`:d.length>0?`before any corpus write \u2014 the corpus is unchanged, but ${d.length} earlier manifest/document rewrite(s) are already on disk`:"\u2014 nothing was written";throw m(`corpus migration ${i==="written"?"verification failed with":"blocked by"} ${r.length} finding(s) ${p}`,{received:e,next:i==="written"?"Resolve every verification finding against the files listed in received.wrote.corpus_identities and .corpus_consumers, then re-run `crtr sys migrate` \u2014 the lane converges from file truth.":"Resolve every blocker, then re-run `crtr sys migrate` \u2014 the earlier lanes are convergent and re-running them is a no-op."})}return{...e,follow_up:e.skipped.length>0?"Some files could not be parsed and were left untouched \u2014 fix each named file, then re-run `crtr sys migrate`.":e.changed===0?"State already current \u2014 nothing to rewrite.":t?"Preview only \u2014 re-run without --dry-run to write these changes.":void 0}},"run")});export{A as sysMigrateLeaf};
|
|
@@ -1,110 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { BROKER_LIMIT_OVERRIDE_PRECEDENCE } from '../setup.js';
|
|
4
|
-
import { padAnsi, theme, wrapText } from '../../../core/tui/panel.js';
|
|
5
|
-
function positive(value) {
|
|
6
|
-
return /^\d+$/.test(value) &&
|
|
7
|
-
Number.isSafeInteger(Number(value)) &&
|
|
8
|
-
Number(value) >= 1
|
|
9
|
-
? Number(value)
|
|
10
|
-
: undefined;
|
|
11
|
-
}
|
|
12
|
-
export class BrokerLimitsPanel {
|
|
13
|
-
onChange;
|
|
14
|
-
warningInput = new Input();
|
|
15
|
-
hardCapInput = new Input();
|
|
16
|
-
index = 0;
|
|
17
|
-
notice;
|
|
18
|
-
_focused = false;
|
|
19
|
-
constructor(onChange) {
|
|
20
|
-
this.onChange = onChange;
|
|
21
|
-
const thresholds = readConfig("user").brokerThresholds;
|
|
22
|
-
this.warningInput.setValue(String(thresholds.warning));
|
|
23
|
-
this.warningInput.handleInput("\x05");
|
|
24
|
-
this.hardCapInput.setValue(String(thresholds.automaticReviveCap));
|
|
25
|
-
this.hardCapInput.handleInput("\x05");
|
|
26
|
-
this.warningInput.onSubmit = () => this.save();
|
|
27
|
-
this.hardCapInput.onSubmit = () => this.save();
|
|
28
|
-
}
|
|
29
|
-
set focused(value) {
|
|
30
|
-
this._focused = value;
|
|
31
|
-
this.warningInput.focused = value && this.index === 0;
|
|
32
|
-
this.hardCapInput.focused = value && this.index === 1;
|
|
33
|
-
}
|
|
34
|
-
selected() {
|
|
35
|
-
return this.index === 0 ? this.warningInput : this.hardCapInput;
|
|
36
|
-
}
|
|
37
|
-
move(delta) {
|
|
38
|
-
this.index = ((this.index + delta + 2) % 2);
|
|
39
|
-
this.focused = this._focused;
|
|
40
|
-
this.notice = undefined;
|
|
41
|
-
}
|
|
42
|
-
save() {
|
|
43
|
-
const warning = positive(this.warningInput.getValue());
|
|
44
|
-
const cap = positive(this.hardCapInput.getValue());
|
|
45
|
-
if (warning === undefined || cap === undefined)
|
|
46
|
-
this.notice = "Both broker limits must be positive integers.";
|
|
47
|
-
else if (warning > cap)
|
|
48
|
-
this.notice =
|
|
49
|
-
"Warning threshold cannot exceed the automatic-revive hard cap.";
|
|
50
|
-
else {
|
|
51
|
-
updateRawConfigAtomically("user", (latest) => ({
|
|
52
|
-
...latest,
|
|
53
|
-
brokerThresholds: { warning, automaticReviveCap: cap },
|
|
54
|
-
}));
|
|
55
|
-
this.notice = `Saved to user config. Applies next tick. ${BROKER_LIMIT_OVERRIDE_PRECEDENCE}`;
|
|
56
|
-
}
|
|
57
|
-
this.onChange();
|
|
58
|
-
}
|
|
59
|
-
handleInput(data, matches) {
|
|
60
|
-
if (/^\d+$/.test(data)) {
|
|
61
|
-
this.selected().handleInput(data);
|
|
62
|
-
this.notice = undefined;
|
|
63
|
-
this.onChange();
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
if (!matches)
|
|
67
|
-
return false;
|
|
68
|
-
if (matches("crtr.setup.list-down", data))
|
|
69
|
-
this.move(1);
|
|
70
|
-
else if (matches("crtr.setup.list-up", data))
|
|
71
|
-
this.move(-1);
|
|
72
|
-
// DEL (\x7f) is what terminals send for backspace and its code point sits
|
|
73
|
-
// above the control range, so it has to be excluded here or editing an
|
|
74
|
-
// existing value is refused as a non-digit keystroke.
|
|
75
|
-
else if (data.length > 0 &&
|
|
76
|
-
[...data].every((char) => {
|
|
77
|
-
const code = char.codePointAt(0);
|
|
78
|
-
return code >= 32 && code !== 127;
|
|
79
|
-
}))
|
|
80
|
-
this.notice = "Broker limits accept digits only.";
|
|
81
|
-
else {
|
|
82
|
-
this.selected().handleInput(data);
|
|
83
|
-
if (data !== "\r" && data !== "\n")
|
|
84
|
-
this.notice = undefined;
|
|
85
|
-
}
|
|
86
|
-
this.onChange();
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
render(width) {
|
|
90
|
-
const out = [
|
|
91
|
-
truncateToWidth(`${theme.fg("accent", theme.bold("Broker limits"))}${theme.fg("dim", " user scope · defaults 16 / 32")}`, width),
|
|
92
|
-
truncateToWidth(theme.fg("dim", "These bounds govern daemon automatic revive; explicit node revives remain available."), width),
|
|
93
|
-
"",
|
|
94
|
-
];
|
|
95
|
-
const line = (index, label, description, input) => {
|
|
96
|
-
const selected = index === this.index;
|
|
97
|
-
out.push(truncateToWidth(`${selected ? theme.fg("accent", "▶") : " "} ${padAnsi(selected ? theme.fg("accent", label) : label, 24)} ${input.render(Math.max(8, width - 28))[0] ?? ""}`, width));
|
|
98
|
-
out.push(truncateToWidth(theme.fg("dim", ` ${description}`), width));
|
|
99
|
-
};
|
|
100
|
-
line(0, "Warning threshold", "Warn when live brokers reach this count. Default: 16.", this.warningInput);
|
|
101
|
-
line(1, "Automatic-revive hard cap", "Defer automatic revives at this count. Default: 32.", this.hardCapInput);
|
|
102
|
-
out.push("");
|
|
103
|
-
for (const text of wrapText(`Configured limits apply next tick. ${BROKER_LIMIT_OVERRIDE_PRECEDENCE}`, width))
|
|
104
|
-
out.push(theme.fg("dim", text));
|
|
105
|
-
if (this.notice)
|
|
106
|
-
for (const text of wrapText(this.notice, width))
|
|
107
|
-
out.push(theme.fg(this.notice.startsWith("Saved") ? "success" : "warning", text));
|
|
108
|
-
return out;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
1
|
+
var m=Object.defineProperty;var o=(s,e)=>m(s,"name",{value:e,configurable:!0});import{Input as c,truncateToWidth as h}from"@earendil-works/pi-tui";import{readConfig as I,updateRawConfigAtomically as v}from"../../../core/config.js";import{BROKER_LIMIT_OVERRIDE_PRECEDENCE as d}from"../setup.js";import{padAnsi as C,theme as n,wrapText as p}from"../../../core/tui/panel.js";function f(s){return/^\d+$/.test(s)&&Number.isSafeInteger(Number(s))&&Number(s)>=1?Number(s):void 0}o(f,"positive");class R{static{o(this,"BrokerLimitsPanel")}onChange;warningInput=new c;hardCapInput=new c;index=0;notice;_focused=!1;constructor(e){this.onChange=e;const t=I("user").brokerThresholds;this.warningInput.setValue(String(t.warning)),this.warningInput.handleInput(""),this.hardCapInput.setValue(String(t.automaticReviveCap)),this.hardCapInput.handleInput(""),this.warningInput.onSubmit=()=>this.save(),this.hardCapInput.onSubmit=()=>this.save()}set focused(e){this._focused=e,this.warningInput.focused=e&&this.index===0,this.hardCapInput.focused=e&&this.index===1}selected(){return this.index===0?this.warningInput:this.hardCapInput}move(e){this.index=(this.index+e+2)%2,this.focused=this._focused,this.notice=void 0}save(){const e=f(this.warningInput.getValue()),t=f(this.hardCapInput.getValue());e===void 0||t===void 0?this.notice="Both broker limits must be positive integers.":e>t?this.notice="Warning threshold cannot exceed the automatic-revive hard cap.":(v("user",r=>({...r,brokerThresholds:{warning:e,automaticReviveCap:t}})),this.notice=`Saved to user config. Applies next tick. ${d}`),this.onChange()}handleInput(e,t){return/^\d+$/.test(e)?(this.selected().handleInput(e),this.notice=void 0,this.onChange(),!0):t?(t("crtr.setup.list-down",e)?this.move(1):t("crtr.setup.list-up",e)?this.move(-1):e.length>0&&[...e].every(r=>{const i=r.codePointAt(0);return i>=32&&i!==127})?this.notice="Broker limits accept digits only.":(this.selected().handleInput(e),e!=="\r"&&e!==`
|
|
2
|
+
`&&(this.notice=void 0)),this.onChange(),!0):!1}render(e){const t=[h(`${n.fg("accent",n.bold("Broker limits"))}${n.fg("dim"," user scope \xB7 defaults 16 / 32")}`,e),h(n.fg("dim","These bounds govern daemon automatic revive; explicit node revives remain available."),e),""],r=o((i,u,l,g)=>{const a=i===this.index;t.push(h(`${a?n.fg("accent","\u25B6"):" "} ${C(a?n.fg("accent",u):u,24)} ${g.render(Math.max(8,e-28))[0]??""}`,e)),t.push(h(n.fg("dim",` ${l}`),e))},"line");r(0,"Warning threshold","Warn when live brokers reach this count. Default: 16.",this.warningInput),r(1,"Automatic-revive hard cap","Defer automatic revives at this count. Default: 32.",this.hardCapInput),t.push("");for(const i of p(`Configured limits apply next tick. ${d}`,e))t.push(n.fg("dim",i));if(this.notice)for(const i of p(this.notice,e))t.push(n.fg(this.notice.startsWith("Saved")?"success":"warning",i));return t}}export{R as BrokerLimitsPanel};
|