tmux-ide 2.7.0 → 2.9.0-beta.5
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 +95 -115
- package/bin/cli.js +69987 -11819
- package/bin/cli.ts +772 -114
- package/package.json +64 -30
- package/packages/contracts/package.json +3 -2
- package/packages/contracts/src/__tests__/actions-contract.test.ts +119 -0
- package/packages/contracts/src/__tests__/agent-graph-overlay.test.ts +428 -0
- package/packages/contracts/src/__tests__/app-window-mutation.test.ts +51 -0
- package/packages/contracts/src/__tests__/app-window-state.test.ts +34 -0
- package/packages/contracts/src/__tests__/application-shell.test.ts +635 -0
- package/packages/contracts/src/__tests__/causal-cell.test.ts +47 -0
- package/packages/contracts/src/__tests__/client-view-state.test.ts +115 -0
- package/packages/contracts/src/__tests__/cohesion-fixture.test.ts +106 -0
- package/packages/contracts/src/__tests__/commands.test.ts +86 -0
- package/packages/contracts/src/__tests__/control.test.ts +154 -0
- package/packages/contracts/src/__tests__/daemon-events.test.ts +400 -0
- package/packages/contracts/src/__tests__/daemon-resources.test.ts +143 -0
- package/packages/contracts/src/__tests__/daemon-wire.test.ts +117 -0
- package/packages/contracts/src/__tests__/desktop-host.test.ts +269 -0
- package/packages/contracts/src/__tests__/desktop-missions.test.ts +211 -0
- package/packages/contracts/src/__tests__/experience-conformance.test.ts +153 -0
- package/packages/contracts/src/__tests__/experience-kernel-boundary.test.ts +109 -0
- package/packages/contracts/src/__tests__/experience-shell.test.ts +65 -0
- package/packages/contracts/src/__tests__/fixtures/daemon-wire-v2.json +35 -0
- package/packages/contracts/src/__tests__/fleet-agent-graph.test.ts +231 -0
- package/packages/contracts/src/__tests__/fleet-catalog.test.ts +268 -0
- package/packages/contracts/src/__tests__/fleet-lifecycle.test.ts +62 -0
- package/packages/contracts/src/__tests__/focus-overlay.test.ts +110 -0
- package/packages/contracts/src/__tests__/ide-config.test.ts +18 -0
- package/packages/contracts/src/__tests__/issue-error.test.ts +78 -0
- package/packages/contracts/src/__tests__/mission-projections.test.ts +186 -0
- package/packages/contracts/src/__tests__/missions.test.ts +272 -0
- package/packages/contracts/src/__tests__/multiplexer-verbs.test.ts +240 -0
- package/packages/contracts/src/__tests__/pane-appearance.test.ts +146 -0
- package/packages/contracts/src/__tests__/pane-stream.test.ts +466 -0
- package/packages/contracts/src/__tests__/pane-widget-marker.test.ts +327 -0
- package/packages/contracts/src/__tests__/performance-metrics.test.ts +73 -0
- package/packages/contracts/src/__tests__/performance-qualification.test.ts +137 -0
- package/packages/contracts/src/__tests__/rich-card-widget.test.ts +29 -0
- package/packages/contracts/src/__tests__/session-runtime.test.ts +490 -0
- package/packages/contracts/src/__tests__/startup-readiness.test.ts +409 -0
- package/packages/contracts/src/__tests__/terminal-attachment-stream.test.ts +72 -0
- package/packages/contracts/src/__tests__/terminal-attachments.test.ts +329 -0
- package/packages/contracts/src/__tests__/terminal-delivery.test.ts +88 -0
- package/packages/contracts/src/__tests__/terminal-runtime-inventory.test.ts +68 -0
- package/packages/contracts/src/__tests__/visual-tokens.test.ts +224 -0
- package/packages/contracts/src/__tests__/workspace-changes-resource.test.ts +317 -0
- package/packages/contracts/src/__tests__/workspace-changes-view.test.ts +122 -0
- package/packages/contracts/src/__tests__/workspace-config.test.ts +294 -0
- package/packages/contracts/src/__tests__/workspace-files-resource.test.ts +261 -0
- package/packages/contracts/src/__tests__/workspace-files-tree.test.ts +147 -0
- package/packages/contracts/src/__tests__/workspace-pane-creation.test.ts +249 -0
- package/packages/contracts/src/__tests__/workspace-promotion.test.ts +94 -0
- package/packages/contracts/src/__tests__/workspace-resource-identity.test.ts +90 -0
- package/packages/contracts/src/actions-contract.ts +205 -0
- package/packages/contracts/src/actions-errors.ts +20 -0
- package/packages/contracts/src/agent-graph-overlay.ts +425 -0
- package/packages/contracts/src/app-window-mutation.ts +103 -0
- package/packages/contracts/src/app-window-state.ts +446 -0
- package/packages/contracts/src/application-shell-resource.ts +54 -0
- package/packages/contracts/src/application-shell.ts +1094 -0
- package/packages/contracts/src/causal-cell.ts +168 -0
- package/packages/contracts/src/client-view-state.ts +156 -0
- package/packages/contracts/src/cohesion-fixture.ts +647 -0
- package/packages/contracts/src/commands.ts +153 -0
- package/packages/contracts/src/control.ts +217 -0
- package/packages/contracts/src/daemon-events.ts +374 -0
- package/packages/contracts/src/daemon-resource-request.test.ts +192 -0
- package/packages/contracts/src/daemon-resource-request.ts +397 -0
- package/packages/contracts/src/daemon-resources.ts +108 -0
- package/packages/contracts/src/daemon-wire.ts +100 -0
- package/packages/contracts/src/desktop-daemon-issue.ts +83 -0
- package/packages/contracts/src/desktop-host.ts +746 -0
- package/packages/contracts/src/desktop-missions.ts +159 -0
- package/packages/contracts/src/desktop-update.ts +48 -0
- package/packages/contracts/src/desktop-workspace-name.ts +18 -0
- package/packages/contracts/src/domain.ts +493 -0
- package/packages/contracts/src/experience-identifiers.ts +53 -0
- package/packages/contracts/src/experience-shell.ts +249 -0
- package/packages/contracts/src/fleet-agent-graph.ts +171 -0
- package/packages/contracts/src/fleet-catalog.ts +190 -0
- package/packages/contracts/src/fleet-lifecycle.ts +136 -0
- package/packages/contracts/src/focus-overlay.ts +175 -0
- package/packages/contracts/src/ide-config.ts +40 -20
- package/packages/contracts/src/index.ts +60 -0
- package/packages/contracts/src/interaction-receipts.ts +438 -0
- package/packages/contracts/src/issue-error.ts +107 -0
- package/packages/contracts/src/mission-projections.ts +269 -0
- package/packages/contracts/src/multiplexer-verbs.ts +447 -0
- package/packages/contracts/src/pane-appearance.ts +248 -0
- package/packages/contracts/src/pane-stream.ts +709 -0
- package/packages/contracts/src/pane-widget-descriptor.ts +62 -0
- package/packages/contracts/src/pane-widget-marker.ts +301 -0
- package/packages/contracts/src/performance-metrics.ts +128 -0
- package/packages/contracts/src/performance-qualification.ts +276 -0
- package/packages/contracts/src/rich-card-widget.ts +72 -0
- package/packages/contracts/src/semantic-identity.ts +39 -0
- package/packages/contracts/src/session-runtime.ts +351 -0
- package/packages/contracts/src/shared-monotonic-clock.ts +18 -0
- package/packages/contracts/src/startup-readiness.ts +432 -0
- package/packages/contracts/src/terminal-attachment-stream.ts +119 -0
- package/packages/contracts/src/terminal-attachments.ts +347 -0
- package/packages/contracts/src/terminal-delivery.ts +245 -0
- package/packages/contracts/src/terminal-replica.ts +133 -0
- package/packages/contracts/src/terminal-runtime-inventory.ts +42 -0
- package/packages/contracts/src/visual-recipes.ts +126 -0
- package/packages/contracts/src/visual-tokens.ts +883 -0
- package/packages/contracts/src/widget-asset.ts +43 -0
- package/packages/contracts/src/workspace-catalog-resource.test.ts +146 -0
- package/packages/contracts/src/workspace-catalog-resource.ts +180 -0
- package/packages/contracts/src/workspace-changes-resource.ts +405 -0
- package/packages/contracts/src/workspace-changes-view.ts +195 -0
- package/packages/contracts/src/workspace-config.ts +303 -0
- package/packages/contracts/src/workspace-files-resource.ts +310 -0
- package/packages/contracts/src/workspace-files-tree.ts +167 -0
- package/packages/contracts/src/workspace-missions-resource.ts +32 -0
- package/packages/contracts/src/workspace-multiplexer.ts +373 -0
- package/packages/contracts/src/workspace-open-handoff.ts +99 -0
- package/packages/contracts/src/workspace-open.ts +64 -0
- package/packages/contracts/src/workspace-pane-creation.ts +223 -0
- package/packages/contracts/src/workspace-promotion.ts +109 -0
- package/packages/contracts/src/workspace-resource-identity.ts +81 -0
- package/packages/contracts/src/workspace-state.ts +530 -0
- package/packages/contracts/src/workspace.ts +14 -2
- package/packages/core/package.json +35 -0
- package/packages/core/src/agent-provisioning.test.ts +42 -0
- package/packages/core/src/agent-provisioning.ts +112 -0
- package/packages/core/src/app-window-identity.ts +33 -0
- package/packages/core/src/application-shell-session.test.ts +105 -0
- package/packages/core/src/application-shell-session.ts +195 -0
- package/packages/core/src/index.ts +15 -0
- package/packages/core/src/interaction-flow.test.ts +66 -0
- package/packages/core/src/interaction-flow.ts +159 -0
- package/packages/core/src/interaction-receipts.test.ts +361 -0
- package/packages/core/src/interaction-receipts.ts +335 -0
- package/packages/core/src/navigator.test.ts +34 -0
- package/packages/core/src/navigator.ts +74 -0
- package/packages/core/src/optimistic-projection-conformance.test.ts +75 -0
- package/packages/core/src/optimistic-projection-conformance.ts +61 -0
- package/packages/core/src/optimistic-projection-store.ts +71 -0
- package/packages/core/src/optimistic-projection.test.ts +118 -0
- package/packages/core/src/optimistic-projection.ts +194 -0
- package/packages/core/src/performance-metrics.test.ts +121 -0
- package/packages/core/src/performance-metrics.ts +241 -0
- package/packages/core/src/performance-qualification.test.ts +283 -0
- package/packages/core/src/performance-qualification.ts +360 -0
- package/packages/core/src/terminal-compact-capability.ts +31 -0
- package/packages/core/src/terminal-compact-cold.test.ts +87 -0
- package/packages/core/src/terminal-conformance.test.ts +48 -0
- package/packages/core/src/terminal-conformance.ts +405 -0
- package/packages/core/src/terminal-delivery.test.ts +1196 -0
- package/packages/core/src/terminal-delivery.ts +2918 -0
- package/packages/core/src/terminal-replica-cold.test.ts +31 -0
- package/packages/core/src/terminal-replica-hash-cache.test.ts +201 -0
- package/packages/core/src/terminal-replica-hash-cache.ts +367 -0
- package/packages/core/src/terminal-replica.test.ts +282 -0
- package/packages/core/src/terminal-replica.ts +943 -0
- package/packages/core/src/workspace-selection.test.ts +63 -0
- package/packages/core/src/workspace-selection.ts +97 -0
- package/packages/daemon/dist/attach.js +2 -2
- package/packages/daemon/dist/canonical.d.ts +2 -2
- package/packages/daemon/dist/canonical.js +1 -1
- package/packages/daemon/dist/cli.js +37 -36
- package/packages/daemon/dist/command-center/actions/command-definitions.d.ts +4 -0
- package/packages/daemon/dist/command-center/actions/command-definitions.js +70 -0
- package/packages/daemon/dist/command-center/actions/dispatcher.d.ts +29 -0
- package/packages/daemon/dist/command-center/actions/dispatcher.js +228 -10
- package/packages/daemon/dist/command-center/actions/errors.d.ts +1 -1
- package/packages/daemon/dist/command-center/actions/handlers/_project-context.d.ts +1 -1
- package/packages/daemon/dist/command-center/actions/handlers/_project-context.js +3 -4
- package/packages/daemon/dist/command-center/actions/handlers/app-window-mutate.d.ts +8 -0
- package/packages/daemon/dist/command-center/actions/handlers/app-window-mutate.js +39 -0
- package/packages/daemon/dist/command-center/actions/handlers/config-actions.d.ts +6 -6
- package/packages/daemon/dist/command-center/actions/handlers/config-actions.js +44 -20
- package/packages/daemon/dist/command-center/actions/handlers/daemon-shutdown.d.ts +2 -1
- package/packages/daemon/dist/command-center/actions/handlers/daemon-shutdown.js +11 -1
- package/packages/daemon/dist/command-center/actions/handlers/fleet-lifecycle.d.ts +10 -0
- package/packages/daemon/dist/command-center/actions/handlers/fleet-lifecycle.js +56 -0
- package/packages/daemon/dist/command-center/actions/handlers/project-launch.js +16 -4
- package/packages/daemon/dist/command-center/actions/handlers/workspace-multiplexer.d.ts +186 -0
- package/packages/daemon/dist/command-center/actions/handlers/workspace-multiplexer.js +55 -0
- package/packages/daemon/dist/command-center/actions/handlers/workspace-open.d.ts +16 -0
- package/packages/daemon/dist/command-center/actions/handlers/workspace-open.js +89 -0
- package/packages/daemon/dist/command-center/actions/handlers/workspace-pane-create.d.ts +8 -0
- package/packages/daemon/dist/command-center/actions/handlers/workspace-pane-create.js +34 -0
- package/packages/daemon/dist/command-center/actions/handlers/workspace-promote.d.ts +8 -0
- package/packages/daemon/dist/command-center/actions/handlers/workspace-promote.js +34 -0
- package/packages/daemon/dist/command-center/actions/registry.d.ts +33 -2
- package/packages/daemon/dist/command-center/actions/registry.js +126 -0
- package/packages/daemon/dist/command-center/actions/semantic-multiplexer-actions.d.ts +3 -0
- package/packages/daemon/dist/command-center/actions/semantic-multiplexer-actions.js +16 -0
- package/packages/daemon/dist/command-center/agent-status-watch.d.ts +100 -0
- package/packages/daemon/dist/command-center/agent-status-watch.js +170 -0
- package/packages/daemon/dist/command-center/daemon-fleet-facts-observer.d.ts +57 -0
- package/packages/daemon/dist/command-center/daemon-fleet-facts-observer.js +395 -0
- package/packages/daemon/dist/command-center/discovery.d.ts +98 -1
- package/packages/daemon/dist/command-center/discovery.js +262 -3
- package/packages/daemon/dist/command-center/owner-authority.d.ts +71 -0
- package/packages/daemon/dist/command-center/owner-authority.js +46 -0
- package/packages/daemon/dist/command-center/pane-stream-issue.d.ts +26 -0
- package/packages/daemon/dist/command-center/pane-stream-issue.js +185 -0
- package/packages/daemon/dist/command-center/resources/agent-graph-overlay.d.ts +45 -0
- package/packages/daemon/dist/command-center/resources/agent-graph-overlay.js +234 -0
- package/packages/daemon/dist/command-center/resources/application-shell.d.ts +201 -0
- package/packages/daemon/dist/command-center/resources/application-shell.js +641 -0
- package/packages/daemon/dist/command-center/resources/desktop-missions.d.ts +10 -0
- package/packages/daemon/dist/command-center/resources/desktop-missions.js +132 -0
- package/packages/daemon/dist/command-center/resources/fleet-catalog.d.ts +25 -0
- package/packages/daemon/dist/command-center/resources/fleet-catalog.js +163 -0
- package/packages/daemon/dist/command-center/resources/fleet-resource-route.d.ts +25 -0
- package/packages/daemon/dist/command-center/resources/fleet-resource-route.js +46 -0
- package/packages/daemon/dist/command-center/resources/startup-readiness-route.d.ts +38 -0
- package/packages/daemon/dist/command-center/resources/startup-readiness-route.js +121 -0
- package/packages/daemon/dist/command-center/resources/startup-readiness.d.ts +57 -0
- package/packages/daemon/dist/command-center/resources/startup-readiness.js +183 -0
- package/packages/daemon/dist/command-center/resources/terminal-runtime-inventory.d.ts +5 -0
- package/packages/daemon/dist/command-center/resources/terminal-runtime-inventory.js +24 -0
- package/packages/daemon/dist/command-center/resources/workspace-changes-authority.d.ts +39 -0
- package/packages/daemon/dist/command-center/resources/workspace-changes-authority.js +451 -0
- package/packages/daemon/dist/command-center/resources/workspace-changes-git.d.ts +63 -0
- package/packages/daemon/dist/command-center/resources/workspace-changes-git.js +222 -0
- package/packages/daemon/dist/command-center/resources/workspace-files-authority.d.ts +44 -0
- package/packages/daemon/dist/command-center/resources/workspace-files-authority.js +493 -0
- package/packages/daemon/dist/command-center/resources/workspace-missions-route.d.ts +22 -0
- package/packages/daemon/dist/command-center/resources/workspace-missions-route.js +75 -0
- package/packages/daemon/dist/command-center/resources/workspace-resource-ids.d.ts +24 -0
- package/packages/daemon/dist/command-center/resources/workspace-resource-ids.js +69 -0
- package/packages/daemon/dist/command-center/resources/workspace-resource-routes.d.ts +17 -0
- package/packages/daemon/dist/command-center/resources/workspace-resource-routes.js +116 -0
- package/packages/daemon/dist/command-center/schemas.d.ts +1 -1
- package/packages/daemon/dist/command-center/server.d.ts +57 -1
- package/packages/daemon/dist/command-center/server.js +540 -51
- package/packages/daemon/dist/command-center/terminal-attachment-issue.d.ts +22 -0
- package/packages/daemon/dist/command-center/terminal-attachment-issue.js +191 -0
- package/packages/daemon/dist/command-center/workspace-resource-observer.d.ts +50 -0
- package/packages/daemon/dist/command-center/workspace-resource-observer.js +453 -0
- package/packages/daemon/dist/command-center/ws-events.d.ts +82 -7
- package/packages/daemon/dist/command-center/ws-events.js +681 -63
- package/packages/daemon/dist/config.js +31 -25
- package/packages/daemon/dist/control/client.d.ts +23 -0
- package/packages/daemon/dist/control/client.js +105 -0
- package/packages/daemon/dist/control/dispatch.d.ts +34 -0
- package/packages/daemon/dist/control/dispatch.js +83 -0
- package/packages/daemon/dist/control/fanout.d.ts +19 -0
- package/packages/daemon/dist/control/fanout.js +37 -0
- package/packages/daemon/dist/control/frames.d.ts +23 -0
- package/packages/daemon/dist/control/frames.js +37 -0
- package/packages/daemon/dist/control/lifecycle.d.ts +45 -0
- package/packages/daemon/dist/control/lifecycle.js +124 -0
- package/packages/daemon/dist/control/server.d.ts +16 -0
- package/packages/daemon/dist/control/server.js +214 -0
- package/packages/daemon/dist/control/verbs.d.ts +11 -0
- package/packages/daemon/dist/control/verbs.js +91 -0
- package/packages/daemon/dist/detect.js +23 -20
- package/packages/daemon/dist/doctor.d.ts +18 -0
- package/packages/daemon/dist/doctor.js +127 -21
- package/packages/daemon/dist/index.d.ts +21 -2
- package/packages/daemon/dist/index.js +20 -1
- package/packages/daemon/dist/init.js +24 -22
- package/packages/daemon/dist/inspect.d.ts +7 -1
- package/packages/daemon/dist/inspect.js +33 -8
- package/packages/daemon/dist/launch.d.ts +2 -0
- package/packages/daemon/dist/launch.js +38 -26
- package/packages/daemon/dist/lib/__tests__/fixtures/workspace-state-writer.js +58 -0
- package/packages/daemon/dist/lib/agent-discovery.d.ts +27 -2
- package/packages/daemon/dist/lib/agent-discovery.js +29 -14
- package/packages/daemon/dist/lib/agent-kind.d.ts +7 -0
- package/packages/daemon/dist/lib/agent-kind.js +24 -0
- package/packages/daemon/dist/lib/app-config.d.ts +111 -0
- package/packages/daemon/dist/lib/app-config.js +130 -5
- package/packages/daemon/dist/lib/app-window-kernel.d.ts +64 -0
- package/packages/daemon/dist/lib/app-window-kernel.js +556 -0
- package/packages/daemon/dist/lib/app-window-mutation.d.ts +28 -0
- package/packages/daemon/dist/lib/app-window-mutation.js +139 -0
- package/packages/daemon/dist/lib/app-window-repository.d.ts +81 -0
- package/packages/daemon/dist/lib/app-window-repository.js +368 -0
- package/packages/daemon/dist/lib/app-window-state.d.ts +57 -0
- package/packages/daemon/dist/lib/app-window-state.js +415 -0
- package/packages/daemon/dist/lib/application-shell-app-windows.d.ts +16 -0
- package/packages/daemon/dist/lib/application-shell-app-windows.js +285 -0
- package/packages/daemon/dist/lib/auth/middleware.d.ts +1 -1
- package/packages/daemon/dist/lib/auth/middleware.js +7 -3
- package/packages/daemon/dist/lib/canonical-daemon-bootstrap.d.ts +25 -0
- package/packages/daemon/dist/lib/canonical-daemon-bootstrap.js +174 -0
- package/packages/daemon/dist/lib/canonical-daemon.d.ts +80 -14
- package/packages/daemon/dist/lib/canonical-daemon.js +507 -70
- package/packages/daemon/dist/lib/chrome-front-door.d.ts +7 -0
- package/packages/daemon/dist/lib/chrome-front-door.js +13 -0
- package/packages/daemon/dist/lib/cli-action-bridge.d.ts +8 -3
- package/packages/daemon/dist/lib/cli-action-bridge.js +112 -82
- package/packages/daemon/dist/lib/command-registry.d.ts +37 -0
- package/packages/daemon/dist/lib/command-registry.js +107 -0
- package/packages/daemon/dist/lib/config-context.d.ts +18 -0
- package/packages/daemon/dist/lib/config-context.js +34 -0
- package/packages/daemon/dist/lib/daemon-embed.d.ts +30 -0
- package/packages/daemon/dist/lib/daemon-embed.js +1060 -356
- package/packages/daemon/dist/lib/daemon-session-monitor.d.ts +50 -0
- package/packages/daemon/dist/lib/daemon-session-monitor.js +194 -0
- package/packages/daemon/dist/lib/daemon.js +3 -47
- package/packages/daemon/dist/lib/directory-watcher.d.ts +12 -0
- package/packages/daemon/dist/lib/directory-watcher.js +118 -0
- package/packages/daemon/dist/lib/environment-identity.d.ts +9 -0
- package/packages/daemon/dist/lib/environment-identity.js +79 -0
- package/packages/daemon/dist/lib/errors.d.ts +1 -1
- package/packages/daemon/dist/lib/fleet-agent-lifecycle.d.ts +8 -0
- package/packages/daemon/dist/lib/fleet-agent-lifecycle.js +65 -0
- package/packages/daemon/dist/lib/fleet-lifecycle-authority.d.ts +21 -0
- package/packages/daemon/dist/lib/fleet-lifecycle-authority.js +437 -0
- package/packages/daemon/dist/lib/headless-daemon.d.ts +33 -0
- package/packages/daemon/dist/lib/headless-daemon.js +306 -0
- package/packages/daemon/dist/lib/launch-plan.d.ts +20 -1
- package/packages/daemon/dist/lib/launch-plan.js +96 -1
- package/packages/daemon/dist/lib/legacy-config-adapter.d.ts +12 -0
- package/packages/daemon/dist/lib/legacy-config-adapter.js +19 -0
- package/packages/daemon/dist/lib/legacy-config-migration.d.ts +15 -0
- package/packages/daemon/dist/lib/legacy-config-migration.js +110 -0
- package/packages/daemon/dist/lib/legacy-theme-compat.d.ts +14 -0
- package/packages/daemon/dist/lib/legacy-theme-compat.js +25 -0
- package/packages/daemon/dist/lib/manifest-pack.d.ts +79 -0
- package/packages/daemon/dist/lib/manifest-pack.js +232 -0
- package/packages/daemon/dist/lib/mission-projections.d.ts +24 -0
- package/packages/daemon/dist/lib/mission-projections.js +615 -0
- package/packages/daemon/dist/lib/mission-repository.d.ts +941 -0
- package/packages/daemon/dist/lib/mission-repository.js +775 -0
- package/packages/daemon/dist/lib/onboarding-marker.d.ts +13 -0
- package/packages/daemon/dist/lib/onboarding-marker.js +51 -0
- package/packages/daemon/dist/lib/pane-chrome.d.ts +12 -0
- package/packages/daemon/dist/lib/pane-chrome.js +12 -0
- package/packages/daemon/dist/lib/pane-source-credentials.d.ts +32 -0
- package/packages/daemon/dist/lib/pane-source-credentials.js +178 -0
- package/packages/daemon/dist/lib/pane-widget.d.ts +61 -0
- package/packages/daemon/dist/lib/pane-widget.js +126 -0
- package/packages/daemon/dist/lib/project-inspect.js +4 -0
- package/packages/daemon/dist/lib/project-onboard.d.ts +5 -5
- package/packages/daemon/dist/lib/project-onboard.js +17 -21
- package/packages/daemon/dist/lib/project-probe.d.ts +9 -3
- package/packages/daemon/dist/lib/project-probe.js +28 -22
- package/packages/daemon/dist/lib/project-readiness-probe.d.ts +60 -0
- package/packages/daemon/dist/lib/project-readiness-probe.js +425 -0
- package/packages/daemon/dist/lib/project-readiness.d.ts +157 -0
- package/packages/daemon/dist/lib/project-readiness.js +680 -0
- package/packages/daemon/dist/lib/project-registry.d.ts +8 -0
- package/packages/daemon/dist/lib/project-registry.js +42 -9
- package/packages/daemon/dist/lib/project-resolver.d.ts +77 -0
- package/packages/daemon/dist/lib/project-resolver.js +245 -0
- package/packages/daemon/dist/lib/project-runtime-errors.d.ts +13 -0
- package/packages/daemon/dist/lib/project-runtime-errors.js +21 -0
- package/packages/daemon/dist/lib/project-runtime-repository.d.ts +193 -0
- package/packages/daemon/dist/lib/project-runtime-repository.js +876 -0
- package/packages/daemon/dist/lib/resolved-config.d.ts +48 -0
- package/packages/daemon/dist/lib/resolved-config.js +318 -0
- package/packages/daemon/dist/lib/runtime-namespace.d.ts +34 -0
- package/packages/daemon/dist/lib/runtime-namespace.js +136 -0
- package/packages/daemon/dist/lib/semantic-resource-id.d.ts +7 -0
- package/packages/daemon/dist/lib/semantic-resource-id.js +14 -0
- package/packages/daemon/dist/lib/session-monitor.d.ts +2 -0
- package/packages/daemon/dist/lib/session-monitor.js +29 -23
- package/packages/daemon/dist/lib/session-options.js +3 -10
- package/packages/daemon/dist/lib/state-home.d.ts +2 -0
- package/packages/daemon/dist/lib/state-home.js +11 -0
- package/packages/daemon/dist/lib/theme-mode.d.ts +10 -0
- package/packages/daemon/dist/lib/theme-mode.js +9 -0
- package/packages/daemon/dist/lib/tmux-external-interaction-observer.d.ts +88 -0
- package/packages/daemon/dist/lib/tmux-external-interaction-observer.js +534 -0
- package/packages/daemon/dist/lib/tmux-interaction-options.d.ts +34 -0
- package/packages/daemon/dist/lib/tmux-interaction-options.js +126 -0
- package/packages/daemon/dist/lib/tmux-terminal-color.d.ts +18 -0
- package/packages/daemon/dist/lib/tmux-terminal-color.js +37 -0
- package/packages/daemon/dist/lib/tui-binary.d.ts +30 -5
- package/packages/daemon/dist/lib/tui-binary.js +291 -28
- package/packages/daemon/dist/lib/unix-socket-authority.d.ts +9 -0
- package/packages/daemon/dist/lib/unix-socket-authority.js +48 -0
- package/packages/daemon/dist/lib/update-check.js +5 -0
- package/packages/daemon/dist/lib/widget-asset-policy.d.ts +3 -0
- package/packages/daemon/dist/lib/widget-asset-policy.js +3 -0
- package/packages/daemon/dist/lib/widget-asset-store.d.ts +22 -0
- package/packages/daemon/dist/lib/widget-asset-store.js +166 -0
- package/packages/daemon/dist/lib/workspace-config-loader.d.ts +68 -0
- package/packages/daemon/dist/lib/workspace-config-loader.js +280 -0
- package/packages/daemon/dist/lib/workspace-multiplexer-verbs.d.ts +109 -0
- package/packages/daemon/dist/lib/workspace-multiplexer-verbs.js +1138 -0
- package/packages/daemon/dist/lib/workspace-open-handoff.d.ts +41 -0
- package/packages/daemon/dist/lib/workspace-open-handoff.js +219 -0
- package/packages/daemon/dist/lib/workspace-open.d.ts +44 -0
- package/packages/daemon/dist/lib/workspace-open.js +740 -0
- package/packages/daemon/dist/lib/workspace-pane-creation.d.ts +64 -0
- package/packages/daemon/dist/lib/workspace-pane-creation.js +1107 -0
- package/packages/daemon/dist/lib/workspace-promotion.d.ts +41 -0
- package/packages/daemon/dist/lib/workspace-promotion.js +804 -0
- package/packages/daemon/dist/lib/workspace-registry.d.ts +49 -2
- package/packages/daemon/dist/lib/workspace-registry.js +150 -23
- package/packages/daemon/dist/lib/workspace-state-repository.d.ts +139 -0
- package/packages/daemon/dist/lib/workspace-state-repository.js +790 -0
- package/packages/daemon/dist/lib/workspace-state.d.ts +37 -0
- package/packages/daemon/dist/lib/workspace-state.js +765 -0
- package/packages/daemon/dist/lib/yaml-io.js +4 -18
- package/packages/daemon/dist/migrate.d.ts +11 -0
- package/packages/daemon/dist/migrate.js +105 -0
- package/packages/daemon/dist/restart.js +2 -2
- package/packages/daemon/dist/restore.d.ts +40 -13
- package/packages/daemon/dist/restore.js +62 -21
- package/packages/daemon/dist/schemas/inspect.d.ts +8 -0
- package/packages/daemon/dist/schemas/inspect.js +9 -1
- package/packages/daemon/dist/schemas/registry.d.ts +18 -4
- package/packages/daemon/dist/schemas/registry.js +5 -19
- package/packages/daemon/dist/schemas/ws-events.d.ts +5 -69
- package/packages/daemon/dist/schemas/ws-events.js +4 -107
- package/packages/daemon/dist/send.d.ts +41 -1
- package/packages/daemon/dist/send.js +136 -20
- package/packages/daemon/dist/server/pane-stream-upgrade.d.ts +12 -0
- package/packages/daemon/dist/server/pane-stream-upgrade.js +117 -0
- package/packages/daemon/dist/server/terminal-attachment-upgrade.d.ts +11 -0
- package/packages/daemon/dist/server/terminal-attachment-upgrade.js +121 -0
- package/packages/daemon/dist/status.js +11 -8
- package/packages/daemon/dist/stop.js +2 -2
- package/packages/daemon/dist/terminal/MonotonicPtyInput.d.ts +30 -0
- package/packages/daemon/dist/terminal/MonotonicPtyInput.js +130 -0
- package/packages/daemon/dist/terminal/NodePtyAdapter.d.ts +9 -3
- package/packages/daemon/dist/terminal/NodePtyAdapter.js +37 -10
- package/packages/daemon/dist/terminal/PtyAdapter.d.ts +93 -3
- package/packages/daemon/dist/terminal/PtyAdapter.js +18 -0
- package/packages/daemon/dist/terminal/__tests__/MockPtyAdapter.d.ts +14 -4
- package/packages/daemon/dist/terminal/__tests__/MockPtyAdapter.js +33 -6
- package/packages/daemon/dist/terminal/attachments/admission-util.d.ts +14 -0
- package/packages/daemon/dist/terminal/attachments/admission-util.js +87 -0
- package/packages/daemon/dist/terminal/attachments/agent-status-probe.d.ts +102 -0
- package/packages/daemon/dist/terminal/attachments/agent-status-probe.js +325 -0
- package/packages/daemon/dist/terminal/attachments/direct-websocket.d.ts +141 -0
- package/packages/daemon/dist/terminal/attachments/direct-websocket.js +1069 -0
- package/packages/daemon/dist/terminal/attachments/grouped-tmux.d.ts +106 -0
- package/packages/daemon/dist/terminal/attachments/grouped-tmux.js +213 -0
- package/packages/daemon/dist/terminal/attachments/lease-manager.d.ts +188 -0
- package/packages/daemon/dist/terminal/attachments/lease-manager.js +655 -0
- package/packages/daemon/dist/terminal/attachments/native-runtime.d.ts +196 -0
- package/packages/daemon/dist/terminal/attachments/native-runtime.js +1564 -0
- package/packages/daemon/dist/terminal/attachments/pty-tmux-attachment-launcher.d.ts +66 -0
- package/packages/daemon/dist/terminal/attachments/pty-tmux-attachment-launcher.js +607 -0
- package/packages/daemon/dist/terminal/attachments/semantic-pane-catalog.d.ts +81 -0
- package/packages/daemon/dist/terminal/attachments/semantic-pane-catalog.js +208 -0
- package/packages/daemon/dist/terminal/attachments/tmux-view-executor.d.ts +111 -0
- package/packages/daemon/dist/terminal/attachments/tmux-view-executor.js +825 -0
- package/packages/daemon/dist/terminal/mirror/__tests__/scripted-channel.d.ts +25 -0
- package/packages/daemon/dist/terminal/mirror/__tests__/scripted-channel.js +80 -0
- package/packages/daemon/dist/terminal/mirror/__tests__/simulated-channel.d.ts +66 -0
- package/packages/daemon/dist/terminal/mirror/__tests__/simulated-channel.js +133 -0
- package/packages/daemon/dist/terminal/mirror/control-channel.d.ts +188 -0
- package/packages/daemon/dist/terminal/mirror/control-channel.js +624 -0
- package/packages/daemon/dist/terminal/mirror/control-mode-ownership.d.ts +14 -0
- package/packages/daemon/dist/terminal/mirror/control-mode-ownership.js +30 -0
- package/packages/daemon/dist/terminal/mirror/events.d.ts +115 -0
- package/packages/daemon/dist/terminal/mirror/events.js +18 -0
- package/packages/daemon/dist/terminal/mirror/flow-ledger.d.ts +40 -0
- package/packages/daemon/dist/terminal/mirror/flow-ledger.js +56 -0
- package/packages/daemon/dist/terminal/mirror/mirror-service.d.ts +137 -0
- package/packages/daemon/dist/terminal/mirror/mirror-service.js +329 -0
- package/packages/daemon/dist/terminal/mirror/pane-feed.d.ts +90 -0
- package/packages/daemon/dist/terminal/mirror/pane-feed.js +140 -0
- package/packages/daemon/dist/terminal/mirror/session-channel.d.ts +216 -0
- package/packages/daemon/dist/terminal/mirror/session-channel.js +2301 -0
- package/packages/daemon/dist/terminal/mirror/trusted-inventory.d.ts +28 -0
- package/packages/daemon/dist/terminal/pane-stream/lease-manager.d.ts +72 -0
- package/packages/daemon/dist/terminal/pane-stream/lease-manager.js +245 -0
- package/packages/daemon/dist/terminal/pane-stream/pane-stream-websocket.d.ts +208 -0
- package/packages/daemon/dist/terminal/pane-stream/pane-stream-websocket.js +2058 -0
- package/packages/daemon/dist/terminal/pane-stream/runtime.d.ts +26 -0
- package/packages/daemon/dist/terminal/pane-stream/runtime.js +53 -0
- package/packages/daemon/dist/terminal/pane-stream/wire-ledger.d.ts +59 -0
- package/packages/daemon/dist/terminal/pane-stream/wire-ledger.js +110 -0
- package/packages/daemon/dist/terminal/protocol/chunk-bytes.d.ts +3 -0
- package/packages/daemon/dist/terminal/protocol/chunk-bytes.js +21 -0
- package/packages/daemon/dist/terminal/protocol/control.d.ts +66 -0
- package/packages/daemon/dist/terminal/protocol/control.js +111 -0
- package/packages/daemon/dist/terminal/protocol/input-coalescer.d.ts +55 -0
- package/packages/daemon/dist/terminal/protocol/input-coalescer.js +111 -0
- package/packages/daemon/dist/terminal/protocol/layout-parse.d.ts +68 -0
- package/packages/daemon/dist/terminal/protocol/layout-parse.js +127 -0
- package/packages/daemon/dist/terminal/protocol/pane-display-name.d.ts +16 -0
- package/packages/daemon/dist/terminal/protocol/pane-display-name.js +153 -0
- package/packages/daemon/dist/terminal/protocol/session-descriptor-discovery.d.ts +78 -0
- package/packages/daemon/dist/terminal/protocol/session-descriptor-discovery.js +294 -0
- package/packages/daemon/dist/terminal/protocol/workspace-tmux-adapter.d.ts +90 -0
- package/packages/daemon/dist/terminal/protocol/workspace-tmux-adapter.js +213 -0
- package/packages/daemon/dist/terminal/session-runtime/authority-arbiter.d.ts +36 -0
- package/packages/daemon/dist/terminal/session-runtime/authority-arbiter.js +260 -0
- package/packages/daemon/dist/terminal/session-runtime/causal-cell-ledger.d.ts +29 -0
- package/packages/daemon/dist/terminal/session-runtime/causal-cell-ledger.js +278 -0
- package/packages/daemon/dist/terminal/session-runtime/interaction-receipt-facts.d.ts +12 -0
- package/packages/daemon/dist/terminal/session-runtime/interaction-receipt-facts.js +147 -0
- package/packages/daemon/dist/terminal/session-runtime/multiplexer-backend.d.ts +16 -0
- package/packages/daemon/dist/terminal/session-runtime/multiplexer-backend.js +116 -0
- package/packages/daemon/dist/terminal/session-runtime/registry.d.ts +148 -0
- package/packages/daemon/dist/terminal/session-runtime/registry.js +1368 -0
- package/packages/daemon/dist/terminal/session-runtime/runtime-observability.d.ts +118 -0
- package/packages/daemon/dist/terminal/session-runtime/runtime-observability.js +72 -0
- package/packages/daemon/dist/terminal/session-runtime/runtime-scheduler.d.ts +11 -0
- package/packages/daemon/dist/terminal/session-runtime/runtime-scheduler.js +10 -0
- package/packages/daemon/dist/terminal/session-runtime/runtime-trace-correlator.d.ts +18 -0
- package/packages/daemon/dist/terminal/session-runtime/runtime-trace-correlator.js +48 -0
- package/packages/daemon/dist/terminal/session-runtime/semantic-mutation-executor.d.ts +69 -0
- package/packages/daemon/dist/terminal/session-runtime/semantic-mutation-executor.js +353 -0
- package/packages/daemon/dist/terminal/session-runtime/semantic-mutation-resource-changes.d.ts +8 -0
- package/packages/daemon/dist/terminal/session-runtime/semantic-mutation-resource-changes.js +32 -0
- package/packages/daemon/dist/terminal/session-runtime/terminal-delivery-hub.d.ts +91 -0
- package/packages/daemon/dist/terminal/session-runtime/terminal-delivery-hub.js +1362 -0
- package/packages/daemon/dist/terminal/session-runtime/terminal-delivery-observation-identity.d.ts +3 -0
- package/packages/daemon/dist/terminal/session-runtime/terminal-delivery-observation-identity.js +9 -0
- package/packages/daemon/dist/terminal/session-runtime/terminal-interpreter-backend.d.ts +55 -0
- package/packages/daemon/dist/terminal/session-runtime/terminal-replica-interpreter.d.ts +91 -0
- package/packages/daemon/dist/terminal/session-runtime/terminal-replica-interpreter.js +528 -0
- package/packages/daemon/dist/terminal/session-runtime/terminal-replica-owner.d.ts +50 -0
- package/packages/daemon/dist/terminal/session-runtime/terminal-replica-owner.js +387 -0
- package/packages/daemon/dist/terminal/session-runtime/terminal-replica-shadow-projections.d.ts +37 -0
- package/packages/daemon/dist/terminal/session-runtime/terminal-replica-shadow-projections.js +21 -0
- package/packages/daemon/dist/terminal/session-runtime/transport-binding.d.ts +75 -0
- package/packages/daemon/dist/terminal/session-runtime/transport-binding.js +474 -0
- package/packages/daemon/dist/terminal/session-runtime/xterm-terminal-interpreter-backend.d.ts +26 -0
- package/packages/daemon/dist/terminal/session-runtime/xterm-terminal-interpreter-backend.js +276 -0
- package/packages/daemon/dist/tui/async-disposable-slot.d.ts +18 -0
- package/packages/daemon/dist/tui/async-disposable-slot.js +57 -0
- package/packages/daemon/dist/tui/chrome/cheatsheet.d.ts +59 -0
- package/packages/daemon/dist/tui/chrome/cheatsheet.js +211 -0
- package/packages/daemon/dist/tui/chrome/chip.d.ts +21 -0
- package/packages/daemon/dist/tui/chrome/chip.js +25 -0
- package/packages/daemon/dist/tui/chrome/events.d.ts +51 -0
- package/packages/daemon/dist/tui/chrome/events.js +94 -0
- package/packages/daemon/dist/tui/chrome/front-door.d.ts +16 -0
- package/packages/daemon/dist/tui/chrome/front-door.js +16 -0
- package/packages/daemon/dist/tui/chrome/kitty-keys.d.ts +41 -0
- package/packages/daemon/dist/tui/chrome/kitty-keys.js +54 -0
- package/packages/daemon/dist/tui/chrome/menu.d.ts +92 -0
- package/packages/daemon/dist/tui/chrome/menu.js +251 -0
- package/packages/daemon/dist/tui/chrome/notify-prefs.d.ts +47 -0
- package/packages/daemon/dist/tui/chrome/notify-prefs.js +13 -0
- package/packages/daemon/dist/tui/chrome/notify-state.d.ts +13 -0
- package/packages/daemon/dist/tui/chrome/notify-state.js +77 -0
- package/packages/daemon/dist/tui/chrome/notify.d.ts +361 -0
- package/packages/daemon/dist/tui/chrome/notify.js +711 -0
- package/packages/daemon/dist/tui/chrome/panels.d.ts +72 -0
- package/packages/daemon/dist/tui/chrome/panels.js +60 -0
- package/packages/daemon/dist/tui/chrome/sidebar.d.ts +77 -0
- package/packages/daemon/dist/tui/chrome/sidebar.js +183 -0
- package/packages/daemon/dist/tui/chrome/snapshot.d.ts +110 -0
- package/packages/daemon/dist/tui/chrome/snapshot.js +290 -0
- package/packages/daemon/dist/tui/chrome/statusline.d.ts +237 -0
- package/packages/daemon/dist/tui/chrome/statusline.js +552 -0
- package/packages/daemon/dist/tui/chrome/updater.d.ts +230 -0
- package/packages/daemon/dist/tui/chrome/updater.js +651 -0
- package/packages/daemon/dist/tui/chrome/welcome.d.ts +41 -0
- package/packages/daemon/dist/tui/chrome/welcome.js +117 -0
- package/packages/daemon/dist/tui/compiled.d.ts +86 -0
- package/packages/daemon/dist/tui/compiled.js +165 -0
- package/packages/daemon/dist/tui/detect/agent-resolution.d.ts +56 -0
- package/packages/daemon/dist/tui/detect/agent-resolution.js +60 -0
- package/packages/daemon/dist/tui/detect/classify.d.ts +107 -0
- package/packages/daemon/dist/tui/detect/classify.js +184 -0
- package/packages/daemon/dist/tui/detect/manifest-loader.d.ts +54 -0
- package/packages/daemon/dist/tui/detect/manifest-loader.js +242 -0
- package/packages/daemon/dist/tui/detect/manifest.d.ts +111 -0
- package/packages/daemon/dist/tui/detect/manifest.js +126 -0
- package/packages/daemon/dist/tui/detect/manifests.d.ts +40 -0
- package/packages/daemon/dist/tui/detect/manifests.js +535 -0
- package/packages/daemon/dist/tui/detect/process-tree.d.ts +96 -0
- package/packages/daemon/dist/tui/detect/process-tree.js +194 -0
- package/packages/daemon/dist/tui/detect/session-id.d.ts +110 -0
- package/packages/daemon/dist/tui/detect/session-id.js +414 -0
- package/packages/daemon/dist/tui/detect/snapshot.d.ts +27 -0
- package/packages/daemon/dist/tui/detect/snapshot.js +81 -0
- package/packages/daemon/dist/tui/integrations/claude.d.ts +65 -0
- package/packages/daemon/dist/tui/integrations/claude.js +151 -0
- package/packages/daemon/dist/tui/integrations/offer.d.ts +47 -0
- package/packages/daemon/dist/tui/integrations/offer.js +134 -0
- package/packages/daemon/dist/tui/integrations/opencode.d.ts +37 -0
- package/packages/daemon/dist/tui/integrations/opencode.js +117 -0
- package/packages/daemon/dist/tui/mirror/ack-writer.d.ts +36 -0
- package/packages/daemon/dist/tui/mirror/ack-writer.js +78 -0
- package/packages/daemon/dist/tui/mirror/activity-surface-view.d.ts +8 -0
- package/packages/daemon/dist/tui/mirror/activity-surface-view.jsx +69 -0
- package/packages/daemon/dist/tui/mirror/activity-surface.d.ts +103 -0
- package/packages/daemon/dist/tui/mirror/activity-surface.js +271 -0
- package/packages/daemon/dist/tui/mirror/agent-chip.d.ts +76 -0
- package/packages/daemon/dist/tui/mirror/agent-chip.js +84 -0
- package/packages/daemon/dist/tui/mirror/agent-lifecycle.d.ts +217 -0
- package/packages/daemon/dist/tui/mirror/agent-lifecycle.js +372 -0
- package/packages/daemon/dist/tui/mirror/agent-provisioning-executor.d.ts +42 -0
- package/packages/daemon/dist/tui/mirror/agent-provisioning-executor.js +86 -0
- package/packages/daemon/dist/tui/mirror/agent-rows.d.ts +119 -0
- package/packages/daemon/dist/tui/mirror/agent-rows.js +126 -0
- package/packages/daemon/dist/tui/mirror/ansi-palette.d.ts +3 -0
- package/packages/daemon/dist/tui/mirror/ansi-palette.js +3 -0
- package/packages/daemon/dist/tui/mirror/app-state.d.ts +114 -0
- package/packages/daemon/dist/tui/mirror/app-state.js +294 -0
- package/packages/daemon/dist/tui/mirror/application-keybindings.d.ts +18 -0
- package/packages/daemon/dist/tui/mirror/application-keybindings.js +33 -0
- package/packages/daemon/dist/tui/mirror/application-shell-daemon-connection.d.ts +53 -0
- package/packages/daemon/dist/tui/mirror/application-shell-daemon-connection.js +253 -0
- package/packages/daemon/dist/tui/mirror/application-shell-daemon-session.d.ts +22 -0
- package/packages/daemon/dist/tui/mirror/application-shell-daemon-session.js +45 -0
- package/packages/daemon/dist/tui/mirror/attention.d.ts +63 -0
- package/packages/daemon/dist/tui/mirror/attention.js +59 -0
- package/packages/daemon/dist/tui/mirror/blit.d.ts +82 -0
- package/packages/daemon/dist/tui/mirror/blit.js +120 -0
- package/packages/daemon/dist/tui/mirror/canonical-workspace-routing.d.ts +11 -0
- package/packages/daemon/dist/tui/mirror/canonical-workspace-routing.js +45 -0
- package/packages/daemon/dist/tui/mirror/changes-surface-view.d.ts +19 -0
- package/packages/daemon/dist/tui/mirror/changes-surface-view.jsx +92 -0
- package/packages/daemon/dist/tui/mirror/changes-surface.d.ts +115 -0
- package/packages/daemon/dist/tui/mirror/changes-surface.js +210 -0
- package/packages/daemon/dist/tui/mirror/composite-layout.d.ts +91 -0
- package/packages/daemon/dist/tui/mirror/composite-layout.js +539 -0
- package/packages/daemon/dist/tui/mirror/configless-session-bootstrap.d.ts +39 -0
- package/packages/daemon/dist/tui/mirror/configless-session-bootstrap.js +133 -0
- package/packages/daemon/dist/tui/mirror/dialog-model.d.ts +154 -0
- package/packages/daemon/dist/tui/mirror/dialog-model.js +183 -0
- package/packages/daemon/dist/tui/mirror/dialog-stack-core.d.ts +45 -0
- package/packages/daemon/dist/tui/mirror/dialog-stack-core.js +232 -0
- package/packages/daemon/dist/tui/mirror/dialog-stack.d.ts +2 -0
- package/packages/daemon/dist/tui/mirror/dialog-stack.js +2 -0
- package/packages/daemon/dist/tui/mirror/diff-model.d.ts +169 -0
- package/packages/daemon/dist/tui/mirror/diff-model.js +332 -0
- package/packages/daemon/dist/tui/mirror/editor-buffer.d.ts +24 -0
- package/packages/daemon/dist/tui/mirror/editor-buffer.js +47 -0
- package/packages/daemon/dist/tui/mirror/editor-open-policy.d.ts +9 -0
- package/packages/daemon/dist/tui/mirror/editor-open-policy.js +9 -0
- package/packages/daemon/dist/tui/mirror/features/changes/contract.d.ts +75 -0
- package/packages/daemon/dist/tui/mirror/features/changes/controller.d.ts +10 -0
- package/packages/daemon/dist/tui/mirror/features/changes/controller.js +454 -0
- package/packages/daemon/dist/tui/mirror/features/changes/feature.d.ts +10 -0
- package/packages/daemon/dist/tui/mirror/features/changes/feature.jsx +9 -0
- package/packages/daemon/dist/tui/mirror/features/dialogs/contract.d.ts +47 -0
- package/packages/daemon/dist/tui/mirror/features/dialogs/contract.js +1 -0
- package/packages/daemon/dist/tui/mirror/features/dialogs/feature.d.ts +12 -0
- package/packages/daemon/dist/tui/mirror/features/dialogs/feature.jsx +123 -0
- package/packages/daemon/dist/tui/mirror/features/dialogs/session.d.ts +9 -0
- package/packages/daemon/dist/tui/mirror/features/dialogs/session.js +160 -0
- package/packages/daemon/dist/tui/mirror/features/files/feature.d.ts +16 -0
- package/packages/daemon/dist/tui/mirror/features/files/feature.jsx +15 -0
- package/packages/daemon/dist/tui/mirror/features/files/session.d.ts +133 -0
- package/packages/daemon/dist/tui/mirror/features/files/session.js +617 -0
- package/packages/daemon/dist/tui/mirror/features/home/feature.d.ts +28 -0
- package/packages/daemon/dist/tui/mirror/features/home/feature.jsx +122 -0
- package/packages/daemon/dist/tui/mirror/features/missions-activity/contract.d.ts +84 -0
- package/packages/daemon/dist/tui/mirror/features/missions-activity/contract.js +3 -0
- package/packages/daemon/dist/tui/mirror/features/missions-activity/feature.d.ts +6 -0
- package/packages/daemon/dist/tui/mirror/features/missions-activity/feature.jsx +5 -0
- package/packages/daemon/dist/tui/mirror/features/missions-activity/session.d.ts +5 -0
- package/packages/daemon/dist/tui/mirror/features/missions-activity/session.js +377 -0
- package/packages/daemon/dist/tui/mirror/features/palette/contract.d.ts +116 -0
- package/packages/daemon/dist/tui/mirror/features/palette/contract.js +9 -0
- package/packages/daemon/dist/tui/mirror/features/palette/feature.d.ts +4 -0
- package/packages/daemon/dist/tui/mirror/features/palette/feature.js +3 -0
- package/packages/daemon/dist/tui/mirror/features/palette/session.d.ts +2 -0
- package/packages/daemon/dist/tui/mirror/features/palette/session.js +393 -0
- package/packages/daemon/dist/tui/mirror/features/palette/surface.d.ts +7 -0
- package/packages/daemon/dist/tui/mirror/features/palette/surface.jsx +48 -0
- package/packages/daemon/dist/tui/mirror/features/performance-hud/contract.d.ts +17 -0
- package/packages/daemon/dist/tui/mirror/features/performance-hud/contract.js +1 -0
- package/packages/daemon/dist/tui/mirror/features/performance-hud/feature.d.ts +3 -0
- package/packages/daemon/dist/tui/mirror/features/performance-hud/feature.jsx +2 -0
- package/packages/daemon/dist/tui/mirror/features/performance-hud/session.d.ts +8 -0
- package/packages/daemon/dist/tui/mirror/features/performance-hud/session.js +148 -0
- package/packages/daemon/dist/tui/mirror/features/performance-hud/surface.d.ts +17 -0
- package/packages/daemon/dist/tui/mirror/features/performance-hud/surface.jsx +64 -0
- package/packages/daemon/dist/tui/mirror/features/rich-preview/asset-loader.d.ts +9 -0
- package/packages/daemon/dist/tui/mirror/features/rich-preview/asset-loader.js +125 -0
- package/packages/daemon/dist/tui/mirror/features/rich-preview/contract.d.ts +71 -0
- package/packages/daemon/dist/tui/mirror/features/rich-preview/contract.js +1 -0
- package/packages/daemon/dist/tui/mirror/features/rich-preview/feature.d.ts +23 -0
- package/packages/daemon/dist/tui/mirror/features/rich-preview/feature.jsx +103 -0
- package/packages/daemon/dist/tui/mirror/features/rich-preview/session.d.ts +23 -0
- package/packages/daemon/dist/tui/mirror/features/rich-preview/session.js +310 -0
- package/packages/daemon/dist/tui/mirror/features/settings/catalog.d.ts +7 -0
- package/packages/daemon/dist/tui/mirror/features/settings/catalog.js +10 -0
- package/packages/daemon/dist/tui/mirror/features/settings/contract.d.ts +35 -0
- package/packages/daemon/dist/tui/mirror/features/settings/contract.js +1 -0
- package/packages/daemon/dist/tui/mirror/features/settings/feature.d.ts +3 -0
- package/packages/daemon/dist/tui/mirror/features/settings/feature.js +2 -0
- package/packages/daemon/dist/tui/mirror/features/settings/session.d.ts +3 -0
- package/packages/daemon/dist/tui/mirror/features/settings/session.js +309 -0
- package/packages/daemon/dist/tui/mirror/file-tree.d.ts +142 -0
- package/packages/daemon/dist/tui/mirror/file-tree.js +283 -0
- package/packages/daemon/dist/tui/mirror/files-surface-view.d.ts +17 -0
- package/packages/daemon/dist/tui/mirror/files-surface-view.jsx +92 -0
- package/packages/daemon/dist/tui/mirror/files-surface.d.ts +123 -0
- package/packages/daemon/dist/tui/mirror/files-surface.js +237 -0
- package/packages/daemon/dist/tui/mirror/focus-projection.d.ts +20 -0
- package/packages/daemon/dist/tui/mirror/focus-projection.js +80 -0
- package/packages/daemon/dist/tui/mirror/folder-picker.d.ts +38 -0
- package/packages/daemon/dist/tui/mirror/folder-picker.js +114 -0
- package/packages/daemon/dist/tui/mirror/frame-coalescer.d.ts +29 -0
- package/packages/daemon/dist/tui/mirror/frame-coalescer.js +74 -0
- package/packages/daemon/dist/tui/mirror/home-model.d.ts +81 -0
- package/packages/daemon/dist/tui/mirror/home-model.js +125 -0
- package/packages/daemon/dist/tui/mirror/home-surface-model.d.ts +113 -0
- package/packages/daemon/dist/tui/mirror/home-surface-model.js +297 -0
- package/packages/daemon/dist/tui/mirror/home-surface.d.ts +11 -0
- package/packages/daemon/dist/tui/mirror/home-surface.jsx +110 -0
- package/packages/daemon/dist/tui/mirror/host-terminal.d.ts +28 -0
- package/packages/daemon/dist/tui/mirror/host-terminal.js +33 -0
- package/packages/daemon/dist/tui/mirror/hosted.d.ts +179 -0
- package/packages/daemon/dist/tui/mirror/hosted.js +239 -0
- package/packages/daemon/dist/tui/mirror/input-lifecycle.d.ts +140 -0
- package/packages/daemon/dist/tui/mirror/input-lifecycle.js +147 -0
- package/packages/daemon/dist/tui/mirror/interaction-flow.d.ts +30 -0
- package/packages/daemon/dist/tui/mirror/interaction-flow.js +41 -0
- package/packages/daemon/dist/tui/mirror/legacy/missions-workspace-loader.d.ts +19 -0
- package/packages/daemon/dist/tui/mirror/legacy/missions-workspace-loader.js +84 -0
- package/packages/daemon/dist/tui/mirror/menu-model.d.ts +89 -0
- package/packages/daemon/dist/tui/mirror/menu-model.js +143 -0
- package/packages/daemon/dist/tui/mirror/missions-dashboard.d.ts +68 -0
- package/packages/daemon/dist/tui/mirror/missions-dashboard.js +261 -0
- package/packages/daemon/dist/tui/mirror/missions-render-fixtures.d.ts +13 -0
- package/packages/daemon/dist/tui/mirror/missions-render-fixtures.js +330 -0
- package/packages/daemon/dist/tui/mirror/missions-surface-controller.d.ts +84 -0
- package/packages/daemon/dist/tui/mirror/missions-surface-controller.js +314 -0
- package/packages/daemon/dist/tui/mirror/missions-surface.d.ts +17 -0
- package/packages/daemon/dist/tui/mirror/missions-surface.jsx +239 -0
- package/packages/daemon/dist/tui/mirror/missions-workspace.d.ts +341 -0
- package/packages/daemon/dist/tui/mirror/missions-workspace.js +1399 -0
- package/packages/daemon/dist/tui/mirror/multiplexer-action-executor.d.ts +71 -0
- package/packages/daemon/dist/tui/mirror/multiplexer-action-executor.js +233 -0
- package/packages/daemon/dist/tui/mirror/open-tui-pane-stream-socket.d.ts +16 -0
- package/packages/daemon/dist/tui/mirror/open-tui-pane-stream-socket.js +32 -0
- package/packages/daemon/dist/tui/mirror/open-tui-verified-routing.d.ts +19 -0
- package/packages/daemon/dist/tui/mirror/open-tui-verified-routing.js +45 -0
- package/packages/daemon/dist/tui/mirror/open-tui-workspace-runtime-port.d.ts +36 -0
- package/packages/daemon/dist/tui/mirror/open-tui-workspace-runtime-port.js +1069 -0
- package/packages/daemon/dist/tui/mirror/palette-surface-adapter.d.ts +58 -0
- package/packages/daemon/dist/tui/mirror/palette-surface-adapter.js +384 -0
- package/packages/daemon/dist/tui/mirror/palette.d.ts +315 -0
- package/packages/daemon/dist/tui/mirror/palette.js +522 -0
- package/packages/daemon/dist/tui/mirror/pane-frame-state.d.ts +68 -0
- package/packages/daemon/dist/tui/mirror/pane-frame-state.js +124 -0
- package/packages/daemon/dist/tui/mirror/pane-mirror.d.ts +205 -0
- package/packages/daemon/dist/tui/mirror/pane-mirror.js +584 -0
- package/packages/daemon/dist/tui/mirror/pane-surface.d.ts +257 -0
- package/packages/daemon/dist/tui/mirror/pane-surface.jsx +855 -0
- package/packages/daemon/dist/tui/mirror/panel-host-reactive.d.ts +7 -0
- package/packages/daemon/dist/tui/mirror/panel-host-reactive.js +13 -0
- package/packages/daemon/dist/tui/mirror/panel-host.d.ts +69 -0
- package/packages/daemon/dist/tui/mirror/panel-host.js +242 -0
- package/packages/daemon/dist/tui/mirror/perf-tap.d.ts +13 -0
- package/packages/daemon/dist/tui/mirror/perf-tap.js +32 -0
- package/packages/daemon/dist/tui/mirror/performance-events.d.ts +404 -0
- package/packages/daemon/dist/tui/mirror/performance-events.js +46 -0
- package/packages/daemon/dist/tui/mirror/recipe-components.d.ts +93 -0
- package/packages/daemon/dist/tui/mirror/recipe-components.jsx +135 -0
- package/packages/daemon/dist/tui/mirror/recipes.d.ts +90 -0
- package/packages/daemon/dist/tui/mirror/recipes.js +395 -0
- package/packages/daemon/dist/tui/mirror/reference-performance-trace.d.ts +80 -0
- package/packages/daemon/dist/tui/mirror/reference-performance-trace.js +597 -0
- package/packages/daemon/dist/tui/mirror/renderer-commands.d.ts +60 -0
- package/packages/daemon/dist/tui/mirror/renderer-commands.js +250 -0
- package/packages/daemon/dist/tui/mirror/resize-model.d.ts +76 -0
- package/packages/daemon/dist/tui/mirror/resize-model.js +105 -0
- package/packages/daemon/dist/tui/mirror/resize-transaction.d.ts +102 -0
- package/packages/daemon/dist/tui/mirror/resize-transaction.js +221 -0
- package/packages/daemon/dist/tui/mirror/rich-placement-projection.d.ts +64 -0
- package/packages/daemon/dist/tui/mirror/rich-placement-projection.js +80 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-appearance-owner.d.ts +22 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-appearance-owner.js +79 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-bootstrap.d.ts +61 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-bootstrap.js +51 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-generation-starter.d.ts +26 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-generation-starter.js +80 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-home-catalog-owner.d.ts +21 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-home-catalog-owner.js +88 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-home-catalog.d.ts +60 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-home-catalog.js +320 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-host-focus-control-binding.d.ts +28 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-host-focus-control-binding.js +111 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-host-focus-control-capability.d.ts +16 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-host-focus-control-capability.js +25 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-host-focus-presentation.d.ts +38 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-host-focus-presentation.js +129 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-host-focus-test-control.d.ts +43 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-host-focus-test-control.js +242 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-input-readiness.d.ts +5 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-input-readiness.js +20 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-lifecycle.d.ts +72 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-lifecycle.js +297 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-optional-features.d.ts +14 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-optional-features.js +12 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-palette-command-owner.d.ts +23 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-palette-command-owner.js +61 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-palette-input.d.ts +31 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-palette-input.js +60 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-pane-rename-input.d.ts +22 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-pane-rename-input.js +30 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-pane-rename-owner.d.ts +14 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-pane-rename-owner.js +38 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-pending-terminal-input.d.ts +53 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-pending-terminal-input.js +74 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-performance-log.d.ts +20 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-performance-log.js +81 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-post-render-runtime.d.ts +37 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-post-render-runtime.js +117 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-root-configuration.d.ts +21 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-root-configuration.js +21 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-root-renderer.d.ts +9 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-root-renderer.js +27 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-session-focus-owner.d.ts +14 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-session-focus-owner.js +65 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-shell-binding.d.ts +34 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-shell-binding.js +307 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-shell-viewport.d.ts +8 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-shell-viewport.js +14 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-frame-readiness-owner.d.ts +6 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-frame-readiness-owner.js +20 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-host-focus-owner.d.ts +3 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-host-focus-owner.js +25 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-input-ingress.d.ts +15 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-input-ingress.js +96 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-interaction-controller.d.ts +65 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-interaction-controller.js +1326 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-palette-owner.d.ts +65 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-palette-owner.js +217 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-paste.d.ts +4 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-paste.js +22 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-renderer-sources.d.ts +15 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-renderer-sources.js +31 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-selection-owner.d.ts +47 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-selection-owner.js +161 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-workspace-policy.d.ts +44 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-workspace-policy.js +177 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-workspace.d.ts +103 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-workspace.jsx +720 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-theme-repaint.d.ts +24 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-theme-repaint.js +34 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-transient-note-owner.d.ts +15 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-transient-note-owner.js +29 -0
- package/packages/daemon/dist/tui/mirror/runtime/bounded-performance-record-writer.d.ts +17 -0
- package/packages/daemon/dist/tui/mirror/runtime/bounded-performance-record-writer.js +67 -0
- package/packages/daemon/dist/tui/mirror/runtime/causal-cell-client-ledger.d.ts +64 -0
- package/packages/daemon/dist/tui/mirror/runtime/causal-cell-client-ledger.js +271 -0
- package/packages/daemon/dist/tui/mirror/runtime/causal-cell-input-fixture.d.ts +12 -0
- package/packages/daemon/dist/tui/mirror/runtime/causal-cell-input-fixture.js +43 -0
- package/packages/daemon/dist/tui/mirror/runtime/changes-deferred-identity.d.ts +15 -0
- package/packages/daemon/dist/tui/mirror/runtime/changes-deferred-identity.js +17 -0
- package/packages/daemon/dist/tui/mirror/runtime/daemon-authority-rebind.d.ts +29 -0
- package/packages/daemon/dist/tui/mirror/runtime/daemon-authority-rebind.js +128 -0
- package/packages/daemon/dist/tui/mirror/runtime/deferred-intent-queue.d.ts +12 -0
- package/packages/daemon/dist/tui/mirror/runtime/deferred-intent-queue.js +40 -0
- package/packages/daemon/dist/tui/mirror/runtime/editor-primitives.d.ts +23 -0
- package/packages/daemon/dist/tui/mirror/runtime/editor-primitives.js +39 -0
- package/packages/daemon/dist/tui/mirror/runtime/file-content-primitives.d.ts +3 -0
- package/packages/daemon/dist/tui/mirror/runtime/file-content-primitives.js +9 -0
- package/packages/daemon/dist/tui/mirror/runtime/fleet-lifecycle-client.d.ts +4 -0
- package/packages/daemon/dist/tui/mirror/runtime/fleet-lifecycle-client.js +27 -0
- package/packages/daemon/dist/tui/mirror/runtime/focus-framebuffer-projection.d.ts +16 -0
- package/packages/daemon/dist/tui/mirror/runtime/focus-framebuffer-projection.js +53 -0
- package/packages/daemon/dist/tui/mirror/runtime/generation-bound-slot.d.ts +7 -0
- package/packages/daemon/dist/tui/mirror/runtime/generation-bound-slot.js +23 -0
- package/packages/daemon/dist/tui/mirror/runtime/host-local-tmux-adapter.d.ts +17 -0
- package/packages/daemon/dist/tui/mirror/runtime/host-local-tmux-adapter.js +90 -0
- package/packages/daemon/dist/tui/mirror/runtime/hosted-tty-size-bridge.d.ts +55 -0
- package/packages/daemon/dist/tui/mirror/runtime/hosted-tty-size-bridge.js +166 -0
- package/packages/daemon/dist/tui/mirror/runtime/latest-intent-fence.d.ts +11 -0
- package/packages/daemon/dist/tui/mirror/runtime/latest-intent-fence.js +14 -0
- package/packages/daemon/dist/tui/mirror/runtime/local-view-controller.d.ts +30 -0
- package/packages/daemon/dist/tui/mirror/runtime/local-view-controller.js +58 -0
- package/packages/daemon/dist/tui/mirror/runtime/modal-admission-coordinator.d.ts +44 -0
- package/packages/daemon/dist/tui/mirror/runtime/modal-admission-coordinator.js +118 -0
- package/packages/daemon/dist/tui/mirror/runtime/modal-pointer-capture.d.ts +13 -0
- package/packages/daemon/dist/tui/mirror/runtime/modal-pointer-capture.js +12 -0
- package/packages/daemon/dist/tui/mirror/runtime/open-tui-generation-host.d.ts +68 -0
- package/packages/daemon/dist/tui/mirror/runtime/open-tui-generation-host.js +834 -0
- package/packages/daemon/dist/tui/mirror/runtime/open-tui-session-owner.d.ts +19 -0
- package/packages/daemon/dist/tui/mirror/runtime/open-tui-session-owner.js +146 -0
- package/packages/daemon/dist/tui/mirror/runtime/optional-feature-registry.d.ts +45 -0
- package/packages/daemon/dist/tui/mirror/runtime/optional-feature-registry.js +178 -0
- package/packages/daemon/dist/tui/mirror/runtime/optional-feature-registry.typecheck.d.ts +11 -0
- package/packages/daemon/dist/tui/mirror/runtime/optional-feature-registry.typecheck.js +1 -0
- package/packages/daemon/dist/tui/mirror/runtime/palette-production-controller.d.ts +55 -0
- package/packages/daemon/dist/tui/mirror/runtime/palette-production-controller.js +126 -0
- package/packages/daemon/dist/tui/mirror/runtime/pane-resize-geometry.d.ts +11 -0
- package/packages/daemon/dist/tui/mirror/runtime/pane-resize-geometry.js +13 -0
- package/packages/daemon/dist/tui/mirror/runtime/pane-scoped-terminal-surface.d.ts +42 -0
- package/packages/daemon/dist/tui/mirror/runtime/pane-scoped-terminal-surface.jsx +67 -0
- package/packages/daemon/dist/tui/mirror/runtime/product-surface-policy.d.ts +11 -0
- package/packages/daemon/dist/tui/mirror/runtime/product-surface-policy.js +12 -0
- package/packages/daemon/dist/tui/mirror/runtime/renderer-cadence.d.ts +4 -0
- package/packages/daemon/dist/tui/mirror/runtime/renderer-cadence.js +4 -0
- package/packages/daemon/dist/tui/mirror/runtime/resize-terminal-pane.d.ts +35 -0
- package/packages/daemon/dist/tui/mirror/runtime/resize-terminal-pane.js +91 -0
- package/packages/daemon/dist/tui/mirror/runtime/rich-preview-demand.d.ts +14 -0
- package/packages/daemon/dist/tui/mirror/runtime/rich-preview-demand.js +14 -0
- package/packages/daemon/dist/tui/mirror/runtime/runtime-layout-presentation.d.ts +20 -0
- package/packages/daemon/dist/tui/mirror/runtime/runtime-layout-presentation.js +111 -0
- package/packages/daemon/dist/tui/mirror/runtime/select-terminal-pane.d.ts +25 -0
- package/packages/daemon/dist/tui/mirror/runtime/select-terminal-pane.js +90 -0
- package/packages/daemon/dist/tui/mirror/runtime/semantic-pane-publication.d.ts +10 -0
- package/packages/daemon/dist/tui/mirror/runtime/semantic-pane-publication.js +14 -0
- package/packages/daemon/dist/tui/mirror/runtime/semantic-shell-viewport-resize.d.ts +15 -0
- package/packages/daemon/dist/tui/mirror/runtime/semantic-shell-viewport-resize.js +56 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-dimensions-owner.d.ts +9 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-dimensions-owner.js +9 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-fast-lane-renderer-adapter.d.ts +52 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-fast-lane-renderer-adapter.js +610 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-frame-readiness.d.ts +16 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-frame-readiness.js +84 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-host-focus.d.ts +41 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-host-focus.js +347 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-host-frame-diagnostics.d.ts +3 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-host-frame-diagnostics.js +37 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-input-adapter.d.ts +10 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-input-adapter.js +50 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-layout-projection.d.ts +22 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-layout-projection.js +28 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-pane-input-router.d.ts +23 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-pane-input-router.js +82 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-selection.d.ts +66 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-selection.js +141 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-session-handoff.d.ts +50 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-session-handoff.js +89 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-tool-readiness.d.ts +31 -0
- package/packages/daemon/dist/tui/mirror/runtime/terminal-tool-readiness.js +64 -0
- package/packages/daemon/dist/tui/mirror/runtime/tool-resource-controller.d.ts +92 -0
- package/packages/daemon/dist/tui/mirror/runtime/tool-resource-controller.js +636 -0
- package/packages/daemon/dist/tui/mirror/runtime/tool-resource-projection.d.ts +59 -0
- package/packages/daemon/dist/tui/mirror/runtime/tool-resource-projection.js +169 -0
- package/packages/daemon/dist/tui/mirror/runtime/viewport-fit-coordinator.d.ts +8 -0
- package/packages/daemon/dist/tui/mirror/runtime/viewport-fit-coordinator.js +7 -0
- package/packages/daemon/dist/tui/mirror/runtime/workspace-terminal-fast-lane.d.ts +22 -0
- package/packages/daemon/dist/tui/mirror/runtime/workspace-terminal-fast-lane.js +498 -0
- package/packages/daemon/dist/tui/mirror/scrollbar-model.d.ts +35 -0
- package/packages/daemon/dist/tui/mirror/scrollbar-model.js +64 -0
- package/packages/daemon/dist/tui/mirror/search-model.d.ts +41 -0
- package/packages/daemon/dist/tui/mirror/search-model.js +62 -0
- package/packages/daemon/dist/tui/mirror/selection.d.ts +175 -0
- package/packages/daemon/dist/tui/mirror/selection.js +264 -0
- package/packages/daemon/dist/tui/mirror/semantic-pane-render-source.d.ts +147 -0
- package/packages/daemon/dist/tui/mirror/semantic-pane-render-source.js +562 -0
- package/packages/daemon/dist/tui/mirror/semantic-session-view.d.ts +86 -0
- package/packages/daemon/dist/tui/mirror/semantic-session-view.js +269 -0
- package/packages/daemon/dist/tui/mirror/settings-model.d.ts +108 -0
- package/packages/daemon/dist/tui/mirror/settings-model.js +304 -0
- package/packages/daemon/dist/tui/mirror/shell-chrome.d.ts +151 -0
- package/packages/daemon/dist/tui/mirror/shell-chrome.js +313 -0
- package/packages/daemon/dist/tui/mirror/size-truth.d.ts +92 -0
- package/packages/daemon/dist/tui/mirror/size-truth.js +104 -0
- package/packages/daemon/dist/tui/mirror/spans.d.ts +26 -0
- package/packages/daemon/dist/tui/mirror/spans.js +31 -0
- package/packages/daemon/dist/tui/mirror/status-grammar.d.ts +18 -0
- package/packages/daemon/dist/tui/mirror/status-grammar.js +29 -0
- package/packages/daemon/dist/tui/mirror/terminal-surface.d.ts +55 -0
- package/packages/daemon/dist/tui/mirror/terminal-surface.js +92 -0
- package/packages/daemon/dist/tui/mirror/terminal-text.d.ts +9 -0
- package/packages/daemon/dist/tui/mirror/terminal-text.js +38 -0
- package/packages/daemon/dist/tui/mirror/theme.d.ts +207 -0
- package/packages/daemon/dist/tui/mirror/theme.js +744 -0
- package/packages/daemon/dist/tui/mirror/ui/agent-badge.d.ts +11 -0
- package/packages/daemon/dist/tui/mirror/ui/agent-badge.jsx +14 -0
- package/packages/daemon/dist/tui/mirror/ui/badge.d.ts +13 -0
- package/packages/daemon/dist/tui/mirror/ui/badge.jsx +15 -0
- package/packages/daemon/dist/tui/mirror/ui/button.d.ts +26 -0
- package/packages/daemon/dist/tui/mirror/ui/button.jsx +66 -0
- package/packages/daemon/dist/tui/mirror/ui/dialog.d.ts +19 -0
- package/packages/daemon/dist/tui/mirror/ui/dialog.jsx +8 -0
- package/packages/daemon/dist/tui/mirror/ui/index.d.ts +16 -0
- package/packages/daemon/dist/tui/mirror/ui/index.js +16 -0
- package/packages/daemon/dist/tui/mirror/ui/key-hint.d.ts +13 -0
- package/packages/daemon/dist/tui/mirror/ui/key-hint.jsx +39 -0
- package/packages/daemon/dist/tui/mirror/ui/keyboard-router.d.ts +25 -0
- package/packages/daemon/dist/tui/mirror/ui/keyboard-router.jsx +46 -0
- package/packages/daemon/dist/tui/mirror/ui/menu.d.ts +24 -0
- package/packages/daemon/dist/tui/mirror/ui/menu.jsx +15 -0
- package/packages/daemon/dist/tui/mirror/ui/navigation-row.d.ts +21 -0
- package/packages/daemon/dist/tui/mirror/ui/navigation-row.jsx +62 -0
- package/packages/daemon/dist/tui/mirror/ui/overlay-frame.d.ts +25 -0
- package/packages/daemon/dist/tui/mirror/ui/overlay-frame.jsx +52 -0
- package/packages/daemon/dist/tui/mirror/ui/overlay-host.d.ts +24 -0
- package/packages/daemon/dist/tui/mirror/ui/overlay-host.jsx +33 -0
- package/packages/daemon/dist/tui/mirror/ui/overlay-list-row.d.ts +13 -0
- package/packages/daemon/dist/tui/mirror/ui/overlay-list-row.jsx +23 -0
- package/packages/daemon/dist/tui/mirror/ui/overlay-model.d.ts +29 -0
- package/packages/daemon/dist/tui/mirror/ui/overlay-model.js +45 -0
- package/packages/daemon/dist/tui/mirror/ui/state.d.ts +27 -0
- package/packages/daemon/dist/tui/mirror/ui/state.js +171 -0
- package/packages/daemon/dist/tui/mirror/ui/status-bar.d.ts +43 -0
- package/packages/daemon/dist/tui/mirror/ui/status-bar.jsx +102 -0
- package/packages/daemon/dist/tui/mirror/ui/surface.d.ts +14 -0
- package/packages/daemon/dist/tui/mirror/ui/surface.jsx +45 -0
- package/packages/daemon/dist/tui/mirror/ui/tabs.d.ts +26 -0
- package/packages/daemon/dist/tui/mirror/ui/tabs.jsx +88 -0
- package/packages/daemon/dist/tui/mirror/widget-fallback.d.ts +15 -0
- package/packages/daemon/dist/tui/mirror/widget-fallback.js +52 -0
- package/packages/daemon/dist/tui/mirror/widget-surface-model.d.ts +26 -0
- package/packages/daemon/dist/tui/mirror/widget-surface-model.js +145 -0
- package/packages/daemon/dist/tui/mirror/widget-surface.d.ts +13 -0
- package/packages/daemon/dist/tui/mirror/widget-surface.jsx +31 -0
- package/packages/daemon/dist/tui/mirror/workspace/agent-terminal-canvas.d.ts +53 -0
- package/packages/daemon/dist/tui/mirror/workspace/agent-terminal-canvas.js +77 -0
- package/packages/daemon/dist/tui/mirror/workspace/application-root-controller.d.ts +266 -0
- package/packages/daemon/dist/tui/mirror/workspace/application-root-controller.js +99 -0
- package/packages/daemon/dist/tui/mirror/workspace/application-shell-controller.d.ts +83 -0
- package/packages/daemon/dist/tui/mirror/workspace/application-shell-controller.js +292 -0
- package/packages/daemon/dist/tui/mirror/workspace/application-shell-surface-commands.d.ts +5 -0
- package/packages/daemon/dist/tui/mirror/workspace/application-shell-surface-commands.js +28 -0
- package/packages/daemon/dist/tui/mirror/workspace/application-shell.d.ts +49 -0
- package/packages/daemon/dist/tui/mirror/workspace/application-shell.js +97 -0
- package/packages/daemon/dist/tui/mirror/workspace/command-palette-surface-view.d.ts +11 -0
- package/packages/daemon/dist/tui/mirror/workspace/command-palette-surface-view.jsx +158 -0
- package/packages/daemon/dist/tui/mirror/workspace/command-palette-surface.d.ts +128 -0
- package/packages/daemon/dist/tui/mirror/workspace/command-palette-surface.js +342 -0
- package/packages/daemon/dist/tui/mirror/workspace/icons.d.ts +154 -0
- package/packages/daemon/dist/tui/mirror/workspace/icons.js +43 -0
- package/packages/daemon/dist/tui/mirror/workspace/pane-action-menu.d.ts +24 -0
- package/packages/daemon/dist/tui/mirror/workspace/pane-action-menu.jsx +20 -0
- package/packages/daemon/dist/tui/mirror/workspace/pane-frame.d.ts +143 -0
- package/packages/daemon/dist/tui/mirror/workspace/pane-frame.js +452 -0
- package/packages/daemon/dist/tui/mirror/workspace/terminal-pane-chrome.d.ts +152 -0
- package/packages/daemon/dist/tui/mirror/workspace/terminal-pane-chrome.js +555 -0
- package/packages/daemon/dist/tui/mirror/workspace/terminal-pane-header.d.ts +58 -0
- package/packages/daemon/dist/tui/mirror/workspace/terminal-pane-header.jsx +93 -0
- package/packages/daemon/dist/tui/mirror/workspace/terminal-window-strip.d.ts +75 -0
- package/packages/daemon/dist/tui/mirror/workspace/terminal-window-strip.jsx +253 -0
- package/packages/daemon/dist/tui/mirror/workspace/text.d.ts +2 -0
- package/packages/daemon/dist/tui/mirror/workspace/text.js +27 -0
- package/packages/daemon/dist/tui/mirror/workspace/workbench-controller.d.ts +23 -0
- package/packages/daemon/dist/tui/mirror/workspace/workbench-controller.js +34 -0
- package/packages/daemon/dist/tui/mirror/workspace/workbench-shell.d.ts +123 -0
- package/packages/daemon/dist/tui/mirror/workspace/workbench-shell.js +286 -0
- package/packages/daemon/dist/tui/mirror/workspace-ui-state.d.ts +174 -0
- package/packages/daemon/dist/tui/mirror/workspace-ui-state.js +885 -0
- package/packages/daemon/dist/tui/readiness.d.ts +22 -0
- package/packages/daemon/dist/tui/readiness.js +34 -0
- package/packages/daemon/dist/tui/team/entry.d.ts +37 -0
- package/packages/daemon/dist/tui/team/entry.js +20 -0
- package/packages/daemon/dist/tui/team/fuzzy.d.ts +38 -0
- package/packages/daemon/dist/tui/team/fuzzy.js +141 -0
- package/packages/daemon/dist/tui/team/home.d.ts +94 -0
- package/packages/daemon/dist/tui/team/home.js +115 -0
- package/packages/daemon/dist/tui/team/input.d.ts +22 -0
- package/packages/daemon/dist/tui/team/input.js +21 -0
- package/packages/daemon/dist/tui/team/keymap.d.ts +33 -0
- package/packages/daemon/dist/tui/team/keymap.js +99 -0
- package/packages/daemon/dist/tui/team/mouse.d.ts +18 -0
- package/packages/daemon/dist/tui/team/mouse.js +17 -0
- package/packages/daemon/dist/tui/team/nav.d.ts +21 -0
- package/packages/daemon/dist/tui/team/nav.js +33 -0
- package/packages/daemon/dist/tui/team/preview.d.ts +19 -0
- package/packages/daemon/dist/tui/team/preview.js +35 -0
- package/packages/daemon/dist/tui/team/projects.d.ts +52 -0
- package/packages/daemon/dist/tui/team/projects.js +159 -0
- package/packages/daemon/dist/tui/team/report.d.ts +51 -0
- package/packages/daemon/dist/tui/team/report.js +37 -0
- package/packages/daemon/dist/tui/team/sessions.d.ts +235 -0
- package/packages/daemon/dist/tui/team/sessions.js +292 -0
- package/packages/daemon/dist/tui/team/tree.d.ts +41 -0
- package/packages/daemon/dist/tui/team/tree.js +42 -0
- package/packages/daemon/dist/tui/team/wait-receipts.d.ts +60 -0
- package/packages/daemon/dist/tui/team/wait-receipts.js +153 -0
- package/packages/daemon/dist/tui/team/wait.d.ts +62 -0
- package/packages/daemon/dist/tui/team/wait.js +90 -0
- package/packages/daemon/dist/validate.js +16 -10
- package/packages/daemon/dist/widgets/lib/watcher.d.ts +5 -9
- package/packages/daemon/dist/widgets/lib/watcher.js +5 -92
- package/packages/daemon/dist/widgets/resolve.js +10 -7
- package/packages/daemon/dist/widgets/setup/setup-model.js +7 -9
- package/packages/daemon/src/attach.ts +2 -2
- package/packages/daemon/src/canonical.ts +19 -2
- package/packages/daemon/src/cli.ts +38 -36
- package/packages/daemon/src/command-center/actions/command-definitions.ts +91 -0
- package/packages/daemon/src/command-center/actions/dispatcher.ts +291 -10
- package/packages/daemon/src/command-center/actions/errors.ts +40 -0
- package/packages/daemon/src/command-center/actions/handlers/_project-context.ts +4 -5
- package/packages/daemon/src/command-center/actions/handlers/app-window-mutate.ts +54 -0
- package/packages/daemon/src/command-center/actions/handlers/config-actions.ts +59 -29
- package/packages/daemon/src/command-center/actions/handlers/daemon-shutdown.ts +12 -0
- package/packages/daemon/src/command-center/actions/handlers/fleet-lifecycle.ts +104 -0
- package/packages/daemon/src/command-center/actions/handlers/project-launch.ts +20 -4
- package/packages/daemon/src/command-center/actions/handlers/workspace-multiplexer.ts +96 -0
- package/packages/daemon/src/command-center/actions/handlers/workspace-open.ts +141 -0
- package/packages/daemon/src/command-center/actions/handlers/workspace-pane-create.ts +48 -0
- package/packages/daemon/src/command-center/actions/handlers/workspace-promote.ts +48 -0
- package/packages/daemon/src/command-center/actions/registry.ts +200 -1
- package/packages/daemon/src/command-center/actions/semantic-multiplexer-actions.ts +26 -0
- package/packages/daemon/src/command-center/agent-status-watch.ts +222 -0
- package/packages/daemon/src/command-center/daemon-fleet-facts-observer.ts +465 -0
- package/packages/daemon/src/command-center/discovery.ts +310 -5
- package/packages/daemon/src/command-center/owner-authority.ts +118 -0
- package/packages/daemon/src/command-center/pane-stream-issue.ts +247 -0
- package/packages/daemon/src/command-center/resources/agent-graph-overlay.ts +270 -0
- package/packages/daemon/src/command-center/resources/application-shell.ts +909 -0
- package/packages/daemon/src/command-center/resources/desktop-missions.ts +171 -0
- package/packages/daemon/src/command-center/resources/fleet-catalog.ts +200 -0
- package/packages/daemon/src/command-center/resources/fleet-resource-route.ts +61 -0
- package/packages/daemon/src/command-center/resources/startup-readiness-route.ts +172 -0
- package/packages/daemon/src/command-center/resources/startup-readiness.ts +250 -0
- package/packages/daemon/src/command-center/resources/terminal-runtime-inventory.ts +45 -0
- package/packages/daemon/src/command-center/resources/workspace-changes-authority.ts +594 -0
- package/packages/daemon/src/command-center/resources/workspace-changes-git.ts +278 -0
- package/packages/daemon/src/command-center/resources/workspace-files-authority.ts +583 -0
- package/packages/daemon/src/command-center/resources/workspace-missions-route.ts +125 -0
- package/packages/daemon/src/command-center/resources/workspace-resource-ids.ts +81 -0
- package/packages/daemon/src/command-center/resources/workspace-resource-routes.ts +147 -0
- package/packages/daemon/src/command-center/server.ts +732 -59
- package/packages/daemon/src/command-center/terminal-attachment-issue.ts +257 -0
- package/packages/daemon/src/command-center/workspace-resource-observer.ts +560 -0
- package/packages/daemon/src/command-center/ws-events.ts +853 -66
- package/packages/daemon/src/config.ts +35 -25
- package/packages/daemon/src/control/client.ts +128 -0
- package/packages/daemon/src/control/dispatch.ts +107 -0
- package/packages/daemon/src/control/fanout.ts +44 -0
- package/packages/daemon/src/control/frames.ts +40 -0
- package/packages/daemon/src/control/lifecycle.ts +163 -0
- package/packages/daemon/src/control/server.ts +237 -0
- package/packages/daemon/src/control/verbs.ts +118 -0
- package/packages/daemon/src/detect.ts +25 -20
- package/packages/daemon/src/doctor.ts +133 -33
- package/packages/daemon/src/index.ts +244 -2
- package/packages/daemon/src/init.ts +23 -22
- package/packages/daemon/src/inspect.ts +41 -8
- package/packages/daemon/src/launch.ts +56 -28
- package/packages/daemon/src/lib/agent-discovery.ts +53 -13
- package/packages/daemon/src/lib/agent-kind.ts +23 -0
- package/packages/daemon/src/lib/app-config.ts +143 -9
- package/packages/daemon/src/lib/app-window-kernel.ts +777 -0
- package/packages/daemon/src/lib/app-window-mutation.ts +178 -0
- package/packages/daemon/src/lib/app-window-repository.ts +650 -0
- package/packages/daemon/src/lib/app-window-state.ts +599 -0
- package/packages/daemon/src/lib/application-shell-app-windows.ts +357 -0
- package/packages/daemon/src/lib/auth/middleware.ts +9 -3
- package/packages/daemon/src/lib/canonical-daemon-bootstrap.ts +266 -0
- package/packages/daemon/src/lib/canonical-daemon.ts +695 -73
- package/packages/daemon/src/lib/chrome-front-door.ts +17 -0
- package/packages/daemon/src/lib/cli-action-bridge.ts +127 -91
- package/packages/daemon/src/lib/command-registry.ts +152 -0
- package/packages/daemon/src/lib/config-context.ts +61 -0
- package/packages/daemon/src/lib/daemon-embed.ts +1347 -387
- package/packages/daemon/src/lib/daemon-session-monitor.ts +274 -0
- package/packages/daemon/src/lib/daemon.ts +3 -46
- package/packages/daemon/src/lib/directory-watcher.ts +166 -0
- package/packages/daemon/src/lib/environment-identity.ts +82 -0
- package/packages/daemon/src/lib/errors.ts +7 -1
- package/packages/daemon/src/lib/fleet-agent-lifecycle.ts +74 -0
- package/packages/daemon/src/lib/fleet-lifecycle-authority.ts +535 -0
- package/packages/daemon/src/lib/headless-daemon.ts +406 -0
- package/packages/daemon/src/lib/launch-plan.ts +123 -4
- package/packages/daemon/src/lib/legacy-config-adapter.ts +28 -0
- package/packages/daemon/src/lib/legacy-config-migration.ts +145 -0
- package/packages/daemon/src/lib/legacy-theme-compat.ts +40 -0
- package/packages/daemon/src/lib/manifest-pack.ts +255 -0
- package/packages/daemon/src/lib/mission-projections.ts +775 -0
- package/packages/daemon/src/lib/mission-repository.ts +1311 -0
- package/packages/daemon/src/lib/onboarding-marker.ts +51 -0
- package/packages/daemon/src/lib/pane-chrome.ts +14 -0
- package/packages/daemon/src/lib/pane-source-credentials.ts +200 -0
- package/packages/daemon/src/lib/pane-widget.ts +182 -0
- package/packages/daemon/src/lib/project-inspect.ts +4 -0
- package/packages/daemon/src/lib/project-onboard.ts +19 -24
- package/packages/daemon/src/lib/project-probe.ts +38 -30
- package/packages/daemon/src/lib/project-readiness-probe.ts +578 -0
- package/packages/daemon/src/lib/project-readiness.ts +1034 -0
- package/packages/daemon/src/lib/project-registry.ts +45 -9
- package/packages/daemon/src/lib/project-resolver.ts +350 -0
- package/packages/daemon/src/lib/project-runtime-errors.ts +41 -0
- package/packages/daemon/src/lib/project-runtime-repository.ts +1194 -0
- package/packages/daemon/src/lib/resolved-config.ts +425 -0
- package/packages/daemon/src/lib/runtime-namespace.ts +186 -0
- package/packages/daemon/src/lib/semantic-resource-id.ts +17 -0
- package/packages/daemon/src/lib/session-monitor.ts +28 -20
- package/packages/daemon/src/lib/session-options.ts +3 -10
- package/packages/daemon/src/lib/state-home.ts +12 -0
- package/packages/daemon/src/lib/theme-mode.ts +11 -0
- package/packages/daemon/src/lib/tmux-external-interaction-observer.ts +632 -0
- package/packages/daemon/src/lib/tmux-interaction-options.ts +171 -0
- package/packages/daemon/src/lib/tmux-terminal-color.ts +44 -0
- package/packages/daemon/src/lib/tui-binary.ts +354 -34
- package/packages/daemon/src/lib/unix-socket-authority.ts +65 -0
- package/packages/daemon/src/lib/update-check.ts +5 -0
- package/packages/daemon/src/lib/widget-asset-policy.ts +3 -0
- package/packages/daemon/src/lib/widget-asset-store.ts +218 -0
- package/packages/daemon/src/lib/workspace-config-loader.ts +378 -0
- package/packages/daemon/src/lib/workspace-multiplexer-verbs.ts +1362 -0
- package/packages/daemon/src/lib/workspace-open-handoff.ts +340 -0
- package/packages/daemon/src/lib/workspace-open.ts +983 -0
- package/packages/daemon/src/lib/workspace-pane-creation.ts +1406 -0
- package/packages/daemon/src/lib/workspace-promotion.ts +1031 -0
- package/packages/daemon/src/lib/workspace-registry.ts +193 -25
- package/packages/daemon/src/lib/workspace-state-repository.ts +1204 -0
- package/packages/daemon/src/lib/workspace-state.ts +960 -0
- package/packages/daemon/src/lib/yaml-io.ts +8 -17
- package/packages/daemon/src/migrate.ts +134 -0
- package/packages/daemon/src/restart.ts +2 -2
- package/packages/daemon/src/restore.ts +67 -24
- package/packages/daemon/src/schemas/inspect.ts +9 -1
- package/packages/daemon/src/schemas/registry.ts +12 -22
- package/packages/daemon/src/schemas/ws-events.ts +14 -131
- package/packages/daemon/src/send.ts +191 -22
- package/packages/daemon/src/server/pane-stream-upgrade.ts +141 -0
- package/packages/daemon/src/server/terminal-attachment-upgrade.ts +153 -0
- package/packages/daemon/src/status.ts +13 -8
- package/packages/daemon/src/stop.ts +2 -2
- package/packages/daemon/src/terminal/MonotonicPtyInput.ts +153 -0
- package/packages/daemon/src/terminal/NodePtyAdapter.ts +53 -11
- package/packages/daemon/src/terminal/PtyAdapter.ts +111 -3
- package/packages/daemon/src/terminal/README.md +34 -16
- package/packages/daemon/src/terminal/attachments/admission-util.ts +97 -0
- package/packages/daemon/src/terminal/attachments/agent-status-probe.ts +474 -0
- package/packages/daemon/src/terminal/attachments/direct-websocket.ts +1482 -0
- package/packages/daemon/src/terminal/attachments/grouped-tmux.ts +293 -0
- package/packages/daemon/src/terminal/attachments/lease-manager.ts +1042 -0
- package/packages/daemon/src/terminal/attachments/native-runtime.ts +2206 -0
- package/packages/daemon/src/terminal/attachments/pty-tmux-attachment-launcher.ts +750 -0
- package/packages/daemon/src/terminal/attachments/semantic-pane-catalog.ts +365 -0
- package/packages/daemon/src/terminal/attachments/tmux-view-executor.ts +1095 -0
- package/packages/daemon/src/terminal/mirror/control-channel.ts +827 -0
- package/packages/daemon/src/terminal/mirror/control-mode-ownership.ts +34 -0
- package/packages/daemon/src/terminal/mirror/events.ts +128 -0
- package/packages/daemon/src/terminal/mirror/flow-ledger.ts +65 -0
- package/packages/daemon/src/terminal/mirror/mirror-service.ts +480 -0
- package/packages/daemon/src/terminal/mirror/pane-feed.ts +193 -0
- package/packages/daemon/src/terminal/mirror/session-channel.ts +2820 -0
- package/packages/daemon/src/terminal/mirror/trusted-inventory.ts +29 -0
- package/packages/daemon/src/terminal/pane-stream/lease-manager.ts +375 -0
- package/packages/daemon/src/terminal/pane-stream/pane-stream-websocket.ts +2612 -0
- package/packages/daemon/src/terminal/pane-stream/runtime.ts +78 -0
- package/packages/daemon/src/terminal/pane-stream/wire-ledger.ts +155 -0
- package/packages/daemon/src/terminal/protocol/README.md +14 -0
- package/packages/daemon/src/terminal/protocol/chunk-bytes.ts +20 -0
- package/packages/daemon/src/{tui/mirror → terminal/protocol}/control.ts +39 -6
- package/packages/daemon/src/{tui/mirror → terminal/protocol}/input-coalescer.ts +18 -7
- package/packages/daemon/src/terminal/protocol/layout-parse.ts +154 -0
- package/packages/daemon/src/terminal/protocol/pane-display-name.ts +185 -0
- package/packages/daemon/src/terminal/protocol/session-descriptor-discovery.ts +382 -0
- package/packages/daemon/src/terminal/protocol/workspace-tmux-adapter.ts +470 -0
- package/packages/daemon/src/terminal/session-runtime/authority-arbiter.ts +312 -0
- package/packages/daemon/src/terminal/session-runtime/causal-cell-ledger.ts +359 -0
- package/packages/daemon/src/terminal/session-runtime/interaction-receipt-facts.ts +173 -0
- package/packages/daemon/src/terminal/session-runtime/multiplexer-backend.ts +194 -0
- package/packages/daemon/src/terminal/session-runtime/registry.ts +2047 -0
- package/packages/daemon/src/terminal/session-runtime/runtime-observability.ts +267 -0
- package/packages/daemon/src/terminal/session-runtime/runtime-scheduler.ts +22 -0
- package/packages/daemon/src/terminal/session-runtime/runtime-trace-correlator.ts +58 -0
- package/packages/daemon/src/terminal/session-runtime/semantic-mutation-executor.ts +555 -0
- package/packages/daemon/src/terminal/session-runtime/semantic-mutation-resource-changes.ts +48 -0
- package/packages/daemon/src/terminal/session-runtime/terminal-delivery-hub.ts +1806 -0
- package/packages/daemon/src/terminal/session-runtime/terminal-delivery-observation-identity.ts +18 -0
- package/packages/daemon/src/terminal/session-runtime/terminal-interpreter-backend.ts +64 -0
- package/packages/daemon/src/terminal/session-runtime/terminal-replica-interpreter.ts +690 -0
- package/packages/daemon/src/terminal/session-runtime/terminal-replica-owner.ts +498 -0
- package/packages/daemon/src/terminal/session-runtime/terminal-replica-shadow-projections.ts +36 -0
- package/packages/daemon/src/terminal/session-runtime/transport-binding.ts +682 -0
- package/packages/daemon/src/terminal/session-runtime/xterm-headless-provenance.json +25 -0
- package/packages/daemon/src/terminal/session-runtime/xterm-terminal-interpreter-backend.ts +379 -0
- package/packages/daemon/src/tui/async-disposable-slot.ts +60 -0
- package/packages/daemon/src/tui/chrome/events.ts +4 -4
- package/packages/daemon/src/tui/chrome/front-door.ts +27 -0
- package/packages/daemon/src/tui/chrome/notify-prefs.ts +58 -0
- package/packages/daemon/src/tui/chrome/notify-state.ts +76 -0
- package/packages/daemon/src/tui/chrome/notify.ts +582 -84
- package/packages/daemon/src/tui/chrome/sidebar.ts +9 -4
- package/packages/daemon/src/tui/chrome/statusline.ts +15 -6
- package/packages/daemon/src/tui/chrome/updater.ts +367 -64
- package/packages/daemon/src/tui/compiled.ts +102 -6
- package/packages/daemon/src/tui/detect/agent-resolution.ts +85 -0
- package/packages/daemon/src/tui/detect/classify.ts +34 -0
- package/packages/daemon/src/tui/detect/manifest-loader.ts +54 -5
- package/packages/daemon/src/tui/detect/manifest.ts +24 -3
- package/packages/daemon/src/tui/detect/manifests.ts +240 -6
- package/packages/daemon/src/tui/detect/process-tree.ts +30 -4
- package/packages/daemon/src/tui/detect/session-id.ts +503 -0
- package/packages/daemon/src/tui/detect/snapshot.ts +38 -3
- package/packages/daemon/src/tui/integrations/claude.ts +1 -0
- package/packages/daemon/src/tui/integrations/opencode.ts +121 -0
- package/packages/daemon/src/tui/main.ts +53 -0
- package/packages/daemon/src/tui/mirror/RECIPES.md +59 -0
- package/packages/daemon/src/tui/mirror/SHELL_CHROME.md +39 -0
- package/packages/daemon/src/tui/mirror/THEME.md +48 -0
- package/packages/daemon/src/tui/mirror/__snapshots__/activity-surface-renderer.test.tsx.snap +42 -0
- package/packages/daemon/src/tui/mirror/__snapshots__/changes-terminal-surface-renderer.test.tsx.snap +267 -0
- package/packages/daemon/src/tui/mirror/__snapshots__/home-files-surface-renderer.test.tsx.snap +267 -0
- package/packages/daemon/src/tui/mirror/__snapshots__/missions-surface-renderer.test.tsx.snap +134 -0
- package/packages/daemon/src/tui/mirror/__snapshots__/recipes-gallery-renderer.test.tsx.snap +141 -0
- package/packages/daemon/src/tui/mirror/__snapshots__/shell-chrome-renderer.test.tsx.snap +134 -0
- package/packages/daemon/src/tui/mirror/activity-surface-view.tsx +169 -0
- package/packages/daemon/src/tui/mirror/activity-surface.ts +430 -0
- package/packages/daemon/src/tui/mirror/agent-chip.ts +40 -11
- package/packages/daemon/src/tui/mirror/agent-lifecycle.ts +468 -0
- package/packages/daemon/src/tui/mirror/agent-provisioning-executor.ts +151 -0
- package/packages/daemon/src/tui/mirror/agent-rows.ts +61 -5
- package/packages/daemon/src/tui/mirror/ansi-palette.ts +3 -0
- package/packages/daemon/src/tui/mirror/app-state.ts +185 -9
- package/packages/daemon/src/tui/mirror/app.tsx +2 -5264
- package/packages/daemon/src/tui/mirror/application-keybindings.ts +54 -0
- package/packages/daemon/src/tui/mirror/application-shell-daemon-connection.ts +344 -0
- package/packages/daemon/src/tui/mirror/application-shell-daemon-session.ts +74 -0
- package/packages/daemon/src/tui/mirror/attention.ts +110 -0
- package/packages/daemon/src/tui/mirror/canonical-workspace-routing.ts +63 -0
- package/packages/daemon/src/tui/mirror/changes-surface-view.tsx +263 -0
- package/packages/daemon/src/tui/mirror/changes-surface.ts +338 -0
- package/packages/daemon/src/tui/mirror/composite-layout.ts +710 -0
- package/packages/daemon/src/tui/mirror/configless-session-bootstrap.ts +192 -0
- package/packages/daemon/src/tui/mirror/dialog-model.ts +2 -2
- package/packages/daemon/src/tui/mirror/dialog-stack-core.ts +264 -0
- package/packages/daemon/src/tui/mirror/dialog-stack.ts +2 -354
- package/packages/daemon/src/tui/mirror/diff-model.ts +279 -4
- package/packages/daemon/src/tui/mirror/editor-buffer.ts +9 -70
- package/packages/daemon/src/tui/mirror/editor-open-policy.ts +16 -0
- package/packages/daemon/src/tui/mirror/features/changes/contract.ts +84 -0
- package/packages/daemon/src/tui/mirror/features/changes/controller.ts +470 -0
- package/packages/daemon/src/tui/mirror/features/changes/feature.tsx +19 -0
- package/packages/daemon/src/tui/mirror/features/dialogs/contract.ts +64 -0
- package/packages/daemon/src/tui/mirror/features/dialogs/feature.tsx +227 -0
- package/packages/daemon/src/tui/mirror/features/dialogs/session.ts +186 -0
- package/packages/daemon/src/tui/mirror/features/files/feature.tsx +54 -0
- package/packages/daemon/src/tui/mirror/features/files/session.ts +694 -0
- package/packages/daemon/src/tui/mirror/features/home/feature.tsx +172 -0
- package/packages/daemon/src/tui/mirror/features/missions-activity/contract.ts +106 -0
- package/packages/daemon/src/tui/mirror/features/missions-activity/feature.tsx +19 -0
- package/packages/daemon/src/tui/mirror/features/missions-activity/session.ts +470 -0
- package/packages/daemon/src/tui/mirror/features/palette/contract.ts +121 -0
- package/packages/daemon/src/tui/mirror/features/palette/feature.ts +14 -0
- package/packages/daemon/src/tui/mirror/features/palette/session.ts +427 -0
- package/packages/daemon/src/tui/mirror/features/palette/surface.tsx +92 -0
- package/packages/daemon/src/tui/mirror/features/performance-hud/contract.ts +20 -0
- package/packages/daemon/src/tui/mirror/features/performance-hud/feature.tsx +8 -0
- package/packages/daemon/src/tui/mirror/features/performance-hud/session.ts +152 -0
- package/packages/daemon/src/tui/mirror/features/performance-hud/surface.tsx +137 -0
- package/packages/daemon/src/tui/mirror/features/rich-preview/asset-loader.ts +153 -0
- package/packages/daemon/src/tui/mirror/features/rich-preview/contract.ts +94 -0
- package/packages/daemon/src/tui/mirror/features/rich-preview/feature.tsx +141 -0
- package/packages/daemon/src/tui/mirror/features/rich-preview/session.ts +387 -0
- package/packages/daemon/src/tui/mirror/features/settings/catalog.ts +26 -0
- package/packages/daemon/src/tui/mirror/features/settings/contract.ts +41 -0
- package/packages/daemon/src/tui/mirror/features/settings/feature.ts +3 -0
- package/packages/daemon/src/tui/mirror/features/settings/session.ts +375 -0
- package/packages/daemon/src/tui/mirror/file-tree.ts +231 -6
- package/packages/daemon/src/tui/mirror/files-surface-view.tsx +242 -0
- package/packages/daemon/src/tui/mirror/files-surface.ts +371 -0
- package/packages/daemon/src/tui/mirror/focus-projection.ts +113 -0
- package/packages/daemon/src/tui/mirror/frame-coalescer.ts +87 -0
- package/packages/daemon/src/tui/mirror/home-model.ts +1 -1
- package/packages/daemon/src/tui/mirror/home-surface-model.ts +440 -0
- package/packages/daemon/src/tui/mirror/home-surface.tsx +254 -0
- package/packages/daemon/src/tui/mirror/host-terminal.ts +49 -0
- package/packages/daemon/src/tui/mirror/hosted.ts +286 -0
- package/packages/daemon/src/tui/mirror/input-lifecycle.ts +248 -0
- package/packages/daemon/src/tui/mirror/interaction-flow.ts +83 -0
- package/packages/daemon/src/tui/mirror/legacy/missions-workspace-loader.ts +117 -0
- package/packages/daemon/src/tui/mirror/menu-model.ts +28 -18
- package/packages/daemon/src/tui/mirror/missions-dashboard.ts +451 -0
- package/packages/daemon/src/tui/mirror/missions-render-fixtures.ts +371 -0
- package/packages/daemon/src/tui/mirror/missions-surface-controller.ts +530 -0
- package/packages/daemon/src/tui/mirror/missions-surface.tsx +434 -0
- package/packages/daemon/src/tui/mirror/missions-workspace.ts +1996 -0
- package/packages/daemon/src/tui/mirror/multiplexer-action-executor.ts +379 -0
- package/packages/daemon/src/tui/mirror/open-tui-pane-stream-socket.ts +47 -0
- package/packages/daemon/src/tui/mirror/open-tui-verified-routing.ts +83 -0
- package/packages/daemon/src/tui/mirror/open-tui-workspace-runtime-port.ts +1314 -0
- package/packages/daemon/src/tui/mirror/palette-surface-adapter.ts +465 -0
- package/packages/daemon/src/tui/mirror/palette.ts +485 -34
- package/packages/daemon/src/tui/mirror/pane-frame-state.ts +209 -0
- package/packages/daemon/src/tui/mirror/pane-mirror.ts +215 -50
- package/packages/daemon/src/tui/mirror/pane-surface.tsx +720 -51
- package/packages/daemon/src/tui/mirror/panel-host-reactive.ts +17 -0
- package/packages/daemon/src/tui/mirror/panel-host.ts +384 -0
- package/packages/daemon/src/tui/mirror/perf-tap.ts +1 -122
- package/packages/daemon/src/tui/mirror/performance-events.ts +488 -0
- package/packages/daemon/src/tui/mirror/recipe-components.tsx +310 -0
- package/packages/daemon/src/tui/mirror/recipes-gallery.tsx +256 -0
- package/packages/daemon/src/tui/mirror/recipes.ts +543 -0
- package/packages/daemon/src/tui/mirror/reference-performance-trace.ts +726 -0
- package/packages/daemon/src/tui/mirror/renderer-commands.ts +344 -0
- package/packages/daemon/src/tui/mirror/resize-model.ts +74 -9
- package/packages/daemon/src/tui/mirror/resize-transaction.ts +342 -0
- package/packages/daemon/src/tui/mirror/rich-placement-projection.ts +173 -0
- package/packages/daemon/src/tui/mirror/runtime/__snapshots__/application-shell-view-renderer.test.tsx.snap +87 -0
- package/packages/daemon/src/tui/mirror/runtime/application-appearance-owner.ts +121 -0
- package/packages/daemon/src/tui/mirror/runtime/application-bootstrap.ts +118 -0
- package/packages/daemon/src/tui/mirror/runtime/application-entry.ts +194 -0
- package/packages/daemon/src/tui/mirror/runtime/application-generation-starter.ts +116 -0
- package/packages/daemon/src/tui/mirror/runtime/application-home-catalog-owner.ts +112 -0
- package/packages/daemon/src/tui/mirror/runtime/application-home-catalog.ts +440 -0
- package/packages/daemon/src/tui/mirror/runtime/application-host-focus-control-binding.ts +143 -0
- package/packages/daemon/src/tui/mirror/runtime/application-host-focus-control-capability.ts +46 -0
- package/packages/daemon/src/tui/mirror/runtime/application-host-focus-presentation.ts +176 -0
- package/packages/daemon/src/tui/mirror/runtime/application-host-focus-test-control.ts +313 -0
- package/packages/daemon/src/tui/mirror/runtime/application-input-readiness.ts +28 -0
- package/packages/daemon/src/tui/mirror/runtime/application-lifecycle.ts +374 -0
- package/packages/daemon/src/tui/mirror/runtime/application-optional-features.ts +25 -0
- package/packages/daemon/src/tui/mirror/runtime/application-palette-command-owner.ts +87 -0
- package/packages/daemon/src/tui/mirror/runtime/application-palette-input.ts +105 -0
- package/packages/daemon/src/tui/mirror/runtime/application-pane-rename-input.ts +43 -0
- package/packages/daemon/src/tui/mirror/runtime/application-pane-rename-owner.ts +43 -0
- package/packages/daemon/src/tui/mirror/runtime/application-pending-terminal-input.ts +117 -0
- package/packages/daemon/src/tui/mirror/runtime/application-performance-log.ts +110 -0
- package/packages/daemon/src/tui/mirror/runtime/application-post-render-runtime.ts +163 -0
- package/packages/daemon/src/tui/mirror/runtime/application-root-configuration.ts +47 -0
- package/packages/daemon/src/tui/mirror/runtime/application-root-renderer.ts +32 -0
- package/packages/daemon/src/tui/mirror/runtime/application-root-v2.tsx +506 -0
- package/packages/daemon/src/tui/mirror/runtime/application-session-focus-owner.ts +80 -0
- package/packages/daemon/src/tui/mirror/runtime/application-shell-binding.ts +365 -0
- package/packages/daemon/src/tui/mirror/runtime/application-shell-catalog.tsx +372 -0
- package/packages/daemon/src/tui/mirror/runtime/application-shell-home.tsx +161 -0
- package/packages/daemon/src/tui/mirror/runtime/application-shell-overlay-stack.tsx +42 -0
- package/packages/daemon/src/tui/mirror/runtime/application-shell-overlays.tsx +154 -0
- package/packages/daemon/src/tui/mirror/runtime/application-shell-sidebar.tsx +140 -0
- package/packages/daemon/src/tui/mirror/runtime/application-shell-view.tsx +425 -0
- package/packages/daemon/src/tui/mirror/runtime/application-shell-viewport.ts +18 -0
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-frame-readiness-owner.ts +33 -0
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-host-focus-owner.ts +36 -0
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-input-ingress.ts +133 -0
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-interaction-controller.ts +1630 -0
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-palette-owner.ts +302 -0
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-paste.ts +33 -0
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-renderer-sources.ts +33 -0
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-selection-owner.ts +218 -0
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-workspace-policy.ts +285 -0
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-workspace.tsx +1150 -0
- package/packages/daemon/src/tui/mirror/runtime/application-theme-repaint.ts +45 -0
- package/packages/daemon/src/tui/mirror/runtime/application-transient-note-owner.ts +42 -0
- package/packages/daemon/src/tui/mirror/runtime/bounded-performance-record-writer.ts +75 -0
- package/packages/daemon/src/tui/mirror/runtime/causal-cell-client-ledger.ts +394 -0
- package/packages/daemon/src/tui/mirror/runtime/causal-cell-input-fixture.ts +55 -0
- package/packages/daemon/src/tui/mirror/runtime/changes-deferred-identity.ts +34 -0
- package/packages/daemon/src/tui/mirror/runtime/daemon-authority-rebind.ts +163 -0
- package/packages/daemon/src/tui/mirror/runtime/deferred-intent-queue.ts +45 -0
- package/packages/daemon/src/tui/mirror/runtime/editor-primitives.ts +56 -0
- package/packages/daemon/src/tui/mirror/runtime/file-content-primitives.ts +8 -0
- package/packages/daemon/src/tui/mirror/runtime/fleet-lifecycle-client.ts +61 -0
- package/packages/daemon/src/tui/mirror/runtime/focus-framebuffer-projection.ts +71 -0
- package/packages/daemon/src/tui/mirror/runtime/generation-bound-slot.ts +23 -0
- package/packages/daemon/src/tui/mirror/runtime/host-local-tmux-adapter.ts +105 -0
- package/packages/daemon/src/tui/mirror/runtime/hosted-tty-size-bridge.ts +213 -0
- package/packages/daemon/src/tui/mirror/runtime/latest-intent-fence.ts +22 -0
- package/packages/daemon/src/tui/mirror/runtime/local-view-controller.ts +95 -0
- package/packages/daemon/src/tui/mirror/runtime/modal-admission-coordinator.ts +158 -0
- package/packages/daemon/src/tui/mirror/runtime/modal-pointer-capture.ts +23 -0
- package/packages/daemon/src/tui/mirror/runtime/open-tui-generation-host.ts +996 -0
- package/packages/daemon/src/tui/mirror/runtime/open-tui-session-owner.ts +195 -0
- package/packages/daemon/src/tui/mirror/runtime/optional-feature-registry.ts +234 -0
- package/packages/daemon/src/tui/mirror/runtime/optional-feature-registry.typecheck.ts +14 -0
- package/packages/daemon/src/tui/mirror/runtime/palette-production-controller.ts +170 -0
- package/packages/daemon/src/tui/mirror/runtime/palette-production-overlay.tsx +65 -0
- package/packages/daemon/src/tui/mirror/runtime/pane-resize-geometry.ts +22 -0
- package/packages/daemon/src/tui/mirror/runtime/pane-scoped-terminal-surface.tsx +146 -0
- package/packages/daemon/src/tui/mirror/runtime/product-surface-policy.ts +16 -0
- package/packages/daemon/src/tui/mirror/runtime/renderer-cadence.ts +4 -0
- package/packages/daemon/src/tui/mirror/runtime/resize-terminal-pane.ts +134 -0
- package/packages/daemon/src/tui/mirror/runtime/rich-preview-demand.ts +26 -0
- package/packages/daemon/src/tui/mirror/runtime/rich-preview-overlay.tsx +54 -0
- package/packages/daemon/src/tui/mirror/runtime/runtime-layout-presentation.ts +119 -0
- package/packages/daemon/src/tui/mirror/runtime/select-terminal-pane.ts +127 -0
- package/packages/daemon/src/tui/mirror/runtime/semantic-pane-publication.ts +26 -0
- package/packages/daemon/src/tui/mirror/runtime/semantic-shell-viewport-resize.ts +78 -0
- package/packages/daemon/src/tui/mirror/runtime/terminal-dimensions-owner.ts +20 -0
- package/packages/daemon/src/tui/mirror/runtime/terminal-fast-lane-renderer-adapter.ts +719 -0
- package/packages/daemon/src/tui/mirror/runtime/terminal-frame-readiness.ts +100 -0
- package/packages/daemon/src/tui/mirror/runtime/terminal-host-focus.ts +519 -0
- package/packages/daemon/src/tui/mirror/runtime/terminal-host-frame-diagnostics.ts +47 -0
- package/packages/daemon/src/tui/mirror/runtime/terminal-input-adapter.ts +69 -0
- package/packages/daemon/src/tui/mirror/runtime/terminal-layout-projection.ts +45 -0
- package/packages/daemon/src/tui/mirror/runtime/terminal-pane-input-router.ts +94 -0
- package/packages/daemon/src/tui/mirror/runtime/terminal-selection.ts +218 -0
- package/packages/daemon/src/tui/mirror/runtime/terminal-session-handoff.ts +143 -0
- package/packages/daemon/src/tui/mirror/runtime/terminal-tool-readiness.ts +72 -0
- package/packages/daemon/src/tui/mirror/runtime/tool-resource-controller.ts +799 -0
- package/packages/daemon/src/tui/mirror/runtime/tool-resource-projection.ts +223 -0
- package/packages/daemon/src/tui/mirror/runtime/viewport-fit-coordinator.ts +12 -0
- package/packages/daemon/src/tui/mirror/runtime/workspace-terminal-fast-lane.ts +597 -0
- package/packages/daemon/src/tui/mirror/selection.ts +122 -29
- package/packages/daemon/src/tui/mirror/semantic-pane-render-source.ts +767 -0
- package/packages/daemon/src/tui/mirror/semantic-session-view.ts +366 -0
- package/packages/daemon/src/tui/mirror/settings-model.ts +95 -57
- package/packages/daemon/src/tui/mirror/shell-chrome-view.tsx +346 -0
- package/packages/daemon/src/tui/mirror/shell-chrome.ts +508 -0
- package/packages/daemon/src/tui/mirror/sidebar.tsx +321 -0
- package/packages/daemon/src/tui/mirror/size-truth.ts +53 -0
- package/packages/daemon/src/tui/mirror/terminal-surface.ts +157 -0
- package/packages/daemon/src/tui/mirror/terminal-surface.tsx +84 -0
- package/packages/daemon/src/tui/mirror/terminal-text.ts +42 -0
- package/packages/daemon/src/tui/mirror/theme.ts +1059 -0
- package/packages/daemon/src/tui/mirror/ui/agent-badge.tsx +41 -0
- package/packages/daemon/src/tui/mirror/ui/badge.tsx +42 -0
- package/packages/daemon/src/tui/mirror/ui/button.tsx +127 -0
- package/packages/daemon/src/tui/mirror/ui/dialog.tsx +45 -0
- package/packages/daemon/src/tui/mirror/ui/index.ts +59 -0
- package/packages/daemon/src/tui/mirror/ui/key-hint.tsx +63 -0
- package/packages/daemon/src/tui/mirror/ui/keyboard-router.tsx +72 -0
- package/packages/daemon/src/tui/mirror/ui/menu.tsx +68 -0
- package/packages/daemon/src/tui/mirror/ui/navigation-row.tsx +114 -0
- package/packages/daemon/src/tui/mirror/ui/overlay-frame.tsx +115 -0
- package/packages/daemon/src/tui/mirror/ui/overlay-host.tsx +71 -0
- package/packages/daemon/src/tui/mirror/ui/overlay-list-row.tsx +59 -0
- package/packages/daemon/src/tui/mirror/ui/overlay-model.ts +75 -0
- package/packages/daemon/src/tui/mirror/ui/state.ts +218 -0
- package/packages/daemon/src/tui/mirror/ui/status-bar.tsx +208 -0
- package/packages/daemon/src/tui/mirror/ui/surface.tsx +71 -0
- package/packages/daemon/src/tui/mirror/ui/tabs.tsx +168 -0
- package/packages/daemon/src/tui/mirror/widget-fallback.ts +66 -0
- package/packages/daemon/src/tui/mirror/widget-surface-model.ts +170 -0
- package/packages/daemon/src/tui/mirror/widget-surface.tsx +79 -0
- package/packages/daemon/src/tui/mirror/workspace/README.md +79 -0
- package/packages/daemon/src/tui/mirror/workspace/__snapshots__/agent-terminal-canvas-renderer.test.tsx.snap +348 -0
- package/packages/daemon/src/tui/mirror/workspace/__snapshots__/application-shell-renderer.test.tsx.snap +134 -0
- package/packages/daemon/src/tui/mirror/workspace/__snapshots__/command-palette-surface-renderer.test.tsx.snap +255 -0
- package/packages/daemon/src/tui/mirror/workspace/__snapshots__/pane-frame-renderer.test.tsx.snap +525 -0
- package/packages/daemon/src/tui/mirror/workspace/__snapshots__/workbench-shell-renderer.test.tsx.snap +134 -0
- package/packages/daemon/src/tui/mirror/workspace/agent-terminal-canvas-view.tsx +61 -0
- package/packages/daemon/src/tui/mirror/workspace/agent-terminal-canvas.ts +131 -0
- package/packages/daemon/src/tui/mirror/workspace/application-root-controller.ts +169 -0
- package/packages/daemon/src/tui/mirror/workspace/application-shell-controller.ts +430 -0
- package/packages/daemon/src/tui/mirror/workspace/application-shell-surface-commands.ts +64 -0
- package/packages/daemon/src/tui/mirror/workspace/application-shell-view.tsx +169 -0
- package/packages/daemon/src/tui/mirror/workspace/application-shell.ts +179 -0
- package/packages/daemon/src/tui/mirror/workspace/command-palette-surface-view.tsx +356 -0
- package/packages/daemon/src/tui/mirror/workspace/command-palette-surface.ts +544 -0
- package/packages/daemon/src/tui/mirror/workspace/icons.ts +56 -0
- package/packages/daemon/src/tui/mirror/workspace/pane-action-menu.tsx +68 -0
- package/packages/daemon/src/tui/mirror/workspace/pane-frame.ts +675 -0
- package/packages/daemon/src/tui/mirror/workspace/pane-frame.tsx +490 -0
- package/packages/daemon/src/tui/mirror/workspace/terminal-pane-chrome-view.tsx +125 -0
- package/packages/daemon/src/tui/mirror/workspace/terminal-pane-chrome.ts +833 -0
- package/packages/daemon/src/tui/mirror/workspace/terminal-pane-header.tsx +225 -0
- package/packages/daemon/src/tui/mirror/workspace/terminal-window-strip.tsx +466 -0
- package/packages/daemon/src/tui/mirror/workspace/text.ts +28 -0
- package/packages/daemon/src/tui/mirror/workspace/workbench-controller.ts +75 -0
- package/packages/daemon/src/tui/mirror/workspace/workbench-dock-opentui.tsx +224 -0
- package/packages/daemon/src/tui/mirror/workspace/workbench-shell.ts +486 -0
- package/packages/daemon/src/tui/mirror/workspace/workbench-shell.tsx +95 -0
- package/packages/daemon/src/tui/mirror/workspace-ui-state.ts +1278 -0
- package/packages/daemon/src/tui/readiness.ts +52 -0
- package/packages/daemon/src/tui/team/entry.ts +23 -13
- package/packages/daemon/src/tui/team/fuzzy.ts +20 -0
- package/packages/daemon/src/tui/team/home.ts +1 -1
- package/packages/daemon/src/tui/team/index.tsx +27 -8
- package/packages/daemon/src/tui/team/projects.ts +12 -0
- package/packages/daemon/src/tui/team/sessions.ts +119 -46
- package/packages/daemon/src/tui/team/wait-receipts.ts +192 -0
- package/packages/daemon/src/tui/team/wait.ts +144 -0
- package/packages/daemon/src/ui/pane-frame/fixture.ts +43 -0
- package/packages/daemon/src/ui/workbench-dock/fixture.ts +61 -0
- package/packages/daemon/src/validate.ts +21 -9
- package/packages/daemon/src/widgets/config/README.md +1 -1
- package/packages/daemon/src/widgets/config/index.tsx +15 -115
- package/packages/daemon/src/widgets/lib/watcher.ts +3 -130
- package/packages/daemon/src/widgets/resolve.ts +15 -7
- package/packages/daemon/src/widgets/setup/footer.tsx +0 -7
- package/packages/daemon/src/widgets/setup/index.tsx +18 -20
- package/packages/daemon/src/widgets/setup/review-panel.tsx +15 -10
- package/packages/daemon/src/widgets/setup/setup-model.ts +7 -10
- package/packages/daemon-client/package.json +42 -0
- package/packages/daemon-client/src/application-shell-session.test.ts +196 -0
- package/packages/daemon-client/src/application-shell-session.ts +450 -0
- package/packages/daemon-client/src/bootstrap-coordinator.test.ts +122 -0
- package/packages/daemon-client/src/bootstrap-coordinator.ts +293 -0
- package/packages/daemon-client/src/connection-supervisor.test.ts +109 -0
- package/packages/daemon-client/src/connection-supervisor.ts +216 -0
- package/packages/daemon-client/src/direct-application-shell-transport.test.ts +939 -0
- package/packages/daemon-client/src/direct-application-shell-transport.ts +1144 -0
- package/packages/daemon-client/src/first-latest-coordinator.test.ts +175 -0
- package/packages/daemon-client/src/first-latest-coordinator.ts +82 -0
- package/packages/daemon-client/src/generation-bound-store-timers.test.ts +74 -0
- package/packages/daemon-client/src/generation-bound-store.ts +908 -0
- package/packages/daemon-client/src/index.ts +25 -0
- package/packages/daemon-client/src/owner-action-client.test.ts +180 -0
- package/packages/daemon-client/src/owner-action-client.ts +113 -0
- package/packages/daemon-client/src/pane-stream-client.test.ts +2754 -0
- package/packages/daemon-client/src/pane-stream-client.ts +1665 -0
- package/packages/daemon-client/src/pane-stream-clock-calibration.test.ts +207 -0
- package/packages/daemon-client/src/pane-stream-clock-calibration.ts +161 -0
- package/packages/daemon-client/src/pane-stream-loopback-benchmark.test.ts +51 -0
- package/packages/daemon-client/src/push-resource-session.test.ts +509 -0
- package/packages/daemon-client/src/push-resource-session.ts +797 -0
- package/packages/daemon-client/src/resource-replica.test.ts +186 -0
- package/packages/daemon-client/src/resource-replica.ts +280 -0
- package/packages/daemon-client/src/runtime-resource-ledger.test.ts +18 -0
- package/packages/daemon-client/src/runtime-resource-ledger.ts +69 -0
- package/packages/daemon-client/src/terminal-fast-lane.test.ts +817 -0
- package/packages/daemon-client/src/terminal-fast-lane.ts +817 -0
- package/packages/daemon-client/src/terminal-fast-lane.typecheck.ts +16 -0
- package/packages/daemon-client/src/workspace-catalog-v2.test.ts +109 -0
- package/packages/daemon-client/src/workspace-catalog-v2.ts +66 -0
- package/packages/daemon-client/src/workspace-client-boundaries.test.ts +59 -0
- package/packages/daemon-client/src/workspace-client-conformance.ts +67 -0
- package/packages/daemon-client/src/workspace-client-operations.ts +203 -0
- package/packages/daemon-client/src/workspace-client-types.ts +302 -0
- package/packages/daemon-client/src/workspace-client.test.ts +2626 -0
- package/packages/daemon-client/src/workspace-client.ts +1421 -0
- package/packages/daemon-client/src/workspace-event-supervisor.test.ts +1086 -0
- package/packages/daemon-client/src/workspace-event-supervisor.ts +719 -0
- package/packages/daemon-client/src/workspace-pane-client.test.ts +80 -0
- package/packages/daemon-client/src/workspace-pane-client.ts +63 -0
- package/packages/presentation/package.json +28 -0
- package/packages/presentation/src/index.ts +2 -0
- package/packages/presentation/src/pane-frame/action-state.ts +72 -0
- package/packages/presentation/src/pane-frame/index.ts +3 -0
- package/packages/presentation/src/pane-frame/model.ts +517 -0
- package/packages/presentation/src/pane-frame/presenter.tsx +335 -0
- package/packages/presentation/src/pane-frame/web-entry.tsx +22 -0
- package/packages/presentation/src/pane-frame/web-host-unstyled.tsx +280 -0
- package/packages/presentation/src/pane-frame/web-host.css +388 -0
- package/packages/presentation/src/pane-frame/web-host.tsx +3 -0
- package/packages/presentation/src/presentation-contract.test.ts +63 -0
- package/packages/presentation/src/workbench-dock/index.ts +2 -0
- package/packages/presentation/src/workbench-dock/navigation.ts +54 -0
- package/packages/presentation/src/workbench-dock/presenter.tsx +252 -0
- package/packages/presentation/src/workbench-dock/web-entry.tsx +19 -0
- package/packages/presentation/src/workbench-dock/web-host-unstyled.tsx +198 -0
- package/packages/presentation/src/workbench-dock/web-host.css +204 -0
- package/packages/presentation/src/workbench-dock/web-host.tsx +3 -0
- package/packages/tmux-bridge/src/index.ts +9 -1
- package/packages/tmux-bridge/src/panes.ts +4 -0
- package/packages/tmux-bridge/src/runner.test.ts +72 -0
- package/packages/tmux-bridge/src/runner.ts +43 -2
- package/packages/tmux-bridge/src/sessions.ts +8 -1
- package/scripts/architecture-debt-budget.json +10 -0
- package/scripts/architecture-debt-inventory.mjs +98 -0
- package/scripts/build-cli.mjs +22 -1
- package/scripts/build-macos-notifier.mjs +160 -0
- package/scripts/build-tui.mjs +59 -3
- package/scripts/check-control-bytes.mjs +70 -0
- package/scripts/dev-web.mjs +66 -0
- package/scripts/lib/bounded-child-command.mjs +59 -0
- package/scripts/lib/bounded-child-command.test.mjs +148 -0
- package/scripts/lib/bounded-diagnostic-tail.mjs +82 -0
- package/scripts/lib/bounded-diagnostic-tail.test.mjs +97 -0
- package/scripts/lib/npm-release-tag.mjs +27 -0
- package/scripts/lib/npm-release-tag.test.mjs +116 -0
- package/scripts/lib/packed-opentui-frame.mjs +18 -0
- package/scripts/lib/packed-opentui-frame.test.mjs +40 -0
- package/scripts/lib/performance-reference-budgets.mjs +36 -0
- package/scripts/lib/performance-reference-report.mjs +157 -0
- package/scripts/lib/performance-reference-report.test.mjs +62 -0
- package/scripts/lib/portable-performance-evidence.mjs +210 -0
- package/scripts/lib/portable-performance-evidence.test.mjs +208 -0
- package/scripts/lib/product-ansi-cursor-alt-screen-fixture.mjs +132 -0
- package/scripts/lib/product-ansi-cursor-alt-screen.mjs +4618 -0
- package/scripts/lib/product-ansi-cursor-alt-screen.test.mjs +4120 -0
- package/scripts/lib/product-ansi-tmux-precondition.mjs +159 -0
- package/scripts/lib/product-ansi-tmux-precondition.test.mjs +147 -0
- package/scripts/lib/product-card5-host-topology.mjs +873 -0
- package/scripts/lib/product-card5-host-topology.test.mjs +1070 -0
- package/scripts/lib/product-card5-production-host-owner.mjs +4864 -0
- package/scripts/lib/product-card5-production-host-owner.test.mjs +5051 -0
- package/scripts/lib/product-configless-owner.mjs +1578 -0
- package/scripts/lib/product-configless-owner.test.mjs +2169 -0
- package/scripts/lib/product-cross-client-handoff.mjs +1165 -0
- package/scripts/lib/product-cross-client-handoff.test.mjs +1062 -0
- package/scripts/lib/product-cross-client-host-evidence.mjs +4780 -0
- package/scripts/lib/product-cross-client-host-evidence.test.mjs +3897 -0
- package/scripts/lib/product-first-input.mjs +1546 -0
- package/scripts/lib/product-first-input.test.mjs +1731 -0
- package/scripts/lib/product-focus-tmux.mjs +46 -0
- package/scripts/lib/product-focus.mjs +1198 -0
- package/scripts/lib/product-focus.test.mjs +1504 -0
- package/scripts/lib/product-idle-process-proof.mjs +270 -0
- package/scripts/lib/product-idle-process-proof.test.mjs +210 -0
- package/scripts/lib/product-keyboard-pointer-resize.mjs +471 -0
- package/scripts/lib/product-keyboard-pointer-resize.test.mjs +363 -0
- package/scripts/lib/product-rig-causal-cell-fixture.mjs +91 -0
- package/scripts/lib/product-rig-causal-fixture-geometry.mjs +27 -0
- package/scripts/lib/product-rig-causal-fixture-geometry.test.mjs +45 -0
- package/scripts/lib/product-rig-sleep-assertion.mjs +179 -0
- package/scripts/lib/product-selection-copy-app-mouse.mjs +1585 -0
- package/scripts/lib/product-selection-copy-app-mouse.test.mjs +1602 -0
- package/scripts/lib/product-tui-host-readiness.mjs +133 -0
- package/scripts/lib/product-tui-host-readiness.test.mjs +258 -0
- package/scripts/lib/product-window-lifecycle.mjs +1351 -0
- package/scripts/lib/product-window-lifecycle.test.mjs +1305 -0
- package/scripts/lib/release-source-state.mjs +28 -0
- package/scripts/lib/release-source-state.test.mjs +26 -0
- package/scripts/lib/tui-diagnostics.mjs +159 -0
- package/scripts/lib/tui-host-publication.mjs +38 -0
- package/scripts/lib/tui-testdrive-clipboard-hook.mjs +543 -0
- package/scripts/lib/tui-testdrive-clipboard-hook.test.mjs +626 -0
- package/scripts/lib/tui-testdrive-input.mjs +1940 -0
- package/scripts/lib/tui-testdrive-input.test.mjs +3434 -0
- package/scripts/lib/tui-testdrive-launch.mjs +180 -0
- package/scripts/lib/tui-testdrive-launch.test.mjs +294 -0
- package/scripts/opentui-release-check.mjs +209 -0
- package/scripts/pack-check-run.mjs +1779 -30
- package/scripts/pack-tui-check.mjs +73 -0
- package/scripts/pack-web-check.mjs +19 -0
- package/scripts/performance-portable-evidence.mjs +419 -0
- package/scripts/performance-qualification.mjs +456 -0
- package/scripts/performance-reference-memory.ts +177 -0
- package/scripts/performance-reference-pane-stream.ts +74 -0
- package/scripts/performance-reference.mjs +681 -0
- package/scripts/postinstall.js +14 -6
- package/scripts/prepublish-check.mjs +37 -1
- package/scripts/prepublish-opentui-check.mjs +24 -0
- package/scripts/product-test-rig-journeys.mjs +2700 -0
- package/scripts/product-test-rig-journeys.test.mjs +3959 -0
- package/scripts/product-test-rig-lib.mjs +2359 -0
- package/scripts/product-test-rig-multiclient.ts +434 -0
- package/scripts/product-test-rig-native-client.mjs +45 -0
- package/scripts/product-test-rig.mjs +20260 -0
- package/scripts/product-test-rig.test.mjs +3634 -0
- package/scripts/publish-tap.sh +55 -0
- package/scripts/smoke-tui-missions.mjs +329 -0
- package/scripts/tui-diagnose.mjs +258 -0
- package/scripts/tui-diagnose.test.mjs +200 -0
- package/scripts/tui-testdrive-capture.test.mjs +161 -0
- package/scripts/tui-testdrive.mjs +1955 -0
- package/skill/SKILL.md +115 -30
- package/templates/agent-team-monorepo.yml +28 -30
- package/templates/agent-team-nextjs.yml +24 -26
- package/templates/agent-team.yml +24 -24
- package/templates/convex.yml +24 -16
- package/templates/default.yml +26 -21
- package/templates/go.yml +21 -14
- package/templates/missions.yml +25 -40
- package/templates/nextjs.yml +24 -16
- package/templates/python.yml +21 -14
- package/templates/vite.yml +21 -14
- package/packages/daemon/dist/widgets/changes/index.jsx +0 -575
- package/packages/daemon/dist/widgets/config/index.d.ts +0 -1
- package/packages/daemon/dist/widgets/config/index.jsx +0 -395
- package/packages/daemon/dist/widgets/explorer/breadcrumbs.d.ts +0 -10
- package/packages/daemon/dist/widgets/explorer/breadcrumbs.jsx +0 -51
- package/packages/daemon/dist/widgets/explorer/footer.d.ts +0 -6
- package/packages/daemon/dist/widgets/explorer/footer.jsx +0 -11
- package/packages/daemon/dist/widgets/explorer/index.jsx +0 -393
- package/packages/daemon/dist/widgets/explorer/tree.d.ts +0 -13
- package/packages/daemon/dist/widgets/explorer/tree.jsx +0 -108
- package/packages/daemon/dist/widgets/lib/help-overlay.d.ts +0 -19
- package/packages/daemon/dist/widgets/lib/help-overlay.jsx +0 -69
- package/packages/daemon/dist/widgets/preview/index.jsx +0 -371
- package/packages/daemon/dist/widgets/setup/agent-naming.d.ts +0 -9
- package/packages/daemon/dist/widgets/setup/agent-naming.jsx +0 -81
- package/packages/daemon/dist/widgets/setup/config-tree.d.ts +0 -13
- package/packages/daemon/dist/widgets/setup/config-tree.jsx +0 -203
- package/packages/daemon/dist/widgets/setup/detect-panel.d.ts +0 -14
- package/packages/daemon/dist/widgets/setup/detect-panel.jsx +0 -48
- package/packages/daemon/dist/widgets/setup/field-editor.d.ts +0 -12
- package/packages/daemon/dist/widgets/setup/field-editor.jsx +0 -163
- package/packages/daemon/dist/widgets/setup/footer.d.ts +0 -17
- package/packages/daemon/dist/widgets/setup/footer.jsx +0 -64
- package/packages/daemon/dist/widgets/setup/index.d.ts +0 -1
- package/packages/daemon/dist/widgets/setup/index.jsx +0 -261
- package/packages/daemon/dist/widgets/setup/layout-picker.d.ts +0 -9
- package/packages/daemon/dist/widgets/setup/layout-picker.jsx +0 -69
- package/packages/daemon/dist/widgets/sidebar/index.jsx +0 -462
- package/packages/daemon/src/tui/mirror/control-client.ts +0 -214
- package/packages/daemon/src/tui/mirror/focus-border.ts +0 -57
- package/packages/daemon/src/tui/mirror/session-mirror.ts +0 -443
- package/packages/daemon/src/widgets/setup/orchestrator-panel.tsx +0 -200
- package/scripts/perf-mirror.mjs +0 -313
- package/scripts/verify-endpoints.sh +0 -90
- /package/packages/daemon/dist/{widgets/changes/index.d.ts → lib/__tests__/fixtures/workspace-state-writer.d.ts} +0 -0
- /package/packages/daemon/dist/{widgets/explorer/index.d.ts → terminal/mirror/trusted-inventory.js} +0 -0
- /package/packages/daemon/dist/{widgets/preview/index.d.ts → terminal/session-runtime/terminal-interpreter-backend.js} +0 -0
- /package/packages/daemon/dist/{widgets/sidebar/index.d.ts → tui/mirror/features/changes/contract.js} +0 -0
package/bin/cli.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { parseArgs } from "node:util";
|
|
6
6
|
import { resolve, dirname, join } from "node:path";
|
|
7
7
|
import { execFileSync } from "node:child_process";
|
|
8
|
-
import { existsSync } from "node:fs";
|
|
8
|
+
import { appendFileSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
9
9
|
import { fileURLToPath } from "node:url";
|
|
10
10
|
|
|
11
11
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -20,10 +20,15 @@ const nodeCliPath = selfPath.endsWith(".js") ? selfPath : resolve(__dirname, "cl
|
|
|
20
20
|
import { launch } from "../packages/daemon/src/launch.ts";
|
|
21
21
|
import { resolveEntry } from "../packages/daemon/src/tui/team/entry.ts";
|
|
22
22
|
import { loadAppConfig } from "../packages/daemon/src/lib/app-config.ts";
|
|
23
|
+
import { resolveConfig } from "../packages/daemon/src/lib/resolved-config.ts";
|
|
24
|
+
import { resolveProjectConfigContext } from "../packages/daemon/src/lib/config-context.ts";
|
|
23
25
|
import {
|
|
26
|
+
ensureCompiledTuiRuntimeDir,
|
|
27
|
+
ensureTuiLaunchAvailable,
|
|
24
28
|
resolveTuiLaunch,
|
|
25
29
|
findCompiledTui,
|
|
26
30
|
isBunAvailable,
|
|
31
|
+
openTuiLaunchEnvironment,
|
|
27
32
|
} from "../packages/daemon/src/tui/compiled.ts";
|
|
28
33
|
import { init } from "../packages/daemon/src/init.ts";
|
|
29
34
|
import { stop } from "../packages/daemon/src/stop.ts";
|
|
@@ -35,17 +40,35 @@ import { inspect } from "../packages/daemon/src/inspect.ts";
|
|
|
35
40
|
import { validate } from "../packages/daemon/src/validate.ts";
|
|
36
41
|
import { detect } from "../packages/daemon/src/detect.ts";
|
|
37
42
|
import { config } from "../packages/daemon/src/config.ts";
|
|
43
|
+
import { migrate } from "../packages/daemon/src/migrate.ts";
|
|
38
44
|
import { restart } from "../packages/daemon/src/restart.ts";
|
|
39
45
|
import { restore } from "../packages/daemon/src/restore.ts";
|
|
40
46
|
import { send } from "../packages/daemon/src/send.ts";
|
|
41
47
|
import { IdeError } from "../packages/daemon/src/lib/errors.ts";
|
|
42
48
|
import { printCommandError } from "../packages/daemon/src/lib/output.ts";
|
|
49
|
+
import { runHeadlessDaemon } from "../packages/daemon/src/lib/headless-daemon.ts";
|
|
50
|
+
import { ensureCanonicalDaemon } from "../packages/daemon/src/lib/canonical-daemon-bootstrap.ts";
|
|
51
|
+
import { stateHome } from "../packages/daemon/src/lib/state-home.ts";
|
|
52
|
+
import {
|
|
53
|
+
wantsHostedApp,
|
|
54
|
+
hostedEnvVars,
|
|
55
|
+
hostedCommandLine,
|
|
56
|
+
hostExistsArgv,
|
|
57
|
+
hostCreateArgv,
|
|
58
|
+
hostSetupArgvs,
|
|
59
|
+
hostAttachArgv,
|
|
60
|
+
hostRootBindingsArgv,
|
|
61
|
+
hostPutAwayBindingArgv,
|
|
62
|
+
hostedPutAwayBindingState,
|
|
63
|
+
HOSTED_ENV,
|
|
64
|
+
} from "../packages/daemon/src/tui/mirror/hosted.ts";
|
|
43
65
|
|
|
44
66
|
const { positionals, values } = parseArgs({
|
|
45
67
|
allowPositionals: true,
|
|
46
68
|
strict: false,
|
|
47
69
|
options: {
|
|
48
70
|
json: { type: "boolean" },
|
|
71
|
+
headless: { type: "boolean" },
|
|
49
72
|
row: { type: "string" },
|
|
50
73
|
pane: { type: "string" },
|
|
51
74
|
title: { type: "string" },
|
|
@@ -92,6 +115,10 @@ const { positionals, values } = parseArgs({
|
|
|
92
115
|
// actions menu opens at the pointer instead of centered (see `menu` case)
|
|
93
116
|
x: { type: "string" },
|
|
94
117
|
y: { type: "string" },
|
|
118
|
+
// app: host the cockpit in the internal `_tmux-ide-app` session and attach
|
|
119
|
+
// to it (M23.2) — `--detachable` is the primary name, `--hosted` the alias
|
|
120
|
+
detachable: { type: "boolean" },
|
|
121
|
+
hosted: { type: "boolean" },
|
|
95
122
|
// worktree: base ref for a new branch, the worktree checkout dir override,
|
|
96
123
|
// skip creating a session, and force-remove a dirty worktree (see `worktree`)
|
|
97
124
|
from: { type: "string" },
|
|
@@ -114,6 +141,7 @@ const knownCommands = new Set([
|
|
|
114
141
|
"inspect",
|
|
115
142
|
"validate",
|
|
116
143
|
"detect",
|
|
144
|
+
"migrate",
|
|
117
145
|
"config",
|
|
118
146
|
"setup",
|
|
119
147
|
"send",
|
|
@@ -132,11 +160,15 @@ const knownCommands = new Set([
|
|
|
132
160
|
"cheatsheet",
|
|
133
161
|
"welcome",
|
|
134
162
|
"menu",
|
|
163
|
+
"show",
|
|
135
164
|
"popup",
|
|
136
165
|
"sidebar-toggle",
|
|
137
166
|
"worktree",
|
|
138
167
|
"update",
|
|
139
168
|
"skill-sync",
|
|
169
|
+
"widget",
|
|
170
|
+
"web",
|
|
171
|
+
"serve",
|
|
140
172
|
"command-center",
|
|
141
173
|
"server",
|
|
142
174
|
"help",
|
|
@@ -174,12 +206,14 @@ function printHelp() {
|
|
|
174
206
|
console.log(`${bold("tmux-ide")} — Terminal IDE powered by tmux
|
|
175
207
|
|
|
176
208
|
${bold("Usage:")}
|
|
177
|
-
${cyan("tmux-ide")} ${dim("
|
|
178
|
-
${cyan("tmux-ide
|
|
209
|
+
${cyan("tmux-ide")} ${dim("Open the visual tmux app (workspace config is optional)")}
|
|
210
|
+
${cyan("tmux-ide start")} [path] ${dim("Explicitly launch the declarative project layout")}
|
|
211
|
+
${cyan("tmux-ide --headless")} ${dim("Run the canonical daemon in this foreground process")}
|
|
212
|
+
${cyan("tmux-ide <path>")} ${dim("Open a configured workspace, or visually manage tmux from that folder")}
|
|
179
213
|
${cyan("tmux-ide setup")} ${dim("Interactive TUI setup wizard")}
|
|
180
214
|
${cyan("tmux-ide setup --edit")} ${dim("Open config tree editor")}
|
|
181
215
|
${cyan("tmux-ide settings")} ${dim("Interactive TUI config manager")}
|
|
182
|
-
${cyan("tmux-ide init")} [--template] ${dim("Scaffold
|
|
216
|
+
${cyan("tmux-ide init")} [--template] ${dim("Scaffold .tmux-ide/workspace.yml (auto-detects stack)")}
|
|
183
217
|
${cyan("tmux-ide stop")} ${dim("Kill the current IDE session")}
|
|
184
218
|
${cyan("tmux-ide restart")} ${dim("Stop and relaunch the IDE session")}
|
|
185
219
|
${cyan("tmux-ide restore")} [--dry-run] [--run-commands] [--resume-agents] [--json]
|
|
@@ -188,20 +222,28 @@ ${bold("Usage:")}
|
|
|
188
222
|
${cyan("tmux-ide attach")} ${dim("Reattach to a running session")}
|
|
189
223
|
${cyan("tmux-ide team")} [--json] ${dim("TUI over all tmux sessions (--json prints fleet state)")}
|
|
190
224
|
${cyan("tmux-ide app")} [session] ${dim("Unified app: fleet home + live session mirror (bare = home)")}
|
|
225
|
+
${cyan("tmux-ide app --detachable")} ${dim("Host the app in tmux and attach — survives the terminal, ^q detaches")}
|
|
226
|
+
${cyan("tmux-ide app --hosted")} ${dim("Alias for --detachable")}
|
|
191
227
|
${cyan("tmux-ide switcher")} ${dim("Compact session picker (opens in the M-p popup on adopted sessions)")}
|
|
192
228
|
${cyan("tmux-ide wait agent-status")} <session> --status <s> [--timeout <ms>]
|
|
193
229
|
${dim("Block until a session reaches a status (exit 0 match / 1 timeout)")}
|
|
194
230
|
${cyan("tmux-ide wait output")} <pane|session> --match <regex> [--timeout <ms>]
|
|
195
231
|
${dim("Block until a pane's output matches a regex (exit 0 match / 1 timeout)")}
|
|
196
|
-
${cyan("tmux-ide events")} [--follow] [--json] ${dim("Stream agent-status transitions (
|
|
232
|
+
${cyan("tmux-ide events")} [--follow] [--json] [--socket] ${dim("Stream agent-status transitions (--socket: push from a running serve)")}
|
|
233
|
+
${cyan("tmux-ide serve")} [--socket <path>] ${dim("Local control socket: NDJSON verbs + pushed events (~/.tmux-ide/control.sock)")}
|
|
197
234
|
${cyan("tmux-ide adopt")} <session> ${dim("Add the live tmux-ide status bar to a session")}
|
|
198
235
|
${cyan("tmux-ide adopt --all")} ${dim("Adopt every live (non-internal) session")}
|
|
199
236
|
${cyan("tmux-ide unadopt")} <session> ${dim("Remove the status bar")}
|
|
200
|
-
${cyan("tmux-ide integration install claude")} ${dim("
|
|
237
|
+
${cyan("tmux-ide integration install claude")} ${dim("Claude Code lifecycle hooks + managed tmux-ide skill")}
|
|
238
|
+
${cyan("tmux-ide integration install opencode")} ${dim("Capture opencode session ids for restore --resume-agents")}
|
|
239
|
+
${cyan("tmux-ide integration uninstall")} <claude|opencode> ${dim("Remove tmux-ide's integration entries")}
|
|
240
|
+
${cyan("tmux-ide integration status")} [--json] ${dim("Show discovered agents, integration state, and resume-id capture")}
|
|
201
241
|
${cyan("tmux-ide agent explain")} <pane> [--json] ${dim("Debug how a pane's agent state is detected")}
|
|
202
242
|
${cyan("tmux-ide cheatsheet")} ${dim("Print the key cheat sheet (⌥k / [ ? keys ] popup)")}
|
|
203
243
|
${cyan("tmux-ide menu")} [--client N] ${dim("Open the right-click actions menu (⌥m / right-click any pane or the bar)")}
|
|
204
244
|
${cyan("tmux-ide popup")} <widget> ${dim("Open a widget as a floating panel (explorer/changes/config; ⌥e/⌥g/⌥,)")}
|
|
245
|
+
${cyan("tmux-ide widget")} <markdown|image|card> [file] ${dim("Render rich live content in the current pane")}
|
|
246
|
+
${cyan("tmux-ide show")} <file> ${dim("Show Markdown, images, GIFs, or cards by file type")}
|
|
205
247
|
${cyan("tmux-ide sidebar-toggle")} [--session S] ${dim("Toggle the app nav column (⌥b on adopted sessions)")}
|
|
206
248
|
${cyan("tmux-ide worktree create")} <branch> [--from <ref>] [--dir <path>] [--no-session]
|
|
207
249
|
${dim("Add a git worktree (new branch) + open a session in it")}
|
|
@@ -213,17 +255,19 @@ ${bold("Usage:")}
|
|
|
213
255
|
${cyan("tmux-ide inspect")} [--json] ${dim("Show effective config and runtime state")}
|
|
214
256
|
${cyan("tmux-ide doctor")} ${dim("Check system requirements")}
|
|
215
257
|
${cyan("tmux-ide update")} [--dry-run] ${dim("Update tmux-ide (detects dev checkout vs npm/pnpm/bun global)")}
|
|
258
|
+
${cyan("tmux-ide update --tui-binary")} ${dim("Download and verify this version's compiled OpenTUI runtime")}
|
|
259
|
+
${cyan("tmux-ide update --manifests")} ${dim("Fetch the latest agent-detection manifest pack (your overrides still win)")}
|
|
216
260
|
${cyan("tmux-ide skill-sync")} ${dim("Refresh the bundled Claude Code skill in ~/.claude/skills/tmux-ide")}
|
|
217
|
-
${cyan("tmux-ide validate")} [--json] ${dim("Validate
|
|
261
|
+
${cyan("tmux-ide validate")} [--json] ${dim("Validate workspace config")}
|
|
218
262
|
${cyan("tmux-ide detect")} [--json] ${dim("Detect project stack")}
|
|
219
|
-
${cyan("tmux-ide detect --write")} ${dim("Detect and write ide.yml")}
|
|
263
|
+
${cyan("tmux-ide detect --write")} ${dim("Detect and write .tmux-ide/workspace.yml")}
|
|
264
|
+
${cyan("tmux-ide migrate --dry-run")} [--json] ${dim("Preview ide.yml migration")}
|
|
265
|
+
${cyan("tmux-ide migrate --write")} [--json] ${dim("Create .tmux-ide/workspace.yml")}
|
|
220
266
|
${cyan("tmux-ide config")} [--json] ${dim("Dump config as JSON")}
|
|
221
267
|
${cyan("tmux-ide config set")} <path> <value>
|
|
222
268
|
${cyan("tmux-ide config add-pane")} --row <N> --title <T> [--command <C>]
|
|
223
269
|
${cyan("tmux-ide config remove-pane")} --row <N> --pane <M>
|
|
224
270
|
${cyan("tmux-ide config add-row")} [--size <percent>]
|
|
225
|
-
${cyan("tmux-ide config enable-team")} [--name <N>] ${dim("Enable agent teams")}
|
|
226
|
-
${cyan("tmux-ide config disable-team")} ${dim("Disable agent teams")}
|
|
227
271
|
|
|
228
272
|
${bold("Pane Messaging:")}
|
|
229
273
|
${cyan("tmux-ide send")} <target> <message> ${dim("Send message to a pane")}
|
|
@@ -231,11 +275,12 @@ ${bold("Pane Messaging:")}
|
|
|
231
275
|
${cyan("tmux-ide send")} <target> --no-enter msg ${dim("Send text without pressing Enter")}
|
|
232
276
|
|
|
233
277
|
${bold("Server:")}
|
|
278
|
+
${cyan("tmux-ide serve")} [socket-path] ${dim("Foreground owner-only local NDJSON control socket")}
|
|
234
279
|
${cyan("tmux-ide command-center")} [--port N] ${dim("Start the command-center HTTP API")}
|
|
235
280
|
${cyan("tmux-ide server")} [--port N] ${dim("Start HTTP + PTY WebSocket server")}
|
|
236
281
|
|
|
237
282
|
${bold("Discover (in the TUI):")}
|
|
238
|
-
${dim("Bare")} ${cyan("tmux-ide")} ${dim("with no
|
|
283
|
+
${dim("Bare")} ${cyan("tmux-ide")} ${dim("with no project config opens the HOME cockpit — the fleet home screen.")}
|
|
239
284
|
${dim("Once a session is adopted, the whole UI is one keystroke away:")}
|
|
240
285
|
${cyan("⌥h")} ${dim("home cockpit from anywhere ")}${cyan("⌥p")} ${dim("switch session")}
|
|
241
286
|
${cyan("⌥k")} ${dim("cheat sheet (all keys) ")}${cyan("⌥m")} ${dim("actions menu (or right-click any pane / the bar)")}
|
|
@@ -243,9 +288,11 @@ ${bold("Discover (in the TUI):")}
|
|
|
243
288
|
${dim("A first-run welcome card names these keys once. Run")} ${cyan("tmux-ide cheatsheet")} ${dim("to see the full sheet.")}
|
|
244
289
|
|
|
245
290
|
${bold("Flags:")}
|
|
246
|
-
${cyan("--json")} ${dim("
|
|
291
|
+
${cyan("--json")} ${dim("Structured output on commands that advertise JSON support")}
|
|
292
|
+
${cyan("--headless")} ${dim("Canonical daemon only; no tmux workspace or TUI")}
|
|
247
293
|
${cyan("--template <name>")} ${dim("Use specific template for init")}
|
|
248
|
-
${cyan("--write")} ${dim("Write detected config to ide.yml")}
|
|
294
|
+
${cyan("--write")} ${dim("Write detected config to .tmux-ide/workspace.yml")}
|
|
295
|
+
${cyan("--dry-run")} ${dim("Preview migration/restore without writing")}
|
|
249
296
|
${cyan("--verbose")} ${dim("Log all tmux commands (or set TMUX_IDE_DEBUG=1)")}
|
|
250
297
|
${cyan("-h, --help")} ${dim("Show usage")}
|
|
251
298
|
${cyan("-v, --version")} ${dim("Show version number")}`);
|
|
@@ -270,6 +317,7 @@ function execBunWidget(
|
|
|
270
317
|
checkoutExists: existsSync(scriptPath),
|
|
271
318
|
bunAvailable: isBunAvailable(),
|
|
272
319
|
compiledBinary: findCompiledTui(),
|
|
320
|
+
preferSource: process.env.TMUX_IDE_TUI_SOURCE === "1",
|
|
273
321
|
});
|
|
274
322
|
|
|
275
323
|
if (launch.mode === "unavailable") {
|
|
@@ -280,35 +328,188 @@ function execBunWidget(
|
|
|
280
328
|
);
|
|
281
329
|
}
|
|
282
330
|
|
|
283
|
-
const
|
|
284
|
-
|
|
331
|
+
const launchEpochMs = Date.now();
|
|
332
|
+
let automaticDiagnosticLog: string | undefined;
|
|
333
|
+
if (surface === "app" && !process.env.TMUX_IDE_TUI_PERF_LOG) {
|
|
334
|
+
try {
|
|
335
|
+
const logDirectory = join(stateHome(), "logs");
|
|
336
|
+
mkdirSync(logDirectory, { recursive: true, mode: 0o700 });
|
|
337
|
+
automaticDiagnosticLog = join(logDirectory, "tui-latest.jsonl");
|
|
338
|
+
writeFileSync(
|
|
339
|
+
automaticDiagnosticLog,
|
|
340
|
+
`${JSON.stringify({
|
|
341
|
+
phase: "launcher-start",
|
|
342
|
+
elapsedMs: 0,
|
|
343
|
+
at: new Date(launchEpochMs).toISOString(),
|
|
344
|
+
surface,
|
|
345
|
+
launchMode: launch.mode,
|
|
346
|
+
})}\n`,
|
|
347
|
+
{ mode: 0o600 },
|
|
348
|
+
);
|
|
349
|
+
} catch {
|
|
350
|
+
// Diagnostics must never prevent the product from launching.
|
|
351
|
+
automaticDiagnosticLog = undefined;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
const env = openTuiLaunchEnvironment(process.env, {
|
|
285
355
|
TMUX_IDE_CWD: process.cwd(),
|
|
286
356
|
TMUX_IDE_CLI: nodeCliPath,
|
|
357
|
+
...(automaticDiagnosticLog
|
|
358
|
+
? {
|
|
359
|
+
TMUX_IDE_TUI_PERF_LOG: automaticDiagnosticLog,
|
|
360
|
+
TMUX_IDE_TUI_LAUNCH_EPOCH_MS: String(launchEpochMs),
|
|
361
|
+
}
|
|
362
|
+
: {}),
|
|
287
363
|
...extraEnv,
|
|
364
|
+
});
|
|
365
|
+
const markChildExited = () => {
|
|
366
|
+
if (!automaticDiagnosticLog) return;
|
|
367
|
+
try {
|
|
368
|
+
appendFileSync(
|
|
369
|
+
automaticDiagnosticLog,
|
|
370
|
+
`${JSON.stringify({
|
|
371
|
+
phase: "launcher-child-exited",
|
|
372
|
+
elapsedMs: Date.now() - launchEpochMs,
|
|
373
|
+
at: new Date().toISOString(),
|
|
374
|
+
status: 0,
|
|
375
|
+
signal: null,
|
|
376
|
+
})}\n`,
|
|
377
|
+
);
|
|
378
|
+
} catch {
|
|
379
|
+
// Diagnostics must never change successful process semantics.
|
|
380
|
+
}
|
|
288
381
|
};
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
382
|
+
try {
|
|
383
|
+
if (launch.mode === "bun") {
|
|
384
|
+
// Spawn from the repo root so bun finds `bunfig.toml` (the @opentui/solid
|
|
385
|
+
// JSX preload). Without this, running from any other cwd — e.g. bare
|
|
386
|
+
// `tmux-ide` in a project dir — falls back to the React JSX runtime and the
|
|
387
|
+
// widget fails to load. The real invocation dir rides in env so in-widget
|
|
388
|
+
// prompts (register / new session) still default to where the user is.
|
|
389
|
+
execFileSync(launch.bin, launch.argv, {
|
|
390
|
+
stdio: "inherit",
|
|
391
|
+
cwd: resolve(__dirname, ".."),
|
|
392
|
+
env,
|
|
393
|
+
});
|
|
394
|
+
markChildExited();
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// A compiled Bun executable still reads bunfig.toml from its cwd before the
|
|
399
|
+
// embedded app starts. Isolate it from the project checkout; TMUX_IDE_CWD
|
|
400
|
+
// preserves the user's real project directory for every app action.
|
|
295
401
|
execFileSync(launch.bin, launch.argv, {
|
|
296
402
|
stdio: "inherit",
|
|
297
|
-
cwd:
|
|
403
|
+
cwd: ensureCompiledTuiRuntimeDir(),
|
|
298
404
|
env,
|
|
299
405
|
});
|
|
300
|
-
|
|
406
|
+
markChildExited();
|
|
407
|
+
} catch (error) {
|
|
408
|
+
if (automaticDiagnosticLog) {
|
|
409
|
+
try {
|
|
410
|
+
const childError = error as { status?: unknown; signal?: unknown };
|
|
411
|
+
appendFileSync(
|
|
412
|
+
automaticDiagnosticLog,
|
|
413
|
+
`${JSON.stringify({
|
|
414
|
+
phase: "launcher-child-failed",
|
|
415
|
+
elapsedMs: Date.now() - launchEpochMs,
|
|
416
|
+
at: new Date().toISOString(),
|
|
417
|
+
status: childError.status ?? null,
|
|
418
|
+
signal: childError.signal ?? null,
|
|
419
|
+
})}\n`,
|
|
420
|
+
);
|
|
421
|
+
} catch {
|
|
422
|
+
// Preserve the original child failure.
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
throw error;
|
|
301
426
|
}
|
|
427
|
+
}
|
|
302
428
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
429
|
+
// The detachable cockpit (M23.2): instead of running the app in THIS terminal,
|
|
430
|
+
// ensure the internal `_tmux-ide-app` session exists running it full-screen
|
|
431
|
+
// (status off, window-size latest — see hostSetupArgvs), then attach here.
|
|
432
|
+
// Re-invocation from any terminal reattaches the SAME cockpit; tmux handles ^q
|
|
433
|
+
// with the exact invoking client as context while the resident app stays alive.
|
|
434
|
+
// Inside tmux the client switch-clients instead of nesting an attach.
|
|
435
|
+
function launchHostedApp(scriptPath: string, appArgs: string[]): void {
|
|
436
|
+
const launch = resolveTuiLaunch({
|
|
437
|
+
surface: "app",
|
|
438
|
+
scriptPath,
|
|
439
|
+
args: appArgs,
|
|
440
|
+
checkoutExists: existsSync(scriptPath),
|
|
441
|
+
bunAvailable: isBunAvailable(),
|
|
442
|
+
compiledBinary: findCompiledTui(),
|
|
443
|
+
preferSource: process.env.TMUX_IDE_TUI_SOURCE === "1",
|
|
444
|
+
});
|
|
445
|
+
if (launch.mode === "unavailable") {
|
|
446
|
+
throw new IdeError(
|
|
447
|
+
`\`tmux-ide app --detachable\` is unavailable because ${launch.reasons.join(" and ")}.\n` +
|
|
448
|
+
`Install bun (https://bun.sh) — the TUI surfaces run on it. Sources ship with the npm package since v2.6.1.`,
|
|
449
|
+
{ code: "USAGE", exitCode: 1 },
|
|
450
|
+
);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
let exists = true;
|
|
454
|
+
try {
|
|
455
|
+
execFileSync("tmux", hostExistsArgv(), { stdio: "ignore" });
|
|
456
|
+
} catch {
|
|
457
|
+
exists = false; // also covers "no server yet" — new-session starts one
|
|
458
|
+
}
|
|
459
|
+
if (!exists) {
|
|
460
|
+
// Same cwd rule as execBunWidget: bun needs the repo root (bunfig preload),
|
|
461
|
+
// the compiled binary must NOT run from it. The app's real env travels on
|
|
462
|
+
// the pane command line — the tmux server's environment is not ours.
|
|
463
|
+
const cwd = launch.mode === "bun" ? resolve(__dirname, "..") : ensureCompiledTuiRuntimeDir();
|
|
464
|
+
const commandLine = hostedCommandLine(
|
|
465
|
+
launch.bin,
|
|
466
|
+
launch.argv,
|
|
467
|
+
hostedEnvVars({
|
|
468
|
+
cwd: process.cwd(),
|
|
469
|
+
cli: nodeCliPath,
|
|
470
|
+
path: process.env.PATH,
|
|
471
|
+
home: process.env.TMUX_IDE_HOME,
|
|
472
|
+
config: process.env.TMUX_IDE_CONFIG,
|
|
473
|
+
tuiBin: process.env.TMUX_IDE_TUI_BIN,
|
|
474
|
+
}),
|
|
475
|
+
);
|
|
476
|
+
execFileSync("tmux", hostCreateArgv({ cwd, commandLine }), { stdio: "ignore" });
|
|
477
|
+
}
|
|
478
|
+
// Setup runs on EVERY ensure, not just create (M25.5): the list is
|
|
479
|
+
// idempotent, so this upgrades a host created by an older tmux-ide (no
|
|
480
|
+
// resize hooks yet) and re-asserts `window-size latest` on a host a stray
|
|
481
|
+
// `resize-window` flipped to manual — the measured way a cockpit gets stuck
|
|
482
|
+
// at a departed client's size.
|
|
483
|
+
for (const args of hostSetupArgvs()) execFileSync("tmux", args, { stdio: "ignore" });
|
|
484
|
+
// Ctrl-Q must be resolved by tmux while the exact input client is still the
|
|
485
|
+
// command context. The shared renderer pane cannot identify which of several
|
|
486
|
+
// attached terminals supplied a key. Never replace a user-owned root bind:
|
|
487
|
+
// tmux 3.0 has no single-key/formatted list-keys query, so classify its
|
|
488
|
+
// bounded canonical root-table listing in-process.
|
|
489
|
+
const rootBindings = execFileSync("tmux", hostRootBindingsArgv(), {
|
|
490
|
+
encoding: "utf8",
|
|
491
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
492
|
+
timeout: 1_500,
|
|
493
|
+
maxBuffer: 1024 * 1024,
|
|
494
|
+
});
|
|
495
|
+
const putAwayBinding = hostedPutAwayBindingState(rootBindings);
|
|
496
|
+
if (putAwayBinding === "conflict") {
|
|
497
|
+
throw new IdeError(
|
|
498
|
+
"Cannot enable hosted Ctrl-Q because tmux's root C-q key is already user-bound. " +
|
|
499
|
+
"tmux-ide left that binding unchanged. Unbind or remap it, then run the app again; " +
|
|
500
|
+
"tmux prefix+d remains available for detaching.",
|
|
501
|
+
{ code: "USAGE", exitCode: 1 },
|
|
502
|
+
);
|
|
503
|
+
}
|
|
504
|
+
if (putAwayBinding === "absent") {
|
|
505
|
+
execFileSync("tmux", hostPutAwayBindingArgv(), { stdio: "ignore" });
|
|
506
|
+
}
|
|
507
|
+
execFileSync("tmux", hostAttachArgv(Boolean(process.env.TMUX)), { stdio: "inherit" });
|
|
307
508
|
}
|
|
308
509
|
|
|
309
510
|
// The scriptable control surface for the cockpit: print the fleet state as JSON
|
|
310
511
|
// and exit without spawning the (bun/OpenTUI) TUI. Shared by `tmux-ide team
|
|
311
|
-
// --json` and bare `tmux-ide --json` when there's no
|
|
512
|
+
// --json` and bare `tmux-ide --json` when there's no project config to launch. Dynamic
|
|
312
513
|
// imports keep the interactive path free of the data-layer modules.
|
|
313
514
|
async function printFleetJson(): Promise<void> {
|
|
314
515
|
const { createStatusTracker } = await import("../packages/daemon/src/tui/detect/classify.ts");
|
|
@@ -317,6 +518,41 @@ async function printFleetJson(): Promise<void> {
|
|
|
317
518
|
console.log(JSON.stringify(toFleetJson(listTeamProjects(createStatusTracker())), null, 2));
|
|
318
519
|
}
|
|
319
520
|
|
|
521
|
+
// The `--socket[=path]` opt-in (undeclared in parseArgs on purpose: bare
|
|
522
|
+
// `--socket` parses to `true`, `--socket=/path` to the path — strict:false
|
|
523
|
+
// gives optional-value semantics parseArgs can't declare). `true | string |
|
|
524
|
+
// undefined`; string overrides the default socket path.
|
|
525
|
+
const socketFlag = values.socket as string | boolean | undefined;
|
|
526
|
+
|
|
527
|
+
// Run a `wait` on a live `tmux-ide serve` (connect once, the server holds the
|
|
528
|
+
// wait — no local polling). Returns null when the flag is off, no server
|
|
529
|
+
// answers, or the connection drops mid-wait — callers fall back SILENTLY to
|
|
530
|
+
// the local polling implementation (same shared logic, tui/team/wait.ts).
|
|
531
|
+
async function waitOverSocket(
|
|
532
|
+
params: Record<string, unknown>,
|
|
533
|
+
): Promise<{ timedOut: boolean; data?: unknown } | null> {
|
|
534
|
+
if (!socketFlag) return null;
|
|
535
|
+
const { connectControl, ControlRequestError } =
|
|
536
|
+
await import("../packages/daemon/src/control/client.ts");
|
|
537
|
+
let client: Awaited<ReturnType<typeof connectControl>>;
|
|
538
|
+
try {
|
|
539
|
+
client = await connectControl({
|
|
540
|
+
socketPath: typeof socketFlag === "string" ? socketFlag : undefined,
|
|
541
|
+
});
|
|
542
|
+
} catch {
|
|
543
|
+
return null; // no server listening — poll locally instead
|
|
544
|
+
}
|
|
545
|
+
try {
|
|
546
|
+
const data = await client.request("wait", params);
|
|
547
|
+
return { timedOut: false, data };
|
|
548
|
+
} catch (err) {
|
|
549
|
+
if (err instanceof ControlRequestError && err.code === "timeout") return { timedOut: true };
|
|
550
|
+
return null; // dropped/errored mid-wait — fall back to polling
|
|
551
|
+
} finally {
|
|
552
|
+
client.close();
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
|
|
320
556
|
const teamScriptPath = resolve(__dirname, "../packages/daemon/src/tui/team/index.tsx");
|
|
321
557
|
const appScriptPath = resolve(__dirname, "../packages/daemon/src/tui/mirror/app.tsx");
|
|
322
558
|
|
|
@@ -327,14 +563,71 @@ function launchTeamCockpit(): void {
|
|
|
327
563
|
execBunWidget("team", teamScriptPath, [], "team");
|
|
328
564
|
}
|
|
329
565
|
|
|
566
|
+
// The one entry for the unified app: `--detachable`/`--hosted` (or
|
|
567
|
+
// `app.detachable` in config) route through the hosted launcher, everything
|
|
568
|
+
// else runs the app in this terminal as before. The HOSTED_ENV guard keeps the
|
|
569
|
+
// app INSIDE the host session from re-hosting itself.
|
|
570
|
+
async function runApp(appArgs: string[]): Promise<void> {
|
|
571
|
+
// A clean npm install has neither a checkout runtime nor Bun. Acquire the
|
|
572
|
+
// exact-version OpenTUI release artifact on the first explicit app launch so
|
|
573
|
+
// users never need a hidden setup command. This must complete before daemon
|
|
574
|
+
// election: a failed/offline download must not leave a persistent background
|
|
575
|
+
// process behind. Existing binaries and Bun-backed development checkouts
|
|
576
|
+
// return without network work.
|
|
577
|
+
await ensureTuiLaunchAvailable(
|
|
578
|
+
{
|
|
579
|
+
surface: "app",
|
|
580
|
+
scriptPath: appScriptPath,
|
|
581
|
+
args: appArgs,
|
|
582
|
+
checkoutExists: existsSync(appScriptPath),
|
|
583
|
+
bunAvailable: isBunAvailable(),
|
|
584
|
+
compiledBinary: findCompiledTui(),
|
|
585
|
+
preferSource: process.env.TMUX_IDE_TUI_SOURCE === "1",
|
|
586
|
+
},
|
|
587
|
+
{ log: (message) => process.stderr.write(`[tmux-ide] ${message}\n`) },
|
|
588
|
+
);
|
|
589
|
+
// The app is a thin client. Establish the one persistent daemon generation
|
|
590
|
+
// only after its renderer is known-runnable, then mount against that owner.
|
|
591
|
+
await ensureCanonicalDaemon({ entryPath: nodeCliPath });
|
|
592
|
+
const hosted = wantsHostedApp({
|
|
593
|
+
flagDetachable: values.detachable === true,
|
|
594
|
+
flagHosted: values.hosted === true,
|
|
595
|
+
configDetachable: loadAppConfig().app.detachable,
|
|
596
|
+
hostedEnv: process.env[HOSTED_ENV] === "1",
|
|
597
|
+
});
|
|
598
|
+
if (hosted) launchHostedApp(appScriptPath, appArgs);
|
|
599
|
+
else execBunWidget("app", appScriptPath, appArgs, "app");
|
|
600
|
+
}
|
|
601
|
+
|
|
330
602
|
// The unified app as the front door (M22.6): bare `tmux-ide` opens `tmux-ide
|
|
331
603
|
// app`'s HOME panel when `app.frontDoor` is on and there's nothing else to
|
|
332
|
-
// launch. Same entry as the explicit `app` command with no session positional
|
|
333
|
-
|
|
334
|
-
|
|
604
|
+
// launch. Same entry as the explicit `app` command with no session positional
|
|
605
|
+
// — including the hosted flip when `app.detachable` is set (M23.2).
|
|
606
|
+
function launchApp(): Promise<void> {
|
|
607
|
+
return runApp([]);
|
|
335
608
|
}
|
|
336
609
|
|
|
337
610
|
try {
|
|
611
|
+
if (values.headless) {
|
|
612
|
+
if (positionals.length > 0) {
|
|
613
|
+
throw new IdeError("--headless cannot be combined with a command or project path", {
|
|
614
|
+
code: "USAGE",
|
|
615
|
+
exitCode: 2,
|
|
616
|
+
});
|
|
617
|
+
}
|
|
618
|
+
const pkg = await import("../package.json");
|
|
619
|
+
await runHeadlessDaemon({
|
|
620
|
+
port: values.port,
|
|
621
|
+
json,
|
|
622
|
+
expectedVersion: pkg.version,
|
|
623
|
+
});
|
|
624
|
+
// The daemon cleanup is complete here. Exit explicitly because stores and
|
|
625
|
+
// native adapters may retain harmless timers/handles that must not turn a
|
|
626
|
+
// stopped desktop-owned daemon into a zombie process.
|
|
627
|
+
// Flush a piped JSON/human status before the explicit owner exit.
|
|
628
|
+
await new Promise<void>((resolveFlush) => process.stdout.write("", resolveFlush));
|
|
629
|
+
process.exit(0);
|
|
630
|
+
}
|
|
338
631
|
switch (command) {
|
|
339
632
|
case "start": {
|
|
340
633
|
// npm-style staleness nudge: one dim stderr line when a newer version is
|
|
@@ -355,12 +648,21 @@ try {
|
|
|
355
648
|
}
|
|
356
649
|
}
|
|
357
650
|
const targetDir = resolve(startTargetDir || ".");
|
|
358
|
-
|
|
651
|
+
if (startTargetDir && !existsSync(targetDir)) {
|
|
652
|
+
throw new IdeError(
|
|
653
|
+
`No workspace config found in ${targetDir}. Run "tmux-ide init" or "tmux-ide detect --write" to create one.`,
|
|
654
|
+
{ code: "CONFIG_NOT_FOUND", exitCode: 1 },
|
|
655
|
+
);
|
|
656
|
+
}
|
|
657
|
+
const configContext = await resolveProjectConfigContext(targetDir);
|
|
359
658
|
// M22.6 — the front-door decision. `--team` always means the classic
|
|
360
|
-
// cockpit; a present
|
|
659
|
+
// cockpit; a present project config still auto-launches the project; otherwise
|
|
361
660
|
// `app.frontDoor` flips the default no-project entry to the unified app.
|
|
362
661
|
const entry = resolveEntry({
|
|
363
|
-
|
|
662
|
+
bareInvocation: firstPositional === undefined,
|
|
663
|
+
configKind: configContext.configKind,
|
|
664
|
+
hasWorkspaceConfig: configContext.hasWorkspaceConfig,
|
|
665
|
+
hasIdeYml: configContext.hasIdeYml,
|
|
364
666
|
teamFlag: values.team === true,
|
|
365
667
|
frontDoor: loadAppConfig().app.frontDoor,
|
|
366
668
|
});
|
|
@@ -371,7 +673,7 @@ try {
|
|
|
371
673
|
await printFleetJson();
|
|
372
674
|
break;
|
|
373
675
|
}
|
|
374
|
-
if (entry === "app") launchApp();
|
|
676
|
+
if (entry === "app") await launchApp();
|
|
375
677
|
else launchTeamCockpit();
|
|
376
678
|
break;
|
|
377
679
|
}
|
|
@@ -428,6 +730,10 @@ try {
|
|
|
428
730
|
await detect(positionals[1], { json, write: values.write });
|
|
429
731
|
break;
|
|
430
732
|
|
|
733
|
+
case "migrate":
|
|
734
|
+
await migrate(positionals[1], { json, dryRun: values["dry-run"], write: values.write });
|
|
735
|
+
break;
|
|
736
|
+
|
|
431
737
|
case "config": {
|
|
432
738
|
const sub = positionals[1];
|
|
433
739
|
let action = "dump";
|
|
@@ -528,10 +834,14 @@ try {
|
|
|
528
834
|
case "app": {
|
|
529
835
|
// The unified app (M18.1): sidebar fleet + a live tmux-session mirror.
|
|
530
836
|
// Bare `tmux-ide app` opens the HOME panel (fleet cards); an optional
|
|
531
|
-
// session positional boots straight into that session's mirror.
|
|
837
|
+
// session positional boots straight into that session's mirror. With
|
|
838
|
+
// `--detachable` (alias `--hosted`, or `app.detachable` in config) the
|
|
839
|
+
// app runs in the internal `_tmux-ide-app` session instead and this
|
|
840
|
+
// terminal attaches to it (M23.2) — the positional only shapes the
|
|
841
|
+
// cockpit at CREATE time; a reattach finds the app exactly as left.
|
|
532
842
|
const session = positionals[1];
|
|
533
843
|
const appArgs = session ? [`--target=${session}`] : [];
|
|
534
|
-
|
|
844
|
+
await runApp(appArgs);
|
|
535
845
|
break;
|
|
536
846
|
}
|
|
537
847
|
|
|
@@ -557,7 +867,7 @@ try {
|
|
|
557
867
|
const pattern = values.match;
|
|
558
868
|
if (!target || typeof pattern !== "string" || pattern.length === 0) {
|
|
559
869
|
console.error(
|
|
560
|
-
"Usage: tmux-ide wait output <pane|session> --match <regex> [--timeout <ms>]",
|
|
870
|
+
"Usage: tmux-ide wait output <pane|session> --match <regex> [--timeout <ms>] [--socket[=path]]",
|
|
561
871
|
);
|
|
562
872
|
process.exit(1);
|
|
563
873
|
}
|
|
@@ -567,46 +877,42 @@ try {
|
|
|
567
877
|
console.error(`Invalid --match regex: ${(err as Error).message}`);
|
|
568
878
|
process.exit(1);
|
|
569
879
|
}
|
|
570
|
-
const { capturePane } = await import("../packages/tmux-bridge/src/index.ts");
|
|
571
880
|
const outTimeout = Number(values.timeout ?? "60000");
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
let hit: string | null = null;
|
|
585
|
-
for (const line of lines) {
|
|
586
|
-
if (new RegExp(pattern!).test(line)) {
|
|
587
|
-
hit = line;
|
|
588
|
-
break;
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
if (hit === null && new RegExp(pattern!).test(text)) hit = lines[lines.length - 1] ?? "";
|
|
592
|
-
if (hit !== null) {
|
|
593
|
-
if (json) console.log(JSON.stringify({ matched: hit }));
|
|
594
|
-
else console.log(hit);
|
|
595
|
-
process.exit(0);
|
|
596
|
-
}
|
|
597
|
-
if (Date.now() - outStart >= outTimeout) {
|
|
881
|
+
|
|
882
|
+
// `--socket` fast path: let a running `tmux-ide serve` hold the wait
|
|
883
|
+
// (one process, no spawn-per-poll). Falls back silently when no server
|
|
884
|
+
// is listening — the polling below is exactly the same implementation.
|
|
885
|
+
const viaSocket = await waitOverSocket({
|
|
886
|
+
kind: "output",
|
|
887
|
+
target,
|
|
888
|
+
match: pattern,
|
|
889
|
+
timeoutMs: outTimeout,
|
|
890
|
+
});
|
|
891
|
+
if (viaSocket) {
|
|
892
|
+
if (viaSocket.timedOut) {
|
|
598
893
|
console.error(
|
|
599
894
|
`Timed out after ${outTimeout}ms waiting for ${target} output to match /${pattern}/`,
|
|
600
895
|
);
|
|
601
896
|
process.exit(1);
|
|
602
897
|
}
|
|
603
|
-
|
|
898
|
+
const hit = (viaSocket.data as { matched: string }).matched;
|
|
899
|
+
if (json) console.log(JSON.stringify({ matched: hit }));
|
|
900
|
+
else console.log(hit);
|
|
901
|
+
process.exit(0);
|
|
604
902
|
}
|
|
605
|
-
}
|
|
606
903
|
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
904
|
+
const { waitForOutputMatch } = await import("../packages/daemon/src/tui/team/wait.ts");
|
|
905
|
+
const result = await waitForOutputMatch(target!, pattern!, { timeoutMs: outTimeout });
|
|
906
|
+
if (!result.ok) {
|
|
907
|
+
console.error(
|
|
908
|
+
`Timed out after ${outTimeout}ms waiting for ${target} output to match /${pattern}/`,
|
|
909
|
+
);
|
|
910
|
+
process.exit(1);
|
|
911
|
+
}
|
|
912
|
+
if (json) console.log(JSON.stringify({ matched: result.matched }));
|
|
913
|
+
else console.log(result.matched);
|
|
914
|
+
process.exit(0);
|
|
915
|
+
}
|
|
610
916
|
|
|
611
917
|
const VALID = new Set(["blocked", "working", "done", "idle", "unknown"]);
|
|
612
918
|
const sessionName = positionals[2];
|
|
@@ -614,37 +920,81 @@ try {
|
|
|
614
920
|
|
|
615
921
|
if (sub !== "agent-status" || !sessionName || typeof want !== "string" || !VALID.has(want)) {
|
|
616
922
|
console.error(
|
|
617
|
-
"Usage: tmux-ide wait agent-status <session> --status <blocked|working|done|idle|unknown> [--timeout <ms>]",
|
|
923
|
+
"Usage: tmux-ide wait agent-status <session> --status <blocked|working|done|idle|unknown> [--timeout <ms>] [--socket[=path]]",
|
|
618
924
|
);
|
|
619
925
|
process.exit(1);
|
|
620
926
|
}
|
|
621
927
|
|
|
622
928
|
const timeout = Number(values.timeout ?? "60000");
|
|
623
|
-
|
|
624
|
-
const
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
console.log(`${sessionName} reached status: ${status}`);
|
|
637
|
-
}
|
|
638
|
-
process.exit(0);
|
|
929
|
+
|
|
930
|
+
const viaSocket = await waitOverSocket({
|
|
931
|
+
kind: "agent-status",
|
|
932
|
+
session: sessionName,
|
|
933
|
+
status: want,
|
|
934
|
+
timeoutMs: timeout,
|
|
935
|
+
});
|
|
936
|
+
if (viaSocket) {
|
|
937
|
+
if (viaSocket.timedOut) {
|
|
938
|
+
console.error(
|
|
939
|
+
`Timed out after ${timeout}ms waiting for ${sessionName} to reach status "${want}"`,
|
|
940
|
+
);
|
|
941
|
+
process.exit(1);
|
|
639
942
|
}
|
|
640
|
-
if (
|
|
943
|
+
if (json) console.log(JSON.stringify({ session: sessionName, status: want, ok: true }));
|
|
944
|
+
else console.log(`${sessionName} reached status: ${want}`);
|
|
945
|
+
process.exit(0);
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
// Receipt fast path: a running daemon pushes a typed `agent.turn-completed`
|
|
949
|
+
// receipt on /ws/events the moment its watcher observes the transition —
|
|
950
|
+
// one idle socket instead of re-scraping the fleet every poll. Only
|
|
951
|
+
// `done`/`idle` are receipt-covered; anything it cannot answer (no
|
|
952
|
+
// daemon, connect failure, socket drop, other target status) returns
|
|
953
|
+
// null and the polling below takes over. A receipt-path timeout is a
|
|
954
|
+
// real timeout, not a fallback.
|
|
955
|
+
const { waitForAgentStatusViaReceipts } =
|
|
956
|
+
await import("../packages/daemon/src/tui/team/wait-receipts.ts");
|
|
957
|
+
const viaReceipts = await waitForAgentStatusViaReceipts(
|
|
958
|
+
sessionName!,
|
|
959
|
+
want as import("../packages/daemon/src/tui/detect/classify.ts").AgentStatus,
|
|
960
|
+
{ timeoutMs: timeout },
|
|
961
|
+
);
|
|
962
|
+
if (viaReceipts) {
|
|
963
|
+
if (!viaReceipts.ok) {
|
|
641
964
|
console.error(
|
|
642
|
-
`Timed out after ${timeout}ms waiting for ${sessionName} to reach status "${want}" (last: ${status ?? "absent"})`,
|
|
965
|
+
`Timed out after ${timeout}ms waiting for ${sessionName} to reach status "${want}" (last: ${viaReceipts.status ?? "absent"})`,
|
|
643
966
|
);
|
|
644
967
|
process.exit(1);
|
|
645
968
|
}
|
|
646
|
-
|
|
969
|
+
if (json) {
|
|
970
|
+
console.log(
|
|
971
|
+
JSON.stringify({ session: sessionName, status: viaReceipts.status, ok: true }),
|
|
972
|
+
);
|
|
973
|
+
} else {
|
|
974
|
+
console.log(`${sessionName} reached status: ${viaReceipts.status}`);
|
|
975
|
+
}
|
|
976
|
+
process.exit(0);
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
const { waitForAgentStatus } = await import("../packages/daemon/src/tui/team/wait.ts");
|
|
980
|
+
const result = await waitForAgentStatus(
|
|
981
|
+
sessionName!,
|
|
982
|
+
want as import("../packages/daemon/src/tui/detect/classify.ts").AgentStatus,
|
|
983
|
+
{ timeoutMs: timeout },
|
|
984
|
+
);
|
|
985
|
+
if (!result.ok) {
|
|
986
|
+
console.error(
|
|
987
|
+
`Timed out after ${timeout}ms waiting for ${sessionName} to reach status "${want}" (last: ${result.status ?? "absent"})`,
|
|
988
|
+
);
|
|
989
|
+
process.exit(1);
|
|
990
|
+
}
|
|
991
|
+
if (json) {
|
|
992
|
+
console.log(JSON.stringify({ session: sessionName, status: result.status, ok: true }));
|
|
993
|
+
} else {
|
|
994
|
+
console.log(`${sessionName} reached status: ${result.status}`);
|
|
647
995
|
}
|
|
996
|
+
process.exit(0);
|
|
997
|
+
break;
|
|
648
998
|
}
|
|
649
999
|
|
|
650
1000
|
case "events": {
|
|
@@ -657,10 +1007,6 @@ try {
|
|
|
657
1007
|
type EventLike = { ts: string; session: string; from: Status | null; to: Status };
|
|
658
1008
|
|
|
659
1009
|
const path = eventsPath();
|
|
660
|
-
if (!existsSync(path)) {
|
|
661
|
-
console.log("no events yet — is a session adopted? (the chrome updater writes events)");
|
|
662
|
-
break;
|
|
663
|
-
}
|
|
664
1010
|
|
|
665
1011
|
// Status → ANSI color, matching the chrome bar's palette in spirit.
|
|
666
1012
|
const paintStatus = (status: Status | null, text: string): string => {
|
|
@@ -690,6 +1036,40 @@ try {
|
|
|
690
1036
|
}
|
|
691
1037
|
};
|
|
692
1038
|
|
|
1039
|
+
// `--follow --socket` fast path: a running `tmux-ide serve` PUSHES
|
|
1040
|
+
// transitions the moment its detection tick sees them — no file polling.
|
|
1041
|
+
// The last-50 backlog still comes from the log (the server has no
|
|
1042
|
+
// history); falls back silently to the polling path when no server is up.
|
|
1043
|
+
if (values.follow && socketFlag) {
|
|
1044
|
+
const { connectControl } = await import("../packages/daemon/src/control/client.ts");
|
|
1045
|
+
const client = await connectControl({
|
|
1046
|
+
socketPath: typeof socketFlag === "string" ? socketFlag : undefined,
|
|
1047
|
+
}).catch(() => null);
|
|
1048
|
+
if (client) {
|
|
1049
|
+
if (existsSync(path)) {
|
|
1050
|
+
const backlog = readFileSync(path, "utf8")
|
|
1051
|
+
.split("\n")
|
|
1052
|
+
.filter((l) => l.trim().length > 0);
|
|
1053
|
+
for (const line of backlog.slice(-50)) printLine(line);
|
|
1054
|
+
}
|
|
1055
|
+
await client.subscribe((frame) => {
|
|
1056
|
+
if (frame.event === "agent-status") printLine(JSON.stringify(frame.data));
|
|
1057
|
+
});
|
|
1058
|
+
process.on("SIGINT", () => {
|
|
1059
|
+
client.close();
|
|
1060
|
+
process.exit(0);
|
|
1061
|
+
});
|
|
1062
|
+
// Ends when the server shuts down (EOF) — exit cleanly then.
|
|
1063
|
+
await client.done;
|
|
1064
|
+
break;
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
if (!existsSync(path)) {
|
|
1069
|
+
console.log("no events yet — is a session adopted? (the chrome updater writes events)");
|
|
1070
|
+
break;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
693
1073
|
const allLines = readFileSync(path, "utf8")
|
|
694
1074
|
.split("\n")
|
|
695
1075
|
.filter((l) => l.trim().length > 0);
|
|
@@ -813,18 +1193,36 @@ try {
|
|
|
813
1193
|
case "integration": {
|
|
814
1194
|
const sub = positionals[1];
|
|
815
1195
|
const agent = positionals[2];
|
|
816
|
-
// `status` and `offer` need no agent arg; install/uninstall
|
|
817
|
-
|
|
818
|
-
|
|
1196
|
+
// `status` and `offer` need no agent arg; install/uninstall take a kind
|
|
1197
|
+
// we ship an integration for (claude hooks, opencode plugin).
|
|
1198
|
+
const needsAgent = sub === "install" || sub === "uninstall";
|
|
1199
|
+
const installable = agent === "claude" || agent === "opencode";
|
|
1200
|
+
if (!sub || (needsAgent && !installable)) {
|
|
819
1201
|
console.error(
|
|
820
|
-
"Usage: tmux-ide integration <install|uninstall|status|offer> [claude]\n" +
|
|
821
|
-
" install hook
|
|
822
|
-
"
|
|
823
|
-
"
|
|
1202
|
+
"Usage: tmux-ide integration <install|uninstall|status|offer> [claude|opencode]\n" +
|
|
1203
|
+
" install claude: hook lifecycle events into tmux pane state\n" +
|
|
1204
|
+
" opencode: plugin that records the session id for restore --resume-agents\n" +
|
|
1205
|
+
" uninstall remove exactly the tmux-ide entries for that agent\n" +
|
|
1206
|
+
" status list discovered agents + integration/capture state\n" +
|
|
824
1207
|
" offer one-time first-adopt install prompt (used by the popup)",
|
|
825
1208
|
);
|
|
826
1209
|
process.exit(1);
|
|
827
1210
|
}
|
|
1211
|
+
if (needsAgent && agent === "opencode") {
|
|
1212
|
+
const oc = await import("../packages/daemon/src/tui/integrations/opencode.ts");
|
|
1213
|
+
if (sub === "install") {
|
|
1214
|
+
const { pluginPath } = oc.installOpencodeIntegration();
|
|
1215
|
+
console.log(`plugin: ${pluginPath}`);
|
|
1216
|
+
console.log(
|
|
1217
|
+
"installed — NEW opencode sessions record their session id into the pane\n" +
|
|
1218
|
+
"(@agent_session_id), so `tmux-ide restore --resume-agents` can revive them.",
|
|
1219
|
+
);
|
|
1220
|
+
} else {
|
|
1221
|
+
const { wasInstalled } = oc.uninstallOpencodeIntegration();
|
|
1222
|
+
console.log(wasInstalled ? "uninstalled — plugin removed" : "was not installed");
|
|
1223
|
+
}
|
|
1224
|
+
break;
|
|
1225
|
+
}
|
|
828
1226
|
const mod = await import("../packages/daemon/src/tui/integrations/claude.ts");
|
|
829
1227
|
if (sub === "install") {
|
|
830
1228
|
const { scriptPath, settingsPath } = mod.installClaudeIntegration();
|
|
@@ -840,6 +1238,51 @@ try {
|
|
|
840
1238
|
"installed — NEW Claude Code sessions now report working/blocked/done " +
|
|
841
1239
|
"authoritatively into the tmux-ide chrome.",
|
|
842
1240
|
);
|
|
1241
|
+
// M25.1: this is the moment the user is wiring notifications, so offer
|
|
1242
|
+
// the macOS banner channel here — one plain y/N key, same shape as the
|
|
1243
|
+
// first-adopt offer. Skipped when already on, off-macOS, or when there
|
|
1244
|
+
// is no TTY to ask (TMUX_IDE_NOTIFY_KEY forces an answer for tests).
|
|
1245
|
+
const { getAppConfig, updateAppConfig } =
|
|
1246
|
+
await import("../packages/daemon/src/lib/app-config.ts");
|
|
1247
|
+
const forcedKey = process.env.TMUX_IDE_NOTIFY_KEY;
|
|
1248
|
+
const canAsk = forcedKey !== undefined || process.stdin.isTTY === true;
|
|
1249
|
+
if (process.platform === "darwin" && !getAppConfig().notifications.macos && canAsk) {
|
|
1250
|
+
const act = (key: string): void => {
|
|
1251
|
+
if (key === "y" || key === "Y") {
|
|
1252
|
+
updateAppConfig({ notifications: { macos: true } });
|
|
1253
|
+
console.log(
|
|
1254
|
+
"macOS notifications on — native branded banners will jump to the session when clicked.",
|
|
1255
|
+
);
|
|
1256
|
+
} else {
|
|
1257
|
+
console.log(
|
|
1258
|
+
"skipped — turn banners on anytime: notifications.macos in ~/.tmux-ide/config.json.",
|
|
1259
|
+
);
|
|
1260
|
+
}
|
|
1261
|
+
};
|
|
1262
|
+
process.stdout.write("\nAlso get a macOS notification when an agent needs you? [y/N] ");
|
|
1263
|
+
if (forcedKey !== undefined) {
|
|
1264
|
+
console.log(forcedKey);
|
|
1265
|
+
act(forcedKey);
|
|
1266
|
+
} else {
|
|
1267
|
+
const key = await new Promise<string>((resolve) => {
|
|
1268
|
+
try {
|
|
1269
|
+
process.stdin.setRawMode?.(true);
|
|
1270
|
+
process.stdin.resume();
|
|
1271
|
+
process.stdin.once("data", (data) => resolve(data.toString()));
|
|
1272
|
+
} catch {
|
|
1273
|
+
resolve(""); // no readable stdin — treat as "no"
|
|
1274
|
+
}
|
|
1275
|
+
});
|
|
1276
|
+
try {
|
|
1277
|
+
process.stdin.setRawMode?.(false);
|
|
1278
|
+
process.stdin.pause();
|
|
1279
|
+
} catch {
|
|
1280
|
+
// best-effort terminal restore
|
|
1281
|
+
}
|
|
1282
|
+
console.log(/^[ -~]$/.test(key) ? key : "");
|
|
1283
|
+
act(key);
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
843
1286
|
} else if (sub === "uninstall") {
|
|
844
1287
|
const { wasInstalled } = mod.uninstallClaudeIntegration();
|
|
845
1288
|
console.log(wasInstalled ? "uninstalled — hook entries removed" : "was not installed");
|
|
@@ -905,7 +1348,18 @@ try {
|
|
|
905
1348
|
else if (a.integration)
|
|
906
1349
|
state = a.installed ? "integration installed ✓" : "on PATH — integration not installed";
|
|
907
1350
|
else state = "detected (no integration)";
|
|
908
|
-
|
|
1351
|
+
// The resume-key story: how @agent_session_id (what `restore
|
|
1352
|
+
// --resume-agents` revives from) gets captured for this kind.
|
|
1353
|
+
let capture = "";
|
|
1354
|
+
if (a.path !== null) {
|
|
1355
|
+
if (a.capture === "probe") capture = " · session-id capture: automatic";
|
|
1356
|
+
else if (a.capture !== null)
|
|
1357
|
+
capture = a.captureActive
|
|
1358
|
+
? ` · session-id capture: ${a.capture} ✓`
|
|
1359
|
+
: ` · session-id capture: ${a.capture} (install to enable)`;
|
|
1360
|
+
else capture = " · session-id capture: none";
|
|
1361
|
+
}
|
|
1362
|
+
console.log(` ${a.id.padEnd(10)} ${state}${capture}`);
|
|
909
1363
|
}
|
|
910
1364
|
}
|
|
911
1365
|
break;
|
|
@@ -1138,7 +1592,7 @@ try {
|
|
|
1138
1592
|
break;
|
|
1139
1593
|
}
|
|
1140
1594
|
// Opening: resolve the session's cwd + best-effort sidebar width/theme
|
|
1141
|
-
// from
|
|
1595
|
+
// from the resolved project config there (any adopted session may have none → defaults).
|
|
1142
1596
|
const { getSessionCwd } = await import("../packages/tmux-bridge/src/index.ts");
|
|
1143
1597
|
let dir = process.cwd();
|
|
1144
1598
|
try {
|
|
@@ -1149,13 +1603,13 @@ try {
|
|
|
1149
1603
|
let width = DEFAULT_SIDEBAR_WIDTH;
|
|
1150
1604
|
let theme = null;
|
|
1151
1605
|
try {
|
|
1152
|
-
const
|
|
1153
|
-
const
|
|
1154
|
-
theme = config
|
|
1155
|
-
const sb = resolveSidebarConfig(config
|
|
1606
|
+
const resolved = await resolveConfig(dir);
|
|
1607
|
+
const config = resolved.launchConfig;
|
|
1608
|
+
theme = config?.theme ?? null;
|
|
1609
|
+
const sb = resolveSidebarConfig(config?.sidebar);
|
|
1156
1610
|
if (sb.enabled) width = sb.width;
|
|
1157
1611
|
} catch {
|
|
1158
|
-
// no/invalid
|
|
1612
|
+
// no/invalid project config — defaults are fine
|
|
1159
1613
|
}
|
|
1160
1614
|
openSidebarPane(session, dir, width, theme);
|
|
1161
1615
|
} catch {
|
|
@@ -1186,7 +1640,6 @@ try {
|
|
|
1186
1640
|
removeWorktree,
|
|
1187
1641
|
WorktreeError,
|
|
1188
1642
|
} = await import("../packages/daemon/src/lib/worktree.ts");
|
|
1189
|
-
const { getSessionName } = await import("../packages/daemon/src/lib/yaml-io.ts");
|
|
1190
1643
|
const { getSessionCwd, hasSession, killSession, createDetachedSession } =
|
|
1191
1644
|
await import("../packages/tmux-bridge/src/index.ts");
|
|
1192
1645
|
|
|
@@ -1204,19 +1657,20 @@ try {
|
|
|
1204
1657
|
}
|
|
1205
1658
|
}
|
|
1206
1659
|
|
|
1207
|
-
// The project identity for session names: the MAIN worktree's
|
|
1660
|
+
// The project identity for session names: the MAIN worktree's config name
|
|
1208
1661
|
// (or its dir basename). `git worktree list` returns the main checkout first.
|
|
1209
1662
|
const worktrees = listWorktrees(repoDir);
|
|
1210
1663
|
const mainPath = worktrees[0]?.path ?? repoDir;
|
|
1211
|
-
const projectName =
|
|
1664
|
+
const projectName = (await resolveProjectConfigContext(mainPath)).sessionName;
|
|
1212
1665
|
|
|
1213
|
-
// Start a session in a worktree checkout: full IDE layout when it has
|
|
1214
|
-
//
|
|
1666
|
+
// Start a session in a worktree checkout: full IDE layout when it has a
|
|
1667
|
+
// workspace config (launch under the worktree's own session name so it never
|
|
1215
1668
|
// collides with the parent repo's session), else a plain adopted session.
|
|
1216
1669
|
// Never auto-attaches — the caller may be inside tmux (the menu) — it prints
|
|
1217
1670
|
// how to switch instead.
|
|
1218
1671
|
async function openWorktreeSession(wtPath: string, name: string): Promise<void> {
|
|
1219
|
-
|
|
1672
|
+
const worktreeContext = await resolveProjectConfigContext(wtPath);
|
|
1673
|
+
if (worktreeContext.configKind !== "none") {
|
|
1220
1674
|
await launch(wtPath, { attach: false, sessionName: name });
|
|
1221
1675
|
} else {
|
|
1222
1676
|
if (!hasSession(name)) createDetachedSession(name, wtPath);
|
|
@@ -1382,6 +1836,32 @@ try {
|
|
|
1382
1836
|
}
|
|
1383
1837
|
|
|
1384
1838
|
case "update": {
|
|
1839
|
+
// `--manifests`: fetch the agent-detection manifest pack (versioned JSON,
|
|
1840
|
+
// a GitHub release asset) into ~/.tmux-ide/agent-detection/pack/ — the
|
|
1841
|
+
// loader hot-merges it under bundled<pack<user precedence. Schema-invalid
|
|
1842
|
+
// packs are rejected loudly. See lib/manifest-pack.ts for the format.
|
|
1843
|
+
if (values["manifests"] === true) {
|
|
1844
|
+
const { updateManifestPack } = await import("../packages/daemon/src/lib/manifest-pack.ts");
|
|
1845
|
+
try {
|
|
1846
|
+
const r = await updateManifestPack({ log: (m) => console.error(m) });
|
|
1847
|
+
if (json) {
|
|
1848
|
+
console.log(JSON.stringify({ ok: true, ...r }, null, 2));
|
|
1849
|
+
} else {
|
|
1850
|
+
console.log(
|
|
1851
|
+
`manifest pack ${r.packVersion} installed (${r.count} manifests): ${r.path}`,
|
|
1852
|
+
);
|
|
1853
|
+
console.log(
|
|
1854
|
+
"your own agent-detection/*.json overrides still win — the pack merges beneath them",
|
|
1855
|
+
);
|
|
1856
|
+
}
|
|
1857
|
+
} catch (err) {
|
|
1858
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
1859
|
+
if (json) console.log(JSON.stringify({ ok: false, error: message }, null, 2));
|
|
1860
|
+
else console.error(`manifest pack NOT installed: ${message}`);
|
|
1861
|
+
process.exitCode = 1;
|
|
1862
|
+
}
|
|
1863
|
+
break;
|
|
1864
|
+
}
|
|
1385
1865
|
// `--tui-binary`: download the per-platform TUI binary (the fallback that
|
|
1386
1866
|
// lets an npm install with no bun run the full cockpit). Explicit opt-in —
|
|
1387
1867
|
// never auto-fetched on install (it's ~70MB). See lib/tui-binary.ts.
|
|
@@ -1438,6 +1918,184 @@ try {
|
|
|
1438
1918
|
break;
|
|
1439
1919
|
}
|
|
1440
1920
|
|
|
1921
|
+
case "show":
|
|
1922
|
+
case "widget": {
|
|
1923
|
+
/*
|
|
1924
|
+
* Opt this pane into rich rendering (m49.7).
|
|
1925
|
+
*
|
|
1926
|
+
* tmux-ide widget markdown [file] # or stdin; files live-refresh
|
|
1927
|
+
* tmux-ide widget image <file> # PNG/JPEG/GIF/WebP/AVIF
|
|
1928
|
+
* tmux-ide widget card [file] # or JSON on stdin
|
|
1929
|
+
*
|
|
1930
|
+
* The marker line carries inline content or a content-addressed asset id,
|
|
1931
|
+
* so the helper prints ONE line and then holds the pane. File-backed
|
|
1932
|
+
* widgets publish a new id whenever the file changes. Ctrl-C
|
|
1933
|
+
* clears the screen, which is what takes the widget down — the renderer
|
|
1934
|
+
* shows one for exactly as long as the marker is in the grid.
|
|
1935
|
+
*
|
|
1936
|
+
* Outside a tmux-ide window this prints a concealed line and waits, which
|
|
1937
|
+
* is why the marker is wrapped in SGR 8 rather than left bare.
|
|
1938
|
+
*/
|
|
1939
|
+
const {
|
|
1940
|
+
PaneWidgetRefusal,
|
|
1941
|
+
PANE_WIDGET_RESTORE_SEQUENCE,
|
|
1942
|
+
buildCardAnnouncement,
|
|
1943
|
+
buildImageAssetAnnouncement,
|
|
1944
|
+
buildMarkdownAnnouncement,
|
|
1945
|
+
buildMarkdownAssetAnnouncement,
|
|
1946
|
+
imageMediaTypeFor,
|
|
1947
|
+
paneWidgetId,
|
|
1948
|
+
paneWidgetIdForFile,
|
|
1949
|
+
} = await import("../packages/daemon/src/lib/pane-widget.ts");
|
|
1950
|
+
const { publishWidgetAsset, WidgetAssetStoreError } =
|
|
1951
|
+
await import("../packages/daemon/src/lib/widget-asset-store.ts");
|
|
1952
|
+
const { readFileSync, watchFile, unwatchFile } = await import("node:fs");
|
|
1953
|
+
const { basename } = await import("node:path");
|
|
1954
|
+
|
|
1955
|
+
const readStdin = async (): Promise<string> => {
|
|
1956
|
+
const chunks: Buffer[] = [];
|
|
1957
|
+
for await (const chunk of process.stdin) chunks.push(Buffer.from(chunk));
|
|
1958
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
1959
|
+
};
|
|
1960
|
+
|
|
1961
|
+
let announcement: string;
|
|
1962
|
+
let watchedFile: string | null = null;
|
|
1963
|
+
let refreshAnnouncement: (() => string) | null = null;
|
|
1964
|
+
try {
|
|
1965
|
+
const friendlyShow = command === "show";
|
|
1966
|
+
const file = friendlyShow ? positionals[1] : positionals[2];
|
|
1967
|
+
if (friendlyShow && !file) {
|
|
1968
|
+
throw new PaneWidgetRefusal("empty", "Usage: tmux-ide show <file>");
|
|
1969
|
+
}
|
|
1970
|
+
const id = friendlyShow
|
|
1971
|
+
? paneWidgetIdForFile(file ?? "")
|
|
1972
|
+
: paneWidgetId(positionals[1] ?? "");
|
|
1973
|
+
if (id === "markdown") {
|
|
1974
|
+
if (file) {
|
|
1975
|
+
const publish = (): string => {
|
|
1976
|
+
const asset = publishWidgetAsset(readFileSync(file), {
|
|
1977
|
+
media: "text/markdown",
|
|
1978
|
+
name: basename(file),
|
|
1979
|
+
});
|
|
1980
|
+
return buildMarkdownAssetAnnouncement(asset.assetId, basename(file));
|
|
1981
|
+
};
|
|
1982
|
+
announcement = publish();
|
|
1983
|
+
watchedFile = file;
|
|
1984
|
+
refreshAnnouncement = publish;
|
|
1985
|
+
} else {
|
|
1986
|
+
announcement = buildMarkdownAnnouncement(await readStdin());
|
|
1987
|
+
}
|
|
1988
|
+
} else if (id === "image") {
|
|
1989
|
+
if (!file) throw new PaneWidgetRefusal("empty", "The image widget needs a file path.");
|
|
1990
|
+
const publish = (): string => {
|
|
1991
|
+
const media = imageMediaTypeFor(file);
|
|
1992
|
+
if (!media) {
|
|
1993
|
+
throw new PaneWidgetRefusal(
|
|
1994
|
+
"unsupported-media",
|
|
1995
|
+
`"${basename(file)}" is not a supported raster image.`,
|
|
1996
|
+
);
|
|
1997
|
+
}
|
|
1998
|
+
const asset = publishWidgetAsset(readFileSync(file), {
|
|
1999
|
+
media: media as
|
|
2000
|
+
| "image/png"
|
|
2001
|
+
| "image/jpeg"
|
|
2002
|
+
| "image/gif"
|
|
2003
|
+
| "image/webp"
|
|
2004
|
+
| "image/avif",
|
|
2005
|
+
name: basename(file),
|
|
2006
|
+
});
|
|
2007
|
+
return buildImageAssetAnnouncement(asset.assetId, { name: basename(file) });
|
|
2008
|
+
};
|
|
2009
|
+
announcement = publish();
|
|
2010
|
+
watchedFile = file;
|
|
2011
|
+
refreshAnnouncement = publish;
|
|
2012
|
+
} else {
|
|
2013
|
+
const source = file ? readFileSync(file, "utf8") : await readStdin();
|
|
2014
|
+
announcement = buildCardAnnouncement(JSON.parse(source) as unknown);
|
|
2015
|
+
}
|
|
2016
|
+
} catch (error) {
|
|
2017
|
+
const message =
|
|
2018
|
+
error instanceof PaneWidgetRefusal || error instanceof WidgetAssetStoreError
|
|
2019
|
+
? error.message
|
|
2020
|
+
: `The widget input could not be read: ${(error as Error).message}`;
|
|
2021
|
+
if (json) {
|
|
2022
|
+
console.log(JSON.stringify({ ok: false, error: message }, null, 2));
|
|
2023
|
+
} else {
|
|
2024
|
+
console.error(message);
|
|
2025
|
+
}
|
|
2026
|
+
process.exit(1);
|
|
2027
|
+
}
|
|
2028
|
+
|
|
2029
|
+
if (json) {
|
|
2030
|
+
// Machine callers want the line to emit themselves, not a held pane.
|
|
2031
|
+
console.log(JSON.stringify({ ok: true, announcement }, null, 2));
|
|
2032
|
+
break;
|
|
2033
|
+
}
|
|
2034
|
+
|
|
2035
|
+
process.stdout.write(announcement);
|
|
2036
|
+
if (watchedFile && refreshAnnouncement) {
|
|
2037
|
+
const source = watchedFile;
|
|
2038
|
+
const refresh = refreshAnnouncement;
|
|
2039
|
+
watchFile(source, { interval: 750 }, (current, previous) => {
|
|
2040
|
+
if (current.mtimeMs === previous.mtimeMs && current.size === previous.size) return;
|
|
2041
|
+
try {
|
|
2042
|
+
process.stdout.write(PANE_WIDGET_RESTORE_SEQUENCE + refresh());
|
|
2043
|
+
} catch (error) {
|
|
2044
|
+
process.stderr.write(
|
|
2045
|
+
`tmux-ide ${command} could not refresh: ${(error as Error).message}\n`,
|
|
2046
|
+
);
|
|
2047
|
+
}
|
|
2048
|
+
});
|
|
2049
|
+
}
|
|
2050
|
+
// Hold the pane. The process is doing nothing, but it is what Ctrl-C has
|
|
2051
|
+
// to reach for the restore to be the user's own action rather than ours.
|
|
2052
|
+
const hold = setInterval(() => undefined, 1 << 30);
|
|
2053
|
+
const restore = (): void => {
|
|
2054
|
+
clearInterval(hold);
|
|
2055
|
+
if (watchedFile) unwatchFile(watchedFile);
|
|
2056
|
+
process.stdout.write(PANE_WIDGET_RESTORE_SEQUENCE);
|
|
2057
|
+
process.exit(0);
|
|
2058
|
+
};
|
|
2059
|
+
process.on("SIGINT", restore);
|
|
2060
|
+
process.on("SIGTERM", restore);
|
|
2061
|
+
break;
|
|
2062
|
+
}
|
|
2063
|
+
|
|
2064
|
+
case "serve": {
|
|
2065
|
+
// The local control socket (M23.3): NDJSON verbs + pushed agent-status
|
|
2066
|
+
// events over a 0600 Unix socket. Foreground on purpose — the process
|
|
2067
|
+
// the user (or their agent loop) started is the process they own; see
|
|
2068
|
+
// the host tradeoff in control/server.ts.
|
|
2069
|
+
const { startControlServer, defaultControlSocketPath } =
|
|
2070
|
+
await import("../packages/daemon/src/control/server.ts");
|
|
2071
|
+
const socketPath =
|
|
2072
|
+
typeof socketFlag === "string"
|
|
2073
|
+
? socketFlag
|
|
2074
|
+
: (positionals[1] ?? defaultControlSocketPath());
|
|
2075
|
+
const server = await startControlServer({
|
|
2076
|
+
socketPath,
|
|
2077
|
+
log: (m) => console.error(`[serve] ${m}`),
|
|
2078
|
+
});
|
|
2079
|
+
let closing = false;
|
|
2080
|
+
const shutdown = () => {
|
|
2081
|
+
if (closing) return;
|
|
2082
|
+
closing = true;
|
|
2083
|
+
// Unlinks the socket and EOFs every client before exiting.
|
|
2084
|
+
void server.close().then(() => process.exit(0));
|
|
2085
|
+
};
|
|
2086
|
+
process.on("SIGTERM", shutdown);
|
|
2087
|
+
process.on("SIGINT", shutdown);
|
|
2088
|
+
await new Promise(() => {}); // the server owns the process lifetime
|
|
2089
|
+
break;
|
|
2090
|
+
}
|
|
2091
|
+
|
|
2092
|
+
case "web": {
|
|
2093
|
+
throw new IdeError(
|
|
2094
|
+
"The Web GUI is not included in the OpenTUI beta. Run `tmux-ide app` for the supported interface.",
|
|
2095
|
+
{ code: "WEB_GUI_NOT_INCLUDED", exitCode: 1 },
|
|
2096
|
+
);
|
|
2097
|
+
}
|
|
2098
|
+
|
|
1441
2099
|
case "command-center": {
|
|
1442
2100
|
const { startCommandCenter } = await import("../packages/daemon/src/command-center/index.ts");
|
|
1443
2101
|
await startCommandCenter({ port: parseInt(values.port ?? "4000") });
|