@caupulican/pi-adaptative 0.81.32 → 0.81.37
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/CHANGELOG.md +46 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/README.md +69 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts +53 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts.map +1 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.js +1282 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.js.map +1 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.ts +1453 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/templates/builder-validator.json +14 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/templates/claude-trio.json +32 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/templates/full-provider-review.json +15 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/templates/provider-prompt-smoke.json +14 -0
- package/dist/bundled-resources/prompts/extensionify.md +5 -4
- package/dist/bundled-resources/prompts/skillify.md +5 -5
- package/dist/bundled-resources/skills/pi-harness-learning/SKILL.md +6 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +10 -8
- package/dist/cli/args.js.map +1 -1
- package/dist/config.d.ts +5 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -2
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +12 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +42 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/autonomy/approval-gate.d.ts.map +1 -1
- package/dist/core/autonomy/approval-gate.js +2 -0
- package/dist/core/autonomy/approval-gate.js.map +1 -1
- package/dist/core/autonomy/foreground-envelope.d.ts.map +1 -1
- package/dist/core/autonomy/foreground-envelope.js +2 -0
- package/dist/core/autonomy/foreground-envelope.js.map +1 -1
- package/dist/core/autonomy/gates.d.ts.map +1 -1
- package/dist/core/autonomy/gates.js +9 -2
- package/dist/core/autonomy/gates.js.map +1 -1
- package/dist/core/autonomy/risk-assessment.d.ts.map +1 -1
- package/dist/core/autonomy/risk-assessment.js +2 -0
- package/dist/core/autonomy/risk-assessment.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +12 -3
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +67 -26
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/bash-execution-controller.d.ts +9 -4
- package/dist/core/bash-execution-controller.d.ts.map +1 -1
- package/dist/core/bash-execution-controller.js +7 -6
- package/dist/core/bash-execution-controller.js.map +1 -1
- package/dist/core/bash-executor.d.ts +2 -0
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +10 -5
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/context/context-store-retention.d.ts +4 -1
- package/dist/core/context/context-store-retention.d.ts.map +1 -1
- package/dist/core/context/context-store-retention.js +42 -151
- package/dist/core/context/context-store-retention.js.map +1 -1
- package/dist/core/context-pipeline.d.ts.map +1 -1
- package/dist/core/context-pipeline.js +6 -6
- package/dist/core/context-pipeline.js.map +1 -1
- package/dist/core/default-tool-surface.d.ts +7 -0
- package/dist/core/default-tool-surface.d.ts.map +1 -1
- package/dist/core/default-tool-surface.js +29 -10
- package/dist/core/default-tool-surface.js.map +1 -1
- package/dist/core/doctor.d.ts +10 -10
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +30 -20
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/exec.d.ts +2 -0
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js +26 -39
- package/dist/core/exec.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +9 -2
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +105 -21
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +13 -3
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js +3 -0
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +2 -0
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/goals/goal-state.d.ts +10 -0
- package/dist/core/goals/goal-state.d.ts.map +1 -1
- package/dist/core/goals/goal-state.js +37 -0
- package/dist/core/goals/goal-state.js.map +1 -1
- package/dist/core/goals/goal-tool-core.d.ts +11 -0
- package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
- package/dist/core/goals/goal-tool-core.js +51 -1
- package/dist/core/goals/goal-tool-core.js.map +1 -1
- package/dist/core/improvement-loop.d.ts.map +1 -1
- package/dist/core/improvement-loop.js +26 -5
- package/dist/core/improvement-loop.js.map +1 -1
- package/dist/core/memory/memory-manager.d.ts.map +1 -1
- package/dist/core/memory/memory-manager.js +1 -0
- package/dist/core/memory/memory-manager.js.map +1 -1
- package/dist/core/model-capability.d.ts.map +1 -1
- package/dist/core/model-capability.js +2 -0
- package/dist/core/model-capability.js.map +1 -1
- package/dist/core/model-router/tool-escalation.d.ts.map +1 -1
- package/dist/core/model-router/tool-escalation.js +17 -3
- package/dist/core/model-router/tool-escalation.js.map +1 -1
- package/dist/core/models/fitness-store.d.ts.map +1 -1
- package/dist/core/models/fitness-store.js +1 -1
- package/dist/core/models/fitness-store.js.map +1 -1
- package/dist/core/models/local-runtime.d.ts +6 -4
- package/dist/core/models/local-runtime.d.ts.map +1 -1
- package/dist/core/models/local-runtime.js +108 -36
- package/dist/core/models/local-runtime.js.map +1 -1
- package/dist/core/output-guard.d.ts.map +1 -1
- package/dist/core/output-guard.js +23 -8
- package/dist/core/output-guard.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +44 -59
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/profile-resource-selection.d.ts +16 -0
- package/dist/core/profile-resource-selection.d.ts.map +1 -1
- package/dist/core/profile-resource-selection.js +41 -0
- package/dist/core/profile-resource-selection.js.map +1 -1
- package/dist/core/python-runtime.d.ts +46 -0
- package/dist/core/python-runtime.d.ts.map +1 -0
- package/dist/core/python-runtime.js +157 -0
- package/dist/core/python-runtime.js.map +1 -0
- package/dist/core/reflection-controller.d.ts.map +1 -1
- package/dist/core/reflection-controller.js +18 -1
- package/dist/core/reflection-controller.js.map +1 -1
- package/dist/core/reload-blockers.d.ts +1 -0
- package/dist/core/reload-blockers.d.ts.map +1 -1
- package/dist/core/reload-blockers.js +6 -2
- package/dist/core/reload-blockers.js.map +1 -1
- package/dist/core/resource-loader.d.ts +2 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +50 -28
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/runtime-builder.d.ts +4 -0
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +31 -9
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/security/untrusted-boundary.d.ts +2 -2
- package/dist/core/security/untrusted-boundary.d.ts.map +1 -1
- package/dist/core/security/untrusted-boundary.js +4 -3
- package/dist/core/security/untrusted-boundary.js.map +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +3 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +9 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +13 -2
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tasks/session-task-state.d.ts +10 -0
- package/dist/core/tasks/session-task-state.d.ts.map +1 -0
- package/dist/core/tasks/session-task-state.js +29 -0
- package/dist/core/tasks/session-task-state.js.map +1 -0
- package/dist/core/tasks/task-command.d.ts +30 -0
- package/dist/core/tasks/task-command.d.ts.map +1 -0
- package/dist/core/tasks/task-command.js +79 -0
- package/dist/core/tasks/task-command.js.map +1 -0
- package/dist/core/tasks/task-state.d.ts +71 -0
- package/dist/core/tasks/task-state.d.ts.map +1 -0
- package/dist/core/tasks/task-state.js +372 -0
- package/dist/core/tasks/task-state.js.map +1 -0
- package/dist/core/tool-selection/tool-selection-controller.d.ts.map +1 -1
- package/dist/core/tool-selection/tool-selection-controller.js +1 -1
- package/dist/core/tool-selection/tool-selection-controller.js.map +1 -1
- package/dist/core/toolkit/script-runner.d.ts.map +1 -1
- package/dist/core/toolkit/script-runner.js +58 -24
- package/dist/core/toolkit/script-runner.js.map +1 -1
- package/dist/core/tools/bash.d.ts +20 -2
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +132 -220
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/extensionify.d.ts +2 -1
- package/dist/core/tools/extensionify.d.ts.map +1 -1
- package/dist/core/tools/extensionify.js +11 -8
- package/dist/core/tools/extensionify.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +57 -48
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/git-filter.d.ts.map +1 -1
- package/dist/core/tools/git-filter.js +20 -32
- package/dist/core/tools/git-filter.js.map +1 -1
- package/dist/core/tools/goal.d.ts +1 -1
- package/dist/core/tools/goal.d.ts.map +1 -1
- package/dist/core/tools/goal.js +10 -3
- package/dist/core/tools/goal.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +92 -80
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +9 -6
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +24 -9
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +2 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +7 -4
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/python.d.ts +64 -0
- package/dist/core/tools/python.d.ts.map +1 -0
- package/dist/core/tools/python.js +241 -0
- package/dist/core/tools/python.js.map +1 -0
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +4 -3
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/shell-contract-router.d.ts +13 -0
- package/dist/core/tools/shell-contract-router.d.ts.map +1 -0
- package/dist/core/tools/shell-contract-router.js +295 -0
- package/dist/core/tools/shell-contract-router.js.map +1 -0
- package/dist/core/tools/task-steps.d.ts +46 -0
- package/dist/core/tools/task-steps.d.ts.map +1 -0
- package/dist/core/tools/task-steps.js +160 -0
- package/dist/core/tools/task-steps.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +23 -4
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +18 -4
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/auth-dialogs-controller.d.ts +10 -0
- package/dist/modes/interactive/auth-dialogs-controller.d.ts.map +1 -1
- package/dist/modes/interactive/auth-dialogs-controller.js +94 -27
- package/dist/modes/interactive/auth-dialogs-controller.js.map +1 -1
- package/dist/modes/interactive/auto-learn-controller.d.ts.map +1 -1
- package/dist/modes/interactive/auto-learn-controller.js +2 -1
- package/dist/modes/interactive/auto-learn-controller.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +8 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +6 -15
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +3 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +20 -8
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/profile-resource-editor.d.ts +4 -1
- package/dist/modes/interactive/components/profile-resource-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/profile-resource-editor.js +22 -39
- package/dist/modes/interactive/components/profile-resource-editor.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +1 -1
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/config-backup.d.ts +1 -0
- package/dist/modes/interactive/config-backup.d.ts.map +1 -1
- package/dist/modes/interactive/config-backup.js +14 -3
- package/dist/modes/interactive/config-backup.js.map +1 -1
- package/dist/modes/interactive/editor-overlay-host.d.ts +12 -0
- package/dist/modes/interactive/editor-overlay-host.d.ts.map +1 -1
- package/dist/modes/interactive/editor-overlay-host.js +55 -0
- package/dist/modes/interactive/editor-overlay-host.js.map +1 -1
- package/dist/modes/interactive/extension-ui-host.d.ts +2 -1
- package/dist/modes/interactive/extension-ui-host.d.ts.map +1 -1
- package/dist/modes/interactive/extension-ui-host.js +161 -96
- package/dist/modes/interactive/extension-ui-host.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +23 -28
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +26 -8
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/profile-menu-controller.d.ts +5 -1
- package/dist/modes/interactive/profile-menu-controller.d.ts.map +1 -1
- package/dist/modes/interactive/profile-menu-controller.js +118 -24
- package/dist/modes/interactive/profile-menu-controller.js.map +1 -1
- package/dist/modes/interactive/resource-shell-commands.d.ts +1 -0
- package/dist/modes/interactive/resource-shell-commands.d.ts.map +1 -1
- package/dist/modes/interactive/resource-shell-commands.js +5 -1
- package/dist/modes/interactive/resource-shell-commands.js.map +1 -1
- package/dist/modes/interactive/session-flow-commands.d.ts +10 -0
- package/dist/modes/interactive/session-flow-commands.d.ts.map +1 -1
- package/dist/modes/interactive/session-flow-commands.js +143 -7
- package/dist/modes/interactive/session-flow-commands.js.map +1 -1
- package/dist/modes/interactive/session-io-commands.d.ts.map +1 -1
- package/dist/modes/interactive/session-io-commands.js +80 -50
- package/dist/modes/interactive/session-io-commands.js.map +1 -1
- package/dist/modes/interactive/startup-checks.d.ts.map +1 -1
- package/dist/modes/interactive/startup-checks.js +14 -17
- package/dist/modes/interactive/startup-checks.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +20 -19
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +10 -19
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/utils/child-process.d.ts +13 -7
- package/dist/utils/child-process.d.ts.map +1 -1
- package/dist/utils/child-process.js +56 -3
- package/dist/utils/child-process.js.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +3 -2
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +17 -10
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/external-editor-command.d.ts +8 -0
- package/dist/utils/external-editor-command.d.ts.map +1 -0
- package/dist/utils/external-editor-command.js +60 -0
- package/dist/utils/external-editor-command.js.map +1 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +10 -2
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/shell.d.ts +6 -8
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +61 -70
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/tools-manager.d.ts +23 -3
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +117 -21
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/work-directory.d.ts +36 -0
- package/dist/utils/work-directory.d.ts.map +1 -0
- package/dist/utils/work-directory.js +462 -0
- package/dist/utils/work-directory.js.map +1 -0
- package/docs/index.md +4 -0
- package/docs/python.md +43 -0
- package/docs/resources.md +2 -2
- package/docs/rpc.md +1 -1
- package/docs/settings.md +7 -3
- package/docs/task-steps.md +90 -0
- package/docs/termux.md +7 -0
- package/docs/tmux-agent-manager.md +48 -0
- package/docs/usage.md +5 -6
- package/docs/windows.md +104 -8
- package/docs/work-directory.md +41 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +32 -37
- package/package.json +9 -7
- package/scripts/postinstall-python-runtime.mjs +20 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/bundled-resources/extensions/tmux-agent-manager/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawnSync } from \"node:child_process\";\nimport * as crypto from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { type ExtensionAPI, type ExtensionContext, getProcessWorkRun } from \"@caupulican/pi-adaptative\";\nimport type { AgentToolResult } from \"@caupulican/pi-agent-core\";\nimport { Type } from \"typebox\";\n\nexport const piConfig = { tools: [\"tmux_agent_manager\"] };\n\ntype Action =\n\t| \"status\"\n\t| \"setup_help\"\n\t| \"guard\"\n\t| \"notify\"\n\t| \"set_status\"\n\t| \"clear_status\"\n\t| \"workspace_plan\"\n\t| \"launch_workspace\"\n\t| \"fire_task\"\n\t| \"job_status\"\n\t| \"list_jobs\"\n\t| \"set_variable\"\n\t| \"list_variables\"\n\t| \"list_templates\"\n\t| \"show_template\"\n\t| \"stop_job\"\n\t| \"stop_session\";\ntype Provider = \"pi\" | \"codex\" | \"agy\" | \"claude\" | \"opencode\" | \"custom\";\n\ntype AgentSpec = { provider?: Provider; name?: string; command?: string; cwd?: string; tools?: string[] };\ntype TeamTemplate = {\n\tname: string;\n\tdescription: string;\n\tagents: AgentSpec[];\n\tdeadlineSeconds?: number;\n\tnotes?: string[];\n};\ntype Params = {\n\taction?: Action;\n\ttitle?: string;\n\tbody?: string;\n\tsubtitle?: string;\n\tstatusKey?: string;\n\tstatus?: string;\n\ticon?: string;\n\tcolor?: string;\n\tworkspaceName?: string;\n\tcwd?: string;\n\tagents?: AgentSpec[];\n\tteamTemplate?: string;\n\ttask?: string;\n\tjobId?: string;\n\tvariableName?: string;\n\tvariableValue?: string;\n\tdeadlineSeconds?: number;\n\tdryRun?: boolean;\n\tforce?: boolean;\n\tconfirm?: string;\n};\n\ntype RunResult = { ok: boolean; status: number | null; stdout: string; stderr: string; error?: string; args: string[] };\ntype TmuxDetection = {\n\tinsideTmux: boolean;\n\ttmuxBin?: string;\n\tcliAvailable: boolean;\n\tversion?: string;\n\tcurrentSession?: string;\n\tsessions: string[];\n\tenv: { tmux?: string; term?: string };\n\terrors: string[];\n};\ntype AgentResult = {\n\tstatus: string;\n\tmarker?: string;\n\tdetectedAt?: string;\n\treason?: string;\n};\ntype VariableState = { updatedAt: string | null; variables: Record<string, unknown> };\ntype FireAgentPlan = {\n\tid: string;\n\tname: string;\n\tprovider: Provider;\n\tcommand?: string;\n\tcwd: string;\n\tdoneMarker: string;\n\tblockedMarker: string;\n\tpromptPath: string;\n\tlogPath: string;\n\tresultPath: string;\n\tpaneId?: string;\n\tresult?: AgentResult;\n};\ntype FireTaskPlan = {\n\tid: string;\n\tcreatedAt: string;\n\tnotifiedAt?: string;\n\tparentSessionFile?: string;\n\tworkspaceName: string;\n\tsessionName: string;\n\tcwd: string;\n\ttask: string;\n\tteamTemplate?: string;\n\tdeadlineSeconds: number;\n\tjobDir: string;\n\tjobPath: string;\n\tvarsPath: string;\n\twatcherPath: string;\n\tagents: FireAgentPlan[];\n\tlaunchCommands: string[];\n\tvariables?: VariableState;\n};\n\nconst EXTENSION_ROOT = path.dirname(fileURLToPath(import.meta.url));\nexport function getTmuxAgentManagerDataRoot(): string {\n\tconst agentDir =\n\t\tprocess.env.PI_ADAPTATIVE_CODING_AGENT_DIR ||\n\t\tprocess.env[\"PI-ADAPTATIVE_CODING_AGENT_DIR\"] ||\n\t\tprocess.env.PI_CODING_AGENT_DIR ||\n\t\tprocess.env.PI_AGENT_DIR ||\n\t\tpath.join(homedir(), \".pi\", \"agent\");\n\treturn getProcessWorkRun(agentDir, \"background\", \"tmux-agent-manager\", \"state\").path;\n}\nfunction jobsRoot(): string {\n\treturn path.join(getTmuxAgentManagerDataRoot(), \"jobs\");\n}\nfunction archiveRoot(): string {\n\treturn path.join(getTmuxAgentManagerDataRoot(), \"archives\");\n}\nfunction templateDirs(): string[] {\n\treturn [path.join(EXTENSION_ROOT, \"templates\"), path.join(getTmuxAgentManagerDataRoot(), \"templates\")];\n}\nconst MAX_OUTPUT = 12_000;\nconst DEFAULT_AGENT_PROVIDERS: Provider[] = [\"pi\", \"agy\", \"codex\"];\nconst PROVIDER_COMMANDS: Record<Provider, string> = {\n\tpi: \"pi\",\n\tcodex: \"codex\",\n\tagy: \"agy\",\n\tclaude: \"claude\",\n\topencode: \"opencode\",\n\tcustom: \"\",\n};\nconst DEFAULT_DEADLINE_SECONDS = 20 * 60;\nconst MAX_DEADLINE_SECONDS = 24 * 60 * 60;\nconst TEAM_TEMPLATES: TeamTemplate[] = [\n\t{\n\t\tname: \"provider-prompt-smoke\",\n\t\tdescription:\n\t\t\t\"Real minimal interactive prompt smoke for native Claude, Agy, and Pi. Consumes provider/model tokens.\",\n\t\tdeadlineSeconds: 10 * 60,\n\t\tagents: [\n\t\t\t{ provider: \"claude\", name: \"claude-prompt-smoke\" },\n\t\t\t{ provider: \"agy\", name: \"agy-prompt-smoke\" },\n\t\t\t{ provider: \"pi\", name: \"pi-prompt-smoke\" },\n\t\t],\n\t\tnotes: [\n\t\t\t\"Use only when model-token/auth validation is intended.\",\n\t\t\t\"The manager opens each CLI in tmux, injects the prompt, captures pane output, and watches DONE/BLOCKED markers.\",\n\t\t],\n\t},\n\t{\n\t\tname: \"full-provider-review\",\n\t\tdescription:\n\t\t\t\"Interactive native-provider review team: Pi lead, Claude reviewer, Agy validator, Agy reviewer. Consumes provider/model tokens.\",\n\t\tdeadlineSeconds: 30 * 60,\n\t\tagents: [\n\t\t\t{ provider: \"pi\", name: \"pi-lead\" },\n\t\t\t{ provider: \"claude\", name: \"claude-reviewer\" },\n\t\t\t{ provider: \"agy\", name: \"agy-validator\" },\n\t\t\t{ provider: \"agy\", name: \"agy-reviewer\" },\n\t\t],\n\t\tnotes: [\n\t\t\t\"Best for non-trivial review/QA where independent native CLIs help.\",\n\t\t\t\"Keep the task objective bounded; inspect captured panes/result files before accepting PASS.\",\n\t\t],\n\t},\n\t{\n\t\tname: \"builder-validator\",\n\t\tdescription:\n\t\t\t\"Interactive implementation loop: Agy builder, Claude reviewer, Agy validator, Pi coordinator. Good default for scoped code work.\",\n\t\tdeadlineSeconds: 25 * 60,\n\t\tagents: [\n\t\t\t{ provider: \"agy\", name: \"builder\" },\n\t\t\t{ provider: \"claude\", name: \"code-reviewer\" },\n\t\t\t{ provider: \"agy\", name: \"validator\" },\n\t\t\t{ provider: \"pi\", name: \"coordinator\" },\n\t\t],\n\t\tnotes: [\n\t\t\t\"Use for owner-approved implementation/QA batches; never claim complete until result files and validation evidence are inspected.\",\n\t\t],\n\t},\n];\n\nfunction cap(text: string, max = MAX_OUTPUT): string {\n\treturn text.length <= max ? text : `${text.slice(0, max)}\\n...[truncated ${text.length - max} chars]`;\n}\nfunction firstString(...values: unknown[]): string | undefined {\n\tfor (const value of values) if (typeof value === \"string\" && value.trim()) return value.trim();\n\treturn undefined;\n}\nfunction errorMessage(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\nfunction clampInt(value: unknown, fallback: number, min: number, max: number): number {\n\tif (typeof value !== \"number\" || !Number.isFinite(value)) return fallback;\n\treturn Math.max(min, Math.min(max, Math.trunc(value)));\n}\nfunction findExecutable(name: string): string | undefined {\n\tfor (const dir of (process.env.PATH || \"\").split(path.delimiter)) {\n\t\tif (!dir) continue;\n\t\tconst candidate = path.join(dir, process.platform === \"win32\" ? `${name}.exe` : name);\n\t\ttry {\n\t\t\tif (fs.statSync(candidate).isFile()) return candidate;\n\t\t} catch {\n\t\t\t/* ignore */\n\t\t}\n\t}\n\treturn undefined;\n}\nfunction quoteShell(value: string): string {\n\treturn `'${value.replace(/'/g, `'\\\\''`)}'`;\n}\nfunction ensureDir(dir: string): void {\n\tfs.mkdirSync(dir, { recursive: true, mode: 0o700 });\n}\nfunction resolveCwd(ctx: ExtensionContext, requested?: string): string {\n\tconst cwd = path.resolve(ctx.cwd || process.cwd(), requested?.trim() || \".\");\n\tconst stat = fs.statSync(cwd);\n\tif (!stat.isDirectory()) throw new Error(`cwd is not a directory: ${cwd}`);\n\treturn cwd;\n}\nfunction safeName(value: string, fallback = \"pi-agents\"): string {\n\tconst safe = value\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9_.:-]+/g, \"-\")\n\t\t.replace(/^-+|-+$/g, \"\")\n\t\t.slice(0, 60);\n\treturn safe || fallback;\n}\nfunction makeJobId(): string {\n\treturn `tmux-${Date.now().toString(36)}-${crypto.randomBytes(4).toString(\"hex\")}`;\n}\nfunction safeStatusKey(value?: string): string {\n\tconst raw = value?.trim() || \"pi-agents\";\n\tif (!/^[a-zA-Z0-9_.:-]{1,80}$/.test(raw))\n\t\tthrow new Error(\"statusKey must be 1-80 chars: letters, numbers, _, ., :, or -\");\n\treturn raw;\n}\n\nfunction runTmux(args: string[], timeoutMs = 5_000): RunResult {\n\tconst tmux = process.env.PI_TMUX_MANAGER_TMUX_BIN || findExecutable(\"tmux\") || \"tmux\";\n\tconst result = spawnSync(tmux, args, {\n\t\tencoding: \"utf8\",\n\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\ttimeout: timeoutMs,\n\t\tmaxBuffer: 256 * 1024,\n\t});\n\treturn {\n\t\tok: !result.error && result.status === 0,\n\t\tstatus: result.status,\n\t\tstdout: cap(result.stdout || \"\"),\n\t\tstderr: cap(result.stderr || \"\"),\n\t\terror: result.error ? String(result.error.message || result.error) : undefined,\n\t\targs: [tmux, ...args],\n\t};\n}\nfunction detectTmux(): TmuxDetection {\n\tconst tmuxBin = process.env.PI_TMUX_MANAGER_TMUX_BIN || findExecutable(\"tmux\");\n\tconst errors: string[] = [];\n\tlet version: string | undefined;\n\tlet currentSession: string | undefined;\n\tlet sessions: string[] = [];\n\tconst insideTmux = Boolean(process.env.TMUX);\n\tif (!tmuxBin) errors.push(\"tmux CLI not found on PATH.\");\n\telse {\n\t\tconst versionRun = runTmux([\"-V\"], 2_000);\n\t\tif (versionRun.ok) version = versionRun.stdout.trim();\n\t\telse errors.push(`tmux -V failed: ${versionRun.error || versionRun.stderr || `exit ${versionRun.status}`}`);\n\t\tconst listRun = runTmux([\"list-sessions\", \"-F\", \"#{session_name}\"]);\n\t\tif (listRun.ok) sessions = listRun.stdout.trim() ? listRun.stdout.trim().split(/\\n+/) : [];\n\t\telse if (!/no server running/i.test(listRun.stderr))\n\t\t\terrors.push(`tmux list-sessions failed: ${listRun.error || listRun.stderr || `exit ${listRun.status}`}`);\n\t\tif (insideTmux) {\n\t\t\tconst sessionRun = runTmux([\"display-message\", \"-p\", \"#S\"], 2_000);\n\t\t\tif (sessionRun.ok) currentSession = sessionRun.stdout.trim();\n\t\t}\n\t}\n\treturn {\n\t\tinsideTmux,\n\t\ttmuxBin,\n\t\tcliAvailable: Boolean(tmuxBin),\n\t\tversion,\n\t\tcurrentSession,\n\t\tsessions,\n\t\tenv: { tmux: process.env.TMUX, term: process.env.TERM },\n\t\terrors,\n\t};\n}\nfunction formatDetection(d: TmuxDetection): string {\n\treturn [\n\t\t`tmux: ${d.cliAvailable ? \"available\" : \"missing\"}`,\n\t\td.tmuxBin ? `bin: ${d.tmuxBin}` : undefined,\n\t\td.version ? `version: ${d.version}` : undefined,\n\t\t`insideTmux: ${d.insideTmux}`,\n\t\td.currentSession ? `currentSession: ${d.currentSession}` : undefined,\n\t\td.sessions.length ? `sessions: ${d.sessions.join(\", \")}` : \"sessions: none\",\n\t\td.errors.length ? `errors:\\n- ${d.errors.join(\"\\n- \")}` : undefined,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(\"\\n\");\n}\nfunction setupHelp(d: TmuxDetection): string {\n\tif (d.cliAvailable)\n\t\treturn `tmux CLI available: ${d.tmuxBin || \"tmux\"}\\nUse tmux_agent_manager action=workspace_plan or fire_task. Set dryRun=true only when a preview is useful.`;\n\treturn [\n\t\t\"tmux CLI not found.\",\n\t\t\"Install tmux for your environment, then reload Pi:\",\n\t\t\"- Debian/Ubuntu/WSL: sudo apt-get install tmux\",\n\t\t\"- Fedora: sudo dnf install tmux\",\n\t\t\"- Arch: sudo pacman -S tmux\",\n\t\t\"- macOS: brew install tmux\",\n\t\t\"- Windows: use WSL/MSYS2/Cygwin where a real tmux binary is available on PATH.\",\n\t\t\"cmux is macOS-only and intentionally not used by this tmux manager.\",\n\t].join(\"\\n\");\n}\nasync function guardTmux(_ctx: ExtensionContext, detection: TmuxDetection, purpose: string) {\n\tif (detection.cliAvailable) return { allowed: true, text: `tmux available for ${purpose}.` };\n\treturn { allowed: false, text: `${setupHelp(detection)}\\n\\nCannot run tmux-managed work until tmux is on PATH.` };\n}\nfunction tmuxManagerInstructions(toolName: string, detection: TmuxDetection): string {\n\treturn [\n\t\t`tmux is available (${detection.version || detection.tmuxBin || \"tmux\"}). For managed ${toolName} work, use tmux_agent_manager instead of direct foreground/background dispatch.`,\n\t\t\"Suggested next call:\",\n\t\t'tmux_agent_manager({ action: \"fire_task\", teamTemplate: \"builder-validator\", task: \"<objective>\" })',\n\t\t\"The launch returns immediately after panes, event watchers, and prompt handoffs are armed.\",\n\t\t\"Managed mode creates panes, prompt files, result files, event-driven terminal handoffs, tmux display-message notifications, @pi_* status options, shared variables, and one-shot deadlines.\",\n\t].join(\"\\n\");\n}\nfunction validateTemplate(value: unknown, source: string): TeamTemplate {\n\tif (!value || typeof value !== \"object\") throw new Error(`${source}: template must be an object`);\n\tconst template = value as TeamTemplate;\n\tif (!firstString(template.name)) throw new Error(`${source}: missing name`);\n\tif (!firstString(template.description)) throw new Error(`${source}: missing description`);\n\tif (!Array.isArray(template.agents) || template.agents.length < 1)\n\t\tthrow new Error(`${source}: agents must be a non-empty array`);\n\tif (template.agents.length > 12) throw new Error(`${source}: agents max is 12`);\n\ttemplate.agents.forEach((agent, index) => {\n\t\tconst provider = agent.provider || \"custom\";\n\t\tif (!Object.hasOwn(PROVIDER_COMMANDS, provider))\n\t\t\tthrow new Error(`${source}: unsupported provider at agents[${index}]: ${provider}`);\n\t\tif (provider === \"custom\" && !firstString(agent.command))\n\t\t\tthrow new Error(`${source}: custom agent ${agent.name || index} needs command`);\n\t});\n\treturn template;\n}\nfunction loadTemplateFiles(): { templates: TeamTemplate[]; errors: string[] } {\n\tconst templates: TeamTemplate[] = [];\n\tconst errors: string[] = [];\n\tfor (const dir of templateDirs()) {\n\t\tlet entries: fs.Dirent[] = [];\n\t\ttry {\n\t\t\tentries = fs.readdirSync(dir, { withFileTypes: true });\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const entry of entries) {\n\t\t\tif (!entry.isFile() || !entry.name.endsWith(\".json\")) continue;\n\t\t\tconst filePath = path.join(dir, entry.name);\n\t\t\ttry {\n\t\t\t\tconst parsed = JSON.parse(fs.readFileSync(filePath, \"utf8\"));\n\t\t\t\ttemplates.push(validateTemplate(parsed, filePath));\n\t\t\t} catch (error: unknown) {\n\t\t\t\terrors.push(`${filePath}: ${errorMessage(error)}`);\n\t\t\t}\n\t\t}\n\t}\n\treturn { templates, errors };\n}\nfunction getTeamTemplates(): { templates: TeamTemplate[]; errors: string[] } {\n\tconst byName = new Map<string, TeamTemplate>();\n\tfor (const template of TEAM_TEMPLATES) byName.set(template.name.toLowerCase(), template);\n\tconst loaded = loadTemplateFiles();\n\tfor (const template of loaded.templates) byName.set(template.name.toLowerCase(), template);\n\treturn { templates: Array.from(byName.values()), errors: loaded.errors };\n}\nfunction findTeamTemplate(name?: string): TeamTemplate | undefined {\n\tif (!name) return undefined;\n\tconst wanted = name.trim().toLowerCase();\n\treturn getTeamTemplates().templates.find((template) => template.name.toLowerCase() === wanted);\n}\nfunction requireTeamTemplate(name?: string): TeamTemplate {\n\tconst { templates, errors } = getTeamTemplates();\n\tconst wanted = name?.trim().toLowerCase();\n\tconst template = wanted ? templates.find((item) => item.name.toLowerCase() === wanted) : undefined;\n\tif (!template)\n\t\tthrow new Error(\n\t\t\t`unknown teamTemplate '${name || \"\"}'. Use action=list_templates.${errors.length ? ` Template load errors: ${errors.join(\"; \")}` : \"\"}`,\n\t\t);\n\treturn template;\n}\nfunction templateSummary(): { text: string; templates: TeamTemplate[]; errors: string[] } {\n\tconst loaded = getTeamTemplates();\n\tconst lines = loaded.templates.map((template) => `- ${template.name}: ${template.description}`);\n\tif (loaded.errors.length) lines.push(\"\", \"Template load errors:\", ...loaded.errors.map((error) => `- ${error}`));\n\treturn { text: lines.join(\"\\n\"), ...loaded };\n}\nfunction formatTemplate(template: TeamTemplate): string {\n\treturn JSON.stringify(template, null, 2);\n}\nfunction templateDefaults(params: Params): Partial<TeamTemplate> {\n\treturn findTeamTemplate(params.teamTemplate) || {};\n}\n\nfunction normalizeAgents(params: Params): AgentSpec[] {\n\tconst template = findTeamTemplate(params.teamTemplate);\n\tconst input: AgentSpec[] = params.agents?.length\n\t\t? params.agents\n\t\t: template?.agents?.length\n\t\t\t? template.agents\n\t\t\t: DEFAULT_AGENT_PROVIDERS.map((provider) => ({ provider }));\n\tif (input.length < 1) throw new Error(\"agents must contain at least one agent\");\n\tif (input.length > 12) throw new Error(\"agents max is 12\");\n\treturn input.map((agent, index) => {\n\t\tconst provider = agent.provider || \"custom\";\n\t\tif (!Object.hasOwn(PROVIDER_COMMANDS, provider)) throw new Error(`unsupported provider: ${provider}`);\n\t\tconst name =\n\t\t\tfirstString(agent.name, provider === \"custom\" ? `custom-${index + 1}` : provider) || `agent-${index + 1}`;\n\t\tconst baseCommand = firstString(agent.command, PROVIDER_COMMANDS[provider]);\n\t\tif (!baseCommand) throw new Error(`agent ${name} needs command when provider=custom`);\n\t\tconst tools = Array.isArray(agent.tools) && agent.tools.length > 0 ? agent.tools : undefined;\n\t\tconst command = tools ? `${baseCommand} --tools ${tools.join(\",\")}` : baseCommand;\n\t\treturn { provider, name, command, cwd: agent.cwd, tools };\n\t});\n}\nfunction defaultProviderInvocation(provider: Provider): string {\n\tswitch (provider) {\n\t\tcase \"pi\":\n\t\t\treturn \"pi\";\n\t\tcase \"agy\":\n\t\t\treturn \"agy\";\n\t\tcase \"codex\":\n\t\t\treturn \"codex\";\n\t\tcase \"claude\":\n\t\t\treturn \"claude\";\n\t\tcase \"opencode\":\n\t\t\treturn \"opencode\";\n\t\tcase \"custom\":\n\t\t\treturn \"\";\n\t}\n}\nfunction interactivePromptText(prompt: string): string {\n\treturn prompt.replace(/\\r?\\n/g, \"\\\\n\");\n}\nfunction spellMarker(marker: string): string {\n\treturn marker.split(\"\").join(\" \");\n}\nfunction managedPrompt(\n\ttask: string,\n\tjobId: string,\n\tagent: { name: string; provider: Provider },\n\tdoneMarker: string,\n\tblockedMarker: string,\n\tvarsPath: string,\n): string {\n\treturn [\n\t\t`You are ${agent.name} (${agent.provider}) working inside a tmux-managed Pi worker pane.`,\n\t\t`Job id: ${jobId}`,\n\t\t`Shared variable file: ${varsPath}`,\n\t\t\"\",\n\t\t\"Objective:\",\n\t\ttask,\n\t\t\"\",\n\t\t\"Rules:\",\n\t\t\"- Work autonomously until honest PASS or BLOCKED.\",\n\t\t\"- Verify important claims before PASS; include concise evidence.\",\n\t\t\"- If user input, credentials, destructive approval, publishing, or unavailable dependency blocks you, report BLOCKED instead of waiting silently.\",\n\t\t\"- Never print secrets/tokens. Prompts, commands, and logs persist under ~/.pi/agent/work/background/tmux-agent-manager/state/jobs.\",\n\t\t\"- If a task names an external decision variable, read it only at the decision point; never loop or poll the shared JSON file.\",\n\t\t\"\",\n\t\t\"Completion contract:\",\n\t\t\"Your final response must contain exactly one marker line. Build it by removing spaces from one of these character sequences:\",\n\t\t` DONE: ${spellMarker(doneMarker)}`,\n\t\t` BLOCKED: ${spellMarker(blockedMarker)}`,\n\t\t\"If BLOCKED, print a short reason on the next line. Do not print either marker until the final answer. After marker, stop.\",\n\t].join(\"\\n\");\n}\nfunction buildWorkspacePlan(ctx: ExtensionContext, params: Params) {\n\tconst cwd = resolveCwd(ctx, params.cwd);\n\tconst agents = normalizeAgents(params).map((agent, index) => ({\n\t\t...agent,\n\t\tcwd: resolveCwd(ctx, agent.cwd || cwd),\n\t\tid: `${safeName(agent.name || agent.provider || \"agent\")}-${index + 1}`,\n\t}));\n\tconst workspaceName = firstString(params.workspaceName, `pi-agents-${Date.now().toString(36)}`) || \"pi-agents\";\n\tconst sessionName = safeName(workspaceName, \"pi-agents\");\n\tconst launchCommands = agents.map(\n\t\t(agent) => `tmux pane: ${agent.name} -> cd ${quoteShell(agent.cwd)} && ${agent.command}`,\n\t);\n\treturn { workspaceName, sessionName, cwd, agents, launchCommands };\n}\nexport function makePaneWatcherScript(job: FireTaskPlan): string {\n\tconst agentCases = job.agents.flatMap((agent) => [\n\t\t` ${agent.id})`,\n\t\t` agent_name=${quoteShell(agent.name)}`,\n\t\t` agent_id_json=${quoteShell(JSON.stringify(agent.id))}`,\n\t\t` agent_name_json=${quoteShell(JSON.stringify(agent.name))}`,\n\t\t` done_marker=${quoteShell(agent.doneMarker)}`,\n\t\t` blocked_marker=${quoteShell(agent.blockedMarker)}`,\n\t\t` log_path=${quoteShell(agent.logPath)}`,\n\t\t` log_path_json=${quoteShell(JSON.stringify(agent.logPath))}`,\n\t\t` result_path=${quoteShell(agent.resultPath)}`,\n\t\t` stop_request_path=${quoteShell(`${agent.resultPath}.stop-requested`)}`,\n\t\t` pane_id=${quoteShell(agent.paneId || \"\")}`,\n\t\t` pane_id_json=${quoteShell(JSON.stringify(agent.paneId || null))}`,\n\t\t\" ;;\",\n\t]);\n\treturn [\n\t\t\"#!/bin/sh\",\n\t\t\"set -eu\",\n\t\t\"umask 077\",\n\t\t\"LC_ALL=C\",\n\t\t\"export LC_ALL\",\n\t\t`job_id=${quoteShell(job.id)}`,\n\t\t`job_id_json=${quoteShell(JSON.stringify(job.id))}`,\n\t\t`session_name=${quoteShell(job.sessionName)}`,\n\t\t`deadline=${Math.max(1, job.deadlineSeconds)}`,\n\t\t// biome-ignore lint/suspicious/noTemplateCurlyInString: POSIX shell parameter expansion.\n\t\t\"agent_id=${1:-}\",\n\t\t'case \"$agent_id\" in',\n\t\t...agentCases,\n\t\t\" *) printf 'unknown tmux agent id: %s\\\\n' \\\"$agent_id\\\" >&2; exit 2 ;;\",\n\t\t\"esac\",\n\t\t\"lock_path=$result_path.lock\",\n\t\t\"status_path=$result_path.status.$$\",\n\t\t\"timer_pid=\",\n\t\t\"awk_pid=\",\n\t\t\"finish() {\",\n\t\t\" status=$1\",\n\t\t\" notified_by=$2\",\n\t\t' [ ! -e \"$result_path\" ] || return 0',\n\t\t' mkdir \"$lock_path\" 2>/dev/null || return 0',\n\t\t\" finished_at=$(date -u +%Y-%m-%dT%H:%M:%SZ)\",\n\t\t\" temporary=$result_path.tmp.$$\",\n\t\t' printf \\'{\\\\n \"jobId\": %s,\\\\n \"agentId\": %s,\\\\n \"agentName\": %s,\\\\n \"status\": \"%s\",\\\\n \"exitCode\": null,\\\\n \"logPath\": %s,\\\\n \"paneId\": %s,\\\\n \"finishedAt\": \"%s\",\\\\n \"notifiedBy\": \"%s\"\\\\n}\\\\n\\' \\\\',\n\t\t' \"$job_id_json\" \"$agent_id_json\" \"$agent_name_json\" \"$status\" \"$log_path_json\" \"$pane_id_json\" \"$finished_at\" \"$notified_by\" > \"$temporary\"',\n\t\t' mv \"$temporary\" \"$result_path\"',\n\t\t' rm -f \"$stop_request_path\"',\n\t\t\" option_suffix=$(printf '%s' \\\"$job_id-$agent_id\\\" | tr -c 'A-Za-z0-9_.:-' '-')\",\n\t\t' tmux set-option -t \"$session_name\" \"@pi_$option_suffix\" \"$status\" >/dev/null 2>&1 || true',\n\t\t' tmux set-option -t \"$session_name\" \"@pi_$job_id\" \"$status:$agent_name\" >/dev/null 2>&1 || true',\n\t\t' tmux display-message -t \"$session_name\" \"tmux agent $agent_name: $status (job $job_id)\" >/dev/null 2>&1 || true',\n\t\t\"}\",\n\t\t\"cleanup() {\",\n\t\t' [ -z \"$timer_pid\" ] || kill \"$timer_pid\" 2>/dev/null || true',\n\t\t' [ -z \"$awk_pid\" ] || kill \"$awk_pid\" 2>/dev/null || true',\n\t\t' rm -f \"$status_path\"',\n\t\t\"}\",\n\t\t\"terminate() { cleanup; exit 0; }\",\n\t\t\"trap terminate TERM INT HUP\",\n\t\t\"trap cleanup EXIT\",\n\t\t\"parent_pid=$$\",\n\t\t\"exec 3<&0\",\n\t\t\"(\",\n\t\t\" sleep_pid=\",\n\t\t' stop_timer() { [ -z \"$sleep_pid\" ] || kill \"$sleep_pid\" 2>/dev/null || true; exit 0; }',\n\t\t\" trap stop_timer TERM INT HUP\",\n\t\t' sleep \"$deadline\" &',\n\t\t\" sleep_pid=$!\",\n\t\t' wait \"$sleep_pid\" 2>/dev/null || exit 0',\n\t\t\" sleep_pid=\",\n\t\t' if [ -e \"$stop_request_path\" ]; then finish stopped stop-requested-event; else finish timeout deadline-event; fi',\n\t\t' kill -TERM \"$parent_pid\" 2>/dev/null || true',\n\t\t\") &\",\n\t\t\"timer_pid=$!\",\n\t\t\"logged_bytes=0\",\n\t\t'[ ! -f \"$log_path\" ] || logged_bytes=$(wc -c < \"$log_path\" | tr -d \\' \\')',\n\t\t'awk -v done=\"$done_marker\" -v blocked=\"$blocked_marker\" -v log_file=\"$log_path\" -v status_file=\"$status_path\" -v logged=\"$logged_bytes\" -v max=4194304 -v esc=\"$(printf \\'\\\\033\\')\" \\'',\n\t\t'function settle(status, reason) { print status \"|\" reason > status_file; close(status_file); settled = 1; exit }',\n\t\t\"{\",\n\t\t\" raw = $0 ORS\",\n\t\t\" remaining = max - logged\",\n\t\t' if (remaining > 0) { if (length(raw) > remaining) raw = substr(raw, 1, remaining); printf \"%s\", raw >> log_file; logged += length(raw) }',\n\t\t\" clean = $0\",\n\t\t' gsub(esc \"\\\\\\\\[[0-9;?]*[ -/]*[@-~]\", \"\", clean)',\n\t\t' gsub(/\\\\r/, \"\", clean)',\n\t\t' sub(/^[ \\\\t]+/, \"\", clean); sub(/[ \\\\t]+$/, \"\", clean)',\n\t\t' if (clean == done) settle(\"done\", \"pane-output-event\")',\n\t\t' if (clean == blocked) settle(\"blocked\", \"pane-output-event\")',\n\t\t\"}\",\n\t\t'END { if (!settled) { print \"failed|pane-stream-ended\" > status_file; close(status_file) } }',\n\t\t\"' <&3 &\",\n\t\t\"awk_pid=$!\",\n\t\t'wait \"$awk_pid\" || true',\n\t\t\"awk_pid=\",\n\t\t'kill \"$timer_pid\" 2>/dev/null || true',\n\t\t'wait \"$timer_pid\" 2>/dev/null || true',\n\t\t\"timer_pid=\",\n\t\t'if [ -e \"$stop_request_path\" ]; then',\n\t\t\" finish stopped stop-requested-event\",\n\t\t'elif [ -f \"$status_path\" ]; then',\n\t\t' terminal=$(cat \"$status_path\")',\n\t\t// biome-ignore lint/suspicious/noTemplateCurlyInString: POSIX shell parameter expansion.\n\t\t' finish \"${terminal%%|*}\" \"${terminal#*|}\"',\n\t\t\"else\",\n\t\t\" finish failed watcher-status-missing\",\n\t\t\"fi\",\n\t\t\"exit 0\",\n\t].join(\"\\n\");\n}\nfunction buildFireTaskPlan(ctx: ExtensionContext, params: Params): FireTaskPlan {\n\tconst defaults = templateDefaults(params);\n\tconst task = firstString(params.task, params.body);\n\tif (!task) throw new Error(\"fire_task requires task (or body) with the worker objective\");\n\tconst cwd = resolveCwd(ctx, params.cwd);\n\tconst id = firstString(params.jobId) || makeJobId();\n\tif (!/^[a-zA-Z0-9_.:-]{4,80}$/.test(id))\n\t\tthrow new Error(\"jobId must be 4-80 chars: letters, numbers, _, ., :, or -\");\n\tconst jobDir = path.join(jobsRoot(), id);\n\tconst workspaceName = firstString(params.workspaceName, `Pi job ${id}`) || `Pi job ${id}`;\n\tconst sessionName = safeName(workspaceName, id);\n\tconst rawAgents = normalizeAgents(params);\n\tconst agents: FireAgentPlan[] = rawAgents.map((agent, index) => {\n\t\tconst provider = agent.provider || \"custom\";\n\t\tconst slug = `${safeName(agent.name || provider)}-${index + 1}`;\n\t\tconst markerBase = `TMUX_${crypto.createHash(\"sha1\").update(`${id}:${slug}`).digest(\"hex\").slice(0, 10).toUpperCase()}`;\n\t\tconst doneMarker = `${markerBase}_DONE`;\n\t\tconst blockedMarker = `${markerBase}_BLOCKED`;\n\t\treturn {\n\t\t\tid: slug,\n\t\t\tname: firstString(agent.name, provider) || slug,\n\t\t\tprovider,\n\t\t\tcommand: firstString(agent.command, PROVIDER_COMMANDS[provider]),\n\t\t\tcwd: resolveCwd(ctx, agent.cwd || cwd),\n\t\t\t// tools already baked into command by normalizeAgents\n\t\t\tdoneMarker,\n\t\t\tblockedMarker,\n\t\t\tpromptPath: path.join(jobDir, `${slug}.prompt.md`),\n\t\t\tlogPath: path.join(jobDir, `${slug}.log`),\n\t\t\tresultPath: path.join(jobDir, `${slug}.result.json`),\n\t\t};\n\t});\n\tconst job: FireTaskPlan = {\n\t\tid,\n\t\tcreatedAt: new Date().toISOString(),\n\t\tparentSessionFile: ctx.sessionManager.getSessionFile(),\n\t\tworkspaceName,\n\t\tsessionName,\n\t\tcwd,\n\t\ttask,\n\t\tteamTemplate: params.teamTemplate,\n\t\tdeadlineSeconds: clampInt(\n\t\t\tparams.deadlineSeconds,\n\t\t\tdefaults.deadlineSeconds || DEFAULT_DEADLINE_SECONDS,\n\t\t\t5,\n\t\t\tMAX_DEADLINE_SECONDS,\n\t\t),\n\t\tjobDir,\n\t\tjobPath: path.join(jobDir, \"job.json\"),\n\t\tvarsPath: path.join(jobDir, \"variables.json\"),\n\t\twatcherPath: path.join(jobDir, \"pane-watcher.sh\"),\n\t\tagents,\n\t\tlaunchCommands: [],\n\t};\n\tjob.launchCommands = agents.map(\n\t\t(agent) =>\n\t\t\t`${agent.command || defaultProviderInvocation(agent.provider)} then inject ${path.basename(agent.promptPath)}`,\n\t);\n\treturn job;\n}\nfunction archiveExistingJobDir(jobDir: string): string {\n\tconst root = archiveRoot();\n\tensureDir(root);\n\tconst target = path.join(root, `${path.basename(jobDir)}-${new Date().toISOString().replace(/[:.]/g, \"-\")}`);\n\tfs.renameSync(jobDir, target);\n\treturn target;\n}\nfunction prepareJobDirForLaunch(job: FireTaskPlan, force?: boolean): string | undefined {\n\tif (!fs.existsSync(job.jobDir)) return undefined;\n\tif (!force)\n\t\tthrow new Error(\n\t\t\t`tmux job already exists: ${job.id}. Use a new jobId, or pass force:true to archive the old job before launching.`,\n\t\t);\n\treturn archiveExistingJobDir(job.jobDir);\n}\nfunction writeFireTaskFiles(job: FireTaskPlan): void {\n\tensureDir(job.jobDir);\n\tif (!fs.existsSync(job.varsPath))\n\t\tfs.writeFileSync(job.varsPath, `${JSON.stringify({ updatedAt: null, variables: {} }, null, 2)}\\n`, {\n\t\t\tmode: 0o600,\n\t\t});\n\tfor (const agent of job.agents) {\n\t\tfs.writeFileSync(\n\t\t\tagent.promptPath,\n\t\t\t`${managedPrompt(job.task, job.id, agent, agent.doneMarker, agent.blockedMarker, job.varsPath)}\\n`,\n\t\t\t{ mode: 0o600 },\n\t\t);\n\t\tfs.writeFileSync(\n\t\t\tagent.logPath,\n\t\t\t`[tmux-agent-manager] waiting for captured pane output\\njob=${job.id} agent=${agent.name} pane=${agent.paneId || \"pending\"} command=${agent.command || defaultProviderInvocation(agent.provider)}\\n`,\n\t\t\t{ mode: 0o600 },\n\t\t);\n\t}\n\tfs.writeFileSync(job.watcherPath, makePaneWatcherScript(job), { mode: 0o700 });\n\tfs.chmodSync(job.watcherPath, 0o700);\n\tfs.writeFileSync(\n\t\tjob.jobPath,\n\t\t`${JSON.stringify({ ...job, agents: job.agents.map((agent) => ({ ...agent, result: null })) }, null, 2)}\\n`,\n\t\t{ mode: 0o600 },\n\t);\n}\nfunction startPaneWatchers(job: FireTaskPlan): Array<{ agentId: string; paneId: string }> {\n\tconst started: Array<{ agentId: string; paneId: string }> = [];\n\tfor (const agent of job.agents) {\n\t\tif (!agent.paneId) throw new Error(`Missing pane id for tmux agent ${agent.name}`);\n\t\tconst command = `sh ${quoteShell(job.watcherPath)} ${quoteShell(agent.id)}`;\n\t\tconst result = runTmux([\"pipe-pane\", \"-O\", \"-t\", agent.paneId, command]);\n\t\tif (!result.ok) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to arm completion watcher for ${agent.name}: ${result.error || result.stderr || result.stdout}`,\n\t\t\t);\n\t\t}\n\t\tstarted.push({ agentId: agent.id, paneId: agent.paneId });\n\t}\n\treturn started;\n}\nfunction targetDisplayName(agent: AgentSpec, index: number): string {\n\treturn firstString(agent.name, agent.provider, `agent-${index + 1}`) || `agent-${index + 1}`;\n}\nfunction tmuxSessionExists(name: string): boolean {\n\treturn runTmux([\"has-session\", \"-t\", name], 2_000).ok;\n}\nfunction sendCommandToPane(paneId: string, command: string): void {\n\trunTmux([\"send-keys\", \"-t\", paneId, \"-l\", command]);\n\trunTmux([\"send-keys\", \"-t\", paneId, \"Enter\"]);\n}\nfunction launchTmuxSession(\n\tsessionName: string,\n\tcwd: string,\n\tpanes: Array<{ title: string; cwd: string; command: string }>,\n): { runs: RunResult[]; paneIds: string[] } {\n\tif (tmuxSessionExists(sessionName))\n\t\tthrow new Error(\n\t\t\t`tmux session already exists: ${sessionName}. Use stop_session/stop_job first or choose a different workspaceName.`,\n\t\t);\n\tconst runs: RunResult[] = [];\n\tconst paneIds: string[] = [];\n\tconst first = panes[0];\n\tconst create = runTmux(\n\t\t[\"new-session\", \"-d\", \"-P\", \"-F\", \"#{pane_id}\", \"-s\", sessionName, \"-n\", \"agents\", \"-c\", first.cwd || cwd],\n\t\t5_000,\n\t);\n\truns.push(create);\n\tif (!create.ok)\n\t\tthrow new Error(`tmux new-session failed: ${create.error || create.stderr || `exit ${create.status}`}`);\n\tconst firstPane = create.stdout.trim();\n\tpaneIds.push(firstPane);\n\tsendCommandToPane(firstPane, first.command);\n\tfor (const pane of panes.slice(1)) {\n\t\tconst split = runTmux(\n\t\t\t[\"split-window\", \"-d\", \"-P\", \"-F\", \"#{pane_id}\", \"-t\", `${sessionName}:0`, \"-c\", pane.cwd || cwd],\n\t\t\t5_000,\n\t\t);\n\t\truns.push(split);\n\t\tif (!split.ok)\n\t\t\tthrow new Error(`tmux split-window failed: ${split.error || split.stderr || `exit ${split.status}`}`);\n\t\tconst paneId = split.stdout.trim();\n\t\tpaneIds.push(paneId);\n\t\tsendCommandToPane(paneId, pane.command);\n\t}\n\truns.push(runTmux([\"select-layout\", \"-t\", `${sessionName}:0`, \"tiled\"], 3_000));\n\treturn { runs, paneIds };\n}\nfunction injectPromptToPane(paneId: string, prompt: string, provider: Provider): void {\n\tconst text = interactivePromptText(prompt);\n\tif (provider === \"claude\") {\n\t\tconst bufferName = `pi-tmux-${crypto.randomBytes(4).toString(\"hex\")}`;\n\t\trunTmux([\"set-buffer\", \"-b\", bufferName, text], 10_000);\n\t\trunTmux([\"paste-buffer\", \"-b\", bufferName, \"-t\", paneId], 10_000);\n\t\trunTmux([\"send-keys\", \"-t\", paneId, \"Enter\"], 3_000);\n\t\trunTmux([\"delete-buffer\", \"-b\", bufferName], 3_000);\n\t\treturn;\n\t}\n\trunTmux([\"send-keys\", \"-t\", paneId, \"-l\", text], 10_000);\n\trunTmux([\"send-keys\", \"-t\", paneId, provider === \"agy\" ? \"C-m\" : \"Enter\"], 3_000);\n}\nfunction stopTmuxSession(\n\tsessionName: string,\n\tdryRun: boolean,\n\tconfirm?: string,\n): { text: string; run?: RunResult; existed: boolean } {\n\tif (!sessionName) throw new Error(\"session name required\");\n\tconst existed = tmuxSessionExists(sessionName);\n\tif (!existed) return { text: `tmux session not running: ${sessionName}`, existed: false };\n\tif (dryRun) return { text: `DRY RUN would stop tmux session: ${sessionName}`, existed: true };\n\tif (confirm !== \"yes-tmux-stop\") throw new Error(\"real stop requires confirm=yes-tmux-stop\");\n\tconst run = runTmux([\"kill-session\", \"-t\", sessionName], 5_000);\n\tif (!run.ok) throw new Error(`tmux kill-session failed: ${run.error || run.stderr || `exit ${run.status}`}`);\n\treturn { text: `Stopped tmux session: ${sessionName}`, run, existed: true };\n}\nfunction isAlreadyExistsError(error: unknown): boolean {\n\treturn typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"EEXIST\";\n}\nfunction markStopRequested(job: FireTaskPlan): void {\n\tfor (const agent of job.agents) {\n\t\tif (fs.existsSync(agent.resultPath)) continue;\n\t\ttry {\n\t\t\tfs.writeFileSync(`${agent.resultPath}.stop-requested`, `${new Date().toISOString()}\\n`, {\n\t\t\t\tencoding: \"utf8\",\n\t\t\t\tmode: 0o600,\n\t\t\t\tflag: \"wx\",\n\t\t\t});\n\t\t} catch (error: unknown) {\n\t\t\tif (!isAlreadyExistsError(error)) throw error;\n\t\t}\n\t}\n}\nfunction clearStopRequested(job: FireTaskPlan): void {\n\tfor (const agent of job.agents) fs.rmSync(`${agent.resultPath}.stop-requested`, { force: true });\n}\nfunction persistStoppedResults(job: FireTaskPlan): void {\n\tfor (const agent of job.agents) {\n\t\tif (!fs.existsSync(agent.resultPath)) {\n\t\t\tconst result = {\n\t\t\t\tjobId: job.id,\n\t\t\t\tagentId: agent.id,\n\t\t\t\tagentName: agent.name,\n\t\t\t\tstatus: \"stopped\",\n\t\t\t\texitCode: null,\n\t\t\t\tlogPath: agent.logPath,\n\t\t\t\tpaneId: agent.paneId || null,\n\t\t\t\tfinishedAt: new Date().toISOString(),\n\t\t\t\tnotifiedBy: \"stop-action-event\",\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tfs.writeFileSync(agent.resultPath, `${JSON.stringify(result, null, 2)}\\n`, {\n\t\t\t\t\tencoding: \"utf8\",\n\t\t\t\t\tmode: 0o600,\n\t\t\t\t\tflag: \"wx\",\n\t\t\t\t});\n\t\t\t} catch (error: unknown) {\n\t\t\t\tif (!isAlreadyExistsError(error)) throw error;\n\t\t\t}\n\t\t}\n\t\tfs.rmSync(`${agent.resultPath}.stop-requested`, { force: true });\n\t}\n}\nfunction stopTmuxSessionWithJobSignals(\n\tsessionName: string,\n\tjobs: FireTaskPlan[],\n\tdryRun: boolean,\n\tconfirm?: string,\n): { text: string; run?: RunResult; existed: boolean } {\n\tif (!dryRun && confirm !== \"yes-tmux-stop\") throw new Error(\"real stop requires confirm=yes-tmux-stop\");\n\tif (!dryRun) for (const job of jobs) markStopRequested(job);\n\ttry {\n\t\tconst result = stopTmuxSession(sessionName, dryRun, confirm);\n\t\tif (!dryRun) for (const job of jobs) persistStoppedResults(job);\n\t\treturn result;\n\t} catch (error: unknown) {\n\t\tfor (const job of jobs) clearStopRequested(job);\n\t\tthrow error;\n\t}\n}\nfunction formatWorkspacePreview(plan: ReturnType<typeof buildWorkspacePlan>): string {\n\treturn [\n\t\t`Session: ${plan.sessionName}`,\n\t\t`Cwd: ${plan.cwd}`,\n\t\t\"Panes:\",\n\t\t...plan.agents.map((agent, index) => `- ${targetDisplayName(agent, index)}: ${agent.command} (cwd ${agent.cwd})`),\n\t].join(\"\\n\");\n}\nfunction formatFireTaskPreview(job: FireTaskPlan): string {\n\treturn [\n\t\t`Job: ${job.id}`,\n\t\t`Session: ${job.sessionName}`,\n\t\t`Cwd: ${job.cwd}`,\n\t\t`State: ${job.jobPath}`,\n\t\t`Deadline: ${job.deadlineSeconds}s enforced by each event-driven pane watcher`,\n\t\t\"Workers:\",\n\t\t...job.agents.map((agent) => `- ${agent.name}: ${agent.command || defaultProviderInvocation(agent.provider)}`),\n\t].join(\"\\n\");\n}\nfunction loadJob(id: string): FireTaskPlan {\n\tconst jobPath = path.join(jobsRoot(), id, \"job.json\");\n\tif (!fs.existsSync(jobPath)) throw new Error(`tmux job not found: ${id}`);\n\tconst parsed = JSON.parse(fs.readFileSync(jobPath, \"utf8\")) as FireTaskPlan;\n\tif (!Array.isArray(parsed.agents)) throw new Error(`tmux job has invalid agents: ${id}`);\n\tfor (const agent of parsed.agents) {\n\t\ttry {\n\t\t\tagent.result = JSON.parse(fs.readFileSync(agent.resultPath, \"utf8\")) as AgentResult;\n\t\t} catch {\n\t\t\tdelete agent.result;\n\t\t}\n\t}\n\ttry {\n\t\tparsed.variables = readVariables(parsed.varsPath);\n\t} catch {\n\t\tparsed.variables = { updatedAt: null, variables: {} };\n\t}\n\treturn parsed;\n}\nfunction loadJobPlans(): FireTaskPlan[] {\n\ttry {\n\t\treturn fs\n\t\t\t.readdirSync(jobsRoot(), { withFileTypes: true })\n\t\t\t.filter((entry) => entry.isDirectory())\n\t\t\t.flatMap((entry) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn [loadJob(entry.name)];\n\t\t\t\t} catch {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t});\n\t} catch {\n\t\treturn [];\n\t}\n}\nfunction listJobs(): unknown[] {\n\ttry {\n\t\treturn fs\n\t\t\t.readdirSync(jobsRoot(), { withFileTypes: true })\n\t\t\t.filter((d) => d.isDirectory())\n\t\t\t.map((d) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst job = loadJob(d.name);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: job.id,\n\t\t\t\t\t\tworkspaceName: job.workspaceName,\n\t\t\t\t\t\tsessionName: job.sessionName,\n\t\t\t\t\t\tcreatedAt: job.createdAt,\n\t\t\t\t\t\tagents: job.agents.map((agent) => ({ name: agent.name, status: agent.result?.status || \"pending\" })),\n\t\t\t\t\t};\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\treturn { id: d.name, error: errorMessage(error) };\n\t\t\t\t}\n\t\t\t});\n\t} catch {\n\t\treturn [];\n\t}\n}\nfunction readVariables(varsPath: string): { updatedAt: string | null; variables: Record<string, unknown> } {\n\ttry {\n\t\treturn JSON.parse(fs.readFileSync(varsPath, \"utf8\"));\n\t} catch {\n\t\treturn { updatedAt: null, variables: {} };\n\t}\n}\nfunction setVariable(jobId: string, name: string, value: string) {\n\tif (!/^[a-zA-Z0-9_.:-]{1,80}$/.test(name))\n\t\tthrow new Error(\"variableName must be 1-80 chars: letters, numbers, _, ., :, or -\");\n\tconst job = loadJob(jobId);\n\tconst current = readVariables(job.varsPath);\n\tcurrent.variables[name] = value;\n\tcurrent.updatedAt = new Date().toISOString();\n\tfs.writeFileSync(job.varsPath, `${JSON.stringify(current, null, 2)}\\n`, { mode: 0o600 });\n\treturn { varsPath: job.varsPath, variables: current.variables, updatedAt: current.updatedAt };\n}\nasync function executeTool(\n\t_toolCallId: string,\n\tparams: Params,\n\t_signal: AbortSignal | undefined,\n\t_onUpdate: unknown,\n\tctx: ExtensionContext,\n): Promise<AgentToolResult<unknown>> {\n\tconst action = params.action || \"status\";\n\tconst detection = detectTmux();\n\tif (action === \"status\")\n\t\treturn { content: [{ type: \"text\", text: formatDetection(detection) }], details: { action, detection } };\n\tif (action === \"setup_help\")\n\t\treturn { content: [{ type: \"text\", text: setupHelp(detection) }], details: { action, detection } };\n\tif (action === \"guard\") {\n\t\tconst guard = await guardTmux(ctx, detection, \"tmux-managed interactive subagent/provider orchestration\");\n\t\treturn { content: [{ type: \"text\", text: guard.text }], details: { action, detection, guard } };\n\t}\n\tif (action === \"list_jobs\")\n\t\treturn { content: [{ type: \"text\", text: JSON.stringify(listJobs(), null, 2) }], details: { action } };\n\tif (action === \"list_templates\") {\n\t\tconst summary = templateSummary();\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: summary.text }],\n\t\t\tdetails: { action, templates: summary.templates, errors: summary.errors, templateDirs: templateDirs() },\n\t\t};\n\t}\n\tif (action === \"show_template\") {\n\t\tconst template = requireTeamTemplate(params.teamTemplate || params.title);\n\t\treturn { content: [{ type: \"text\", text: formatTemplate(template) }], details: { action, template } };\n\t}\n\tif (action === \"job_status\") {\n\t\tif (!params.jobId) throw new Error(\"job_status requires jobId\");\n\t\tconst job = loadJob(params.jobId);\n\t\treturn { content: [{ type: \"text\", text: JSON.stringify(job, null, 2) }], details: { action, job } };\n\t}\n\tif (action === \"list_variables\") {\n\t\tif (!params.jobId) throw new Error(\"list_variables requires jobId\");\n\t\tconst job = loadJob(params.jobId);\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(job.variables || { variables: {} }, null, 2) }],\n\t\t\tdetails: { action, jobId: params.jobId, variables: job.variables },\n\t\t};\n\t}\n\tif (action === \"set_variable\") {\n\t\tif (!params.jobId) throw new Error(\"set_variable requires jobId\");\n\t\tif (!params.variableName) throw new Error(\"set_variable requires variableName\");\n\t\tconst value = firstString(params.variableValue, params.body, params.status, \"\") || \"\";\n\t\tconst result = setVariable(params.jobId, params.variableName, value);\n\t\treturn {\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: `Set tmux job variable ${params.variableName} for ${params.jobId}. Workers read ${result.varsPath} only at the named decision point.`,\n\t\t\t\t},\n\t\t\t],\n\t\t\tdetails: { action, jobId: params.jobId, variableName: params.variableName, result },\n\t\t};\n\t}\n\tconst guard = await guardTmux(ctx, detection, `tmux ${action}`);\n\tif (!guard.allowed)\n\t\treturn { content: [{ type: \"text\", text: guard.text }], details: { action, detection, guard, skipped: true } };\n\tif (action === \"stop_job\") {\n\t\tif (!params.jobId) throw new Error(\"stop_job requires jobId\");\n\t\tconst job = loadJob(params.jobId);\n\t\tconst result = stopTmuxSessionWithJobSignals(job.sessionName, [job], params.dryRun !== false, params.confirm);\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: result.text }],\n\t\t\tdetails: {\n\t\t\t\taction,\n\t\t\t\tdetection,\n\t\t\t\tjobId: params.jobId,\n\t\t\t\tsessionName: job.sessionName,\n\t\t\t\tdryRun: params.dryRun !== false,\n\t\t\t\tresult,\n\t\t\t},\n\t\t};\n\t}\n\tif (action === \"stop_session\") {\n\t\tconst sessionName = firstString(params.workspaceName, params.title);\n\t\tif (!sessionName) throw new Error(\"stop_session requires workspaceName or title with the tmux session name\");\n\t\tconst jobs = loadJobPlans().filter((job) => job.sessionName === sessionName);\n\t\tconst result = stopTmuxSessionWithJobSignals(sessionName, jobs, params.dryRun !== false, params.confirm);\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: result.text }],\n\t\t\tdetails: { action, detection, sessionName, dryRun: params.dryRun !== false, result },\n\t\t};\n\t}\n\tif (action === \"workspace_plan\" || action === \"launch_workspace\") {\n\t\tconst plan = buildWorkspacePlan(ctx, params);\n\t\tconst preview = formatWorkspacePreview(plan);\n\t\tif (action === \"workspace_plan\" || params.dryRun === true)\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: `DRY RUN tmux workspace plan\\n${preview}` }],\n\t\t\t\tdetails: { action, detection, dryRun: true, plan },\n\t\t\t};\n\t\tconst panes = plan.agents.map((agent, index) => ({\n\t\t\ttitle: targetDisplayName(agent, index),\n\t\t\tcwd: agent.cwd || plan.cwd,\n\t\t\tcommand: agent.command || PROVIDER_COMMANDS[agent.provider || \"custom\"],\n\t\t}));\n\t\tconst launch = launchTmuxSession(plan.sessionName, plan.cwd, panes);\n\t\treturn {\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: `Launched tmux session '${plan.sessionName}'. Attach with: tmux attach -t ${plan.sessionName}`,\n\t\t\t\t},\n\t\t\t],\n\t\t\tdetails: { action, detection, runs: launch.runs, paneIds: launch.paneIds, plan },\n\t\t};\n\t}\n\tif (action === \"fire_task\") {\n\t\tconst job = buildFireTaskPlan(ctx, params);\n\t\tif (params.dryRun === true)\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: `DRY RUN tmux interactive task\\n${formatFireTaskPreview(job)}` }],\n\t\t\t\tdetails: { action, detection, dryRun: true, job },\n\t\t\t};\n\t\tif (tmuxSessionExists(job.sessionName))\n\t\t\tthrow new Error(\n\t\t\t\t`tmux session already exists: ${job.sessionName}. Use stop_job/stop_session first or choose a different workspaceName.`,\n\t\t\t);\n\t\tconst archivedJobDir = prepareJobDirForLaunch(job, params.force);\n\t\tconst panes = job.agents.map((agent) => ({\n\t\t\ttitle: agent.name,\n\t\t\tcwd: agent.cwd,\n\t\t\tcommand: agent.command || defaultProviderInvocation(agent.provider),\n\t\t}));\n\t\tconst launch = launchTmuxSession(job.sessionName, job.cwd, panes);\n\t\tjob.agents.forEach((agent, index) => {\n\t\t\tagent.paneId = launch.paneIds[index];\n\t\t});\n\t\twriteFireTaskFiles(job);\n\t\tconst watcherPanes = startPaneWatchers(job);\n\t\tfor (const agent of job.agents) {\n\t\t\tif (!agent.paneId) continue;\n\t\t\tinjectPromptToPane(agent.paneId, fs.readFileSync(agent.promptPath, \"utf8\"), agent.provider);\n\t\t}\n\t\treturn {\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t`Launched tmux interactive fire-and-forget job ${job.id}.`,\n\t\t\t\t\t\t`Session: ${job.sessionName}`,\n\t\t\t\t\t\t`Attach: tmux attach -t ${job.sessionName}`,\n\t\t\t\t\t\t`Job state: ${job.jobPath}`,\n\t\t\t\t\t\tarchivedJobDir ? `Archived previous job dir: ${archivedJobDir}` : undefined,\n\t\t\t\t\t\t\"Completion: event-driven pane output watchers armed (no polling).\",\n\t\t\t\t\t]\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.join(\"\\n\"),\n\t\t\t\t},\n\t\t\t],\n\t\t\tdetails: { action, detection, job, runs: launch.runs, paneIds: launch.paneIds, watcherPanes, archivedJobDir },\n\t\t};\n\t}\n\tif (action === \"notify\") {\n\t\tconst title = firstString(params.title, \"Pi\") || \"Pi\";\n\t\tconst body = firstString(params.body, \"Pi needs attention\") || \"Pi needs attention\";\n\t\tconst target = firstString(params.workspaceName, detection.currentSession, detection.sessions[0]);\n\t\tif (!target) throw new Error(\"notify requires an active tmux session or workspaceName target\");\n\t\tconst run = runTmux([\"display-message\", \"-t\", target, `${title}: ${body}`], 3_000);\n\t\tif (!run.ok) throw new Error(`tmux display-message failed: ${run.error || run.stderr || `exit ${run.status}`}`);\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `Sent tmux display-message to ${target}: ${title}` }],\n\t\t\tdetails: { action, detection, run },\n\t\t};\n\t}\n\tif (action === \"set_status\") {\n\t\tconst key = safeStatusKey(params.statusKey);\n\t\tconst value = firstString(params.status, params.body, \"\") || \"\";\n\t\tconst target = firstString(params.workspaceName, detection.currentSession, detection.sessions[0]);\n\t\tconst args = target\n\t\t\t? [\"set-option\", \"-t\", target, `@pi_${key}`, value]\n\t\t\t: [\"set-option\", \"-g\", `@pi_${key}`, value];\n\t\tconst run = runTmux(args, 3_000);\n\t\tif (!run.ok) throw new Error(`tmux set-option failed: ${run.error || run.stderr || `exit ${run.status}`}`);\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `Set tmux user option @pi_${key}=${value}` }],\n\t\t\tdetails: { action, detection, run },\n\t\t};\n\t}\n\tif (action === \"clear_status\") {\n\t\tconst key = safeStatusKey(params.statusKey);\n\t\tconst target = firstString(params.workspaceName, detection.currentSession, detection.sessions[0]);\n\t\tconst args = target ? [\"set-option\", \"-u\", \"-t\", target, `@pi_${key}`] : [\"set-option\", \"-gu\", `@pi_${key}`];\n\t\tconst run = runTmux(args, 3_000);\n\t\tif (!run.ok) throw new Error(`tmux clear status failed: ${run.error || run.stderr || `exit ${run.status}`}`);\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `Cleared tmux user option @pi_${key}` }],\n\t\t\tdetails: { action, detection, run },\n\t\t};\n\t}\n\tthrow new Error(`unsupported action: ${action}`);\n}\n\nfunction isFireTaskTerminal(job: FireTaskPlan): boolean {\n\treturn job.agents.length > 0 && job.agents.every((agent) => agent.result !== undefined);\n}\n\nfunction readBoundedLogTail(filePath: string, maxBytes = 2048): string {\n\ttry {\n\t\tconst size = fs.statSync(filePath).size;\n\t\tconst length = Math.min(size, maxBytes);\n\t\tconst buffer = Buffer.alloc(length);\n\t\tconst descriptor = fs.openSync(filePath, \"r\");\n\t\ttry {\n\t\t\tfs.readSync(descriptor, buffer, 0, length, Math.max(0, size - length));\n\t\t} finally {\n\t\t\tfs.closeSync(descriptor);\n\t\t}\n\t\treturn buffer.toString(\"utf8\").replace(/<(?=\\/?untrusted_content\\b)/gi, \"<\");\n\t} catch {\n\t\treturn \"(no captured output)\";\n\t}\n}\n\nfunction formatFireTaskHandoff(job: FireTaskPlan): string {\n\tconst included = job.agents.slice(0, 4);\n\treturn [\n\t\t`tmux background task terminal handoff: ${job.id}`,\n\t\t`session: ${job.sessionName}`,\n\t\t...included.flatMap((agent) => [\n\t\t\t`- ${agent.name}: ${agent.result?.status ?? \"unknown\"}`,\n\t\t\t`<untrusted_content source=\"tmux_agent:${job.id}:${agent.id}\">`,\n\t\t\treadBoundedLogTail(agent.logPath),\n\t\t\t\"</untrusted_content>\",\n\t\t]),\n\t\t...(job.agents.length > included.length\n\t\t\t? [`- ${job.agents.length - included.length} additional agent handoff(s) omitted.`]\n\t\t\t: []),\n\t\t\"This event woke the parent; do not poll. Continue safe scoped work from the bounded handoff and inspect terminal artifacts only if needed for a material claim.\",\n\t].join(\"\\n\");\n}\n\nfunction markFireTaskNotified(job: FireTaskPlan): void {\n\tconst current = JSON.parse(fs.readFileSync(job.jobPath, \"utf8\")) as FireTaskPlan;\n\tcurrent.notifiedAt = new Date().toISOString();\n\tconst temporaryPath = `${job.jobPath}.tmp-${process.pid}-${Date.now()}`;\n\tfs.writeFileSync(temporaryPath, `${JSON.stringify(current, null, 2)}\\n`, { encoding: \"utf8\", mode: 0o600 });\n\tfs.renameSync(temporaryPath, job.jobPath);\n\tjob.notifiedAt = current.notifiedAt;\n}\n\nexport default function tmuxAgentManagerExtension(pi: ExtensionAPI) {\n\tlet handoffContext: ExtensionContext | undefined;\n\tlet handoffTail = Promise.resolve();\n\tconst jobWatchers = new Map<string, fs.FSWatcher>();\n\n\tconst closeJobWatchers = () => {\n\t\tfor (const watcher of jobWatchers.values()) watcher.close();\n\t\tjobWatchers.clear();\n\t};\n\n\tconst refreshJobHandoffs = async (ctx: ExtensionContext): Promise<void> => {\n\t\tconst sessionFile = ctx.sessionManager.getSessionFile();\n\t\tconst jobs = loadJobPlans().filter((job) => !job.parentSessionFile || job.parentSessionFile === sessionFile);\n\t\tfor (const job of jobs) {\n\t\t\tif (!isFireTaskTerminal(job) || job.notifiedAt) continue;\n\t\t\tpi.sendMessage(\n\t\t\t\t{\n\t\t\t\t\tcustomType: \"tmux-background-completion\",\n\t\t\t\t\tcontent: formatFireTaskHandoff(job),\n\t\t\t\t\tdisplay: true,\n\t\t\t\t\tdetails: {\n\t\t\t\t\t\tjobId: job.id,\n\t\t\t\t\t\tsessionName: job.sessionName,\n\t\t\t\t\t\tagents: job.agents.map((agent) => ({ id: agent.id, name: agent.name, status: agent.result?.status })),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ triggerTurn: true, deliverAs: \"followUp\" },\n\t\t\t);\n\t\t\tmarkFireTaskNotified(job);\n\t\t\tif (ctx.hasUI) ctx.ui.notify(`tmux background task ${job.id} completed.`, \"info\");\n\t\t}\n\n\t\tconst activeIds = new Set(jobs.filter((job) => !isFireTaskTerminal(job)).map((job) => job.id));\n\t\tfor (const [jobId, watcher] of jobWatchers) {\n\t\t\tif (activeIds.has(jobId)) continue;\n\t\t\twatcher.close();\n\t\t\tjobWatchers.delete(jobId);\n\t\t}\n\t\tfor (const job of jobs) {\n\t\t\tif (isFireTaskTerminal(job) || jobWatchers.has(job.id)) continue;\n\t\t\ttry {\n\t\t\t\tconst watcher = fs.watch(job.jobDir, { persistent: false }, (_event, fileName) => {\n\t\t\t\t\tif (fileName && !String(fileName).endsWith(\".result.json\") && String(fileName) !== \"job.json\") return;\n\t\t\t\t\tif (handoffContext) void queueJobHandoffRefresh(handoffContext);\n\t\t\t\t});\n\t\t\t\twatcher.on(\"error\", (error) => {\n\t\t\t\t\twatcher.close();\n\t\t\t\t\tjobWatchers.delete(job.id);\n\t\t\t\t\tif (ctx.hasUI) ctx.ui.notify(`tmux completion signal failed for ${job.id}: ${error.message}`, \"warning\");\n\t\t\t\t});\n\t\t\t\tjobWatchers.set(job.id, watcher);\n\t\t\t} catch (error: unknown) {\n\t\t\t\tif (ctx.hasUI)\n\t\t\t\t\tctx.ui.notify(`tmux completion signal failed for ${job.id}: ${errorMessage(error)}`, \"warning\");\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction queueJobHandoffRefresh(ctx: ExtensionContext): Promise<void> {\n\t\tconst refresh = handoffTail.then(() => refreshJobHandoffs(ctx));\n\t\tconst guarded = refresh.catch((error: unknown) => {\n\t\t\tif (ctx.hasUI) {\n\t\t\t\tctx.ui.notify(\n\t\t\t\t\t`tmux terminal handoff failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t\"warning\",\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t\thandoffTail = guarded;\n\t\treturn guarded;\n\t}\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\thandoffContext = ctx;\n\t\tcloseJobWatchers();\n\t\tawait queueJobHandoffRefresh(ctx);\n\t});\n\tpi.on(\"session_shutdown\", async () => {\n\t\thandoffContext = undefined;\n\t\tcloseJobWatchers();\n\t\thandoffTail = Promise.resolve();\n\t});\n\n\tpi.registerTool({\n\t\tname: \"tmux_agent_manager\",\n\t\tlabel: \"tmux Agent Manager\",\n\t\tdescription:\n\t\t\t\"tmux-exclusive interactive agent/workspace manager for Windows/Linux/macOS environments where tmux is on PATH. Opens real provider CLIs in panes, injects prompts, captures output, and replaces cmux outside iOS/macOS cmux use.\",\n\t\tpromptSnippet:\n\t\t\t\"Use tmux to launch managed interactive agent/provider panes with prompt injection, captured output, completion markers, shared variables, and final notifications.\",\n\t\tpromptGuidelines: [\n\t\t\t\"Use tmux_agent_manager for Windows/Linux tmux-managed workers. Do not use cmux on Windows/Linux; cmux is macOS-only and manual-disabled there.\",\n\t\t\t\"Prefer action=fire_task for interactive worker batches. It returns after event watchers and prompts are armed; do not wait, poll, or peek for completion.\",\n\t\t\t\"Use action=list_templates/show_template before assembling repeated teams; pass teamTemplate when a built-in team fits.\",\n\t\t\t\"Use action=workspace_plan before launch_workspace when designing a pane layout.\",\n\t\t\t\"Use stop_job/stop_session dry-run first, then confirm=yes-tmux-stop for real cleanup.\",\n\t\t\t\"Do not put secrets in task text or command strings; prompts, commands, and logs persist under ~/.pi/agent/work/background/tmux-agent-manager/state/jobs.\",\n\t\t\t\"tmux display/status actions are metadata only; validate worker result/log files before claiming task completion.\",\n\t\t],\n\t\tparameters: Type.Object({\n\t\t\taction: Type.Optional(\n\t\t\t\tType.Union(\n\t\t\t\t\t[\n\t\t\t\t\t\tType.Literal(\"status\"),\n\t\t\t\t\t\tType.Literal(\"setup_help\"),\n\t\t\t\t\t\tType.Literal(\"guard\"),\n\t\t\t\t\t\tType.Literal(\"notify\"),\n\t\t\t\t\t\tType.Literal(\"set_status\"),\n\t\t\t\t\t\tType.Literal(\"clear_status\"),\n\t\t\t\t\t\tType.Literal(\"workspace_plan\"),\n\t\t\t\t\t\tType.Literal(\"launch_workspace\"),\n\t\t\t\t\t\tType.Literal(\"fire_task\"),\n\t\t\t\t\t\tType.Literal(\"job_status\"),\n\t\t\t\t\t\tType.Literal(\"list_jobs\"),\n\t\t\t\t\t\tType.Literal(\"set_variable\"),\n\t\t\t\t\t\tType.Literal(\"list_variables\"),\n\t\t\t\t\t\tType.Literal(\"list_templates\"),\n\t\t\t\t\t\tType.Literal(\"show_template\"),\n\t\t\t\t\t\tType.Literal(\"stop_job\"),\n\t\t\t\t\t\tType.Literal(\"stop_session\"),\n\t\t\t\t\t],\n\t\t\t\t\t{\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"status, setup_help, guard, notify, set_status, clear_status, workspace_plan, launch_workspace, fire_task, job_status, list_jobs, set_variable, list_variables, list_templates, show_template, stop_job, or stop_session. Default status.\",\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t),\n\t\t\ttitle: Type.Optional(Type.String({ description: \"Notification title or workspace title context.\" })),\n\t\t\tbody: Type.Optional(\n\t\t\t\tType.String({ description: \"Notification body/status text, or fallback task text for fire_task.\" }),\n\t\t\t),\n\t\t\tsubtitle: Type.Optional(\n\t\t\t\tType.String({ description: \"Accepted for cmux parity; tmux display-message ignores subtitle.\" }),\n\t\t\t),\n\t\t\tstatusKey: Type.Optional(\n\t\t\t\tType.String({\n\t\t\t\t\tdescription: \"Status key for tmux set_status/clear_status. Stored as @pi_<key>. Default pi-agents.\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tstatus: Type.Optional(Type.String({ description: \"Status value for set_status.\" })),\n\t\t\ticon: Type.Optional(\n\t\t\t\tType.String({ description: \"Accepted for cmux parity; tmux display-message/user options ignore icon.\" }),\n\t\t\t),\n\t\t\tcolor: Type.Optional(\n\t\t\t\tType.String({ description: \"Accepted for cmux parity; tmux display-message/user options ignore color.\" }),\n\t\t\t),\n\t\t\tworkspaceName: Type.Optional(\n\t\t\t\tType.String({\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"tmux session name/title for workspace_plan/launch_workspace/fire_task, or target for notify/status.\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tcwd: Type.Optional(\n\t\t\t\tType.String({\n\t\t\t\t\tdescription: \"Working directory for planned/launched agent workspace. Defaults to current cwd.\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tteamTemplate: Type.Optional(\n\t\t\t\tType.String({\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Built-in team template name for workspace/fire_task, or target for show_template. Use list_templates first. Current templates include provider-prompt-smoke, full-provider-review, builder-validator, plus JSON templates under templates/.\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\ttask: Type.Optional(\n\t\t\t\tType.String({\n\t\t\t\t\tdescription: \"Fire-and-forget worker objective. Required for fire_task unless body is provided.\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tjobId: Type.Optional(\n\t\t\t\tType.String({\n\t\t\t\t\tdescription: \"Job id for fire_task (optional), job_status/list_variables/set_variable (required).\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tvariableName: Type.Optional(\n\t\t\t\tType.String({\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"For set_variable: named condition/decision variable workers read only at the decision point.\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tvariableValue: Type.Optional(\n\t\t\t\tType.String({ description: \"For set_variable: value to write. body/status can also supply the value.\" }),\n\t\t\t),\n\t\t\tdeadlineSeconds: Type.Optional(\n\t\t\t\tType.Number({\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"For fire_task: seconds before each event-driven pane watcher records a timeout. Default 1200.\",\n\t\t\t\t\tminimum: 5,\n\t\t\t\t\tmaximum: MAX_DEADLINE_SECONDS,\n\t\t\t\t}),\n\t\t\t),\n\t\t\tagents: Type.Optional(\n\t\t\t\tType.Array(\n\t\t\t\t\tType.Object({\n\t\t\t\t\t\tprovider: Type.Optional(\n\t\t\t\t\t\t\tType.Union([\n\t\t\t\t\t\t\t\tType.Literal(\"pi\"),\n\t\t\t\t\t\t\t\tType.Literal(\"codex\"),\n\t\t\t\t\t\t\t\tType.Literal(\"agy\"),\n\t\t\t\t\t\t\t\tType.Literal(\"claude\"),\n\t\t\t\t\t\t\t\tType.Literal(\"opencode\"),\n\t\t\t\t\t\t\t\tType.Literal(\"custom\"),\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tname: Type.Optional(Type.String({ description: \"Pane/worker name.\" })),\n\t\t\t\t\t\tcommand: Type.Optional(\n\t\t\t\t\t\t\tType.String({\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"Interactive CLI start command for this pane, e.g. claude, agy, pi, or a custom wrapper CLI. The manager injects the prompt after launch and captures pane output.\",\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcwd: Type.Optional(Type.String({ description: \"Optional per-agent cwd.\" })),\n\t\t\t\t\t}),\n\t\t\t\t\t{ description: \"Agents/providers to lay out in tmux. Default: pi, agy, codex.\" },\n\t\t\t\t),\n\t\t\t),\n\t\t\tdryRun: Type.Optional(\n\t\t\t\tType.Boolean({\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Preview only when true. Launch actions run by default; stop actions remain previews by default.\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tforce: Type.Optional(\n\t\t\t\tType.Boolean({\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"For fire_task only: archive an existing job directory with the same jobId before launch. Existing tmux sessions are still refused; stop them first.\",\n\t\t\t\t}),\n\t\t\t),\n\t\t\tconfirm: Type.Optional(\n\t\t\t\tType.String({ description: \"Required for real stop_job/stop_session: yes-tmux-stop.\" }),\n\t\t\t),\n\t\t}),\n\t\tasync execute(toolCallId, params, signal, onUpdate, ctx) {\n\t\t\tconst result = await executeTool(toolCallId, params as Params, signal, onUpdate, ctx);\n\t\t\tawait queueJobHandoffRefresh(ctx);\n\t\t\treturn result;\n\t\t},\n\t});\n\n\tpi.registerCommand(\"tmux-agents\", {\n\t\tdescription: \"Check tmux availability and show managed-agent guidance.\",\n\t\thandler: async (_args, ctx) => {\n\t\t\tconst detection = detectTmux();\n\t\t\tconst text = detection.cliAvailable\n\t\t\t\t? tmuxManagerInstructions(\"agent/provider\", detection)\n\t\t\t\t: setupHelp(detection);\n\t\t\tctx.ui.notify(text, detection.cliAvailable ? \"info\" : \"warning\");\n\t\t},\n\t});\n}\n"]}
|