@north-light/crouter 0.3.317 → 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.d.ts +1 -1
- 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 +1 -1
- 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.d.ts +3 -2
- package/dist/core/runtime/warm-pool.js +1 -385
- 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 -943
- package/dist/daemon/api/handlers/profiles.js +1 -140
- package/dist/daemon/api/handlers/prospective-chat-inventory.js +1 -59
- package/dist/daemon/api/handlers/reports.js +16 -332
- package/dist/daemon/api/handlers/review-comments.js +1 -465
- package/dist/daemon/api/handlers/reviews.js +1 -200
- package/dist/daemon/api/handlers/subscriptions.js +1 -53
- package/dist/daemon/api/handlers/validate.js +1 -58
- package/dist/daemon/api/handlers/worktree.js +1 -39
- package/dist/daemon/api/map.js +2 -735
- package/dist/daemon/api/router.js +1 -190
- package/dist/daemon/api/server.js +11 -408
- package/dist/daemon/boot-migrations.js +1 -31
- package/dist/daemon/companion-retire.js +1 -34
- package/dist/daemon/control.js +1 -22
- package/dist/daemon/cron/armed-context.js +1 -100
- package/dist/daemon/cron/capture.js +2 -45
- package/dist/daemon/cron/disposition.js +1 -55
- package/dist/daemon/cron/escalation.js +3 -124
- package/dist/daemon/cron/held.js +1 -20
- package/dist/daemon/cron/lease-recovery.js +1 -119
- package/dist/daemon/cron/live-runs.js +1 -23
- package/dist/daemon/cron/passes.js +1 -58
- package/dist/daemon/cron/settle.js +1 -61
- package/dist/daemon/cron/sinks.js +2 -59
- package/dist/daemon/cron-run.js +1 -405
- package/dist/daemon/crtrd-cli.js +1 -23
- package/dist/daemon/crtrd.js +8 -854
- package/dist/daemon/delivery/run-delivery.js +1 -164
- package/dist/daemon/fleet.js +17 -475
- package/dist/daemon/human/finish.js +10 -179
- package/dist/daemon/human/settle.js +1 -89
- package/dist/daemon/human/sweep.js +1 -66
- package/dist/daemon/manage.js +2 -595
- package/dist/daemon/messaging/node-message.js +1 -99
- package/dist/daemon/park-activity.js +1 -30
- package/dist/daemon/park-pending.js +1 -52
- package/dist/daemon/pidfile.js +1 -37
- package/dist/daemon/profile-delete.js +1 -306
- package/dist/daemon/reconcilers/bash-deadline.js +1 -80
- package/dist/daemon/reconcilers/broker-supervision.js +4 -761
- package/dist/daemon/reconcilers/controller-death.js +1 -14
- package/dist/daemon/reconcilers/cron-lane.js +1 -29
- package/dist/daemon/reconcilers/delivery-lane.js +1 -130
- package/dist/daemon/reconcilers/live-obligation.js +1 -87
- package/dist/daemon/reconcilers/managed-worktree-sweep.js +1 -202
- package/dist/daemon/reconcilers/node-deadline.js +1 -82
- package/dist/daemon/reconcilers/node-lifecycle/freeze-lane.js +1 -172
- package/dist/daemon/reconcilers/node-lifecycle/respawn-policy.js +1 -59
- package/dist/daemon/reconcilers/node-lifecycle/terminating.js +1 -12
- package/dist/daemon/reconcilers/node-lifecycle/tick.js +1 -146
- package/dist/daemon/reconcilers/node-lifecycle/wants-execution.js +1 -11
- package/dist/daemon/reconcilers/pending-review-submit.js +1 -36
- package/dist/daemon/reconcilers/storage-maintenance.js +1 -207
- package/dist/daemon/review/comment-notify.js +2 -109
- package/dist/daemon/review/companion.js +1 -29
- package/dist/daemon/review/deliver.js +3 -8
- package/dist/daemon/review/finish.js +1 -122
- package/dist/daemon/review/sweep.js +1 -18
- package/dist/daemon/startup-policy.js +1 -1
- package/dist/daemon/supervise-cadence.js +1 -6
- package/dist/hook-authoring.js +5 -447
- package/dist/hook-process.js +1 -34
- package/dist/index.js +1 -52
- package/dist/migrations/001-surfaces-frontmatter.js +1 -161
- package/dist/migrations/002-profile-project-memory.js +1 -72
- package/dist/migrations/003-repository-root-memory-identity/front-door.js +11 -231
- package/dist/migrations/003-repository-root-memory-identity/index.js +5 -513
- package/dist/migrations/003-repository-root-memory-identity/references.js +5 -469
- package/dist/migrations/003-repository-root-memory-identity/repository-facts.js +3 -349
- package/dist/migrations/activation.js +2 -89
- package/dist/migrations/convergent.js +2 -82
- package/dist/migrations/corpus.js +3 -483
- package/dist/migrations/frontmatter-splice.js +8 -176
- package/dist/migrations/profile-manifests.js +2 -70
- package/dist/migrations/registry.js +1 -42
- package/dist/migrations/runner.js +1 -85
- package/dist/migrations/types.js +0 -24
- package/dist/pi-extensions/broker-local.js +2 -106
- package/dist/pi-extensions/canvas-bash-valve.js +7 -461
- package/dist/pi-extensions/canvas-context-intro.js +2 -113
- package/dist/pi-extensions/canvas-doc-substrate.js +9 -178
- package/dist/pi-extensions/canvas-goal-capture.js +1 -83
- package/dist/pi-extensions/canvas-inbox-watcher.js +1 -1010
- package/dist/pi-extensions/canvas-passive-context.js +14 -203
- package/dist/pi-extensions/canvas-preview-result.js +2 -72
- package/dist/pi-extensions/canvas-prompt-scrub.js +2 -54
- package/dist/pi-extensions/canvas-recap.js +11 -405
- package/dist/pi-extensions/canvas-review-boundary.js +3 -63
- package/dist/pi-extensions/canvas-stamp.js +2 -77
- package/dist/pi-extensions/canvas-stophook.js +1 -643
- package/dist/pi-extensions/canvas-structured-output.js +13 -35
- package/dist/pi-extensions/canvas-tool-guide.js +9 -78
- package/dist/pi-extensions/envelope-merge.js +8 -29
- package/dist/prompts/review.js +20 -42
- package/dist/shared/birth-announcement.js +1 -25
- package/dist/shared/crtr-version.js +1 -18
- package/dist/shared/env.js +1 -214
- package/dist/shared/generated-context.js +11 -226
- package/dist/shared/predicates.js +1 -4
- package/dist/shared/shell-quote.js +1 -5
- package/dist/shared/tool-groups.js +1 -64
- package/dist/shared/working-activity.js +1 -27
- package/dist/suppress-experimental-warnings.js +1 -15
- package/dist/types.js +1 -185
- package/docs/public-api.md +10 -9
- package/package.json +6 -5
- 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 -107
- 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,121 +1 @@
|
|
|
1
|
-
|
|
2
|
-
/** Parse an untrusted broker command inventory. Bad entries are discarded so a
|
|
3
|
-
* malformed extension registration cannot take down autocomplete or preview. */
|
|
4
|
-
export function parsePreviewableCommands(detail) {
|
|
5
|
-
try {
|
|
6
|
-
const parsed = JSON.parse(detail);
|
|
7
|
-
if (!Array.isArray(parsed))
|
|
8
|
-
return [];
|
|
9
|
-
return parsed.flatMap((value) => {
|
|
10
|
-
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
11
|
-
return [];
|
|
12
|
-
const command = value;
|
|
13
|
-
if (typeof command.name !== 'string' || typeof command.description !== 'string' || typeof command.source !== 'string')
|
|
14
|
-
return [];
|
|
15
|
-
if (command.source !== 'builtin' && command.source !== 'command' && command.source !== 'template')
|
|
16
|
-
return [];
|
|
17
|
-
if (command.template !== undefined && typeof command.template !== 'string')
|
|
18
|
-
return [];
|
|
19
|
-
if (command.expansion !== undefined && !isDeterministicCommandExpansion(command.expansion))
|
|
20
|
-
return [];
|
|
21
|
-
return [{
|
|
22
|
-
name: command.name,
|
|
23
|
-
description: command.description,
|
|
24
|
-
source: command.source,
|
|
25
|
-
...(typeof command.template === 'string' ? { template: command.template } : {}),
|
|
26
|
-
...(isDeterministicCommandExpansion(command.expansion) ? { expansion: command.expansion } : {}),
|
|
27
|
-
}];
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
catch {
|
|
31
|
-
return [];
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
/** Parse prompt-template arguments exactly as pi does: whitespace separates
|
|
35
|
-
* arguments except inside matching single or double quotes. */
|
|
36
|
-
export function parseCommandArgs(argsString) {
|
|
37
|
-
const args = [];
|
|
38
|
-
let current = '';
|
|
39
|
-
let inQuote = null;
|
|
40
|
-
for (const char of argsString) {
|
|
41
|
-
if (inQuote !== null) {
|
|
42
|
-
if (char === inQuote)
|
|
43
|
-
inQuote = null;
|
|
44
|
-
else
|
|
45
|
-
current += char;
|
|
46
|
-
}
|
|
47
|
-
else if (char === '"' || char === "'") {
|
|
48
|
-
inQuote = char;
|
|
49
|
-
}
|
|
50
|
-
else if (/\s/.test(char)) {
|
|
51
|
-
if (current !== '') {
|
|
52
|
-
args.push(current);
|
|
53
|
-
current = '';
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
current += char;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (current !== '')
|
|
61
|
-
args.push(current);
|
|
62
|
-
return args;
|
|
63
|
-
}
|
|
64
|
-
/** Expand pi's prompt-template placeholders without recursively expanding text
|
|
65
|
-
* supplied by the user. Kept byte-compatible with pi's prompt expansion. */
|
|
66
|
-
export function substitutePromptArgs(content, args) {
|
|
67
|
-
const allArgs = args.join(' ');
|
|
68
|
-
return content.replace(/\$\{(\d+):-([^}]*)\}|\$\{@:(\d+)(?::(\d+))?\}|\$(ARGUMENTS|@|\d+)/g, (_match, defaultNum, defaultValue, sliceStart, sliceLength, simple) => {
|
|
69
|
-
if (defaultNum !== undefined) {
|
|
70
|
-
const value = args[Number.parseInt(defaultNum, 10) - 1];
|
|
71
|
-
return value || defaultValue || '';
|
|
72
|
-
}
|
|
73
|
-
if (sliceStart !== undefined) {
|
|
74
|
-
const start = Math.max(0, Number.parseInt(sliceStart, 10) - 1);
|
|
75
|
-
if (sliceLength !== undefined) {
|
|
76
|
-
return args.slice(start, start + Number.parseInt(sliceLength, 10)).join(' ');
|
|
77
|
-
}
|
|
78
|
-
return args.slice(start).join(' ');
|
|
79
|
-
}
|
|
80
|
-
if (simple === 'ARGUMENTS' || simple === '@')
|
|
81
|
-
return allArgs;
|
|
82
|
-
return args[Number.parseInt(simple || '0', 10) - 1] ?? '';
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
/** Resolve the leading slash token in the live editor. Viewer builtins run
|
|
86
|
-
* first, followed by extension commands and then pi prompt templates. Extension
|
|
87
|
-
* matching deliberately uses only ASCII space: pi's `_tryExecuteExtensionCommand`
|
|
88
|
-
* treats tabs and newlines as part of the command name, while template matching
|
|
89
|
-
* accepts all whitespace. */
|
|
90
|
-
export function loadedCommandPreview(editorText, commands) {
|
|
91
|
-
const templateMatch = editorText.match(/^\/([^\s]+)(?:\s+([\s\S]*))?$/);
|
|
92
|
-
if (templateMatch === null)
|
|
93
|
-
return undefined;
|
|
94
|
-
const templateName = templateMatch[1];
|
|
95
|
-
// Viewer-owned builtins intercept the same slash token before the broker.
|
|
96
|
-
if (commands.some((candidate) => candidate.source === 'builtin' && candidate.name === templateName))
|
|
97
|
-
return undefined;
|
|
98
|
-
const spaceIndex = editorText.indexOf(' ');
|
|
99
|
-
const extensionName = spaceIndex === -1 ? editorText.slice(1) : editorText.slice(1, spaceIndex);
|
|
100
|
-
const extension = commands.find((candidate) => candidate.source === 'command' && candidate.name === extensionName);
|
|
101
|
-
if (extension !== undefined) {
|
|
102
|
-
if (extension.expansion === undefined || !isDeterministicCommandExpansion(extension.expansion))
|
|
103
|
-
return undefined;
|
|
104
|
-
const rawArgs = spaceIndex === -1 ? '' : editorText.slice(spaceIndex + 1);
|
|
105
|
-
return {
|
|
106
|
-
name: extension.name,
|
|
107
|
-
invocation: editorText,
|
|
108
|
-
content: expandDeterministicCommand(extension.expansion, rawArgs),
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
// An extension whose name only coincides with the template does not shadow it
|
|
112
|
-
// unless pi's ASCII-space extension parser actually matched it.
|
|
113
|
-
const template = commands.find((candidate) => candidate.source === 'template' && candidate.name === templateName);
|
|
114
|
-
if (typeof template?.template !== 'string')
|
|
115
|
-
return undefined;
|
|
116
|
-
return {
|
|
117
|
-
name: template.name,
|
|
118
|
-
invocation: editorText,
|
|
119
|
-
content: substitutePromptArgs(template.template, parseCommandArgs(templateMatch[2] ?? '')),
|
|
120
|
-
};
|
|
121
|
-
}
|
|
1
|
+
var m=Object.defineProperty;var a=(r,n)=>m(r,"name",{value:n,configurable:!0});import{expandDeterministicCommand as l,isDeterministicCommandExpansion as c}from"../../../core/runtime/command-expansion.js";function b(r){try{const n=JSON.parse(r);return Array.isArray(n)?n.flatMap(t=>{if(typeof t!="object"||t===null||Array.isArray(t))return[];const e=t;return typeof e.name!="string"||typeof e.description!="string"||typeof e.source!="string"?[]:e.source!=="builtin"&&e.source!=="command"&&e.source!=="template"?[]:e.template!==void 0&&typeof e.template!="string"?[]:e.expansion!==void 0&&!c(e.expansion)?[]:[{name:e.name,description:e.description,source:e.source,...typeof e.template=="string"?{template:e.template}:{},...c(e.expansion)?{expansion:e.expansion}:{}}]}):[]}catch{return[]}}a(b,"parsePreviewableCommands");function d(r){const n=[];let t="",e=null;for(const i of r)e!==null?i===e?e=null:t+=i:i==='"'||i==="'"?e=i:/\s/.test(i)?t!==""&&(n.push(t),t=""):t+=i;return t!==""&&n.push(t),n}a(d,"parseCommandArgs");function x(r,n){const t=n.join(" ");return r.replace(/\$\{(\d+):-([^}]*)\}|\$\{@:(\d+)(?::(\d+))?\}|\$(ARGUMENTS|@|\d+)/g,(e,i,p,o,u,s)=>{if(i!==void 0)return n[Number.parseInt(i,10)-1]||p||"";if(o!==void 0){const f=Math.max(0,Number.parseInt(o,10)-1);return u!==void 0?n.slice(f,f+Number.parseInt(u,10)).join(" "):n.slice(f).join(" ")}return s==="ARGUMENTS"||s==="@"?t:n[Number.parseInt(s||"0",10)-1]??""})}a(x,"substitutePromptArgs");function N(r,n){const t=r.match(/^\/([^\s]+)(?:\s+([\s\S]*))?$/);if(t===null)return;const e=t[1];if(n.some(s=>s.source==="builtin"&&s.name===e))return;const i=r.indexOf(" "),p=i===-1?r.slice(1):r.slice(1,i),o=n.find(s=>s.source==="command"&&s.name===p);if(o!==void 0){if(o.expansion===void 0||!c(o.expansion))return;const s=i===-1?"":r.slice(i+1);return{name:o.name,invocation:r,content:l(o.expansion,s)}}const u=n.find(s=>s.source==="template"&&s.name===e);if(typeof u?.template=="string")return{name:u.name,invocation:r,content:x(u.template,d(t[2]??""))}}a(N,"loadedCommandPreview");export{N as loadedCommandPreview,d as parseCommandArgs,b as parsePreviewableCommands,x as substitutePromptArgs};
|
|
@@ -1729,7 +1729,7 @@ CREATE TABLE scope_plugins (owner_key TEXT NOT NULL REFERENCES scope_owners(owne
|
|
|
1729
1729
|
CREATE TABLE managed_accounts (provider_id TEXT NOT NULL, id TEXT NOT NULL, label TEXT NOT NULL, label_key TEXT NOT NULL, position INTEGER NOT NULL, last_attempt_at INTEGER NOT NULL, last_rate_limited_at INTEGER NOT NULL, rate_limited_until INTEGER NOT NULL, auth_failure TEXT CHECK(auth_failure IS NULL OR auth_failure='invalid_grant'), PRIMARY KEY(provider_id,id), UNIQUE(provider_id,label_key));
|
|
1730
1730
|
CREATE INDEX managed_accounts_order ON managed_accounts(provider_id,position);
|
|
1731
1731
|
CREATE TABLE rotation_settings (singleton INTEGER PRIMARY KEY CHECK(singleton=1), default_fallback_strength TEXT, revert_when_available INTEGER CHECK(revert_when_available IN (0,1)));
|
|
1732
|
-
CREATE TABLE provider_revision (singleton INTEGER PRIMARY KEY CHECK(singleton=1), revision INTEGER NOT NULL);`;function QBe(t,e){if(t.exec(e==="provider"?kVr:TVr),e!=="provider"){let n=e==="user"?"user":"project";t.prepare("INSERT INTO scope_owners(owner_key, kind, root, profile_id) VALUES (?, ?, ?, NULL)").run(n,e,"")}else t.prepare("INSERT INTO provider_revision(singleton, revision) VALUES (1, 0)").run();t.exec("PRAGMA user_version = 1")}var Rfn=new Map,cgt=/^[a-z0-9]+(?:-[a-z0-9]+)*-[0-9a-f]{8}$/;function lgt(t,e,n){t.prepare("UPDATE scope_owners SET root=? WHERE owner_key=?").run(n,e)}function RVr(t){return Number(t.prepare("PRAGMA user_version").get().user_version)}function ugt(t){gH(t)&&agt(t,384);for(let e of["-wal","-shm"])gH(`${t}${e}`)&&agt(`${t}${e}`,384)}function mbe(t){return gH(t.path)}function pgt(t){if(t.kind==="project")return[PR(t.root,FB)];if(t.kind==="provider")return[PR(t.root,"anthropic-subscriptions.json"),PR(t.root,"openai-codex-subscriptions.json"),PR(t.root,"provider-rotation.json")];let e=[PR(t.root,MB),PR(t.root,FB),PR(t.root,"profile-defaults.json")],n=PR(t.root,kie);if(gH(n))for(let i of IVr(n,{withFileTypes:!0}))i.isDirectory()&&cgt.test(i.name)&&e.push(PR(n,i.name,"profile.json"),PR(n,i.name,MB),PR(n,i.name,FB));return e}function dgt(t){let e=t.kind==="user"?hM(t.root):t.kind==="project"?Rie(t.root):zj(t.root);mbe(e)||(Ofn(e.root,{recursive:!0,mode:448}),FC(PR(e.root,".init.lock"),()=>{if(mbe(e))return;let n=pgt(e).find(gH);if(n!==void 0)throw new Error(`legacy scoped state exists at ${n}; crtr was updated and \`crtr sys daemon restart\` converts local state`);fgt(e,i=>{QBe(i,e.kind),e.kind!=="provider"&&lgt(i,e.kind,e.root)})}))}function c8(t){let e=Rfn.get(t.path);if(e!==void 0)return e;gH(t.path)||dgt(t);let n=new Nfn(t.path);n.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON;");let i=RVr(n);if(i===0)throw n.close(),new Error(`scoped SQL store is uninitialized: ${t.path}; crtr was updated and \`crtr sys daemon restart\` converts local state`);if(i>1)throw n.close(),new Error(`scoped SQL store ${t.path} uses unsupported schema version ${i}`);if(i!==1)throw n.close(),new Error(`scoped SQL store ${t.path} requires an explicit conversion`);return ugt(t.path),Rfn.set(t.path,n),n}function fgt(t,e){if(gH(t.path))throw new Error(`scoped SQL store already exists: ${t.path}`);if(Ofn(t.root,{recursive:!0,mode:448}),!PVr(t.root).isDirectory())throw new Error(`scoped SQL root is not a directory: ${t.root}`);agt(t.root,448),DVr(t.path,"",{mode:384});let n=new Nfn(t.path);try{n.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; BEGIN IMMEDIATE;"),e(n),n.exec("COMMIT")}catch(i){try{n.exec("ROLLBACK")}catch{}throw i}finally{ugt(t.path),n.close()}}function hbe(t,e){let n=c8(t);if(n.isTransaction)return e(n);n.exec("BEGIN IMMEDIATE");try{let i=e(n);return n.exec("COMMIT"),ugt(t.path),i}catch(i){try{n.exec("ROLLBACK")}catch{}throw i}}function NVr(t){return hM(t)}function OVr(t,e){return{profileId:t.id,manifest:{schema_version:1,name:t.name,projects:e,home:t.home,paused_at:t.paused_at,...t.default_kind===null?{}:{default_kind:t.default_kind},...Object.keys(JSON.parse(t.metadata_json)).length===0?{}:{metadata:JSON.parse(t.metadata_json)},created_at:t.created_at,last_used_at:t.last_used_at}}}function MVr(t,e){let n=t.prepare("SELECT id, name, created_at, last_used_at, paused_at, home, default_kind, metadata_json FROM profiles WHERE id=?").get(e);if(!n)return null;let i=t.prepare("SELECT path, memory FROM profile_projects WHERE profile_id=? ORDER BY position").all(e);return OVr(n,i)}function Mfn(t){let e=c8(NVr(t));return e.prepare("SELECT id FROM profiles ORDER BY rowid").all().map(({id:i})=>MVr(e,i)).filter(Boolean)}var Bfn=/^[a-z0-9]+(?:-[a-z0-9]+)*-[0-9a-f]{8}$/,UVr="root-00000000";function $fn(){return hgt(GP(),kie)}function jVr(t){if(!Bfn.test(t))throw o8(`invalid profile id: ${t}`,{received:t,next:"Profile ids look like <slug>-<8-hex-chars> (as printed by `crtr profile new`). Pass an exact id or a profile name, not a raw path."})}function WVr(t){let e=$fn(),n=mgt(e),i=Ffn(e)?Lfn(e):n,s=Ffn(t)?Lfn(t):mgt(i,BVr(n,mgt(t)));if(s!==i&&!s.startsWith(i+$Vr))throw o8(`profile path escapes the profiles root: ${t}`)}function ggt(t){jVr(t);let e=hgt($fn(),t);return WVr(e),e}function Ufn(t){return hgt(ggt(t),"memory")}function QVr(t,e){let n=typeof e.home=="string"&&e.home!==""?e.home:null;return{...e,home:t===UVr?n:n??e.projects[0]?.path??null,paused_at:typeof e.paused_at=="string"&&e.paused_at!==""?e.paused_at:null}}function qVr(){return{entries:Mfn(GP()).map(({profileId:t,manifest:e})=>({profileId:t,manifest:QVr(t,e)})),unreadableIds:[]}}function qBe(){return qVr().entries}function GVr(t){let e=qBe(),n=VVr(e,t);return n?{kind:"resolved",entry:n}:{kind:"absent"}}function VVr(t,e){if(Bfn.test(e)){let i=t.find(s=>s.profileId===e);if(i!==void 0)return i}let n=t.filter(i=>i.manifest.name===e);if(n.length===1)return n[0];if(n.length>1){let i=n.map(s=>s.profileId);throw afn(`profile name "${e}" matches ${i.length} profiles: ${i.join(", ")}`,{received:e,candidates:i,next:`Re-run with one exact profile id: ${i.join(", ")}.`})}return null}function zVr(t,e){let n=t.map(i=>`${i.profileId} (${i.manifest.name})`);return Hht(`profile not found: ${e}`,{received:e,available:n,next:n.length>0?`Re-run with one of the profiles on this host: ${n.join(", ")} \u2014 or create one with \`crtr profile new --name <name>\`.`:"No profiles exist on this host yet \u2014 create one with `crtr profile new --name <name>`."})}function Nie(t){let e=GVr(t);if(e.kind==="resolved")return e.entry;throw zVr(qBe(),t)}var YVr="content",jfn=new Map;function XVr(t,e){return`${t}\0${e??""}`}function GP(){return Qfn(Wfn(),i8)}function ZVr(t,e){if(!HVr(t)||Pie(t)===Pie(e))return!1;try{return JVr(t).isDirectory()}catch{return!1}}function ezr(t=process.cwd()){return Gfn(t)[0]??null}function tzr(t,e){let n=[],i=Pie(Wfn()),s=qfn(t);for(;;){let a=Qfn(s,i8);if(ZVr(a,e)&&n.push(a),Pie(s)===i)return n;let u=KVr(s);if(u===s)return n;s=u}}function Gfn(t=process.cwd(),e=Smt()||null){return nzr(t,e).roots}function nzr(t,e){let n=qfn(t),i=XVr(n,e),s=jfn.get(i);if(s!==void 0)return s;let a=GP(),u=[{dir:n,memory:null}];if(e!==null&&e!=="")try{let{manifest:x}=Nie(e);for(let k of x.projects)u.push({dir:k.path,memory:k.memory})}catch{}let p=new Set,f=[],_=new Map;for(let x of u)for(let k of tzr(x.dir,a))p.has(k)||(p.add(k),f.push(k)),x.memory!==null&&!_.has(k)&&_.set(k,x.memory);let m=f.map(x=>({root:x,memory:_.get(x)??YVr})),b={roots:f,annotated:m};return jfn.set(i,b),b}function Vfn(t){return ezr(t)}function l8(t){return t==="builtin"?null:t==="user"?GP():Vfn()}function _gt(t){let e=l8(t);if(!e)throw o8(`no ${t} scope available \u2014 run \`crtr init\` here or use --scope user`);return e}import{join as wgt}from"node:path";import{join as Szr}from"node:path";import{request as rzr}from"node:http";import{request as izr}from"node:https";import{homedir as szr}from"node:os";import{join as Jfn}from"node:path";var Mh=class extends Error{status;code;details;constructor(e,n,i,s){super(i),this.name="ApiError",this.status=e,this.code=n,s!==void 0&&(this.details=s)}};function ygt(t){if(typeof t!="object"||t===null)return!1;let e=t.error;if(typeof e!="object"||e===null)return!1;let{code:n,message:i}=e;return typeof n=="string"&&typeof i=="string"}var Wo={healthz:()=>"/healthz",status:()=>"/v1/status",daemonRestart:()=>"/v1/daemon/restart",daemonMigrate:()=>"/v1/daemon/migrate",daemonAdmit:()=>"/v1/daemon/admit",nodes:()=>"/v1/nodes",reviveAll:()=>"/v1/nodes/revive-all",node:t=>`/v1/nodes/${t}`,nodeOutcome:t=>`/v1/nodes/${t}/outcome`,nodeOutcomeDelivery:t=>`/v1/nodes/${t}/outcome-delivery`,nodeSnapshot:t=>`/v1/nodes/${t}/snapshot`,nodeSubject:t=>`/v1/nodes/${t}/subject`,nodeSession:t=>`/v1/nodes/${t}/session`,nodeChatInventory:t=>`/v1/nodes/${t}/chat-inventory`,prospectiveChatInventory:()=>"/v1/prospective-chat-inventory",nodeTranscript:t=>`/v1/nodes/${t}/transcript`,nodeContext:t=>`/v1/nodes/${t}/context`,nodeArtifacts:t=>`/v1/nodes/${t}/artifacts`,nodeReports:t=>`/v1/nodes/${t}/reports`,nodeResult:t=>`/v1/nodes/${t}/result`,nodeJobs:t=>`/v1/nodes/${t}/jobs`,nodeJob:(t,e)=>`/v1/nodes/${t}/jobs/${e}`,nodeMessages:t=>`/v1/nodes/${t}/messages`,nodeInterrupt:t=>`/v1/nodes/${t}/interrupt`,nodeFork:t=>`/v1/nodes/${t}/fork`,nodeRevive:t=>`/v1/nodes/${t}/revive`,nodeRelaunchRoot:t=>`/v1/nodes/${t}/relaunch-root`,nodeBrokerSessionBound:t=>`/v1/nodes/${t}/broker/session-bound`,nodeBrokerSettle:t=>`/v1/nodes/${t}/broker/settle`,nodeBrokerParkComplete:t=>`/v1/nodes/${t}/broker/park-complete`,nodeBrokerParkActivity:t=>`/v1/nodes/${t}/broker/park-activity`,nodeMailClaim:t=>`/v1/nodes/${t}/mail/claim`,nodeMailAcknowledge:t=>`/v1/nodes/${t}/mail/acknowledge`,nodeBrokerModel:t=>`/v1/nodes/${t}/broker/model`,nodeBrokerExtensionState:t=>`/v1/nodes/${t}/broker/extension-state`,nodeBrokerGeneratedName:t=>`/v1/nodes/${t}/broker/generated-name`,nodeBrokerPersonaAck:t=>`/v1/nodes/${t}/broker/persona-ack`,brokerTurn:t=>`/v1/broker/${t}/turn`,brokerProviderRetry:t=>`/v1/broker/${t}/provider-retry`,brokerFault:t=>`/v1/broker/${t}/fault`,brokerRecovery:t=>`/v1/broker/${t}/recovery`,nodeFault:t=>`/v1/nodes/${t}/fault`,nodeClose:t=>`/v1/nodes/${t}/close`,nodeRecycle:t=>`/v1/nodes/${t}/recycle`,nodeDemote:t=>`/v1/nodes/${t}/demote`,nodePromote:t=>`/v1/nodes/${t}/promote`,nodeYield:t=>`/v1/nodes/${t}/yield`,nodeWait:t=>`/v1/nodes/${t}/wait`,nodeConfig:t=>`/v1/nodes/${t}/config`,nodeWorktreeClose:t=>`/v1/nodes/${t}/worktree/close`,nodeWorktreeAbandon:t=>`/v1/nodes/${t}/worktree/abandon`,quarantinedWorktrees:()=>"/v1/worktrees/quarantined",nodeAttach:t=>`/v1/nodes/${t}/attach`,focuses:()=>"/v1/focuses",focusByNode:()=>"/v1/focuses/by-node",focusByPane:()=>"/v1/focuses/by-pane",focus:t=>`/v1/focuses/${t}`,nodeSubscriptions:t=>`/v1/nodes/${t}/subscriptions`,nodeSubscription:(t,e)=>`/v1/nodes/${t}/subscriptions/${e}`,crons:()=>"/v1/crons",cron:t=>`/v1/crons/${t}`,cronPause:t=>`/v1/crons/${t}/pause`,cronResume:t=>`/v1/crons/${t}/resume`,cronRun:t=>`/v1/crons/${t}/run`,cronsPoke:()=>"/v1/crons/poke",canvasAttention:()=>"/v1/canvas/attention",canvasAttentionCounts:()=>"/v1/canvas/attention/counts",canvasHistorySearch:()=>"/v1/canvas/history/search",canvasHistoryGrep:()=>"/v1/canvas/history/grep",canvasHistoryRead:()=>"/v1/canvas/history/read",canvasHistoryStats:()=>"/v1/canvas/history/stats",canvasSnapshot:()=>"/v1/canvas/snapshot",canvasRoster:()=>"/v1/canvas/roster",canvasPrune:()=>"/v1/canvas/prune",humanReviews:()=>"/v1/human/reviews",humanReview:t=>`/v1/human/reviews/${t}`,humanReviewSubmit:t=>`/v1/human/reviews/${t}/submit`,humanReviewCancel:t=>`/v1/human/reviews/${t}/cancel`,humanReviewDocument:t=>`/v1/human/reviews/${t}/document`,humanReviewComments:t=>`/v1/human/reviews/${t}/comments`,humanReviewCommentEvents:t=>`/v1/human/reviews/${t}/comment-events`,humanReviewCommentRanges:t=>`/v1/human/reviews/${t}/comment-ranges`,humanComment:t=>`/v1/human/comments/${t}`,humanCommentEdit:t=>`/v1/human/comments/${t}/edit`,humanCommentResolve:t=>`/v1/human/comments/${t}/resolve`,humanCommentReopen:t=>`/v1/human/comments/${t}/reopen`,humanCommentDelete:t=>`/v1/human/comments/${t}/delete`,humanInbox:()=>"/v1/human/inbox",humanInboxTicket:t=>`/v1/human/inbox/${t}`,humanInboxRespond:t=>`/v1/human/inbox/${t}/respond`,humanInboxProgress:t=>`/v1/human/inbox/${t}/progress`,humanInboxResponse:t=>`/v1/human/inbox/${t}/response`,humanInboxCancel:t=>`/v1/human/inbox/${t}/cancel`,humanInboxFeedbackResolve:(t,e)=>`/v1/human/inbox/${t}/feedback-comments/${e}/resolve`,humanRequests:()=>"/v1/human/requests",humanRequest:t=>`/v1/human/requests/${t}`,humanRequestReplace:t=>`/v1/human/requests/${t}/replace`,humanRequestRespond:t=>`/v1/human/requests/${t}/respond`,humanRequestDismiss:t=>`/v1/human/requests/${t}/dismiss`,humanRequestCancel:t=>`/v1/human/requests/${t}/cancel`,profiles:()=>"/v1/profiles",profile:t=>`/v1/profiles/${t}`,profilePause:t=>`/v1/profiles/${t}/pause`,profileResume:t=>`/v1/profiles/${t}/resume`,profileMetadata:t=>`/v1/profiles/${t}/metadata`,modelAuths:()=>"/v1/model-auth",modelAuth:t=>`/v1/model-auth/${t}`,filePeek:()=>"/v1/files/peek",memoryResolve:()=>"/v1/memory/resolve"};function GBe(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&!/[\\/\0]/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}function zfn(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&/^[A-Za-z0-9._~-]+$/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}function Hfn(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&!/[\\/\0\s?#%]/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}var ozr=".crouter",azr="crtrd.sock";function czr(){let t=Fj(),e=t!==void 0&&t!==""?t:Jfn(szr(),ozr,"canvas");return Jfn(e,azr)}var lzr=3e4,uzr=1e4,pzr=200;async function VBe({windowMs:t,probe:e,initialError:n,pollIntervalMs:i=pzr,retry:s=()=>!0,now:a=Date.now,sleep:u=dzr}){let p=a()+t,f=n;for(;;){let _=p-a();if(_<=0)throw f??new Error("crtrd availability window expired without a probe failure");try{await e(_);return}catch(b){if(f=b,!s(b))throw b}let m=p-a();if(m<=0)throw f;await u(Math.min(i,m))}}var LB=class t{socketPath;baseUrl;headers;autostart;timeoutMs;onColdSocket;coldStartDiagnostic;coldStartPollWindowMs;coldStartAttempted=!1;constructor(e){let n=e.socketPath!==void 0&&e.socketPath!=="",i=e.baseUrl!==void 0&&e.baseUrl!=="";if(n===i)throw new TypeError("CrtrClient requires exactly one of socketPath | baseUrl");n&&(this.socketPath=e.socketPath),i&&(this.baseUrl=new URL(e.baseUrl)),this.headers={...e.headers},this.autostart=e.autostart??n,this.timeoutMs=e.timeoutMs??lzr,e.onColdSocket!==void 0&&(this.onColdSocket=e.onColdSocket),e.coldStartDiagnostic!==void 0&&(this.coldStartDiagnostic=e.coldStartDiagnostic),this.coldStartPollWindowMs=e.coldStartPollWindowMs??uzr}static forLocalSocket(e){return new t({socketPath:czr(),autostart:!0,...e})}healthz(){return this.request("GET",Wo.healthz())}async probeHealthz(e){let n=await this.transport("GET",Wo.healthz(),void 0,void 0,e);if(n.status===503)try{let i=JSON.parse(n.text);if(typeof i.startup_blocked=="string")return i}catch{}return Kfn(n)}status(){return this.request("GET",Wo.status())}restartDaemon(){return this.request("POST",Wo.daemonRestart())}admitDaemon(){return this.request("POST",Wo.daemonAdmit())}migrateState(e){return this.request("POST",Wo.daemonMigrate(),e)}createNode(e){return this.request("POST",Wo.nodes(),e)}listNodes(e){return this.request("GET",nA(Wo.nodes(),e))}getNode(e){return this.request("GET",Wo.node(this.nodePath(e)))}getNodeOutcome(e,{waitSeconds:n}={}){if(n!==void 0&&(!Number.isInteger(n)||n<0||n>25))throw new RangeError("waitSeconds must be an integer between 0 and 25");return this.request("GET",nA(Wo.nodeOutcome(this.nodePath(e)),{wait:n}))}registerOutcomeDelivery(e,n){return this.request("PUT",Wo.nodeOutcomeDelivery(this.nodePath(e)),n)}getOutcomeDelivery(e){return this.request("GET",Wo.nodeOutcomeDelivery(this.nodePath(e)))}async disarmOutcomeDelivery(e){await this.request("DELETE",Wo.nodeOutcomeDelivery(this.nodePath(e)))}listBashJobs(e){return this.request("GET",Wo.nodeJobs(this.nodePath(e)))}stopBashJob(e,n){return this.request("DELETE",Wo.nodeJob(this.nodePath(e),this.jobPath(n)))}sendMessage(e,n){return this.request("POST",Wo.nodeMessages(this.nodePath(e)),n)}interruptNode(e){return this.request("POST",Wo.nodeInterrupt(this.nodePath(e)),{})}pushReport(e,n){return this.request("POST",Wo.nodeReports(this.nodePath(e)),n)}submitResult(e,n){return this.request("POST",Wo.nodeResult(this.nodePath(e)),n)}forkNode(e){return this.request("POST",Wo.nodeFork(this.nodePath(e)),{})}reviveNode(e,n){return this.request("POST",Wo.nodeRevive(this.nodePath(e)),n??{})}relaunchRoot(e){return this.request("POST",Wo.nodeRelaunchRoot(this.nodePath(e)),{})}bindBrokerSession(e,n){return this.request("POST",Wo.nodeBrokerSessionBound(this.nodePath(e)),n)}settleBroker(e,n){return this.request("POST",Wo.nodeBrokerSettle(this.nodePath(e)),n)}completeBrokerPark(e,n){return this.request("POST",Wo.nodeBrokerParkComplete(this.nodePath(e)),n)}recordBrokerParkActivity(e,n){return this.request("POST",Wo.nodeBrokerParkActivity(this.nodePath(e)),n)}claimNodeMail(e,n){return this.request("POST",Wo.nodeMailClaim(this.nodePath(e)),n)}acknowledgeNodeMail(e,n){return this.request("POST",Wo.nodeMailAcknowledge(this.nodePath(e)),n)}recordBrokerTurn(e,n){return this.request("POST",Wo.brokerTurn(this.nodePath(e)),n)}mutateBrokerProviderRetry(e,n){return this.request("POST",Wo.brokerProviderRetry(this.nodePath(e)),n)}mutateBrokerFault(e,n){return this.request("POST",Wo.brokerFault(this.nodePath(e)),n)}getBrokerRecovery(e,n){return this.request("GET",`${Wo.brokerRecovery(this.nodePath(e))}?expected_execution_id=${encodeURIComponent(n)}`)}recordNodeFault(e,n){return this.request("POST",Wo.nodeFault(this.nodePath(e)),n)}clearNodeFault(e,n={}){let i=new URLSearchParams;n.link!==void 0&&i.set("link",n.link),n.preserve_episode!==void 0&&i.set("preserve_episode",String(n.preserve_episode));let s=i.size===0?"":`?${i.toString()}`;return this.request("DELETE",`${Wo.nodeFault(this.nodePath(e))}${s}`)}commitBrokerModel(e,n){return this.request("POST",Wo.nodeBrokerModel(this.nodePath(e)),n)}brokerExtensionState(e){return this.request("GET",Wo.nodeBrokerExtensionState(this.nodePath(e)))}commitBrokerGeneratedName(e,n){return this.request("POST",Wo.nodeBrokerGeneratedName(this.nodePath(e)),n)}commitBrokerPersonaAck(e,n){return this.request("POST",Wo.nodeBrokerPersonaAck(this.nodePath(e)),n)}closeNode(e,n){return this.request("POST",Wo.nodeClose(this.nodePath(e)),n??{})}recycleNode(e){return this.request("POST",Wo.nodeRecycle(this.nodePath(e)),{})}demoteNode(e){return this.request("POST",Wo.nodeDemote(this.nodePath(e)),{})}promoteNode(e,n){return this.request("POST",Wo.nodePromote(this.nodePath(e)),n)}yieldNode(e,n){return this.request("POST",Wo.nodeYield(this.nodePath(e)),n)}waitNode(e,n){return this.request("POST",Wo.nodeWait(this.nodePath(e)),n)}patchConfig(e,n){return this.request("PATCH",Wo.nodeConfig(this.nodePath(e)),n)}closeWorktree(e){return this.request("POST",Wo.nodeWorktreeClose(this.nodePath(e)),{})}abandonWorktree(e,n){return this.request("POST",Wo.nodeWorktreeAbandon(this.nodePath(e)),n)}listQuarantinedWorktrees(){return this.request("GET",Wo.quarantinedWorktrees())}subscribe(e,n){return this.request("POST",Wo.nodeSubscriptions(this.nodePath(e)),n)}listFocuses(){return this.request("GET",Wo.focuses())}focusOf(e){return this.request("GET",nA(Wo.focusByNode(),{node_id:e}))}focusByPane(e){return this.request("GET",nA(Wo.focusByPane(),{pane:e}))}registerFocus(e){return this.request("POST",Wo.focuses(),e)}async setFocusPane(e,n){await this.request("PATCH",Wo.focus(e),n)}async closeFocus(e){await this.request("DELETE",Wo.focus(e))}async unsubscribe(e,n){await this.request("DELETE",Wo.nodeSubscription(this.nodePath(e),this.nodePath(n)))}armCron(e){return this.request("POST",Wo.crons(),e)}listCrons(e){return this.request("GET",nA(Wo.crons(),e))}showCron(e,n){return this.request("GET",nA(Wo.cron(this.cronPath(e)),n))}pauseCron(e,n){return this.request("POST",nA(Wo.cronPause(this.cronPath(e)),n),{})}resumeCron(e,n){return this.request("POST",nA(Wo.cronResume(this.cronPath(e)),n),{})}runCron(e,n){return this.request("POST",nA(Wo.cronRun(this.cronPath(e)),n),{})}async cancelCron(e,n){await this.request("DELETE",nA(Wo.cron(this.cronPath(e)),n))}pokeCrons(){return this.request("POST",Wo.cronsPoke(),{})}ensureAttach(e,n){return this.request("POST",Wo.nodeAttach(this.nodePath(e)),n??{})}getReports(e,n){return this.request("GET",nA(Wo.nodeReports(this.nodePath(e)),n))}getTranscript(e,n){return this.request("GET",nA(Wo.nodeTranscript(this.nodePath(e)),n))}getSnapshot(e){return this.request("GET",Wo.nodeSnapshot(this.nodePath(e)))}nodeSubject(e){return this.request("GET",Wo.nodeSubject(this.nodePath(e)))}getNodeMessages(e,n){return this.request("GET",nA(Wo.nodeMessages(this.nodePath(e)),n))}getSession(e){return this.request("GET",Wo.nodeSession(this.nodePath(e)))}getChatInventory(e){return this.request("GET",Wo.nodeChatInventory(this.nodePath(e)))}getProspectiveChatInventory(e){return this.request("GET",nA(Wo.prospectiveChatInventory(),e))}getArtifacts(e,n){return this.request("GET",nA(Wo.nodeArtifacts(this.nodePath(e)),n))}getContext(e){return this.request("GET",Wo.nodeContext(this.nodePath(e)))}peekFile(e){return this.request("GET",nA(Wo.filePeek(),{path:e}))}resolveMemoryDoc(e,n){return this.request("GET",nA(Wo.memoryResolve(),{name:e,node:n}))}ensureProfile(e,n){return this.request("PUT",Wo.profile(e),n??{})}listProfiles(){return this.request("GET",Wo.profiles())}getProfile(e){return this.request("GET",Wo.profile(e))}pauseProfile(e){return this.request("POST",Wo.profilePause(e),{})}resumeProfile(e){return this.request("POST",Wo.profileResume(e),{})}updateProfileMetadata(e,n){return this.request("PATCH",Wo.profileMetadata(e),n)}deleteProfile(e,n){return this.request("DELETE",Wo.profile(e),n)}listModelAuth(){return this.request("GET",Wo.modelAuths())}installCredential(e,n){return this.request("PUT",Wo.modelAuth(e),n)}removeCredential(e){return this.request("DELETE",Wo.modelAuth(e))}createReview(e){return this.request("POST",Wo.humanReviews(),e)}listReviews(e){return this.request("GET",nA(Wo.humanReviews(),e))}getReview(e){return this.request("GET",Wo.humanReview(this.reviewPath(e)))}submitReview(e){return this.request("POST",Wo.humanReviewSubmit(this.reviewPath(e)),{})}cancelReview(e,n={}){return this.request("POST",Wo.humanReviewCancel(this.reviewPath(e)),n)}getReviewDocumentBase(e){return this.request("GET",Wo.humanReviewDocument(this.reviewPath(e)))}createReviewComment(e,n){let i=e===void 0?"self":this.reviewPath(e);return this.request("POST",Wo.humanReviewComments(i),n)}listReviewComments(e,n){let i=e===void 0?"self":this.reviewPath(e);return this.request("GET",nA(Wo.humanReviewComments(i),n))}readReviewCommentEvents(e,n){return this.request("GET",nA(Wo.humanReviewCommentEvents(this.reviewPath(e)),n))}updateReviewCommentRanges(e,n){return this.request("POST",Wo.humanReviewCommentRanges(this.reviewPath(e)),n)}getReviewComment(e){return this.request("GET",Wo.humanComment(this.commentPath(e)))}editReviewComment(e,n){return this.request("POST",Wo.humanCommentEdit(this.commentPath(e)),n)}resolveReviewComment(e,n={}){return this.request("POST",Wo.humanCommentResolve(this.commentPath(e)),n)}reopenReviewComment(e,n={}){return this.request("POST",Wo.humanCommentReopen(this.commentPath(e)),n)}deleteReviewComment(e,n={}){return this.request("POST",Wo.humanCommentDelete(this.commentPath(e)),n)}listHumanInbox(){return this.request("GET",Wo.humanInbox())}getHumanInboxPage(e){return this.request("GET",Wo.humanInboxTicket(this.ticketId(e)))}getInboxHistory(e){if(e===void 0)return this.request("GET",Wo.humanInbox()+"/history");if(typeof e!="string"||e==="")throw new TypeError(`invalid node id: ${JSON.stringify(e)}`);return this.request("GET",nA(Wo.humanInbox()+"/history",{node_id:e}))}respondHumanInboxPage(e,n){return this.request("POST",Wo.humanInboxRespond(this.ticketId(e)),n)}postInboxProgress(e,n){return this.request("POST",Wo.humanInboxProgress(this.ticketId(e)),{responses:n})}getInboxResponse(e){return this.request("GET",Wo.humanInboxResponse(this.ticketId(e)))}cancelHumanInboxTicket(e,n){return this.request("POST",Wo.humanInboxCancel(this.ticketId(e)),n??{})}createHumanRequest(e){return this.request("POST",Wo.humanRequests(),e)}getHumanRequest(e){return this.request("GET",Wo.humanRequest(this.requestPath(e)))}replaceHumanRequest(e,n){return this.request("POST",Wo.humanRequestReplace(this.requestPath(e)),n)}respondHumanRequest(e,n){return this.request("POST",Wo.humanRequestRespond(this.requestPath(e)),n)}dismissHumanRequest(e,n={}){return this.request("POST",Wo.humanRequestDismiss(this.requestPath(e)),n)}cancelHumanRequest(e,n={}){return this.request("POST",Wo.humanRequestCancel(this.requestPath(e)),n)}resolvePageFeedbackComment(e,n,i){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n))throw new TypeError(`invalid feedback comment id: ${JSON.stringify(n)}`);return this.request("POST",Wo.humanInboxFeedbackResolve(this.ticketId(e),n),{node_id:i})}async dashboard(e){let n=e?.under!==void 0?{under:e.under}:void 0,[i,s]=await Promise.all([this.listNodes(n),this.status()]);return{nodes:i,counts:s.node_counts,generated_at:new Date().toISOString()}}attention(){return this.request("GET",Wo.canvasAttention())}attentionCounts(e){let n={node_ids:e};return this.request("POST",Wo.canvasAttentionCounts(),n)}historySearch(e){return this.request("POST",Wo.canvasHistorySearch(),e)}historyGrep(e){return this.request("POST",Wo.canvasHistoryGrep(),e)}historyRead(e){return this.request("GET",nA(Wo.canvasHistoryRead(),e))}historyStats(e){return this.request("POST",Wo.canvasHistoryStats(),e)}canvasSnapshot(){return this.request("GET",Wo.canvasSnapshot())}canvasRoster(){return this.request("GET",Wo.canvasRoster())}prune(e){return this.request("POST",Wo.canvasPrune(),e)}async request(e,n,i){return Kfn(await this.send(e,n,i))}async send(e,n,i,s){try{return await this.transport(e,n,i,s)}catch(a){if(this.isColdSocketError(a))try{return await this.handleColdSocket(a),await this.transport(e,n,i,s)}catch(u){throw gbe(u)}if(this.isInterruptedSocketError(a))return await this.rideOutInterruptedRequest(e,n,i,s);throw gbe(a)}}nodePath(e){if(!GBe(e))throw new Mh(400,"invalid_node_id",`invalid node id: ${JSON.stringify(e)}`);return e}jobPath(e){if(!zfn(e))throw new Mh(400,"invalid_job_id",`invalid background job id: ${JSON.stringify(e)}`);return e}cronPath(e){if(!Hfn(e))throw new Mh(400,"invalid_cron_id",`invalid cron id: ${JSON.stringify(e)}`);return e}requestPath(e){if(!GBe(e))throw new Mh(400,"invalid_request_id",`invalid request id: ${JSON.stringify(e)}`);return e}ticketId(e){if(!/^[a-f0-9]{64}$/.test(e))throw new TypeError(`invalid inbox ticket id: ${JSON.stringify(e)}`);return e}reviewPath(e){if(!GBe(e))throw new Mh(400,"invalid_review_id",`invalid review id: ${JSON.stringify(e)}`);return e}commentPath(e){if(!/^[a-f0-9]{32}$/.test(e))throw new Mh(400,"invalid_comment_id",`invalid comment id: ${JSON.stringify(e)}`);return e}transport(e,n,i,s,a=this.timeoutMs){let p=this.baseUrl?.protocol==="https:"?izr:rzr,f=i===void 0?void 0:JSON.stringify(i),_={accept:"application/json",...this.headers,...s};f!==void 0&&(_["content-type"]="application/json",_["content-length"]=String(Buffer.byteLength(f)));let m={method:e,path:n,headers:_,timeout:a};return this.socketPath!==void 0?m.socketPath=this.socketPath:this.baseUrl!==void 0&&(m.protocol=this.baseUrl.protocol,m.hostname=this.baseUrl.hostname,this.baseUrl.port!==""&&(m.port=this.baseUrl.port)),new Promise((b,x)=>{let k=p(m,I=>{let C=[];I.on("data",P=>C.push(P)),I.on("end",()=>{let P={};for(let[R,F]of Object.entries(I.headers))F!==void 0&&(P[R]=Array.isArray(F)?F.join(", "):F);b({status:I.statusCode??0,text:Buffer.concat(C).toString("utf8"),headers:P})}),I.on("error",x)});k.on("error",x),k.on("timeout",()=>{k.destroy(Object.assign(new Error("request timed out"),{code:"ETIMEDOUT"}))}),f!==void 0&&k.write(f),k.end()})}isColdSocketError(e){if(this.socketPath===void 0)return!1;let n=e?.code;return n==="ECONNREFUSED"||n==="ENOENT"||n==="ENOTSOCK"}isInterruptedSocketError(e){if(this.socketPath===void 0)return!1;let n=e?.code;return n==="ECONNRESET"||n==="EPIPE"}async rideOutInterruptedRequest(e,n,i,s){try{await this.awaitAvailability()}catch(a){throw gbe(a)}if(e!=="GET"&&e!=="HEAD")throw new Mh(503,"daemon_request_interrupted",`crtrd connection ended before this ${e} response; the request may or may not have been applied.`);try{return await this.transport(e,n,i,s)}catch(a){throw gbe(a)}}async awaitAvailability(e){await VBe({windowMs:this.coldStartPollWindowMs,initialError:e,probe:async n=>{let i=await this.transport("GET",Wo.healthz(),void 0,void 0,n);if(!(i.status>=200&&i.status<300)){try{if(typeof JSON.parse(i.text).startup_blocked=="string")return}catch{}throw new Mh(i.status,"daemon_health_unavailable",`crtrd health check returned HTTP ${i.status}: ${i.text.slice(0,500)}`)}}})}async handleColdSocket(e){let n=this.autostart&&this.onColdSocket!==void 0&&!this.coldStartAttempted;n&&(this.coldStartAttempted=!0,await this.onColdSocket());try{await this.awaitAvailability(e)}catch(i){if(n){let s=fzr(this.coldStartDiagnostic);if(s!==void 0){let a=gbe(i);throw new Mh(a.status,a.code,`${a.message}
|
|
1732
|
+
CREATE TABLE provider_revision (singleton INTEGER PRIMARY KEY CHECK(singleton=1), revision INTEGER NOT NULL);`;function QBe(t,e){if(t.exec(e==="provider"?kVr:TVr),e!=="provider"){let n=e==="user"?"user":"project";t.prepare("INSERT INTO scope_owners(owner_key, kind, root, profile_id) VALUES (?, ?, ?, NULL)").run(n,e,"")}else t.prepare("INSERT INTO provider_revision(singleton, revision) VALUES (1, 0)").run();t.exec("PRAGMA user_version = 1")}var Rfn=new Map,cgt=/^[a-z0-9]+(?:-[a-z0-9]+)*-[0-9a-f]{8}$/;function lgt(t,e,n){t.prepare("UPDATE scope_owners SET root=? WHERE owner_key=?").run(n,e)}function RVr(t){return Number(t.prepare("PRAGMA user_version").get().user_version)}function ugt(t){gH(t)&&agt(t,384);for(let e of["-wal","-shm"])gH(`${t}${e}`)&&agt(`${t}${e}`,384)}function mbe(t){return gH(t.path)}function pgt(t){if(t.kind==="project")return[PR(t.root,FB)];if(t.kind==="provider")return[PR(t.root,"anthropic-subscriptions.json"),PR(t.root,"openai-codex-subscriptions.json"),PR(t.root,"provider-rotation.json")];let e=[PR(t.root,MB),PR(t.root,FB),PR(t.root,"profile-defaults.json")],n=PR(t.root,kie);if(gH(n))for(let i of IVr(n,{withFileTypes:!0}))i.isDirectory()&&cgt.test(i.name)&&e.push(PR(n,i.name,"profile.json"),PR(n,i.name,MB),PR(n,i.name,FB));return e}function dgt(t){let e=t.kind==="user"?hM(t.root):t.kind==="project"?Rie(t.root):zj(t.root);mbe(e)||(Ofn(e.root,{recursive:!0,mode:448}),FC(PR(e.root,".init.lock"),()=>{if(mbe(e))return;let n=pgt(e).find(gH);if(n!==void 0)throw new Error(`legacy scoped state exists at ${n}; crtr was updated and \`crtr sys daemon restart\` converts local state`);fgt(e,i=>{QBe(i,e.kind),e.kind!=="provider"&&lgt(i,e.kind,e.root)})}))}function c8(t){let e=Rfn.get(t.path);if(e!==void 0)return e;gH(t.path)||dgt(t);let n=new Nfn(t.path);n.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON;");let i=RVr(n);if(i===0)throw n.close(),new Error(`scoped SQL store is uninitialized: ${t.path}; crtr was updated and \`crtr sys daemon restart\` converts local state`);if(i>1)throw n.close(),new Error(`scoped SQL store ${t.path} uses unsupported schema version ${i}`);if(i!==1)throw n.close(),new Error(`scoped SQL store ${t.path} requires an explicit conversion`);return ugt(t.path),Rfn.set(t.path,n),n}function fgt(t,e){if(gH(t.path))throw new Error(`scoped SQL store already exists: ${t.path}`);if(Ofn(t.root,{recursive:!0,mode:448}),!PVr(t.root).isDirectory())throw new Error(`scoped SQL root is not a directory: ${t.root}`);agt(t.root,448),DVr(t.path,"",{mode:384});let n=new Nfn(t.path);try{n.exec("PRAGMA busy_timeout = 5000; PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; BEGIN IMMEDIATE;"),e(n),n.exec("COMMIT")}catch(i){try{n.exec("ROLLBACK")}catch{}throw i}finally{ugt(t.path),n.close()}}function hbe(t,e){let n=c8(t);if(n.isTransaction)return e(n);n.exec("BEGIN IMMEDIATE");try{let i=e(n);return n.exec("COMMIT"),ugt(t.path),i}catch(i){try{n.exec("ROLLBACK")}catch{}throw i}}function NVr(t){return hM(t)}function OVr(t,e){return{profileId:t.id,manifest:{schema_version:1,name:t.name,projects:e,home:t.home,paused_at:t.paused_at,...t.default_kind===null?{}:{default_kind:t.default_kind},...Object.keys(JSON.parse(t.metadata_json)).length===0?{}:{metadata:JSON.parse(t.metadata_json)},created_at:t.created_at,last_used_at:t.last_used_at}}}function MVr(t,e){let n=t.prepare("SELECT id, name, created_at, last_used_at, paused_at, home, default_kind, metadata_json FROM profiles WHERE id=?").get(e);if(!n)return null;let i=t.prepare("SELECT path, memory FROM profile_projects WHERE profile_id=? ORDER BY position").all(e);return OVr(n,i)}function Mfn(t){let e=c8(NVr(t));return e.prepare("SELECT id FROM profiles ORDER BY rowid").all().map(({id:i})=>MVr(e,i)).filter(Boolean)}var Bfn=/^[a-z0-9]+(?:-[a-z0-9]+)*-[0-9a-f]{8}$/,UVr="root-00000000";function $fn(){return hgt(GP(),kie)}function jVr(t){if(!Bfn.test(t))throw o8(`invalid profile id: ${t}`,{received:t,next:"Profile ids look like <slug>-<8-hex-chars> (as printed by `crtr profile new`). Pass an exact id or a profile name, not a raw path."})}function WVr(t){let e=$fn(),n=mgt(e),i=Ffn(e)?Lfn(e):n,s=Ffn(t)?Lfn(t):mgt(i,BVr(n,mgt(t)));if(s!==i&&!s.startsWith(i+$Vr))throw o8(`profile path escapes the profiles root: ${t}`)}function ggt(t){jVr(t);let e=hgt($fn(),t);return WVr(e),e}function Ufn(t){return hgt(ggt(t),"memory")}function QVr(t,e){let n=typeof e.home=="string"&&e.home!==""?e.home:null;return{...e,home:t===UVr?n:n??e.projects[0]?.path??null,paused_at:typeof e.paused_at=="string"&&e.paused_at!==""?e.paused_at:null}}function qVr(){return{entries:Mfn(GP()).map(({profileId:t,manifest:e})=>({profileId:t,manifest:QVr(t,e)})),unreadableIds:[]}}function qBe(){return qVr().entries}function GVr(t){let e=qBe(),n=VVr(e,t);return n?{kind:"resolved",entry:n}:{kind:"absent"}}function VVr(t,e){if(Bfn.test(e)){let i=t.find(s=>s.profileId===e);if(i!==void 0)return i}let n=t.filter(i=>i.manifest.name===e);if(n.length===1)return n[0];if(n.length>1){let i=n.map(s=>s.profileId);throw afn(`profile name "${e}" matches ${i.length} profiles: ${i.join(", ")}`,{received:e,candidates:i,next:`Re-run with one exact profile id: ${i.join(", ")}.`})}return null}function zVr(t,e){let n=t.map(i=>`${i.profileId} (${i.manifest.name})`);return Hht(`profile not found: ${e}`,{received:e,available:n,next:n.length>0?`Re-run with one of the profiles on this host: ${n.join(", ")} \u2014 or create one with \`crtr profile new --name <name>\`.`:"No profiles exist on this host yet \u2014 create one with `crtr profile new --name <name>`."})}function Nie(t){let e=GVr(t);if(e.kind==="resolved")return e.entry;throw zVr(qBe(),t)}var YVr="content",jfn=new Map;function XVr(t,e){return`${t}\0${e??""}`}function GP(){return Qfn(Wfn(),i8)}function ZVr(t,e){if(!HVr(t)||Pie(t)===Pie(e))return!1;try{return JVr(t).isDirectory()}catch{return!1}}function ezr(t=process.cwd()){return Gfn(t)[0]??null}function tzr(t,e){let n=[],i=Pie(Wfn()),s=qfn(t);for(;;){let a=Qfn(s,i8);if(ZVr(a,e)&&n.push(a),Pie(s)===i)return n;let u=KVr(s);if(u===s)return n;s=u}}function Gfn(t=process.cwd(),e=Smt()||null){return nzr(t,e).roots}function nzr(t,e){let n=qfn(t),i=XVr(n,e),s=jfn.get(i);if(s!==void 0)return s;let a=GP(),u=[{dir:n,memory:null}];if(e!==null&&e!=="")try{let{manifest:x}=Nie(e);for(let k of x.projects)u.push({dir:k.path,memory:k.memory})}catch{}let p=new Set,f=[],_=new Map;for(let x of u)for(let k of tzr(x.dir,a))p.has(k)||(p.add(k),f.push(k)),x.memory!==null&&!_.has(k)&&_.set(k,x.memory);let m=f.map(x=>({root:x,memory:_.get(x)??YVr})),b={roots:f,annotated:m};return jfn.set(i,b),b}function Vfn(t){return ezr(t)}function l8(t){return t==="builtin"?null:t==="user"?GP():Vfn()}function _gt(t){let e=l8(t);if(!e)throw o8(`no ${t} scope available \u2014 run \`crtr init\` here or use --scope user`);return e}import{join as wgt}from"node:path";import{join as Szr}from"node:path";import{request as rzr}from"node:http";import{request as izr}from"node:https";import{homedir as szr}from"node:os";import{join as Jfn}from"node:path";var Mh=class extends Error{status;code;details;constructor(e,n,i,s){super(i),this.name="ApiError",this.status=e,this.code=n,s!==void 0&&(this.details=s)}};function ygt(t){if(typeof t!="object"||t===null)return!1;let e=t.error;if(typeof e!="object"||e===null)return!1;let{code:n,message:i}=e;return typeof n=="string"&&typeof i=="string"}var Wo={healthz:()=>"/healthz",status:()=>"/v1/status",daemonRestart:()=>"/v1/daemon/restart",daemonMigrate:()=>"/v1/daemon/migrate",daemonAdmit:()=>"/v1/daemon/admit",nodes:()=>"/v1/nodes",reviveAll:()=>"/v1/nodes/revive-all",node:t=>`/v1/nodes/${t}`,nodeOutcome:t=>`/v1/nodes/${t}/outcome`,nodeOutcomeDelivery:t=>`/v1/nodes/${t}/outcome-delivery`,nodeSnapshot:t=>`/v1/nodes/${t}/snapshot`,nodeSubject:t=>`/v1/nodes/${t}/subject`,nodeSession:t=>`/v1/nodes/${t}/session`,nodeChatInventory:t=>`/v1/nodes/${t}/chat-inventory`,prospectiveChatInventory:()=>"/v1/prospective-chat-inventory",nodeTranscript:t=>`/v1/nodes/${t}/transcript`,nodeContext:t=>`/v1/nodes/${t}/context`,nodeArtifacts:t=>`/v1/nodes/${t}/artifacts`,nodeReports:t=>`/v1/nodes/${t}/reports`,nodeResult:t=>`/v1/nodes/${t}/result`,nodeJobs:t=>`/v1/nodes/${t}/jobs`,nodeJob:(t,e)=>`/v1/nodes/${t}/jobs/${e}`,nodeMessages:t=>`/v1/nodes/${t}/messages`,nodeInterrupt:t=>`/v1/nodes/${t}/interrupt`,nodeFork:t=>`/v1/nodes/${t}/fork`,nodeRevive:t=>`/v1/nodes/${t}/revive`,nodeRelaunchRoot:t=>`/v1/nodes/${t}/relaunch-root`,nodeBrokerSessionBound:t=>`/v1/nodes/${t}/broker/session-bound`,nodeBrokerSettle:t=>`/v1/nodes/${t}/broker/settle`,nodeBrokerParkComplete:t=>`/v1/nodes/${t}/broker/park-complete`,nodeBrokerParkActivity:t=>`/v1/nodes/${t}/broker/park-activity`,nodeMailClaim:t=>`/v1/nodes/${t}/mail/claim`,nodeMailAcknowledge:t=>`/v1/nodes/${t}/mail/acknowledge`,nodeBrokerModel:t=>`/v1/nodes/${t}/broker/model`,nodeBrokerExtensionState:t=>`/v1/nodes/${t}/broker/extension-state`,nodeBrokerGeneratedName:t=>`/v1/nodes/${t}/broker/generated-name`,nodeBrokerPersonaAck:t=>`/v1/nodes/${t}/broker/persona-ack`,brokerTurn:t=>`/v1/broker/${t}/turn`,brokerProviderRetry:t=>`/v1/broker/${t}/provider-retry`,brokerFault:t=>`/v1/broker/${t}/fault`,brokerRecovery:t=>`/v1/broker/${t}/recovery`,nodeFault:t=>`/v1/nodes/${t}/fault`,nodeClose:t=>`/v1/nodes/${t}/close`,nodeRecycle:t=>`/v1/nodes/${t}/recycle`,nodeDemote:t=>`/v1/nodes/${t}/demote`,nodePromote:t=>`/v1/nodes/${t}/promote`,nodeYield:t=>`/v1/nodes/${t}/yield`,nodeWait:t=>`/v1/nodes/${t}/wait`,nodeConfig:t=>`/v1/nodes/${t}/config`,nodeWorktreeClose:t=>`/v1/nodes/${t}/worktree/close`,nodeWorktreeAbandon:t=>`/v1/nodes/${t}/worktree/abandon`,quarantinedWorktrees:()=>"/v1/worktrees/quarantined",nodeAttach:t=>`/v1/nodes/${t}/attach`,focuses:()=>"/v1/focuses",focusByNode:()=>"/v1/focuses/by-node",focusByPane:()=>"/v1/focuses/by-pane",focus:t=>`/v1/focuses/${t}`,nodeSubscriptions:t=>`/v1/nodes/${t}/subscriptions`,nodeSubscription:(t,e)=>`/v1/nodes/${t}/subscriptions/${e}`,crons:()=>"/v1/crons",cron:t=>`/v1/crons/${t}`,cronPause:t=>`/v1/crons/${t}/pause`,cronResume:t=>`/v1/crons/${t}/resume`,cronRun:t=>`/v1/crons/${t}/run`,cronsPoke:()=>"/v1/crons/poke",canvasAttention:()=>"/v1/canvas/attention",canvasAttentionCounts:()=>"/v1/canvas/attention/counts",canvasHistorySearch:()=>"/v1/canvas/history/search",canvasHistoryGrep:()=>"/v1/canvas/history/grep",canvasHistoryRead:()=>"/v1/canvas/history/read",canvasHistoryStats:()=>"/v1/canvas/history/stats",canvasSnapshot:()=>"/v1/canvas/snapshot",canvasRoster:()=>"/v1/canvas/roster",canvasPrune:()=>"/v1/canvas/prune",humanReviews:()=>"/v1/human/reviews",humanReview:t=>`/v1/human/reviews/${t}`,humanReviewSubmit:t=>`/v1/human/reviews/${t}/submit`,humanReviewCancel:t=>`/v1/human/reviews/${t}/cancel`,humanReviewDocument:t=>`/v1/human/reviews/${t}/document`,humanReviewComments:t=>`/v1/human/reviews/${t}/comments`,humanReviewCommentEvents:t=>`/v1/human/reviews/${t}/comment-events`,humanReviewCommentRanges:t=>`/v1/human/reviews/${t}/comment-ranges`,humanComment:t=>`/v1/human/comments/${t}`,humanCommentEdit:t=>`/v1/human/comments/${t}/edit`,humanCommentResolve:t=>`/v1/human/comments/${t}/resolve`,humanCommentReopen:t=>`/v1/human/comments/${t}/reopen`,humanCommentDelete:t=>`/v1/human/comments/${t}/delete`,humanInbox:()=>"/v1/human/inbox",humanInboxTicket:t=>`/v1/human/inbox/${t}`,humanInboxRespond:t=>`/v1/human/inbox/${t}/respond`,humanInboxProgress:t=>`/v1/human/inbox/${t}/progress`,humanInboxResponse:t=>`/v1/human/inbox/${t}/response`,humanInboxCancel:t=>`/v1/human/inbox/${t}/cancel`,humanInboxFeedbackResolve:(t,e)=>`/v1/human/inbox/${t}/feedback-comments/${e}/resolve`,humanRequests:()=>"/v1/human/requests",humanRequest:t=>`/v1/human/requests/${t}`,humanRequestReplace:t=>`/v1/human/requests/${t}/replace`,humanRequestRespond:t=>`/v1/human/requests/${t}/respond`,humanRequestDismiss:t=>`/v1/human/requests/${t}/dismiss`,humanRequestCancel:t=>`/v1/human/requests/${t}/cancel`,profiles:()=>"/v1/profiles",profile:t=>`/v1/profiles/${t}`,profilePause:t=>`/v1/profiles/${t}/pause`,profileResume:t=>`/v1/profiles/${t}/resume`,profileMetadata:t=>`/v1/profiles/${t}/metadata`,modelAuths:()=>"/v1/model-auth",modelAuth:t=>`/v1/model-auth/${t}`,filePeek:()=>"/v1/files/peek",memoryResolve:()=>"/v1/memory/resolve"};function GBe(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&!/[\\/\0]/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}function zfn(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&/^[A-Za-z0-9._~-]+$/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}function Hfn(t){return typeof t=="string"&&t!==""&&t!=="."&&t!==".."&&!/[\\/\0\s?#%]/u.test(t)&&Buffer.byteLength(t,"utf8")<=128}var ozr=".crouter",azr="crtrd.sock";function czr(){let t=Fj(),e=t!==void 0&&t!==""?t:Jfn(szr(),ozr,"canvas");return Jfn(e,azr)}var lzr=3e4,uzr=1e4,pzr=200;async function VBe({windowMs:t,probe:e,initialError:n,pollIntervalMs:i=pzr,retry:s=()=>!0,now:a=Date.now,sleep:u=dzr}){let p=a()+t,f=n;for(;;){let _=p-a();if(_<=0)throw f??new Error("crtrd availability window expired without a probe failure");try{await e(_);return}catch(b){if(f=b,!s(b))throw b}let m=p-a();if(m<=0)throw f;await u(Math.min(i,m))}}var LB=class t{socketPath;baseUrl;headers;autostart;timeoutMs;onColdSocket;coldStartDiagnostic;coldStartPollWindowMs;coldStartAttempted=!1;constructor(e){let n=e.socketPath!==void 0&&e.socketPath!=="",i=e.baseUrl!==void 0&&e.baseUrl!=="";if(n===i)throw new TypeError("CrtrClient requires exactly one of socketPath | baseUrl");n&&(this.socketPath=e.socketPath),i&&(this.baseUrl=new URL(e.baseUrl)),this.headers={...e.headers},this.autostart=e.autostart??n,this.timeoutMs=e.timeoutMs??lzr,e.onColdSocket!==void 0&&(this.onColdSocket=e.onColdSocket),e.coldStartDiagnostic!==void 0&&(this.coldStartDiagnostic=e.coldStartDiagnostic),this.coldStartPollWindowMs=e.coldStartPollWindowMs??uzr}static forLocalSocket(e){return new t({socketPath:czr(),autostart:!0,...e})}healthz(){return this.request("GET",Wo.healthz())}async probeHealthz(e){let n=await this.transport("GET",Wo.healthz(),void 0,void 0,e);if(n.status===503)try{let i=JSON.parse(n.text);if(typeof i.startup_blocked=="string")return i}catch{}return Kfn(n)}status(){return this.request("GET",Wo.status())}restartDaemon(){return this.request("POST",Wo.daemonRestart())}admitDaemon(){return this.request("POST",Wo.daemonAdmit())}migrateState(e){return this.request("POST",Wo.daemonMigrate(),e)}createNode(e){return this.request("POST",Wo.nodes(),e)}listNodes(e){return this.request("GET",nA(Wo.nodes(),e))}getNode(e){return this.request("GET",Wo.node(this.nodePath(e)))}getNodeOutcome(e,{waitSeconds:n}={}){if(n!==void 0&&(!Number.isInteger(n)||n<0||n>25))throw new RangeError("waitSeconds must be an integer between 0 and 25");return this.request("GET",nA(Wo.nodeOutcome(this.nodePath(e)),{wait:n}),void 0,(n??0)*1e3+this.timeoutMs)}registerOutcomeDelivery(e,n){return this.request("PUT",Wo.nodeOutcomeDelivery(this.nodePath(e)),n)}getOutcomeDelivery(e){return this.request("GET",Wo.nodeOutcomeDelivery(this.nodePath(e)))}async disarmOutcomeDelivery(e){await this.request("DELETE",Wo.nodeOutcomeDelivery(this.nodePath(e)))}listBashJobs(e){return this.request("GET",Wo.nodeJobs(this.nodePath(e)))}stopBashJob(e,n){return this.request("DELETE",Wo.nodeJob(this.nodePath(e),this.jobPath(n)))}sendMessage(e,n){return this.request("POST",Wo.nodeMessages(this.nodePath(e)),n)}interruptNode(e){return this.request("POST",Wo.nodeInterrupt(this.nodePath(e)),{})}pushReport(e,n){return this.request("POST",Wo.nodeReports(this.nodePath(e)),n)}submitResult(e,n){return this.request("POST",Wo.nodeResult(this.nodePath(e)),n)}forkNode(e){return this.request("POST",Wo.nodeFork(this.nodePath(e)),{})}reviveNode(e,n){return this.request("POST",Wo.nodeRevive(this.nodePath(e)),n??{})}relaunchRoot(e){return this.request("POST",Wo.nodeRelaunchRoot(this.nodePath(e)),{})}bindBrokerSession(e,n){return this.request("POST",Wo.nodeBrokerSessionBound(this.nodePath(e)),n)}settleBroker(e,n){return this.request("POST",Wo.nodeBrokerSettle(this.nodePath(e)),n)}completeBrokerPark(e,n){return this.request("POST",Wo.nodeBrokerParkComplete(this.nodePath(e)),n)}recordBrokerParkActivity(e,n){return this.request("POST",Wo.nodeBrokerParkActivity(this.nodePath(e)),n)}claimNodeMail(e,n){return this.request("POST",Wo.nodeMailClaim(this.nodePath(e)),n)}acknowledgeNodeMail(e,n){return this.request("POST",Wo.nodeMailAcknowledge(this.nodePath(e)),n)}recordBrokerTurn(e,n){return this.request("POST",Wo.brokerTurn(this.nodePath(e)),n)}mutateBrokerProviderRetry(e,n){return this.request("POST",Wo.brokerProviderRetry(this.nodePath(e)),n)}mutateBrokerFault(e,n){return this.request("POST",Wo.brokerFault(this.nodePath(e)),n)}getBrokerRecovery(e,n){return this.request("GET",`${Wo.brokerRecovery(this.nodePath(e))}?expected_execution_id=${encodeURIComponent(n)}`)}recordNodeFault(e,n){return this.request("POST",Wo.nodeFault(this.nodePath(e)),n)}clearNodeFault(e,n={}){let i=new URLSearchParams;n.link!==void 0&&i.set("link",n.link),n.preserve_episode!==void 0&&i.set("preserve_episode",String(n.preserve_episode));let s=i.size===0?"":`?${i.toString()}`;return this.request("DELETE",`${Wo.nodeFault(this.nodePath(e))}${s}`)}commitBrokerModel(e,n){return this.request("POST",Wo.nodeBrokerModel(this.nodePath(e)),n)}brokerExtensionState(e){return this.request("GET",Wo.nodeBrokerExtensionState(this.nodePath(e)))}commitBrokerGeneratedName(e,n){return this.request("POST",Wo.nodeBrokerGeneratedName(this.nodePath(e)),n)}commitBrokerPersonaAck(e,n){return this.request("POST",Wo.nodeBrokerPersonaAck(this.nodePath(e)),n)}closeNode(e,n){return this.request("POST",Wo.nodeClose(this.nodePath(e)),n??{})}recycleNode(e){return this.request("POST",Wo.nodeRecycle(this.nodePath(e)),{})}demoteNode(e){return this.request("POST",Wo.nodeDemote(this.nodePath(e)),{})}promoteNode(e,n){return this.request("POST",Wo.nodePromote(this.nodePath(e)),n)}yieldNode(e,n){return this.request("POST",Wo.nodeYield(this.nodePath(e)),n)}waitNode(e,n){return this.request("POST",Wo.nodeWait(this.nodePath(e)),n)}patchConfig(e,n){return this.request("PATCH",Wo.nodeConfig(this.nodePath(e)),n)}closeWorktree(e){return this.request("POST",Wo.nodeWorktreeClose(this.nodePath(e)),{})}abandonWorktree(e,n){return this.request("POST",Wo.nodeWorktreeAbandon(this.nodePath(e)),n)}listQuarantinedWorktrees(){return this.request("GET",Wo.quarantinedWorktrees())}subscribe(e,n){return this.request("POST",Wo.nodeSubscriptions(this.nodePath(e)),n)}listFocuses(){return this.request("GET",Wo.focuses())}focusOf(e){return this.request("GET",nA(Wo.focusByNode(),{node_id:e}))}focusByPane(e){return this.request("GET",nA(Wo.focusByPane(),{pane:e}))}registerFocus(e){return this.request("POST",Wo.focuses(),e)}async setFocusPane(e,n){await this.request("PATCH",Wo.focus(e),n)}async closeFocus(e){await this.request("DELETE",Wo.focus(e))}async unsubscribe(e,n){await this.request("DELETE",Wo.nodeSubscription(this.nodePath(e),this.nodePath(n)))}armCron(e){return this.request("POST",Wo.crons(),e)}listCrons(e){return this.request("GET",nA(Wo.crons(),e))}showCron(e,n){return this.request("GET",nA(Wo.cron(this.cronPath(e)),n))}pauseCron(e,n){return this.request("POST",nA(Wo.cronPause(this.cronPath(e)),n),{})}resumeCron(e,n){return this.request("POST",nA(Wo.cronResume(this.cronPath(e)),n),{})}runCron(e,n){return this.request("POST",nA(Wo.cronRun(this.cronPath(e)),n),{})}async cancelCron(e,n){await this.request("DELETE",nA(Wo.cron(this.cronPath(e)),n))}pokeCrons(){return this.request("POST",Wo.cronsPoke(),{})}ensureAttach(e,n){return this.request("POST",Wo.nodeAttach(this.nodePath(e)),n??{})}getReports(e,n){return this.request("GET",nA(Wo.nodeReports(this.nodePath(e)),n))}getTranscript(e,n){return this.request("GET",nA(Wo.nodeTranscript(this.nodePath(e)),n))}getSnapshot(e){return this.request("GET",Wo.nodeSnapshot(this.nodePath(e)))}nodeSubject(e){return this.request("GET",Wo.nodeSubject(this.nodePath(e)))}getNodeMessages(e,n){return this.request("GET",nA(Wo.nodeMessages(this.nodePath(e)),n))}getSession(e){return this.request("GET",Wo.nodeSession(this.nodePath(e)))}getChatInventory(e){return this.request("GET",Wo.nodeChatInventory(this.nodePath(e)))}getProspectiveChatInventory(e){return this.request("GET",nA(Wo.prospectiveChatInventory(),e))}getArtifacts(e,n){return this.request("GET",nA(Wo.nodeArtifacts(this.nodePath(e)),n))}getContext(e){return this.request("GET",Wo.nodeContext(this.nodePath(e)))}peekFile(e){return this.request("GET",nA(Wo.filePeek(),{path:e}))}resolveMemoryDoc(e,n){return this.request("GET",nA(Wo.memoryResolve(),{name:e,node:n}))}ensureProfile(e,n){return this.request("PUT",Wo.profile(e),n??{})}listProfiles(){return this.request("GET",Wo.profiles())}getProfile(e){return this.request("GET",Wo.profile(e))}pauseProfile(e){return this.request("POST",Wo.profilePause(e),{})}resumeProfile(e){return this.request("POST",Wo.profileResume(e),{})}updateProfileMetadata(e,n){return this.request("PATCH",Wo.profileMetadata(e),n)}deleteProfile(e,n){return this.request("DELETE",Wo.profile(e),n)}listModelAuth(){return this.request("GET",Wo.modelAuths())}installCredential(e,n){return this.request("PUT",Wo.modelAuth(e),n)}removeCredential(e){return this.request("DELETE",Wo.modelAuth(e))}createReview(e){return this.request("POST",Wo.humanReviews(),e)}listReviews(e){return this.request("GET",nA(Wo.humanReviews(),e))}getReview(e){return this.request("GET",Wo.humanReview(this.reviewPath(e)))}submitReview(e){return this.request("POST",Wo.humanReviewSubmit(this.reviewPath(e)),{})}cancelReview(e,n={}){return this.request("POST",Wo.humanReviewCancel(this.reviewPath(e)),n)}getReviewDocumentBase(e){return this.request("GET",Wo.humanReviewDocument(this.reviewPath(e)))}createReviewComment(e,n){let i=e===void 0?"self":this.reviewPath(e);return this.request("POST",Wo.humanReviewComments(i),n)}listReviewComments(e,n){let i=e===void 0?"self":this.reviewPath(e);return this.request("GET",nA(Wo.humanReviewComments(i),n))}readReviewCommentEvents(e,n){return this.request("GET",nA(Wo.humanReviewCommentEvents(this.reviewPath(e)),n))}updateReviewCommentRanges(e,n){return this.request("POST",Wo.humanReviewCommentRanges(this.reviewPath(e)),n)}getReviewComment(e){return this.request("GET",Wo.humanComment(this.commentPath(e)))}editReviewComment(e,n){return this.request("POST",Wo.humanCommentEdit(this.commentPath(e)),n)}resolveReviewComment(e,n={}){return this.request("POST",Wo.humanCommentResolve(this.commentPath(e)),n)}reopenReviewComment(e,n={}){return this.request("POST",Wo.humanCommentReopen(this.commentPath(e)),n)}deleteReviewComment(e,n={}){return this.request("POST",Wo.humanCommentDelete(this.commentPath(e)),n)}listHumanInbox(){return this.request("GET",Wo.humanInbox())}getHumanInboxPage(e){return this.request("GET",Wo.humanInboxTicket(this.ticketId(e)))}getInboxHistory(e){if(e===void 0)return this.request("GET",Wo.humanInbox()+"/history");if(typeof e!="string"||e==="")throw new TypeError(`invalid node id: ${JSON.stringify(e)}`);return this.request("GET",nA(Wo.humanInbox()+"/history",{node_id:e}))}respondHumanInboxPage(e,n){return this.request("POST",Wo.humanInboxRespond(this.ticketId(e)),n)}postInboxProgress(e,n){return this.request("POST",Wo.humanInboxProgress(this.ticketId(e)),{responses:n})}getInboxResponse(e){return this.request("GET",Wo.humanInboxResponse(this.ticketId(e)))}cancelHumanInboxTicket(e,n){return this.request("POST",Wo.humanInboxCancel(this.ticketId(e)),n??{})}createHumanRequest(e){return this.request("POST",Wo.humanRequests(),e)}getHumanRequest(e){return this.request("GET",Wo.humanRequest(this.requestPath(e)))}replaceHumanRequest(e,n){return this.request("POST",Wo.humanRequestReplace(this.requestPath(e)),n)}respondHumanRequest(e,n){return this.request("POST",Wo.humanRequestRespond(this.requestPath(e)),n)}dismissHumanRequest(e,n={}){return this.request("POST",Wo.humanRequestDismiss(this.requestPath(e)),n)}cancelHumanRequest(e,n={}){return this.request("POST",Wo.humanRequestCancel(this.requestPath(e)),n)}resolvePageFeedbackComment(e,n,i){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n))throw new TypeError(`invalid feedback comment id: ${JSON.stringify(n)}`);return this.request("POST",Wo.humanInboxFeedbackResolve(this.ticketId(e),n),{node_id:i})}async dashboard(e){let n=e?.under!==void 0?{under:e.under}:void 0,[i,s]=await Promise.all([this.listNodes(n),this.status()]);return{nodes:i,counts:s.node_counts,generated_at:new Date().toISOString()}}attention(){return this.request("GET",Wo.canvasAttention())}attentionCounts(e){let n={node_ids:e};return this.request("POST",Wo.canvasAttentionCounts(),n)}historySearch(e){return this.request("POST",Wo.canvasHistorySearch(),e)}historyGrep(e){return this.request("POST",Wo.canvasHistoryGrep(),e)}historyRead(e){return this.request("GET",nA(Wo.canvasHistoryRead(),e))}historyStats(e){return this.request("POST",Wo.canvasHistoryStats(),e)}canvasSnapshot(){return this.request("GET",Wo.canvasSnapshot())}canvasRoster(){return this.request("GET",Wo.canvasRoster())}prune(e){return this.request("POST",Wo.canvasPrune(),e)}async request(e,n,i,s){return Kfn(await this.send(e,n,i,void 0,s))}async send(e,n,i,s,a){try{return await this.transport(e,n,i,s,a)}catch(u){if(this.isColdSocketError(u))try{return await this.handleColdSocket(u),await this.transport(e,n,i,s,a)}catch(p){throw gbe(p)}if(this.isInterruptedSocketError(u))return await this.rideOutInterruptedRequest(e,n,i,s,a);throw gbe(u)}}nodePath(e){if(!GBe(e))throw new Mh(400,"invalid_node_id",`invalid node id: ${JSON.stringify(e)}`);return e}jobPath(e){if(!zfn(e))throw new Mh(400,"invalid_job_id",`invalid background job id: ${JSON.stringify(e)}`);return e}cronPath(e){if(!Hfn(e))throw new Mh(400,"invalid_cron_id",`invalid cron id: ${JSON.stringify(e)}`);return e}requestPath(e){if(!GBe(e))throw new Mh(400,"invalid_request_id",`invalid request id: ${JSON.stringify(e)}`);return e}ticketId(e){if(!/^[a-f0-9]{64}$/.test(e))throw new TypeError(`invalid inbox ticket id: ${JSON.stringify(e)}`);return e}reviewPath(e){if(!GBe(e))throw new Mh(400,"invalid_review_id",`invalid review id: ${JSON.stringify(e)}`);return e}commentPath(e){if(!/^[a-f0-9]{32}$/.test(e))throw new Mh(400,"invalid_comment_id",`invalid comment id: ${JSON.stringify(e)}`);return e}transport(e,n,i,s,a=this.timeoutMs){let p=this.baseUrl?.protocol==="https:"?izr:rzr,f=i===void 0?void 0:JSON.stringify(i),_={accept:"application/json",...this.headers,...s};f!==void 0&&(_["content-type"]="application/json",_["content-length"]=String(Buffer.byteLength(f)));let m={method:e,path:n,headers:_,timeout:a};return this.socketPath!==void 0?m.socketPath=this.socketPath:this.baseUrl!==void 0&&(m.protocol=this.baseUrl.protocol,m.hostname=this.baseUrl.hostname,this.baseUrl.port!==""&&(m.port=this.baseUrl.port)),new Promise((b,x)=>{let k=p(m,I=>{let C=[];I.on("data",P=>C.push(P)),I.on("end",()=>{let P={};for(let[R,F]of Object.entries(I.headers))F!==void 0&&(P[R]=Array.isArray(F)?F.join(", "):F);b({status:I.statusCode??0,text:Buffer.concat(C).toString("utf8"),headers:P})}),I.on("error",x)});k.on("error",x),k.on("timeout",()=>{k.destroy(Object.assign(new Error("request timed out"),{code:"ETIMEDOUT"}))}),f!==void 0&&k.write(f),k.end()})}isColdSocketError(e){if(this.socketPath===void 0)return!1;let n=e?.code;return n==="ECONNREFUSED"||n==="ENOENT"||n==="ENOTSOCK"}isInterruptedSocketError(e){if(this.socketPath===void 0)return!1;let n=e?.code;return n==="ECONNRESET"||n==="EPIPE"}async rideOutInterruptedRequest(e,n,i,s,a){try{await this.awaitAvailability()}catch(u){throw gbe(u)}if(e!=="GET"&&e!=="HEAD")throw new Mh(503,"daemon_request_interrupted",`crtrd connection ended before this ${e} response; the request may or may not have been applied.`);try{return await this.transport(e,n,i,s,a)}catch(u){throw gbe(u)}}async awaitAvailability(e){await VBe({windowMs:this.coldStartPollWindowMs,initialError:e,probe:async n=>{let i=await this.transport("GET",Wo.healthz(),void 0,void 0,n);if(!(i.status>=200&&i.status<300)){try{if(typeof JSON.parse(i.text).startup_blocked=="string")return}catch{}throw new Mh(i.status,"daemon_health_unavailable",`crtrd health check returned HTTP ${i.status}: ${i.text.slice(0,500)}`)}}})}async handleColdSocket(e){let n=this.autostart&&this.onColdSocket!==void 0&&!this.coldStartAttempted;n&&(this.coldStartAttempted=!0,await this.onColdSocket());try{await this.awaitAvailability(e)}catch(i){if(n){let s=fzr(this.coldStartDiagnostic);if(s!==void 0){let a=gbe(i);throw new Mh(a.status,a.code,`${a.message}
|
|
1733
1733
|
${s}`)}}throw i}}};function nA(t,e){if(e===void 0)return t;let n=new URLSearchParams;for(let[s,a]of Object.entries(e))a!=null&&n.set(s,String(a));let i=n.toString();return i===""?t:`${t}?${i}`}function Kfn(t){let e=t.status>=200&&t.status<300,n=t.text.trim(),i;if(n!=="")try{i=JSON.parse(n)}catch{if(e)return;throw new Mh(t.status,"invalid_response",t.text.slice(0,500))}if(e)return i;throw ygt(i)?new Mh(t.status,i.error.code,i.error.message,i.error.details):new Mh(t.status,"internal",`request failed with status ${t.status}`)}function gbe(t){if(t instanceof Mh)return t;let e=t?.code,n=t instanceof Error?t.message:String(t);return e==="ECONNREFUSED"||e==="ENOENT"||e==="ENOTSOCK"?new Mh(503,"daemon_unavailable",`crtrd is not reachable: ${n}`):e==="ETIMEDOUT"?new Mh(504,"request_timeout",`crtrd request timed out: ${n}`):new Mh(503,"transport_error",n)}function dzr(t){return new Promise(e=>setTimeout(e,t))}function fzr(t){if(t!==void 0)try{return t()}catch{return}}var mzr="crtr-context",hzr="crtr-situational-context",gzr="crtr-context-nudge",_zr="crtr-review-boundary";var Yfn="Provider credentials were just updated (a new login landed). Your previous turn stopped on a provider authentication failure. Continue from where you left off and retry the work that failed.",Xfn="The network connection is back online. Your previous turn stopped on a connection error (the network was down). Continue from where you left off and retry the work that failed.",Zfn="Your previous turn stopped on a provider fault. Continue from where you left off and retry the work that failed.";function yzr(t){switch(t){case gzr:return"context-nudge";case mzr:return"bearings";case _zr:return"review-boundary";case hzr:return"situational";default:return}}var zBe=/\s+([A-Za-z_:][A-Za-z0-9_:.-]*)\s*=\s*(?:"([^"]*)"|'([^']*)')/gy;function Agt(t){return t.replace(/&(?:amp|lt|gt|quot|apos);/g,e=>({"&":"&","<":"<",">":">",""":'"',"'":"'"})[e])}function bgt(t){let e={};zBe.lastIndex=0;let n=0;for(;n<t.length&&!/^\s*$/.test(t.slice(n));){zBe.lastIndex=n;let i=zBe.exec(t);if(i===null)return null;let[,s,a,u]=i;if(s===void 0||Object.hasOwn(e,s))return null;e[s]=Agt(a??u??""),n=zBe.lastIndex}return e}function vgt(t){return typeof t.content=="string"?t.content:Array.isArray(t.content)?t.content.filter(e=>typeof e=="object"&&e!==null&&e.type==="text"&&typeof e.text=="string").map(e=>e.text).join(""):""}function bzr(t){let e=[],n=/<from\b([^>]*)>([\s\S]*?)<\/from>/g;for(let i of t.matchAll(n)){let s=bgt(i[1]??"");if(s?.id===void 0)continue;let a=[],u=i[2]??"",p=/<entry\b([^>]*)>([\s\S]*?)<\/entry>/g;for(let _ of u.matchAll(p)){let m=bgt(_[1]??"");if(m?.kind===void 0)continue;let b=m.disposition==="human-answer"||m.disposition==="human-canceled"?m.disposition:"report";a.push({kind:m.kind,disposition:b,body:Agt(_[2]??""),...m.ref===void 0?{}:{ref:m.ref}})}let f=s.updates===void 0?Number.NaN:Number(s.updates);e.push({id:s.id,updates:Number.isFinite(f)?f:a.length,finished:s.finished==="true"||a.some(_=>_.kind==="final"),entries:a})}return e}function Azr(t,e,n,i){return{kind:t,facts:e,body:n,senders:i}}function vzr(t){let e=/^<runtime\b([^>]*)>/.exec(t);if(e===null||!t.endsWith("</runtime>"))return null;let n=bgt(e[1]??"");if(n?.kind===void 0)return null;let i=t.slice(e[0].length,-10),{kind:s,...a}=n,u=Object.freeze(a),p=s.includes(":")?Agt(i):i;return Azr(s,u,p,s==="inbox"?bzr(p):[])}function HBe(t){let e=vgt(t),n=vzr(e);if(n!==null)return n;if(t.role!=="custom")return null;let i=yzr(t.customType);return i===void 0?null:{kind:i,facts:Object.freeze({}),body:e,senders:[]}}var tNs=256*1024;var Hj=class extends s8{payload;constructor(e,n=IR.USAGE){super(e.error,e.message,n,{...e}),this.name="InputError",this.payload=e}};var xzr={400:"invalid_request",404:"not_found",409:"conflict",422:"unprocessable",503:"daemon_unavailable"};function emn(t,e){if(t.code==="daemon_restarting")return new s8("daemon_restarting",t.message,IR.NETWORK,{next:"crtrd is now on the new generation \u2014 retry the command."});if(t.status===503||t.code==="daemon_unavailable")return new s8("daemon_unavailable",t.message,IR.NETWORK,{next:"Start it with `crtr sys daemon start`, then retry."});let n=t.details,i=n&&typeof n.error=="string"&&typeof n.message=="string"&&typeof n.next=="string"?n:{error:xzr[t.status]??t.code,message:t.message,next:e??(t.status>=500?"This is a crtr bug, not a bad call. Retry; if it persists, report it (the daemon log holds the full cause).":t.status===404?"List nodes with `crtr node inspect list`.":"Inspect the error and adjust the call. See -h for the schema.")};return new Hj(i,wzr(i.error,t.status))}function wzr(t,e){return t==="not_found"||e===404?IR.NOT_FOUND:t==="ambiguous"?IR.AMBIGUOUS:IR.USAGE}function Ezr(t){return Szr(t,ifn,sfn)}function tmn(t){return hH(Ezr(t))}import{join as Czr}from"node:path";var Tzr=2e3;function nmn(t,e){return Czr(t,"tmp",`${e}.swap.lock`)}function rmn(t,e){let n=WBe(nmn(t,e));return n!==null&&n!==process.pid}function imn(t,e){Pfn(nmn(t,e),Tzr)}import{createHash as kzr}from"node:crypto";function xgt(t,e){let n=t.prepare("SELECT kind, root, profile_id FROM scope_owners WHERE owner_key = ?").get(e.key);if(!n)throw new Error(`scoped SQL owner is missing: ${e.key}`);if(n.kind!==e.kind||n.root!==e.root||(e.profileId??null)!==n.profile_id)throw new Error(`scoped SQL owner does not match its root: ${e.key}`)}function Izr(t){return t===void 0?"absent":kzr("sha256").update(t.raw_json).digest("hex")}function Pzr(t,e){return t.prepare("SELECT raw_json FROM scope_settings WHERE owner_key = ?").get(e.key)}function smn(t){let e=c8(t.store);xgt(e,t);let n=Pzr(e,t);return{revision:Izr(n),settings:n===void 0?null:JSON.parse(n.raw_json)}}function JBe(t){return smn(t).settings}function omn(t,e){return hbe(t.store,n=>{xgt(n,t);let i=n.prepare("SELECT raw_json FROM scope_settings WHERE owner_key = ?").get(t.key),s=e(i?JSON.parse(i.raw_json):{});return n.prepare("INSERT INTO scope_settings(owner_key, raw_json) VALUES (?, ?) ON CONFLICT(owner_key) DO UPDATE SET raw_json=excluded.raw_json").run(t.key,JSON.stringify(s.next)),s.value})}function amn(t){let e=c8(t.store);xgt(e,t);let n=e.prepare("SELECT last_self_check, active_canvas FROM scope_bookkeeping WHERE owner_key = ?").get(t.key),i=Object.fromEntries(e.prepare("SELECT name, last_updated FROM scope_marketplaces WHERE owner_key = ?").all(t.key).map(a=>[a.name,a.last_updated===null?{}:{last_updated:a.last_updated}])),s=Object.fromEntries(e.prepare("SELECT name, last_updated, etag, checked_at FROM scope_plugins WHERE owner_key = ?").all(t.key).map(a=>[a.name,{...a.last_updated===null?{}:{last_updated:a.last_updated},...a.etag===null?{}:{etag:a.etag},...a.checked_at===null?{}:{checked_at:a.checked_at}}]));return{marketplaces:i,plugins:s,...n?.last_self_check===null||n===void 0?{}:{last_self_check:n.last_self_check},activeCanvas:n?.active_canvas??null}}function Dzr(t,e){let n=t==="user"?hM(e):void 0,i=n?JBe({store:n,key:"user",kind:"user",root:n.root}):hH(wgt(e,MB));return i&&i.plugins&&typeof i.plugins=="object"?i.plugins:{}}function Rzr(t,e,n){let i=Object.keys(e);return i.every(s=>n.has(s))?[]:i.filter(s=>!n.has(s)&&rmn(t,s))}function _be(t,e){let n=wgt(e,"plugins");if(!tgt(n))return[];let i=Dzr(t,e),s=cmn(t,n,i),a=Rzr(e,i,new Set(s.map(u=>u.name)));if(a.length===0)return s;for(let u of a)imn(e,u);return cmn(t,n,i)}function cmn(t,e,n){let i=[];for(let s of ngt(e)){let a=wgt(e,s),u=tmn(a);if(!u)continue;let p=n[s],f=typeof p?.version=="string"?p.version:u.version;i.push({name:s,scope:t,root:a,manifest:u,enabled:typeof p?.enabled=="boolean"?p.enabled:!0,sourceMarketplace:typeof p?.source_marketplace=="string"?p.source_marketplace:void 0,version:f})}return i}var Xmn=qu(Lgt(),1);import{chmodSync as Jmn,copyFileSync as dHr,existsSync as vH,mkdirSync as Kmn,readFileSync as fHr,readdirSync as mHr,statSync as hHr}from"node:fs";import{dirname as gHr,join as RR,relative as _Hr}from"node:path";var Hmn=qu(Lgt(),1);import{chmodSync as Umn,existsSync as a4e,fsyncSync as jmn,mkdirSync as cHr,openSync as Wmn,readFileSync as Qmn,renameSync as lHr,writeFileSync as qmn,closeSync as Gmn}from"node:fs";import{dirname as Vmn}from"node:path";var zmn={encoding:"utf-8",mode:384},uHr=3e4,pHr=5e3,BB=class{constructor(e,n=!1,i="{}"){this.path=e;this.durable=n;this.initialContent=i}path;durable;initialContent;readUnlocked(){return a4e(this.path)?Qmn(this.path,"utf-8"):void 0}ensureFile(){let e=Vmn(this.path);a4e(e)||cHr(e,{recursive:!0,mode:448}),a4e(this.path)||(qmn(this.path,this.initialContent,zmn),Umn(this.path,384))}async withLockAsync(e){this.ensureFile();let n,i,s=()=>{if(i)throw i};try{n=await Hmn.default.lock(this.path,{realpath:!1,retries:{retries:10,factor:2,minTimeout:100,maxTimeout:1e4,randomize:!0},stale:uHr,update:pHr,onCompromised:m=>{i=m}}),s();let a=a4e(this.path)?Qmn(this.path,"utf-8"):void 0,u=!1,p=m=>{if(u)throw new Error(`locked file was published twice: ${this.path}`);s();let b=`${this.path}.${process.pid}.${Date.now()}.tmp`;if(qmn(b,m,zmn),Umn(b,384),this.durable){let x=Wmn(b,"r");try{jmn(x)}finally{Gmn(x)}}if(lHr(b,this.path),this.durable){let x=Wmn(Vmn(this.path),"r");try{jmn(x)}finally{Gmn(x)}}u=!0},{result:f,next:_}=await e(a,s,p);return s(),_!==void 0&&p(_),s(),f}finally{if(n)try{await n()}catch{}}}};function c4e(t){return JSON.parse(fHr(t,"utf8"))}function yHr(t){return t.some(vH)}function bHr(t,e){let n=RR(t,".legacy-scoped-state");Kmn(n,{recursive:!0,mode:448}),Jmn(n,448);for(let i of e)if(vH(i)&&hHr(i).isFile()){let s=_Hr(t,i);if(s===""||s.startsWith(".."))throw new Error(`legacy state is outside its owning root: ${i}`);let a=RR(n,s);Kmn(gHr(a),{recursive:!0,mode:448}),dHr(i,a),Jmn(a,384)}}function AHr(t,e){let n=RR(t,FB),i=Xmn.default.lockSync(n,{realpath:!1,retries:0,stale:3e4,update:1e4});try{return e()}finally{i()}}function Zmn(t){let e=t.kind==="user"?hM(t.root):t.kind==="project"?Rie(t.root):zj(t.root);if(mbe(e))return;if(t.kind==="provider")throw new Error("provider conversion requires convertLegacyProviderStore() under coordinated shared-agent-dir activation");let n=pgt(e),i=()=>{mbe(e)||(fgt(e,s=>{QBe(s,t.kind);let a=t.kind==="user"?"user":"project";lgt(s,a,e.root),t.kind==="user"?vHr(s,e.root):Bgt(s,a,RR(e.root,FB))}),yHr(n)&&bHr(e.root,n))};t.kind==="project"?AHr(e.root,i):i()}function Ymn(t,e,n){if(!vH(n))return;let i=c4e(n);if(i===null||typeof i!="object"||Array.isArray(i))throw new Error(`legacy config is malformed: ${n}`);t.prepare("INSERT INTO scope_settings(owner_key,raw_json) VALUES(?,?)").run(e,JSON.stringify(i))}function Bgt(t,e,n){if(!vH(n))return;let i=c4e(n);if(i===null||typeof i!="object"||Array.isArray(i))throw new Error(`legacy state is malformed: ${n}`);let s=i;t.prepare("INSERT INTO scope_bookkeeping(owner_key,last_self_check,active_canvas) VALUES(?,?,?)").run(e,s.last_self_check??null,s.activeCanvas??null);let a=t.prepare("INSERT INTO scope_marketplaces(owner_key,name,last_updated) VALUES(?,?,?)");for(let[p,f]of Object.entries(s.marketplaces??{}))a.run(e,p,f.last_updated??null);let u=t.prepare("INSERT INTO scope_plugins(owner_key,name,last_updated,etag,checked_at) VALUES(?,?,?,?,?)");for(let[p,f]of Object.entries(s.plugins??{}))u.run(e,p,f.last_updated??null,f.etag??null,f.checked_at??null)}function vHr(t,e){Ymn(t,"user",RR(e,MB)),Bgt(t,"user",RR(e,FB));let n=RR(e,kie);if(vH(n))for(let s of mHr(n,{withFileTypes:!0})){if(!s.isDirectory()||!cgt.test(s.name))continue;let a=s.name,u=RR(n,a),p=RR(u,"profile.json");if(!vH(p))throw new Error(`legacy profile manifest is missing: ${p}`);let f=c4e(p);if(!f||typeof f!="object"||!Array.isArray(f.projects)||typeof f.name!="string"||typeof f.created_at!="string")throw new Error(`legacy profile manifest is malformed: ${p}`);t.prepare("INSERT INTO profiles(id,name,created_at,last_used_at,paused_at,home,default_kind,metadata_json) VALUES(?,?,?,?,?,?,?,?)").run(a,f.name,f.created_at,f.last_used_at??null,f.paused_at??null,f.home??null,f.default_kind??null,JSON.stringify(f.metadata??{})),t.prepare("INSERT INTO scope_owners(owner_key,kind,root,profile_id) VALUES(?,?,?,?)").run(`profile:${a}`,"profile",u,a);let _=t.prepare("INSERT INTO profile_projects(profile_id,path,position,memory) VALUES(?,?,?,?)");f.projects.forEach((m,b)=>_.run(a,m.path,b,m.memory)),Ymn(t,`profile:${a}`,RR(u,MB)),Bgt(t,`profile:${a}`,RR(u,FB))}let i=RR(e,"profile-defaults.json");if(vH(i)){let s=c4e(i);if(s===null||typeof s!="object"||Array.isArray(s))throw new Error(`legacy profile defaults are malformed: ${i}`);let a=t.prepare("INSERT INTO profile_defaults(directory,profile_id) VALUES(?,?)");for(let[u,p]of Object.entries(s)){if(typeof p!="string")throw new Error(`legacy profile default is malformed: ${i}`);a.run(u,p)}}}function vbe(t,e,n){let i=t.indexOf(e),s=i>=0?i:0;return t[(s+n+t.length)%t.length]}function $gt(t,e,n){let i=t.indexOf(e);return i>=0?t[(i+n+t.length)%t.length]:n>=0?t.find(s=>s>e)??t[0]:[...t].reverse().find(s=>s<e)??t[t.length-1]}function p8(t,e){return t==="true"?!0:t==="false"?!1:`${e} must be true or false`}function rhn(t,e){if(!/^\d+$/.test(t))return`${e} must be an integer >= 0`;let n=Number(t);return Number.isSafeInteger(n)?n:`${e} must be an integer >= 0`}function ehn(t,e){let n=rhn(t,e);return typeof n=="string"||n<1?`${e} must be an integer >= 1`:n}var thn=[!1,"notify","apply"],xHr=[0,1,6,12,24,48,72,168],wHr=[1,2,3,4,5,6,8,10,12],xbe="openai-codex";function nhn(t,e){let n=t.providerOptions[e];if(n!==void 0)return n;let i={};return t.providerOptions[e]=i,i}var SHr=[1,2,3,4,5,6],ihn={schema_version:{surface:"specialized",owner:"internal schema migration"},marketplaces:{surface:"specialized",owner:"Plugins and pkg market commands"},plugins:{surface:"specialized",owner:"Plugins tab and pkg plugin commands"},auto_update:{surface:"settings",settings:{crtr:{key:"auto_update.crtr",label:"crouter updates",description:"Notify about crouter releases, install them automatically, or turn checks off.",valueConstraint:"true|false|notify|apply; true stores notify",applies:"Applies on the next crouter command.",group:"updates",order:70,format:t=>t.auto_update.crtr===!1?"off":t.auto_update.crtr,cycle:(t,e)=>{t.auto_update.crtr=vbe(thn,t.auto_update.crtr,e)},setFromString:(t,e)=>{let n=e==="true"?"notify":e;return n!=="notify"&&n!=="apply"&&n!=="false"?"auto_update.crtr must be notify, apply, or false":(t.auto_update.crtr=n==="false"?!1:n,null)}},content:{key:"auto_update.content",label:"Content updates",description:"Notify about plugin and marketplace updates, apply them automatically, or turn checks off.",valueConstraint:"false|notify|apply",applies:"Applies on the next crouter command.",group:"updates",order:80,format:t=>t.auto_update.content===!1?"off":t.auto_update.content,cycle:(t,e)=>{t.auto_update.content=vbe(thn,t.auto_update.content,e)},setFromString:(t,e)=>e!=="notify"&&e!=="apply"&&e!=="false"?"auto_update.content must be notify, apply, or false":(t.auto_update.content=e==="false"?!1:e,null)},interval_hours:{key:"auto_update.interval_hours",label:"Update interval",description:"Minimum hours between automatic update checks. Zero checks on every command.",valueConstraint:"integer >= 0",applies:"Applies on the next crouter command.",group:"updates",order:90,format:t=>`${t.auto_update.interval_hours}h`,cycle:(t,e)=>{t.auto_update.interval_hours=$gt(xHr,t.auto_update.interval_hours,e)},setFromString:(t,e)=>{let n=rhn(e,"auto_update.interval_hours");return typeof n=="string"?n:(t.auto_update.interval_hours=n,null)}}}},max_panes_per_window:{surface:"settings",setting:{key:"max_panes_per_window",label:"Maximum panes",description:"Maximum human-review panes placed in one tmux window before using another window.",valueConstraint:"integer >= 1",applies:"Applies to the next pane placement.",group:"panes",order:20,format:t=>String(t.max_panes_per_window),cycle:(t,e)=>{t.max_panes_per_window=$gt(wHr,t.max_panes_per_window,e)},setFromString:(t,e)=>{let n=ehn(e,"max_panes_per_window");return typeof n=="string"?n:(t.max_panes_per_window=n,null)}}},auto_open_child_viewers:{surface:"settings",setting:{key:"auto_open_child_viewers",label:"Open child panes",description:"Open each managed child beside its watched parent. Off keeps new children running in the background.",valueConstraint:"true|false",applies:"Applies to the next managed child created; independent roots still open their attended viewer.",group:"panes",order:10,format:t=>t.auto_open_child_viewers?"on":"off",cycle:t=>{t.auto_open_child_viewers=!t.auto_open_child_viewers},setFromString:(t,e)=>{let n=p8(e,"auto_open_child_viewers");return typeof n=="string"?n:(t.auto_open_child_viewers=n,null)}}},brokerThresholds:{surface:"specialized",owner:"Broker limits tab"},lifecycle:{surface:"specialized",owner:"sys config set lifecycle.unattendedParkMs"},completion_bell:{surface:"settings",setting:{key:"completion_bell",label:"Completion bell",description:"Ring a short sound when the node in an attached viewer finishes a turn.",valueConstraint:"true|false",applies:"Applies on the next turn end.",group:"display",order:41,format:t=>t.completion_bell?"on":"off",cycle:t=>{t.completion_bell=!t.completion_bell},setFromString:(t,e)=>{let n=p8(e,"completion_bell");return typeof n=="string"?n:(t.completion_bell=n,null)}}},working_gerunds:{surface:"specialized",owner:"sys config set working_gerunds"},whip_mode:{surface:"settings",setting:{key:"whip_mode",label:"Whip mode",description:"Play the whip animation when you send a prompt and when a viewer opens for an agent with an initial prompt.",valueConstraint:"true|false",applies:"Applies on the next attach.",group:"display",order:39,format:t=>t.whip_mode?"on":"off",cycle:t=>{t.whip_mode=!t.whip_mode},setFromString:(t,e)=>{let n=p8(e,"whip_mode");return typeof n=="string"?n:(t.whip_mode=n,null)}}},page_surface:{surface:"settings",setting:{key:"page_surface",label:"Page human surface",description:"This host reads pages in a browser rather than a terminal. Agents are told the page module runs as written, HTML pages are offered, and document review and live display leave the command tree.",valueConstraint:"true|false",applies:"Applies when human command help is assembled.",group:"display",order:37,format:t=>t.page_surface?"on":"off",cycle:t=>{t.page_surface=!t.page_surface},setFromString:(t,e)=>{let n=p8(e,"page_surface");return typeof n=="string"?n:(t.page_surface=n,null)}}},whip_messages:{surface:"specialized",owner:"sys config set whip_messages"},whip_message_mode:{surface:"settings",setting:{key:"whip_message_mode",label:"Whip message",description:"What the whip action sends: a random line from whip_messages, or the fixed \u201CGo faster\u201D.",valueConstraint:uH.join("|"),applies:"Applies on the next attach.",group:"display",order:40,format:t=>t.whip_message_mode==="go-faster"?"go faster":"random",cycle:(t,e)=>{t.whip_message_mode=vbe(uH,t.whip_message_mode,e)},setFromString:(t,e)=>uH.includes(e)?(t.whip_message_mode=e,null):`whip_message_mode must be one of: ${uH.join("|")}`}},mouse_mode_default:{surface:"settings",setting:{key:"mouse_mode_default",label:"Default mouse mode",description:"Initial mouse wheel scrolling for each attached viewer.",valueConstraint:pH.join("|"),applies:"Applies on the next attach.",group:"display",order:38,format:t=>t.mouse_mode_default==="tmux"?"follow tmux":t.mouse_mode_default,cycle:(t,e)=>{t.mouse_mode_default=vbe(pH,t.mouse_mode_default,e)},setFromString:(t,e)=>pH.includes(e)?(t.mouse_mode_default=e,null):`mouse_mode_default must be one of: ${pH.join("|")}`}},live_cycles:{surface:"settings",setting:{key:"live_cycles",label:"Live cycles",description:"Trailing refresh cycles rendered at full fidelity; older cycles condense to text.",valueConstraint:"integer >= 1",applies:"Applies on the next attach.",group:"display",order:50,format:t=>String(t.live_cycles),cycle:(t,e)=>{t.live_cycles=$gt(SHr,t.live_cycles,e)},setFromString:(t,e)=>{let n=ehn(e,"live_cycles");return typeof n=="string"?n:(t.live_cycles=n,null)}}},condensed_history:{surface:"settings",setting:{key:"condensed_history",label:"Condensed history",description:"Messages retained from condensed cycles. Tool calls are never kept.",valueConstraint:dH.join("|"),applies:"Applies on the next attach.",group:"display",order:60,format:t=>t.condensed_history,cycle:(t,e)=>{t.condensed_history=vbe(dH,t.condensed_history,e)},setFromString:(t,e)=>dH.includes(e)?(t.condensed_history=e,null):`condensed_history must be one of: ${dH.join("|")}`}},bash_tool_purpose:{surface:"settings",setting:{key:"bash_tool_purpose",label:"Bash purpose field",description:"Expose the optional purpose label to agents in the bash tool schema. Off removes the field without disabling the bash valve.",valueConstraint:"true|false",applies:"Applies on the next node session.",group:"display",order:25,format:t=>t.bash_tool_purpose?"on":"off",cycle:t=>{t.bash_tool_purpose=!t.bash_tool_purpose},setFromString:(t,e)=>{let n=p8(e,"bash_tool_purpose");return typeof n=="string"?n:(t.bash_tool_purpose=n,null)}}},fold_finished_tools:{surface:"settings",setting:{key:"fold_finished_tools",label:"Fold finished tools",description:"Fold every settled tool call to its call line. Toggle live with /fold-tools.",valueConstraint:"true|false",applies:"Applies on the next attach.",group:"display",order:30,format:t=>t.fold_finished_tools?"on":"off",cycle:t=>{t.fold_finished_tools=!t.fold_finished_tools},setFromString:(t,e)=>{let n=p8(e,"fold_finished_tools");return typeof n=="string"?n:(t.fold_finished_tools=n,null)}}},summarize_tool_calls:{surface:"settings",setting:{key:"summarize_tool_calls",label:"Summarize tool calls",description:"Replace completed folded tool-call groups with a one-line broker summary when available.",valueConstraint:"true|false",applies:"Applies when the next visible message closes a tool-call group.",group:"display",order:35,format:t=>t.summarize_tool_calls?"on":"off",cycle:t=>{t.summarize_tool_calls=!t.summarize_tool_calls},setFromString:(t,e)=>{let n=p8(e,"summarize_tool_calls");return typeof n=="string"?n:(t.summarize_tool_calls=n,null)}}},detailed_tool_recaps:{surface:"settings",setting:{key:"detailed_tool_recaps",label:"Detailed tool recaps",description:"Show each memory read and edited file in folded tool recaps. Off shows a compact count line instead.",valueConstraint:"true|false",applies:"Applies on the next attach.",group:"display",order:36,format:t=>t.detailed_tool_recaps?"on":"off",cycle:t=>{t.detailed_tool_recaps=!t.detailed_tool_recaps},setFromString:(t,e)=>{let n=p8(e,"detailed_tool_recaps");return typeof n=="string"?n:(t.detailed_tool_recaps=n,null)}}},keybindings:{surface:"specialized",owner:"Keybindings tab"},tmux_passthrough:{surface:"specialized",owner:"Keybindings tab"},providerOptions:{surface:"settings",settings:{"openai-codex.fastMode":{key:`providerOptions.${xbe}.fastMode`,label:"Codex fast mode",description:"Serve Codex turns at the ChatGPT priority tier: about 1.5x faster generation for about 2x the credits. Displayed cost does not reflect the premium.",valueConstraint:"true|false",applies:"Applies on each node's next turn.",group:"providers",order:40,format:t=>t.providerOptions[xbe]?.fastMode?"on":"off",cycle:t=>{let e=nhn(t,xbe);e.fastMode=!e.fastMode},setFromString:(t,e)=>{let n=p8(e,`providerOptions.${xbe}.fastMode`);return typeof n=="string"?n:(nhn(t,xbe).fastMode=n,null)}}}},modelLadders:{surface:"specialized",owner:"Models tab"},modelRoutes:{surface:"specialized",owner:"Models route declarations"},modelRouting:{surface:"specialized",owner:"Models route declarations"},kinds:{surface:"specialized",owner:"Models tab and kind registry"},page_components:{surface:"specialized",owner:"Page component catalog: product-registered page component kinds"},remoteCanvas:{surface:"specialized",owner:"canvas config commands"},spawnEnv:{surface:"specialized",owner:"spawn environment allow-list"},bin:{surface:"specialized",owner:"bare-binary contributions on every node PATH"},humanActions:{surface:"specialized",owner:"scope-configured human completion actions"}},EHr=Object.keys(ihn);function CHr(){let t=[];for(let e of Object.values(ihn))e.surface==="settings"&&("setting"in e?t.push(e.setting):t.push(...Object.values(e.settings)));return t.sort((e,n)=>e.order-n.order)}var dOs=CHr();var Ugt=["options","text","table","cards","chart"],THr=["page","step"],kHr=/^[a-z][a-z0-9-]{0,63}$/,IHr=new Set(Ugt),shn=[{kind:"page",tag:"Page",description:"the page itself: title, subtitle, and every step it contains",useWhen:"use as the single root element every page returns",builtin:!0,structural:!0},{kind:"step",tag:"Step",description:"one step inside a Page",useWhen:"use for each step the user sees and completes in sequence",builtin:!0,structural:!0},{kind:"options",tag:"UserQuestion",description:"known alternatives with single or multiple selection",useWhen:"use when the user picks among known alternatives, optionally with freetext",builtin:!0,structural:!1},{kind:"text",tag:"UserText",description:"writing surface whose answer is the text the user hands back",useWhen:"use when you need prose from the user \u2014 a value they write, or a draft they revise; prose they only read is a plain element",builtin:!0,structural:!1},{kind:"table",tag:"UserTable",description:"rows and columns with optional selection",useWhen:"use when structured records are easiest to compare in rows and columns",builtin:!0,structural:!1},{kind:"cards",tag:"UserCards",description:"visual records with optional selection",useWhen:"use when the user compares or picks richer items than a compact option list can carry",builtin:!0,structural:!1},{kind:"chart",tag:"Chart",description:"line, bar, or area data visualization",useWhen:"use when shape, trend, or magnitude matters more than exact tabular values",builtin:!0,structural:!1}];function wbe(t){return t.split("-").map(e=>e===""?"":`${e[0].toUpperCase()}${e.slice(1)}`).join("")}var jgt=Object.fromEntries(shn.filter(t=>!t.structural).map(t=>[t.tag,t.kind])),l4e=new Set(shn.map(t=>t.tag)),Wgt=new Set(["Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","CardAction","Badge","Button","Separator","Progress","Alert","AlertTitle","AlertDescription","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","Tabs","TabsList","TabsTrigger","TabsContent","Accordion","AccordionItem","AccordionTrigger","AccordionContent"]);function Uie(t){try{let e=JSON.stringify(t);return e===void 0?String(t):e}catch{return String(t)}}function $ie(t,e,n,i){if(t!==void 0){if(typeof t!="string"||t.trim()==="")throw new Error(`${n}[${i}].${e} must be a non-empty string; received ${Uie(t)}`);return t.trim()}}function Qgt(t,e="page_components"){if(t===void 0)return[];if(!Array.isArray(t))throw new Error(`${e} must be an array; received ${Uie(t)}`);let n=new Set,i=new Set;return t.map((s,a)=>{let u;if(typeof s=="string")u={kind:s.trim()};else if(s!==null&&typeof s=="object"&&!Array.isArray(s)){let _=s,m=Object.keys(_).filter(b=>!["kind","description","useWhen","doc","display"].includes(b));if(m.length>0)throw new Error(`${e}[${a}] has unknown field(s): ${m.join(", ")}`);if(typeof _.kind!="string")throw new Error(`${e}[${a}].kind must be a string; offending entry: ${Uie(s)}`);if(_.display!==void 0&&typeof _.display!="boolean")throw new Error(`${e}[${a}].display must be a boolean; offending entry: ${Uie(s)}`);u={kind:_.kind.trim(),...$ie(_.description,"description",e,a)===void 0?{}:{description:$ie(_.description,"description",e,a)},...$ie(_.useWhen,"useWhen",e,a)===void 0?{}:{useWhen:$ie(_.useWhen,"useWhen",e,a)},...$ie(_.doc,"doc",e,a)===void 0?{}:{doc:$ie(_.doc,"doc",e,a)},..._.display===!0?{display:!0}:{}}}else throw new Error(`${e}[${a}] must be a string or component object; offending entry: ${Uie(s)}`);let p=u.kind;if(!kHr.test(p))throw new Error(`${e}[${a}] has invalid page kind ${Uie(p)}; expected /^[a-z][a-z0-9-]{0,63}$/`);if(IHr.has(p)||THr.includes(p))throw new Error(`${e}[${a}] collides with built-in page kind "${p}"`);if(n.has(p))throw new Error(`${e}[${a}] duplicates page kind "${p}"`);let f=wbe(p);if(l4e.has(f))throw new Error(`${e}[${a}] kind "${p}" derives JSX tag "${f}", which collides with a built-in page component`);if(i.has(f))throw new Error(`${e}[${a}] kind "${p}" derives JSX tag "${f}", which duplicates another product page component`);return n.add(p),i.add(f),u})}function ohn(t){let e=new Map,n=new Map,i=[];for(let s of t)for(let a of s.components){let u=e.get(a.kind);if(u!==void 0)throw new Error(`page component kind "${a.kind}" is registered by both ${u} and ${s.origin}`);let p=wbe(a.kind),f=n.get(p);if(f!==void 0)throw new Error(`page component kind "${a.kind}" (${s.origin}) derives JSX tag "${p}", which duplicates kind "${f.kind}" from ${f.origin}`);e.set(a.kind,s.origin),n.set(p,{kind:a.kind,origin:s.origin}),i.push(a)}return i}function ahn(t,e){return e.find(n=>n.kind===t)}function phn(t){return RHr(t,MB)}function NHr(t,e){return fbe(DHr(t)),FC(`${t}.lock`,()=>e(t),{timeoutError:()=>new Error(`timed out waiting for config lock: ${t}`)})}function Ggt(t){let e=Vj(t),n=Vj(GP());if(e===n)return{store:hM(n),key:"user",kind:"user",root:n};if(PHr(e)===".crouter")return Zmn({kind:"project",root:e}),{store:Rie(e),key:"project",kind:"project",root:e};for(let i of qBe()){let s=Vj(ggt(i.profileId));if(e===s)return{store:hM(n),key:`profile:${i.profileId}`,kind:"profile",root:s,profileId:i.profileId}}throw new Error(`settings root is not a recognized owner: ${t}`)}function dhn(t){let e=Ggt(t);return e.kind==="project"?hH(phn(e.root)):JBe(e)}function OHr(t,e){let n=Ggt(t);return n.kind==="project"?NHr(phn(n.root),i=>{let s=e(hH(i)??{});return egt(i,s.next),s.value}):omn(n,i=>e(i))}function kk(t){let e=l8(t);return e?MHr(e):NBe()}function MHr(t){let e=dhn(t);return e?sJr(e):NBe()}function fhn(t){let e=l8(t);return e?amn(Ggt(e)):ofn()}function Vgt(t,e){let n=_gt(t);return OHr(n,i=>{let s=e(i);return{value:s,next:s}})}function FHr(t){if(t===null||typeof t!="object"||Array.isArray(t))return{};let e={};for(let[n,i]of Object.entries(t))Array.isArray(i)&&i.every(s=>typeof s=="string")&&(e[n]=[...i]);return e}var LHr=new Set(qP.filter(lbe).map(t=>t.id));function jie(t){return Array.isArray(t)?[...new Set(t.filter(e=>typeof e=="string"&&lH.has(e)&&LHr.has(e)))]:[]}function BHr(t,e=zht()){let n=e;if(t===null||typeof t!="object")return n;let i=t,s={anthropic:{...n.anthropic},openai:{...n.openai},...n.defaultProvider!==void 0?{defaultProvider:n.defaultProvider}:{}};(i.defaultProvider==="anthropic"||i.defaultProvider==="openai")&&(s.defaultProvider=i.defaultProvider);for(let a of["anthropic","openai"]){let u=i[a];if(!(u===null||typeof u!="object"))for(let[p,f]of Object.entries(u))(p==="ultra"||p==="strong"||p==="medium"||p==="light")&&typeof f=="string"&&(s[a][p]=f)}return s}function mhn(t){return t==="ultra"||t==="strong"||t==="medium"||t==="light"}var $Hr=["ultra","strong","medium","light"];function qgt(){return Object.create(null)}function u4e(t,e,n){Object.defineProperty(t,e,{value:n,writable:!0,enumerable:!0,configurable:!0})}function UHr(t){let e=qgt();for(let[n,i]of Object.entries(t??{}))u4e(e,n,i);return e}function Sbe(t,e){a8({level:"warn",event:"config.model_routes.invalid",fields:{route_id:t,rule:e}})}function jHr(t,e={}){let n=UHr(e);if(t===null||typeof t!="object"||Array.isArray(t))return n;for(let[i,s]of Object.entries(t)){if(i.trim()===""){Sbe(i,"route id must be a non-empty string");continue}if(s===null||typeof s!="object"||Array.isArray(s)){Sbe(i,"route must be an object");continue}let a=s,u=n[i],p={...u},f;for(let _ of["family","credentialSource","providerId"]){let m=a[_];if(m!==void 0){if(typeof m!="string"||m.trim()===""){f=`${_} must be a non-empty string`;break}p[_]=m}}if(f===void 0&&a.models!==void 0)if(a.models===null||typeof a.models!="object"||Array.isArray(a.models))f="models must be an object";else{let _={...u?.models};for(let[m,b]of Object.entries(a.models)){if(!mhn(m)){f=`models.${m} is not a model strength`;break}if(typeof b!="string"||b.trim()===""){f=`models.${m} must be a non-empty provider/id ref`;break}let x=b.indexOf("/");if(x<=0||x===b.length-1){f=`models.${m} must be provider/id`;break}_[m]=b}p.models=_}if(f===void 0&&p.models!==void 0&&p.providerId!==void 0){for(let[_,m]of Object.entries(p.models))if(m.slice(0,m.indexOf("/"))!==p.providerId){f=`models.${_} provider prefix must equal providerId`;break}}if(f!==void 0){Sbe(i,f);continue}u4e(n,i,p)}return n}function WHr(t){let e=qgt(),n=qgt();for(let[i,s]of Object.entries(t)){if(s.family===void 0||s.credentialSource===void 0||s.providerId===void 0||s.models===void 0){Sbe(i,"route must include family, credentialSource, providerId, and models");continue}let a=$Hr.filter(u=>s.models[u]===void 0);if(a.length>0){Sbe(i,`incomplete route; missing strengths: ${a.join(", ")}`),u4e(n,i,{family:s.family,credentialSource:s.credentialSource,providerId:s.providerId,models:s.models});continue}u4e(e,i,{family:s.family,credentialSource:s.credentialSource,providerId:s.providerId,models:s.models})}return{complete:e,legacy:n}}function QHr(t,e){if(t===void 0||t===null||typeof t!="object"||Array.isArray(t))return e;let n=t,i=a=>Array.isArray(a)&&a.every(u=>typeof u=="string"&&u.trim()!=="")?[...a]:void 0,s=Array.isArray(n.strengthFallback)&&n.strengthFallback.every(a=>mhn(a))?[...n.strengthFallback]:void 0;return{...i(n.credentialSourceOrder)!==void 0?{credentialSourceOrder:i(n.credentialSourceOrder)}:{},...i(n.familyOrder)!==void 0?{familyOrder:i(n.familyOrder)}:{},...s!==void 0?{strengthFallback:s}:{}}}function qHr(t){return t!==""&&t.replace(/\*/g,"")===""}function GHr(t,e=[]){let n=t,i=Array.isArray(n?.allow)?n.allow.filter(s=>typeof s=="string"):[];for(let s of i)if(qHr(s))throw new Error(`spawnEnv.allow: "${s}" matches every env var name (inherit-all) \u2014 this is exactly the leak the spawn-env boundary closes. Name the specific vars/prefixes you actually need instead (e.g. "AWS_*", "GIT_ASKPASS").`);return{allow:[...new Set([...e,...i])]}}function VHr(t,e={}){let n={};for(let[i,s]of Object.entries(e))n[i]={...s};if(t!==null&&typeof t=="object")for(let[i,s]of Object.entries(t)){if(s===null||typeof s!="object")continue;let a={...n[i]},u=s.fastMode;typeof u=="boolean"&&(a.fastMode=u),n[i]=a}return n}var chn=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,zHr=new Set(["crtr","crtrd"]);function HHr(t,e){if(e==="bin"&&zHr.has(t))return`${e}.${t} is reserved by crouter \u2014 pick another bare command name`;if(!chn.test(t))return`${e}.${t} is not a safe bare command name (expected ${chn.source})`}function JHr(t){if(t===null||typeof t!="object"||Array.isArray(t))return{};let e={};for(let[n,i]of Object.entries(t))HHr(n,"bin")===void 0&&(typeof i!="string"||i.trim()===""||(e[n]=i));return e}var lhn=/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;function KHr(t){if(t===null||typeof t!="object"||Array.isArray(t))return[{name:"humanActions",reason:"humanActions must be a JSON object mapping action names to {argv, cwd}",block:!0}];let e=[];for(let[n,i]of Object.entries(t)){let s=[];if(lhn.test(n)||s.push(`action name must match ${lhn.source}`),i===null||typeof i!="object"||Array.isArray(i))s.push("action must be an object with argv and cwd");else{let a=i,u=Object.keys(a).filter(p=>p!=="argv"&&p!=="cwd");u.length>0&&s.push(`action has unsupported field${u.length===1?"":"s"}: ${u.join(", ")}`),(!Array.isArray(a.argv)||a.argv.length===0||!a.argv.every(p=>typeof p=="string"&&p.length>0))&&s.push("argv must be a non-empty array of non-empty strings"),(typeof a.cwd!="string"||a.cwd.length===0)&&s.push("cwd is required and must be a non-empty string")}s.length>0&&e.push({name:n,reason:s.join("; ")})}return e}function YHr(t){if(t===null||typeof t!="object"||Array.isArray(t))return{};let e=new Set(KHr(t).map(i=>i.name)),n={};for(let[i,s]of Object.entries(t)){if(e.has(i))continue;let a=s;n[i]={argv:[...a.argv],cwd:a.cwd}}return n}function XHr(t){if(t===null||typeof t!="object")return null;let e=t,n={};typeof e.whenToUse=="string"&&e.whenToUse.trim()!==""&&(n.whenToUse=e.whenToUse),typeof e.model=="string"&&e.model.trim()!==""&&(n.model=e.model),typeof e.orchestratorModel=="string"&&e.orchestratorModel.trim()!==""&&(n.orchestratorModel=e.orchestratorModel);let i=s=>Array.isArray(s)&&s.every(a=>typeof a=="string");return i(e.tools)&&(n.tools=e.tools),i(e.extensions)&&(n.extensions=e.extensions),i(e.availableTo)&&(n.availableTo=e.availableTo),Object.keys(n).length>0?n:null}function ZHr(t,e=Vht()){let n={...e};if(t!==null&&typeof t=="object")for(let[i,s]of Object.entries(t)){let a=XHr(s);if(a===null)continue;let u=n[i];u!==void 0?n[i]={...u,...a}:a.whenToUse!==void 0&&(n[i]=a)}return n}function p4e(){let t=[{origin:"config.json",components:kk("user").page_components}],e=l8("user");if(e!==null){let n=_be("user",e).filter(i=>i.enabled&&i.manifest.page_components!==void 0).sort((i,s)=>i.name.localeCompare(s.name));for(let i of n){let s=`plugin "${i.name}" page_components`;t.push({origin:`plugin "${i.name}"`,components:Qgt(i.manifest.page_components,s)})}}return ohn(t)}function eJr(t){if(t===null||typeof t!="object")return null;let e=t;if(typeof e.previewEndpoint!="string"||e.previewEndpoint.trim()===""||typeof e.relayTokenRef!="string"||e.relayTokenRef.trim()==="")return null;let n={previewEndpoint:e.previewEndpoint,relayTokenRef:e.relayTokenRef};return typeof e.cpOrigin=="string"&&e.cpOrigin.trim()!==""&&(n.cpOrigin=e.cpOrigin),n}function tJr(t,e=Ght()){let n={...e.targets};if(t!==null&&typeof t=="object"){let i=t;if(i.targets!==null&&typeof i.targets=="object")for(let[s,a]of Object.entries(i.targets)){let u=eJr(a);u!==null&&(n[s]=u)}}return{targets:n}}function uhn(t,e){return t===!0?"notify":t===!1?!1:t==="notify"||t==="apply"?t:e}function Ebe(t,e){return typeof t=="number"&&Number.isSafeInteger(t)&&t>=1?t:e}function nJr(t,e){let n=t!==null&&typeof t=="object"?t:{},i=Ebe(n.warning,e.warning),s=Ebe(n.automaticReviveCap,e.automaticReviveCap);return i<=s?{warning:i,automaticReviveCap:s}:{...e}}function rJr(t,e){return{unattendedParkMs:Ebe((t!==null&&typeof t=="object"?t:{}).unattendedParkMs,e.unattendedParkMs)}}function iJr(t){if(!Array.isArray(t))return[...RBe];let e=t.filter(n=>typeof n=="string"&&n.trim()!=="").map(n=>n.trim());return e.length>0?e:[...RBe]}function sJr(t){let e=NBe(),n=e.schema_version,i=t.marketplaces===void 0?{}:t.marketplaces,s=t.plugins===void 0?{}:t.plugins,a=t.auto_update,u=a&&typeof a.interval_hours=="number"?a.interval_hours:void 0,p=u!==void 0&&Number.isFinite(u)&&u>=0?u:e.auto_update.interval_hours,f={crtr:uhn(a?.crtr,e.auto_update.crtr),content:uhn(a?.content,e.auto_update.content),interval_hours:p},_=t.max_panes_per_window,m=Ebe(_,e.max_panes_per_window),b=typeof t.auto_open_child_viewers=="boolean"?t.auto_open_child_viewers:e.auto_open_child_viewers,x=nJr(t.brokerThresholds,e.brokerThresholds),k=rJr(t.lifecycle,e.lifecycle),I=typeof t.completion_bell=="boolean"?t.completion_bell:e.completion_bell,C=t.working_gerunds===void 0?[...e.working_gerunds]:nfn(t.working_gerunds),P=typeof t.whip_mode=="boolean"?t.whip_mode:e.whip_mode,R=Qgt(t.page_components),F=typeof t.page_surface=="boolean"?t.page_surface:e.page_surface,L=iJr(t.whip_messages),U=uH.includes(t.whip_message_mode)?t.whip_message_mode:e.whip_message_mode,Y=pH.includes(t.mouse_mode_default)?t.mouse_mode_default:e.mouse_mode_default,V=Ebe(t.live_cycles,e.live_cycles),z=dH.includes(t.condensed_history)?t.condensed_history:e.condensed_history,te=typeof t.bash_tool_purpose=="boolean"?t.bash_tool_purpose:e.bash_tool_purpose,ne=typeof t.fold_finished_tools=="boolean"?t.fold_finished_tools:e.fold_finished_tools,he=typeof t.summarize_tool_calls=="boolean"?t.summarize_tool_calls:e.summarize_tool_calls,De=typeof t.detailed_tool_recaps=="boolean"?t.detailed_tool_recaps:e.detailed_tool_recaps,We=FHr(t.keybindings),Oe=jie(t.tmux_passthrough),ze=BHr(t.modelLadders),wt=VHr(t.providerOptions,e.providerOptions),yt=WHr(jHr(t.modelRoutes)),Re=yt.complete,je=QHr(t.modelRouting,void 0),ct=ZHr(t.kinds),Qt=tJr(t.remoteCanvas),Xt=GHr(t.spawnEnv,e.spawnEnv?.allow),Cn=JHr(t.bin),bn=YHr(t.humanActions);return{bin:Cn,humanActions:bn,schema_version:n,marketplaces:i,plugins:s,auto_update:f,max_panes_per_window:m,auto_open_child_viewers:b,brokerThresholds:x,lifecycle:k,completion_bell:I,working_gerunds:C,whip_mode:P,page_components:R,page_surface:F,whip_messages:L,whip_message_mode:U,mouse_mode_default:Y,live_cycles:V,condensed_history:z,bash_tool_purpose:te,fold_finished_tools:ne,summarize_tool_calls:he,detailed_tool_recaps:De,keybindings:We,tmux_passthrough:Oe,modelLadders:ze,providerOptions:wt,...Object.keys(Re).length>0?{modelRoutes:Re}:{},...Object.keys(yt.legacy).length>0?{legacyModelRoutes:yt.legacy}:{},...je!==void 0?{modelRouting:je}:{},kinds:ct,remoteCanvas:Qt,spawnEnv:Xt}}function oJr(t){return dhn(t)}function hhn(t){let e=l8(t);return e?oJr(e):null}var aJr=["ctrl","alt","shift"],cJr=new Set(["ctrl","alt","shift","meta"]),lJr=new Set(["enter","escape","tab","backspace","delete","space","up","down","left","right","pageup","pagedown","home","end"]),uJr={return:"enter",esc:"escape"},WS=class extends Error{constructor(e){super(e),this.name="GestureSyntaxError"}};function pJr(t){let e=t.match(/^((?:[CMS]-)+)(.+)$/i);return e===null?t:`${e[1].split("-").filter(Boolean).map(i=>i.toUpperCase()==="C"?"ctrl":i.toUpperCase()==="M"?"alt":"shift").join("+")}+${e[2]}`}function Kgt(t){let e=pJr(t.trim());if(e==="")throw new WS("a stroke cannot be empty");let n,i;if(e==="+")n="+",i=[];else if(e.endsWith("++"))n="+",i=e.slice(0,-2).split("+");else{let f=e.split("+");if(f.some(_=>_===""))throw new WS(`invalid stroke "${t}"`);n=f.pop(),i=f}let s=i.map(f=>f.toLowerCase());if(s.some(f=>!cJr.has(f)))throw new WS(`unsupported modifier in "${t}"`);let a=s.map(f=>f==="meta"?"alt":f);if(new Set(a).size!==a.length)throw new WS(`duplicate modifier in "${t}"`);let u=uJr[n.toLowerCase()]??n;if(u.length===1&&u>="A"&&u<="Z"?(u=u.toLowerCase(),a.includes("shift")||a.push("shift")):u.length!==1&&(u=u.toLowerCase()),!(u.length===1&&u.charCodeAt(0)>=32&&u.charCodeAt(0)<=126)&&!lJr.has(u))throw new WS(`unsupported key "${n}"`);return[...aJr.filter(f=>a.includes(f)),u].join("+")}function Ygt(t,e){let n=t.trim().split(/\s+>\s+/);if(n.length>2)throw new WS("a gesture may contain at most two strokes");let i=n.map(Kgt);if(i.length===2&&e?.inputKind!=="tmux-sequence")throw new WS("two-stroke sequences are supported only by tmux sequence actions");if(e?.inputKind==="tmux-sequence"&&i.length!==2)throw new WS("this action requires a two-stroke tmux sequence");if(e?.inputKind==="tmux-menu-selector"){if(i.length!==1)throw new WS("a menu selector must be one stroke");let a=i[0].split("+"),u=a.at(-1),p=a.slice(0,-1);if(u.length!==1&&u!=="space"||p.some(f=>f!=="shift"))throw new WS("a menu selector must be one printable character")}if(e?.inputKind==="tmux-global-action"){if(i.length!==1)throw new WS("a global menu shortcut must be one stroke");let s=i[0].split("+").slice(0,-1);if(!s.includes("ctrl")&&!s.includes("alt"))throw new WS("a global menu shortcut must include Ctrl or Alt")}return i.join(" > ")}function dJr(t,e){if(!Array.isArray(t))throw new WS("the override must be an array of gesture strings");let n=[];for(let i of t){if(typeof i!="string")throw new WS("every override entry must be a gesture string");let s=Ygt(i,e);n.includes(s)||n.push(s)}return Object.freeze(n)}function fJr(t,e){return t.contexts.some(n=>e.contexts.includes(n))}function zgt(t){return t.contexts.includes("tmux.root")}function ghn(t){return!zgt(t)&&t.inputKind!=="tmux-menu-selector"&&t.inputKind!=="tmux-sequence"}function Wie(t){return t.split(" > ")[0]}function mJr(t,e,n,i){let s=e.includes(" > "),a=i.includes(" > ");if(fJr(t,n))return s&&a?e===i:s||a?Wie(e)===Wie(i):e===i;let u=zgt(t),p=zgt(n);return!u&&!p?!1:u&&p&&s&&a?e===i:u&&p?Wie(e)===Wie(i):u&&ghn(n)?Wie(e)===i:p&&ghn(t)?e===Wie(i):!1}function Hgt(t){return Object.freeze(t.defaults.map(e=>Ygt(e,t)))}var Jgt=class{#e;constructor(e){this.#e=new Map(e)}get size(){return this.#e.size}get(e){return this.#e.get(e)}has(e){return this.#e.has(e)}entries(){return this.#e.entries()}keys(){return this.#e.keys()}values(){return this.#e.values()}forEach(e,n){for(let[i,s]of this.#e)e.call(n,s,i,this)}[Symbol.iterator](){return this.#e[Symbol.iterator]()}};function Cbe(t,e,n,i,s){return Object.freeze({severity:"error",code:t,message:e,offendingValue:n,...i?{bindingId:i}:{},...s?{relatedBindingIds:Object.freeze([...s])}:{}})}function hJr(t){let e=[];for(let n=0;n<t.length;n+=1){let i=t[n];for(let s=n+1;s<t.length;s+=1){let a=t[s];for(let u of i.gestures){let p=a.gestures.find(f=>mJr(i.definition,u,a.definition,f));if(p!==void 0){e.push([i,a,u.includes(" > ")?u:p]);break}}}}return e}function gJr(t,e,n){return t.some(i=>i.definition.safety===n&&i.gestures.length>0&&i.definition.contexts.includes(e))}function _hn(t,e){for(;;){let n=new Set;for(let[i,s,a]of hJr(t)){if(i.source==="user"&&n.add(i),s.source==="user"&&n.add(s),i.source==="default"&&s.source==="default")throw new Error(`keybinding catalog default collision: ${i.definition.id} / ${s.definition.id} (${a})`);e.push(Cbe("collision",`${i.definition.id} and ${s.definition.id} both claim ${a} in overlapping contexts`,a,i.source==="user"?i.definition.id:s.definition.id,[i.definition.id,s.definition.id]))}if(n.size===0)return;for(let i of n)i.gestures=Hgt(i.definition),i.source="default"}}function yhn(t=void 0){let e=[],n={};t!==void 0&&(t===null||typeof t!="object"||Array.isArray(t)?e.push(Cbe("invalid-keybindings","keybindings must be an object keyed by catalog binding ID",t)):n=t);for(let[p,f]of Object.entries(n))lH.has(p)||e.push(Cbe("unknown-binding",`unknown keybinding ID: ${p}`,f,p));let i=qP.map(p=>{let f=Hgt(p);if(!Object.hasOwn(n,p.id))return{definition:p,gestures:f,source:"default"};let _=n[p.id];try{return{definition:p,gestures:dJr(_,p),source:"user",rawOverride:_}}catch(m){let b=m instanceof Error?m.message:String(m);return e.push(Cbe("invalid-override",`${p.id}: ${b}`,_,p.id)),{definition:p,gestures:f,source:"default"}}});_hn(i,e);for(let p of jht){if(gJr(i,p.context,p.capability))continue;let f=i.filter(_=>_.source==="user"&&_.definition.safety===p.capability&&_.definition.contexts.includes(p.context));e.push(Cbe("unreachable",`${p.context} must retain an enabled ${p.capability} binding`,f.map(_=>_.rawOverride),f[0]?.definition.id,f.map(_=>_.definition.id)));for(let _ of f)_.gestures=Hgt(_.definition),_.source="default"}_hn(i,e);let s=i.map(p=>{let f=Object.freeze({definition:p.definition,gestures:p.gestures,source:p.source});return[p.definition.id,f]}),a=new Jgt(s),u={bindings:a,diagnostics:Object.freeze(e),get(p){let f=a.get(p);if(f===void 0)throw new Error(`unknown crouter keybinding ID: ${p}`);return f},gestures(p){return this.get(p).gestures}};return Object.freeze(u)}function xH(){let t=hhn("user");return Object.freeze({bindings:yhn(t?.keybindings),tmuxPassthrough:Object.freeze(jie(t?.tmux_passthrough))})}function Tbe(){return xH().bindings}var _Jr={enter:"Enter",escape:"Esc",tab:"Tab",backspace:"Backspace",delete:"Delete",space:"Space",up:"Up",down:"Down",left:"Left",right:"Right",pageup:"PageUp",pagedown:"PageDown",home:"Home",end:"End"};function bhn(t){let e,n;if(t==="+")e="+",n=[];else if(t.endsWith("++"))e="+",n=t.slice(0,-2).split("+");else{let s=t.split("+");e=s.pop(),n=s}let i=n.map(s=>s[0].toUpperCase()+s.slice(1));return i.push(_Jr[e]??(e.length===1&&n.length>0?e.toUpperCase():e)),i.join("+")}function Yj(t){return t.split(" > ").map(bhn).join(" then ")}function QS(t,e){let n=t.gestures(e);return n.length===0?"Disabled":n.map(Yj).join(" / ")}function wH(t){if(t.length===2&&t[0]==="\x1B"&&/[A-Z]/.test(t[1]))return`\x1B[${t.charCodeAt(1)};4u`;let e=/^\x1b\[(\d+);3u$/.exec(t);if(e!==null){let n=Number(e[1]);if(n>=65&&n<=90)return`\x1B[${n};4u`}return t}function SH(t,e,n,i){return t.gestures(e).some(s=>!s.includes(" > ")&&i(n,s))}var yJr="crtr.tmux.inbox.toggle";function Ahn(t=Tbe()){let e=t.gestures(yJr);return e.length>0?e.map(Yj).join(" / "):null}function Qie(t){let e=Ahn(t);return e!==null?`${e} inbox`:"crtr human list"}var bJr="crtr.tmux.menu.open",AJr="crtr.tmux.menu.background-bash";function vJr(t){let e=t.split("+"),n=e.at(-1);return e.includes("shift")&&/[a-z]/.test(n)?n.toUpperCase():n==="space"?" ":n}function vhn(t=Tbe()){let e=t.gestures(bJr),n=t.gestures(AJr);return e.length===0||n.length===0?null:`${e.map(Yj).join(" / ")} ${vJr(n[0])}`}function d4e(t){let e=vhn(t);return e!==null?`${e} to background`:null}var $B=[{menuId:"crtr.tmux.menu.attach.detach",actionId:"crtr.attach.detach"},{menuId:"crtr.tmux.menu.attach.clear-or-detach",actionId:"crtr.attach.clear-or-detach"},{menuId:"crtr.tmux.menu.attach.graph.toggle",actionId:"crtr.attach.graph.toggle"},{menuId:"crtr.tmux.menu.attach.help.toggle",actionId:"crtr.attach.help.toggle"},{menuId:"crtr.tmux.menu.attach.inbox.toggle",actionId:"crtr.attach.inbox.toggle"},{menuId:"crtr.tmux.menu.attach.inbox-strip",actionId:"crtr.attach.inbox-strip"},{menuId:"crtr.tmux.menu.attach.model-ladder.next",actionId:"crtr.attach.model-ladder.next"},{menuId:"crtr.tmux.menu.attach.model-ladder.previous",actionId:"crtr.attach.model-ladder.previous"},{menuId:"crtr.tmux.menu.attach.command.inspect",actionId:"crtr.attach.command.inspect"},{menuId:"crtr.tmux.menu.attach.file-review",actionId:"crtr.attach.file-review"},{menuId:"crtr.tmux.menu.attach.profile-files",actionId:"crtr.attach.profile-files"},{menuId:"crtr.tmux.menu.attach.search",actionId:"crtr.attach.search"},{menuId:"crtr.tmux.menu.attach.whip",actionId:"crtr.attach.whip"}],xJr="\x1B_crtr;",wJr="\x1B\\",HOs=new Set($B.map(({actionId:t})=>t));function kbe(t){return`${xJr}${t}${wJr}`}function Xgt(t){let e;for(let{actionId:n}of $B){let i=kbe(n),s=t.indexOf(i);s>=0&&(e===void 0||s<e.index)&&(e={actionId:n,encoded:i,index:s})}if(e!==void 0)return{actionId:e.actionId,remaining:t.slice(0,e.index)+t.slice(e.index+e.encoded.length)}}function yd(t){return`'${t.replace(/'/g,"'\\''")}'`}function Zh(t){let e=Ehn("tmux",t,{encoding:"utf8"});return{ok:e.status===0,stdout:(e.stdout??"").trim(),stderr:(e.stderr??"").trim()}}function xhn(t,e){return Zh(t===void 0||t===""?e:["-S",t,...e])}function Ux(){return process.env.TMUX!==void 0&&process.env.TMUX!==""}function d8(){if(!Ux())return null;let t=Zh(["display-message","-p","#{session_name} #{window_id} #{pane_id}"]);if(!t.ok)return null;let[e,n,i]=t.stdout.split(" ");return{session:e,window:n,pane:i}}function e_t(t){let e=[];for(let[n,i]of Object.entries(t))e.push("-e",`${n}=${i}`);return e}function Ibe(t){let e=Zh(["new-window","-d","-a","-P","-F","#{window_id} #{pane_id}","-t",`${t.session}:`,"-n",t.name,"-c",t.cwd,...e_t(t.env),t.command]);if(!e.ok)return null;let[n,i]=e.stdout.split(" ");return n===void 0||n===""||i===void 0||i===""?null:{window:n,pane:i}}function qie(t,e){let n=Zh(["split-window","-d",...e.vertical===!0?[]:["-h"],...e.before===!0?["-b"]:[],...e.size!==void 0?["-l",String(e.size)]:[],"-P","-F","#{pane_id}","-t",t,"-c",e.cwd,...e_t(e.env),e.command]);return n.ok&&n.stdout!==""?n.stdout:null}function t_t(t,e){return Zh(["rename-window","-t",t,e]).ok}function Xj(t){return Zh(["kill-pane","-t",t]).ok}function n_t(t){let e=Zh(["display-message","-p","-t",t,"#{window_id}"]);return e.ok&&e.stdout!==""?e.stdout:null}function Zj(t){let e=Zh(["display-message","-p","-t",t,"#{session_name} #{window_id}"]);if(!e.ok)return null;let[n,i]=e.stdout.split(" ");return n===void 0||n===""||i===void 0||i===""?null:{session:n,window:i}}function EH(t){let e=Zh(["display-message","-p","-t",t,"#{pane_id}"]);return e.ok&&e.stdout===t}function f4e(t){let e=Zh(["display-message","-p","-t",t,"#{pane_id} #{pane_dead}"]);return e.ok&&e.stdout===`${t} 0`}function r_t(){let t=Zh(["list-panes","-a","-F","#{pane_id}"]);return t.ok?new Set(t.stdout.split(`
|
|
1734
1734
|
`).filter(e=>e!=="")):null}function i_t(t){let e=Zh(["display-message","-p","-t",t,"#{pane_width} #{pane_height}"]);if(!e.ok)return null;let[n,i]=e.stdout.split(" "),s=Number.parseInt(n,10),a=Number.parseInt(i,10);return Number.isInteger(s)&&s>0&&Number.isInteger(a)&&a>0?{cols:s,rows:a}:null}function UB(t,e,n){return Zh(["set-option","-p","-t",t,e,n]).ok}function jB(t,e){let n=Zh(["show-options","-p","-t",t,"-q","-v",e]);return n.ok?n.stdout:void 0}var Pbe="@crtr_viewer_at",whn=0,Shn=Promise.resolve();function s_t(t){if(t==="")return;let e=Math.max(Date.now(),whn+1);whn=e,Shn=Shn.then(()=>new Promise(n=>{try{EJr("tmux",["set-option","-p","-t",t,Pbe,String(e)],()=>n())}catch{n()}}))}function CJr(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Zgt(t,e){let n=t.replace(/^"|"$/g,"");return new RegExp(`(?:^|\\s)surface\\s+attach\\s+to\\s+${CJr(e)}(?:\\s|$)`).test(n)}function TJr(){let t=Ehn("ps",["-ax","-o","pid=,ppid=,command="],{encoding:"utf8"});if(t.status!==0||typeof t.stdout!="string")return null;let e=new Map,n=new Map;for(let i of t.stdout.split(`
|
|
1735
1735
|
`)){let s=/^\s*(\d+)\s+(\d+)\s+(.*)$/.exec(i);if(s===null)continue;let a=Number(s[1]),u=Number(s[2]);n.set(a,s[3]);let p=e.get(u)??[];p.push(a),e.set(u,p)}return{childrenOf:e,commandOf:n}}function kJr(t,e,n){let i=[e];for(;i.length>0;){let s=i.pop();if(Zgt(t.commandOf.get(s)??"",n))return!0;let a=t.childrenOf.get(s);a!==void 0&&i.push(...a)}return!1}function o_t(t){let e=xhn(t,["list-panes","-a","-F","#{pane_id} #{session_name} #{@crtr_node} #{@crtr_viewer_at}"]);if(!e.ok||e.stdout==="")return[];let n=[],i;for(let s of e.stdout.split(`
|