@ai-devkit/agent-manager 0.36.0 → 0.38.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/dist/AgentManager.d.ts +9 -8
- package/dist/AgentManager.d.ts.map +1 -1
- package/dist/AgentManager.js +23 -4
- package/dist/AgentManager.js.map +1 -1
- package/dist/__tests__/AgentManager.test.js +151 -3
- package/dist/__tests__/AgentManager.test.js.map +1 -1
- package/dist/__tests__/adapters/IncrementalSessionRefresh.test.js +486 -0
- package/dist/__tests__/adapters/IncrementalSessionRefresh.test.js.map +1 -0
- package/dist/__tests__/adapters/adapterProcessImports.test.js +52 -0
- package/dist/__tests__/adapters/adapterProcessImports.test.js.map +1 -0
- package/dist/__tests__/adapters/adapterSnapshotCandidates.test.js +247 -0
- package/dist/__tests__/adapters/adapterSnapshotCandidates.test.js.map +1 -0
- package/dist/__tests__/capacity/anthropic.test.js +115 -0
- package/dist/__tests__/capacity/anthropic.test.js.map +1 -0
- package/dist/__tests__/capacity/boundaries.test.js +45 -0
- package/dist/__tests__/capacity/boundaries.test.js.map +1 -0
- package/dist/__tests__/capacity/claude.test.js +3 -3
- package/dist/__tests__/capacity/claude.test.js.map +1 -1
- package/dist/__tests__/capacity/codex.test.js +3 -1
- package/dist/__tests__/capacity/codex.test.js.map +1 -1
- package/dist/__tests__/capacity/openai.test.js +32 -25
- package/dist/__tests__/capacity/openai.test.js.map +1 -1
- package/dist/__tests__/capacity/wham.test.js +1 -1
- package/dist/__tests__/capacity/wham.test.js.map +1 -1
- package/dist/__tests__/capacity/zai.test.js +7 -8
- package/dist/__tests__/capacity/zai.test.js.map +1 -1
- package/dist/__tests__/harnesses/BoundedSummarySkip.test.js +568 -0
- package/dist/__tests__/harnesses/BoundedSummarySkip.test.js.map +1 -0
- package/dist/__tests__/harnesses/SessionSummaryEquivalence.test.js +1089 -0
- package/dist/__tests__/harnesses/SessionSummaryEquivalence.test.js.map +1 -0
- package/dist/__tests__/harnesses/antigravity/AntigravityCliAdapter.subprocess.test.js +143 -0
- package/dist/__tests__/harnesses/antigravity/AntigravityCliAdapter.subprocess.test.js.map +1 -0
- package/dist/__tests__/harnesses/antigravity/AntigravityCliAdapter.test.js +462 -0
- package/dist/__tests__/harnesses/antigravity/AntigravityCliAdapter.test.js.map +1 -0
- package/dist/__tests__/harnesses/builtinAdapters.test.js +33 -0
- package/dist/__tests__/harnesses/builtinAdapters.test.js.map +1 -0
- package/dist/__tests__/harnesses/claude/ClaudeAgentMapper.test.js +79 -0
- package/dist/__tests__/harnesses/claude/ClaudeAgentMapper.test.js.map +1 -0
- package/dist/__tests__/harnesses/claude/ClaudeCodeAdapter.test.js +1881 -0
- package/dist/__tests__/harnesses/claude/ClaudeCodeAdapter.test.js.map +1 -0
- package/dist/__tests__/harnesses/claude/ClaudeSessionLocator.test.js +425 -0
- package/dist/__tests__/harnesses/claude/ClaudeSessionLocator.test.js.map +1 -0
- package/dist/__tests__/harnesses/claude/ClaudeSessionParser.test.js +314 -0
- package/dist/__tests__/harnesses/claude/ClaudeSessionParser.test.js.map +1 -0
- package/dist/__tests__/harnesses/claude/durable/ClaudeCliProbe.test.js +49 -0
- package/dist/__tests__/harnesses/claude/durable/ClaudeCliProbe.test.js.map +1 -0
- package/dist/__tests__/harnesses/claude/durable/ClaudePrintAgent.integration.test.js +76 -0
- package/dist/__tests__/harnesses/claude/durable/ClaudePrintAgent.integration.test.js.map +1 -0
- package/dist/__tests__/harnesses/claude/durable/ClaudePrintAgentService.test.js +173 -0
- package/dist/__tests__/harnesses/claude/durable/ClaudePrintAgentService.test.js.map +1 -0
- package/dist/__tests__/harnesses/claude/durable/ClaudePrintRunner.test.js +181 -0
- package/dist/__tests__/harnesses/claude/durable/ClaudePrintRunner.test.js.map +1 -0
- package/dist/__tests__/harnesses/codex/CodexAdapter.test.js +685 -0
- package/dist/__tests__/harnesses/codex/CodexAdapter.test.js.map +1 -0
- package/dist/__tests__/harnesses/codex/CodexSessionLocator.test.js +463 -0
- package/dist/__tests__/harnesses/codex/CodexSessionLocator.test.js.map +1 -0
- package/dist/__tests__/harnesses/codex/CodexSessionMapping.test.js +86 -0
- package/dist/__tests__/harnesses/codex/CodexSessionMapping.test.js.map +1 -0
- package/dist/__tests__/harnesses/codex/CodexSessionParser.test.js +254 -0
- package/dist/__tests__/harnesses/codex/CodexSessionParser.test.js.map +1 -0
- package/dist/__tests__/harnesses/codex/durable/CodexCliProbe.test.js +121 -0
- package/dist/__tests__/harnesses/codex/durable/CodexCliProbe.test.js.map +1 -0
- package/dist/__tests__/harnesses/codex/durable/CodexDurableAgentRepository.test.js +84 -0
- package/dist/__tests__/harnesses/codex/durable/CodexDurableAgentRepository.test.js.map +1 -0
- package/dist/__tests__/harnesses/codex/durable/CodexPrintAgent.integration.test.js +128 -0
- package/dist/__tests__/harnesses/codex/durable/CodexPrintAgent.integration.test.js.map +1 -0
- package/dist/__tests__/harnesses/codex/durable/CodexPrintAgentService.test.js +246 -0
- package/dist/__tests__/harnesses/codex/durable/CodexPrintAgentService.test.js.map +1 -0
- package/dist/__tests__/harnesses/codex/durable/CodexPrintRunner.test.js +384 -0
- package/dist/__tests__/harnesses/codex/durable/CodexPrintRunner.test.js.map +1 -0
- package/dist/__tests__/harnesses/copilot/CopilotAdapter.test.js +659 -0
- package/dist/__tests__/harnesses/copilot/CopilotAdapter.test.js.map +1 -0
- package/dist/__tests__/harnesses/copilot/CopilotRefreshIO.test.js +290 -0
- package/dist/__tests__/harnesses/copilot/CopilotRefreshIO.test.js.map +1 -0
- package/dist/__tests__/harnesses/gemini/GeminiCliAdapter.test.js +1443 -0
- package/dist/__tests__/harnesses/gemini/GeminiCliAdapter.test.js.map +1 -0
- package/dist/__tests__/harnesses/gemini/GeminiSessionJsonl.test.js +491 -0
- package/dist/__tests__/harnesses/gemini/GeminiSessionJsonl.test.js.map +1 -0
- package/dist/__tests__/harnesses/gemini/GeminiSessionLocator.test.js +399 -0
- package/dist/__tests__/harnesses/gemini/GeminiSessionLocator.test.js.map +1 -0
- package/dist/__tests__/harnesses/grok/GrokAgentMapper.test.js +56 -0
- package/dist/__tests__/harnesses/grok/GrokAgentMapper.test.js.map +1 -0
- package/dist/__tests__/harnesses/grok/GrokCliAdapter.test.js +421 -0
- package/dist/__tests__/harnesses/grok/GrokCliAdapter.test.js.map +1 -0
- package/dist/__tests__/harnesses/grok/GrokIncrementalRefresh.test.js +167 -0
- package/dist/__tests__/harnesses/grok/GrokIncrementalRefresh.test.js.map +1 -0
- package/dist/__tests__/harnesses/grok/GrokSessionLocator.test.js +133 -0
- package/dist/__tests__/harnesses/grok/GrokSessionLocator.test.js.map +1 -0
- package/dist/__tests__/harnesses/grok/GrokSessionParser.test.js +301 -0
- package/dist/__tests__/harnesses/grok/GrokSessionParser.test.js.map +1 -0
- package/dist/__tests__/harnesses/kiro/KiroAdapter.test.js +662 -0
- package/dist/__tests__/harnesses/kiro/KiroAdapter.test.js.map +1 -0
- package/dist/__tests__/harnesses/opencode/OpenCodeAdapter.test.js +213 -0
- package/dist/__tests__/harnesses/opencode/OpenCodeAdapter.test.js.map +1 -0
- package/dist/__tests__/harnesses/opencode/OpenCodeAgentMapper.test.js +89 -0
- package/dist/__tests__/harnesses/opencode/OpenCodeAgentMapper.test.js.map +1 -0
- package/dist/__tests__/harnesses/opencode/OpenCodeSessionLocator.test.js +94 -0
- package/dist/__tests__/harnesses/opencode/OpenCodeSessionLocator.test.js.map +1 -0
- package/dist/__tests__/harnesses/opencode/OpenCodeSessionParser.test.js +147 -0
- package/dist/__tests__/harnesses/opencode/OpenCodeSessionParser.test.js.map +1 -0
- package/dist/__tests__/harnesses/pi/PiAdapter.test.js +367 -0
- package/dist/__tests__/harnesses/pi/PiAdapter.test.js.map +1 -0
- package/dist/__tests__/harnesses/pi/PiDiscoveryIO.test.js +382 -0
- package/dist/__tests__/harnesses/pi/PiDiscoveryIO.test.js.map +1 -0
- package/dist/__tests__/harnesses/pi/PiSessionParser.test.js +416 -0
- package/dist/__tests__/harnesses/pi/PiSessionParser.test.js.map +1 -0
- package/dist/__tests__/harnesses/pi/PiSessionTracker.test.js +108 -0
- package/dist/__tests__/harnesses/pi/PiSessionTracker.test.js.map +1 -0
- package/dist/__tests__/harnesses/pi/durable/PiCliProbe.test.js +70 -0
- package/dist/__tests__/harnesses/pi/durable/PiCliProbe.test.js.map +1 -0
- package/dist/__tests__/harnesses/pi/durable/PiDurableAgentRepository.test.js.map +1 -0
- package/dist/__tests__/harnesses/pi/durable/PiPrintAgentService.test.js +192 -0
- package/dist/__tests__/harnesses/pi/durable/PiPrintAgentService.test.js.map +1 -0
- package/dist/__tests__/harnesses/pi/durable/PiPrintProtocol.test.js +119 -0
- package/dist/__tests__/harnesses/pi/durable/PiPrintProtocol.test.js.map +1 -0
- package/dist/__tests__/harnesses/pi/durable/PiPrintRunner.test.js +382 -0
- package/dist/__tests__/harnesses/pi/durable/PiPrintRunner.test.js.map +1 -0
- package/dist/__tests__/harnesses/pi/durable/PiStreamParser.test.js +34 -0
- package/dist/__tests__/harnesses/pi/durable/PiStreamParser.test.js.map +1 -0
- package/dist/__tests__/harnesses/readiness/AgentReadiness.test.js +342 -0
- package/dist/__tests__/harnesses/readiness/AgentReadiness.test.js.map +1 -0
- package/dist/__tests__/harnesses/runtimeProfiles.test.js +89 -0
- package/dist/__tests__/harnesses/runtimeProfiles.test.js.map +1 -0
- package/dist/__tests__/print/DurableAgent.test.js +4 -6
- package/dist/__tests__/print/DurableAgent.test.js.map +1 -1
- package/dist/__tests__/print/DurableAgentRepository.test.js +1 -12
- package/dist/__tests__/print/DurableAgentRepository.test.js.map +1 -1
- package/dist/__tests__/runtime/ManagedAgentRuntime.test.js +49 -0
- package/dist/__tests__/runtime/ManagedAgentRuntime.test.js.map +1 -1
- package/dist/__tests__/terminal/TmuxManager.test.js +1 -1
- package/dist/__tests__/terminal/TmuxManager.test.js.map +1 -1
- package/dist/__tests__/utils/IncrementalJsonlSummary.test.js +650 -0
- package/dist/__tests__/utils/IncrementalJsonlSummary.test.js.map +1 -0
- package/dist/__tests__/utils/conversationTail.bench.test.js +258 -0
- package/dist/__tests__/utils/conversationTail.bench.test.js.map +1 -0
- package/dist/__tests__/utils/conversationTailParity.test.js +588 -0
- package/dist/__tests__/utils/conversationTailParity.test.js.map +1 -0
- package/dist/__tests__/utils/jsonlTail.test.js +360 -0
- package/dist/__tests__/utils/jsonlTail.test.js.map +1 -0
- package/dist/__tests__/utils/matchingConstants.test.js +35 -0
- package/dist/__tests__/utils/matchingConstants.test.js.map +1 -0
- package/dist/__tests__/utils/process.test.js +436 -2
- package/dist/__tests__/utils/process.test.js.map +1 -1
- package/dist/adapters/AgentAdapter.d.ts +25 -6
- package/dist/adapters/AgentAdapter.d.ts.map +1 -1
- package/dist/adapters/AgentAdapter.js +12 -3
- package/dist/adapters/AgentAdapter.js.map +1 -1
- package/dist/capacity/index.d.ts +9 -19
- package/dist/capacity/index.d.ts.map +1 -1
- package/dist/capacity/index.js +11 -4
- package/dist/capacity/index.js.map +1 -1
- package/dist/capacity/providers/anthropic.d.ts +9 -0
- package/dist/capacity/providers/anthropic.d.ts.map +1 -0
- package/dist/capacity/providers/anthropic.js +153 -0
- package/dist/capacity/providers/anthropic.js.map +1 -0
- package/dist/capacity/providers/openai-platform.d.ts +14 -0
- package/dist/capacity/providers/openai-platform.d.ts.map +1 -0
- package/dist/capacity/providers/openai-platform.js +120 -0
- package/dist/capacity/providers/openai-platform.js.map +1 -0
- package/dist/capacity/providers/openai-subscription.d.ts +20 -0
- package/dist/capacity/providers/openai-subscription.d.ts.map +1 -0
- package/dist/capacity/providers/openai-subscription.js +129 -0
- package/dist/capacity/providers/openai-subscription.js.map +1 -0
- package/dist/capacity/providers/zai.d.ts +8 -0
- package/dist/capacity/providers/zai.d.ts.map +1 -0
- package/dist/capacity/providers/zai.js +158 -0
- package/dist/capacity/providers/zai.js.map +1 -0
- package/dist/capacity/sources/claude.d.ts +9 -0
- package/dist/capacity/sources/claude.d.ts.map +1 -0
- package/dist/capacity/sources/claude.js +17 -0
- package/dist/capacity/sources/claude.js.map +1 -0
- package/dist/capacity/sources/codex.d.ts +32 -0
- package/dist/capacity/sources/codex.d.ts.map +1 -0
- package/dist/capacity/sources/codex.js +227 -0
- package/dist/capacity/sources/codex.js.map +1 -0
- package/dist/capacity/sources/pi.d.ts +30 -0
- package/dist/capacity/sources/pi.d.ts.map +1 -0
- package/dist/capacity/sources/pi.js +81 -0
- package/dist/capacity/sources/pi.js.map +1 -0
- package/dist/capacity/types.d.ts +2 -0
- package/dist/capacity/types.d.ts.map +1 -1
- package/dist/capacity/types.js +1 -1
- package/dist/capacity/types.js.map +1 -1
- package/dist/harnesses/antigravity/AntigravityAgentMapper.d.ts +13 -0
- package/dist/harnesses/antigravity/AntigravityAgentMapper.d.ts.map +1 -0
- package/dist/harnesses/antigravity/AntigravityAgentMapper.js +30 -0
- package/dist/harnesses/antigravity/AntigravityAgentMapper.js.map +1 -0
- package/dist/harnesses/antigravity/AntigravityCliAdapter.d.ts +32 -0
- package/dist/harnesses/antigravity/AntigravityCliAdapter.d.ts.map +1 -0
- package/dist/harnesses/antigravity/AntigravityCliAdapter.js +97 -0
- package/dist/harnesses/antigravity/AntigravityCliAdapter.js.map +1 -0
- package/dist/harnesses/antigravity/AntigravitySessionLocator.d.ts +30 -0
- package/dist/harnesses/antigravity/AntigravitySessionLocator.d.ts.map +1 -0
- package/dist/harnesses/antigravity/AntigravitySessionLocator.js +56 -0
- package/dist/harnesses/antigravity/AntigravitySessionLocator.js.map +1 -0
- package/dist/harnesses/antigravity/AntigravitySessionParser.d.ts +75 -0
- package/dist/harnesses/antigravity/AntigravitySessionParser.d.ts.map +1 -0
- package/dist/harnesses/antigravity/AntigravitySessionParser.js +174 -0
- package/dist/harnesses/antigravity/AntigravitySessionParser.js.map +1 -0
- package/dist/harnesses/claude/ClaudeAgentMapper.d.ts.map +1 -0
- package/dist/harnesses/claude/ClaudeAgentMapper.js +36 -0
- package/dist/harnesses/claude/ClaudeAgentMapper.js.map +1 -0
- package/dist/harnesses/claude/ClaudeCodeAdapter.d.ts +30 -0
- package/dist/harnesses/claude/ClaudeCodeAdapter.d.ts.map +1 -0
- package/dist/harnesses/claude/ClaudeCodeAdapter.js +134 -0
- package/dist/harnesses/claude/ClaudeCodeAdapter.js.map +1 -0
- package/dist/harnesses/claude/ClaudeSessionLocator.d.ts.map +1 -0
- package/dist/harnesses/claude/ClaudeSessionLocator.js +260 -0
- package/dist/harnesses/claude/ClaudeSessionLocator.js.map +1 -0
- package/dist/harnesses/claude/ClaudeSessionParser.d.ts +148 -0
- package/dist/harnesses/claude/ClaudeSessionParser.d.ts.map +1 -0
- package/dist/harnesses/claude/ClaudeSessionParser.js +365 -0
- package/dist/harnesses/claude/ClaudeSessionParser.js.map +1 -0
- package/dist/harnesses/claude/credentials.d.ts +10 -0
- package/dist/harnesses/claude/credentials.d.ts.map +1 -0
- package/dist/harnesses/claude/credentials.js +112 -0
- package/dist/harnesses/claude/credentials.js.map +1 -0
- package/dist/harnesses/claude/durable/ClaudeCliProbe.d.ts.map +1 -0
- package/dist/harnesses/claude/durable/ClaudeCliProbe.js.map +1 -0
- package/dist/harnesses/claude/durable/ClaudePrintAgentService.d.ts.map +1 -0
- package/dist/harnesses/claude/durable/ClaudePrintAgentService.js.map +1 -0
- package/dist/harnesses/claude/durable/ClaudePrintRunner.d.ts.map +1 -0
- package/dist/harnesses/claude/durable/ClaudePrintRunner.js.map +1 -0
- package/dist/harnesses/claude/durable/ClaudeStreamParser.d.ts.map +1 -0
- package/dist/harnesses/claude/durable/ClaudeStreamParser.js.map +1 -0
- package/dist/harnesses/claude/readiness.d.ts +3 -0
- package/dist/harnesses/claude/readiness.d.ts.map +1 -0
- package/dist/harnesses/claude/readiness.js +63 -0
- package/dist/harnesses/claude/readiness.js.map +1 -0
- package/dist/harnesses/codex/CodexAdapter.d.ts +29 -0
- package/dist/harnesses/codex/CodexAdapter.d.ts.map +1 -0
- package/dist/harnesses/codex/CodexAdapter.js +290 -0
- package/dist/harnesses/codex/CodexAdapter.js.map +1 -0
- package/dist/harnesses/codex/CodexAgentMapper.d.ts.map +1 -0
- package/dist/harnesses/codex/CodexAgentMapper.js +28 -0
- package/dist/harnesses/codex/CodexAgentMapper.js.map +1 -0
- package/dist/harnesses/codex/CodexSessionLocator.d.ts +74 -0
- package/dist/harnesses/codex/CodexSessionLocator.d.ts.map +1 -0
- package/dist/harnesses/codex/CodexSessionLocator.js +359 -0
- package/dist/harnesses/codex/CodexSessionLocator.js.map +1 -0
- package/dist/harnesses/codex/CodexSessionMapping.d.ts.map +1 -0
- package/dist/harnesses/codex/CodexSessionMapping.js +68 -0
- package/dist/harnesses/codex/CodexSessionMapping.js.map +1 -0
- package/dist/harnesses/codex/CodexSessionParser.d.ts +89 -0
- package/dist/harnesses/codex/CodexSessionParser.d.ts.map +1 -0
- package/dist/harnesses/codex/CodexSessionParser.js +308 -0
- package/dist/harnesses/codex/CodexSessionParser.js.map +1 -0
- package/dist/harnesses/codex/credentials.d.ts +15 -0
- package/dist/harnesses/codex/credentials.d.ts.map +1 -0
- package/dist/harnesses/codex/credentials.js +58 -0
- package/dist/harnesses/codex/credentials.js.map +1 -0
- package/dist/harnesses/codex/durable/CodexCliProbe.d.ts.map +1 -0
- package/dist/harnesses/codex/durable/CodexCliProbe.js.map +1 -0
- package/dist/harnesses/codex/durable/CodexPrintAgentService.d.ts.map +1 -0
- package/dist/harnesses/codex/durable/CodexPrintAgentService.js.map +1 -0
- package/dist/harnesses/codex/durable/CodexPrintRunner.d.ts.map +1 -0
- package/dist/harnesses/codex/durable/CodexPrintRunner.js.map +1 -0
- package/dist/harnesses/codex/durable/CodexStreamParser.d.ts.map +1 -0
- package/dist/harnesses/codex/durable/CodexStreamParser.js.map +1 -0
- package/dist/harnesses/codex/readiness.d.ts +3 -0
- package/dist/harnesses/codex/readiness.d.ts.map +1 -0
- package/dist/harnesses/codex/readiness.js +60 -0
- package/dist/harnesses/codex/readiness.js.map +1 -0
- package/dist/harnesses/copilot/CopilotAdapter.d.ts +36 -0
- package/dist/harnesses/copilot/CopilotAdapter.d.ts.map +1 -0
- package/dist/harnesses/copilot/CopilotAdapter.js +128 -0
- package/dist/harnesses/copilot/CopilotAdapter.js.map +1 -0
- package/dist/harnesses/copilot/CopilotAgentMapper.d.ts.map +1 -0
- package/dist/harnesses/copilot/CopilotAgentMapper.js +30 -0
- package/dist/harnesses/copilot/CopilotAgentMapper.js.map +1 -0
- package/dist/harnesses/copilot/CopilotSessionLocator.d.ts +42 -0
- package/dist/harnesses/copilot/CopilotSessionLocator.d.ts.map +1 -0
- package/dist/harnesses/copilot/CopilotSessionLocator.js +126 -0
- package/dist/harnesses/copilot/CopilotSessionLocator.js.map +1 -0
- package/dist/harnesses/copilot/CopilotSessionParser.d.ts +62 -0
- package/dist/harnesses/copilot/CopilotSessionParser.d.ts.map +1 -0
- package/dist/harnesses/copilot/CopilotSessionParser.js +236 -0
- package/dist/harnesses/copilot/CopilotSessionParser.js.map +1 -0
- package/dist/harnesses/copilot/readiness.d.ts +3 -0
- package/dist/harnesses/copilot/readiness.d.ts.map +1 -0
- package/dist/harnesses/copilot/readiness.js +39 -0
- package/dist/harnesses/copilot/readiness.js.map +1 -0
- package/dist/harnesses/gemini/GeminiAgentMapper.d.ts.map +1 -0
- package/dist/harnesses/gemini/GeminiAgentMapper.js +30 -0
- package/dist/harnesses/gemini/GeminiAgentMapper.js.map +1 -0
- package/dist/harnesses/gemini/GeminiCliAdapter.d.ts +52 -0
- package/dist/harnesses/gemini/GeminiCliAdapter.d.ts.map +1 -0
- package/dist/harnesses/gemini/GeminiCliAdapter.js +196 -0
- package/dist/harnesses/gemini/GeminiCliAdapter.js.map +1 -0
- package/dist/harnesses/gemini/GeminiSessionLocator.d.ts +72 -0
- package/dist/harnesses/gemini/GeminiSessionLocator.d.ts.map +1 -0
- package/dist/harnesses/gemini/GeminiSessionLocator.js +300 -0
- package/dist/harnesses/gemini/GeminiSessionLocator.js.map +1 -0
- package/dist/harnesses/gemini/GeminiSessionParser.d.ts +121 -0
- package/dist/harnesses/gemini/GeminiSessionParser.d.ts.map +1 -0
- package/dist/harnesses/gemini/GeminiSessionParser.js +272 -0
- package/dist/harnesses/gemini/GeminiSessionParser.js.map +1 -0
- package/dist/harnesses/gemini/fileSignature.d.ts +8 -0
- package/dist/harnesses/gemini/fileSignature.d.ts.map +1 -0
- package/dist/harnesses/gemini/fileSignature.js +9 -0
- package/dist/harnesses/gemini/fileSignature.js.map +1 -0
- package/dist/harnesses/grok/GrokAgentMapper.d.ts.map +1 -0
- package/dist/harnesses/grok/GrokAgentMapper.js +30 -0
- package/dist/harnesses/grok/GrokAgentMapper.js.map +1 -0
- package/dist/harnesses/grok/GrokCliAdapter.d.ts +36 -0
- package/dist/harnesses/grok/GrokCliAdapter.d.ts.map +1 -0
- package/dist/harnesses/grok/GrokCliAdapter.js +102 -0
- package/dist/harnesses/grok/GrokCliAdapter.js.map +1 -0
- package/dist/harnesses/grok/GrokSessionLocator.d.ts.map +1 -0
- package/dist/harnesses/grok/GrokSessionLocator.js +140 -0
- package/dist/harnesses/grok/GrokSessionLocator.js.map +1 -0
- package/dist/harnesses/grok/GrokSessionParser.d.ts +87 -0
- package/dist/harnesses/grok/GrokSessionParser.d.ts.map +1 -0
- package/dist/harnesses/grok/GrokSessionParser.js +185 -0
- package/dist/harnesses/grok/GrokSessionParser.js.map +1 -0
- package/dist/harnesses/index.d.ts +7 -0
- package/dist/harnesses/index.d.ts.map +1 -0
- package/dist/harnesses/index.js +27 -0
- package/dist/harnesses/index.js.map +1 -0
- package/dist/harnesses/kiro/KiroAdapter.d.ts +31 -0
- package/dist/harnesses/kiro/KiroAdapter.d.ts.map +1 -0
- package/dist/harnesses/kiro/KiroAdapter.js +125 -0
- package/dist/harnesses/kiro/KiroAdapter.js.map +1 -0
- package/dist/harnesses/kiro/KiroAgentMapper.d.ts +13 -0
- package/dist/harnesses/kiro/KiroAgentMapper.d.ts.map +1 -0
- package/dist/harnesses/kiro/KiroAgentMapper.js +29 -0
- package/dist/harnesses/kiro/KiroAgentMapper.js.map +1 -0
- package/dist/harnesses/kiro/KiroSessionLocator.d.ts +38 -0
- package/dist/harnesses/kiro/KiroSessionLocator.d.ts.map +1 -0
- package/dist/harnesses/kiro/KiroSessionLocator.js +95 -0
- package/dist/harnesses/kiro/KiroSessionLocator.js.map +1 -0
- package/dist/harnesses/kiro/KiroSessionParser.d.ts +81 -0
- package/dist/harnesses/kiro/KiroSessionParser.d.ts.map +1 -0
- package/dist/harnesses/kiro/KiroSessionParser.js +251 -0
- package/dist/harnesses/kiro/KiroSessionParser.js.map +1 -0
- package/dist/harnesses/opencode/OpenCodeAdapter.d.ts +29 -0
- package/dist/harnesses/opencode/OpenCodeAdapter.d.ts.map +1 -0
- package/dist/harnesses/opencode/OpenCodeAdapter.js +86 -0
- package/dist/harnesses/opencode/OpenCodeAdapter.js.map +1 -0
- package/dist/harnesses/opencode/OpenCodeAgentMapper.d.ts.map +1 -0
- package/dist/harnesses/opencode/OpenCodeAgentMapper.js +42 -0
- package/dist/harnesses/opencode/OpenCodeAgentMapper.js.map +1 -0
- package/dist/harnesses/opencode/OpenCodeSessionLocator.d.ts.map +1 -0
- package/dist/harnesses/opencode/OpenCodeSessionLocator.js +118 -0
- package/dist/harnesses/opencode/OpenCodeSessionLocator.js.map +1 -0
- package/dist/harnesses/opencode/OpenCodeSessionParser.d.ts +16 -0
- package/dist/harnesses/opencode/OpenCodeSessionParser.d.ts.map +1 -0
- package/dist/harnesses/opencode/OpenCodeSessionParser.js +105 -0
- package/dist/harnesses/opencode/OpenCodeSessionParser.js.map +1 -0
- package/dist/harnesses/opencode/readiness.d.ts +3 -0
- package/dist/harnesses/opencode/readiness.d.ts.map +1 -0
- package/dist/harnesses/opencode/readiness.js +50 -0
- package/dist/harnesses/opencode/readiness.js.map +1 -0
- package/dist/harnesses/pi/PiAdapter.d.ts +30 -0
- package/dist/harnesses/pi/PiAdapter.d.ts.map +1 -0
- package/dist/harnesses/pi/PiAdapter.js +167 -0
- package/dist/harnesses/pi/PiAdapter.js.map +1 -0
- package/dist/harnesses/pi/PiAgentMapper.d.ts.map +1 -0
- package/dist/harnesses/pi/PiAgentMapper.js +30 -0
- package/dist/harnesses/pi/PiAgentMapper.js.map +1 -0
- package/dist/harnesses/pi/PiSessionLocator.d.ts +61 -0
- package/dist/harnesses/pi/PiSessionLocator.d.ts.map +1 -0
- package/dist/harnesses/pi/PiSessionLocator.js +212 -0
- package/dist/harnesses/pi/PiSessionLocator.js.map +1 -0
- package/dist/harnesses/pi/PiSessionParser.d.ts +88 -0
- package/dist/harnesses/pi/PiSessionParser.d.ts.map +1 -0
- package/dist/harnesses/pi/PiSessionParser.js +318 -0
- package/dist/harnesses/pi/PiSessionParser.js.map +1 -0
- package/dist/harnesses/pi/PiSessionTracker.d.ts.map +1 -0
- package/dist/harnesses/pi/PiSessionTracker.js +69 -0
- package/dist/harnesses/pi/PiSessionTracker.js.map +1 -0
- package/dist/harnesses/pi/credentials.d.ts +22 -0
- package/dist/harnesses/pi/credentials.d.ts.map +1 -0
- package/dist/harnesses/pi/credentials.js +98 -0
- package/dist/harnesses/pi/credentials.js.map +1 -0
- package/dist/harnesses/pi/durable/PiCliProbe.d.ts.map +1 -0
- package/dist/harnesses/pi/durable/PiCliProbe.js.map +1 -0
- package/dist/harnesses/pi/durable/PiPrintAgentService.d.ts.map +1 -0
- package/dist/harnesses/pi/durable/PiPrintAgentService.js.map +1 -0
- package/dist/harnesses/pi/durable/PiPrintProtocol.d.ts.map +1 -0
- package/dist/harnesses/pi/durable/PiPrintProtocol.js.map +1 -0
- package/dist/harnesses/pi/durable/PiPrintRunner.d.ts.map +1 -0
- package/dist/harnesses/pi/durable/PiPrintRunner.js.map +1 -0
- package/dist/harnesses/pi/durable/PiStreamParser.d.ts.map +1 -0
- package/dist/harnesses/pi/durable/PiStreamParser.js.map +1 -0
- package/dist/harnesses/pi/readiness.d.ts +3 -0
- package/dist/harnesses/pi/readiness.d.ts.map +1 -0
- package/dist/harnesses/pi/readiness.js +96 -0
- package/dist/harnesses/pi/readiness.js.map +1 -0
- package/dist/harnesses/readiness/AgentReadiness.d.ts +6 -0
- package/dist/harnesses/readiness/AgentReadiness.d.ts.map +1 -0
- package/dist/harnesses/readiness/AgentReadiness.js +68 -0
- package/dist/harnesses/readiness/AgentReadiness.js.map +1 -0
- package/dist/harnesses/readiness/checks.d.ts +31 -0
- package/dist/harnesses/readiness/checks.d.ts.map +1 -0
- package/dist/harnesses/readiness/checks.js +270 -0
- package/dist/harnesses/readiness/checks.js.map +1 -0
- package/dist/harnesses/readiness/types.d.ts +76 -0
- package/dist/harnesses/readiness/types.d.ts.map +1 -0
- package/dist/harnesses/readiness/types.js +4 -0
- package/dist/harnesses/readiness/types.js.map +1 -0
- package/dist/harnesses/runtimeProfiles.d.ts +11 -0
- package/dist/harnesses/runtimeProfiles.d.ts.map +1 -0
- package/dist/harnesses/runtimeProfiles.js +99 -0
- package/dist/harnesses/runtimeProfiles.js.map +1 -0
- package/dist/harnesses/shared.d.ts +41 -0
- package/dist/harnesses/shared.d.ts.map +1 -0
- package/dist/harnesses/shared.js +71 -0
- package/dist/harnesses/shared.js.map +1 -0
- package/dist/index.d.ts +21 -46
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -27
- package/dist/index.js.map +1 -1
- package/dist/runtime/ManagedAgentRuntime.d.ts +3 -3
- package/dist/runtime/ManagedAgentRuntime.d.ts.map +1 -1
- package/dist/runtime/ManagedAgentRuntime.js +6 -20
- package/dist/runtime/ManagedAgentRuntime.js.map +1 -1
- package/dist/runtime/herdr/HerdrAgentDiscovery.d.ts.map +1 -1
- package/dist/runtime/herdr/HerdrAgentDiscovery.js +2 -43
- package/dist/runtime/herdr/HerdrAgentDiscovery.js.map +1 -1
- package/dist/runtime/tmux/PidPolling.d.ts +1 -1
- package/dist/runtime/tmux/PidPolling.d.ts.map +1 -1
- package/dist/runtime/tmux/PidPolling.js.map +1 -1
- package/dist/runtime/tmux/TmuxAgentRuntime.d.ts +1 -1
- package/dist/runtime/tmux/TmuxAgentRuntime.d.ts.map +1 -1
- package/dist/runtime/tmux/TmuxAgentRuntime.js +1 -1
- package/dist/runtime/tmux/TmuxAgentRuntime.js.map +1 -1
- package/dist/runtime/tmux/TmuxManager.d.ts +12 -0
- package/dist/runtime/tmux/TmuxManager.d.ts.map +1 -0
- package/dist/runtime/tmux/TmuxManager.js +116 -0
- package/dist/runtime/tmux/TmuxManager.js.map +1 -0
- package/dist/runtime/types.d.ts +1 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/dist/terminal/TerminalFocusManager.d.ts +4 -32
- package/dist/terminal/TerminalFocusManager.d.ts.map +1 -1
- package/dist/terminal/TerminalFocusManager.js +17 -267
- package/dist/terminal/TerminalFocusManager.js.map +1 -1
- package/dist/terminal/TtyWriter.d.ts +1 -44
- package/dist/terminal/TtyWriter.d.ts.map +1 -1
- package/dist/terminal/TtyWriter.js +11 -347
- package/dist/terminal/TtyWriter.js.map +1 -1
- package/dist/terminal/backends/index.d.ts +5 -0
- package/dist/terminal/backends/index.d.ts.map +1 -0
- package/dist/terminal/backends/index.js +19 -0
- package/dist/terminal/backends/index.js.map +1 -0
- package/dist/terminal/backends/iterm2.d.ts +3 -0
- package/dist/terminal/backends/iterm2.d.ts.map +1 -0
- package/dist/terminal/backends/iterm2.js +135 -0
- package/dist/terminal/backends/iterm2.js.map +1 -0
- package/dist/terminal/backends/shared.d.ts +7 -0
- package/dist/terminal/backends/shared.d.ts.map +1 -0
- package/dist/terminal/backends/shared.js +35 -0
- package/dist/terminal/backends/shared.js.map +1 -0
- package/dist/terminal/backends/terminal-app.d.ts +3 -0
- package/dist/terminal/backends/terminal-app.d.ts.map +1 -0
- package/dist/terminal/backends/terminal-app.js +129 -0
- package/dist/terminal/backends/terminal-app.js.map +1 -0
- package/dist/terminal/backends/tmux.d.ts +3 -0
- package/dist/terminal/backends/tmux.d.ts.map +1 -0
- package/dist/terminal/backends/tmux.js +76 -0
- package/dist/terminal/backends/tmux.js.map +1 -0
- package/dist/terminal/backends/wezterm.d.ts +3 -0
- package/dist/terminal/backends/wezterm.d.ts.map +1 -0
- package/dist/terminal/backends/wezterm.js +71 -0
- package/dist/terminal/backends/wezterm.js.map +1 -0
- package/dist/terminal/types.d.ts +21 -0
- package/dist/terminal/types.d.ts.map +1 -0
- package/dist/terminal/types.js +10 -0
- package/dist/terminal/types.js.map +1 -0
- package/dist/utils/IncrementalJsonlSummary.d.ts +100 -0
- package/dist/utils/IncrementalJsonlSummary.d.ts.map +1 -0
- package/dist/utils/IncrementalJsonlSummary.js +209 -0
- package/dist/utils/IncrementalJsonlSummary.js.map +1 -0
- package/dist/utils/jsonlTail.d.ts +73 -0
- package/dist/utils/jsonlTail.d.ts.map +1 -0
- package/dist/utils/jsonlTail.js +238 -0
- package/dist/utils/jsonlTail.js.map +1 -0
- package/dist/utils/matching.d.ts +2 -0
- package/dist/utils/matching.d.ts.map +1 -1
- package/dist/utils/matching.js +3 -2
- package/dist/utils/matching.js.map +1 -1
- package/dist/utils/matchingConstants.d.ts +15 -0
- package/dist/utils/matchingConstants.d.ts.map +1 -0
- package/dist/utils/matchingConstants.js +14 -0
- package/dist/utils/matchingConstants.js.map +1 -0
- package/dist/utils/process.d.ts +38 -2
- package/dist/utils/process.d.ts.map +1 -1
- package/dist/utils/process.js +131 -43
- package/dist/utils/process.js.map +1 -1
- package/package.json +2 -1
- package/scripts/benchmark-cold-start.mjs +350 -0
- package/src/AgentManager.ts +27 -6
- package/src/__tests__/AgentManager.test.ts +141 -3
- package/src/__tests__/adapters/IncrementalSessionRefresh.test.ts +437 -0
- package/src/__tests__/adapters/adapterProcessImports.test.ts +58 -0
- package/src/__tests__/adapters/adapterSnapshotCandidates.test.ts +243 -0
- package/src/__tests__/capacity/anthropic.test.ts +105 -0
- package/src/__tests__/capacity/boundaries.test.ts +36 -0
- package/src/__tests__/capacity/claude.test.ts +3 -8
- package/src/__tests__/capacity/codex.test.ts +12 -35
- package/src/__tests__/capacity/fixtures/openai-codex-auth.json +1 -1
- package/src/__tests__/capacity/openai.test.ts +20 -30
- package/src/__tests__/capacity/wham.test.ts +1 -1
- package/src/__tests__/capacity/zai.test.ts +27 -62
- package/src/__tests__/harnesses/BoundedSummarySkip.test.ts +496 -0
- package/src/__tests__/harnesses/SessionSummaryEquivalence.test.ts +726 -0
- package/src/__tests__/harnesses/antigravity/AntigravityCliAdapter.subprocess.test.ts +133 -0
- package/src/__tests__/harnesses/antigravity/AntigravityCliAdapter.test.ts +396 -0
- package/src/__tests__/harnesses/builtinAdapters.test.ts +33 -0
- package/src/__tests__/harnesses/claude/ClaudeAgentMapper.test.ts +84 -0
- package/src/__tests__/harnesses/claude/ClaudeCodeAdapter.test.ts +1793 -0
- package/src/__tests__/harnesses/claude/ClaudeSessionLocator.test.ts +423 -0
- package/src/__tests__/harnesses/claude/ClaudeSessionParser.test.ts +300 -0
- package/src/__tests__/harnesses/claude/durable/ClaudeCliProbe.test.ts +34 -0
- package/src/__tests__/harnesses/claude/durable/ClaudePrintAgent.integration.test.ts +61 -0
- package/src/__tests__/harnesses/claude/durable/ClaudePrintAgentService.test.ts +129 -0
- package/src/__tests__/harnesses/claude/durable/ClaudePrintRunner.test.ts +152 -0
- package/src/__tests__/harnesses/codex/CodexAdapter.test.ts +652 -0
- package/src/__tests__/harnesses/codex/CodexSessionLocator.test.ts +419 -0
- package/src/__tests__/harnesses/codex/CodexSessionMapping.test.ts +63 -0
- package/src/__tests__/harnesses/codex/CodexSessionParser.test.ts +192 -0
- package/src/__tests__/harnesses/codex/durable/CodexCliProbe.test.ts +80 -0
- package/src/__tests__/harnesses/codex/durable/CodexDurableAgentRepository.test.ts +65 -0
- package/src/__tests__/harnesses/codex/durable/CodexPrintAgent.integration.test.ts +104 -0
- package/src/__tests__/harnesses/codex/durable/CodexPrintAgentService.test.ts +201 -0
- package/src/__tests__/harnesses/codex/durable/CodexPrintRunner.test.ts +299 -0
- package/src/__tests__/harnesses/copilot/CopilotAdapter.test.ts +614 -0
- package/src/__tests__/harnesses/copilot/CopilotRefreshIO.test.ts +270 -0
- package/src/__tests__/harnesses/gemini/GeminiCliAdapter.test.ts +1324 -0
- package/src/__tests__/harnesses/gemini/GeminiSessionJsonl.test.ts +402 -0
- package/src/__tests__/harnesses/gemini/GeminiSessionLocator.test.ts +396 -0
- package/src/__tests__/harnesses/grok/GrokAgentMapper.test.ts +57 -0
- package/src/__tests__/harnesses/grok/GrokCliAdapter.test.ts +376 -0
- package/src/__tests__/harnesses/grok/GrokIncrementalRefresh.test.ts +170 -0
- package/src/__tests__/harnesses/grok/GrokSessionLocator.test.ts +106 -0
- package/src/__tests__/harnesses/grok/GrokSessionParser.test.ts +230 -0
- package/src/__tests__/harnesses/kiro/KiroAdapter.test.ts +552 -0
- package/src/__tests__/harnesses/opencode/OpenCodeAdapter.test.ts +215 -0
- package/src/__tests__/harnesses/opencode/OpenCodeAgentMapper.test.ts +83 -0
- package/src/__tests__/harnesses/opencode/OpenCodeSessionLocator.test.ts +84 -0
- package/src/__tests__/harnesses/opencode/OpenCodeSessionParser.test.ts +148 -0
- package/src/__tests__/harnesses/pi/PiAdapter.test.ts +325 -0
- package/src/__tests__/harnesses/pi/PiDiscoveryIO.test.ts +337 -0
- package/src/__tests__/harnesses/pi/PiSessionParser.test.ts +280 -0
- package/src/__tests__/harnesses/pi/PiSessionTracker.test.ts +79 -0
- package/src/__tests__/harnesses/pi/durable/PiCliProbe.test.ts +50 -0
- package/src/__tests__/harnesses/pi/durable/PiPrintAgentService.test.ts +138 -0
- package/src/__tests__/harnesses/pi/durable/PiPrintProtocol.test.ts +71 -0
- package/src/__tests__/harnesses/pi/durable/PiPrintRunner.test.ts +252 -0
- package/src/__tests__/harnesses/pi/durable/PiStreamParser.test.ts +26 -0
- package/src/__tests__/harnesses/readiness/AgentReadiness.test.ts +285 -0
- package/src/__tests__/harnesses/runtimeProfiles.test.ts +110 -0
- package/src/__tests__/print/DurableAgent.test.ts +4 -13
- package/src/__tests__/print/DurableAgentRepository.test.ts +1 -13
- package/src/__tests__/runtime/ManagedAgentRuntime.test.ts +31 -1
- package/src/__tests__/terminal/TmuxManager.test.ts +1 -1
- package/src/__tests__/utils/IncrementalJsonlSummary.test.ts +414 -0
- package/src/__tests__/utils/conversationTail.bench.test.ts +193 -0
- package/src/__tests__/utils/conversationTailParity.test.ts +365 -0
- package/src/__tests__/utils/jsonlTail.test.ts +317 -0
- package/src/__tests__/utils/matchingConstants.test.ts +40 -0
- package/src/__tests__/utils/process.test.ts +254 -0
- package/src/adapters/AgentAdapter.ts +37 -14
- package/src/capacity/index.ts +29 -23
- package/src/capacity/providers/anthropic.ts +198 -0
- package/src/capacity/providers/openai-platform.ts +150 -0
- package/src/capacity/providers/openai-subscription.ts +162 -0
- package/src/capacity/providers/zai.ts +155 -0
- package/src/capacity/sources/claude.ts +30 -0
- package/src/capacity/sources/codex.ts +262 -0
- package/src/capacity/sources/pi.ts +131 -0
- package/src/capacity/types.ts +3 -0
- package/src/harnesses/antigravity/AntigravityAgentMapper.ts +34 -0
- package/src/harnesses/antigravity/AntigravityCliAdapter.ts +126 -0
- package/src/harnesses/antigravity/AntigravitySessionLocator.ts +75 -0
- package/src/harnesses/antigravity/AntigravitySessionParser.ts +252 -0
- package/src/harnesses/claude/ClaudeAgentMapper.ts +55 -0
- package/src/harnesses/claude/ClaudeCodeAdapter.ts +175 -0
- package/src/harnesses/claude/ClaudeSessionLocator.ts +358 -0
- package/src/harnesses/claude/ClaudeSessionParser.ts +524 -0
- package/src/harnesses/claude/credentials.ts +122 -0
- package/src/harnesses/claude/readiness.ts +69 -0
- package/src/harnesses/codex/CodexAdapter.ts +337 -0
- package/src/harnesses/codex/CodexAgentMapper.ts +26 -0
- package/src/harnesses/codex/CodexSessionLocator.ts +509 -0
- package/src/harnesses/codex/CodexSessionMapping.ts +89 -0
- package/src/harnesses/codex/CodexSessionParser.ts +462 -0
- package/src/harnesses/codex/credentials.ts +81 -0
- package/src/harnesses/codex/readiness.ts +72 -0
- package/src/harnesses/copilot/CopilotAdapter.ts +161 -0
- package/src/harnesses/copilot/CopilotAgentMapper.ts +27 -0
- package/src/harnesses/copilot/CopilotSessionLocator.ts +161 -0
- package/src/harnesses/copilot/CopilotSessionParser.ts +380 -0
- package/src/harnesses/copilot/readiness.ts +33 -0
- package/src/harnesses/gemini/GeminiAgentMapper.ts +27 -0
- package/src/harnesses/gemini/GeminiCliAdapter.ts +272 -0
- package/src/harnesses/gemini/GeminiSessionLocator.ts +394 -0
- package/src/harnesses/gemini/GeminiSessionParser.ts +395 -0
- package/src/harnesses/gemini/fileSignature.ts +10 -0
- package/src/harnesses/grok/GrokAgentMapper.ts +32 -0
- package/src/harnesses/grok/GrokCliAdapter.ts +126 -0
- package/src/harnesses/grok/GrokSessionLocator.ts +179 -0
- package/src/harnesses/grok/GrokSessionParser.ts +251 -0
- package/src/harnesses/index.ts +28 -0
- package/src/harnesses/kiro/KiroAdapter.ts +143 -0
- package/src/harnesses/kiro/KiroAgentMapper.ts +34 -0
- package/src/harnesses/kiro/KiroSessionLocator.ts +143 -0
- package/src/harnesses/kiro/KiroSessionParser.ts +376 -0
- package/src/harnesses/opencode/OpenCodeAdapter.ts +110 -0
- package/src/harnesses/opencode/OpenCodeAgentMapper.ts +51 -0
- package/src/harnesses/opencode/OpenCodeSessionLocator.ts +151 -0
- package/src/harnesses/opencode/OpenCodeSessionParser.ts +146 -0
- package/src/harnesses/opencode/readiness.ts +48 -0
- package/src/harnesses/pi/PiAdapter.ts +197 -0
- package/src/harnesses/pi/PiAgentMapper.ts +27 -0
- package/src/harnesses/pi/PiSessionLocator.ts +288 -0
- package/src/harnesses/pi/PiSessionParser.ts +488 -0
- package/src/harnesses/pi/PiSessionTracker.ts +87 -0
- package/src/harnesses/pi/credentials.ts +129 -0
- package/src/harnesses/pi/readiness.ts +104 -0
- package/src/harnesses/readiness/AgentReadiness.ts +87 -0
- package/src/harnesses/readiness/checks.ts +336 -0
- package/src/harnesses/readiness/types.ts +90 -0
- package/src/harnesses/runtimeProfiles.ts +103 -0
- package/src/harnesses/shared.ts +119 -0
- package/src/index.ts +20 -131
- package/src/runtime/ManagedAgentRuntime.ts +7 -22
- package/src/runtime/herdr/HerdrAgentDiscovery.ts +3 -19
- package/src/runtime/tmux/PidPolling.ts +1 -1
- package/src/runtime/tmux/TmuxAgentRuntime.ts +1 -1
- package/src/runtime/tmux/TmuxManager.ts +102 -0
- package/src/runtime/types.ts +1 -1
- package/src/terminal/TerminalFocusManager.ts +19 -292
- package/src/terminal/TtyWriter.ts +16 -336
- package/src/terminal/backends/index.ts +21 -0
- package/src/terminal/backends/iterm2.ts +126 -0
- package/src/terminal/backends/shared.ts +42 -0
- package/src/terminal/backends/terminal-app.ts +122 -0
- package/src/terminal/backends/tmux.ts +62 -0
- package/src/terminal/backends/wezterm.ts +65 -0
- package/src/terminal/types.ts +22 -0
- package/src/utils/IncrementalJsonlSummary.ts +306 -0
- package/src/utils/jsonlTail.ts +349 -0
- package/src/utils/matching.ts +3 -3
- package/src/utils/matchingConstants.ts +15 -0
- package/src/utils/process.ts +189 -45
- package/dist/__tests__/adapters/AntigravityCliAdapter.test.js +0 -381
- package/dist/__tests__/adapters/AntigravityCliAdapter.test.js.map +0 -1
- package/dist/__tests__/adapters/ClaudeCodeAdapter.test.js +0 -1853
- package/dist/__tests__/adapters/ClaudeCodeAdapter.test.js.map +0 -1
- package/dist/__tests__/adapters/CodexAdapter.test.js +0 -391
- package/dist/__tests__/adapters/CodexAdapter.test.js.map +0 -1
- package/dist/__tests__/adapters/KiroAdapter.test.js +0 -607
- package/dist/__tests__/adapters/KiroAdapter.test.js.map +0 -1
- package/dist/__tests__/durable/CodexCliProbe.test.js +0 -129
- package/dist/__tests__/durable/CodexCliProbe.test.js.map +0 -1
- package/dist/__tests__/durable/CodexDurableAgentRepository.test.js +0 -84
- package/dist/__tests__/durable/CodexDurableAgentRepository.test.js.map +0 -1
- package/dist/__tests__/durable/CodexPrintAgent.integration.test.js +0 -126
- package/dist/__tests__/durable/CodexPrintAgent.integration.test.js.map +0 -1
- package/dist/__tests__/durable/CodexPrintAgentService.test.js +0 -271
- package/dist/__tests__/durable/CodexPrintAgentService.test.js.map +0 -1
- package/dist/__tests__/durable/CodexPrintRunner.test.js +0 -393
- package/dist/__tests__/durable/CodexPrintRunner.test.js.map +0 -1
- package/dist/__tests__/print/ClaudeCliProbe.test.js +0 -49
- package/dist/__tests__/print/ClaudeCliProbe.test.js.map +0 -1
- package/dist/__tests__/print/ClaudePrintAgent.integration.test.js +0 -75
- package/dist/__tests__/print/ClaudePrintAgent.integration.test.js.map +0 -1
- package/dist/__tests__/print/ClaudePrintAgentService.test.js +0 -173
- package/dist/__tests__/print/ClaudePrintAgentService.test.js.map +0 -1
- package/dist/__tests__/print/ClaudePrintRunner.test.js +0 -181
- package/dist/__tests__/print/ClaudePrintRunner.test.js.map +0 -1
- package/dist/__tests__/providers/claude/ClaudeAgentMapper.test.js +0 -79
- package/dist/__tests__/providers/claude/ClaudeAgentMapper.test.js.map +0 -1
- package/dist/__tests__/providers/claude/ClaudeSessionLocator.test.js +0 -436
- package/dist/__tests__/providers/claude/ClaudeSessionLocator.test.js.map +0 -1
- package/dist/__tests__/providers/codex/CodexSessionLocator.test.js +0 -194
- package/dist/__tests__/providers/codex/CodexSessionLocator.test.js.map +0 -1
- package/dist/__tests__/providers/codex/CodexSessionMapping.test.js +0 -86
- package/dist/__tests__/providers/codex/CodexSessionMapping.test.js.map +0 -1
- package/dist/__tests__/providers/codex/CodexSessionParser.test.js +0 -254
- package/dist/__tests__/providers/codex/CodexSessionParser.test.js.map +0 -1
- package/dist/__tests__/providers/copilot/CopilotAdapter.test.js +0 -659
- package/dist/__tests__/providers/copilot/CopilotAdapter.test.js.map +0 -1
- package/dist/__tests__/providers/gemini/GeminiCliAdapter.test.js +0 -1434
- package/dist/__tests__/providers/gemini/GeminiCliAdapter.test.js.map +0 -1
- package/dist/__tests__/providers/grok/GrokAgentMapper.test.js +0 -56
- package/dist/__tests__/providers/grok/GrokAgentMapper.test.js.map +0 -1
- package/dist/__tests__/providers/grok/GrokCliAdapter.test.js +0 -421
- package/dist/__tests__/providers/grok/GrokCliAdapter.test.js.map +0 -1
- package/dist/__tests__/providers/grok/GrokSessionLocator.test.js +0 -133
- package/dist/__tests__/providers/grok/GrokSessionLocator.test.js.map +0 -1
- package/dist/__tests__/providers/opencode/OpenCodeAdapter.test.js +0 -213
- package/dist/__tests__/providers/opencode/OpenCodeAdapter.test.js.map +0 -1
- package/dist/__tests__/providers/opencode/OpenCodeAgentMapper.test.js +0 -89
- package/dist/__tests__/providers/opencode/OpenCodeAgentMapper.test.js.map +0 -1
- package/dist/__tests__/providers/opencode/OpenCodeSessionLocator.test.js +0 -94
- package/dist/__tests__/providers/opencode/OpenCodeSessionLocator.test.js.map +0 -1
- package/dist/__tests__/providers/opencode/OpenCodeSessionParser.test.js +0 -147
- package/dist/__tests__/providers/opencode/OpenCodeSessionParser.test.js.map +0 -1
- package/dist/__tests__/providers/pi/PiAdapter.test.js +0 -367
- package/dist/__tests__/providers/pi/PiAdapter.test.js.map +0 -1
- package/dist/__tests__/providers/pi/PiSessionParser.test.js +0 -246
- package/dist/__tests__/providers/pi/PiSessionParser.test.js.map +0 -1
- package/dist/__tests__/providers/pi/PiSessionTracker.test.js +0 -108
- package/dist/__tests__/providers/pi/PiSessionTracker.test.js.map +0 -1
- package/dist/__tests__/providers/pi/durable/PiCliProbe.test.js +0 -76
- package/dist/__tests__/providers/pi/durable/PiCliProbe.test.js.map +0 -1
- package/dist/__tests__/providers/pi/durable/PiDurableAgentRepository.test.js.map +0 -1
- package/dist/__tests__/providers/pi/durable/PiPrintAgentService.test.js +0 -202
- package/dist/__tests__/providers/pi/durable/PiPrintAgentService.test.js.map +0 -1
- package/dist/__tests__/providers/pi/durable/PiPrintProtocol.test.js +0 -119
- package/dist/__tests__/providers/pi/durable/PiPrintProtocol.test.js.map +0 -1
- package/dist/__tests__/providers/pi/durable/PiPrintRunner.test.js +0 -386
- package/dist/__tests__/providers/pi/durable/PiPrintRunner.test.js.map +0 -1
- package/dist/__tests__/providers/pi/durable/PiStreamParser.test.js +0 -34
- package/dist/__tests__/providers/pi/durable/PiStreamParser.test.js.map +0 -1
- package/dist/__tests__/readiness/AgentReadiness.test.js +0 -301
- package/dist/__tests__/readiness/AgentReadiness.test.js.map +0 -1
- package/dist/__tests__/utils/ClaudeSessionParser.test.js +0 -314
- package/dist/__tests__/utils/ClaudeSessionParser.test.js.map +0 -1
- package/dist/__tests__/utils/agents.test.js +0 -29
- package/dist/__tests__/utils/agents.test.js.map +0 -1
- package/dist/adapters/AntigravityCliAdapter.d.ts +0 -57
- package/dist/adapters/AntigravityCliAdapter.d.ts.map +0 -1
- package/dist/adapters/AntigravityCliAdapter.js +0 -273
- package/dist/adapters/AntigravityCliAdapter.js.map +0 -1
- package/dist/adapters/KiroAdapter.d.ts +0 -46
- package/dist/adapters/KiroAdapter.d.ts.map +0 -1
- package/dist/adapters/KiroAdapter.js +0 -344
- package/dist/adapters/KiroAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -12
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -12
- package/dist/adapters/index.js.map +0 -1
- package/dist/capacity/claude.d.ts +0 -17
- package/dist/capacity/claude.d.ts.map +0 -1
- package/dist/capacity/claude.js +0 -271
- package/dist/capacity/claude.js.map +0 -1
- package/dist/capacity/codex.d.ts +0 -36
- package/dist/capacity/codex.d.ts.map +0 -1
- package/dist/capacity/codex.js +0 -280
- package/dist/capacity/codex.js.map +0 -1
- package/dist/capacity/openai.d.ts +0 -48
- package/dist/capacity/openai.d.ts.map +0 -1
- package/dist/capacity/openai.js +0 -312
- package/dist/capacity/openai.js.map +0 -1
- package/dist/capacity/wham.d.ts +0 -16
- package/dist/capacity/wham.d.ts.map +0 -1
- package/dist/capacity/wham.js +0 -66
- package/dist/capacity/wham.js.map +0 -1
- package/dist/capacity/zai.d.ts +0 -14
- package/dist/capacity/zai.d.ts.map +0 -1
- package/dist/capacity/zai.js +0 -203
- package/dist/capacity/zai.js.map +0 -1
- package/dist/providers/claude/ClaudeAgentMapper.d.ts.map +0 -1
- package/dist/providers/claude/ClaudeAgentMapper.js +0 -42
- package/dist/providers/claude/ClaudeAgentMapper.js.map +0 -1
- package/dist/providers/claude/ClaudeCodeAdapter.d.ts +0 -31
- package/dist/providers/claude/ClaudeCodeAdapter.d.ts.map +0 -1
- package/dist/providers/claude/ClaudeCodeAdapter.js +0 -132
- package/dist/providers/claude/ClaudeCodeAdapter.js.map +0 -1
- package/dist/providers/claude/ClaudeSessionLocator.d.ts.map +0 -1
- package/dist/providers/claude/ClaudeSessionLocator.js +0 -260
- package/dist/providers/claude/ClaudeSessionLocator.js.map +0 -1
- package/dist/providers/claude/ClaudeSessionParser.d.ts +0 -114
- package/dist/providers/claude/ClaudeSessionParser.d.ts.map +0 -1
- package/dist/providers/claude/ClaudeSessionParser.js +0 -309
- package/dist/providers/claude/ClaudeSessionParser.js.map +0 -1
- package/dist/providers/claude/durable/ClaudeCliProbe.d.ts.map +0 -1
- package/dist/providers/claude/durable/ClaudeCliProbe.js.map +0 -1
- package/dist/providers/claude/durable/ClaudePrintAgentService.d.ts.map +0 -1
- package/dist/providers/claude/durable/ClaudePrintAgentService.js.map +0 -1
- package/dist/providers/claude/durable/ClaudePrintRunner.d.ts.map +0 -1
- package/dist/providers/claude/durable/ClaudePrintRunner.js.map +0 -1
- package/dist/providers/claude/durable/ClaudeStreamParser.d.ts.map +0 -1
- package/dist/providers/claude/durable/ClaudeStreamParser.js.map +0 -1
- package/dist/providers/codex/CodexAdapter.d.ts +0 -28
- package/dist/providers/codex/CodexAdapter.d.ts.map +0 -1
- package/dist/providers/codex/CodexAdapter.js +0 -170
- package/dist/providers/codex/CodexAdapter.js.map +0 -1
- package/dist/providers/codex/CodexAgentMapper.d.ts.map +0 -1
- package/dist/providers/codex/CodexAgentMapper.js +0 -35
- package/dist/providers/codex/CodexAgentMapper.js.map +0 -1
- package/dist/providers/codex/CodexSessionLocator.d.ts +0 -44
- package/dist/providers/codex/CodexSessionLocator.d.ts.map +0 -1
- package/dist/providers/codex/CodexSessionLocator.js +0 -207
- package/dist/providers/codex/CodexSessionLocator.js.map +0 -1
- package/dist/providers/codex/CodexSessionMapping.d.ts.map +0 -1
- package/dist/providers/codex/CodexSessionMapping.js +0 -68
- package/dist/providers/codex/CodexSessionMapping.js.map +0 -1
- package/dist/providers/codex/CodexSessionParser.d.ts +0 -58
- package/dist/providers/codex/CodexSessionParser.d.ts.map +0 -1
- package/dist/providers/codex/CodexSessionParser.js +0 -262
- package/dist/providers/codex/CodexSessionParser.js.map +0 -1
- package/dist/providers/codex/durable/CodexCliProbe.d.ts.map +0 -1
- package/dist/providers/codex/durable/CodexCliProbe.js.map +0 -1
- package/dist/providers/codex/durable/CodexPrintAgentService.d.ts.map +0 -1
- package/dist/providers/codex/durable/CodexPrintAgentService.js.map +0 -1
- package/dist/providers/codex/durable/CodexPrintRunner.d.ts.map +0 -1
- package/dist/providers/codex/durable/CodexPrintRunner.js.map +0 -1
- package/dist/providers/codex/durable/CodexStreamParser.d.ts.map +0 -1
- package/dist/providers/codex/durable/CodexStreamParser.js.map +0 -1
- package/dist/providers/copilot/CopilotAdapter.d.ts +0 -35
- package/dist/providers/copilot/CopilotAdapter.d.ts.map +0 -1
- package/dist/providers/copilot/CopilotAdapter.js +0 -123
- package/dist/providers/copilot/CopilotAdapter.js.map +0 -1
- package/dist/providers/copilot/CopilotAgentMapper.d.ts.map +0 -1
- package/dist/providers/copilot/CopilotAgentMapper.js +0 -37
- package/dist/providers/copilot/CopilotAgentMapper.js.map +0 -1
- package/dist/providers/copilot/CopilotSessionLocator.d.ts +0 -20
- package/dist/providers/copilot/CopilotSessionLocator.d.ts.map +0 -1
- package/dist/providers/copilot/CopilotSessionLocator.js +0 -49
- package/dist/providers/copilot/CopilotSessionLocator.js.map +0 -1
- package/dist/providers/copilot/CopilotSessionParser.d.ts +0 -30
- package/dist/providers/copilot/CopilotSessionParser.d.ts.map +0 -1
- package/dist/providers/copilot/CopilotSessionParser.js +0 -181
- package/dist/providers/copilot/CopilotSessionParser.js.map +0 -1
- package/dist/providers/gemini/GeminiAgentMapper.d.ts.map +0 -1
- package/dist/providers/gemini/GeminiAgentMapper.js +0 -37
- package/dist/providers/gemini/GeminiAgentMapper.js.map +0 -1
- package/dist/providers/gemini/GeminiCliAdapter.d.ts +0 -53
- package/dist/providers/gemini/GeminiCliAdapter.d.ts.map +0 -1
- package/dist/providers/gemini/GeminiCliAdapter.js +0 -197
- package/dist/providers/gemini/GeminiCliAdapter.js.map +0 -1
- package/dist/providers/gemini/GeminiSessionLocator.d.ts +0 -30
- package/dist/providers/gemini/GeminiSessionLocator.d.ts.map +0 -1
- package/dist/providers/gemini/GeminiSessionLocator.js +0 -142
- package/dist/providers/gemini/GeminiSessionLocator.js.map +0 -1
- package/dist/providers/gemini/GeminiSessionParser.d.ts +0 -94
- package/dist/providers/gemini/GeminiSessionParser.d.ts.map +0 -1
- package/dist/providers/gemini/GeminiSessionParser.js +0 -166
- package/dist/providers/gemini/GeminiSessionParser.js.map +0 -1
- package/dist/providers/grok/GrokAgentMapper.d.ts.map +0 -1
- package/dist/providers/grok/GrokAgentMapper.js +0 -36
- package/dist/providers/grok/GrokAgentMapper.js.map +0 -1
- package/dist/providers/grok/GrokCliAdapter.d.ts +0 -36
- package/dist/providers/grok/GrokCliAdapter.d.ts.map +0 -1
- package/dist/providers/grok/GrokCliAdapter.js +0 -98
- package/dist/providers/grok/GrokCliAdapter.js.map +0 -1
- package/dist/providers/grok/GrokSessionLocator.d.ts.map +0 -1
- package/dist/providers/grok/GrokSessionLocator.js +0 -140
- package/dist/providers/grok/GrokSessionLocator.js.map +0 -1
- package/dist/providers/grok/GrokSessionParser.d.ts +0 -54
- package/dist/providers/grok/GrokSessionParser.d.ts.map +0 -1
- package/dist/providers/grok/GrokSessionParser.js +0 -122
- package/dist/providers/grok/GrokSessionParser.js.map +0 -1
- package/dist/providers/opencode/OpenCodeAdapter.d.ts +0 -31
- package/dist/providers/opencode/OpenCodeAdapter.d.ts.map +0 -1
- package/dist/providers/opencode/OpenCodeAdapter.js +0 -89
- package/dist/providers/opencode/OpenCodeAdapter.js.map +0 -1
- package/dist/providers/opencode/OpenCodeAgentMapper.d.ts.map +0 -1
- package/dist/providers/opencode/OpenCodeAgentMapper.js +0 -50
- package/dist/providers/opencode/OpenCodeAgentMapper.js.map +0 -1
- package/dist/providers/opencode/OpenCodeSessionLocator.d.ts.map +0 -1
- package/dist/providers/opencode/OpenCodeSessionLocator.js +0 -118
- package/dist/providers/opencode/OpenCodeSessionLocator.js.map +0 -1
- package/dist/providers/opencode/OpenCodeSessionParser.d.ts +0 -18
- package/dist/providers/opencode/OpenCodeSessionParser.d.ts.map +0 -1
- package/dist/providers/opencode/OpenCodeSessionParser.js +0 -104
- package/dist/providers/opencode/OpenCodeSessionParser.js.map +0 -1
- package/dist/providers/pi/PiAdapter.d.ts +0 -29
- package/dist/providers/pi/PiAdapter.d.ts.map +0 -1
- package/dist/providers/pi/PiAdapter.js +0 -163
- package/dist/providers/pi/PiAdapter.js.map +0 -1
- package/dist/providers/pi/PiAgentMapper.d.ts.map +0 -1
- package/dist/providers/pi/PiAgentMapper.js +0 -37
- package/dist/providers/pi/PiAgentMapper.js.map +0 -1
- package/dist/providers/pi/PiSessionLocator.d.ts +0 -24
- package/dist/providers/pi/PiSessionLocator.d.ts.map +0 -1
- package/dist/providers/pi/PiSessionLocator.js +0 -86
- package/dist/providers/pi/PiSessionLocator.js.map +0 -1
- package/dist/providers/pi/PiSessionParser.d.ts +0 -36
- package/dist/providers/pi/PiSessionParser.d.ts.map +0 -1
- package/dist/providers/pi/PiSessionParser.js +0 -191
- package/dist/providers/pi/PiSessionParser.js.map +0 -1
- package/dist/providers/pi/PiSessionTracker.d.ts.map +0 -1
- package/dist/providers/pi/PiSessionTracker.js +0 -69
- package/dist/providers/pi/PiSessionTracker.js.map +0 -1
- package/dist/providers/pi/durable/PiCliProbe.d.ts.map +0 -1
- package/dist/providers/pi/durable/PiCliProbe.js.map +0 -1
- package/dist/providers/pi/durable/PiPrintAgentService.d.ts.map +0 -1
- package/dist/providers/pi/durable/PiPrintAgentService.js.map +0 -1
- package/dist/providers/pi/durable/PiPrintProtocol.d.ts.map +0 -1
- package/dist/providers/pi/durable/PiPrintProtocol.js.map +0 -1
- package/dist/providers/pi/durable/PiPrintRunner.d.ts.map +0 -1
- package/dist/providers/pi/durable/PiPrintRunner.js.map +0 -1
- package/dist/providers/pi/durable/PiStreamParser.d.ts.map +0 -1
- package/dist/providers/pi/durable/PiStreamParser.js.map +0 -1
- package/dist/readiness/AgentReadiness.d.ts +0 -67
- package/dist/readiness/AgentReadiness.d.ts.map +0 -1
- package/dist/readiness/AgentReadiness.js +0 -614
- package/dist/readiness/AgentReadiness.js.map +0 -1
- package/dist/terminal/TmuxManager.d.ts +0 -28
- package/dist/terminal/TmuxManager.d.ts.map +0 -1
- package/dist/terminal/TmuxManager.js +0 -135
- package/dist/terminal/TmuxManager.js.map +0 -1
- package/dist/terminal/index.d.ts +0 -5
- package/dist/terminal/index.d.ts.map +0 -1
- package/dist/terminal/index.js +0 -5
- package/dist/terminal/index.js.map +0 -1
- package/dist/utils/agents.d.ts +0 -15
- package/dist/utils/agents.d.ts.map +0 -1
- package/dist/utils/agents.js +0 -82
- package/dist/utils/agents.js.map +0 -1
- package/dist/utils/index.d.ts +0 -7
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -6
- package/dist/utils/index.js.map +0 -1
- package/src/__tests__/adapters/AntigravityCliAdapter.test.ts +0 -324
- package/src/__tests__/adapters/ClaudeCodeAdapter.test.ts +0 -1763
- package/src/__tests__/adapters/CodexAdapter.test.ts +0 -387
- package/src/__tests__/adapters/KiroAdapter.test.ts +0 -534
- package/src/__tests__/durable/CodexCliProbe.test.ts +0 -85
- package/src/__tests__/durable/CodexDurableAgentRepository.test.ts +0 -65
- package/src/__tests__/durable/CodexPrintAgent.integration.test.ts +0 -104
- package/src/__tests__/durable/CodexPrintAgentService.test.ts +0 -217
- package/src/__tests__/durable/CodexPrintRunner.test.ts +0 -309
- package/src/__tests__/fixtures/fake-claude.cjs +0 -31
- package/src/__tests__/fixtures/fake-codex.cjs +0 -56
- package/src/__tests__/print/ClaudeCliProbe.test.ts +0 -34
- package/src/__tests__/print/ClaudePrintAgent.integration.test.ts +0 -61
- package/src/__tests__/print/ClaudePrintAgentService.test.ts +0 -129
- package/src/__tests__/print/ClaudePrintRunner.test.ts +0 -152
- package/src/__tests__/providers/claude/ClaudeAgentMapper.test.ts +0 -84
- package/src/__tests__/providers/claude/ClaudeSessionLocator.test.ts +0 -434
- package/src/__tests__/providers/codex/CodexSessionLocator.test.ts +0 -182
- package/src/__tests__/providers/codex/CodexSessionMapping.test.ts +0 -63
- package/src/__tests__/providers/codex/CodexSessionParser.test.ts +0 -192
- package/src/__tests__/providers/copilot/CopilotAdapter.test.ts +0 -614
- package/src/__tests__/providers/gemini/GeminiCliAdapter.test.ts +0 -1320
- package/src/__tests__/providers/grok/GrokAgentMapper.test.ts +0 -57
- package/src/__tests__/providers/grok/GrokCliAdapter.test.ts +0 -376
- package/src/__tests__/providers/grok/GrokSessionLocator.test.ts +0 -106
- package/src/__tests__/providers/opencode/OpenCodeAdapter.test.ts +0 -215
- package/src/__tests__/providers/opencode/OpenCodeAgentMapper.test.ts +0 -83
- package/src/__tests__/providers/opencode/OpenCodeSessionLocator.test.ts +0 -84
- package/src/__tests__/providers/opencode/OpenCodeSessionParser.test.ts +0 -148
- package/src/__tests__/providers/pi/PiAdapter.test.ts +0 -325
- package/src/__tests__/providers/pi/PiSessionParser.test.ts +0 -190
- package/src/__tests__/providers/pi/PiSessionTracker.test.ts +0 -79
- package/src/__tests__/providers/pi/durable/PiCliProbe.test.ts +0 -54
- package/src/__tests__/providers/pi/durable/PiPrintAgentService.test.ts +0 -141
- package/src/__tests__/providers/pi/durable/PiPrintProtocol.test.ts +0 -71
- package/src/__tests__/providers/pi/durable/PiPrintRunner.test.ts +0 -253
- package/src/__tests__/providers/pi/durable/PiStreamParser.test.ts +0 -26
- package/src/__tests__/readiness/AgentReadiness.test.ts +0 -242
- package/src/__tests__/utils/ClaudeSessionParser.test.ts +0 -300
- package/src/__tests__/utils/agents.test.ts +0 -31
- package/src/adapters/AntigravityCliAdapter.ts +0 -356
- package/src/adapters/KiroAdapter.ts +0 -456
- package/src/adapters/index.ts +0 -17
- package/src/capacity/claude.ts +0 -313
- package/src/capacity/codex.ts +0 -332
- package/src/capacity/openai.ts +0 -361
- package/src/capacity/wham.ts +0 -84
- package/src/capacity/zai.ts +0 -237
- package/src/providers/claude/ClaudeAgentMapper.ts +0 -63
- package/src/providers/claude/ClaudeCodeAdapter.ts +0 -173
- package/src/providers/claude/ClaudeSessionLocator.ts +0 -358
- package/src/providers/claude/ClaudeSessionParser.ts +0 -432
- package/src/providers/codex/CodexAdapter.ts +0 -213
- package/src/providers/codex/CodexAgentMapper.ts +0 -35
- package/src/providers/codex/CodexSessionLocator.ts +0 -279
- package/src/providers/codex/CodexSessionMapping.ts +0 -89
- package/src/providers/codex/CodexSessionParser.ts +0 -385
- package/src/providers/copilot/CopilotAdapter.ts +0 -161
- package/src/providers/copilot/CopilotAgentMapper.ts +0 -36
- package/src/providers/copilot/CopilotSessionLocator.ts +0 -63
- package/src/providers/copilot/CopilotSessionParser.ts +0 -289
- package/src/providers/gemini/GeminiAgentMapper.ts +0 -36
- package/src/providers/gemini/GeminiCliAdapter.ts +0 -274
- package/src/providers/gemini/GeminiSessionLocator.ts +0 -183
- package/src/providers/gemini/GeminiSessionParser.ts +0 -271
- package/src/providers/grok/GrokAgentMapper.ts +0 -41
- package/src/providers/grok/GrokCliAdapter.ts +0 -125
- package/src/providers/grok/GrokSessionLocator.ts +0 -179
- package/src/providers/grok/GrokSessionParser.ts +0 -166
- package/src/providers/opencode/OpenCodeAdapter.ts +0 -116
- package/src/providers/opencode/OpenCodeAgentMapper.ts +0 -61
- package/src/providers/opencode/OpenCodeSessionLocator.ts +0 -151
- package/src/providers/opencode/OpenCodeSessionParser.ts +0 -145
- package/src/providers/pi/PiAdapter.ts +0 -195
- package/src/providers/pi/PiAgentMapper.ts +0 -36
- package/src/providers/pi/PiSessionLocator.ts +0 -110
- package/src/providers/pi/PiSessionParser.ts +0 -284
- package/src/providers/pi/PiSessionTracker.ts +0 -87
- package/src/readiness/AgentReadiness.ts +0 -730
- package/src/terminal/TmuxManager.ts +0 -123
- package/src/terminal/index.ts +0 -4
- package/src/utils/agents.ts +0 -75
- package/src/utils/index.ts +0 -12
- /package/dist/__tests__/{providers → harnesses}/pi/durable/PiDurableAgentRepository.test.js +0 -0
- /package/dist/{providers → harnesses}/claude/ClaudeAgentMapper.d.ts +0 -0
- /package/dist/{providers → harnesses}/claude/ClaudeSessionLocator.d.ts +0 -0
- /package/dist/{providers → harnesses}/claude/durable/ClaudeCliProbe.d.ts +0 -0
- /package/dist/{providers → harnesses}/claude/durable/ClaudeCliProbe.js +0 -0
- /package/dist/{providers → harnesses}/claude/durable/ClaudePrintAgentService.d.ts +0 -0
- /package/dist/{providers → harnesses}/claude/durable/ClaudePrintAgentService.js +0 -0
- /package/dist/{providers → harnesses}/claude/durable/ClaudePrintRunner.d.ts +0 -0
- /package/dist/{providers → harnesses}/claude/durable/ClaudePrintRunner.js +0 -0
- /package/dist/{providers → harnesses}/claude/durable/ClaudeStreamParser.d.ts +0 -0
- /package/dist/{providers → harnesses}/claude/durable/ClaudeStreamParser.js +0 -0
- /package/dist/{providers → harnesses}/codex/CodexAgentMapper.d.ts +0 -0
- /package/dist/{providers → harnesses}/codex/CodexSessionMapping.d.ts +0 -0
- /package/dist/{providers → harnesses}/codex/durable/CodexCliProbe.d.ts +0 -0
- /package/dist/{providers → harnesses}/codex/durable/CodexCliProbe.js +0 -0
- /package/dist/{providers → harnesses}/codex/durable/CodexPrintAgentService.d.ts +0 -0
- /package/dist/{providers → harnesses}/codex/durable/CodexPrintAgentService.js +0 -0
- /package/dist/{providers → harnesses}/codex/durable/CodexPrintRunner.d.ts +0 -0
- /package/dist/{providers → harnesses}/codex/durable/CodexPrintRunner.js +0 -0
- /package/dist/{providers → harnesses}/codex/durable/CodexStreamParser.d.ts +0 -0
- /package/dist/{providers → harnesses}/codex/durable/CodexStreamParser.js +0 -0
- /package/dist/{providers → harnesses}/copilot/CopilotAgentMapper.d.ts +0 -0
- /package/dist/{providers → harnesses}/gemini/GeminiAgentMapper.d.ts +0 -0
- /package/dist/{providers → harnesses}/grok/GrokAgentMapper.d.ts +0 -0
- /package/dist/{providers → harnesses}/grok/GrokSessionLocator.d.ts +0 -0
- /package/dist/{providers → harnesses}/opencode/OpenCodeAgentMapper.d.ts +0 -0
- /package/dist/{providers → harnesses}/opencode/OpenCodeSessionLocator.d.ts +0 -0
- /package/dist/{providers → harnesses}/pi/PiAgentMapper.d.ts +0 -0
- /package/dist/{providers → harnesses}/pi/PiSessionTracker.d.ts +0 -0
- /package/dist/{providers → harnesses}/pi/durable/PiCliProbe.d.ts +0 -0
- /package/dist/{providers → harnesses}/pi/durable/PiCliProbe.js +0 -0
- /package/dist/{providers → harnesses}/pi/durable/PiPrintAgentService.d.ts +0 -0
- /package/dist/{providers → harnesses}/pi/durable/PiPrintAgentService.js +0 -0
- /package/dist/{providers → harnesses}/pi/durable/PiPrintProtocol.d.ts +0 -0
- /package/dist/{providers → harnesses}/pi/durable/PiPrintProtocol.js +0 -0
- /package/dist/{providers → harnesses}/pi/durable/PiPrintRunner.d.ts +0 -0
- /package/dist/{providers → harnesses}/pi/durable/PiPrintRunner.js +0 -0
- /package/dist/{providers → harnesses}/pi/durable/PiStreamParser.d.ts +0 -0
- /package/dist/{providers → harnesses}/pi/durable/PiStreamParser.js +0 -0
- /package/src/__tests__/{providers → harnesses}/pi/durable/PiDurableAgentRepository.test.ts +0 -0
- /package/src/{providers → harnesses}/claude/durable/ClaudeCliProbe.ts +0 -0
- /package/src/{providers → harnesses}/claude/durable/ClaudePrintAgentService.ts +0 -0
- /package/src/{providers → harnesses}/claude/durable/ClaudePrintRunner.ts +0 -0
- /package/src/{providers → harnesses}/claude/durable/ClaudeStreamParser.ts +0 -0
- /package/src/{providers → harnesses}/codex/durable/CodexCliProbe.ts +0 -0
- /package/src/{providers → harnesses}/codex/durable/CodexPrintAgentService.ts +0 -0
- /package/src/{providers → harnesses}/codex/durable/CodexPrintRunner.ts +0 -0
- /package/src/{providers → harnesses}/codex/durable/CodexStreamParser.ts +0 -0
- /package/src/{providers → harnesses}/pi/durable/PiCliProbe.ts +0 -0
- /package/src/{providers → harnesses}/pi/durable/PiPrintAgentService.ts +0 -0
- /package/src/{providers → harnesses}/pi/durable/PiPrintProtocol.ts +0 -0
- /package/src/{providers → harnesses}/pi/durable/PiPrintRunner.ts +0 -0
- /package/src/{providers → harnesses}/pi/durable/PiStreamParser.ts +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers shared by the harness adapters. Each harness keeps its own session
|
|
3
|
+
* matching and parsing; these cover the parts that are the same everywhere.
|
|
4
|
+
*/ import { AgentStatus } from "../adapters/AgentAdapter.js";
|
|
5
|
+
import { generateAgentName } from "../utils/matching.js";
|
|
6
|
+
import { captureProcessSnapshot, executableBasename, filterByProcessNames } from "../utils/process.js";
|
|
7
|
+
/** A session untouched for longer than this is IDLE. */ export const IDLE_THRESHOLD_MINUTES = 5;
|
|
8
|
+
/** Maximum length of a session summary derived from a user prompt. */ export const SUMMARY_MAX_LENGTH = 120;
|
|
9
|
+
/**
|
|
10
|
+
* The adapter's processes from the manager's shared snapshot, or from its own
|
|
11
|
+
* capture when called standalone. `relevant` also keeps helper processes
|
|
12
|
+
* (e.g. a harness's child runtime) that detection may need to walk through.
|
|
13
|
+
*/ export async function findHarnessProcesses(adapter, context) {
|
|
14
|
+
const snapshot = context?.processes ?? await captureProcessSnapshot(adapter.processNames, {
|
|
15
|
+
isCandidate: (process1)=>adapter.canHandle(process1)
|
|
16
|
+
});
|
|
17
|
+
const relevant = filterByProcessNames(snapshot, adapter.processNames);
|
|
18
|
+
const byPid = new Map();
|
|
19
|
+
for (const process1 of relevant){
|
|
20
|
+
if (!byPid.has(process1.pid) && adapter.canHandle(process1)) byPid.set(process1.pid, process1);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
relevant,
|
|
24
|
+
processes: Array.from(byPid.values())
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Whether argv[0]'s basename is `name` or `name.exe`. */ export function matchesExecutable(command, name) {
|
|
28
|
+
const base = executableBasename(command);
|
|
29
|
+
return base === name || base === `${name}.exe`;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The placeholder agent for a running process with no matched session:
|
|
33
|
+
* RUNNING, with a `pid-<pid>` session id.
|
|
34
|
+
*/ export function processOnlyAgent(type, processInfo, { summary, cwd = processInfo.cwd }) {
|
|
35
|
+
return {
|
|
36
|
+
name: generateAgentName(cwd, processInfo.pid),
|
|
37
|
+
type,
|
|
38
|
+
status: AgentStatus.RUNNING,
|
|
39
|
+
summary,
|
|
40
|
+
pid: processInfo.pid,
|
|
41
|
+
projectPath: cwd,
|
|
42
|
+
sessionId: `pid-${processInfo.pid}`,
|
|
43
|
+
lastActive: new Date()
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function isIdle(lastActive, now = Date.now()) {
|
|
47
|
+
return (now - lastActive.getTime()) / 60000 > IDLE_THRESHOLD_MINUTES;
|
|
48
|
+
}
|
|
49
|
+
export function homeDir() {
|
|
50
|
+
return process.env.HOME || process.env.USERPROFILE || "";
|
|
51
|
+
}
|
|
52
|
+
/** ISO strings, or epoch numbers in seconds or milliseconds; null when invalid. */ export function parseTimestamp(value) {
|
|
53
|
+
if (typeof value === "number") {
|
|
54
|
+
const date = new Date(value < 1_000_000_000_000 ? value * 1000 : value);
|
|
55
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
56
|
+
}
|
|
57
|
+
if (typeof value !== "string" || !value) return null;
|
|
58
|
+
const date = new Date(value);
|
|
59
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
60
|
+
}
|
|
61
|
+
export function truncate(value, maxLength) {
|
|
62
|
+
if (value.length <= maxLength) return value;
|
|
63
|
+
return `${value.slice(0, maxLength - 3)}...`;
|
|
64
|
+
}
|
|
65
|
+
/** Flatten a string, or an array of `{ text }` blocks, to plain text. */ export function flattenTextBlocks(content) {
|
|
66
|
+
if (typeof content === "string") return content;
|
|
67
|
+
if (!Array.isArray(content)) return "";
|
|
68
|
+
return content.map((block)=>block && typeof block === "object" && typeof block.text === "string" ? block.text : "").join("");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/harnesses/shared.ts"],"sourcesContent":["/**\n * Helpers shared by the harness adapters. Each harness keeps its own session\n * matching and parsing; these cover the parts that are the same everywhere.\n */\n\nimport type {\n AgentAdapter,\n AgentDetectionContext,\n AgentInfo,\n AgentType,\n ProcessInfo,\n} from \"../adapters/AgentAdapter.js\";\nimport { AgentStatus } from \"../adapters/AgentAdapter.js\";\nimport { generateAgentName } from \"../utils/matching.js\";\nimport {\n captureProcessSnapshot,\n executableBasename,\n filterByProcessNames,\n} from \"../utils/process.js\";\n\n/** A session untouched for longer than this is IDLE. */\nexport const IDLE_THRESHOLD_MINUTES = 5;\n\n/** Maximum length of a session summary derived from a user prompt. */\nexport const SUMMARY_MAX_LENGTH = 120;\n\nexport interface HarnessProcesses {\n /** Every process whose executable is one of the adapter's `processNames`. */\n relevant: ProcessInfo[];\n /** The subset `canHandle` accepts (deduplicated by PID): the agents. */\n processes: ProcessInfo[];\n}\n\n/**\n * The adapter's processes from the manager's shared snapshot, or from its own\n * capture when called standalone. `relevant` also keeps helper processes\n * (e.g. a harness's child runtime) that detection may need to walk through.\n */\nexport async function findHarnessProcesses(\n adapter: Pick<AgentAdapter, \"canHandle\"> & { readonly processNames: readonly string[] },\n context?: AgentDetectionContext,\n): Promise<HarnessProcesses> {\n const snapshot =\n context?.processes ??\n (await captureProcessSnapshot(adapter.processNames, {\n isCandidate: (process) => adapter.canHandle(process),\n }));\n const relevant = filterByProcessNames(snapshot, adapter.processNames);\n\n const byPid = new Map<number, ProcessInfo>();\n for (const process of relevant) {\n if (!byPid.has(process.pid) && adapter.canHandle(process)) byPid.set(process.pid, process);\n }\n return { relevant, processes: Array.from(byPid.values()) };\n}\n\n/** Whether argv[0]'s basename is `name` or `name.exe`. */\nexport function matchesExecutable(command: string, name: string): boolean {\n const base = executableBasename(command);\n return base === name || base === `${name}.exe`;\n}\n\n/**\n * The placeholder agent for a running process with no matched session:\n * RUNNING, with a `pid-<pid>` session id.\n */\nexport function processOnlyAgent(\n type: AgentType,\n processInfo: ProcessInfo,\n { summary, cwd = processInfo.cwd }: { summary: string; cwd?: string },\n): AgentInfo {\n return {\n name: generateAgentName(cwd, processInfo.pid),\n type,\n status: AgentStatus.RUNNING,\n summary,\n pid: processInfo.pid,\n projectPath: cwd,\n sessionId: `pid-${processInfo.pid}`,\n lastActive: new Date(),\n };\n}\n\nexport function isIdle(lastActive: Date, now = Date.now()): boolean {\n return (now - lastActive.getTime()) / 60000 > IDLE_THRESHOLD_MINUTES;\n}\n\nexport function homeDir(): string {\n return process.env.HOME || process.env.USERPROFILE || \"\";\n}\n\n/** ISO strings, or epoch numbers in seconds or milliseconds; null when invalid. */\nexport function parseTimestamp(value: unknown): Date | null {\n if (typeof value === \"number\") {\n const date = new Date(value < 1_000_000_000_000 ? value * 1000 : value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n if (typeof value !== \"string\" || !value) return null;\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n}\n\nexport function truncate(value: string, maxLength: number): string {\n if (value.length <= maxLength) return value;\n return `${value.slice(0, maxLength - 3)}...`;\n}\n\n/** Flatten a string, or an array of `{ text }` blocks, to plain text. */\nexport function flattenTextBlocks(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n return content\n .map((block) =>\n block && typeof block === \"object\" && typeof (block as { text?: unknown }).text === \"string\"\n ? (block as { text: string }).text\n : \"\",\n )\n .join(\"\");\n}\n"],"names":["AgentStatus","generateAgentName","captureProcessSnapshot","executableBasename","filterByProcessNames","IDLE_THRESHOLD_MINUTES","SUMMARY_MAX_LENGTH","findHarnessProcesses","adapter","context","snapshot","processes","processNames","isCandidate","process","canHandle","relevant","byPid","Map","has","pid","set","Array","from","values","matchesExecutable","command","name","base","processOnlyAgent","type","processInfo","summary","cwd","status","RUNNING","projectPath","sessionId","lastActive","Date","isIdle","now","getTime","homeDir","env","HOME","USERPROFILE","parseTimestamp","value","date","Number","isNaN","truncate","maxLength","length","slice","flattenTextBlocks","content","isArray","map","block","text","join"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,51 +1,26 @@
|
|
|
1
|
-
export { AgentManager
|
|
2
|
-
export { getClaudeCapacityReport, getCodexCapacityReport, getOpenAiCapacityReport, getZaiCapacityReport, } from "./capacity/index.js";
|
|
3
|
-
export type {
|
|
4
|
-
export {
|
|
5
|
-
export type { AgentReadinessOptions, AgentReadinessReport,
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export { OpenCodeAdapter } from "./providers/opencode/OpenCodeAdapter.js";
|
|
14
|
-
export { PiAdapter } from "./providers/pi/PiAdapter.js";
|
|
15
|
-
export { AgentStatus } from "./adapters/AgentAdapter.js";
|
|
16
|
-
export type { AgentAdapter, AgentType, AgentInfo, ProcessInfo, ConversationMessage, SessionSummary, ListSessionsOptions, AgentDetectionContext, } from "./adapters/AgentAdapter.js";
|
|
17
|
-
export { TerminalFocusManager, TerminalType } from "./terminal/TerminalFocusManager.js";
|
|
18
|
-
export type { TerminalLocation } from "./terminal/TerminalFocusManager.js";
|
|
1
|
+
export { AgentManager } from "./AgentManager.js";
|
|
2
|
+
export { getAnthropicCapacityReport, getClaudeCapacityReport, getCodexCapacityReport, getOpenAiCapacityReport, getZaiCapacityReport, } from "./capacity/index.js";
|
|
3
|
+
export type { CapacityReport, CapacityWindow } from "./capacity/index.js";
|
|
4
|
+
export { getAgentReadinessReports, worstReadinessStatus, } from "./harnesses/readiness/AgentReadiness.js";
|
|
5
|
+
export type { AgentReadinessOptions, AgentReadinessReport, ReadinessAgentType, ReadinessStatus, } from "./harnesses/readiness/AgentReadiness.js";
|
|
6
|
+
export { createBuiltinAdapters } from "./harnesses/index.js";
|
|
7
|
+
export { HARNESS_RUNTIME_PROFILES, type StartableAgentType } from "./harnesses/runtimeProfiles.js";
|
|
8
|
+
export { AGENT_TYPES, AgentStatus } from "./adapters/AgentAdapter.js";
|
|
9
|
+
export type { AgentAdapter, AgentType, AgentInfo, ConversationMessage, SessionSummary, ListSessionsOptions, } from "./adapters/AgentAdapter.js";
|
|
10
|
+
export { TerminalFocusManager } from "./terminal/TerminalFocusManager.js";
|
|
11
|
+
export { TerminalType } from "./terminal/types.js";
|
|
12
|
+
export type { TerminalLocation } from "./terminal/types.js";
|
|
19
13
|
export { TtyWriter } from "./terminal/TtyWriter.js";
|
|
20
|
-
export type { AgentManagerOptions, ListAgentsOptions } from "./AgentManager.js";
|
|
21
|
-
export { extractHerdrAgentPanes, fetchHerdrAgentPanes, findMatchingHerdrPane, herdrPaneToRuntimeRef, } from "./runtime/herdr/HerdrAgentDiscovery.js";
|
|
22
|
-
export type { HerdrAgentPane } from "./runtime/herdr/HerdrAgentDiscovery.js";
|
|
23
14
|
export { AgentRegistry, RenameNotFoundError, RenameConflictError, AGENT_RUNTIME_PROVIDERS, parseTmuxRuntimeRef, } from "./utils/AgentRegistry.js";
|
|
24
|
-
export type {
|
|
25
|
-
export {
|
|
26
|
-
export
|
|
27
|
-
export { startAgent, stopAgent, focusAgent, sendAgentPrompt, TmuxUnavailableError, AgentNameInUseError, AgentPidPollTimeoutError, AgentRuntimeUnavailableError, AgentTerminalNotFoundError, DEFAULT_PID_POLL_INTERVAL_MS, DEFAULT_PID_POLL_TIMEOUT_MS, } from "./runtime/ManagedAgentRuntime.js";
|
|
28
|
-
export type { FocusAgentDeps, StartAgentDeps, StartAgentOptions, StopAgentDeps, StopAgentResult, FocusAgentResult, SendAgentPromptDeps, } from "./runtime/ManagedAgentRuntime.js";
|
|
29
|
-
export { AGENTS } from "./utils/agents.js";
|
|
30
|
-
export type { AgentConfig, StartableAgentType } from "./utils/agents.js";
|
|
15
|
+
export type { AgentRuntimeProvider } from "./utils/AgentRegistry.js";
|
|
16
|
+
export type { InteractiveAgentRuntime } from "./runtime/types.js";
|
|
17
|
+
export { startAgent, stopAgent, focusAgent, sendAgentPrompt, TmuxUnavailableError, AgentNameInUseError, AgentPidPollTimeoutError, AgentRuntimeUnavailableError, AgentTerminalNotFoundError, DEFAULT_PID_POLL_TIMEOUT_MS, } from "./runtime/ManagedAgentRuntime.js";
|
|
31
18
|
export type { AgentRequest } from "./utils/agent-requests.js";
|
|
32
|
-
export {
|
|
33
|
-
export { AGENT_MODES
|
|
34
|
-
export type {
|
|
19
|
+
export { readLatestAgentRequest, writeAgentRequest } from "./utils/agent-requests.js";
|
|
20
|
+
export { AGENT_MODES } from "./durable/DurableAgent.js";
|
|
21
|
+
export type { DurableProvider } from "./durable/DurableAgent.js";
|
|
35
22
|
export { DurableAgentRepository } from "./durable/DurableAgentRepository.js";
|
|
36
|
-
export
|
|
37
|
-
export {
|
|
38
|
-
export
|
|
39
|
-
export { CodexCliProbe } from "./providers/codex/durable/CodexCliProbe.js";
|
|
40
|
-
export type { CodexCliProbeOptions } from "./providers/codex/durable/CodexCliProbe.js";
|
|
41
|
-
export { CodexPrintRunner } from "./providers/codex/durable/CodexPrintRunner.js";
|
|
42
|
-
export type { CodexPrintRunnerOptions, CodexPrintRunRequest, CodexPrintRunResult, } from "./providers/codex/durable/CodexPrintRunner.js";
|
|
43
|
-
export { CodexPrintAgentService } from "./providers/codex/durable/CodexPrintAgentService.js";
|
|
44
|
-
export type { CodexPrintAgentServiceOptions, CodexPrintSendResult, } from "./providers/codex/durable/CodexPrintAgentService.js";
|
|
45
|
-
export { PiCliProbe } from "./providers/pi/durable/PiCliProbe.js";
|
|
46
|
-
export type { PiCliProbeOptions } from "./providers/pi/durable/PiCliProbe.js";
|
|
47
|
-
export { PiPrintRunner } from "./providers/pi/durable/PiPrintRunner.js";
|
|
48
|
-
export type { PiPrintRunnerOptions, PiPrintRunRequest, PiPrintRunResult, } from "./providers/pi/durable/PiPrintRunner.js";
|
|
49
|
-
export { PiPrintAgentService } from "./providers/pi/durable/PiPrintAgentService.js";
|
|
50
|
-
export type { PiPrintAgentServiceOptions, PiPrintSendResult, } from "./providers/pi/durable/PiPrintAgentService.js";
|
|
23
|
+
export { ClaudePrintAgentService } from "./harnesses/claude/durable/ClaudePrintAgentService.js";
|
|
24
|
+
export { CodexPrintAgentService } from "./harnesses/codex/durable/CodexPrintAgentService.js";
|
|
25
|
+
export { PiPrintAgentService } from "./harnesses/pi/durable/PiPrintAgentService.js";
|
|
51
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EACL,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,yCAAyC,CAAC;AACjD,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,GAChB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EACV,YAAY,EACZ,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,32 +1,19 @@
|
|
|
1
|
-
export { AgentManager
|
|
2
|
-
export { getClaudeCapacityReport, getCodexCapacityReport, getOpenAiCapacityReport, getZaiCapacityReport } from "./capacity/index.js";
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export { AntigravityCliAdapter } from "./adapters/AntigravityCliAdapter.js";
|
|
10
|
-
export { KiroAdapter } from "./adapters/KiroAdapter.js";
|
|
11
|
-
export { OpenCodeAdapter } from "./providers/opencode/OpenCodeAdapter.js";
|
|
12
|
-
export { PiAdapter } from "./providers/pi/PiAdapter.js";
|
|
13
|
-
export { AgentStatus } from "./adapters/AgentAdapter.js";
|
|
14
|
-
export { TerminalFocusManager, TerminalType } from "./terminal/TerminalFocusManager.js";
|
|
1
|
+
export { AgentManager } from "./AgentManager.js";
|
|
2
|
+
export { getAnthropicCapacityReport, getClaudeCapacityReport, getCodexCapacityReport, getOpenAiCapacityReport, getZaiCapacityReport } from "./capacity/index.js";
|
|
3
|
+
export { getAgentReadinessReports, worstReadinessStatus } from "./harnesses/readiness/AgentReadiness.js";
|
|
4
|
+
export { createBuiltinAdapters } from "./harnesses/index.js";
|
|
5
|
+
export { HARNESS_RUNTIME_PROFILES } from "./harnesses/runtimeProfiles.js";
|
|
6
|
+
export { AGENT_TYPES, AgentStatus } from "./adapters/AgentAdapter.js";
|
|
7
|
+
export { TerminalFocusManager } from "./terminal/TerminalFocusManager.js";
|
|
8
|
+
export { TerminalType } from "./terminal/types.js";
|
|
15
9
|
export { TtyWriter } from "./terminal/TtyWriter.js";
|
|
16
|
-
export { extractHerdrAgentPanes, fetchHerdrAgentPanes, findMatchingHerdrPane, herdrPaneToRuntimeRef } from "./runtime/herdr/HerdrAgentDiscovery.js";
|
|
17
10
|
export { AgentRegistry, RenameNotFoundError, RenameConflictError, AGENT_RUNTIME_PROVIDERS, parseTmuxRuntimeRef } from "./utils/AgentRegistry.js";
|
|
18
|
-
export {
|
|
19
|
-
export {
|
|
20
|
-
export {
|
|
21
|
-
export { getAgentRequestPath, readLatestAgentRequest, writeAgentRequest } from "./utils/agent-requests.js";
|
|
22
|
-
export { AGENT_MODES, DurableAgentError, DurableAgentBusyError, DurableAgentNotFoundError, DurableAgentRepositoryError, DurableAgentNameConflictError, ClaudePrintError, CodexPrintError, PiPrintError } from "./durable/DurableAgent.js";
|
|
11
|
+
export { startAgent, stopAgent, focusAgent, sendAgentPrompt, TmuxUnavailableError, AgentNameInUseError, AgentPidPollTimeoutError, AgentRuntimeUnavailableError, AgentTerminalNotFoundError, DEFAULT_PID_POLL_TIMEOUT_MS } from "./runtime/ManagedAgentRuntime.js";
|
|
12
|
+
export { readLatestAgentRequest, writeAgentRequest } from "./utils/agent-requests.js";
|
|
13
|
+
export { AGENT_MODES } from "./durable/DurableAgent.js";
|
|
23
14
|
export { DurableAgentRepository } from "./durable/DurableAgentRepository.js";
|
|
24
|
-
export { ClaudePrintAgentService } from "./
|
|
25
|
-
export {
|
|
26
|
-
export {
|
|
27
|
-
export { CodexPrintAgentService } from "./providers/codex/durable/CodexPrintAgentService.js";
|
|
28
|
-
export { PiCliProbe } from "./providers/pi/durable/PiCliProbe.js";
|
|
29
|
-
export { PiPrintRunner } from "./providers/pi/durable/PiPrintRunner.js";
|
|
30
|
-
export { PiPrintAgentService } from "./providers/pi/durable/PiPrintAgentService.js";
|
|
15
|
+
export { ClaudePrintAgentService } from "./harnesses/claude/durable/ClaudePrintAgentService.js";
|
|
16
|
+
export { CodexPrintAgentService } from "./harnesses/codex/durable/CodexPrintAgentService.js";
|
|
17
|
+
export { PiPrintAgentService } from "./harnesses/pi/durable/PiPrintAgentService.js";
|
|
31
18
|
|
|
32
19
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { AgentManager
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { AgentManager } from \"./AgentManager.js\";\nexport {\n getAnthropicCapacityReport,\n getClaudeCapacityReport,\n getCodexCapacityReport,\n getOpenAiCapacityReport,\n getZaiCapacityReport,\n} from \"./capacity/index.js\";\nexport type { CapacityReport, CapacityWindow } from \"./capacity/index.js\";\n\nexport {\n getAgentReadinessReports,\n worstReadinessStatus,\n} from \"./harnesses/readiness/AgentReadiness.js\";\nexport type {\n AgentReadinessOptions,\n AgentReadinessReport,\n ReadinessAgentType,\n ReadinessStatus,\n} from \"./harnesses/readiness/AgentReadiness.js\";\n\nexport { createBuiltinAdapters } from \"./harnesses/index.js\";\nexport { HARNESS_RUNTIME_PROFILES, type StartableAgentType } from \"./harnesses/runtimeProfiles.js\";\nexport { AGENT_TYPES, AgentStatus } from \"./adapters/AgentAdapter.js\";\nexport type {\n AgentAdapter,\n AgentType,\n AgentInfo,\n ConversationMessage,\n SessionSummary,\n ListSessionsOptions,\n} from \"./adapters/AgentAdapter.js\";\n\nexport { TerminalFocusManager } from \"./terminal/TerminalFocusManager.js\";\nexport { TerminalType } from \"./terminal/types.js\";\nexport type { TerminalLocation } from \"./terminal/types.js\";\nexport { TtyWriter } from \"./terminal/TtyWriter.js\";\n\nexport {\n AgentRegistry,\n RenameNotFoundError,\n RenameConflictError,\n AGENT_RUNTIME_PROVIDERS,\n parseTmuxRuntimeRef,\n} from \"./utils/AgentRegistry.js\";\nexport type { AgentRuntimeProvider } from \"./utils/AgentRegistry.js\";\nexport type { InteractiveAgentRuntime } from \"./runtime/types.js\";\nexport {\n startAgent,\n stopAgent,\n focusAgent,\n sendAgentPrompt,\n TmuxUnavailableError,\n AgentNameInUseError,\n AgentPidPollTimeoutError,\n AgentRuntimeUnavailableError,\n AgentTerminalNotFoundError,\n DEFAULT_PID_POLL_TIMEOUT_MS,\n} from \"./runtime/ManagedAgentRuntime.js\";\n\nexport type { AgentRequest } from \"./utils/agent-requests.js\";\nexport { readLatestAgentRequest, writeAgentRequest } from \"./utils/agent-requests.js\";\n\nexport { AGENT_MODES } from \"./durable/DurableAgent.js\";\nexport type { DurableProvider } from \"./durable/DurableAgent.js\";\nexport { DurableAgentRepository } from \"./durable/DurableAgentRepository.js\";\nexport { ClaudePrintAgentService } from \"./harnesses/claude/durable/ClaudePrintAgentService.js\";\nexport { CodexPrintAgentService } from \"./harnesses/codex/durable/CodexPrintAgentService.js\";\nexport { PiPrintAgentService } from \"./harnesses/pi/durable/PiPrintAgentService.js\";\n"],"names":["AgentManager","getAnthropicCapacityReport","getClaudeCapacityReport","getCodexCapacityReport","getOpenAiCapacityReport","getZaiCapacityReport","getAgentReadinessReports","worstReadinessStatus","createBuiltinAdapters","HARNESS_RUNTIME_PROFILES","AGENT_TYPES","AgentStatus","TerminalFocusManager","TerminalType","TtyWriter","AgentRegistry","RenameNotFoundError","RenameConflictError","AGENT_RUNTIME_PROVIDERS","parseTmuxRuntimeRef","startAgent","stopAgent","focusAgent","sendAgentPrompt","TmuxUnavailableError","AgentNameInUseError","AgentPidPollTimeoutError","AgentRuntimeUnavailableError","AgentTerminalNotFoundError","DEFAULT_PID_POLL_TIMEOUT_MS","readLatestAgentRequest","writeAgentRequest","AGENT_MODES","DurableAgentRepository","ClaudePrintAgentService","CodexPrintAgentService","PiPrintAgentService"],"mappings":"AAAA,SAASA,YAAY,QAAQ,oBAAoB;AACjD,SACEC,0BAA0B,EAC1BC,uBAAuB,EACvBC,sBAAsB,EACtBC,uBAAuB,EACvBC,oBAAoB,QACf,sBAAsB;AAG7B,SACEC,wBAAwB,EACxBC,oBAAoB,QACf,0CAA0C;AAQjD,SAASC,qBAAqB,QAAQ,uBAAuB;AAC7D,SAASC,wBAAwB,QAAiC,iCAAiC;AACnG,SAASC,WAAW,EAAEC,WAAW,QAAQ,6BAA6B;AAUtE,SAASC,oBAAoB,QAAQ,qCAAqC;AAC1E,SAASC,YAAY,QAAQ,sBAAsB;AAEnD,SAASC,SAAS,QAAQ,0BAA0B;AAEpD,SACEC,aAAa,EACbC,mBAAmB,EACnBC,mBAAmB,EACnBC,uBAAuB,EACvBC,mBAAmB,QACd,2BAA2B;AAGlC,SACEC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,eAAe,EACfC,oBAAoB,EACpBC,mBAAmB,EACnBC,wBAAwB,EACxBC,4BAA4B,EAC5BC,0BAA0B,EAC1BC,2BAA2B,QACtB,mCAAmC;AAG1C,SAASC,sBAAsB,EAAEC,iBAAiB,QAAQ,4BAA4B;AAEtF,SAASC,WAAW,QAAQ,4BAA4B;AAExD,SAASC,sBAAsB,QAAQ,sCAAsC;AAC7E,SAASC,uBAAuB,QAAQ,wDAAwD;AAChG,SAASC,sBAAsB,QAAQ,sDAAsD;AAC7F,SAASC,mBAAmB,QAAQ,gDAAgD"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { AgentInfo } from "../adapters/AgentAdapter.js";
|
|
2
|
-
import type { TerminalLocation } from "../terminal/
|
|
3
|
-
import { TmuxManager } from "
|
|
2
|
+
import type { TerminalLocation } from "../terminal/types.js";
|
|
3
|
+
import { TmuxManager } from "./tmux/TmuxManager.js";
|
|
4
4
|
import { AgentRegistry, type AgentRuntimeProvider, type RegistryEntry } from "../utils/AgentRegistry.js";
|
|
5
|
-
import { type StartableAgentType } from "../
|
|
5
|
+
import { type StartableAgentType } from "../harnesses/runtimeProfiles.js";
|
|
6
6
|
import { DEFAULT_PID_POLL_INTERVAL_MS, DEFAULT_PID_POLL_TIMEOUT_MS } from "./tmux/PidPolling.js";
|
|
7
7
|
import type { InteractiveAgentRuntime } from "./types.js";
|
|
8
8
|
import { AgentNameInUseError, AgentPidPollTimeoutError, AgentRuntimeUnavailableError, AgentTerminalNotFoundError, TmuxUnavailableError } from "./errors.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedAgentRuntime.d.ts","sourceRoot":"","sources":["../../src/runtime/ManagedAgentRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ManagedAgentRuntime.d.ts","sourceRoot":"","sources":["../../src/runtime/ManagedAgentRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TmuxManager } from "
|
|
1
|
+
import { TmuxManager } from "./tmux/TmuxManager.js";
|
|
2
2
|
import { AgentRegistry } from "../utils/AgentRegistry.js";
|
|
3
|
-
import {
|
|
3
|
+
import { HARNESS_RUNTIME_PROFILES } from "../harnesses/runtimeProfiles.js";
|
|
4
4
|
import { createInteractiveRuntime } from "./RuntimeFactory.js";
|
|
5
5
|
import { DEFAULT_PID_POLL_INTERVAL_MS, DEFAULT_PID_POLL_TIMEOUT_MS } from "./tmux/PidPolling.js";
|
|
6
6
|
import { TmuxAgentRuntime } from "./tmux/TmuxAgentRuntime.js";
|
|
@@ -13,7 +13,7 @@ export { DEFAULT_PID_POLL_INTERVAL_MS, DEFAULT_PID_POLL_TIMEOUT_MS };
|
|
|
13
13
|
* Callers are responsible for user input validation before invoking this.
|
|
14
14
|
*/ export async function startAgent(opts, deps = {}) {
|
|
15
15
|
const registry = deps.registry ?? AgentRegistry.default();
|
|
16
|
-
const
|
|
16
|
+
const profile = HARNESS_RUNTIME_PROFILES[opts.type];
|
|
17
17
|
const intervalMs = opts.pollIntervalMs ?? DEFAULT_PID_POLL_INTERVAL_MS;
|
|
18
18
|
const timeoutMs = opts.pollTimeoutMs ?? DEFAULT_PID_POLL_TIMEOUT_MS;
|
|
19
19
|
const provider = opts.runtimeProvider ?? deps.runtime?.provider ?? "tmux";
|
|
@@ -38,12 +38,12 @@ export { DEFAULT_PID_POLL_INTERVAL_MS, DEFAULT_PID_POLL_TIMEOUT_MS };
|
|
|
38
38
|
const result = await runtime.startAgent({
|
|
39
39
|
name: opts.name,
|
|
40
40
|
cwd: opts.cwd,
|
|
41
|
-
kind:
|
|
41
|
+
kind: profile.runtimeKind,
|
|
42
42
|
args: [],
|
|
43
43
|
timeoutMs,
|
|
44
44
|
...provider === "tmux" ? {
|
|
45
|
-
command:
|
|
46
|
-
matches:
|
|
45
|
+
command: profile.command,
|
|
46
|
+
matches: profile.matches,
|
|
47
47
|
pollIntervalMs: intervalMs
|
|
48
48
|
} : {}
|
|
49
49
|
});
|
|
@@ -140,19 +140,5 @@ function resolveRuntimeForEntry(registryEntry, deps) {
|
|
|
140
140
|
function isHerdrRegistryEntry(entry) {
|
|
141
141
|
return typeof entry === "object" && entry !== null && entry.runtime === "herdr" && "runtimeRef" in entry;
|
|
142
142
|
}
|
|
143
|
-
function agentRuntimeKind(type, provider) {
|
|
144
|
-
if (provider === "tmux") return type;
|
|
145
|
-
return ({
|
|
146
|
-
claude: "claude",
|
|
147
|
-
codex: "codex",
|
|
148
|
-
copilot: "copilot",
|
|
149
|
-
gemini_cli: "gemini",
|
|
150
|
-
grok_cli: "grok",
|
|
151
|
-
antigravity_cli: "agy",
|
|
152
|
-
opencode: "opencode",
|
|
153
|
-
pi: "pi",
|
|
154
|
-
kiro: "kiro"
|
|
155
|
-
})[type];
|
|
156
|
-
}
|
|
157
143
|
|
|
158
144
|
//# sourceMappingURL=ManagedAgentRuntime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/ManagedAgentRuntime.ts"],"sourcesContent":["import type { AgentInfo } from \"../adapters/AgentAdapter.js\";\nimport type { TerminalLocation } from \"../terminal/TerminalFocusManager.js\";\nimport { TmuxManager } from \"../terminal/TmuxManager.js\";\nimport {\n AgentRegistry,\n type AgentRuntimeProvider,\n type RegistryEntry,\n} from \"../utils/AgentRegistry.js\";\nimport { AGENTS, type StartableAgentType } from \"../utils/agents.js\";\nimport { createInteractiveRuntime } from \"./RuntimeFactory.js\";\nimport { DEFAULT_PID_POLL_INTERVAL_MS, DEFAULT_PID_POLL_TIMEOUT_MS } from \"./tmux/PidPolling.js\";\nimport { TmuxAgentRuntime } from \"./tmux/TmuxAgentRuntime.js\";\nimport type { InteractiveAgentRuntime } from \"./types.js\";\nimport {\n AgentNameInUseError,\n AgentPidPollTimeoutError,\n AgentRuntimeUnavailableError,\n AgentTerminalNotFoundError,\n TmuxUnavailableError,\n} from \"./errors.js\";\n\nexport {\n AgentNameInUseError,\n AgentPidPollTimeoutError,\n AgentRuntimeUnavailableError,\n AgentTerminalNotFoundError,\n TmuxUnavailableError,\n};\nexport { DEFAULT_PID_POLL_INTERVAL_MS, DEFAULT_PID_POLL_TIMEOUT_MS };\n\nexport interface StartAgentOptions {\n type: StartableAgentType;\n name: string;\n cwd: string;\n runtimeProvider?: AgentRuntimeProvider;\n pollIntervalMs?: number;\n pollTimeoutMs?: number;\n}\n\nexport interface StartAgentDeps {\n tmux?: TmuxManager;\n runtime?: InteractiveAgentRuntime;\n registry?: AgentRegistry;\n /** Called for non-fatal events (e.g., replacing an orphan tmux session). */\n onWarning?: (message: string) => void;\n}\n\nexport interface StopAgentDeps {\n tmux?: Pick<TmuxManager, \"killSession\">;\n runtime?: InteractiveAgentRuntime;\n registry?: Pick<AgentRegistry, \"lookup\">;\n killProcess?: (pid: number, signal: NodeJS.Signals) => void;\n}\n\nexport interface StopAgentResult {\n agentName: string;\n pid: number;\n runtime: AgentRuntimeProvider;\n runtimeRef: unknown | null;\n}\n\nexport interface FocusAgentDeps {\n runtime?: InteractiveAgentRuntime;\n registry?: Pick<AgentRegistry, \"lookup\">;\n focusManager: {\n findTerminal(pid: number): Promise<TerminalLocation | null>;\n focusTerminal(location: TerminalLocation): Promise<boolean>;\n };\n}\n\nexport type FocusAgentResult =\n | { focused: true }\n | { focused: false; reason: \"terminal-not-found\" | \"focus-failed\" };\n\nexport interface SendAgentPromptDeps {\n runtime?: InteractiveAgentRuntime;\n registry?: Pick<AgentRegistry, \"lookup\">;\n focusManager: {\n findTerminal(pid: number): Promise<TerminalLocation | null>;\n };\n writer?: (location: TerminalLocation, text: string) => Promise<void>;\n}\n\n/**\n * Orchestrate `agent start`: ensure the configured runtime is available,\n * create the runtime session, detect the agent PID, and register the entry.\n * Callers are responsible for user input validation before invoking this.\n */\nexport async function startAgent(\n opts: StartAgentOptions,\n deps: StartAgentDeps = {},\n): Promise<RegistryEntry> {\n const registry = deps.registry ?? AgentRegistry.default();\n const agent = AGENTS[opts.type];\n const intervalMs = opts.pollIntervalMs ?? DEFAULT_PID_POLL_INTERVAL_MS;\n const timeoutMs = opts.pollTimeoutMs ?? DEFAULT_PID_POLL_TIMEOUT_MS;\n const provider = opts.runtimeProvider ?? deps.runtime?.provider ?? \"tmux\";\n const tmux = provider === \"tmux\" ? (deps.tmux ?? new TmuxManager()) : undefined;\n const runtime = resolveStartRuntime(provider, { ...deps, tmux });\n\n const availability = await runtime.isAvailable();\n if (!availability.ok) {\n if (provider === \"tmux\") throw new TmuxUnavailableError();\n throw new AgentRuntimeUnavailableError(provider, availability.reason, availability.detail);\n }\n\n registry.prune();\n const existing = registry.lookup(opts.name);\n if (existing) {\n throw new AgentNameInUseError(opts.name, existing.pid);\n }\n\n if (provider === \"tmux\" && tmux && (await tmux.sessionExists(opts.name))) {\n deps.onWarning?.(\n `tmux session \"${opts.name}\" already exists but has no live registry entry — it will be replaced.`,\n );\n }\n\n const result = await runtime.startAgent({\n name: opts.name,\n cwd: opts.cwd,\n kind: agentRuntimeKind(opts.type, provider),\n args: [],\n timeoutMs,\n ...(provider === \"tmux\"\n ? {\n command: agent.command,\n matches: agent.matches,\n pollIntervalMs: intervalMs,\n }\n : {}),\n });\n\n const entry: RegistryEntry = {\n name: opts.name,\n type: opts.type,\n pid: result.pid,\n runtime: runtime.provider,\n runtimeRef: result.runtimeRef,\n cwd: opts.cwd,\n startedAt: new Date().toISOString(),\n sessionId: \"\",\n sessionFilePath: \"\",\n pinned: false,\n };\n registry.register(entry);\n return entry;\n}\n\nexport async function stopAgent(\n agent: Pick<AgentInfo, \"name\" | \"pid\">,\n deps: StopAgentDeps = {},\n): Promise<StopAgentResult> {\n const registry = deps.registry ?? AgentRegistry.default();\n const registryEntry = registry.lookup(agent.name);\n const runtime = resolveRuntimeForEntry(registryEntry, deps);\n const runtimeRef = registryEntry?.runtimeRef ?? null;\n\n await runtime.stop({\n agent,\n runtimeRef,\n killProcess: deps.killProcess,\n });\n\n return {\n agentName: agent.name,\n pid: agent.pid,\n runtime: runtime.provider,\n runtimeRef,\n };\n}\n\nexport async function focusAgent(\n agent: Pick<AgentInfo, \"name\" | \"pid\">,\n deps: FocusAgentDeps,\n): Promise<FocusAgentResult> {\n const registry = deps.registry ?? AgentRegistry.default();\n const registryEntry = registry.lookup(agent.name);\n const runtime = resolveRuntimeForEntry(registryEntry, deps);\n if (runtime.provider === \"tmux\") {\n const location = await deps.focusManager.findTerminal(agent.pid);\n if (!location) return { focused: false, reason: \"terminal-not-found\" };\n\n const focused = await deps.focusManager.focusTerminal(location);\n return focused ? { focused: true } : { focused: false, reason: \"focus-failed\" };\n }\n\n const focused = await runtime.focus({\n agent,\n runtimeRef: registryEntry?.runtimeRef ?? null,\n focusManager: deps.focusManager,\n });\n\n if (focused) return { focused: true };\n return { focused: false, reason: \"focus-failed\" };\n}\n\nexport async function sendAgentPrompt(\n agent: Pick<AgentInfo, \"name\" | \"pid\">,\n prompt: string,\n deps: SendAgentPromptDeps,\n): Promise<void> {\n const registry = deps.registry ?? AgentRegistry.default();\n const registryEntry = registry.lookup(agent.name);\n const runtime = resolveRuntimeForEntry(registryEntry, deps);\n\n await runtime.send(\n {\n agent,\n runtimeRef: registryEntry?.runtimeRef ?? null,\n prompt,\n },\n {\n focusManager: deps.focusManager,\n writer: deps.writer,\n },\n );\n}\n\nfunction resolveStartRuntime(\n provider: AgentRuntimeProvider,\n deps: StartAgentDeps,\n): InteractiveAgentRuntime {\n if (deps.runtime && deps.runtime.provider === provider) {\n return deps.runtime;\n }\n if (provider === \"tmux\") return new TmuxAgentRuntime(deps.tmux);\n return createInteractiveRuntime(provider);\n}\n\nfunction resolveRuntimeForEntry(\n registryEntry: RegistryEntry | null,\n deps: { runtime?: InteractiveAgentRuntime; tmux?: Pick<TmuxManager, \"killSession\"> },\n): InteractiveAgentRuntime {\n if (isHerdrRegistryEntry(registryEntry)) {\n return deps.runtime?.provider === \"herdr\" ? deps.runtime : createInteractiveRuntime(\"herdr\");\n }\n if (deps.runtime?.provider === \"tmux\") return deps.runtime;\n return deps.tmux\n ? new TmuxAgentRuntime(deps.tmux as TmuxManager)\n : createInteractiveRuntime(\"tmux\");\n}\n\nfunction isHerdrRegistryEntry(\n entry: unknown,\n): entry is RegistryEntry & { runtime: \"herdr\"; runtimeRef: unknown } {\n return (\n typeof entry === \"object\" &&\n entry !== null &&\n (entry as { runtime?: unknown }).runtime === \"herdr\" &&\n \"runtimeRef\" in entry\n );\n}\n\nfunction agentRuntimeKind(type: StartableAgentType, provider: AgentRuntimeProvider): string {\n if (provider === \"tmux\") return type;\n return {\n claude: \"claude\",\n codex: \"codex\",\n copilot: \"copilot\",\n gemini_cli: \"gemini\",\n grok_cli: \"grok\",\n antigravity_cli: \"agy\",\n opencode: \"opencode\",\n pi: \"pi\",\n kiro: \"kiro\",\n }[type];\n}\n"],"names":["TmuxManager","AgentRegistry","AGENTS","createInteractiveRuntime","DEFAULT_PID_POLL_INTERVAL_MS","DEFAULT_PID_POLL_TIMEOUT_MS","TmuxAgentRuntime","AgentNameInUseError","AgentPidPollTimeoutError","AgentRuntimeUnavailableError","AgentTerminalNotFoundError","TmuxUnavailableError","startAgent","opts","deps","registry","default","agent","type","intervalMs","pollIntervalMs","timeoutMs","pollTimeoutMs","provider","runtimeProvider","runtime","tmux","undefined","resolveStartRuntime","availability","isAvailable","ok","reason","detail","prune","existing","lookup","name","pid","sessionExists","onWarning","result","cwd","kind","agentRuntimeKind","args","command","matches","entry","runtimeRef","startedAt","Date","toISOString","sessionId","sessionFilePath","pinned","register","stopAgent","registryEntry","resolveRuntimeForEntry","stop","killProcess","agentName","focusAgent","location","focusManager","findTerminal","focused","focusTerminal","focus","sendAgentPrompt","prompt","send","writer","isHerdrRegistryEntry","claude","codex","copilot","gemini_cli","grok_cli","antigravity_cli","opencode","pi","kiro"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/ManagedAgentRuntime.ts"],"sourcesContent":["import type { AgentInfo } from \"../adapters/AgentAdapter.js\";\nimport type { TerminalLocation } from \"../terminal/types.js\";\nimport { TmuxManager } from \"./tmux/TmuxManager.js\";\nimport {\n AgentRegistry,\n type AgentRuntimeProvider,\n type RegistryEntry,\n} from \"../utils/AgentRegistry.js\";\nimport { HARNESS_RUNTIME_PROFILES, type StartableAgentType } from \"../harnesses/runtimeProfiles.js\";\nimport { createInteractiveRuntime } from \"./RuntimeFactory.js\";\nimport { DEFAULT_PID_POLL_INTERVAL_MS, DEFAULT_PID_POLL_TIMEOUT_MS } from \"./tmux/PidPolling.js\";\nimport { TmuxAgentRuntime } from \"./tmux/TmuxAgentRuntime.js\";\nimport type { InteractiveAgentRuntime } from \"./types.js\";\nimport {\n AgentNameInUseError,\n AgentPidPollTimeoutError,\n AgentRuntimeUnavailableError,\n AgentTerminalNotFoundError,\n TmuxUnavailableError,\n} from \"./errors.js\";\n\nexport {\n AgentNameInUseError,\n AgentPidPollTimeoutError,\n AgentRuntimeUnavailableError,\n AgentTerminalNotFoundError,\n TmuxUnavailableError,\n};\nexport { DEFAULT_PID_POLL_INTERVAL_MS, DEFAULT_PID_POLL_TIMEOUT_MS };\n\nexport interface StartAgentOptions {\n type: StartableAgentType;\n name: string;\n cwd: string;\n runtimeProvider?: AgentRuntimeProvider;\n pollIntervalMs?: number;\n pollTimeoutMs?: number;\n}\n\nexport interface StartAgentDeps {\n tmux?: TmuxManager;\n runtime?: InteractiveAgentRuntime;\n registry?: AgentRegistry;\n /** Called for non-fatal events (e.g., replacing an orphan tmux session). */\n onWarning?: (message: string) => void;\n}\n\nexport interface StopAgentDeps {\n tmux?: Pick<TmuxManager, \"killSession\">;\n runtime?: InteractiveAgentRuntime;\n registry?: Pick<AgentRegistry, \"lookup\">;\n killProcess?: (pid: number, signal: NodeJS.Signals) => void;\n}\n\nexport interface StopAgentResult {\n agentName: string;\n pid: number;\n runtime: AgentRuntimeProvider;\n runtimeRef: unknown | null;\n}\n\nexport interface FocusAgentDeps {\n runtime?: InteractiveAgentRuntime;\n registry?: Pick<AgentRegistry, \"lookup\">;\n focusManager: {\n findTerminal(pid: number): Promise<TerminalLocation | null>;\n focusTerminal(location: TerminalLocation): Promise<boolean>;\n };\n}\n\nexport type FocusAgentResult =\n | { focused: true }\n | { focused: false; reason: \"terminal-not-found\" | \"focus-failed\" };\n\nexport interface SendAgentPromptDeps {\n runtime?: InteractiveAgentRuntime;\n registry?: Pick<AgentRegistry, \"lookup\">;\n focusManager: {\n findTerminal(pid: number): Promise<TerminalLocation | null>;\n };\n writer?: (location: TerminalLocation, text: string) => Promise<void>;\n}\n\n/**\n * Orchestrate `agent start`: ensure the configured runtime is available,\n * create the runtime session, detect the agent PID, and register the entry.\n * Callers are responsible for user input validation before invoking this.\n */\nexport async function startAgent(\n opts: StartAgentOptions,\n deps: StartAgentDeps = {},\n): Promise<RegistryEntry> {\n const registry = deps.registry ?? AgentRegistry.default();\n const profile = HARNESS_RUNTIME_PROFILES[opts.type];\n const intervalMs = opts.pollIntervalMs ?? DEFAULT_PID_POLL_INTERVAL_MS;\n const timeoutMs = opts.pollTimeoutMs ?? DEFAULT_PID_POLL_TIMEOUT_MS;\n const provider = opts.runtimeProvider ?? deps.runtime?.provider ?? \"tmux\";\n const tmux = provider === \"tmux\" ? (deps.tmux ?? new TmuxManager()) : undefined;\n const runtime = resolveStartRuntime(provider, { ...deps, tmux });\n\n const availability = await runtime.isAvailable();\n if (!availability.ok) {\n if (provider === \"tmux\") throw new TmuxUnavailableError();\n throw new AgentRuntimeUnavailableError(provider, availability.reason, availability.detail);\n }\n\n registry.prune();\n const existing = registry.lookup(opts.name);\n if (existing) {\n throw new AgentNameInUseError(opts.name, existing.pid);\n }\n\n if (provider === \"tmux\" && tmux && (await tmux.sessionExists(opts.name))) {\n deps.onWarning?.(\n `tmux session \"${opts.name}\" already exists but has no live registry entry — it will be replaced.`,\n );\n }\n\n const result = await runtime.startAgent({\n name: opts.name,\n cwd: opts.cwd,\n kind: profile.runtimeKind,\n args: [],\n timeoutMs,\n ...(provider === \"tmux\"\n ? {\n command: profile.command,\n matches: profile.matches,\n pollIntervalMs: intervalMs,\n }\n : {}),\n });\n\n const entry: RegistryEntry = {\n name: opts.name,\n type: opts.type,\n pid: result.pid,\n runtime: runtime.provider,\n runtimeRef: result.runtimeRef,\n cwd: opts.cwd,\n startedAt: new Date().toISOString(),\n sessionId: \"\",\n sessionFilePath: \"\",\n pinned: false,\n };\n registry.register(entry);\n return entry;\n}\n\nexport async function stopAgent(\n agent: Pick<AgentInfo, \"name\" | \"pid\">,\n deps: StopAgentDeps = {},\n): Promise<StopAgentResult> {\n const registry = deps.registry ?? AgentRegistry.default();\n const registryEntry = registry.lookup(agent.name);\n const runtime = resolveRuntimeForEntry(registryEntry, deps);\n const runtimeRef = registryEntry?.runtimeRef ?? null;\n\n await runtime.stop({\n agent,\n runtimeRef,\n killProcess: deps.killProcess,\n });\n\n return {\n agentName: agent.name,\n pid: agent.pid,\n runtime: runtime.provider,\n runtimeRef,\n };\n}\n\nexport async function focusAgent(\n agent: Pick<AgentInfo, \"name\" | \"pid\">,\n deps: FocusAgentDeps,\n): Promise<FocusAgentResult> {\n const registry = deps.registry ?? AgentRegistry.default();\n const registryEntry = registry.lookup(agent.name);\n const runtime = resolveRuntimeForEntry(registryEntry, deps);\n if (runtime.provider === \"tmux\") {\n const location = await deps.focusManager.findTerminal(agent.pid);\n if (!location) return { focused: false, reason: \"terminal-not-found\" };\n\n const focused = await deps.focusManager.focusTerminal(location);\n return focused ? { focused: true } : { focused: false, reason: \"focus-failed\" };\n }\n\n const focused = await runtime.focus({\n agent,\n runtimeRef: registryEntry?.runtimeRef ?? null,\n focusManager: deps.focusManager,\n });\n\n if (focused) return { focused: true };\n return { focused: false, reason: \"focus-failed\" };\n}\n\nexport async function sendAgentPrompt(\n agent: Pick<AgentInfo, \"name\" | \"pid\">,\n prompt: string,\n deps: SendAgentPromptDeps,\n): Promise<void> {\n const registry = deps.registry ?? AgentRegistry.default();\n const registryEntry = registry.lookup(agent.name);\n const runtime = resolveRuntimeForEntry(registryEntry, deps);\n\n await runtime.send(\n {\n agent,\n runtimeRef: registryEntry?.runtimeRef ?? null,\n prompt,\n },\n {\n focusManager: deps.focusManager,\n writer: deps.writer,\n },\n );\n}\n\nfunction resolveStartRuntime(\n provider: AgentRuntimeProvider,\n deps: StartAgentDeps,\n): InteractiveAgentRuntime {\n if (deps.runtime && deps.runtime.provider === provider) {\n return deps.runtime;\n }\n if (provider === \"tmux\") return new TmuxAgentRuntime(deps.tmux);\n return createInteractiveRuntime(provider);\n}\n\nfunction resolveRuntimeForEntry(\n registryEntry: RegistryEntry | null,\n deps: { runtime?: InteractiveAgentRuntime; tmux?: Pick<TmuxManager, \"killSession\"> },\n): InteractiveAgentRuntime {\n if (isHerdrRegistryEntry(registryEntry)) {\n return deps.runtime?.provider === \"herdr\" ? deps.runtime : createInteractiveRuntime(\"herdr\");\n }\n if (deps.runtime?.provider === \"tmux\") return deps.runtime;\n return deps.tmux\n ? new TmuxAgentRuntime(deps.tmux as TmuxManager)\n : createInteractiveRuntime(\"tmux\");\n}\n\nfunction isHerdrRegistryEntry(\n entry: unknown,\n): entry is RegistryEntry & { runtime: \"herdr\"; runtimeRef: unknown } {\n return (\n typeof entry === \"object\" &&\n entry !== null &&\n (entry as { runtime?: unknown }).runtime === \"herdr\" &&\n \"runtimeRef\" in entry\n );\n}\n"],"names":["TmuxManager","AgentRegistry","HARNESS_RUNTIME_PROFILES","createInteractiveRuntime","DEFAULT_PID_POLL_INTERVAL_MS","DEFAULT_PID_POLL_TIMEOUT_MS","TmuxAgentRuntime","AgentNameInUseError","AgentPidPollTimeoutError","AgentRuntimeUnavailableError","AgentTerminalNotFoundError","TmuxUnavailableError","startAgent","opts","deps","registry","default","profile","type","intervalMs","pollIntervalMs","timeoutMs","pollTimeoutMs","provider","runtimeProvider","runtime","tmux","undefined","resolveStartRuntime","availability","isAvailable","ok","reason","detail","prune","existing","lookup","name","pid","sessionExists","onWarning","result","cwd","kind","runtimeKind","args","command","matches","entry","runtimeRef","startedAt","Date","toISOString","sessionId","sessionFilePath","pinned","register","stopAgent","agent","registryEntry","resolveRuntimeForEntry","stop","killProcess","agentName","focusAgent","location","focusManager","findTerminal","focused","focusTerminal","focus","sendAgentPrompt","prompt","send","writer","isHerdrRegistryEntry"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HerdrAgentDiscovery.d.ts","sourceRoot":"","sources":["../../../src/runtime/herdr/HerdrAgentDiscovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"HerdrAgentDiscovery.d.ts","sourceRoot":"","sources":["../../../src/runtime/herdr/HerdrAgentDiscovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,oBAAoB,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAIjG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,EAAE,CA8BvE;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,GAAG,KAAK,CAAC,EACpE,KAAK,EAAE,SAAS,cAAc,EAAE,GAC/B,cAAc,GAAG,IAAI,CAmBvB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAQ9F"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { runtimeAgentMatchesHarness } from "../../harnesses/runtimeProfiles.js";
|
|
1
2
|
import { HerdrCliClient } from "./HerdrCliClient.js";
|
|
2
3
|
export async function fetchHerdrAgentPanes(runner) {
|
|
3
4
|
const client = new HerdrCliClient(runner);
|
|
@@ -62,7 +63,7 @@ export function findMatchingHerdrPane(agent, panes) {
|
|
|
62
63
|
const shellPidMatches = panes.filter((pane)=>pane.shellPid === agent.pid);
|
|
63
64
|
if (shellPidMatches.length === 1) return shellPidMatches[0];
|
|
64
65
|
if (shellPidMatches.length > 1) return null;
|
|
65
|
-
const cwdMatches = panes.filter((pane)=>pane.cwd === agent.projectPath &&
|
|
66
|
+
const cwdMatches = panes.filter((pane)=>pane.cwd === agent.projectPath && runtimeAgentMatchesHarness(pane.agent, agent.type));
|
|
66
67
|
return cwdMatches.length === 1 ? cwdMatches[0] : null;
|
|
67
68
|
}
|
|
68
69
|
export function herdrPaneToRuntimeRef(pane, agentName) {
|
|
@@ -78,48 +79,6 @@ export function herdrPaneToRuntimeRef(pane, agentName) {
|
|
|
78
79
|
} : {}
|
|
79
80
|
};
|
|
80
81
|
}
|
|
81
|
-
function herdrAgentMatchesType(herdrAgent, agentType) {
|
|
82
|
-
const normalized = herdrAgent.toLowerCase();
|
|
83
|
-
const candidates = {
|
|
84
|
-
claude: [
|
|
85
|
-
"claude"
|
|
86
|
-
],
|
|
87
|
-
codex: [
|
|
88
|
-
"codex"
|
|
89
|
-
],
|
|
90
|
-
copilot: [
|
|
91
|
-
"copilot"
|
|
92
|
-
],
|
|
93
|
-
gemini_cli: [
|
|
94
|
-
"gemini",
|
|
95
|
-
"gemini_cli"
|
|
96
|
-
],
|
|
97
|
-
grok_cli: [
|
|
98
|
-
"grok",
|
|
99
|
-
"grok_cli"
|
|
100
|
-
],
|
|
101
|
-
antigravity_cli: [
|
|
102
|
-
"agy",
|
|
103
|
-
"antigravity",
|
|
104
|
-
"antigravity_cli"
|
|
105
|
-
],
|
|
106
|
-
kiro: [
|
|
107
|
-
"kiro",
|
|
108
|
-
"kiro_cli",
|
|
109
|
-
"kiro-cli"
|
|
110
|
-
],
|
|
111
|
-
opencode: [
|
|
112
|
-
"opencode"
|
|
113
|
-
],
|
|
114
|
-
pi: [
|
|
115
|
-
"pi"
|
|
116
|
-
],
|
|
117
|
-
other: [
|
|
118
|
-
"other"
|
|
119
|
-
]
|
|
120
|
-
};
|
|
121
|
-
return candidates[agentType]?.includes(normalized) ?? false;
|
|
122
|
-
}
|
|
123
82
|
async function enrichHerdrAgentPanes(client, panes) {
|
|
124
83
|
return Promise.all(panes.map(async (pane)=>{
|
|
125
84
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/runtime/herdr/HerdrAgentDiscovery.ts"],"sourcesContent":["import type { AgentInfo, AgentType } from \"../../adapters/AgentAdapter.js\";\nimport { HerdrCliClient, type HerdrCommandRunner } from \"./HerdrCliClient.js\";\nimport type { HerdrRuntimeRef } from \"./HerdrRuntimeRef.js\";\n\nexport interface HerdrAgentPane {\n agent: string;\n agentSessionId?: string;\n cwd?: string;\n paneId: string;\n workspaceId?: string;\n tabId?: string;\n foregroundPids?: number[];\n shellPid?: number;\n}\n\nexport async function fetchHerdrAgentPanes(runner?: HerdrCommandRunner): Promise<HerdrAgentPane[]> {\n const client = new HerdrCliClient(runner);\n const response = await client.runJson([\"pane\", \"list\"]);\n return enrichHerdrAgentPanes(client, extractHerdrAgentPanes(response));\n}\n\nexport function extractHerdrAgentPanes(value: unknown): HerdrAgentPane[] {\n const snapshot = getObject(value, [\"result\", \"snapshot\"]);\n const rawPanes = getArray(value, [\"result\", \"panes\"]) ?? snapshot?.agents;\n if (!Array.isArray(rawPanes)) return [];\n\n const panes: HerdrAgentPane[] = [];\n for (const rawPane of rawPanes) {\n if (!rawPane || typeof rawPane !== \"object\" || Array.isArray(rawPane)) continue;\n const pane = rawPane as Record<string, unknown>;\n const agent = nonEmptyString(pane.agent);\n const paneId = nonEmptyString(pane.pane_id);\n if (!agent || !paneId) continue;\n\n const session = getObject(pane, [\"agent_session\"]);\n const agentSessionId = nonEmptyString(session?.value);\n const cwd = nonEmptyString(pane.cwd);\n const workspaceId = nonEmptyString(pane.workspace_id);\n const tabId = nonEmptyString(pane.tab_id);\n\n panes.push({\n agent,\n paneId,\n ...(agentSessionId ? { agentSessionId } : {}),\n ...(cwd ? { cwd } : {}),\n ...(workspaceId ? { workspaceId } : {}),\n ...(tabId ? { tabId } : {}),\n });\n }\n\n return panes;\n}\n\nexport function findMatchingHerdrPane(\n agent: Pick<AgentInfo, \"type\" | \"projectPath\" | \"sessionId\" | \"pid\">,\n panes: readonly HerdrAgentPane[],\n): HerdrAgentPane | null {\n if (agent.sessionId) {\n const sessionMatches = panes.filter((pane) => pane.agentSessionId === agent.sessionId);\n if (sessionMatches.length === 1) return sessionMatches[0]!;\n if (sessionMatches.length > 1) return null;\n }\n\n const foregroundPidMatches = panes.filter((pane) => pane.foregroundPids?.includes(agent.pid));\n if (foregroundPidMatches.length === 1) return foregroundPidMatches[0]!;\n if (foregroundPidMatches.length > 1) return null;\n\n const shellPidMatches = panes.filter((pane) => pane.shellPid === agent.pid);\n if (shellPidMatches.length === 1) return shellPidMatches[0]!;\n if (shellPidMatches.length > 1) return null;\n\n const cwdMatches = panes.filter(\n (pane) => pane.cwd === agent.projectPath && herdrAgentMatchesType(pane.agent, agent.type),\n );\n return cwdMatches.length === 1 ? cwdMatches[0]! : null;\n}\n\nexport function herdrPaneToRuntimeRef(pane: HerdrAgentPane, agentName: string): HerdrRuntimeRef {\n return {\n session: \"default\",\n paneId: pane.paneId,\n agentName,\n ...(pane.workspaceId ? { workspaceId: pane.workspaceId } : {}),\n ...(pane.tabId ? { tabId: pane.tabId } : {}),\n };\n}\n\nfunction herdrAgentMatchesType(herdrAgent: string, agentType: AgentType): boolean {\n const normalized = herdrAgent.toLowerCase();\n const candidates: Record<AgentType, readonly string[]> = {\n claude: [\"claude\"],\n codex: [\"codex\"],\n copilot: [\"copilot\"],\n gemini_cli: [\"gemini\", \"gemini_cli\"],\n grok_cli: [\"grok\", \"grok_cli\"],\n antigravity_cli: [\"agy\", \"antigravity\", \"antigravity_cli\"],\n kiro: [\"kiro\", \"kiro_cli\", \"kiro-cli\"],\n opencode: [\"opencode\"],\n pi: [\"pi\"],\n other: [\"other\"],\n };\n return candidates[agentType]?.includes(normalized) ?? false;\n}\n\nasync function enrichHerdrAgentPanes(\n client: HerdrCliClient,\n panes: HerdrAgentPane[],\n): Promise<HerdrAgentPane[]> {\n return Promise.all(\n panes.map(async (pane) => {\n try {\n const response = await client.runJson([\"pane\", \"process-info\", \"--pane\", pane.paneId]);\n return {\n ...pane,\n ...extractPaneProcessIds(response),\n };\n } catch {\n return pane;\n }\n }),\n );\n}\n\nfunction extractPaneProcessIds(\n value: unknown,\n): Pick<HerdrAgentPane, \"foregroundPids\" | \"shellPid\"> {\n const processInfo = getObject(value, [\"result\", \"process_info\"]);\n if (!processInfo) return {};\n\n const foregroundProcesses = processInfo.foreground_processes;\n const foregroundPids: number[] = [];\n if (Array.isArray(foregroundProcesses)) {\n for (const foregroundProcess of foregroundProcesses) {\n if (\n !foregroundProcess ||\n typeof foregroundProcess !== \"object\" ||\n Array.isArray(foregroundProcess)\n )\n continue;\n const pid = positiveIntegerOrNull((foregroundProcess as { pid?: unknown }).pid);\n if (pid !== null) foregroundPids.push(pid);\n }\n }\n const shellPid = positiveIntegerOrNull(processInfo.shell_pid);\n\n return {\n ...(foregroundPids.length > 0 ? { foregroundPids } : {}),\n ...(shellPid !== null ? { shellPid } : {}),\n };\n}\n\nfunction getArray(value: unknown, path: string[]): unknown[] | null {\n let current = value;\n for (const part of path) {\n if (!current || typeof current !== \"object\" || Array.isArray(current) || !(part in current)) {\n return null;\n }\n current = (current as Record<string, unknown>)[part];\n }\n return Array.isArray(current) ? current : null;\n}\n\nfunction getObject(value: unknown, path: string[]): Record<string, unknown> | null {\n let current = value;\n for (const part of path) {\n if (!current || typeof current !== \"object\" || Array.isArray(current) || !(part in current)) {\n return null;\n }\n current = (current as Record<string, unknown>)[part];\n }\n return current && typeof current === \"object\" && !Array.isArray(current)\n ? (current as Record<string, unknown>)\n : null;\n}\n\nfunction nonEmptyString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value : undefined;\n}\n\nfunction positiveIntegerOrNull(value: unknown): number | null {\n return typeof value === \"number\" && Number.isInteger(value) && value > 0 ? value : null;\n}\n"],"names":["HerdrCliClient","fetchHerdrAgentPanes","runner","client","response","runJson","enrichHerdrAgentPanes","extractHerdrAgentPanes","value","snapshot","getObject","rawPanes","getArray","agents","Array","isArray","panes","rawPane","pane","agent","nonEmptyString","paneId","pane_id","session","agentSessionId","cwd","workspaceId","workspace_id","tabId","tab_id","push","findMatchingHerdrPane","sessionId","sessionMatches","filter","length","foregroundPidMatches","foregroundPids","includes","pid","shellPidMatches","shellPid","cwdMatches","projectPath","herdrAgentMatchesType","type","herdrPaneToRuntimeRef","agentName","herdrAgent","agentType","normalized","toLowerCase","candidates","claude","codex","copilot","gemini_cli","grok_cli","antigravity_cli","kiro","opencode","pi","other","Promise","all","map","extractPaneProcessIds","processInfo","foregroundProcesses","foreground_processes","foregroundProcess","positiveIntegerOrNull","shell_pid","path","current","part","trim","undefined","Number","isInteger"],"mappings":"AACA,SAASA,cAAc,QAAiC,sBAAsB;AAc9E,OAAO,eAAeC,qBAAqBC,MAA2B;IACpE,MAAMC,SAAS,IAAIH,eAAeE;IAClC,MAAME,WAAW,MAAMD,OAAOE,OAAO,CAAC;QAAC;QAAQ;KAAO;IACtD,OAAOC,sBAAsBH,QAAQI,uBAAuBH;AAC9D;AAEA,OAAO,SAASG,uBAAuBC,KAAc;IACnD,MAAMC,WAAWC,UAAUF,OAAO;QAAC;QAAU;KAAW;IACxD,MAAMG,WAAWC,SAASJ,OAAO;QAAC;QAAU;KAAQ,KAAKC,UAAUI;IACnE,IAAI,CAACC,MAAMC,OAAO,CAACJ,WAAW,OAAO,EAAE;IAEvC,MAAMK,QAA0B,EAAE;IAClC,KAAK,MAAMC,WAAWN,SAAU;QAC9B,IAAI,CAACM,WAAW,OAAOA,YAAY,YAAYH,MAAMC,OAAO,CAACE,UAAU;QACvE,MAAMC,OAAOD;QACb,MAAME,QAAQC,eAAeF,KAAKC,KAAK;QACvC,MAAME,SAASD,eAAeF,KAAKI,OAAO;QAC1C,IAAI,CAACH,SAAS,CAACE,QAAQ;QAEvB,MAAME,UAAUb,UAAUQ,MAAM;YAAC;SAAgB;QACjD,MAAMM,iBAAiBJ,eAAeG,SAASf;QAC/C,MAAMiB,MAAML,eAAeF,KAAKO,GAAG;QACnC,MAAMC,cAAcN,eAAeF,KAAKS,YAAY;QACpD,MAAMC,QAAQR,eAAeF,KAAKW,MAAM;QAExCb,MAAMc,IAAI,CAAC;YACTX;YACAE;YACA,GAAIG,iBAAiB;gBAAEA;YAAe,IAAI,CAAC,CAAC;YAC5C,GAAIC,MAAM;gBAAEA;YAAI,IAAI,CAAC,CAAC;YACtB,GAAIC,cAAc;gBAAEA;YAAY,IAAI,CAAC,CAAC;YACtC,GAAIE,QAAQ;gBAAEA;YAAM,IAAI,CAAC,CAAC;QAC5B;IACF;IAEA,OAAOZ;AACT;AAEA,OAAO,SAASe,sBACdZ,KAAoE,EACpEH,KAAgC;IAEhC,IAAIG,MAAMa,SAAS,EAAE;QACnB,MAAMC,iBAAiBjB,MAAMkB,MAAM,CAAC,CAAChB,OAASA,KAAKM,cAAc,KAAKL,MAAMa,SAAS;QACrF,IAAIC,eAAeE,MAAM,KAAK,GAAG,OAAOF,cAAc,CAAC,EAAE;QACzD,IAAIA,eAAeE,MAAM,GAAG,GAAG,OAAO;IACxC;IAEA,MAAMC,uBAAuBpB,MAAMkB,MAAM,CAAC,CAAChB,OAASA,KAAKmB,cAAc,EAAEC,SAASnB,MAAMoB,GAAG;IAC3F,IAAIH,qBAAqBD,MAAM,KAAK,GAAG,OAAOC,oBAAoB,CAAC,EAAE;IACrE,IAAIA,qBAAqBD,MAAM,GAAG,GAAG,OAAO;IAE5C,MAAMK,kBAAkBxB,MAAMkB,MAAM,CAAC,CAAChB,OAASA,KAAKuB,QAAQ,KAAKtB,MAAMoB,GAAG;IAC1E,IAAIC,gBAAgBL,MAAM,KAAK,GAAG,OAAOK,eAAe,CAAC,EAAE;IAC3D,IAAIA,gBAAgBL,MAAM,GAAG,GAAG,OAAO;IAEvC,MAAMO,aAAa1B,MAAMkB,MAAM,CAC7B,CAAChB,OAASA,KAAKO,GAAG,KAAKN,MAAMwB,WAAW,IAAIC,sBAAsB1B,KAAKC,KAAK,EAAEA,MAAM0B,IAAI;IAE1F,OAAOH,WAAWP,MAAM,KAAK,IAAIO,UAAU,CAAC,EAAE,GAAI;AACpD;AAEA,OAAO,SAASI,sBAAsB5B,IAAoB,EAAE6B,SAAiB;IAC3E,OAAO;QACLxB,SAAS;QACTF,QAAQH,KAAKG,MAAM;QACnB0B;QACA,GAAI7B,KAAKQ,WAAW,GAAG;YAAEA,aAAaR,KAAKQ,WAAW;QAAC,IAAI,CAAC,CAAC;QAC7D,GAAIR,KAAKU,KAAK,GAAG;YAAEA,OAAOV,KAAKU,KAAK;QAAC,IAAI,CAAC,CAAC;IAC7C;AACF;AAEA,SAASgB,sBAAsBI,UAAkB,EAAEC,SAAoB;IACrE,MAAMC,aAAaF,WAAWG,WAAW;IACzC,MAAMC,aAAmD;QACvDC,QAAQ;YAAC;SAAS;QAClBC,OAAO;YAAC;SAAQ;QAChBC,SAAS;YAAC;SAAU;QACpBC,YAAY;YAAC;YAAU;SAAa;QACpCC,UAAU;YAAC;YAAQ;SAAW;QAC9BC,iBAAiB;YAAC;YAAO;YAAe;SAAkB;QAC1DC,MAAM;YAAC;YAAQ;YAAY;SAAW;QACtCC,UAAU;YAAC;SAAW;QACtBC,IAAI;YAAC;SAAK;QACVC,OAAO;YAAC;SAAQ;IAClB;IACA,OAAOV,UAAU,CAACH,UAAU,EAAEX,SAASY,eAAe;AACxD;AAEA,eAAe5C,sBACbH,MAAsB,EACtBa,KAAuB;IAEvB,OAAO+C,QAAQC,GAAG,CAChBhD,MAAMiD,GAAG,CAAC,OAAO/C;QACf,IAAI;YACF,MAAMd,WAAW,MAAMD,OAAOE,OAAO,CAAC;gBAAC;gBAAQ;gBAAgB;gBAAUa,KAAKG,MAAM;aAAC;YACrF,OAAO;gBACL,GAAGH,IAAI;gBACP,GAAGgD,sBAAsB9D,SAAS;YACpC;QACF,EAAE,OAAM;YACN,OAAOc;QACT;IACF;AAEJ;AAEA,SAASgD,sBACP1D,KAAc;IAEd,MAAM2D,cAAczD,UAAUF,OAAO;QAAC;QAAU;KAAe;IAC/D,IAAI,CAAC2D,aAAa,OAAO,CAAC;IAE1B,MAAMC,sBAAsBD,YAAYE,oBAAoB;IAC5D,MAAMhC,iBAA2B,EAAE;IACnC,IAAIvB,MAAMC,OAAO,CAACqD,sBAAsB;QACtC,KAAK,MAAME,qBAAqBF,oBAAqB;YACnD,IACE,CAACE,qBACD,OAAOA,sBAAsB,YAC7BxD,MAAMC,OAAO,CAACuD,oBAEd;YACF,MAAM/B,MAAMgC,sBAAsB,AAACD,kBAAwC/B,GAAG;YAC9E,IAAIA,QAAQ,MAAMF,eAAeP,IAAI,CAACS;QACxC;IACF;IACA,MAAME,WAAW8B,sBAAsBJ,YAAYK,SAAS;IAE5D,OAAO;QACL,GAAInC,eAAeF,MAAM,GAAG,IAAI;YAAEE;QAAe,IAAI,CAAC,CAAC;QACvD,GAAII,aAAa,OAAO;YAAEA;QAAS,IAAI,CAAC,CAAC;IAC3C;AACF;AAEA,SAAS7B,SAASJ,KAAc,EAAEiE,IAAc;IAC9C,IAAIC,UAAUlE;IACd,KAAK,MAAMmE,QAAQF,KAAM;QACvB,IAAI,CAACC,WAAW,OAAOA,YAAY,YAAY5D,MAAMC,OAAO,CAAC2D,YAAY,CAAEC,CAAAA,QAAQD,OAAM,GAAI;YAC3F,OAAO;QACT;QACAA,UAAU,AAACA,OAAmC,CAACC,KAAK;IACtD;IACA,OAAO7D,MAAMC,OAAO,CAAC2D,WAAWA,UAAU;AAC5C;AAEA,SAAShE,UAAUF,KAAc,EAAEiE,IAAc;IAC/C,IAAIC,UAAUlE;IACd,KAAK,MAAMmE,QAAQF,KAAM;QACvB,IAAI,CAACC,WAAW,OAAOA,YAAY,YAAY5D,MAAMC,OAAO,CAAC2D,YAAY,CAAEC,CAAAA,QAAQD,OAAM,GAAI;YAC3F,OAAO;QACT;QACAA,UAAU,AAACA,OAAmC,CAACC,KAAK;IACtD;IACA,OAAOD,WAAW,OAAOA,YAAY,YAAY,CAAC5D,MAAMC,OAAO,CAAC2D,WAC3DA,UACD;AACN;AAEA,SAAStD,eAAeZ,KAAc;IACpC,OAAO,OAAOA,UAAU,YAAYA,MAAMoE,IAAI,KAAKpE,QAAQqE;AAC7D;AAEA,SAASN,sBAAsB/D,KAAc;IAC3C,OAAO,OAAOA,UAAU,YAAYsE,OAAOC,SAAS,CAACvE,UAAUA,QAAQ,IAAIA,QAAQ;AACrF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/runtime/herdr/HerdrAgentDiscovery.ts"],"sourcesContent":["import type { AgentInfo } from \"../../adapters/AgentAdapter.js\";\nimport { runtimeAgentMatchesHarness } from \"../../harnesses/runtimeProfiles.js\";\nimport { HerdrCliClient, type HerdrCommandRunner } from \"./HerdrCliClient.js\";\nimport type { HerdrRuntimeRef } from \"./HerdrRuntimeRef.js\";\n\nexport interface HerdrAgentPane {\n agent: string;\n agentSessionId?: string;\n cwd?: string;\n paneId: string;\n workspaceId?: string;\n tabId?: string;\n foregroundPids?: number[];\n shellPid?: number;\n}\n\nexport async function fetchHerdrAgentPanes(runner?: HerdrCommandRunner): Promise<HerdrAgentPane[]> {\n const client = new HerdrCliClient(runner);\n const response = await client.runJson([\"pane\", \"list\"]);\n return enrichHerdrAgentPanes(client, extractHerdrAgentPanes(response));\n}\n\nexport function extractHerdrAgentPanes(value: unknown): HerdrAgentPane[] {\n const snapshot = getObject(value, [\"result\", \"snapshot\"]);\n const rawPanes = getArray(value, [\"result\", \"panes\"]) ?? snapshot?.agents;\n if (!Array.isArray(rawPanes)) return [];\n\n const panes: HerdrAgentPane[] = [];\n for (const rawPane of rawPanes) {\n if (!rawPane || typeof rawPane !== \"object\" || Array.isArray(rawPane)) continue;\n const pane = rawPane as Record<string, unknown>;\n const agent = nonEmptyString(pane.agent);\n const paneId = nonEmptyString(pane.pane_id);\n if (!agent || !paneId) continue;\n\n const session = getObject(pane, [\"agent_session\"]);\n const agentSessionId = nonEmptyString(session?.value);\n const cwd = nonEmptyString(pane.cwd);\n const workspaceId = nonEmptyString(pane.workspace_id);\n const tabId = nonEmptyString(pane.tab_id);\n\n panes.push({\n agent,\n paneId,\n ...(agentSessionId ? { agentSessionId } : {}),\n ...(cwd ? { cwd } : {}),\n ...(workspaceId ? { workspaceId } : {}),\n ...(tabId ? { tabId } : {}),\n });\n }\n\n return panes;\n}\n\nexport function findMatchingHerdrPane(\n agent: Pick<AgentInfo, \"type\" | \"projectPath\" | \"sessionId\" | \"pid\">,\n panes: readonly HerdrAgentPane[],\n): HerdrAgentPane | null {\n if (agent.sessionId) {\n const sessionMatches = panes.filter((pane) => pane.agentSessionId === agent.sessionId);\n if (sessionMatches.length === 1) return sessionMatches[0]!;\n if (sessionMatches.length > 1) return null;\n }\n\n const foregroundPidMatches = panes.filter((pane) => pane.foregroundPids?.includes(agent.pid));\n if (foregroundPidMatches.length === 1) return foregroundPidMatches[0]!;\n if (foregroundPidMatches.length > 1) return null;\n\n const shellPidMatches = panes.filter((pane) => pane.shellPid === agent.pid);\n if (shellPidMatches.length === 1) return shellPidMatches[0]!;\n if (shellPidMatches.length > 1) return null;\n\n const cwdMatches = panes.filter(\n (pane) => pane.cwd === agent.projectPath && runtimeAgentMatchesHarness(pane.agent, agent.type),\n );\n return cwdMatches.length === 1 ? cwdMatches[0]! : null;\n}\n\nexport function herdrPaneToRuntimeRef(pane: HerdrAgentPane, agentName: string): HerdrRuntimeRef {\n return {\n session: \"default\",\n paneId: pane.paneId,\n agentName,\n ...(pane.workspaceId ? { workspaceId: pane.workspaceId } : {}),\n ...(pane.tabId ? { tabId: pane.tabId } : {}),\n };\n}\n\nasync function enrichHerdrAgentPanes(\n client: HerdrCliClient,\n panes: HerdrAgentPane[],\n): Promise<HerdrAgentPane[]> {\n return Promise.all(\n panes.map(async (pane) => {\n try {\n const response = await client.runJson([\"pane\", \"process-info\", \"--pane\", pane.paneId]);\n return {\n ...pane,\n ...extractPaneProcessIds(response),\n };\n } catch {\n return pane;\n }\n }),\n );\n}\n\nfunction extractPaneProcessIds(\n value: unknown,\n): Pick<HerdrAgentPane, \"foregroundPids\" | \"shellPid\"> {\n const processInfo = getObject(value, [\"result\", \"process_info\"]);\n if (!processInfo) return {};\n\n const foregroundProcesses = processInfo.foreground_processes;\n const foregroundPids: number[] = [];\n if (Array.isArray(foregroundProcesses)) {\n for (const foregroundProcess of foregroundProcesses) {\n if (\n !foregroundProcess ||\n typeof foregroundProcess !== \"object\" ||\n Array.isArray(foregroundProcess)\n )\n continue;\n const pid = positiveIntegerOrNull((foregroundProcess as { pid?: unknown }).pid);\n if (pid !== null) foregroundPids.push(pid);\n }\n }\n const shellPid = positiveIntegerOrNull(processInfo.shell_pid);\n\n return {\n ...(foregroundPids.length > 0 ? { foregroundPids } : {}),\n ...(shellPid !== null ? { shellPid } : {}),\n };\n}\n\nfunction getArray(value: unknown, path: string[]): unknown[] | null {\n let current = value;\n for (const part of path) {\n if (!current || typeof current !== \"object\" || Array.isArray(current) || !(part in current)) {\n return null;\n }\n current = (current as Record<string, unknown>)[part];\n }\n return Array.isArray(current) ? current : null;\n}\n\nfunction getObject(value: unknown, path: string[]): Record<string, unknown> | null {\n let current = value;\n for (const part of path) {\n if (!current || typeof current !== \"object\" || Array.isArray(current) || !(part in current)) {\n return null;\n }\n current = (current as Record<string, unknown>)[part];\n }\n return current && typeof current === \"object\" && !Array.isArray(current)\n ? (current as Record<string, unknown>)\n : null;\n}\n\nfunction nonEmptyString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value : undefined;\n}\n\nfunction positiveIntegerOrNull(value: unknown): number | null {\n return typeof value === \"number\" && Number.isInteger(value) && value > 0 ? value : null;\n}\n"],"names":["runtimeAgentMatchesHarness","HerdrCliClient","fetchHerdrAgentPanes","runner","client","response","runJson","enrichHerdrAgentPanes","extractHerdrAgentPanes","value","snapshot","getObject","rawPanes","getArray","agents","Array","isArray","panes","rawPane","pane","agent","nonEmptyString","paneId","pane_id","session","agentSessionId","cwd","workspaceId","workspace_id","tabId","tab_id","push","findMatchingHerdrPane","sessionId","sessionMatches","filter","length","foregroundPidMatches","foregroundPids","includes","pid","shellPidMatches","shellPid","cwdMatches","projectPath","type","herdrPaneToRuntimeRef","agentName","Promise","all","map","extractPaneProcessIds","processInfo","foregroundProcesses","foreground_processes","foregroundProcess","positiveIntegerOrNull","shell_pid","path","current","part","trim","undefined","Number","isInteger"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TmuxManager } from "
|
|
1
|
+
import type { TmuxManager } from "./TmuxManager.js";
|
|
2
2
|
export declare const DEFAULT_PID_POLL_INTERVAL_MS = 500;
|
|
3
3
|
export declare const DEFAULT_PID_POLL_TIMEOUT_MS = 15000;
|
|
4
4
|
export declare function pollForPid(tmux: Pick<TmuxManager, "findAgentPid">, session: string, matches: (psCommand: string) => boolean, intervalMs: number, timeoutMs: number): Promise<number | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PidPolling.d.ts","sourceRoot":"","sources":["../../../src/runtime/tmux/PidPolling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"PidPolling.d.ts","sourceRoot":"","sources":["../../../src/runtime/tmux/PidPolling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAGlD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EACvC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/runtime/tmux/PidPolling.ts"],"sourcesContent":["import type { TmuxManager } from \"
|
|
1
|
+
{"version":3,"sources":["../../../src/runtime/tmux/PidPolling.ts"],"sourcesContent":["import type { TmuxManager } from \"./TmuxManager.js\";\n\nexport const DEFAULT_PID_POLL_INTERVAL_MS = 500;\nexport const DEFAULT_PID_POLL_TIMEOUT_MS = 15_000;\nconst REQUIRED_STABLE_PID_POLLS = 5;\n\nexport async function pollForPid(\n tmux: Pick<TmuxManager, \"findAgentPid\">,\n session: string,\n matches: (psCommand: string) => boolean,\n intervalMs: number,\n timeoutMs: number,\n): Promise<number | null> {\n const deadline = Date.now() + timeoutMs;\n let candidatePid: number | null = null;\n let stablePolls = 0;\n\n while (Date.now() < deadline) {\n const pid = await tmux.findAgentPid(session, matches);\n if (pid !== null) {\n if (pid === candidatePid) {\n stablePolls += 1;\n } else {\n candidatePid = pid;\n stablePolls = 1;\n }\n\n if (stablePolls >= REQUIRED_STABLE_PID_POLLS) return pid;\n }\n await new Promise((resolve) => setTimeout(resolve, intervalMs));\n }\n\n return null;\n}\n"],"names":["DEFAULT_PID_POLL_INTERVAL_MS","DEFAULT_PID_POLL_TIMEOUT_MS","REQUIRED_STABLE_PID_POLLS","pollForPid","tmux","session","matches","intervalMs","timeoutMs","deadline","Date","now","candidatePid","stablePolls","pid","findAgentPid","Promise","resolve","setTimeout"],"mappings":"AAEA,OAAO,MAAMA,+BAA+B,IAAI;AAChD,OAAO,MAAMC,8BAA8B,OAAO;AAClD,MAAMC,4BAA4B;AAElC,OAAO,eAAeC,WACpBC,IAAuC,EACvCC,OAAe,EACfC,OAAuC,EACvCC,UAAkB,EAClBC,SAAiB;IAEjB,MAAMC,WAAWC,KAAKC,GAAG,KAAKH;IAC9B,IAAII,eAA8B;IAClC,IAAIC,cAAc;IAElB,MAAOH,KAAKC,GAAG,KAAKF,SAAU;QAC5B,MAAMK,MAAM,MAAMV,KAAKW,YAAY,CAACV,SAASC;QAC7C,IAAIQ,QAAQ,MAAM;YAChB,IAAIA,QAAQF,cAAc;gBACxBC,eAAe;YACjB,OAAO;gBACLD,eAAeE;gBACfD,cAAc;YAChB;YAEA,IAAIA,eAAeX,2BAA2B,OAAOY;QACvD;QACA,MAAM,IAAIE,QAAQ,CAACC,UAAYC,WAAWD,SAASV;IACrD;IAEA,OAAO;AACT"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TmuxManager } from "
|
|
1
|
+
import { TmuxManager } from "./TmuxManager.js";
|
|
2
2
|
import type { AgentRuntimeAvailability, InteractiveAgentRuntime, RuntimeFocusInput, RuntimeSendDeps, RuntimeSendInput, RuntimeStartInput, RuntimeStartResult, RuntimeStopInput } from "../types.js";
|
|
3
3
|
export declare class TmuxAgentRuntime implements InteractiveAgentRuntime {
|
|
4
4
|
readonly provider: "tmux";
|