aicodeman 1.42.0 → 1.44.0
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 +13 -12
- package/dist/claude-session-title.d.ts +6 -4
- package/dist/claude-session-title.d.ts.map +1 -1
- package/dist/claude-session-title.js +6 -4
- package/dist/claude-session-title.js.map +1 -1
- package/dist/cli-agent.d.ts +3 -3
- package/dist/cli-agent.d.ts.map +1 -1
- package/dist/cli-agent.js +8 -6
- package/dist/cli-agent.js.map +1 -1
- package/dist/config/cli-registry/patterns.d.ts +1 -1
- package/dist/config/cli-registry/patterns.d.ts.map +1 -1
- package/dist/config/cli-registry/patterns.js +3 -0
- package/dist/config/cli-registry/patterns.js.map +1 -1
- package/dist/config/cli-registry/schema.d.ts +1 -0
- package/dist/config/cli-registry/schema.d.ts.map +1 -1
- package/dist/config/cli-registry/schema.js +5 -3
- package/dist/config/cli-registry/schema.js.map +1 -1
- package/dist/config/cli-registry/stock.d.ts.map +1 -1
- package/dist/config/cli-registry/stock.js +263 -4
- package/dist/config/cli-registry/stock.js.map +1 -1
- package/dist/config/cli-registry/types.d.ts +13 -5
- package/dist/config/cli-registry/types.d.ts.map +1 -1
- package/dist/config/map-limits.d.ts +13 -1
- package/dist/config/map-limits.d.ts.map +1 -1
- package/dist/config/map-limits.js +28 -1
- package/dist/config/map-limits.js.map +1 -1
- package/dist/config-backup.d.ts +279 -0
- package/dist/config-backup.d.ts.map +1 -0
- package/dist/config-backup.js +794 -0
- package/dist/config-backup.js.map +1 -0
- package/dist/cron/cron-service.d.ts +5 -5
- package/dist/cron/cron-service.js +6 -6
- package/dist/cron/cron-service.js.map +1 -1
- package/dist/custom-model-hosts.d.ts +16 -0
- package/dist/custom-model-hosts.d.ts.map +1 -1
- package/dist/custom-model-hosts.js.map +1 -1
- package/dist/hooks-config.d.ts +24 -0
- package/dist/hooks-config.d.ts.map +1 -1
- package/dist/hooks-config.js +47 -0
- package/dist/hooks-config.js.map +1 -1
- package/dist/intent-store.d.ts +2 -0
- package/dist/intent-store.d.ts.map +1 -1
- package/dist/intent-store.js +9 -0
- package/dist/intent-store.js.map +1 -1
- package/dist/mcp-sync-targets.d.ts +6 -3
- package/dist/mcp-sync-targets.d.ts.map +1 -1
- package/dist/mcp-sync-targets.js +6 -3
- package/dist/mcp-sync-targets.js.map +1 -1
- package/dist/mux-interface.d.ts +28 -7
- package/dist/mux-interface.d.ts.map +1 -1
- package/dist/prompt-cache-keepwarm.d.ts +193 -0
- package/dist/prompt-cache-keepwarm.d.ts.map +1 -0
- package/dist/prompt-cache-keepwarm.js +359 -0
- package/dist/prompt-cache-keepwarm.js.map +1 -0
- package/dist/respawn-controller.d.ts.map +1 -1
- package/dist/respawn-controller.js +6 -5
- package/dist/respawn-controller.js.map +1 -1
- package/dist/session-auto-ops.d.ts.map +1 -1
- package/dist/session-auto-ops.js +6 -1
- package/dist/session-auto-ops.js.map +1 -1
- package/dist/session-cli-registry-bridge.d.ts +15 -1
- package/dist/session-cli-registry-bridge.d.ts.map +1 -1
- package/dist/session-cli-registry-bridge.js +20 -3
- package/dist/session-cli-registry-bridge.js.map +1 -1
- package/dist/session-submit-verifier.d.ts +19 -0
- package/dist/session-submit-verifier.d.ts.map +1 -1
- package/dist/session-submit-verifier.js +88 -0
- package/dist/session-submit-verifier.js.map +1 -1
- package/dist/session.d.ts +83 -12
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +150 -16
- package/dist/session.js.map +1 -1
- package/dist/state-store.d.ts +10 -0
- package/dist/state-store.d.ts.map +1 -1
- package/dist/state-store.js +35 -0
- package/dist/state-store.js.map +1 -1
- package/dist/tab-layout-service.d.ts +33 -0
- package/dist/tab-layout-service.d.ts.map +1 -1
- package/dist/tab-layout-service.js +75 -3
- package/dist/tab-layout-service.js.map +1 -1
- package/dist/tmux-manager.d.ts +52 -9
- package/dist/tmux-manager.d.ts.map +1 -1
- package/dist/tmux-manager.js +148 -30
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-prefix-table.d.ts +54 -0
- package/dist/tmux-prefix-table.d.ts.map +1 -0
- package/dist/tmux-prefix-table.js +137 -0
- package/dist/tmux-prefix-table.js.map +1 -0
- package/dist/tui/tui-app.d.ts +9 -1
- package/dist/tui/tui-app.d.ts.map +1 -1
- package/dist/tui/tui-app.js +21 -8
- package/dist/tui/tui-app.js.map +1 -1
- package/dist/tui/tui-client.d.ts +3 -2
- package/dist/tui/tui-client.d.ts.map +1 -1
- package/dist/tui/tui-client.js +3 -2
- package/dist/tui/tui-client.js.map +1 -1
- package/dist/types/app-state.d.ts +6 -0
- package/dist/types/app-state.d.ts.map +1 -1
- package/dist/types/app-state.js.map +1 -1
- package/dist/types/session.d.ts +72 -5
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js +2 -1
- package/dist/types/session.js.map +1 -1
- package/dist/usage-telemetry.d.ts +15 -0
- package/dist/usage-telemetry.d.ts.map +1 -1
- package/dist/usage-telemetry.js +45 -2
- package/dist/usage-telemetry.js.map +1 -1
- package/dist/utils/cli-installed-probes.d.ts +1 -1
- package/dist/utils/cli-installed-probes.d.ts.map +1 -1
- package/dist/utils/cli-installed-probes.js +4 -2
- package/dist/utils/cli-installed-probes.js.map +1 -1
- package/dist/utils/copilot-cli-resolver.d.ts +48 -0
- package/dist/utils/copilot-cli-resolver.d.ts.map +1 -0
- package/dist/utils/copilot-cli-resolver.js +112 -0
- package/dist/utils/copilot-cli-resolver.js.map +1 -0
- package/dist/utils/copilot-plan-usage.d.ts +46 -0
- package/dist/utils/copilot-plan-usage.d.ts.map +1 -0
- package/dist/utils/copilot-plan-usage.js +95 -0
- package/dist/utils/copilot-plan-usage.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/single-line.d.ts +22 -0
- package/dist/utils/single-line.d.ts.map +1 -0
- package/dist/utils/single-line.js +30 -0
- package/dist/utils/single-line.js.map +1 -0
- package/dist/web/approval-inbox.d.ts +6 -0
- package/dist/web/approval-inbox.d.ts.map +1 -1
- package/dist/web/approval-inbox.js +2 -2
- package/dist/web/approval-inbox.js.map +1 -1
- package/dist/web/case-path.d.ts +4 -2
- package/dist/web/case-path.d.ts.map +1 -1
- package/dist/web/case-path.js +13 -4
- package/dist/web/case-path.js.map +1 -1
- package/dist/web/plan-usage-latest.d.ts +2 -1
- package/dist/web/plan-usage-latest.d.ts.map +1 -1
- package/dist/web/plan-usage-latest.js +12 -2
- package/dist/web/plan-usage-latest.js.map +1 -1
- package/dist/web/ports/index.d.ts +1 -0
- package/dist/web/ports/index.d.ts.map +1 -1
- package/dist/web/ports/keep-warm-port.d.ts +9 -0
- package/dist/web/ports/keep-warm-port.d.ts.map +1 -0
- package/dist/web/ports/keep-warm-port.js +6 -0
- package/dist/web/ports/keep-warm-port.js.map +1 -0
- package/dist/web/ports/session-port.d.ts +3 -1
- package/dist/web/ports/session-port.d.ts.map +1 -1
- package/dist/web/public/admin-ui.js.gz +0 -0
- package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
- package/dist/web/public/app.9314ee60.js +43 -0
- package/dist/web/public/app.9314ee60.js.br +0 -0
- package/dist/web/public/app.9314ee60.js.gz +0 -0
- package/dist/web/public/approvals-ui.js.gz +0 -0
- package/dist/web/public/{constants.12b0c247.js → constants.4866ecc3.js} +205 -3
- package/dist/web/public/constants.4866ecc3.js.br +0 -0
- package/dist/web/public/constants.4866ecc3.js.gz +0 -0
- package/dist/web/public/cron-ui.js.gz +0 -0
- package/dist/web/public/entrance-animations.js.gz +0 -0
- package/dist/web/public/git-status-ui.js.gz +0 -0
- package/dist/web/public/home-sessions.js.gz +0 -0
- package/dist/web/public/host-wake-ui.js.gz +0 -0
- package/dist/web/public/i18n.22ca902b.js +2 -0
- package/dist/web/public/i18n.22ca902b.js.br +0 -0
- package/dist/web/public/i18n.22ca902b.js.gz +0 -0
- package/dist/web/public/{image-input.fcdcb46c.js → image-input.941386e7.js} +24 -14
- package/dist/web/public/image-input.941386e7.js.br +0 -0
- package/dist/web/public/image-input.941386e7.js.gz +0 -0
- package/dist/web/public/index.html +110 -16
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
- package/dist/web/public/{keyboard-accessory.b42f539b.js → keyboard-accessory.4e8b20ac.js} +51 -22
- package/dist/web/public/keyboard-accessory.4e8b20ac.js.br +0 -0
- package/dist/web/public/keyboard-accessory.4e8b20ac.js.gz +0 -0
- package/dist/web/public/{mobile-handlers.0ef9c311.js → mobile-handlers.44adaa07.js} +48 -16
- package/dist/web/public/mobile-handlers.44adaa07.js.br +0 -0
- package/dist/web/public/mobile-handlers.44adaa07.js.gz +0 -0
- package/dist/web/public/mobile-ime-preview.2dbaf262.js.gz +0 -0
- package/dist/web/public/mobile-overview.js +1 -0
- package/dist/web/public/mobile-overview.js.br +0 -0
- package/dist/web/public/mobile-overview.js.gz +0 -0
- package/dist/web/public/mobile.12fb18de.css +1 -0
- package/dist/web/public/mobile.12fb18de.css.br +0 -0
- package/dist/web/public/mobile.12fb18de.css.gz +0 -0
- package/dist/web/public/notification-manager.feb82c04.js.gz +0 -0
- package/dist/web/public/orchestrator-panel.js.gz +0 -0
- package/dist/web/public/{panels-ui.73ec0137.js → panels-ui.cbb24ba1.js} +66 -66
- package/dist/web/public/panels-ui.cbb24ba1.js.br +0 -0
- package/dist/web/public/panels-ui.cbb24ba1.js.gz +0 -0
- package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
- package/dist/web/public/ralph-wizard.b6c0dd19.js.gz +0 -0
- package/dist/web/public/readmymind-ui.js.gz +0 -0
- package/dist/web/public/reboot-restore-ui.js.gz +0 -0
- package/dist/web/public/respawn-ui.d7adcf6a.js.gz +0 -0
- package/dist/web/public/sanitize-html.e7147e76.js.gz +0 -0
- package/dist/web/public/security-notices.json +21 -0
- package/dist/web/public/session-lineage.js.gz +0 -0
- package/dist/web/public/{session-ui.d52ff6aa.js → session-ui.9c1f009b.js} +8 -4
- package/dist/web/public/session-ui.9c1f009b.js.br +0 -0
- package/dist/web/public/session-ui.9c1f009b.js.gz +0 -0
- package/dist/web/public/settings-ui.fea9ddae.js +106 -0
- package/dist/web/public/settings-ui.fea9ddae.js.br +0 -0
- package/dist/web/public/settings-ui.fea9ddae.js.gz +0 -0
- package/dist/web/public/spreadsheet-preview-worker.js.gz +0 -0
- package/dist/web/public/spreadsheet-preview.75c751de.js.gz +0 -0
- package/dist/web/public/spreadsheet-xlsx-core.js.gz +0 -0
- package/dist/web/public/styles.e096fcd6.css +1 -0
- package/dist/web/public/styles.e096fcd6.css.br +0 -0
- package/dist/web/public/styles.e096fcd6.css.gz +0 -0
- package/dist/web/public/subagent-windows.07277a58.js.gz +0 -0
- package/dist/web/public/sw.js +2 -2
- package/dist/web/public/sw.js.br +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/tab-layout-browser.2d6189f7.js.gz +0 -0
- package/dist/web/public/tab-rail-resize.7157e0bd.js.gz +0 -0
- package/dist/web/public/terminal-keycode229-recovery.af09f99a.js.gz +0 -0
- package/dist/web/public/terminal-split.js.gz +0 -0
- package/dist/web/public/terminal-tile.js +41 -22
- package/dist/web/public/terminal-tile.js.br +0 -0
- package/dist/web/public/terminal-tile.js.gz +0 -0
- package/dist/web/public/terminal-ui.68dbd352.js +2 -0
- package/dist/web/public/terminal-ui.68dbd352.js.br +0 -0
- package/dist/web/public/terminal-ui.68dbd352.js.gz +0 -0
- package/dist/web/public/tile-grid.js +3 -6
- package/dist/web/public/tile-grid.js.br +0 -0
- package/dist/web/public/tile-grid.js.gz +0 -0
- package/dist/web/public/ultracode-panel.js.gz +0 -0
- package/dist/web/public/ultracode-windows.js.gz +0 -0
- package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
- package/dist/web/public/vendor/exceljs.min.js.gz +0 -0
- package/dist/web/public/vendor/fflate.min.js.gz +0 -0
- package/dist/web/public/vendor/marked.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-predictive-echo.ae5e3d5d.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.0b69623c.js.gz +0 -0
- package/dist/web/public/vendor/xterm.css.gz +0 -0
- package/dist/web/public/vendor/xterm.min.js.gz +0 -0
- package/dist/web/public/voice-input.2342c37b.js.gz +0 -0
- package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
- package/dist/web/public/webview-tabs.js.gz +0 -0
- package/dist/web/public/whats-new.json +9 -9
- package/dist/web/response-viewer-transcript.d.ts +6 -0
- package/dist/web/response-viewer-transcript.d.ts.map +1 -1
- package/dist/web/response-viewer-transcript.js +134 -1
- package/dist/web/response-viewer-transcript.js.map +1 -1
- package/dist/web/routes/admin-routes.d.ts +2 -1
- package/dist/web/routes/admin-routes.d.ts.map +1 -1
- package/dist/web/routes/admin-routes.js +3 -0
- package/dist/web/routes/admin-routes.js.map +1 -1
- package/dist/web/routes/case-routes.d.ts +2 -2
- package/dist/web/routes/case-routes.d.ts.map +1 -1
- package/dist/web/routes/case-routes.js +81 -3
- package/dist/web/routes/case-routes.js.map +1 -1
- package/dist/web/routes/config-backup-routes.d.ts +54 -0
- package/dist/web/routes/config-backup-routes.d.ts.map +1 -0
- package/dist/web/routes/config-backup-routes.js +268 -0
- package/dist/web/routes/config-backup-routes.js.map +1 -0
- package/dist/web/routes/custom-model-routes.d.ts +17 -1
- package/dist/web/routes/custom-model-routes.d.ts.map +1 -1
- package/dist/web/routes/custom-model-routes.js +118 -13
- package/dist/web/routes/custom-model-routes.js.map +1 -1
- package/dist/web/routes/hook-event-routes.d.ts.map +1 -1
- package/dist/web/routes/hook-event-routes.js +26 -5
- package/dist/web/routes/hook-event-routes.js.map +1 -1
- package/dist/web/routes/index.d.ts +1 -0
- package/dist/web/routes/index.d.ts.map +1 -1
- package/dist/web/routes/index.js +1 -0
- package/dist/web/routes/index.js.map +1 -1
- package/dist/web/routes/mcp-sync-routes.d.ts +4 -4
- package/dist/web/routes/mcp-sync-routes.js +4 -4
- package/dist/web/routes/ralph-routes.js +2 -2
- package/dist/web/routes/ralph-routes.js.map +1 -1
- package/dist/web/routes/reboot-restore-routes.d.ts.map +1 -1
- package/dist/web/routes/reboot-restore-routes.js +2 -0
- package/dist/web/routes/reboot-restore-routes.js.map +1 -1
- package/dist/web/routes/session-routes.d.ts +14 -4
- package/dist/web/routes/session-routes.d.ts.map +1 -1
- package/dist/web/routes/session-routes.js +131 -30
- package/dist/web/routes/session-routes.js.map +1 -1
- package/dist/web/routes/status-telemetry-routes.d.ts +2 -2
- package/dist/web/routes/status-telemetry-routes.d.ts.map +1 -1
- package/dist/web/routes/status-telemetry-routes.js +8 -4
- package/dist/web/routes/status-telemetry-routes.js.map +1 -1
- package/dist/web/routes/system-routes.d.ts +2 -2
- package/dist/web/routes/system-routes.d.ts.map +1 -1
- package/dist/web/routes/system-routes.js +18 -0
- package/dist/web/routes/system-routes.js.map +1 -1
- package/dist/web/routes/webview-routes.d.ts.map +1 -1
- package/dist/web/routes/webview-routes.js +1 -0
- package/dist/web/routes/webview-routes.js.map +1 -1
- package/dist/web/schemas.d.ts +32 -0
- package/dist/web/schemas.d.ts.map +1 -1
- package/dist/web/schemas.js +64 -4
- package/dist/web/schemas.js.map +1 -1
- package/dist/web/server.d.ts +12 -2
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +127 -6
- package/dist/web/server.js.map +1 -1
- package/dist/web/session-listener-wiring.d.ts +6 -0
- package/dist/web/session-listener-wiring.d.ts.map +1 -1
- package/dist/web/session-listener-wiring.js +10 -3
- package/dist/web/session-listener-wiring.js.map +1 -1
- package/dist/web/sse-events.d.ts +5 -2
- package/dist/web/sse-events.d.ts.map +1 -1
- package/dist/web/sse-events.js +5 -2
- package/dist/web/sse-events.js.map +1 -1
- package/dist/web/webview-proxy.d.ts +8 -3
- package/dist/web/webview-proxy.d.ts.map +1 -1
- package/dist/web/webview-proxy.js +23 -5
- package/dist/web/webview-proxy.js.map +1 -1
- package/package.json +1 -1
- package/skills/codeman/SKILL.md +23 -11
- package/skills/codeman/preamble.sh +12 -2
- package/skills/codeman/reference/endpoints.md +16 -15
- package/skills/codeman/reference/messaging.md +5 -5
- package/skills/codeman/reference/recipes.md +2 -2
- package/skills/codeman/reference/verbs.md +25 -17
- package/dist/web/public/app.f04bb2a5.js +0 -43
- package/dist/web/public/app.f04bb2a5.js.br +0 -0
- package/dist/web/public/app.f04bb2a5.js.gz +0 -0
- package/dist/web/public/constants.12b0c247.js.br +0 -0
- package/dist/web/public/constants.12b0c247.js.gz +0 -0
- package/dist/web/public/i18n.06659676.js +0 -2
- package/dist/web/public/i18n.06659676.js.br +0 -0
- package/dist/web/public/i18n.06659676.js.gz +0 -0
- package/dist/web/public/image-input.fcdcb46c.js.br +0 -0
- package/dist/web/public/image-input.fcdcb46c.js.gz +0 -0
- package/dist/web/public/keyboard-accessory.b42f539b.js.br +0 -0
- package/dist/web/public/keyboard-accessory.b42f539b.js.gz +0 -0
- package/dist/web/public/mobile-handlers.0ef9c311.js.br +0 -0
- package/dist/web/public/mobile-handlers.0ef9c311.js.gz +0 -0
- package/dist/web/public/mobile.2dff1580.css +0 -1
- package/dist/web/public/mobile.2dff1580.css.br +0 -0
- package/dist/web/public/mobile.2dff1580.css.gz +0 -0
- package/dist/web/public/panels-ui.73ec0137.js.br +0 -0
- package/dist/web/public/panels-ui.73ec0137.js.gz +0 -0
- package/dist/web/public/session-ui.d52ff6aa.js.br +0 -0
- package/dist/web/public/session-ui.d52ff6aa.js.gz +0 -0
- package/dist/web/public/settings-ui.3a22bd2a.js +0 -97
- package/dist/web/public/settings-ui.3a22bd2a.js.br +0 -0
- package/dist/web/public/settings-ui.3a22bd2a.js.gz +0 -0
- package/dist/web/public/styles.ba6a9b84.css +0 -1
- package/dist/web/public/styles.ba6a9b84.css.br +0 -0
- package/dist/web/public/styles.ba6a9b84.css.gz +0 -0
- package/dist/web/public/terminal-ui.0a7ccc29.js +0 -2
- package/dist/web/public/terminal-ui.0a7ccc29.js.br +0 -0
- package/dist/web/public/terminal-ui.0a7ccc29.js.gz +0 -0
package/dist/tmux-manager.d.ts
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* @module tmux-manager
|
|
22
22
|
*/
|
|
23
23
|
import { EventEmitter } from 'node:events';
|
|
24
|
-
import { ProcessStats, PersistedRespawnConfig, type PaneInfo, type ClaudeMode, type SessionMode, type OpenCodeConfig, type CodexConfig, type EffortLevel, type GeminiConfig, type AntigravityConfig, type PiConfig, type GrokConfig, type DeepSeekConfig, type OmpConfig, type SessionRemote, type SessionDocker, type PaneExit } from './types.js';
|
|
24
|
+
import { ProcessStats, PersistedRespawnConfig, type PaneInfo, type ClaudeMode, type SessionMode, type OpenCodeConfig, type CodexConfig, type EffortLevel, type GeminiConfig, type AntigravityConfig, type PiConfig, type GrokConfig, type CopilotConfig, type DeepSeekConfig, type OmpConfig, type SessionRemote, type SessionDocker, type PaneExit, type StatusLineExporter } from './types.js';
|
|
25
25
|
import { type DockerCreateContext, type DockerSeedCopy } from './docker-hosts.js';
|
|
26
26
|
import type { TerminalMultiplexer, MuxSession, MuxSessionWithStats, CreateSessionOptions, RespawnPaneOptions, PaneCaptureOptions } from './mux-interface.js';
|
|
27
27
|
/** Claude Code native macOS recommendation for avoiding low nofile startup failures. */
|
|
@@ -47,6 +47,8 @@ export interface PaneRow {
|
|
|
47
47
|
exitStatus?: number;
|
|
48
48
|
/** `#{pane_dead_signal}` — the killing signal, absent before tmux 3.4 and when unsignalled. */
|
|
49
49
|
exitSignal?: number;
|
|
50
|
+
/** `#{pane_current_path}` — the pane's current directory, absent when tmux reported none. */
|
|
51
|
+
currentPath?: string;
|
|
50
52
|
}
|
|
51
53
|
/**
|
|
52
54
|
* One pane-exit reading, with the pane pid that produced it.
|
|
@@ -285,6 +287,21 @@ export declare function formatPaneSnapshot(lines: string[], geometry: {
|
|
|
285
287
|
* promises a string, so it degrades to the bare binary rather than throwing.
|
|
286
288
|
*/
|
|
287
289
|
export declare function buildCodexCommand(config?: CodexConfig): string;
|
|
290
|
+
/**
|
|
291
|
+
* Whether a launch carries `idleCompaction: false` in its one `--settings` JSON: keep-warm on
|
|
292
|
+
* at launch (`keepWarmOn`), the statusLine exporter injected (without its `prompt_cache` reports
|
|
293
|
+
* keep-warm cannot run, and the opt-out alone would only cost the user Claude Code's own idle
|
|
294
|
+
* compaction), and the CLI's `idleCompactionSetting` gate passed, fail-closed like `--name`:
|
|
295
|
+
* an unknown version means no key. Pure; `claudeCliVersion` as in buildSpawnCommand.
|
|
296
|
+
*/
|
|
297
|
+
export declare function decideIdleCompactionOptOut(o: {
|
|
298
|
+
mode: SessionMode;
|
|
299
|
+
statusLine: StatusLineExporter | undefined;
|
|
300
|
+
keepWarm: boolean | undefined;
|
|
301
|
+
keepWarmDefault: boolean;
|
|
302
|
+
spawnedByAgent: boolean | undefined;
|
|
303
|
+
claudeCliVersion?: string | null;
|
|
304
|
+
}): boolean;
|
|
288
305
|
export declare function buildSpawnCommand(options: {
|
|
289
306
|
mode: SessionMode;
|
|
290
307
|
sessionId: string;
|
|
@@ -297,6 +314,7 @@ export declare function buildSpawnCommand(options: {
|
|
|
297
314
|
antigravityConfig?: AntigravityConfig;
|
|
298
315
|
piConfig?: PiConfig;
|
|
299
316
|
grokConfig?: GrokConfig;
|
|
317
|
+
copilotConfig?: CopilotConfig;
|
|
300
318
|
deepSeekConfig?: DeepSeekConfig;
|
|
301
319
|
ompConfig?: OmpConfig;
|
|
302
320
|
resumeSessionId?: string;
|
|
@@ -305,7 +323,9 @@ export declare function buildSpawnCommand(options: {
|
|
|
305
323
|
advisorModel?: string;
|
|
306
324
|
/** Resolved by resolveStatusLineCliCommand (hooks-config.ts) — undefined skips the exporter. Claude only. */
|
|
307
325
|
statusLineCommand?: string;
|
|
308
|
-
/**
|
|
326
|
+
/** Add `idleCompaction: false` to the launch's one `--settings` JSON (see decideIdleCompactionOptOut). */
|
|
327
|
+
idleCompactionOff?: boolean;
|
|
328
|
+
/** Name pinned on claude as `--name` (version-gated, sanitized; local spawns only). By default only a user-chosen name; `pinCliSessionName` pins every tab name: see `Session.cliPinnedName`. */
|
|
309
329
|
sessionName?: string;
|
|
310
330
|
/**
|
|
311
331
|
* Claude CLI version for the `--name` gate. Omitted = probe the local CLI
|
|
@@ -617,6 +637,12 @@ export declare class TmuxManager extends EventEmitter implements TerminalMultipl
|
|
|
617
637
|
* say why no cache report will come, instead of "not reported yet" forever.
|
|
618
638
|
*/
|
|
619
639
|
private _resolveStatusLine;
|
|
640
|
+
/**
|
|
641
|
+
* Whether this launch carries `idleCompaction: false` (decideIdleCompactionOptOut), with the
|
|
642
|
+
* keep-warm app default read fresh like the plan-usage switch above. Logged when keep-warm is
|
|
643
|
+
* on but the version gate keeps the key off, so a session that may still idle-compact says why.
|
|
644
|
+
*/
|
|
645
|
+
private _resolveIdleCompactionOptOut;
|
|
620
646
|
/**
|
|
621
647
|
* Export the user's own REAL statusLine command (found by
|
|
622
648
|
* findEffectiveUserStatusLineCommand) via tmux setenv, so the shared
|
|
@@ -892,11 +918,22 @@ export declare class TmuxManager extends EventEmitter implements TerminalMultipl
|
|
|
892
918
|
* - Text followed by `\r` goes in as ONE bracketed paste (buildPasteTextCommands),
|
|
893
919
|
* so Codex cannot fold the Enter into a paste burst; a single character is typed
|
|
894
920
|
* with `send-keys -l` instead, so a dialog answer selects (submitsAsKeys)
|
|
895
|
-
* -
|
|
921
|
+
* - Single-line text without `\r` is typed literally with `send-keys -l` (no key
|
|
922
|
+
* interpretation)
|
|
923
|
+
* - A `\n` inside the text is kept (`\r\n` loses only its `\r`), and multi-line text
|
|
924
|
+
* always goes in as ONE bracketed paste, with or without a following Enter: inside
|
|
925
|
+
* the paste markers a CLI that enabled bracketed paste receives the line breaks as
|
|
926
|
+
* pasted text, where typed as keys each one could submit a line on its own
|
|
896
927
|
* - `Enter` key is sent as a SEPARATE tmux invocation after a small delay
|
|
897
928
|
* - Ink (Claude CLI) needs text and Enter split to avoid treating Enter as a newline
|
|
898
929
|
*/
|
|
899
930
|
sendInput(sessionId: string, input: string): Promise<boolean>;
|
|
931
|
+
/**
|
|
932
|
+
* How {@link sendInput} reaches tmux, or null where it must not (vitest). Split
|
|
933
|
+
* out like {@link readPaneRows}: with the test-mode gate at the top of sendInput,
|
|
934
|
+
* no test could see which commands a submit actually sends.
|
|
935
|
+
*/
|
|
936
|
+
protected inputRunner(): ((cmd: string) => Promise<unknown>) | null;
|
|
900
937
|
/**
|
|
901
938
|
* Enable mouse mode for an existing tmux session.
|
|
902
939
|
* Allows clicking to select panes in agent team split-pane layouts.
|
|
@@ -921,7 +958,9 @@ export declare class TmuxManager extends EventEmitter implements TerminalMultipl
|
|
|
921
958
|
listPanes(muxName: string): Promise<PaneInfo[]>;
|
|
922
959
|
/**
|
|
923
960
|
* Send input to a specific pane within a tmux session.
|
|
924
|
-
*
|
|
961
|
+
* Types the text literally with `send-keys -l`, line breaks stripped, then Enter
|
|
962
|
+
* when the input carried a `\r`. Unlike sendInput(), it neither pastes nor keeps
|
|
963
|
+
* the line breaks of multi-line text.
|
|
925
964
|
*/
|
|
926
965
|
sendInputToPane(muxName: string, paneTarget: string, input: string): boolean;
|
|
927
966
|
/**
|
|
@@ -946,12 +985,16 @@ export declare class TmuxManager extends EventEmitter implements TerminalMultipl
|
|
|
946
985
|
/**
|
|
947
986
|
* Plain visible-frame text for the working/idle probe (see `session.ts`).
|
|
948
987
|
*
|
|
949
|
-
* One `capture-pane` and nothing else: no
|
|
950
|
-
*
|
|
951
|
-
*
|
|
952
|
-
*
|
|
988
|
+
* One `capture-pane` and nothing else: no `display-message` cursor query, no
|
|
989
|
+
* repaint reconstruction: this feeds a regex, not a terminal. `styles` adds
|
|
990
|
+
* `-e` for a reader that must tell faint text from typed text (the keep-warm
|
|
991
|
+
* composer check); lines stay `\n`-separated either way. Returns null in tests
|
|
992
|
+
* (no tmux) so callers fall back to their stream heuristics rather than
|
|
993
|
+
* reading an empty screen as "not working".
|
|
953
994
|
*/
|
|
954
|
-
capturePaneText(muxName: string, paneTarget?: string
|
|
995
|
+
capturePaneText(muxName: string, paneTarget?: string, opts?: {
|
|
996
|
+
styles?: boolean;
|
|
997
|
+
}): string | null;
|
|
955
998
|
capturePaneBuffer(muxName: string, paneTarget?: string, opts?: PaneCaptureOptions): string | null;
|
|
956
999
|
/**
|
|
957
1000
|
* Capture the active pane for a tmux session.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux-manager.d.ts","sourceRoot":"","sources":["../src/tmux-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tmux-manager.d.ts","sourceRoot":"","sources":["../src/tmux-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/tmux-manager.js
CHANGED
|
@@ -25,7 +25,7 @@ import { collectDescendants } from './proc-tree.js';
|
|
|
25
25
|
import { execSync, exec, execFile } from 'node:child_process';
|
|
26
26
|
import { promisify } from 'node:util';
|
|
27
27
|
const execAsync = promisify(exec);
|
|
28
|
-
import { existsSync, readFileSync, mkdirSync } from 'node:fs';
|
|
28
|
+
import { existsSync, readFileSync, mkdirSync, realpathSync } from 'node:fs';
|
|
29
29
|
import { writeFile, rename } from 'node:fs/promises';
|
|
30
30
|
import { dirname } from 'node:path';
|
|
31
31
|
import { homedir } from 'node:os';
|
|
@@ -33,8 +33,9 @@ import { dataPath, DEFAULT_TMUX_SOCKET, CODEMAN_INSTANCE, SAFE_TMUX_SOCKET_PATTE
|
|
|
33
33
|
import { getErrorMessage, DEFAULT_NICE_CONFIG, } from './types.js';
|
|
34
34
|
import { getCli } from './config/cli-registry/registry.js';
|
|
35
35
|
import { missingCliMessage, resolveCliBinDir } from './utils/cli-resolver.js';
|
|
36
|
-
import { buildSpawnCommandFromRegistry, configSetenvValues, legacyConfigForMode, } from './session-cli-registry-bridge.js';
|
|
37
|
-
import {
|
|
36
|
+
import { buildSpawnCommandFromRegistry, configSetenvValues, launchGatePasses, legacyConfigForMode, } from './session-cli-registry-bridge.js';
|
|
37
|
+
import { keepWarmOn } from './prompt-cache-keepwarm.js';
|
|
38
|
+
import { resolveStatusLineCliCommand, readPlanUsageTelemetryEnabled, readKeepWarmSettings, findEffectiveUserStatusLineCommand, } from './hooks-config.js';
|
|
38
39
|
import { buildSshConnectionArgs, defaultRemoteCommandForMode, remoteLoginShellCommand, remoteSshTarget, remoteTmuxSessionAlive, } from './remote-hosts.js';
|
|
39
40
|
import { buildDockerBaseArgs, buildDockerCreateArgs, containerApiUrl, CONTAINER_HOME, defaultDockerCommandForMode, hostGatewayAlias, resolveDockerClaudeArtifacts, resolveDockerCredentialArtifacts, resolveDockerDaemonMountSource, } from './docker-hosts.js';
|
|
40
41
|
import { wrapWithNice, SAFE_PATH_PATTERN, resolveLocalShell, loginShellArgs, waitForProcessesExit, } from './utils/index.js';
|
|
@@ -44,6 +45,7 @@ import { decideReconnect, advanceBackoff, freshReconnectState, resetReconnectSta
|
|
|
44
45
|
// ============================================================================
|
|
45
46
|
import { EXEC_TIMEOUT_MS } from './config/exec-timeout.js';
|
|
46
47
|
import { ensureDeepSeekStatusShim } from './deepseek-status-shim.js';
|
|
48
|
+
import { restrictTmuxPrefixTable } from './tmux-prefix-table.js';
|
|
47
49
|
/** How long a cached process snapshot stays usable. */
|
|
48
50
|
const PROC_SNAPSHOT_TTL_MS = 2000;
|
|
49
51
|
/**
|
|
@@ -89,6 +91,22 @@ const DEFAULT_PANE_EXIT_INTERVAL_MS = 2000;
|
|
|
89
91
|
const DEFAULT_REMOTE_RECONNECT_INTERVAL_MS = 5000;
|
|
90
92
|
/** Stable cwd for tmux server/pane launch; actual session cwd is reached inside the pane. */
|
|
91
93
|
const TMUX_LAUNCH_CWD = '/tmp';
|
|
94
|
+
/**
|
|
95
|
+
* TMUX_LAUNCH_CWD in every spelling a pane can report it. tmux reads a pane's
|
|
96
|
+
* directory from its process, which comes back resolved (`/private/tmp` on
|
|
97
|
+
* macOS, where `/tmp` is a symlink), so the literal and the resolved spelling
|
|
98
|
+
* both count. Computed once.
|
|
99
|
+
*/
|
|
100
|
+
const TMUX_LAUNCH_CWD_SPELLINGS = (() => {
|
|
101
|
+
const spellings = new Set([TMUX_LAUNCH_CWD]);
|
|
102
|
+
try {
|
|
103
|
+
spellings.add(realpathSync(TMUX_LAUNCH_CWD));
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Unresolvable launch directory: the literal spelling is all there is.
|
|
107
|
+
}
|
|
108
|
+
return spellings;
|
|
109
|
+
})();
|
|
92
110
|
/** Claude Code native macOS recommendation for avoiding low nofile startup failures. */
|
|
93
111
|
export const CLAUDE_CODE_NOFILE_LIMIT = 2147483646;
|
|
94
112
|
/**
|
|
@@ -150,9 +168,13 @@ const PANE_LIST_SEP = '|';
|
|
|
150
168
|
* know a variable substitutes the empty string rather than failing, which is how
|
|
151
169
|
* tmux 3.2a answers `#{pane_dead_signal}` (added in 3.4), and the parser reads a
|
|
152
170
|
* short row as "pid known, deadness unknown" rather than discarding it.
|
|
171
|
+
*
|
|
172
|
+
* `#{pane_current_path}` comes last on purpose: a directory name may contain the
|
|
173
|
+
* separator, and only the final field can absorb it without ambiguity.
|
|
153
174
|
*/
|
|
154
175
|
const PANE_LIST_FORMAT = `#{session_name}${PANE_LIST_SEP}#{pane_pid}` +
|
|
155
|
-
`${PANE_LIST_SEP}#{pane_dead}${PANE_LIST_SEP}#{pane_dead_status}${PANE_LIST_SEP}#{pane_dead_signal}
|
|
176
|
+
`${PANE_LIST_SEP}#{pane_dead}${PANE_LIST_SEP}#{pane_dead_status}${PANE_LIST_SEP}#{pane_dead_signal}` +
|
|
177
|
+
`${PANE_LIST_SEP}#{pane_current_path}`;
|
|
156
178
|
/**
|
|
157
179
|
* 构建 pane 启动前的 nofile 修复命令。
|
|
158
180
|
*
|
|
@@ -201,6 +223,8 @@ export function parsePaneRows(output) {
|
|
|
201
223
|
dead: deadFlag === '1' ? true : deadFlag === '0' ? false : undefined,
|
|
202
224
|
exitStatus: paneField(fields, 3),
|
|
203
225
|
exitSignal: paneField(fields, 4),
|
|
226
|
+
// Everything after the fifth separator, so a path containing `|` stays whole.
|
|
227
|
+
currentPath: fields.slice(5).join(PANE_LIST_SEP) || undefined,
|
|
204
228
|
});
|
|
205
229
|
}
|
|
206
230
|
return rows;
|
|
@@ -864,6 +888,18 @@ export function buildCodexCommand(config) {
|
|
|
864
888
|
return 'codex';
|
|
865
889
|
return buildSpawnCommandFromRegistry(entry, { mode: 'codex', sessionId: '', codexConfig: config }) ?? 'codex';
|
|
866
890
|
}
|
|
891
|
+
/**
|
|
892
|
+
* Whether a launch carries `idleCompaction: false` in its one `--settings` JSON: keep-warm on
|
|
893
|
+
* at launch (`keepWarmOn`), the statusLine exporter injected (without its `prompt_cache` reports
|
|
894
|
+
* keep-warm cannot run, and the opt-out alone would only cost the user Claude Code's own idle
|
|
895
|
+
* compaction), and the CLI's `idleCompactionSetting` gate passed, fail-closed like `--name`:
|
|
896
|
+
* an unknown version means no key. Pure; `claudeCliVersion` as in buildSpawnCommand.
|
|
897
|
+
*/
|
|
898
|
+
export function decideIdleCompactionOptOut(o) {
|
|
899
|
+
return (o.statusLine === 'injected' &&
|
|
900
|
+
keepWarmOn(o.keepWarm, o.keepWarmDefault, !!o.spawnedByAgent) &&
|
|
901
|
+
launchGatePasses(o.mode, 'idleCompactionSetting', o.claudeCliVersion));
|
|
902
|
+
}
|
|
867
903
|
export function buildSpawnCommand(options) {
|
|
868
904
|
// Every CLI's command shape is registry DATA, rendered by the argv engine — see
|
|
869
905
|
// config/cli-registry/argv.ts for why config can never contain shell text. A `shell`-kind
|
|
@@ -1934,6 +1970,21 @@ export class TmuxManager extends EventEmitter {
|
|
|
1934
1970
|
const command = await resolveStatusLineCliCommand(workingDir, enabled);
|
|
1935
1971
|
return { command, state: command ? 'injected' : enabled ? 'workspace-statusline' : 'collection-off' };
|
|
1936
1972
|
}
|
|
1973
|
+
/**
|
|
1974
|
+
* Whether this launch carries `idleCompaction: false` (decideIdleCompactionOptOut), with the
|
|
1975
|
+
* keep-warm app default read fresh like the plan-usage switch above. Logged when keep-warm is
|
|
1976
|
+
* on but the version gate keeps the key off, so a session that may still idle-compact says why.
|
|
1977
|
+
*/
|
|
1978
|
+
async _resolveIdleCompactionOptOut(mode, statusLine, keepWarm, spawnedByAgent) {
|
|
1979
|
+
if (statusLine !== 'injected')
|
|
1980
|
+
return false; // no settings read for a launch that can never carry it
|
|
1981
|
+
const { keepWarmDefault } = await readKeepWarmSettings();
|
|
1982
|
+
const off = decideIdleCompactionOptOut({ mode, statusLine, keepWarm, keepWarmDefault, spawnedByAgent });
|
|
1983
|
+
if (!off && keepWarmOn(keepWarm, keepWarmDefault, !!spawnedByAgent)) {
|
|
1984
|
+
console.log(`[TmuxManager] Keep-warm is on but Claude Code's version is unknown or predates the idleCompaction setting; launching without the opt-out`);
|
|
1985
|
+
}
|
|
1986
|
+
return off;
|
|
1987
|
+
}
|
|
1937
1988
|
/**
|
|
1938
1989
|
* Export the user's own REAL statusLine command (found by
|
|
1939
1990
|
* findEffectiveUserStatusLineCommand) via tmux setenv, so the shared
|
|
@@ -1971,7 +2022,7 @@ export class TmuxManager extends EventEmitter {
|
|
|
1971
2022
|
* In test mode: creates an in-memory session only (no real tmux session).
|
|
1972
2023
|
*/
|
|
1973
2024
|
async createSession(options) {
|
|
1974
|
-
const { sessionId, workingDir, mode, name, cliName, niceConfig, model, claudeMode, allowedTools, openCodeConfig, codexConfig, geminiConfig, antigravityConfig, piConfig, grokConfig, deepSeekConfig, ompConfig, resumeSessionId, envOverrides, effort, advisorModel, historyLimit = DEFAULT_TMUX_HISTORY_LIMIT, remote, docker, owner, } = options;
|
|
2025
|
+
const { sessionId, workingDir, mode, name, cliName, niceConfig, model, claudeMode, allowedTools, openCodeConfig, codexConfig, geminiConfig, antigravityConfig, piConfig, grokConfig, copilotConfig, deepSeekConfig, ompConfig, resumeSessionId, envOverrides, effort, advisorModel, keepWarm, spawnedByAgent, historyLimit = DEFAULT_TMUX_HISTORY_LIMIT, remote, docker, owner, } = options;
|
|
1975
2026
|
const muxName = `codeman-${sessionId.slice(0, 8)}`;
|
|
1976
2027
|
if (!isValidMuxName(muxName)) {
|
|
1977
2028
|
throw new Error('Invalid session name: contains unsafe characters');
|
|
@@ -2022,6 +2073,7 @@ export class TmuxManager extends EventEmitter {
|
|
|
2022
2073
|
}
|
|
2023
2074
|
const envExportsStr = this.buildEnvExports(sessionId, muxName, mode).join(' && ');
|
|
2024
2075
|
const { command: statusLineCommand, state: statusLine } = await this._resolveStatusLine(mode, workingDir, !!(remote || docker));
|
|
2076
|
+
const idleCompactionOff = await this._resolveIdleCompactionOptOut(mode, statusLine, keepWarm, spawnedByAgent);
|
|
2025
2077
|
// The user's own REAL statusLine, if any (walked via Claude Code's own
|
|
2026
2078
|
// settings precedence) — exported below so the shared exporter script
|
|
2027
2079
|
// can wrap it. Only worth discovering when we're actually injecting.
|
|
@@ -2038,12 +2090,14 @@ export class TmuxManager extends EventEmitter {
|
|
|
2038
2090
|
antigravityConfig,
|
|
2039
2091
|
piConfig,
|
|
2040
2092
|
grokConfig,
|
|
2093
|
+
copilotConfig,
|
|
2041
2094
|
deepSeekConfig,
|
|
2042
2095
|
ompConfig,
|
|
2043
2096
|
resumeSessionId,
|
|
2044
2097
|
effort,
|
|
2045
2098
|
advisorModel,
|
|
2046
2099
|
statusLineCommand,
|
|
2100
|
+
idleCompactionOff,
|
|
2047
2101
|
sessionName: cliName,
|
|
2048
2102
|
});
|
|
2049
2103
|
const config = niceConfig || DEFAULT_NICE_CONFIG;
|
|
@@ -2093,6 +2147,9 @@ export class TmuxManager extends EventEmitter {
|
|
|
2093
2147
|
catch {
|
|
2094
2148
|
/* Non-critical */
|
|
2095
2149
|
}
|
|
2150
|
+
// Browser keystrokes reach the attach client, so tmux's stock prefix table would
|
|
2151
|
+
// let Ctrl+B ( or s move a tab onto another session. Before the agent starts.
|
|
2152
|
+
restrictTmuxPrefixTable(this.tmux());
|
|
2096
2153
|
// Per-CLI env: API keys, config blobs, config-sourced vars, status bridges. All of
|
|
2097
2154
|
// it is registry data, so this is one unconditional call rather than a per-mode ladder.
|
|
2098
2155
|
this._configureCliEnv(muxName, sessionId, mode, legacyConfigForMode(mode, options));
|
|
@@ -2162,6 +2219,7 @@ export class TmuxManager extends EventEmitter {
|
|
|
2162
2219
|
attached: false,
|
|
2163
2220
|
name,
|
|
2164
2221
|
statusLine,
|
|
2222
|
+
idleCompactionOff,
|
|
2165
2223
|
};
|
|
2166
2224
|
this.sessions.set(sessionId, session);
|
|
2167
2225
|
this.saveSessions();
|
|
@@ -2249,7 +2307,7 @@ export class TmuxManager extends EventEmitter {
|
|
|
2249
2307
|
* preserving the session and its scrollback buffer.
|
|
2250
2308
|
*/
|
|
2251
2309
|
async respawnPane(options) {
|
|
2252
|
-
const { sessionId, workingDir, mode, niceConfig, model, claudeMode, allowedTools, openCodeConfig, codexConfig, geminiConfig, antigravityConfig, piConfig, grokConfig, deepSeekConfig, ompConfig, resumeSessionId, envOverrides, unsetEnvKeys, effort, advisorModel, remote, docker, cliName, } = options;
|
|
2310
|
+
const { sessionId, workingDir, mode, niceConfig, model, claudeMode, allowedTools, openCodeConfig, codexConfig, geminiConfig, antigravityConfig, piConfig, grokConfig, copilotConfig, deepSeekConfig, ompConfig, resumeSessionId, envOverrides, unsetEnvKeys, effort, advisorModel, keepWarm, spawnedByAgent, remote, docker, cliName, } = options;
|
|
2253
2311
|
const session = this.sessions.get(sessionId);
|
|
2254
2312
|
if (!session)
|
|
2255
2313
|
return null;
|
|
@@ -2260,6 +2318,7 @@ export class TmuxManager extends EventEmitter {
|
|
|
2260
2318
|
const { pathExport } = this.buildPathExport(mode);
|
|
2261
2319
|
const envExportsStr = this.buildEnvExports(sessionId, muxName, mode).join(' && ');
|
|
2262
2320
|
const { command: statusLineCommand, state: statusLine } = await this._resolveStatusLine(mode, workingDir, !!(remote || docker));
|
|
2321
|
+
const idleCompactionOff = await this._resolveIdleCompactionOptOut(mode, statusLine, keepWarm, spawnedByAgent);
|
|
2263
2322
|
const userStatusLineCommand = statusLineCommand ? await findEffectiveUserStatusLineCommand(workingDir) : undefined;
|
|
2264
2323
|
const baseCmd = buildSpawnCommand({
|
|
2265
2324
|
mode,
|
|
@@ -2273,12 +2332,14 @@ export class TmuxManager extends EventEmitter {
|
|
|
2273
2332
|
antigravityConfig,
|
|
2274
2333
|
piConfig,
|
|
2275
2334
|
grokConfig,
|
|
2335
|
+
copilotConfig,
|
|
2276
2336
|
deepSeekConfig,
|
|
2277
2337
|
ompConfig,
|
|
2278
2338
|
resumeSessionId,
|
|
2279
2339
|
effort,
|
|
2280
2340
|
advisorModel,
|
|
2281
2341
|
statusLineCommand,
|
|
2342
|
+
idleCompactionOff,
|
|
2282
2343
|
sessionName: cliName,
|
|
2283
2344
|
});
|
|
2284
2345
|
const config = niceConfig || DEFAULT_NICE_CONFIG;
|
|
@@ -2311,8 +2372,9 @@ export class TmuxManager extends EventEmitter {
|
|
|
2311
2372
|
const pid = this.getPanePid(muxName);
|
|
2312
2373
|
if (pid)
|
|
2313
2374
|
session.pid = pid;
|
|
2314
|
-
if (session.statusLine !== statusLine) {
|
|
2375
|
+
if (session.statusLine !== statusLine || session.idleCompactionOff !== idleCompactionOff) {
|
|
2315
2376
|
session.statusLine = statusLine;
|
|
2377
|
+
session.idleCompactionOff = idleCompactionOff;
|
|
2316
2378
|
this.saveSessions();
|
|
2317
2379
|
}
|
|
2318
2380
|
return pid;
|
|
@@ -2661,13 +2723,30 @@ export class TmuxManager extends EventEmitter {
|
|
|
2661
2723
|
// socket tag to reconcile and no cross-socket ambiguity that could mark a
|
|
2662
2724
|
// live session dead (the root cause of vanished/duplicate tabs).
|
|
2663
2725
|
let active;
|
|
2726
|
+
const paneDirs = new Map();
|
|
2664
2727
|
try {
|
|
2665
2728
|
const output = execSync(`${this.tmux()} list-panes -a -F '${PANE_LIST_FORMAT}' 2>/dev/null || true`, {
|
|
2666
2729
|
encoding: 'utf-8',
|
|
2667
2730
|
timeout: EXEC_TIMEOUT_MS,
|
|
2668
|
-
})
|
|
2731
|
+
});
|
|
2732
|
+
// Not trimmed: the directory is the last field, so trimming would cut a
|
|
2733
|
+
// trailing space off the last row's path. parsePaneRows skips empty lines.
|
|
2669
2734
|
const rows = parsePaneRows(output);
|
|
2670
2735
|
active = new Map(rows.map((row) => [row.sessionName, row.pid]));
|
|
2736
|
+
// A discovered session's directory, from its first pane with a usable path.
|
|
2737
|
+
// The path is admitted only if it passes the same check createSession and
|
|
2738
|
+
// respawnPane apply, since it was set by whoever owns the pane, not by us.
|
|
2739
|
+
// The launch directory counts as no answer: every pane starts there, and a
|
|
2740
|
+
// remote or docker pane never cds out of it, so for such a session it is
|
|
2741
|
+
// not the workspace — and a rediscovered record cannot tell it is one.
|
|
2742
|
+
for (const row of rows) {
|
|
2743
|
+
if (row.currentPath &&
|
|
2744
|
+
!TMUX_LAUNCH_CWD_SPELLINGS.has(row.currentPath) &&
|
|
2745
|
+
!paneDirs.has(row.sessionName) &&
|
|
2746
|
+
isValidPath(row.currentPath)) {
|
|
2747
|
+
paneDirs.set(row.sessionName, row.currentPath);
|
|
2748
|
+
}
|
|
2749
|
+
}
|
|
2671
2750
|
// The same read answers both questions, so recovery starts with a pane-exit
|
|
2672
2751
|
// reading rather than waiting for the first stats tick — which may never
|
|
2673
2752
|
// come, since the collector only starts when boot found a live session.
|
|
@@ -2679,6 +2758,11 @@ export class TmuxManager extends EventEmitter {
|
|
|
2679
2758
|
console.error('[TmuxManager] Failed to list tmux panes:', err);
|
|
2680
2759
|
active = new Map();
|
|
2681
2760
|
}
|
|
2761
|
+
// Sessions that survived an upgrade may sit on a server whose prefix table was never
|
|
2762
|
+
// reduced (createSession does it for new ones), so cover them at boot too. Only with
|
|
2763
|
+
// panes listed: on an empty socket `list-keys` spins up a throwaway server instead.
|
|
2764
|
+
if (active.size > 0)
|
|
2765
|
+
restrictTmuxPrefixTable(this.tmux());
|
|
2682
2766
|
// Check tracked sessions against the live pane list.
|
|
2683
2767
|
for (const [sessionId, session] of this.sessions) {
|
|
2684
2768
|
const pid = active.get(session.muxName);
|
|
@@ -2722,11 +2806,13 @@ export class TmuxManager extends EventEmitter {
|
|
|
2722
2806
|
muxName: sessionName,
|
|
2723
2807
|
pid,
|
|
2724
2808
|
createdAt: Date.now(),
|
|
2725
|
-
|
|
2809
|
+
// Where the pane actually works, when tmux said; the server's cwd is only a fallback.
|
|
2810
|
+
workingDir: paneDirs.get(sessionName) ?? process.cwd(),
|
|
2726
2811
|
mode: 'claude',
|
|
2727
2812
|
attached: false,
|
|
2728
2813
|
name: `Restored: ${sessionName}`,
|
|
2729
|
-
// Every field above except the name
|
|
2814
|
+
// Every field above except the name, the pid and, when tmux reported a
|
|
2815
|
+
// usable one, the directory is a guess: this record
|
|
2730
2816
|
// was rebuilt from the socket because Codeman's own bookkeeping did not
|
|
2731
2817
|
// have it. The synthetic id also cannot find the session's state.json
|
|
2732
2818
|
// entry, so a remote or docker session rediscovered this way arrives
|
|
@@ -3333,7 +3419,12 @@ export class TmuxManager extends EventEmitter {
|
|
|
3333
3419
|
* - Text followed by `\r` goes in as ONE bracketed paste (buildPasteTextCommands),
|
|
3334
3420
|
* so Codex cannot fold the Enter into a paste burst; a single character is typed
|
|
3335
3421
|
* with `send-keys -l` instead, so a dialog answer selects (submitsAsKeys)
|
|
3336
|
-
* -
|
|
3422
|
+
* - Single-line text without `\r` is typed literally with `send-keys -l` (no key
|
|
3423
|
+
* interpretation)
|
|
3424
|
+
* - A `\n` inside the text is kept (`\r\n` loses only its `\r`), and multi-line text
|
|
3425
|
+
* always goes in as ONE bracketed paste, with or without a following Enter: inside
|
|
3426
|
+
* the paste markers a CLI that enabled bracketed paste receives the line breaks as
|
|
3427
|
+
* pasted text, where typed as keys each one could submit a line on its own
|
|
3337
3428
|
* - `Enter` key is sent as a SEPARATE tmux invocation after a small delay
|
|
3338
3429
|
* - Ink (Claude CLI) needs text and Enter split to avoid treating Enter as a newline
|
|
3339
3430
|
*/
|
|
@@ -3343,8 +3434,10 @@ export class TmuxManager extends EventEmitter {
|
|
|
3343
3434
|
console.error(`[TmuxManager] sendInput failed: no session found for ${sessionId}. Known: ${Array.from(this.sessions.keys()).join(', ')}`);
|
|
3344
3435
|
return false;
|
|
3345
3436
|
}
|
|
3346
|
-
// TEST MODE: No-op — don't send input to real tmux sessions
|
|
3347
|
-
|
|
3437
|
+
// TEST MODE: No-op — don't send input to real tmux sessions. The gate lives in
|
|
3438
|
+
// inputRunner() so a test subclass can record what WOULD reach tmux.
|
|
3439
|
+
const run = this.inputRunner();
|
|
3440
|
+
if (!run) {
|
|
3348
3441
|
return true;
|
|
3349
3442
|
}
|
|
3350
3443
|
console.log(`[TmuxManager] sendInput to ${session.muxName}, input length: ${input.length}, hasCarriageReturn: ${input.includes('\r')}`);
|
|
@@ -3354,7 +3447,14 @@ export class TmuxManager extends EventEmitter {
|
|
|
3354
3447
|
}
|
|
3355
3448
|
try {
|
|
3356
3449
|
const hasCarriageReturn = input.includes('\r');
|
|
3357
|
-
|
|
3450
|
+
// Leading and trailing blank lines are dropped, so neither `"\nfix it\r"` nor
|
|
3451
|
+
// `" \nfix it\r"` pastes an empty first line (nor `"fix it\n\r"` an empty last
|
|
3452
|
+
// one). The leading match ends at a line break, so the first real line keeps its
|
|
3453
|
+
// indentation.
|
|
3454
|
+
const textPart = input
|
|
3455
|
+
.replace(/\r/g, '')
|
|
3456
|
+
.replace(/^\s*\n/, '')
|
|
3457
|
+
.trimEnd();
|
|
3358
3458
|
if (textPart && hasCarriageReturn) {
|
|
3359
3459
|
// Send text first, then Enter as a SEPARATE tmux command after a short delay.
|
|
3360
3460
|
// Ink (Claude CLI's terminal framework) needs them split — sending both in a
|
|
@@ -3365,25 +3465,29 @@ export class TmuxManager extends EventEmitter {
|
|
|
3365
3465
|
// selection dialog ignores a pasted `3` and Enter then confirms the
|
|
3366
3466
|
// highlighted option (see submitsAsKeys).
|
|
3367
3467
|
if (submitsAsKeys(textPart)) {
|
|
3368
|
-
await
|
|
3468
|
+
await run(`${this.tmux()} send-keys -t "${session.muxName}" -l ${shellescape(escapeTmuxTrailingSemicolon(textPart))}`);
|
|
3369
3469
|
}
|
|
3370
3470
|
else {
|
|
3371
|
-
await pasteText(
|
|
3471
|
+
await pasteText(run, buildPasteTextCommands(this.tmux(), session.muxName, textPart));
|
|
3372
3472
|
}
|
|
3373
3473
|
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
3374
|
-
await
|
|
3375
|
-
|
|
3376
|
-
|
|
3474
|
+
await run(`${this.tmux()} send-keys -t "${session.muxName}" Enter`);
|
|
3475
|
+
}
|
|
3476
|
+
else if (textPart.includes('\n')) {
|
|
3477
|
+
// Multi-line text, no Enter: pasted, because typed as keys every `\n` would
|
|
3478
|
+
// reach the pane as a key the CLI may read as submit. A pane that has not
|
|
3479
|
+
// enabled bracketed paste (POSIX sh, macOS /bin/bash 3.2) still gets every line
|
|
3480
|
+
// break as a CR, so there every line but the last runs; before line breaks were
|
|
3481
|
+
// kept, the joined text was typed and nothing ran.
|
|
3482
|
+
await pasteText(run, buildPasteTextCommands(this.tmux(), session.muxName, textPart));
|
|
3377
3483
|
}
|
|
3378
3484
|
else if (textPart) {
|
|
3379
3485
|
// Text only, no Enter
|
|
3380
|
-
await
|
|
3486
|
+
await run(`${this.tmux()} send-keys -t "${session.muxName}" -l ${shellescape(escapeTmuxTrailingSemicolon(textPart))}`);
|
|
3381
3487
|
}
|
|
3382
3488
|
else if (hasCarriageReturn) {
|
|
3383
3489
|
// Enter only
|
|
3384
|
-
await
|
|
3385
|
-
timeout: EXEC_TIMEOUT_MS,
|
|
3386
|
-
});
|
|
3490
|
+
await run(`${this.tmux()} send-keys -t "${session.muxName}" Enter`);
|
|
3387
3491
|
}
|
|
3388
3492
|
return true;
|
|
3389
3493
|
}
|
|
@@ -3392,6 +3496,16 @@ export class TmuxManager extends EventEmitter {
|
|
|
3392
3496
|
return false;
|
|
3393
3497
|
}
|
|
3394
3498
|
}
|
|
3499
|
+
/**
|
|
3500
|
+
* How {@link sendInput} reaches tmux, or null where it must not (vitest). Split
|
|
3501
|
+
* out like {@link readPaneRows}: with the test-mode gate at the top of sendInput,
|
|
3502
|
+
* no test could see which commands a submit actually sends.
|
|
3503
|
+
*/
|
|
3504
|
+
inputRunner() {
|
|
3505
|
+
if (IS_TEST_MODE)
|
|
3506
|
+
return null;
|
|
3507
|
+
return (cmd) => execAsync(cmd, { timeout: EXEC_TIMEOUT_MS });
|
|
3508
|
+
}
|
|
3395
3509
|
// ========== Pane Methods (for Agent Team teammate panes) ==========
|
|
3396
3510
|
/**
|
|
3397
3511
|
* Enable mouse mode for an existing tmux session.
|
|
@@ -3491,7 +3605,9 @@ export class TmuxManager extends EventEmitter {
|
|
|
3491
3605
|
}
|
|
3492
3606
|
/**
|
|
3493
3607
|
* Send input to a specific pane within a tmux session.
|
|
3494
|
-
*
|
|
3608
|
+
* Types the text literally with `send-keys -l`, line breaks stripped, then Enter
|
|
3609
|
+
* when the input carried a `\r`. Unlike sendInput(), it neither pastes nor keeps
|
|
3610
|
+
* the line breaks of multi-line text.
|
|
3495
3611
|
*/
|
|
3496
3612
|
sendInputToPane(muxName, paneTarget, input) {
|
|
3497
3613
|
if (IS_TEST_MODE)
|
|
@@ -3561,19 +3677,21 @@ export class TmuxManager extends EventEmitter {
|
|
|
3561
3677
|
/**
|
|
3562
3678
|
* Plain visible-frame text for the working/idle probe (see `session.ts`).
|
|
3563
3679
|
*
|
|
3564
|
-
* One `capture-pane` and nothing else: no
|
|
3565
|
-
*
|
|
3566
|
-
*
|
|
3567
|
-
*
|
|
3680
|
+
* One `capture-pane` and nothing else: no `display-message` cursor query, no
|
|
3681
|
+
* repaint reconstruction: this feeds a regex, not a terminal. `styles` adds
|
|
3682
|
+
* `-e` for a reader that must tell faint text from typed text (the keep-warm
|
|
3683
|
+
* composer check); lines stay `\n`-separated either way. Returns null in tests
|
|
3684
|
+
* (no tmux) so callers fall back to their stream heuristics rather than
|
|
3685
|
+
* reading an empty screen as "not working".
|
|
3568
3686
|
*/
|
|
3569
|
-
capturePaneText(muxName, paneTarget) {
|
|
3687
|
+
capturePaneText(muxName, paneTarget, opts) {
|
|
3570
3688
|
if (IS_TEST_MODE)
|
|
3571
3689
|
return null;
|
|
3572
3690
|
const target = resolveTmuxPaneTarget(muxName, paneTarget);
|
|
3573
3691
|
if (!target)
|
|
3574
3692
|
return null;
|
|
3575
3693
|
try {
|
|
3576
|
-
return execSync(`${this.tmux()} capture-pane -p -t ${shellescape(target)}`, {
|
|
3694
|
+
return execSync(`${this.tmux()} capture-pane -p${opts?.styles ? ' -e' : ''} -t ${shellescape(target)}`, {
|
|
3577
3695
|
encoding: 'utf-8',
|
|
3578
3696
|
timeout: EXEC_TIMEOUT_MS,
|
|
3579
3697
|
});
|