@ai-devkit/agent-manager 0.32.0 → 0.33.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 +3 -3
- package/dist/AgentManager.d.ts.map +1 -1
- package/dist/AgentManager.js +80 -79
- package/dist/AgentManager.js.map +1 -1
- package/dist/__tests__/AgentManager.test.js +413 -388
- package/dist/__tests__/AgentManager.test.js.map +1 -1
- package/dist/__tests__/adapters/ClaudeCodeAdapter.test.js +642 -642
- package/dist/__tests__/adapters/ClaudeCodeAdapter.test.js.map +1 -1
- package/dist/__tests__/adapters/CodexAdapter.test.js +322 -2321
- package/dist/__tests__/adapters/CodexAdapter.test.js.map +1 -1
- package/dist/__tests__/adapters/CopilotAdapter.test.js +254 -248
- package/dist/__tests__/adapters/CopilotAdapter.test.js.map +1 -1
- package/dist/__tests__/adapters/GeminiCliAdapter.test.js +564 -558
- package/dist/__tests__/adapters/GeminiCliAdapter.test.js.map +1 -1
- package/dist/__tests__/adapters/GrokCliAdapter.test.js +114 -114
- package/dist/__tests__/adapters/GrokCliAdapter.test.js.map +1 -1
- package/dist/__tests__/adapters/OpenCodeAdapter.test.js +169 -169
- package/dist/__tests__/adapters/OpenCodeAdapter.test.js.map +1 -1
- package/dist/__tests__/capacity/codex.test.js +93 -93
- package/dist/__tests__/capacity/codex.test.js.map +1 -1
- package/dist/__tests__/capacity/index.test.js +17 -17
- package/dist/__tests__/capacity/index.test.js.map +1 -1
- package/dist/__tests__/durable/CodexCliProbe.test.js +60 -60
- package/dist/__tests__/durable/CodexCliProbe.test.js.map +1 -1
- package/dist/__tests__/durable/CodexDurableAgentRepository.test.js +28 -28
- package/dist/__tests__/durable/CodexDurableAgentRepository.test.js.map +1 -1
- package/dist/__tests__/durable/CodexPrintAgent.integration.test.js +30 -30
- package/dist/__tests__/durable/CodexPrintAgent.integration.test.js.map +1 -1
- package/dist/__tests__/durable/CodexPrintAgentService.test.js +71 -71
- package/dist/__tests__/durable/CodexPrintAgentService.test.js.map +1 -1
- package/dist/__tests__/durable/CodexPrintRunner.test.js +125 -125
- package/dist/__tests__/durable/CodexPrintRunner.test.js.map +1 -1
- package/dist/__tests__/print/ClaudeCliProbe.test.js +20 -20
- package/dist/__tests__/print/ClaudeCliProbe.test.js.map +1 -1
- package/dist/__tests__/print/ClaudePrintAgent.integration.test.js +20 -20
- package/dist/__tests__/print/ClaudePrintAgent.integration.test.js.map +1 -1
- package/dist/__tests__/print/ClaudePrintAgentService.test.js +58 -58
- package/dist/__tests__/print/ClaudePrintAgentService.test.js.map +1 -1
- package/dist/__tests__/print/ClaudePrintRunner.test.js +55 -55
- package/dist/__tests__/print/ClaudePrintRunner.test.js.map +1 -1
- package/dist/__tests__/print/DurableAgent.test.js +9 -9
- package/dist/__tests__/print/DurableAgent.test.js.map +1 -1
- package/dist/__tests__/print/DurableAgentRepository.sqlite.test.js +40 -40
- package/dist/__tests__/print/DurableAgentRepository.sqlite.test.js.map +1 -1
- package/dist/__tests__/print/DurableAgentRepository.test.js +66 -66
- package/dist/__tests__/print/DurableAgentRepository.test.js.map +1 -1
- package/dist/__tests__/providers/claude/ClaudeAgentMapper.test.js +34 -34
- package/dist/__tests__/providers/claude/ClaudeAgentMapper.test.js.map +1 -1
- package/dist/__tests__/providers/claude/ClaudeSessionLocator.test.js +132 -132
- package/dist/__tests__/providers/claude/ClaudeSessionLocator.test.js.map +1 -1
- package/dist/__tests__/providers/codex/CodexSessionLocator.test.js +194 -0
- package/dist/__tests__/providers/codex/CodexSessionLocator.test.js.map +1 -0
- package/dist/__tests__/providers/codex/CodexSessionMapping.test.js +86 -0
- package/dist/__tests__/providers/codex/CodexSessionMapping.test.js.map +1 -0
- package/dist/__tests__/providers/codex/CodexSessionParser.test.js +254 -0
- package/dist/__tests__/providers/codex/CodexSessionParser.test.js.map +1 -0
- package/dist/__tests__/providers/pi/PiAdapter.test.js +337 -0
- package/dist/__tests__/providers/pi/PiAdapter.test.js.map +1 -0
- package/dist/__tests__/providers/pi/PiSessionParser.test.js +246 -0
- package/dist/__tests__/providers/pi/PiSessionParser.test.js.map +1 -0
- package/dist/__tests__/providers/pi/PiSessionTracker.test.js +108 -0
- package/dist/__tests__/providers/pi/PiSessionTracker.test.js.map +1 -0
- package/dist/__tests__/providers/pi/durable/PiCliProbe.test.js +33 -33
- package/dist/__tests__/providers/pi/durable/PiCliProbe.test.js.map +1 -1
- package/dist/__tests__/providers/pi/durable/PiDurableAgentRepository.test.js +16 -16
- package/dist/__tests__/providers/pi/durable/PiDurableAgentRepository.test.js.map +1 -1
- package/dist/__tests__/providers/pi/durable/PiPrintAgentService.test.js +52 -52
- package/dist/__tests__/providers/pi/durable/PiPrintAgentService.test.js.map +1 -1
- package/dist/__tests__/providers/pi/durable/PiPrintProtocol.test.js +44 -44
- package/dist/__tests__/providers/pi/durable/PiPrintProtocol.test.js.map +1 -1
- package/dist/__tests__/providers/pi/durable/PiPrintRunner.test.js +126 -126
- package/dist/__tests__/providers/pi/durable/PiPrintRunner.test.js.map +1 -1
- package/dist/__tests__/providers/pi/durable/PiStreamParser.test.js +14 -14
- package/dist/__tests__/providers/pi/durable/PiStreamParser.test.js.map +1 -1
- package/dist/__tests__/readiness/AgentReadiness.test.js +134 -134
- package/dist/__tests__/readiness/AgentReadiness.test.js.map +1 -1
- package/dist/__tests__/runtime/AgentRuntime.test.js +13 -0
- package/dist/__tests__/runtime/AgentRuntime.test.js.map +1 -0
- package/dist/__tests__/runtime/HerdrAgentRuntime.test.js +452 -0
- package/dist/__tests__/runtime/HerdrAgentRuntime.test.js.map +1 -0
- package/dist/__tests__/runtime/ManagedAgentRuntime.test.js +588 -0
- package/dist/__tests__/runtime/ManagedAgentRuntime.test.js.map +1 -0
- package/dist/__tests__/terminal/TerminalFocusManager.test.js +100 -100
- package/dist/__tests__/terminal/TerminalFocusManager.test.js.map +1 -1
- package/dist/__tests__/terminal/TmuxManager.test.js +101 -101
- package/dist/__tests__/terminal/TmuxManager.test.js.map +1 -1
- package/dist/__tests__/terminal/TtyWriter.test.js +185 -185
- package/dist/__tests__/terminal/TtyWriter.test.js.map +1 -1
- package/dist/__tests__/utils/AgentRegistry.test.js +335 -217
- package/dist/__tests__/utils/AgentRegistry.test.js.map +1 -1
- package/dist/__tests__/utils/ClaudeSessionParser.test.js +103 -101
- package/dist/__tests__/utils/ClaudeSessionParser.test.js.map +1 -1
- package/dist/__tests__/utils/agent-requests.test.js +43 -43
- package/dist/__tests__/utils/agent-requests.test.js.map +1 -1
- package/dist/__tests__/utils/agents.test.js +17 -17
- package/dist/__tests__/utils/agents.test.js.map +1 -1
- package/dist/__tests__/utils/matching.test.js +92 -92
- package/dist/__tests__/utils/matching.test.js.map +1 -1
- package/dist/__tests__/utils/process.test.js +108 -108
- package/dist/__tests__/utils/process.test.js.map +1 -1
- package/dist/__tests__/utils/session.test.js +53 -53
- package/dist/__tests__/utils/session.test.js.map +1 -1
- package/dist/adapters/AgentAdapter.d.ts +2 -2
- package/dist/adapters/AgentAdapter.d.ts.map +1 -1
- package/dist/adapters/AgentAdapter.js +1 -1
- package/dist/adapters/AgentAdapter.js.map +1 -1
- package/dist/adapters/CopilotAdapter.d.ts +2 -2
- package/dist/adapters/CopilotAdapter.d.ts.map +1 -1
- package/dist/adapters/CopilotAdapter.js +51 -51
- package/dist/adapters/CopilotAdapter.js.map +1 -1
- package/dist/adapters/GeminiCliAdapter.d.ts +2 -2
- package/dist/adapters/GeminiCliAdapter.d.ts.map +1 -1
- package/dist/adapters/GeminiCliAdapter.js +86 -86
- package/dist/adapters/GeminiCliAdapter.js.map +1 -1
- package/dist/adapters/GrokCliAdapter.d.ts +1 -1
- package/dist/adapters/GrokCliAdapter.d.ts.map +1 -1
- package/dist/adapters/GrokCliAdapter.js +80 -80
- package/dist/adapters/GrokCliAdapter.js.map +1 -1
- package/dist/adapters/OpenCodeAdapter.d.ts +1 -1
- package/dist/adapters/OpenCodeAdapter.d.ts.map +1 -1
- package/dist/adapters/OpenCodeAdapter.js +37 -36
- package/dist/adapters/OpenCodeAdapter.js.map +1 -1
- package/dist/adapters/index.d.ts +9 -9
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +8 -8
- package/dist/adapters/index.js.map +1 -1
- package/dist/capacity/codex.d.ts +3 -3
- package/dist/capacity/codex.d.ts.map +1 -1
- package/dist/capacity/codex.js +57 -57
- package/dist/capacity/codex.js.map +1 -1
- package/dist/capacity/index.d.ts +3 -3
- package/dist/capacity/index.d.ts.map +1 -1
- package/dist/capacity/index.js +8 -8
- package/dist/capacity/index.js.map +1 -1
- package/dist/capacity/types.d.ts +1 -1
- package/dist/capacity/types.js.map +1 -1
- package/dist/database/connection.d.ts +1 -1
- package/dist/database/connection.d.ts.map +1 -1
- package/dist/database/connection.js +15 -15
- package/dist/database/connection.js.map +1 -1
- package/dist/database/index.d.ts +3 -3
- package/dist/database/index.d.ts.map +1 -1
- package/dist/database/index.js +2 -2
- package/dist/database/index.js.map +1 -1
- package/dist/database/migrations/005_agent_runtime.sql +2 -0
- package/dist/database/schema.d.ts +1 -1
- package/dist/database/schema.d.ts.map +1 -1
- package/dist/database/schema.js +7 -7
- package/dist/database/schema.js.map +1 -1
- package/dist/durable/DurableAgent.d.ts +9 -9
- package/dist/durable/DurableAgent.d.ts.map +1 -1
- package/dist/durable/DurableAgent.js +16 -16
- package/dist/durable/DurableAgent.js.map +1 -1
- package/dist/durable/DurableAgentRepository.d.ts +4 -4
- package/dist/durable/DurableAgentRepository.d.ts.map +1 -1
- package/dist/durable/DurableAgentRepository.js +49 -48
- package/dist/durable/DurableAgentRepository.js.map +1 -1
- package/dist/durable/process.d.ts +1 -1
- package/dist/durable/process.d.ts.map +1 -1
- package/dist/durable/process.js +14 -14
- package/dist/durable/process.js.map +1 -1
- package/dist/durable/run.d.ts +2 -2
- package/dist/durable/run.d.ts.map +1 -1
- package/dist/durable/run.js +6 -6
- package/dist/durable/run.js.map +1 -1
- package/dist/durable/utils.d.ts +1 -1
- package/dist/durable/utils.d.ts.map +1 -1
- package/dist/durable/utils.js +4 -4
- package/dist/durable/utils.js.map +1 -1
- package/dist/index.d.ts +46 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -26
- package/dist/index.js.map +1 -1
- package/dist/providers/claude/ClaudeAgentMapper.d.ts +4 -4
- package/dist/providers/claude/ClaudeAgentMapper.d.ts.map +1 -1
- package/dist/providers/claude/ClaudeAgentMapper.js +10 -10
- package/dist/providers/claude/ClaudeAgentMapper.js.map +1 -1
- package/dist/providers/claude/ClaudeCodeAdapter.d.ts +1 -1
- package/dist/providers/claude/ClaudeCodeAdapter.d.ts.map +1 -1
- package/dist/providers/claude/ClaudeCodeAdapter.js +14 -14
- package/dist/providers/claude/ClaudeCodeAdapter.js.map +1 -1
- package/dist/providers/claude/ClaudeSessionLocator.d.ts +4 -4
- package/dist/providers/claude/ClaudeSessionLocator.d.ts.map +1 -1
- package/dist/providers/claude/ClaudeSessionLocator.js +79 -79
- package/dist/providers/claude/ClaudeSessionLocator.js.map +1 -1
- package/dist/providers/claude/ClaudeSessionParser.d.ts +2 -2
- package/dist/providers/claude/ClaudeSessionParser.d.ts.map +1 -1
- package/dist/providers/claude/ClaudeSessionParser.js +99 -99
- package/dist/providers/claude/ClaudeSessionParser.js.map +1 -1
- package/dist/providers/claude/durable/ClaudeCliProbe.d.ts.map +1 -1
- package/dist/providers/claude/durable/ClaudeCliProbe.js +16 -16
- package/dist/providers/claude/durable/ClaudeCliProbe.js.map +1 -1
- package/dist/providers/claude/durable/ClaudePrintAgentService.d.ts +5 -5
- package/dist/providers/claude/durable/ClaudePrintAgentService.d.ts.map +1 -1
- package/dist/providers/claude/durable/ClaudePrintAgentService.js +10 -10
- package/dist/providers/claude/durable/ClaudePrintAgentService.js.map +1 -1
- package/dist/providers/claude/durable/ClaudePrintRunner.d.ts +4 -4
- package/dist/providers/claude/durable/ClaudePrintRunner.d.ts.map +1 -1
- package/dist/providers/claude/durable/ClaudePrintRunner.js +18 -18
- package/dist/providers/claude/durable/ClaudePrintRunner.js.map +1 -1
- package/dist/providers/claude/durable/ClaudeStreamParser.d.ts +2 -2
- package/dist/providers/claude/durable/ClaudeStreamParser.d.ts.map +1 -1
- package/dist/providers/claude/durable/ClaudeStreamParser.js +17 -17
- package/dist/providers/claude/durable/ClaudeStreamParser.js.map +1 -1
- package/dist/providers/codex/CodexAdapter.d.ts +27 -0
- package/dist/providers/codex/CodexAdapter.d.ts.map +1 -0
- package/dist/providers/codex/CodexAdapter.js +162 -0
- package/dist/providers/codex/CodexAdapter.js.map +1 -0
- package/dist/providers/codex/CodexAgentMapper.d.ts +9 -0
- package/dist/providers/codex/CodexAgentMapper.d.ts.map +1 -0
- package/dist/providers/codex/CodexAgentMapper.js +35 -0
- package/dist/providers/codex/CodexAgentMapper.js.map +1 -0
- package/dist/providers/codex/CodexSessionLocator.d.ts +44 -0
- package/dist/providers/codex/CodexSessionLocator.d.ts.map +1 -0
- package/dist/providers/codex/CodexSessionLocator.js +207 -0
- package/dist/providers/codex/CodexSessionLocator.js.map +1 -0
- package/dist/providers/codex/CodexSessionMapping.d.ts +23 -0
- package/dist/providers/codex/CodexSessionMapping.d.ts.map +1 -0
- package/dist/providers/codex/CodexSessionMapping.js +68 -0
- package/dist/providers/codex/CodexSessionMapping.js.map +1 -0
- package/dist/providers/codex/CodexSessionParser.d.ts +58 -0
- package/dist/providers/codex/CodexSessionParser.d.ts.map +1 -0
- package/dist/providers/codex/CodexSessionParser.js +262 -0
- package/dist/providers/codex/CodexSessionParser.js.map +1 -0
- package/dist/providers/codex/durable/CodexCliProbe.d.ts.map +1 -1
- package/dist/providers/codex/durable/CodexCliProbe.js +22 -22
- package/dist/providers/codex/durable/CodexCliProbe.js.map +1 -1
- package/dist/providers/codex/durable/CodexPrintAgentService.d.ts +6 -6
- package/dist/providers/codex/durable/CodexPrintAgentService.d.ts.map +1 -1
- package/dist/providers/codex/durable/CodexPrintAgentService.js +10 -10
- package/dist/providers/codex/durable/CodexPrintAgentService.js.map +1 -1
- package/dist/providers/codex/durable/CodexPrintRunner.d.ts +4 -4
- package/dist/providers/codex/durable/CodexPrintRunner.d.ts.map +1 -1
- package/dist/providers/codex/durable/CodexPrintRunner.js +20 -20
- package/dist/providers/codex/durable/CodexPrintRunner.js.map +1 -1
- package/dist/providers/codex/durable/CodexStreamParser.d.ts +2 -2
- package/dist/providers/codex/durable/CodexStreamParser.d.ts.map +1 -1
- package/dist/providers/codex/durable/CodexStreamParser.js +21 -21
- package/dist/providers/codex/durable/CodexStreamParser.js.map +1 -1
- package/dist/providers/pi/PiAdapter.d.ts +28 -0
- package/dist/providers/pi/PiAdapter.d.ts.map +1 -0
- package/dist/providers/pi/PiAdapter.js +153 -0
- package/dist/providers/pi/PiAdapter.js.map +1 -0
- package/dist/providers/pi/PiAgentMapper.d.ts +9 -0
- package/dist/providers/pi/PiAgentMapper.d.ts.map +1 -0
- package/dist/providers/pi/PiAgentMapper.js +37 -0
- package/dist/providers/pi/PiAgentMapper.js.map +1 -0
- package/dist/providers/pi/PiSessionLocator.d.ts +23 -0
- package/dist/providers/pi/PiSessionLocator.d.ts.map +1 -0
- package/dist/providers/pi/PiSessionLocator.js +79 -0
- package/dist/providers/pi/PiSessionLocator.js.map +1 -0
- package/dist/providers/pi/PiSessionParser.d.ts +36 -0
- package/dist/providers/pi/PiSessionParser.d.ts.map +1 -0
- package/dist/providers/pi/PiSessionParser.js +191 -0
- package/dist/providers/pi/PiSessionParser.js.map +1 -0
- package/dist/providers/pi/PiSessionTracker.d.ts +23 -0
- package/dist/providers/pi/PiSessionTracker.d.ts.map +1 -0
- package/dist/providers/pi/PiSessionTracker.js +69 -0
- package/dist/providers/pi/PiSessionTracker.js.map +1 -0
- package/dist/providers/pi/durable/PiCliProbe.d.ts.map +1 -1
- package/dist/providers/pi/durable/PiCliProbe.js +15 -15
- package/dist/providers/pi/durable/PiCliProbe.js.map +1 -1
- package/dist/providers/pi/durable/PiPrintAgentService.d.ts +6 -6
- package/dist/providers/pi/durable/PiPrintAgentService.d.ts.map +1 -1
- package/dist/providers/pi/durable/PiPrintAgentService.js +10 -10
- package/dist/providers/pi/durable/PiPrintAgentService.js.map +1 -1
- package/dist/providers/pi/durable/PiPrintProtocol.d.ts.map +1 -1
- package/dist/providers/pi/durable/PiPrintProtocol.js +18 -18
- package/dist/providers/pi/durable/PiPrintProtocol.js.map +1 -1
- package/dist/providers/pi/durable/PiPrintRunner.d.ts +4 -4
- package/dist/providers/pi/durable/PiPrintRunner.d.ts.map +1 -1
- package/dist/providers/pi/durable/PiPrintRunner.js +15 -15
- package/dist/providers/pi/durable/PiPrintRunner.js.map +1 -1
- package/dist/providers/pi/durable/PiStreamParser.d.ts +1 -1
- package/dist/providers/pi/durable/PiStreamParser.d.ts.map +1 -1
- package/dist/providers/pi/durable/PiStreamParser.js +16 -16
- package/dist/providers/pi/durable/PiStreamParser.js.map +1 -1
- package/dist/readiness/AgentReadiness.d.ts +6 -6
- package/dist/readiness/AgentReadiness.d.ts.map +1 -1
- package/dist/readiness/AgentReadiness.js +130 -130
- package/dist/readiness/AgentReadiness.js.map +1 -1
- package/dist/runtime/ManagedAgentRuntime.d.ts +69 -0
- package/dist/runtime/ManagedAgentRuntime.d.ts.map +1 -0
- package/dist/runtime/ManagedAgentRuntime.js +156 -0
- package/dist/runtime/ManagedAgentRuntime.js.map +1 -0
- package/dist/runtime/RuntimeFactory.d.ts +4 -0
- package/dist/runtime/RuntimeFactory.d.ts.map +1 -0
- package/dist/runtime/RuntimeFactory.js +11 -0
- package/dist/runtime/RuntimeFactory.js.map +1 -0
- package/dist/runtime/errors.d.ts +27 -0
- package/dist/runtime/errors.d.ts.map +1 -0
- package/dist/runtime/errors.js +42 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/herdr/HerdrAgentRuntime.d.ts +31 -0
- package/dist/runtime/herdr/HerdrAgentRuntime.d.ts.map +1 -0
- package/dist/runtime/herdr/HerdrAgentRuntime.js +184 -0
- package/dist/runtime/herdr/HerdrAgentRuntime.js.map +1 -0
- package/dist/runtime/herdr/HerdrCliClient.d.ts +13 -0
- package/dist/runtime/herdr/HerdrCliClient.d.ts.map +1 -0
- package/dist/runtime/herdr/HerdrCliClient.js +60 -0
- package/dist/runtime/herdr/HerdrCliClient.js.map +1 -0
- package/dist/runtime/herdr/HerdrErrors.d.ts +7 -0
- package/dist/runtime/herdr/HerdrErrors.d.ts.map +1 -0
- package/dist/runtime/herdr/HerdrErrors.js +10 -0
- package/dist/runtime/herdr/HerdrErrors.js.map +1 -0
- package/dist/runtime/herdr/HerdrResponseParsers.d.ts +14 -0
- package/dist/runtime/herdr/HerdrResponseParsers.d.ts.map +1 -0
- package/dist/runtime/herdr/HerdrResponseParsers.js +96 -0
- package/dist/runtime/herdr/HerdrResponseParsers.js.map +1 -0
- package/dist/runtime/herdr/HerdrRuntimeRef.d.ts +9 -0
- package/dist/runtime/herdr/HerdrRuntimeRef.d.ts.map +1 -0
- package/dist/runtime/herdr/HerdrRuntimeRef.js +33 -0
- package/dist/runtime/herdr/HerdrRuntimeRef.js.map +1 -0
- package/dist/runtime/tmux/PidPolling.d.ts +5 -0
- package/dist/runtime/tmux/PidPolling.d.ts.map +1 -0
- package/dist/runtime/tmux/PidPolling.js +24 -0
- package/dist/runtime/tmux/PidPolling.js.map +1 -0
- package/dist/runtime/tmux/TmuxAgentRuntime.d.ts +17 -0
- package/dist/runtime/tmux/TmuxAgentRuntime.d.ts.map +1 -0
- package/dist/runtime/tmux/TmuxAgentRuntime.js +80 -0
- package/dist/runtime/tmux/TmuxAgentRuntime.js.map +1 -0
- package/dist/runtime/tmux/TmuxRuntimeRef.d.ts +5 -0
- package/dist/runtime/tmux/TmuxRuntimeRef.d.ts.map +1 -0
- package/dist/runtime/tmux/TmuxRuntimeRef.js +9 -0
- package/dist/runtime/tmux/TmuxRuntimeRef.js.map +1 -0
- package/dist/runtime/types.d.ts +54 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +3 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/terminal/TerminalFocusManager.d.ts.map +1 -1
- package/dist/terminal/TerminalFocusManager.js +50 -50
- package/dist/terminal/TerminalFocusManager.js.map +1 -1
- package/dist/terminal/TmuxManager.d.ts.map +1 -1
- package/dist/terminal/TmuxManager.js +47 -47
- package/dist/terminal/TmuxManager.js.map +1 -1
- package/dist/terminal/TtyWriter.d.ts +1 -1
- package/dist/terminal/TtyWriter.d.ts.map +1 -1
- package/dist/terminal/TtyWriter.js +89 -89
- package/dist/terminal/TtyWriter.js.map +1 -1
- package/dist/terminal/index.d.ts +4 -4
- package/dist/terminal/index.js +3 -3
- package/dist/terminal/index.js.map +1 -1
- package/dist/utils/AgentRegistry.d.ts +10 -2
- package/dist/utils/AgentRegistry.d.ts.map +1 -1
- package/dist/utils/AgentRegistry.js +57 -24
- package/dist/utils/AgentRegistry.js.map +1 -1
- package/dist/utils/agent-requests.d.ts.map +1 -1
- package/dist/utils/agent-requests.js +5 -5
- package/dist/utils/agent-requests.js.map +1 -1
- package/dist/utils/agents.d.ts +2 -2
- package/dist/utils/agents.d.ts.map +1 -1
- package/dist/utils/agents.js +15 -15
- package/dist/utils/agents.js.map +1 -1
- package/dist/utils/applescript.js +1 -1
- package/dist/utils/applescript.js.map +1 -1
- package/dist/utils/index.d.ts +6 -6
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -4
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/matching.d.ts +2 -2
- package/dist/utils/matching.d.ts.map +1 -1
- package/dist/utils/matching.js +4 -4
- package/dist/utils/matching.js.map +1 -1
- package/dist/utils/process.d.ts +1 -1
- package/dist/utils/process.d.ts.map +1 -1
- package/dist/utils/process.js +74 -74
- package/dist/utils/process.js.map +1 -1
- package/dist/utils/session.d.ts +1 -1
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +7 -7
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/sortAgents.d.ts +2 -2
- package/dist/utils/sortAgents.d.ts.map +1 -1
- package/dist/utils/sortAgents.js +5 -5
- package/dist/utils/sortAgents.js.map +1 -1
- package/package.json +18 -19
- package/src/AgentManager.ts +283 -281
- package/src/__tests__/AgentManager.test.ts +917 -907
- package/src/__tests__/adapters/ClaudeCodeAdapter.test.ts +1657 -1368
- package/src/__tests__/adapters/CodexAdapter.test.ts +365 -1698
- package/src/__tests__/adapters/CopilotAdapter.test.ts +576 -481
- package/src/__tests__/adapters/GeminiCliAdapter.test.ts +1189 -1157
- package/src/__tests__/adapters/GrokCliAdapter.test.ts +325 -272
- package/src/__tests__/adapters/OpenCodeAdapter.test.ts +510 -455
- package/src/__tests__/capacity/codex.test.ts +178 -91
- package/src/__tests__/capacity/index.test.ts +27 -18
- package/src/__tests__/durable/CodexCliProbe.test.ts +75 -53
- package/src/__tests__/durable/CodexDurableAgentRepository.test.ts +51 -40
- package/src/__tests__/durable/CodexPrintAgent.integration.test.ts +89 -64
- package/src/__tests__/durable/CodexPrintAgentService.test.ts +196 -118
- package/src/__tests__/durable/CodexPrintRunner.test.ts +282 -162
- package/src/__tests__/fixtures/fake-claude.cjs +20 -13
- package/src/__tests__/fixtures/fake-codex.cjs +41 -30
- package/src/__tests__/print/ClaudeCliProbe.test.ts +27 -21
- package/src/__tests__/print/ClaudePrintAgent.integration.test.ts +48 -40
- package/src/__tests__/print/ClaudePrintAgentService.test.ts +118 -67
- package/src/__tests__/print/ClaudePrintRunner.test.ts +136 -83
- package/src/__tests__/print/DurableAgent.test.ts +19 -16
- package/src/__tests__/print/DurableAgentRepository.sqlite.test.ts +109 -86
- package/src/__tests__/print/DurableAgentRepository.test.ts +170 -137
- package/src/__tests__/providers/claude/ClaudeAgentMapper.test.ts +65 -65
- package/src/__tests__/providers/claude/ClaudeSessionLocator.test.ts +400 -377
- package/src/__tests__/providers/codex/CodexSessionLocator.test.ts +182 -0
- package/src/__tests__/providers/codex/CodexSessionMapping.test.ts +63 -0
- package/src/__tests__/providers/codex/CodexSessionParser.test.ts +192 -0
- package/src/__tests__/providers/pi/PiAdapter.test.ts +310 -0
- package/src/__tests__/providers/pi/PiSessionParser.test.ts +190 -0
- package/src/__tests__/providers/pi/PiSessionTracker.test.ts +79 -0
- package/src/__tests__/providers/pi/durable/PiCliProbe.test.ts +48 -32
- package/src/__tests__/providers/pi/durable/PiDurableAgentRepository.test.ts +24 -23
- package/src/__tests__/providers/pi/durable/PiPrintAgentService.test.ts +131 -59
- package/src/__tests__/providers/pi/durable/PiPrintProtocol.test.ts +66 -28
- package/src/__tests__/providers/pi/durable/PiPrintRunner.test.ts +236 -90
- package/src/__tests__/providers/pi/durable/PiStreamParser.test.ts +20 -18
- package/src/__tests__/readiness/AgentReadiness.test.ts +217 -169
- package/src/__tests__/runtime/AgentRuntime.test.ts +8 -0
- package/src/__tests__/runtime/HerdrAgentRuntime.test.ts +358 -0
- package/src/__tests__/runtime/ManagedAgentRuntime.test.ts +555 -0
- package/src/__tests__/terminal/TerminalFocusManager.test.ts +254 -253
- package/src/__tests__/terminal/TmuxManager.test.ts +157 -157
- package/src/__tests__/terminal/TtyWriter.test.ts +423 -419
- package/src/__tests__/utils/AgentRegistry.test.ts +506 -402
- package/src/__tests__/utils/ClaudeSessionParser.test.ts +276 -242
- package/src/__tests__/utils/agent-requests.test.ts +76 -56
- package/src/__tests__/utils/agents.test.ts +20 -20
- package/src/__tests__/utils/matching.test.ts +206 -171
- package/src/__tests__/utils/process.test.ts +276 -262
- package/src/__tests__/utils/session.test.ts +133 -139
- package/src/adapters/AgentAdapter.ts +134 -126
- package/src/adapters/CopilotAdapter.ts +405 -395
- package/src/adapters/GeminiCliAdapter.ts +598 -600
- package/src/adapters/GrokCliAdapter.ts +353 -342
- package/src/adapters/OpenCodeAdapter.ts +285 -259
- package/src/adapters/index.ts +15 -9
- package/src/capacity/codex.ts +137 -84
- package/src/capacity/index.ts +18 -13
- package/src/capacity/types.ts +1 -1
- package/src/database/connection.ts +73 -68
- package/src/database/index.ts +6 -6
- package/src/database/migrations/005_agent_runtime.sql +2 -0
- package/src/database/schema.ts +40 -38
- package/src/durable/DurableAgent.ts +85 -85
- package/src/durable/DurableAgentRepository.ts +409 -260
- package/src/durable/process.ts +22 -21
- package/src/durable/run.ts +61 -51
- package/src/durable/utils.ts +46 -41
- package/src/index.ts +144 -103
- package/src/providers/claude/ClaudeAgentMapper.ts +51 -50
- package/src/providers/claude/ClaudeCodeAdapter.ts +144 -136
- package/src/providers/claude/ClaudeSessionLocator.ts +291 -293
- package/src/providers/claude/ClaudeSessionParser.ts +322 -338
- package/src/providers/claude/durable/ClaudeCliProbe.ts +42 -37
- package/src/providers/claude/durable/ClaudePrintAgentService.ts +63 -50
- package/src/providers/claude/durable/ClaudePrintRunner.ts +79 -69
- package/src/providers/claude/durable/ClaudeStreamParser.ts +91 -62
- package/src/providers/codex/CodexAdapter.ts +205 -0
- package/src/providers/codex/CodexAgentMapper.ts +35 -0
- package/src/providers/codex/CodexSessionLocator.ts +279 -0
- package/src/providers/codex/CodexSessionMapping.ts +89 -0
- package/src/providers/codex/CodexSessionParser.ts +385 -0
- package/src/providers/codex/durable/CodexCliProbe.ts +50 -42
- package/src/providers/codex/durable/CodexPrintAgentService.ts +63 -49
- package/src/providers/codex/durable/CodexPrintRunner.ts +79 -69
- package/src/providers/codex/durable/CodexStreamParser.ts +97 -84
- package/src/providers/pi/PiAdapter.ts +183 -0
- package/src/providers/pi/PiAgentMapper.ts +36 -0
- package/src/providers/pi/PiSessionLocator.ts +95 -0
- package/src/providers/pi/PiSessionParser.ts +284 -0
- package/src/providers/pi/PiSessionTracker.ts +87 -0
- package/src/providers/pi/durable/PiCliProbe.ts +42 -34
- package/src/providers/pi/durable/PiPrintAgentService.ts +61 -53
- package/src/providers/pi/durable/PiPrintProtocol.ts +31 -29
- package/src/providers/pi/durable/PiPrintRunner.ts +75 -68
- package/src/providers/pi/durable/PiStreamParser.ts +82 -72
- package/src/readiness/AgentReadiness.ts +585 -513
- package/src/runtime/ManagedAgentRuntime.ts +266 -0
- package/src/runtime/RuntimeFactory.ts +13 -0
- package/src/runtime/errors.ts +50 -0
- package/src/runtime/herdr/HerdrAgentRuntime.ts +190 -0
- package/src/runtime/herdr/HerdrCliClient.ts +78 -0
- package/src/runtime/herdr/HerdrErrors.ts +9 -0
- package/src/runtime/herdr/HerdrResponseParsers.ts +76 -0
- package/src/runtime/herdr/HerdrRuntimeRef.ts +41 -0
- package/src/runtime/tmux/PidPolling.ts +34 -0
- package/src/runtime/tmux/TmuxAgentRuntime.ts +113 -0
- package/src/runtime/tmux/TmuxRuntimeRef.ts +9 -0
- package/src/runtime/types.ts +56 -0
- package/src/terminal/TerminalFocusManager.ts +215 -212
- package/src/terminal/TmuxManager.ts +99 -92
- package/src/terminal/TtyWriter.ts +203 -194
- package/src/terminal/index.ts +4 -4
- package/src/utils/AgentRegistry.ts +299 -238
- package/src/utils/agent-requests.ts +16 -16
- package/src/utils/agents.ts +41 -38
- package/src/utils/applescript.ts +4 -4
- package/src/utils/index.ts +12 -6
- package/src/utils/matching.ts +43 -43
- package/src/utils/process.ts +261 -258
- package/src/utils/session.ts +66 -66
- package/src/utils/sortAgents.ts +35 -33
- package/tsconfig.json +2 -8
- package/vitest.config.ts +16 -16
- package/.eslintrc.json +0 -31
- package/dist/__tests__/adapters/PiAdapter.test.js +0 -618
- package/dist/__tests__/adapters/PiAdapter.test.js.map +0 -1
- package/dist/__tests__/database/DurableAgentsDatabase.test.js +0 -128
- package/dist/__tests__/database/DurableAgentsDatabase.test.js.map +0 -1
- package/dist/adapters/CodexAdapter.d.ts +0 -109
- package/dist/adapters/CodexAdapter.d.ts.map +0 -1
- package/dist/adapters/CodexAdapter.js +0 -710
- package/dist/adapters/CodexAdapter.js.map +0 -1
- package/dist/adapters/PiAdapter.d.ts +0 -63
- package/dist/adapters/PiAdapter.d.ts.map +0 -1
- package/dist/adapters/PiAdapter.js +0 -453
- package/dist/adapters/PiAdapter.js.map +0 -1
- package/src/__tests__/adapters/PiAdapter.test.ts +0 -458
- package/src/__tests__/database/DurableAgentsDatabase.test.ts +0 -102
- package/src/adapters/CodexAdapter.ts +0 -923
- package/src/adapters/PiAdapter.ts +0 -598
package/dist/database/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH, resolveAgentRegistryDbPath, } from
|
|
2
|
-
export type { DatabaseOptions } from
|
|
3
|
-
export { getSchemaVersion, initializeSchema } from
|
|
1
|
+
export { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH, resolveAgentRegistryDbPath, } from "./connection.js";
|
|
2
|
+
export type { DatabaseOptions } from "./connection.js";
|
|
3
|
+
export { getSchemaVersion, initializeSchema } from "./schema.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/database/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH, resolveAgentRegistryDbPath } from
|
|
2
|
-
export { getSchemaVersion, initializeSchema } from
|
|
1
|
+
export { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH, resolveAgentRegistryDbPath } from "./connection.js";
|
|
2
|
+
export { getSchemaVersion, initializeSchema } from "./schema.js";
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/database/index.ts"],"sourcesContent":["export {\n
|
|
1
|
+
{"version":3,"sources":["../../src/database/index.ts"],"sourcesContent":["export {\n DatabaseConnection,\n DEFAULT_AGENT_REGISTRY_DB_PATH,\n resolveAgentRegistryDbPath,\n} from \"./connection.js\";\nexport type { DatabaseOptions } from \"./connection.js\";\nexport { getSchemaVersion, initializeSchema } from \"./schema.js\";\n"],"names":["DatabaseConnection","DEFAULT_AGENT_REGISTRY_DB_PATH","resolveAgentRegistryDbPath","getSchemaVersion","initializeSchema"],"mappings":"AAAA,SACEA,kBAAkB,EAClBC,8BAA8B,EAC9BC,0BAA0B,QACrB,kBAAkB;AAEzB,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,cAAc"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DatabaseConnection } from
|
|
1
|
+
import type { DatabaseConnection } from "./connection.js";
|
|
2
2
|
export declare function getSchemaVersion(db: DatabaseConnection): number;
|
|
3
3
|
export declare function initializeSchema(db: DatabaseConnection): void;
|
|
4
4
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/database/schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,CAG/D;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/database/schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,CAG/D;AAyCD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI,CAY7D"}
|
package/dist/database/schema.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { readFileSync, readdirSync } from
|
|
2
|
-
import { dirname, join } from
|
|
3
|
-
import { fileURLToPath } from
|
|
1
|
+
import { readFileSync, readdirSync } from "fs";
|
|
2
|
+
import { dirname, join } from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
4
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
5
5
|
export function getSchemaVersion(db) {
|
|
6
|
-
const result = db.instance.pragma(
|
|
6
|
+
const result = db.instance.pragma("user_version");
|
|
7
7
|
return result[0]?.user_version ?? 0;
|
|
8
8
|
}
|
|
9
9
|
function setSchemaVersion(db, version) {
|
|
10
10
|
db.instance.pragma(`user_version = ${version}`);
|
|
11
11
|
}
|
|
12
12
|
function getMigrationsDir() {
|
|
13
|
-
return join(__dirname,
|
|
13
|
+
return join(__dirname, "migrations");
|
|
14
14
|
}
|
|
15
15
|
function getMigrationFiles() {
|
|
16
16
|
const migrationsDir = getMigrationsDir();
|
|
17
17
|
let files;
|
|
18
18
|
try {
|
|
19
|
-
files = readdirSync(migrationsDir).filter((f)=>f.endsWith(
|
|
19
|
+
files = readdirSync(migrationsDir).filter((f)=>f.endsWith(".sql")).sort();
|
|
20
20
|
} catch {
|
|
21
21
|
return [];
|
|
22
22
|
}
|
|
@@ -36,7 +36,7 @@ export function initializeSchema(db) {
|
|
|
36
36
|
const currentVersion = getSchemaVersion(db);
|
|
37
37
|
const pendingMigrations = getMigrationFiles().filter((m)=>m.version > currentVersion);
|
|
38
38
|
for (const migration of pendingMigrations){
|
|
39
|
-
const sql = readFileSync(migration.path,
|
|
39
|
+
const sql = readFileSync(migration.path, "utf-8");
|
|
40
40
|
db.transaction(()=>{
|
|
41
41
|
db.instance.exec(sql);
|
|
42
42
|
setSchemaVersion(db, migration.version);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/database/schema.ts"],"sourcesContent":["import { readFileSync, readdirSync } from
|
|
1
|
+
{"version":3,"sources":["../../src/database/schema.ts"],"sourcesContent":["import { readFileSync, readdirSync } from \"fs\";\nimport { dirname, join } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport type { DatabaseConnection } from \"./connection.js\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nexport function getSchemaVersion(db: DatabaseConnection): number {\n const result = db.instance.pragma(\"user_version\") as { user_version: number }[];\n return result[0]?.user_version ?? 0;\n}\n\nfunction setSchemaVersion(db: DatabaseConnection, version: number): void {\n db.instance.pragma(`user_version = ${version}`);\n}\n\nfunction getMigrationsDir(): string {\n return join(__dirname, \"migrations\");\n}\n\ninterface Migration {\n version: number;\n path: string;\n name: string;\n}\n\nfunction getMigrationFiles(): Migration[] {\n const migrationsDir = getMigrationsDir();\n\n let files: string[];\n try {\n files = readdirSync(migrationsDir)\n .filter((f) => f.endsWith(\".sql\"))\n .sort();\n } catch {\n return [];\n }\n\n return files.map((file) => {\n const match = file.match(/^(\\d+)_(.+)\\.sql$/);\n if (!match || !match[1] || !match[2]) {\n throw new Error(`Invalid migration filename: ${file}. Expected format: 001_name.sql`);\n }\n return {\n version: parseInt(match[1], 10),\n name: match[2],\n path: join(migrationsDir, file),\n };\n });\n}\n\nexport function initializeSchema(db: DatabaseConnection): void {\n const currentVersion = getSchemaVersion(db);\n const pendingMigrations = getMigrationFiles().filter((m) => m.version > currentVersion);\n\n for (const migration of pendingMigrations) {\n const sql = readFileSync(migration.path, \"utf-8\");\n\n db.transaction(() => {\n db.instance.exec(sql);\n setSchemaVersion(db, migration.version);\n });\n }\n}\n"],"names":["readFileSync","readdirSync","dirname","join","fileURLToPath","__dirname","url","getSchemaVersion","db","result","instance","pragma","user_version","setSchemaVersion","version","getMigrationsDir","getMigrationFiles","migrationsDir","files","filter","f","endsWith","sort","map","file","match","Error","parseInt","name","path","initializeSchema","currentVersion","pendingMigrations","m","migration","sql","transaction","exec"],"mappings":"AAAA,SAASA,YAAY,EAAEC,WAAW,QAAQ,KAAK;AAC/C,SAASC,OAAO,EAAEC,IAAI,QAAQ,OAAO;AACrC,SAASC,aAAa,QAAQ,MAAM;AAGpC,MAAMC,YAAYH,QAAQE,cAAc,YAAYE,GAAG;AAEvD,OAAO,SAASC,iBAAiBC,EAAsB;IACrD,MAAMC,SAASD,GAAGE,QAAQ,CAACC,MAAM,CAAC;IAClC,OAAOF,MAAM,CAAC,EAAE,EAAEG,gBAAgB;AACpC;AAEA,SAASC,iBAAiBL,EAAsB,EAAEM,OAAe;IAC/DN,GAAGE,QAAQ,CAACC,MAAM,CAAC,CAAC,eAAe,EAAEG,SAAS;AAChD;AAEA,SAASC;IACP,OAAOZ,KAAKE,WAAW;AACzB;AAQA,SAASW;IACP,MAAMC,gBAAgBF;IAEtB,IAAIG;IACJ,IAAI;QACFA,QAAQjB,YAAYgB,eACjBE,MAAM,CAAC,CAACC,IAAMA,EAAEC,QAAQ,CAAC,SACzBC,IAAI;IACT,EAAE,OAAM;QACN,OAAO,EAAE;IACX;IAEA,OAAOJ,MAAMK,GAAG,CAAC,CAACC;QAChB,MAAMC,QAAQD,KAAKC,KAAK,CAAC;QACzB,IAAI,CAACA,SAAS,CAACA,KAAK,CAAC,EAAE,IAAI,CAACA,KAAK,CAAC,EAAE,EAAE;YACpC,MAAM,IAAIC,MAAM,CAAC,4BAA4B,EAAEF,KAAK,+BAA+B,CAAC;QACtF;QACA,OAAO;YACLV,SAASa,SAASF,KAAK,CAAC,EAAE,EAAE;YAC5BG,MAAMH,KAAK,CAAC,EAAE;YACdI,MAAM1B,KAAKc,eAAeO;QAC5B;IACF;AACF;AAEA,OAAO,SAASM,iBAAiBtB,EAAsB;IACrD,MAAMuB,iBAAiBxB,iBAAiBC;IACxC,MAAMwB,oBAAoBhB,oBAAoBG,MAAM,CAAC,CAACc,IAAMA,EAAEnB,OAAO,GAAGiB;IAExE,KAAK,MAAMG,aAAaF,kBAAmB;QACzC,MAAMG,MAAMnC,aAAakC,UAAUL,IAAI,EAAE;QAEzCrB,GAAG4B,WAAW,CAAC;YACb5B,GAAGE,QAAQ,CAAC2B,IAAI,CAACF;YACjBtB,iBAAiBL,IAAI0B,UAAUpB,OAAO;QACxC;IACF;AACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export type DurableAgentState =
|
|
2
|
-
export type DurableSessionHealth =
|
|
3
|
-
export type DurableRunStatus =
|
|
4
|
-
export type PiPrintErrorCode =
|
|
1
|
+
export type DurableAgentState = "ready" | "running" | "degraded";
|
|
2
|
+
export type DurableSessionHealth = "uninitialized" | "healthy" | "unknown" | "mismatch";
|
|
3
|
+
export type DurableRunStatus = "succeeded" | "failed" | "interrupted";
|
|
4
|
+
export type PiPrintErrorCode = "PI_CLI_UNAVAILABLE" | "PI_CLI_UNSUPPORTED" | "PI_PROCESS" | "PI_PROTOCOL" | "PI_RESULT_MISSING" | "PI_SESSION_MISMATCH" | "PI_UNSUPPORTED";
|
|
5
5
|
export declare const AGENT_MODES: {
|
|
6
6
|
readonly INTERACTIVE: "interactive";
|
|
7
7
|
readonly DURABLE: "durable";
|
|
@@ -22,7 +22,7 @@ export interface DurableLastResult {
|
|
|
22
22
|
exitCode: number | null;
|
|
23
23
|
summary: string;
|
|
24
24
|
}
|
|
25
|
-
export type DurableProvider =
|
|
25
|
+
export type DurableProvider = "claude" | "codex" | "pi";
|
|
26
26
|
export interface DurableAgentBase {
|
|
27
27
|
id: string;
|
|
28
28
|
name: string;
|
|
@@ -37,15 +37,15 @@ export interface DurableAgentBase {
|
|
|
37
37
|
activeRun: DurableActiveRun | null;
|
|
38
38
|
}
|
|
39
39
|
export interface ClaudeDurableAgent extends DurableAgentBase {
|
|
40
|
-
provider:
|
|
40
|
+
provider: "claude";
|
|
41
41
|
providerSessionId: string;
|
|
42
42
|
}
|
|
43
43
|
export interface CodexDurableAgent extends DurableAgentBase {
|
|
44
|
-
provider:
|
|
44
|
+
provider: "codex";
|
|
45
45
|
providerSessionId: string | null;
|
|
46
46
|
}
|
|
47
47
|
export interface PiDurableAgent extends DurableAgentBase {
|
|
48
|
-
provider:
|
|
48
|
+
provider: "pi";
|
|
49
49
|
providerSessionId: string;
|
|
50
50
|
}
|
|
51
51
|
export type DurableAgent = ClaudeDurableAgent | CodexDurableAgent | PiDurableAgent;
|
|
@@ -71,7 +71,7 @@ export declare class DurableAgentNameConflictError extends DurableAgentError {
|
|
|
71
71
|
export declare class ClaudePrintError extends DurableAgentError {
|
|
72
72
|
constructor(message: string, code?: string);
|
|
73
73
|
}
|
|
74
|
-
export type CodexPrintErrorCode =
|
|
74
|
+
export type CodexPrintErrorCode = "CODEX_PROTOCOL" | "CODEX_PROCESS" | "CODEX_SESSION_MISMATCH" | "CODEX_UNSUPPORTED" | "CODEX_RESULT_MISSING" | "CODEX_CLI_UNSUPPORTED" | "CODEX_CLI_UNAVAILABLE";
|
|
75
75
|
export declare class CodexPrintError extends DurableAgentError {
|
|
76
76
|
constructor(message: string, code: CodexPrintErrorCode);
|
|
77
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurableAgent.d.ts","sourceRoot":"","sources":["../../src/durable/DurableAgent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AACxF,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;AACtE,MAAM,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"DurableAgent.d.ts","sourceRoot":"","sources":["../../src/durable/DurableAgent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AACxF,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;AACtE,MAAM,MAAM,gBAAgB,GACxB,oBAAoB,GACpB,oBAAoB,GACpB,YAAY,GACZ,aAAa,GACb,mBAAmB,GACnB,qBAAqB,GACrB,gBAAgB,CAAC;AAErB,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,WAAW,CAAC,OAAO,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,iBAAiB,CAAC;IACzB,aAAa,EAAE,oBAAoB,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,QAAQ,EAAE,QAAQ,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,QAAQ,EAAE,IAAI,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAEnF,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,IAAI,EAAE,MAAM;gBAD5B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM;CAK/B;AAED,qBAAa,qBAAsB,SAAQ,iBAAiB;aAExC,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM,EAC/B,SAAS,EAAE,MAAM;CAKpB;AAED,qBAAa,yBAA0B,SAAQ,iBAAiB;aAClC,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAI9C;AAED,qBAAa,2BAA4B,SAAQ,iBAAiB;gBACpD,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,6BAA8B,SAAQ,iBAAiB;aACtC,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAI9C;AAED,qBAAa,gBAAiB,SAAQ,iBAAiB;gBACzC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAwB;CAI1D;AAED,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,eAAe,GACf,wBAAwB,GACxB,mBAAmB,GACnB,sBAAsB,GACtB,uBAAuB,GACvB,uBAAuB,CAAC;AAE5B,qBAAa,eAAgB,SAAQ,iBAAiB;gBACxC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB;CAIvD;AAED,qBAAa,YAAa,SAAQ,iBAAiB;gBACrC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,gBAA+B;CAInE"}
|
|
@@ -1,57 +1,57 @@
|
|
|
1
1
|
export const AGENT_MODES = {
|
|
2
|
-
INTERACTIVE:
|
|
3
|
-
DURABLE:
|
|
2
|
+
INTERACTIVE: "interactive",
|
|
3
|
+
DURABLE: "durable"
|
|
4
4
|
};
|
|
5
5
|
export class DurableAgentError extends Error {
|
|
6
6
|
code;
|
|
7
7
|
constructor(message, code){
|
|
8
8
|
super(message), this.code = code;
|
|
9
|
-
this.name =
|
|
9
|
+
this.name = "DurableAgentError";
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
export class DurableAgentBusyError extends DurableAgentError {
|
|
13
13
|
agentId;
|
|
14
14
|
constructor(agentId, agentName){
|
|
15
|
-
super(`Durable agent "${agentName}" is busy.`,
|
|
16
|
-
this.name =
|
|
15
|
+
super(`Durable agent "${agentName}" is busy.`, "DURABLE_AGENT_BUSY"), this.agentId = agentId;
|
|
16
|
+
this.name = "DurableAgentBusyError";
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
export class DurableAgentNotFoundError extends DurableAgentError {
|
|
20
20
|
reference;
|
|
21
21
|
constructor(reference){
|
|
22
|
-
super(`Durable agent "${reference}" was not found.`,
|
|
23
|
-
this.name =
|
|
22
|
+
super(`Durable agent "${reference}" was not found.`, "DURABLE_AGENT_NOT_FOUND"), this.reference = reference;
|
|
23
|
+
this.name = "DurableAgentNotFoundError";
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
export class DurableAgentRepositoryError extends DurableAgentError {
|
|
27
27
|
constructor(message){
|
|
28
|
-
super(message,
|
|
29
|
-
this.name =
|
|
28
|
+
super(message, "DURABLE_AGENT_REPOSITORY");
|
|
29
|
+
this.name = "DurableAgentRepositoryError";
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
export class DurableAgentNameConflictError extends DurableAgentError {
|
|
33
33
|
agentName;
|
|
34
34
|
constructor(agentName){
|
|
35
|
-
super(`Durable agent name "${agentName}" is already in use.`,
|
|
36
|
-
this.name =
|
|
35
|
+
super(`Durable agent name "${agentName}" is already in use.`, "DURABLE_AGENT_NAME_CONFLICT"), this.agentName = agentName;
|
|
36
|
+
this.name = "DurableAgentNameConflictError";
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
export class ClaudePrintError extends DurableAgentError {
|
|
40
|
-
constructor(message, code =
|
|
40
|
+
constructor(message, code = "CLAUDE_PRINT_FAILED"){
|
|
41
41
|
super(message, code);
|
|
42
|
-
this.name =
|
|
42
|
+
this.name = "ClaudePrintError";
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
export class CodexPrintError extends DurableAgentError {
|
|
46
46
|
constructor(message, code){
|
|
47
47
|
super(message, code);
|
|
48
|
-
this.name =
|
|
48
|
+
this.name = "CodexPrintError";
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
export class PiPrintError extends DurableAgentError {
|
|
52
|
-
constructor(message, code =
|
|
52
|
+
constructor(message, code = "PI_PROCESS"){
|
|
53
53
|
super(message, code);
|
|
54
|
-
this.name =
|
|
54
|
+
this.name = "PiPrintError";
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/durable/DurableAgent.ts"],"sourcesContent":["export type DurableAgentState =
|
|
1
|
+
{"version":3,"sources":["../../src/durable/DurableAgent.ts"],"sourcesContent":["export type DurableAgentState = \"ready\" | \"running\" | \"degraded\";\nexport type DurableSessionHealth = \"uninitialized\" | \"healthy\" | \"unknown\" | \"mismatch\";\nexport type DurableRunStatus = \"succeeded\" | \"failed\" | \"interrupted\";\nexport type PiPrintErrorCode =\n | \"PI_CLI_UNAVAILABLE\"\n | \"PI_CLI_UNSUPPORTED\"\n | \"PI_PROCESS\"\n | \"PI_PROTOCOL\"\n | \"PI_RESULT_MISSING\"\n | \"PI_SESSION_MISMATCH\"\n | \"PI_UNSUPPORTED\";\n\nexport const AGENT_MODES = {\n INTERACTIVE: \"interactive\",\n DURABLE: \"durable\",\n} as const;\n\nexport interface ProcessIdentity {\n pid: number;\n startedAt: string;\n}\n\nexport interface DurableActiveRun {\n token: string;\n owner: ProcessIdentity;\n provider: ProcessIdentity | null;\n startedAt: string;\n}\n\nexport interface DurableLastResult {\n status: DurableRunStatus;\n completedAt: string;\n exitCode: number | null;\n summary: string;\n}\n\nexport type DurableProvider = \"claude\" | \"codex\" | \"pi\";\n\nexport interface DurableAgentBase {\n id: string;\n name: string;\n mode: typeof AGENT_MODES.DURABLE;\n cwd: string;\n state: DurableAgentState;\n sessionHealth: DurableSessionHealth;\n createdAt: string;\n updatedAt: string;\n lastActiveAt: string | null;\n lastResult: DurableLastResult | null;\n activeRun: DurableActiveRun | null;\n}\n\nexport interface ClaudeDurableAgent extends DurableAgentBase {\n provider: \"claude\";\n providerSessionId: string;\n}\n\nexport interface CodexDurableAgent extends DurableAgentBase {\n provider: \"codex\";\n providerSessionId: string | null;\n}\n\nexport interface PiDurableAgent extends DurableAgentBase {\n provider: \"pi\";\n providerSessionId: string;\n}\n\nexport type DurableAgent = ClaudeDurableAgent | CodexDurableAgent | PiDurableAgent;\n\nexport class DurableAgentError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n ) {\n super(message);\n this.name = \"DurableAgentError\";\n }\n}\n\nexport class DurableAgentBusyError extends DurableAgentError {\n constructor(\n public readonly agentId: string,\n agentName: string,\n ) {\n super(`Durable agent \"${agentName}\" is busy.`, \"DURABLE_AGENT_BUSY\");\n this.name = \"DurableAgentBusyError\";\n }\n}\n\nexport class DurableAgentNotFoundError extends DurableAgentError {\n constructor(public readonly reference: string) {\n super(`Durable agent \"${reference}\" was not found.`, \"DURABLE_AGENT_NOT_FOUND\");\n this.name = \"DurableAgentNotFoundError\";\n }\n}\n\nexport class DurableAgentRepositoryError extends DurableAgentError {\n constructor(message: string) {\n super(message, \"DURABLE_AGENT_REPOSITORY\");\n this.name = \"DurableAgentRepositoryError\";\n }\n}\n\nexport class DurableAgentNameConflictError extends DurableAgentError {\n constructor(public readonly agentName: string) {\n super(`Durable agent name \"${agentName}\" is already in use.`, \"DURABLE_AGENT_NAME_CONFLICT\");\n this.name = \"DurableAgentNameConflictError\";\n }\n}\n\nexport class ClaudePrintError extends DurableAgentError {\n constructor(message: string, code = \"CLAUDE_PRINT_FAILED\") {\n super(message, code);\n this.name = \"ClaudePrintError\";\n }\n}\n\nexport type CodexPrintErrorCode =\n | \"CODEX_PROTOCOL\"\n | \"CODEX_PROCESS\"\n | \"CODEX_SESSION_MISMATCH\"\n | \"CODEX_UNSUPPORTED\"\n | \"CODEX_RESULT_MISSING\"\n | \"CODEX_CLI_UNSUPPORTED\"\n | \"CODEX_CLI_UNAVAILABLE\";\n\nexport class CodexPrintError extends DurableAgentError {\n constructor(message: string, code: CodexPrintErrorCode) {\n super(message, code);\n this.name = \"CodexPrintError\";\n }\n}\n\nexport class PiPrintError extends DurableAgentError {\n constructor(message: string, code: PiPrintErrorCode = \"PI_PROCESS\") {\n super(message, code);\n this.name = \"PiPrintError\";\n }\n}\n"],"names":["AGENT_MODES","INTERACTIVE","DURABLE","DurableAgentError","Error","message","code","name","DurableAgentBusyError","agentId","agentName","DurableAgentNotFoundError","reference","DurableAgentRepositoryError","DurableAgentNameConflictError","ClaudePrintError","CodexPrintError","PiPrintError"],"mappings":"AAYA,OAAO,MAAMA,cAAc;IACzBC,aAAa;IACbC,SAAS;AACX,EAAW;AAsDX,OAAO,MAAMC,0BAA0BC;;IACrC,YACEC,OAAe,EACf,AAAgBC,IAAY,CAC5B;QACA,KAAK,CAACD,eAFUC,OAAAA;QAGhB,IAAI,CAACC,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMC,8BAA8BL;;IACzC,YACE,AAAgBM,OAAe,EAC/BC,SAAiB,CACjB;QACA,KAAK,CAAC,CAAC,eAAe,EAAEA,UAAU,UAAU,CAAC,EAAE,4BAH/BD,UAAAA;QAIhB,IAAI,CAACF,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMI,kCAAkCR;;IAC7C,YAAY,AAAgBS,SAAiB,CAAE;QAC7C,KAAK,CAAC,CAAC,eAAe,EAAEA,UAAU,gBAAgB,CAAC,EAAE,iCAD3BA,YAAAA;QAE1B,IAAI,CAACL,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMM,oCAAoCV;IAC/C,YAAYE,OAAe,CAAE;QAC3B,KAAK,CAACA,SAAS;QACf,IAAI,CAACE,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMO,sCAAsCX;;IACjD,YAAY,AAAgBO,SAAiB,CAAE;QAC7C,KAAK,CAAC,CAAC,oBAAoB,EAAEA,UAAU,oBAAoB,CAAC,EAAE,qCADpCA,YAAAA;QAE1B,IAAI,CAACH,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMQ,yBAAyBZ;IACpC,YAAYE,OAAe,EAAEC,OAAO,qBAAqB,CAAE;QACzD,KAAK,CAACD,SAASC;QACf,IAAI,CAACC,IAAI,GAAG;IACd;AACF;AAWA,OAAO,MAAMS,wBAAwBb;IACnC,YAAYE,OAAe,EAAEC,IAAyB,CAAE;QACtD,KAAK,CAACD,SAASC;QACf,IAAI,CAACC,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMU,qBAAqBd;IAChC,YAAYE,OAAe,EAAEC,OAAyB,YAAY,CAAE;QAClE,KAAK,CAACD,SAASC;QACf,IAAI,CAACC,IAAI,GAAG;IACd;AACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type DurableAgent, type DurableProvider, type ProcessIdentity, type DurableRunStatus, type DurableSessionHealth } from
|
|
2
|
-
import { type ProcessInspector } from
|
|
1
|
+
import { type DurableAgent, type DurableProvider, type ProcessIdentity, type DurableRunStatus, type DurableSessionHealth } from "./DurableAgent.js";
|
|
2
|
+
import { type ProcessInspector } from "./process.js";
|
|
3
3
|
export interface CreateDurableAgentInput {
|
|
4
4
|
name: string;
|
|
5
5
|
cwd: string;
|
|
@@ -17,8 +17,8 @@ export interface DurableAgentRepositoryOptions {
|
|
|
17
17
|
/** @deprecated SQLite transactions replace mutation lock directories. */
|
|
18
18
|
mutationLockStaleMs?: number;
|
|
19
19
|
}
|
|
20
|
-
export { LocalProcessInspector } from
|
|
21
|
-
export type { ProcessInspector } from
|
|
20
|
+
export { LocalProcessInspector } from "./process.js";
|
|
21
|
+
export type { ProcessInspector } from "./process.js";
|
|
22
22
|
export interface DurableRunCompletion {
|
|
23
23
|
status: DurableRunStatus;
|
|
24
24
|
exitCode: number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurableAgentRepository.d.ts","sourceRoot":"","sources":["../../src/durable/DurableAgentRepository.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"DurableAgentRepository.d.ts","sourceRoot":"","sources":["../../src/durable/DurableAgentRepository.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAiC5E,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,4DAA4D;IAC5D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,oBAAoB,CAAC;CACrC;AAED,qBAAa,sBAAsB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAqB;gBAE5B,OAAO,GAAE,6BAAkC;IAejD,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAiC7D,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAK/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKjD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC;IAQzE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAkEvE,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1F,mBAAmB,CACvB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,YAAY,CAAC;IAuDlB,WAAW,CACf,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,YAAY,CAAC;IA4BlB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BhC,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,OAAO;IAqDf,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,YAAY;CAKrB"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import fs from
|
|
2
|
-
import { randomUUID } from
|
|
3
|
-
import { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH } from
|
|
4
|
-
import { AGENT_MODES, CodexPrintError } from
|
|
5
|
-
import { LocalProcessInspector } from
|
|
6
|
-
import { isUuid } from
|
|
7
|
-
import { DurableAgentBusyError, DurableAgentNameConflictError, DurableAgentNotFoundError, DurableAgentRepositoryError } from
|
|
8
|
-
export { LocalProcessInspector } from
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import { randomUUID } from "crypto";
|
|
3
|
+
import { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH } from "../database/index.js";
|
|
4
|
+
import { AGENT_MODES, CodexPrintError } from "./DurableAgent.js";
|
|
5
|
+
import { LocalProcessInspector } from "./process.js";
|
|
6
|
+
import { isUuid } from "./utils.js";
|
|
7
|
+
import { DurableAgentBusyError, DurableAgentNameConflictError, DurableAgentNotFoundError, DurableAgentRepositoryError } from "./DurableAgent.js";
|
|
8
|
+
export { LocalProcessInspector } from "./process.js";
|
|
9
9
|
export class DurableAgentRepository {
|
|
10
10
|
dbPath;
|
|
11
11
|
now;
|
|
@@ -32,8 +32,8 @@ export class DurableAgentRepository {
|
|
|
32
32
|
const cwd = this.canonicalDirectory(input.cwd);
|
|
33
33
|
const timestamp = this.now().toISOString();
|
|
34
34
|
const id = randomUUID();
|
|
35
|
-
const provider = input.provider ??
|
|
36
|
-
let providerSessionId = provider ===
|
|
35
|
+
const provider = input.provider ?? "claude";
|
|
36
|
+
let providerSessionId = provider === "codex" ? null : randomUUID();
|
|
37
37
|
while(providerSessionId === id)providerSessionId = randomUUID();
|
|
38
38
|
try {
|
|
39
39
|
this.db.execute(`INSERT INTO durable_agents (
|
|
@@ -52,7 +52,7 @@ export class DurableAgentRepository {
|
|
|
52
52
|
if (/UNIQUE constraint failed: durable_agents\.name/i.test(error.message)) {
|
|
53
53
|
throw new DurableAgentNameConflictError(input.name);
|
|
54
54
|
}
|
|
55
|
-
throw this.storageError(
|
|
55
|
+
throw this.storageError("Failed to create durable agent", error);
|
|
56
56
|
}
|
|
57
57
|
return this.requireById(id);
|
|
58
58
|
}
|
|
@@ -80,7 +80,7 @@ export class DurableAgentRepository {
|
|
|
80
80
|
const observedLive = observed ? this.isActive(observed) : false;
|
|
81
81
|
if (observedLive) throw new DurableAgentBusyError(id, snapshot.name);
|
|
82
82
|
const owner = this.processInspector.getIdentity(process.pid);
|
|
83
|
-
if (!owner) throw new DurableAgentRepositoryError(
|
|
83
|
+
if (!owner) throw new DurableAgentRepositoryError("Cannot determine the current process identity.");
|
|
84
84
|
const token = randomUUID();
|
|
85
85
|
const startedAt = this.now().toISOString();
|
|
86
86
|
let recovered = false;
|
|
@@ -88,7 +88,7 @@ export class DurableAgentRepository {
|
|
|
88
88
|
this.immediate(()=>{
|
|
89
89
|
const current = this.findById(id);
|
|
90
90
|
if (!current) throw new DurableAgentNotFoundError(id);
|
|
91
|
-
if (current.state ===
|
|
91
|
+
if (current.state === "running") {
|
|
92
92
|
if (!observed || current.activeRun?.token !== observed.token || observedLive) {
|
|
93
93
|
throw new DurableAgentBusyError(id, current.name);
|
|
94
94
|
}
|
|
@@ -122,11 +122,11 @@ export class DurableAgentRepository {
|
|
|
122
122
|
} catch (error) {
|
|
123
123
|
if (error instanceof DurableAgentBusyError || error instanceof DurableAgentNotFoundError) throw error;
|
|
124
124
|
if (/busy|locked/i.test(error.message)) throw new DurableAgentBusyError(id, snapshot.name);
|
|
125
|
-
throw this.storageError(
|
|
125
|
+
throw this.storageError("Failed to acquire durable-agent run", error);
|
|
126
126
|
}
|
|
127
127
|
const agent = this.requireById(id);
|
|
128
|
-
if (recovered && agent.lastResult?.status !==
|
|
129
|
-
throw new DurableAgentRepositoryError(
|
|
128
|
+
if (recovered && agent.lastResult?.status !== "interrupted") {
|
|
129
|
+
throw new DurableAgentRepositoryError("Failed to record interrupted print run.");
|
|
130
130
|
}
|
|
131
131
|
return {
|
|
132
132
|
agent,
|
|
@@ -144,25 +144,25 @@ export class DurableAgentRepository {
|
|
|
144
144
|
id,
|
|
145
145
|
token
|
|
146
146
|
]);
|
|
147
|
-
if (changed.changes !== 1) throw new DurableAgentRepositoryError(
|
|
147
|
+
if (changed.changes !== 1) throw new DurableAgentRepositoryError("Print run ownership changed.");
|
|
148
148
|
}
|
|
149
149
|
async bindProviderSession(id, token, providerSessionId) {
|
|
150
150
|
this.assertWritable();
|
|
151
151
|
if (!isUuid(providerSessionId)) {
|
|
152
|
-
throw new DurableAgentRepositoryError(
|
|
152
|
+
throw new DurableAgentRepositoryError("Invalid provider session id.");
|
|
153
153
|
}
|
|
154
154
|
try {
|
|
155
155
|
this.immediate(()=>{
|
|
156
156
|
const agent = this.findById(id);
|
|
157
157
|
if (!agent) throw new DurableAgentNotFoundError(id);
|
|
158
|
-
if (agent.provider !==
|
|
159
|
-
throw new DurableAgentRepositoryError(
|
|
158
|
+
if (agent.provider !== "codex") {
|
|
159
|
+
throw new DurableAgentRepositoryError("Only Codex durable sessions can be bound after creation.");
|
|
160
160
|
}
|
|
161
161
|
if (agent.activeRun?.token !== token) {
|
|
162
|
-
throw new DurableAgentRepositoryError(
|
|
162
|
+
throw new DurableAgentRepositoryError("Print run ownership changed.");
|
|
163
163
|
}
|
|
164
164
|
if (agent.providerSessionId !== null && agent.providerSessionId !== providerSessionId) {
|
|
165
|
-
throw new CodexPrintError(
|
|
165
|
+
throw new CodexPrintError("Durable agent provider session identity does not match.", "CODEX_SESSION_MISMATCH");
|
|
166
166
|
}
|
|
167
167
|
if (agent.providerSessionId === providerSessionId) return;
|
|
168
168
|
const changed = this.db.execute(`UPDATE durable_agents SET provider_session_id = ?, updated_at = ?
|
|
@@ -173,14 +173,14 @@ export class DurableAgentRepository {
|
|
|
173
173
|
id,
|
|
174
174
|
token
|
|
175
175
|
]);
|
|
176
|
-
if (changed.changes !== 1) throw new DurableAgentRepositoryError(
|
|
176
|
+
if (changed.changes !== 1) throw new DurableAgentRepositoryError("Print run ownership changed.");
|
|
177
177
|
});
|
|
178
178
|
} catch (error) {
|
|
179
179
|
if (error instanceof DurableAgentRepositoryError || error instanceof DurableAgentNotFoundError || error instanceof CodexPrintError) throw error;
|
|
180
180
|
if (/UNIQUE constraint failed: durable_agents\.provider_session_id/i.test(error.message)) {
|
|
181
|
-
throw new CodexPrintError(
|
|
181
|
+
throw new CodexPrintError("Provider session is already bound to another durable agent.", "CODEX_SESSION_MISMATCH");
|
|
182
182
|
}
|
|
183
|
-
throw this.storageError(
|
|
183
|
+
throw this.storageError("Failed to bind durable-agent provider session", error);
|
|
184
184
|
}
|
|
185
185
|
return this.requireById(id);
|
|
186
186
|
}
|
|
@@ -193,7 +193,7 @@ export class DurableAgentRepository {
|
|
|
193
193
|
active_run_started_at = NULL, last_active_at = ?, updated_at = ?, last_result_status = ?,
|
|
194
194
|
last_result_completed_at = ?, last_result_exit_code = ?, last_result_summary = ?
|
|
195
195
|
WHERE id = ? AND state = 'running' AND active_run_token = ?`, [
|
|
196
|
-
result.status ===
|
|
196
|
+
result.status === "succeeded" ? "ready" : "degraded",
|
|
197
197
|
result.sessionHealth,
|
|
198
198
|
completedAt,
|
|
199
199
|
completedAt,
|
|
@@ -204,12 +204,12 @@ export class DurableAgentRepository {
|
|
|
204
204
|
id,
|
|
205
205
|
token
|
|
206
206
|
]);
|
|
207
|
-
if (changed.changes !== 1) throw new DurableAgentRepositoryError(
|
|
207
|
+
if (changed.changes !== 1) throw new DurableAgentRepositoryError("Print run ownership changed.");
|
|
208
208
|
return this.requireById(id);
|
|
209
209
|
}
|
|
210
210
|
async reconcile() {
|
|
211
211
|
this.assertWritable();
|
|
212
|
-
const running = this.listRaw().filter((agent)=>agent.state ===
|
|
212
|
+
const running = this.listRaw().filter((agent)=>agent.state === "running" && agent.activeRun);
|
|
213
213
|
for (const snapshot of running){
|
|
214
214
|
if (this.isActive(snapshot.activeRun)) continue;
|
|
215
215
|
const completedAt = this.now().toISOString();
|
|
@@ -232,27 +232,28 @@ export class DurableAgentRepository {
|
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
immediate(operation) {
|
|
235
|
-
this.db.instance.exec(
|
|
235
|
+
this.db.instance.exec("BEGIN IMMEDIATE");
|
|
236
236
|
try {
|
|
237
237
|
const result = operation();
|
|
238
|
-
this.db.instance.exec(
|
|
238
|
+
this.db.instance.exec("COMMIT");
|
|
239
239
|
return result;
|
|
240
240
|
} catch (error) {
|
|
241
241
|
try {
|
|
242
|
-
this.db.instance.exec(
|
|
243
|
-
} catch {
|
|
242
|
+
this.db.instance.exec("ROLLBACK");
|
|
243
|
+
} catch {
|
|
244
|
+
/* retain original failure */ }
|
|
244
245
|
throw error;
|
|
245
246
|
}
|
|
246
247
|
}
|
|
247
248
|
listRaw() {
|
|
248
249
|
try {
|
|
249
|
-
return this.db.query(
|
|
250
|
+
return this.db.query("SELECT * FROM durable_agents ORDER BY updated_at DESC, name COLLATE NOCASE").map((row)=>this.fromRow(row));
|
|
250
251
|
} catch (error) {
|
|
251
|
-
throw this.storageError(
|
|
252
|
+
throw this.storageError("Failed to read durable-agent database", error);
|
|
252
253
|
}
|
|
253
254
|
}
|
|
254
255
|
findById(id) {
|
|
255
|
-
const row = this.db.queryOne(
|
|
256
|
+
const row = this.db.queryOne("SELECT * FROM durable_agents WHERE id = ?", [
|
|
256
257
|
id
|
|
257
258
|
]);
|
|
258
259
|
return row ? this.fromRow(row) : null;
|
|
@@ -264,10 +265,10 @@ export class DurableAgentRepository {
|
|
|
264
265
|
}
|
|
265
266
|
fromRow(row) {
|
|
266
267
|
if (![
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
].includes(row.provider) || row.provider !==
|
|
268
|
+
"claude",
|
|
269
|
+
"codex",
|
|
270
|
+
"pi"
|
|
271
|
+
].includes(row.provider) || row.provider !== "codex" && row.provider_session_id === null) {
|
|
271
272
|
throw new DurableAgentRepositoryError(`Invalid durable-agent provider record: ${row.id}`);
|
|
272
273
|
}
|
|
273
274
|
const activeRun = row.active_run_token === null ? null : {
|
|
@@ -297,34 +298,34 @@ export class DurableAgentRepository {
|
|
|
297
298
|
status: row.last_result_status,
|
|
298
299
|
completedAt: row.last_result_completed_at,
|
|
299
300
|
exitCode: row.last_result_exit_code,
|
|
300
|
-
summary: row.last_result_summary ??
|
|
301
|
+
summary: row.last_result_summary ?? ""
|
|
301
302
|
},
|
|
302
303
|
activeRun
|
|
303
304
|
};
|
|
304
|
-
if (row.provider ===
|
|
305
|
+
if (row.provider === "claude") {
|
|
305
306
|
return {
|
|
306
307
|
...base,
|
|
307
|
-
provider:
|
|
308
|
+
provider: "claude",
|
|
308
309
|
providerSessionId: row.provider_session_id
|
|
309
310
|
};
|
|
310
311
|
}
|
|
311
|
-
if (row.provider ===
|
|
312
|
+
if (row.provider === "pi") {
|
|
312
313
|
return {
|
|
313
314
|
...base,
|
|
314
|
-
provider:
|
|
315
|
+
provider: "pi",
|
|
315
316
|
providerSessionId: row.provider_session_id
|
|
316
317
|
};
|
|
317
318
|
}
|
|
318
319
|
return {
|
|
319
320
|
...base,
|
|
320
|
-
provider:
|
|
321
|
+
provider: "codex",
|
|
321
322
|
providerSessionId: row.provider_session_id
|
|
322
323
|
};
|
|
323
324
|
}
|
|
324
325
|
canonicalDirectory(input) {
|
|
325
326
|
try {
|
|
326
327
|
const resolved = fs.realpathSync(input);
|
|
327
|
-
if (!fs.statSync(resolved).isDirectory()) throw new Error(
|
|
328
|
+
if (!fs.statSync(resolved).isDirectory()) throw new Error("not a directory");
|
|
328
329
|
return resolved;
|
|
329
330
|
} catch {
|
|
330
331
|
throw new DurableAgentRepositoryError(`Durable agent cwd is not an existing directory: ${input}`);
|
|
@@ -333,7 +334,7 @@ export class DurableAgentRepository {
|
|
|
333
334
|
validateBoundCwd(bound) {
|
|
334
335
|
try {
|
|
335
336
|
const stat = fs.lstatSync(bound);
|
|
336
|
-
if (!stat.isDirectory() || stat.isSymbolicLink() || fs.realpathSync(bound) !== bound) throw new Error(
|
|
337
|
+
if (!stat.isDirectory() || stat.isSymbolicLink() || fs.realpathSync(bound) !== bound) throw new Error("binding changed");
|
|
337
338
|
} catch {
|
|
338
339
|
throw new DurableAgentRepositoryError(`Durable agent cwd binding is no longer safe: ${bound}`);
|
|
339
340
|
}
|
|
@@ -346,7 +347,7 @@ export class DurableAgentRepository {
|
|
|
346
347
|
return actual !== null && actual.startedAt === expected.startedAt;
|
|
347
348
|
}
|
|
348
349
|
assertWritable() {
|
|
349
|
-
if (this.readonly) throw new DurableAgentRepositoryError(
|
|
350
|
+
if (this.readonly) throw new DurableAgentRepositoryError("Durable-agent repository is readonly.");
|
|
350
351
|
}
|
|
351
352
|
storageError(prefix, error) {
|
|
352
353
|
return error instanceof DurableAgentRepositoryError ? error : new DurableAgentRepositoryError(`${prefix}: ${error.message}`);
|