@openma/common 0.0.0-stage → 0.9.1

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.
Files changed (328) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +391 -2
  3. package/dist/acp-artifacts/binary.d.ts +35 -0
  4. package/dist/acp-artifacts/binary.d.ts.map +1 -0
  5. package/dist/acp-artifacts/binary.js +120 -0
  6. package/dist/acp-artifacts/binary.js.map +1 -0
  7. package/dist/acp-artifacts/index.d.ts +7 -0
  8. package/dist/acp-artifacts/index.d.ts.map +1 -0
  9. package/dist/acp-artifacts/index.js +7 -0
  10. package/dist/acp-artifacts/index.js.map +1 -0
  11. package/dist/acp-artifacts/node-abi.d.ts +3 -0
  12. package/dist/acp-artifacts/node-abi.d.ts.map +1 -0
  13. package/dist/acp-artifacts/node-abi.js +17 -0
  14. package/dist/acp-artifacts/node-abi.js.map +1 -0
  15. package/dist/acp-artifacts/npm-cli.d.ts +3 -0
  16. package/dist/acp-artifacts/npm-cli.d.ts.map +1 -0
  17. package/dist/acp-artifacts/npm-cli.js +9 -0
  18. package/dist/acp-artifacts/npm-cli.js.map +1 -0
  19. package/dist/acp-artifacts/npm.d.ts +37 -0
  20. package/dist/acp-artifacts/npm.d.ts.map +1 -0
  21. package/dist/acp-artifacts/npm.js +167 -0
  22. package/dist/acp-artifacts/npm.js.map +1 -0
  23. package/dist/acp-artifacts/registry.d.ts +45 -0
  24. package/dist/acp-artifacts/registry.d.ts.map +1 -0
  25. package/dist/acp-artifacts/registry.js +206 -0
  26. package/dist/acp-artifacts/registry.js.map +1 -0
  27. package/dist/acp-artifacts/shared.d.ts +45 -0
  28. package/dist/acp-artifacts/shared.d.ts.map +1 -0
  29. package/dist/acp-artifacts/shared.js +157 -0
  30. package/dist/acp-artifacts/shared.js.map +1 -0
  31. package/dist/acp-artifacts/uvx.d.ts +32 -0
  32. package/dist/acp-artifacts/uvx.d.ts.map +1 -0
  33. package/dist/acp-artifacts/uvx.js +95 -0
  34. package/dist/acp-artifacts/uvx.js.map +1 -0
  35. package/dist/acp-fork/index.d.ts +51 -0
  36. package/dist/acp-fork/index.d.ts.map +1 -0
  37. package/dist/acp-fork/index.js +116 -0
  38. package/dist/acp-fork/index.js.map +1 -0
  39. package/dist/acp-harnesses/agent-setup.d.ts +118 -0
  40. package/dist/acp-harnesses/agent-setup.d.ts.map +1 -0
  41. package/dist/acp-harnesses/agent-setup.js +717 -0
  42. package/dist/acp-harnesses/agent-setup.js.map +1 -0
  43. package/dist/acp-harnesses/custom-agents.d.ts +81 -0
  44. package/dist/acp-harnesses/custom-agents.d.ts.map +1 -0
  45. package/dist/acp-harnesses/custom-agents.js +361 -0
  46. package/dist/acp-harnesses/custom-agents.js.map +1 -0
  47. package/dist/acp-harnesses/headless-launch.d.ts +34 -0
  48. package/dist/acp-harnesses/headless-launch.d.ts.map +1 -0
  49. package/dist/acp-harnesses/headless-launch.js +67 -0
  50. package/dist/acp-harnesses/headless-launch.js.map +1 -0
  51. package/dist/acp-harnesses/index.d.ts +18 -0
  52. package/dist/acp-harnesses/index.d.ts.map +1 -0
  53. package/dist/acp-harnesses/index.js +58 -0
  54. package/dist/acp-harnesses/index.js.map +1 -0
  55. package/dist/acp-harnesses/install-state.d.ts +86 -0
  56. package/dist/acp-harnesses/install-state.d.ts.map +1 -0
  57. package/dist/acp-harnesses/install-state.js +322 -0
  58. package/dist/acp-harnesses/install-state.js.map +1 -0
  59. package/dist/acp-harnesses/installer.d.ts +145 -0
  60. package/dist/acp-harnesses/installer.d.ts.map +1 -0
  61. package/dist/acp-harnesses/installer.js +716 -0
  62. package/dist/acp-harnesses/installer.js.map +1 -0
  63. package/dist/acp-harnesses/known-agents.d.ts +154 -0
  64. package/dist/acp-harnesses/known-agents.d.ts.map +1 -0
  65. package/dist/acp-harnesses/known-agents.js +240 -0
  66. package/dist/acp-harnesses/known-agents.js.map +1 -0
  67. package/dist/acp-harnesses/launcher.d.ts +27 -0
  68. package/dist/acp-harnesses/launcher.d.ts.map +1 -0
  69. package/dist/acp-harnesses/launcher.js +64 -0
  70. package/dist/acp-harnesses/launcher.js.map +1 -0
  71. package/dist/acp-harnesses/registry-fetch.d.ts +42 -0
  72. package/dist/acp-harnesses/registry-fetch.d.ts.map +1 -0
  73. package/dist/acp-harnesses/registry-fetch.js +132 -0
  74. package/dist/acp-harnesses/registry-fetch.js.map +1 -0
  75. package/dist/acp-harnesses/registry.d.ts +36 -0
  76. package/dist/acp-harnesses/registry.d.ts.map +1 -0
  77. package/dist/acp-harnesses/registry.js +307 -0
  78. package/dist/acp-harnesses/registry.js.map +1 -0
  79. package/dist/acp-runtime/errors.d.ts +7 -0
  80. package/dist/acp-runtime/errors.d.ts.map +1 -0
  81. package/dist/acp-runtime/errors.js +17 -0
  82. package/dist/acp-runtime/errors.js.map +1 -0
  83. package/dist/acp-runtime/fork-support.d.ts +8 -0
  84. package/dist/acp-runtime/fork-support.d.ts.map +1 -0
  85. package/dist/acp-runtime/fork-support.js +20 -0
  86. package/dist/acp-runtime/fork-support.js.map +1 -0
  87. package/dist/acp-runtime/index.d.ts +11 -0
  88. package/dist/acp-runtime/index.d.ts.map +1 -0
  89. package/dist/acp-runtime/index.js +6 -0
  90. package/dist/acp-runtime/index.js.map +1 -0
  91. package/dist/acp-runtime/probe.d.ts +103 -0
  92. package/dist/acp-runtime/probe.d.ts.map +1 -0
  93. package/dist/acp-runtime/probe.js +881 -0
  94. package/dist/acp-runtime/probe.js.map +1 -0
  95. package/dist/acp-runtime/runtime.d.ts +7 -0
  96. package/dist/acp-runtime/runtime.d.ts.map +1 -0
  97. package/dist/acp-runtime/runtime.js +26 -0
  98. package/dist/acp-runtime/runtime.js.map +1 -0
  99. package/dist/acp-runtime/session.d.ts +87 -0
  100. package/dist/acp-runtime/session.d.ts.map +1 -0
  101. package/dist/acp-runtime/session.js +1071 -0
  102. package/dist/acp-runtime/session.js.map +1 -0
  103. package/dist/acp-runtime/spawners/node.d.ts +5 -0
  104. package/dist/acp-runtime/spawners/node.d.ts.map +1 -0
  105. package/dist/acp-runtime/spawners/node.js +244 -0
  106. package/dist/acp-runtime/spawners/node.js.map +1 -0
  107. package/dist/acp-runtime/types.d.ts +180 -0
  108. package/dist/acp-runtime/types.d.ts.map +1 -0
  109. package/dist/acp-runtime/types.js +2 -0
  110. package/dist/acp-runtime/types.js.map +1 -0
  111. package/dist/agent-contract/acp.d.ts +4 -0
  112. package/dist/agent-contract/acp.d.ts.map +1 -0
  113. package/dist/agent-contract/acp.js +273 -0
  114. package/dist/agent-contract/acp.js.map +1 -0
  115. package/dist/agent-contract/index.d.ts +125 -0
  116. package/dist/agent-contract/index.d.ts.map +1 -0
  117. package/dist/agent-contract/index.js +102 -0
  118. package/dist/agent-contract/index.js.map +1 -0
  119. package/dist/agent-contract/managed.d.ts +5 -0
  120. package/dist/agent-contract/managed.d.ts.map +1 -0
  121. package/dist/agent-contract/managed.js +242 -0
  122. package/dist/agent-contract/managed.js.map +1 -0
  123. package/dist/agent-ui/index.d.ts +170 -0
  124. package/dist/agent-ui/index.d.ts.map +1 -0
  125. package/dist/agent-ui/index.js +853 -0
  126. package/dist/agent-ui/index.js.map +1 -0
  127. package/dist/agent-ui/presentation.d.ts +30 -0
  128. package/dist/agent-ui/presentation.d.ts.map +1 -0
  129. package/dist/agent-ui/presentation.js +79 -0
  130. package/dist/agent-ui/presentation.js.map +1 -0
  131. package/dist/agent-ui/react.d.ts +50 -0
  132. package/dist/agent-ui/react.d.ts.map +1 -0
  133. package/dist/agent-ui/react.js +334 -0
  134. package/dist/agent-ui/react.js.map +1 -0
  135. package/dist/brand/index.d.ts +17 -0
  136. package/dist/brand/index.d.ts.map +1 -0
  137. package/dist/brand/index.js +119 -0
  138. package/dist/brand/index.js.map +1 -0
  139. package/dist/brand/openma-logo-mark.svg +7 -0
  140. package/dist/brand/tokens.css +77 -0
  141. package/dist/brand/website.css +67 -0
  142. package/dist/chat-ui/acp.d.ts +26 -0
  143. package/dist/chat-ui/acp.d.ts.map +1 -0
  144. package/dist/chat-ui/acp.js +166 -0
  145. package/dist/chat-ui/acp.js.map +1 -0
  146. package/dist/chat-ui/components.d.ts +230 -0
  147. package/dist/chat-ui/components.d.ts.map +1 -0
  148. package/dist/chat-ui/components.js +561 -0
  149. package/dist/chat-ui/components.js.map +1 -0
  150. package/dist/chat-ui/composer-drafts.d.ts +21 -0
  151. package/dist/chat-ui/composer-drafts.d.ts.map +1 -0
  152. package/dist/chat-ui/composer-drafts.js +58 -0
  153. package/dist/chat-ui/composer-drafts.js.map +1 -0
  154. package/dist/chat-ui/controller.d.ts +61 -0
  155. package/dist/chat-ui/controller.d.ts.map +1 -0
  156. package/dist/chat-ui/controller.js +218 -0
  157. package/dist/chat-ui/controller.js.map +1 -0
  158. package/dist/chat-ui/index.d.ts +8 -0
  159. package/dist/chat-ui/index.d.ts.map +1 -0
  160. package/dist/chat-ui/index.js +8 -0
  161. package/dist/chat-ui/index.js.map +1 -0
  162. package/dist/chat-ui/markdown.d.ts +37 -0
  163. package/dist/chat-ui/markdown.d.ts.map +1 -0
  164. package/dist/chat-ui/markdown.js +33 -0
  165. package/dist/chat-ui/markdown.js.map +1 -0
  166. package/dist/chat-ui/presentation.d.ts +34 -0
  167. package/dist/chat-ui/presentation.d.ts.map +1 -0
  168. package/dist/chat-ui/presentation.js +191 -0
  169. package/dist/chat-ui/presentation.js.map +1 -0
  170. package/dist/chat-ui/styles.css +815 -0
  171. package/dist/chat-ui/utils.d.ts +14 -0
  172. package/dist/chat-ui/utils.d.ts.map +1 -0
  173. package/dist/chat-ui/utils.js +71 -0
  174. package/dist/chat-ui/utils.js.map +1 -0
  175. package/dist/local-runtime/checkpoint.d.ts +28 -0
  176. package/dist/local-runtime/checkpoint.d.ts.map +1 -0
  177. package/dist/local-runtime/checkpoint.js +2 -0
  178. package/dist/local-runtime/checkpoint.js.map +1 -0
  179. package/dist/local-runtime/daemon-connection.d.ts +27 -0
  180. package/dist/local-runtime/daemon-connection.d.ts.map +1 -0
  181. package/dist/local-runtime/daemon-connection.js +161 -0
  182. package/dist/local-runtime/daemon-connection.js.map +1 -0
  183. package/dist/local-runtime/daemon-host.d.ts +39 -0
  184. package/dist/local-runtime/daemon-host.d.ts.map +1 -0
  185. package/dist/local-runtime/daemon-host.js +88 -0
  186. package/dist/local-runtime/daemon-host.js.map +1 -0
  187. package/dist/local-runtime/index.d.ts +6 -0
  188. package/dist/local-runtime/index.d.ts.map +1 -0
  189. package/dist/local-runtime/index.js +5 -0
  190. package/dist/local-runtime/index.js.map +1 -0
  191. package/dist/local-runtime/runtime.d.ts +36 -0
  192. package/dist/local-runtime/runtime.d.ts.map +1 -0
  193. package/dist/local-runtime/runtime.js +82 -0
  194. package/dist/local-runtime/runtime.js.map +1 -0
  195. package/dist/local-runtime/session-host.d.ts +62 -0
  196. package/dist/local-runtime/session-host.d.ts.map +1 -0
  197. package/dist/local-runtime/session-host.js +477 -0
  198. package/dist/local-runtime/session-host.js.map +1 -0
  199. package/dist/managed-runtime/acp-subagents.d.ts +14 -0
  200. package/dist/managed-runtime/acp-subagents.d.ts.map +1 -0
  201. package/dist/managed-runtime/acp-subagents.js +67 -0
  202. package/dist/managed-runtime/acp-subagents.js.map +1 -0
  203. package/dist/managed-runtime/claimed-environment-work.d.ts +61 -0
  204. package/dist/managed-runtime/claimed-environment-work.d.ts.map +1 -0
  205. package/dist/managed-runtime/claimed-environment-work.js +170 -0
  206. package/dist/managed-runtime/claimed-environment-work.js.map +1 -0
  207. package/dist/managed-runtime/contracts.d.ts +31 -0
  208. package/dist/managed-runtime/contracts.d.ts.map +1 -0
  209. package/dist/managed-runtime/contracts.js +2 -0
  210. package/dist/managed-runtime/contracts.js.map +1 -0
  211. package/dist/managed-runtime/http-control.d.ts +67 -0
  212. package/dist/managed-runtime/http-control.d.ts.map +1 -0
  213. package/dist/managed-runtime/http-control.js +465 -0
  214. package/dist/managed-runtime/http-control.js.map +1 -0
  215. package/dist/managed-runtime/index.d.ts +89 -0
  216. package/dist/managed-runtime/index.d.ts.map +1 -0
  217. package/dist/managed-runtime/index.js +215 -0
  218. package/dist/managed-runtime/index.js.map +1 -0
  219. package/dist/managed-runtime/input-identity.d.ts +2 -0
  220. package/dist/managed-runtime/input-identity.d.ts.map +1 -0
  221. package/dist/managed-runtime/input-identity.js +2 -0
  222. package/dist/managed-runtime/input-identity.js.map +1 -0
  223. package/dist/managed-runtime/managed-event-projector.d.ts +24 -0
  224. package/dist/managed-runtime/managed-event-projector.d.ts.map +1 -0
  225. package/dist/managed-runtime/managed-event-projector.js +333 -0
  226. package/dist/managed-runtime/managed-event-projector.js.map +1 -0
  227. package/dist/managed-runtime/semantic-recovery.d.ts +61 -0
  228. package/dist/managed-runtime/semantic-recovery.d.ts.map +1 -0
  229. package/dist/managed-runtime/semantic-recovery.js +167 -0
  230. package/dist/managed-runtime/semantic-recovery.js.map +1 -0
  231. package/dist/project-ui/CreateProjectDialog.d.ts +15 -0
  232. package/dist/project-ui/CreateProjectDialog.d.ts.map +1 -0
  233. package/dist/project-ui/CreateProjectDialog.js +87 -0
  234. package/dist/project-ui/CreateProjectDialog.js.map +1 -0
  235. package/dist/project-ui/ProjectComposer.d.ts +13 -0
  236. package/dist/project-ui/ProjectComposer.d.ts.map +1 -0
  237. package/dist/project-ui/ProjectComposer.js +70 -0
  238. package/dist/project-ui/ProjectComposer.js.map +1 -0
  239. package/dist/project-ui/ProjectConversation.d.ts +10 -0
  240. package/dist/project-ui/ProjectConversation.d.ts.map +1 -0
  241. package/dist/project-ui/ProjectConversation.js +28 -0
  242. package/dist/project-ui/ProjectConversation.js.map +1 -0
  243. package/dist/project-ui/ProjectMessageAttachments.d.ts +4 -0
  244. package/dist/project-ui/ProjectMessageAttachments.d.ts.map +1 -0
  245. package/dist/project-ui/ProjectMessageAttachments.js +28 -0
  246. package/dist/project-ui/ProjectMessageAttachments.js.map +1 -0
  247. package/dist/project-ui/ProjectSettings.d.ts +8 -0
  248. package/dist/project-ui/ProjectSettings.d.ts.map +1 -0
  249. package/dist/project-ui/ProjectSettings.js +65 -0
  250. package/dist/project-ui/ProjectSettings.js.map +1 -0
  251. package/dist/project-ui/Projects.d.ts +18 -0
  252. package/dist/project-ui/Projects.d.ts.map +1 -0
  253. package/dist/project-ui/Projects.js +377 -0
  254. package/dist/project-ui/Projects.js.map +1 -0
  255. package/dist/project-ui/client.d.ts +234 -0
  256. package/dist/project-ui/client.d.ts.map +1 -0
  257. package/dist/project-ui/client.js +42 -0
  258. package/dist/project-ui/client.js.map +1 -0
  259. package/dist/project-ui/controls.d.ts +15 -0
  260. package/dist/project-ui/controls.d.ts.map +1 -0
  261. package/dist/project-ui/controls.js +17 -0
  262. package/dist/project-ui/controls.js.map +1 -0
  263. package/dist/project-ui/index.d.ts +20 -0
  264. package/dist/project-ui/index.d.ts.map +1 -0
  265. package/dist/project-ui/index.js +17 -0
  266. package/dist/project-ui/index.js.map +1 -0
  267. package/dist/project-ui/project-coordinator.d.ts +3 -0
  268. package/dist/project-ui/project-coordinator.d.ts.map +1 -0
  269. package/dist/project-ui/project-coordinator.js +12 -0
  270. package/dist/project-ui/project-coordinator.js.map +1 -0
  271. package/dist/project-ui/project-goals.d.ts +48 -0
  272. package/dist/project-ui/project-goals.d.ts.map +1 -0
  273. package/dist/project-ui/project-goals.js +169 -0
  274. package/dist/project-ui/project-goals.js.map +1 -0
  275. package/dist/project-ui/projects-query.d.ts +19 -0
  276. package/dist/project-ui/projects-query.d.ts.map +1 -0
  277. package/dist/project-ui/projects-query.js +132 -0
  278. package/dist/project-ui/projects-query.js.map +1 -0
  279. package/dist/project-ui/styles.css +847 -0
  280. package/dist/protocol/acp/index.d.ts +52 -0
  281. package/dist/protocol/acp/index.d.ts.map +1 -0
  282. package/dist/protocol/acp/index.js +1056 -0
  283. package/dist/protocol/acp/index.js.map +1 -0
  284. package/dist/protocol/cursor-cloud/index.d.ts +74 -0
  285. package/dist/protocol/cursor-cloud/index.d.ts.map +1 -0
  286. package/dist/protocol/cursor-cloud/index.js +249 -0
  287. package/dist/protocol/cursor-cloud/index.js.map +1 -0
  288. package/dist/protocol/managed/index.d.ts +32 -0
  289. package/dist/protocol/managed/index.d.ts.map +1 -0
  290. package/dist/protocol/managed/index.js +646 -0
  291. package/dist/protocol/managed/index.js.map +1 -0
  292. package/dist/protocol/managed/input-identity.d.ts +3 -0
  293. package/dist/protocol/managed/input-identity.d.ts.map +1 -0
  294. package/dist/protocol/managed/input-identity.js +6 -0
  295. package/dist/protocol/managed/input-identity.js.map +1 -0
  296. package/dist/protocol/openai-agents/index.d.ts +102 -0
  297. package/dist/protocol/openai-agents/index.d.ts.map +1 -0
  298. package/dist/protocol/openai-agents/index.js +142 -0
  299. package/dist/protocol/openai-agents/index.js.map +1 -0
  300. package/dist/session-events/acp-system-notices.d.ts +10 -0
  301. package/dist/session-events/acp-system-notices.d.ts.map +1 -0
  302. package/dist/session-events/acp-system-notices.js +46 -0
  303. package/dist/session-events/acp-system-notices.js.map +1 -0
  304. package/dist/session-events/acp.d.ts +214 -0
  305. package/dist/session-events/acp.d.ts.map +1 -0
  306. package/dist/session-events/acp.js +956 -0
  307. package/dist/session-events/acp.js.map +1 -0
  308. package/dist/session-events/managed.d.ts +141 -0
  309. package/dist/session-events/managed.d.ts.map +1 -0
  310. package/dist/session-events/managed.js +324 -0
  311. package/dist/session-events/managed.js.map +1 -0
  312. package/dist/session-events/openma.d.ts +304 -0
  313. package/dist/session-events/openma.d.ts.map +1 -0
  314. package/dist/session-events/openma.js +438 -0
  315. package/dist/session-events/openma.js.map +1 -0
  316. package/dist/session-kernel/index.d.ts +118 -0
  317. package/dist/session-kernel/index.d.ts.map +1 -0
  318. package/dist/session-kernel/index.js +215 -0
  319. package/dist/session-kernel/index.js.map +1 -0
  320. package/dist/session-orchestrator/index.d.ts +71 -0
  321. package/dist/session-orchestrator/index.d.ts.map +1 -0
  322. package/dist/session-orchestrator/index.js +177 -0
  323. package/dist/session-orchestrator/index.js.map +1 -0
  324. package/dist/session-ui/index.d.ts +96 -0
  325. package/dist/session-ui/index.d.ts.map +1 -0
  326. package/dist/session-ui/index.js +277 -0
  327. package/dist/session-ui/index.js.map +1 -0
  328. package/package.json +222 -4
@@ -0,0 +1,62 @@
1
+ import type { AcpRuntime, SessionOptions } from "../acp-runtime/index.js";
2
+ import type { SessionHostEvent } from "../session-kernel/index.js";
3
+ import type { ManagedAgentsSessionCheckpointStore } from "./checkpoint.js";
4
+ export interface ManagedAgentsSessionHostDependencies {
5
+ runtime: AcpRuntime;
6
+ emit(event: SessionHostEvent): void;
7
+ scheduler?: ManagedAgentsRuntimeScheduler;
8
+ /** Grace after ACP session/cancel before a stuck child is disposed. When
9
+ * omitted the host preserves the legacy abort-only behavior. */
10
+ cancelGraceMs?: number;
11
+ checkpointStore?: ManagedAgentsSessionCheckpointStore;
12
+ /** Unique per running host process/isolate. Required with a checkpoint
13
+ * store so generations can fence stale restored copies. */
14
+ hostInstanceId?: string;
15
+ }
16
+ export interface ManagedAgentsRuntimeScheduler {
17
+ now(): number;
18
+ sleep(ms: number): Promise<void>;
19
+ }
20
+ export interface ManagedAgentsDrainOptions {
21
+ deadlineMs: number;
22
+ pollIntervalMs?: number;
23
+ abortGraceMs?: number;
24
+ onProgress?(activeTurns: number, msLeft: number): void;
25
+ }
26
+ export interface ManagedAgentsDrainReport {
27
+ initialTurns: number;
28
+ abortedTurns: number;
29
+ sessions: number;
30
+ }
31
+ export declare const systemRuntimeScheduler: ManagedAgentsRuntimeScheduler;
32
+ export interface ManagedAgentsSessionStartInput {
33
+ sessionId: string;
34
+ options: SessionOptions;
35
+ }
36
+ export interface ManagedAgentsSessionPromptInput {
37
+ sessionId: string;
38
+ turnId: string;
39
+ text: string;
40
+ }
41
+ export interface ManagedAgentsSessionSteerInput {
42
+ sessionId: string;
43
+ eventId: string;
44
+ text: string;
45
+ }
46
+ export declare class ManagedAgentsSessionHost {
47
+ #private;
48
+ constructor(dependencies: ManagedAgentsSessionHostDependencies);
49
+ has(sessionId: string): boolean;
50
+ sessionCount(): number;
51
+ announce(sessionId: string): boolean;
52
+ announceAll(): void;
53
+ activeTurnCount(): number;
54
+ start(input: ManagedAgentsSessionStartInput): Promise<void>;
55
+ prompt(input: ManagedAgentsSessionPromptInput): Promise<void>;
56
+ steer(input: ManagedAgentsSessionSteerInput): Promise<void>;
57
+ dispose(sessionId: string): Promise<void>;
58
+ disposeAll(): Promise<void>;
59
+ drain(options: ManagedAgentsDrainOptions): Promise<ManagedAgentsDrainReport>;
60
+ cancel(sessionId: string, turnId: string): Promise<void>;
61
+ }
62
+ //# sourceMappingURL=session-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-host.d.ts","sourceRoot":"","sources":["../../src/local-runtime/session-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEV,cAAc,EACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAEV,mCAAmC,EACpC,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,oCAAoC;IACnD,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,6BAA6B,CAAC;IAC1C;oEACgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,mCAAmC,CAAC;IACtD;+DAC2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,6BAA6B;IAC5C,GAAG,IAAI,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,sBAAsB,EAAE,6BAGpC,CAAC;AAEF,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AASD,qBAAa,wBAAwB;;gBAWvB,YAAY,EAAE,oCAAoC;IAY9D,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/B,YAAY,IAAI,MAAM;IAKtB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAWpC,WAAW,IAAI,IAAI;IAYnB,eAAe,IAAI,MAAM;IAMnB,KAAK,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAoG3D,MAAM,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC;IAoG7D,KAAK,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD3D,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,KAAK,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IA+B5E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA+G/D"}
@@ -0,0 +1,477 @@
1
+ export const systemRuntimeScheduler = {
2
+ now: () => Date.now(),
3
+ sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
4
+ };
5
+ export class ManagedAgentsSessionHost {
6
+ #runtime;
7
+ #emit;
8
+ #scheduler;
9
+ #cancelGraceMs;
10
+ #checkpointStore;
11
+ #hostInstanceId;
12
+ #sessions = new Map();
13
+ #resumeSessionIds = new Map();
14
+ #draining = false;
15
+ constructor(dependencies) {
16
+ this.#runtime = dependencies.runtime;
17
+ this.#emit = dependencies.emit;
18
+ this.#scheduler = dependencies.scheduler ?? systemRuntimeScheduler;
19
+ this.#cancelGraceMs = dependencies.cancelGraceMs;
20
+ this.#checkpointStore = dependencies.checkpointStore;
21
+ this.#hostInstanceId = dependencies.hostInstanceId;
22
+ if (this.#checkpointStore && !this.#hostInstanceId) {
23
+ throw new Error("hostInstanceId is required when checkpointStore is configured");
24
+ }
25
+ }
26
+ has(sessionId) {
27
+ return this.#liveSession(sessionId) !== undefined;
28
+ }
29
+ sessionCount() {
30
+ this.#pruneDeadSessions();
31
+ return this.#sessions.size;
32
+ }
33
+ announce(sessionId) {
34
+ const session = this.#liveSession(sessionId);
35
+ if (!session)
36
+ return false;
37
+ this.#emit({
38
+ type: "session.ready",
39
+ sessionId,
40
+ acpSessionId: session.acp.acpSessionId,
41
+ });
42
+ return true;
43
+ }
44
+ announceAll() {
45
+ for (const sessionId of [...this.#sessions.keys()]) {
46
+ const session = this.#liveSession(sessionId);
47
+ if (!session)
48
+ continue;
49
+ this.#emit({
50
+ type: "session.ready",
51
+ sessionId,
52
+ acpSessionId: session.acp.acpSessionId,
53
+ });
54
+ }
55
+ }
56
+ activeTurnCount() {
57
+ let count = 0;
58
+ for (const session of this.#sessions.values())
59
+ count += session.turns.size;
60
+ return count;
61
+ }
62
+ async start(input) {
63
+ if (this.#draining) {
64
+ this.#emit({
65
+ type: "session.error",
66
+ sessionId: input.sessionId,
67
+ message: "runtime is draining; retry on another runtime",
68
+ });
69
+ return;
70
+ }
71
+ if (this.announce(input.sessionId))
72
+ return;
73
+ let claimedCheckpoint;
74
+ let durableCheckpoint = null;
75
+ if (this.#checkpointStore) {
76
+ try {
77
+ durableCheckpoint = await this.#checkpointStore.load(input.sessionId);
78
+ const nextGeneration = (durableCheckpoint?.generation ?? 0) + 1;
79
+ claimedCheckpoint = {
80
+ sessionId: input.sessionId,
81
+ generation: nextGeneration,
82
+ ownerId: this.#hostInstanceId,
83
+ acpSessionId: durableCheckpoint?.acpSessionId ?? "",
84
+ phase: "recovering",
85
+ updatedAt: this.#scheduler.now(),
86
+ ...(durableCheckpoint?.lastCompletedTurnId
87
+ ? { lastCompletedTurnId: durableCheckpoint.lastCompletedTurnId }
88
+ : {}),
89
+ };
90
+ const claimed = await this.#checkpointStore.compareAndSet({
91
+ expectedGeneration: durableCheckpoint?.generation ?? null,
92
+ checkpoint: claimedCheckpoint,
93
+ });
94
+ if (!claimed) {
95
+ this.#emitLeaseLost(input.sessionId);
96
+ return;
97
+ }
98
+ }
99
+ catch (error) {
100
+ this.#emit({
101
+ type: "session.error",
102
+ sessionId: input.sessionId,
103
+ message: `session checkpoint failed: ${error instanceof Error ? error.message : String(error)}`,
104
+ });
105
+ return;
106
+ }
107
+ }
108
+ const recoverySessionId = this.#resumeSessionIds.get(input.sessionId)
109
+ ?? durableCheckpoint?.acpSessionId;
110
+ const options = recoverySessionId && !input.options.resumeAcpSessionId
111
+ ? { ...input.options, resumeAcpSessionId: recoverySessionId }
112
+ : input.options;
113
+ let session;
114
+ try {
115
+ session = await this.#runtime.start(options);
116
+ }
117
+ catch (error) {
118
+ this.#emit({
119
+ type: "session.error",
120
+ sessionId: input.sessionId,
121
+ message: error instanceof Error ? error.message : String(error),
122
+ });
123
+ return;
124
+ }
125
+ this.#sessions.set(input.sessionId, {
126
+ acp: session,
127
+ turns: new Map(),
128
+ completedTurns: new Set(durableCheckpoint?.lastCompletedTurnId
129
+ ? [durableCheckpoint.lastCompletedTurnId]
130
+ : []),
131
+ ...(claimedCheckpoint ? { checkpoint: claimedCheckpoint } : {}),
132
+ });
133
+ if (claimedCheckpoint && this.#checkpointStore) {
134
+ const readyCheckpoint = {
135
+ ...claimedCheckpoint,
136
+ acpSessionId: session.acpSessionId,
137
+ phase: "ready",
138
+ updatedAt: this.#scheduler.now(),
139
+ };
140
+ const retained = await this.#checkpointStore.compareAndSet({
141
+ expectedGeneration: claimedCheckpoint.generation,
142
+ checkpoint: readyCheckpoint,
143
+ }).catch(() => false);
144
+ if (!retained) {
145
+ this.#sessions.delete(input.sessionId);
146
+ await session.dispose().catch(() => undefined);
147
+ this.#emitLeaseLost(input.sessionId);
148
+ return;
149
+ }
150
+ this.#sessions.get(input.sessionId).checkpoint = readyCheckpoint;
151
+ }
152
+ this.#resumeSessionIds.delete(input.sessionId);
153
+ this.#emit({
154
+ type: "session.ready",
155
+ sessionId: input.sessionId,
156
+ acpSessionId: session.acpSessionId,
157
+ });
158
+ }
159
+ async prompt(input) {
160
+ const session = this.#liveSession(input.sessionId);
161
+ if (!session) {
162
+ this.#emit({
163
+ type: "session.error",
164
+ sessionId: input.sessionId,
165
+ turnId: input.turnId,
166
+ message: "no such session",
167
+ });
168
+ return;
169
+ }
170
+ if (session.completedTurns.has(input.turnId)) {
171
+ this.#emit({
172
+ type: "session.complete",
173
+ sessionId: input.sessionId,
174
+ turnId: input.turnId,
175
+ });
176
+ return;
177
+ }
178
+ if (session.turns.has(input.turnId))
179
+ return;
180
+ // Draining closes admission for new turns on retained sessions too.
181
+ // Existing in-flight/complete turn IDs above remain idempotent.
182
+ const rejectDuringDrain = () => {
183
+ if (!this.#draining)
184
+ return false;
185
+ this.#emit({
186
+ type: "session.error",
187
+ sessionId: input.sessionId,
188
+ turnId: input.turnId,
189
+ message: "runtime is draining; retry on another runtime",
190
+ });
191
+ return true;
192
+ };
193
+ if (rejectDuringDrain())
194
+ return;
195
+ if (!await this.#retainGenerationLease(input.sessionId, session))
196
+ return;
197
+ // Lease storage may yield while shutdown starts.
198
+ if (rejectDuringDrain())
199
+ return;
200
+ const controller = new AbortController();
201
+ session.turns.set(input.turnId, controller);
202
+ let promptError;
203
+ try {
204
+ for await (const event of session.acp.prompt(input.text, {
205
+ abortSignal: controller.signal,
206
+ })) {
207
+ if (controller.signal.aborted)
208
+ break;
209
+ const sentinel = event;
210
+ if (sentinel?.type === "promptComplete") {
211
+ this.#emit({
212
+ type: "session.event",
213
+ sessionId: input.sessionId,
214
+ turnId: input.turnId,
215
+ event,
216
+ });
217
+ continue;
218
+ }
219
+ if (sentinel?.type === "promptError") {
220
+ promptError = typeof sentinel.error === "string"
221
+ ? sentinel.error
222
+ : "ACP prompt error (no message)";
223
+ continue;
224
+ }
225
+ this.#emit({
226
+ type: "session.event",
227
+ sessionId: input.sessionId,
228
+ turnId: input.turnId,
229
+ event,
230
+ });
231
+ }
232
+ if (promptError) {
233
+ this.#emit({
234
+ type: "session.error",
235
+ sessionId: input.sessionId,
236
+ turnId: input.turnId,
237
+ message: promptError,
238
+ });
239
+ }
240
+ else {
241
+ if (!await this.#commitCompletedTurn(input.sessionId, session, input.turnId)) {
242
+ return;
243
+ }
244
+ session.completedTurns.add(input.turnId);
245
+ this.#emit({
246
+ type: "session.complete",
247
+ sessionId: input.sessionId,
248
+ turnId: input.turnId,
249
+ });
250
+ }
251
+ }
252
+ catch (error) {
253
+ this.#emit({
254
+ type: "session.error",
255
+ sessionId: input.sessionId,
256
+ turnId: input.turnId,
257
+ message: error instanceof Error ? error.message : String(error),
258
+ });
259
+ }
260
+ finally {
261
+ session.turns.delete(input.turnId);
262
+ }
263
+ }
264
+ async steer(input) {
265
+ const session = this.#liveSession(input.sessionId);
266
+ if (!session) {
267
+ this.#emit({
268
+ type: "session.error",
269
+ sessionId: input.sessionId,
270
+ turnId: input.eventId,
271
+ message: "no such session",
272
+ });
273
+ return;
274
+ }
275
+ if (session.turns.size === 0) {
276
+ await this.prompt({
277
+ sessionId: input.sessionId,
278
+ turnId: input.eventId,
279
+ text: input.text,
280
+ });
281
+ return;
282
+ }
283
+ if (!session.acp.supportsSteering) {
284
+ this.#emit({
285
+ type: "session.error",
286
+ sessionId: input.sessionId,
287
+ turnId: input.eventId,
288
+ message: "ACP agent does not support session steering",
289
+ });
290
+ return;
291
+ }
292
+ try {
293
+ const outcome = await session.acp.steer(input.text);
294
+ if (outcome === "failed") {
295
+ this.#emit({
296
+ type: "session.error",
297
+ sessionId: input.sessionId,
298
+ turnId: input.eventId,
299
+ message: "ACP agent rejected session steering",
300
+ });
301
+ }
302
+ }
303
+ catch (error) {
304
+ this.#emit({
305
+ type: "session.error",
306
+ sessionId: input.sessionId,
307
+ turnId: input.eventId,
308
+ message: error instanceof Error ? error.message : String(error),
309
+ });
310
+ }
311
+ }
312
+ async dispose(sessionId) {
313
+ const session = this.#sessions.get(sessionId);
314
+ if (session) {
315
+ for (const controller of session.turns.values())
316
+ controller.abort();
317
+ await session.acp.dispose().catch(() => undefined);
318
+ this.#sessions.delete(sessionId);
319
+ }
320
+ this.#resumeSessionIds.delete(sessionId);
321
+ if (this.#checkpointStore) {
322
+ await this.#checkpointStore.delete({
323
+ sessionId,
324
+ ...(session?.checkpoint
325
+ ? {
326
+ expectedGeneration: session.checkpoint.generation,
327
+ ownerId: session.checkpoint.ownerId,
328
+ }
329
+ : {}),
330
+ }).catch(() => undefined);
331
+ }
332
+ this.#emit({ type: "session.disposed", sessionId });
333
+ }
334
+ async disposeAll() {
335
+ const sessions = [...this.#sessions.entries()];
336
+ await Promise.all(sessions.map(async ([sessionId, session]) => {
337
+ for (const controller of session.turns.values())
338
+ controller.abort();
339
+ await session.acp.dispose().catch(() => undefined);
340
+ this.#sessions.delete(sessionId);
341
+ }));
342
+ }
343
+ async drain(options) {
344
+ this.#draining = true;
345
+ const initialTurns = this.activeTurnCount();
346
+ const sessions = this.sessionCount();
347
+ const startedAt = this.#scheduler.now();
348
+ const pollIntervalMs = options.pollIntervalMs ?? 200;
349
+ while (this.activeTurnCount() > 0) {
350
+ const elapsed = this.#scheduler.now() - startedAt;
351
+ if (elapsed >= options.deadlineMs)
352
+ break;
353
+ const msLeft = options.deadlineMs - elapsed;
354
+ options.onProgress?.(this.activeTurnCount(), msLeft);
355
+ await this.#scheduler.sleep(Math.min(pollIntervalMs, msLeft));
356
+ }
357
+ let abortedTurns = 0;
358
+ for (const session of this.#sessions.values()) {
359
+ for (const controller of session.turns.values()) {
360
+ if (!controller.signal.aborted) {
361
+ controller.abort();
362
+ abortedTurns += 1;
363
+ }
364
+ }
365
+ }
366
+ if (abortedTurns > 0 && (options.abortGraceMs ?? 2_000) > 0) {
367
+ await this.#scheduler.sleep(options.abortGraceMs ?? 2_000);
368
+ }
369
+ await this.disposeAll();
370
+ return { initialTurns, abortedTurns, sessions };
371
+ }
372
+ async cancel(sessionId, turnId) {
373
+ const session = this.#sessions.get(sessionId);
374
+ const controller = session?.turns.get(turnId);
375
+ if (!session || !controller)
376
+ return;
377
+ controller.abort();
378
+ if (this.#cancelGraceMs === undefined)
379
+ return;
380
+ await this.#scheduler.sleep(this.#cancelGraceMs);
381
+ if (this.#sessions.get(sessionId) !== session || !session.turns.has(turnId)) {
382
+ return;
383
+ }
384
+ this.#rememberForRecovery(sessionId, session);
385
+ this.#sessions.delete(sessionId);
386
+ await session.acp.dispose().catch(() => undefined);
387
+ }
388
+ #liveSession(sessionId) {
389
+ const session = this.#sessions.get(sessionId);
390
+ if (!session)
391
+ return undefined;
392
+ if (session.acp.isAlive())
393
+ return session;
394
+ this.#rememberForRecovery(sessionId, session);
395
+ this.#sessions.delete(sessionId);
396
+ void session.acp.dispose().catch(() => undefined);
397
+ return undefined;
398
+ }
399
+ #pruneDeadSessions() {
400
+ for (const sessionId of [...this.#sessions.keys()]) {
401
+ this.#liveSession(sessionId);
402
+ }
403
+ }
404
+ #rememberForRecovery(sessionId, session) {
405
+ if (session.acp.acpSessionId) {
406
+ this.#resumeSessionIds.set(sessionId, session.acp.acpSessionId);
407
+ }
408
+ if (session.checkpoint && this.#checkpointStore) {
409
+ const recovering = {
410
+ ...session.checkpoint,
411
+ acpSessionId: session.acp.acpSessionId,
412
+ phase: "recovering",
413
+ updatedAt: this.#scheduler.now(),
414
+ };
415
+ void this.#checkpointStore.compareAndSet({
416
+ expectedGeneration: session.checkpoint.generation,
417
+ checkpoint: recovering,
418
+ }).then((saved) => {
419
+ if (saved)
420
+ session.checkpoint = recovering;
421
+ }).catch(() => undefined);
422
+ }
423
+ }
424
+ async #retainGenerationLease(sessionId, session) {
425
+ if (!session.checkpoint || !this.#checkpointStore)
426
+ return true;
427
+ const retainedCheckpoint = {
428
+ ...session.checkpoint,
429
+ updatedAt: this.#scheduler.now(),
430
+ };
431
+ const retained = await this.#checkpointStore.compareAndSet({
432
+ expectedGeneration: session.checkpoint.generation,
433
+ checkpoint: retainedCheckpoint,
434
+ }).catch(() => false);
435
+ if (retained) {
436
+ session.checkpoint = retainedCheckpoint;
437
+ return true;
438
+ }
439
+ if (this.#sessions.get(sessionId) === session) {
440
+ this.#sessions.delete(sessionId);
441
+ }
442
+ await session.acp.dispose().catch(() => undefined);
443
+ this.#emitLeaseLost(sessionId);
444
+ return false;
445
+ }
446
+ async #commitCompletedTurn(sessionId, session, turnId) {
447
+ if (!session.checkpoint || !this.#checkpointStore)
448
+ return true;
449
+ const completedCheckpoint = {
450
+ ...session.checkpoint,
451
+ lastCompletedTurnId: turnId,
452
+ updatedAt: this.#scheduler.now(),
453
+ };
454
+ const committed = await this.#checkpointStore.compareAndSet({
455
+ expectedGeneration: session.checkpoint.generation,
456
+ checkpoint: completedCheckpoint,
457
+ }).catch(() => false);
458
+ if (committed) {
459
+ session.checkpoint = completedCheckpoint;
460
+ return true;
461
+ }
462
+ if (this.#sessions.get(sessionId) === session) {
463
+ this.#sessions.delete(sessionId);
464
+ }
465
+ await session.acp.dispose().catch(() => undefined);
466
+ this.#emitLeaseLost(sessionId);
467
+ return false;
468
+ }
469
+ #emitLeaseLost(sessionId) {
470
+ this.#emit({
471
+ type: "session.error",
472
+ sessionId,
473
+ message: "runtime lost the session generation lease",
474
+ });
475
+ }
476
+ }
477
+ //# sourceMappingURL=session-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-host.js","sourceRoot":"","sources":["../../src/local-runtime/session-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ToolEntry } from "../session-events/acp.js";
2
+ /** Internal decoding result; persisted output remains the native thread events. */
3
+ export interface ChildActivity {
4
+ id: string;
5
+ status: "running" | "completed" | "failed" | "cancelled" | "closed";
6
+ parentToolId?: string;
7
+ parentThreadId?: string;
8
+ name?: string;
9
+ error?: string;
10
+ }
11
+ /** Lift the provider metadata already understood by OpenMA's ACP views. Tool
12
+ * names alone are insufficient evidence for Codex collaboration lifecycle. */
13
+ export declare function decodeChildActivities(value: unknown, tool?: ToolEntry): ChildActivity[];
14
+ //# sourceMappingURL=acp-subagents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-subagents.d.ts","sourceRoot":"","sources":["../../src/managed-runtime/acp-subagents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID;8EAC8E;AAC9E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,aAAa,EAAE,CAoDvF"}
@@ -0,0 +1,67 @@
1
+ const object = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
2
+ const string = (value) => typeof value === "string" && value.length > 0 ? value : undefined;
3
+ /** Lift the provider metadata already understood by OpenMA's ACP views. Tool
4
+ * names alone are insufficient evidence for Codex collaboration lifecycle. */
5
+ export function decodeChildActivities(value, tool) {
6
+ const envelope = object(value);
7
+ const data = object(envelope.data);
8
+ if (envelope.schema_version === "oma.event.v1" && data.kind === "agent") {
9
+ const id = string(envelope.work_item_id);
10
+ const statuses = {
11
+ "work_item.started": "running", "work_item.completed": "completed",
12
+ "work_item.failed": "failed", "work_item.cancelled": "cancelled",
13
+ "work_item.killed": "closed", "work_item.terminated": "closed",
14
+ };
15
+ const status = statuses[String(envelope.type)];
16
+ return id && status ? [{ id, status, name: string(data.title), parentToolId: string(envelope.parent_id), parentThreadId: string(envelope.session_thread_id), error: string(data.error) ?? string(data.reason) }] : [];
17
+ }
18
+ if (!tool)
19
+ return [];
20
+ const meta = object(tool.meta);
21
+ const codex = object(meta.codex);
22
+ const subagent = object(codex.subagent);
23
+ const id = string(subagent.threadId);
24
+ if (id && ["started", "interacted", "interrupted"].includes(String(subagent.activity))) {
25
+ return [{ id, status: subagent.activity === "interrupted" ? "cancelled" : "running", parentToolId: tool.toolCallId, name: string(subagent.path)?.split("/").filter(Boolean).at(-1) }];
26
+ }
27
+ const collaboration = object(codex.collaboration);
28
+ const input = object(tool.rawInput);
29
+ const output = object(tool.rawOutput);
30
+ const targets = collaboration.receiverThreadIds ?? input.receiverThreadIds ?? input.receiver_thread_ids;
31
+ const ids = Array.isArray(targets) ? targets.filter((id) => typeof id === "string") : [];
32
+ const operation = string(collaboration.tool);
33
+ if (operation && ids.length > 0) {
34
+ const states = object(input.agentsStates ?? input.agents_states ?? output.status);
35
+ return ids.flatMap(id => {
36
+ const state = object(states[id]);
37
+ const status = state.status;
38
+ if (operation === "closeAgent")
39
+ return tool.status === "completed" ? [{ id, status: "closed" }] : [];
40
+ if (operation === "spawnAgent" || operation === "sendInput" || operation === "resumeAgent") {
41
+ if (tool.status === "failed")
42
+ return [];
43
+ return [{ id, status: "running", ...(operation === "spawnAgent" ? { parentToolId: tool.toolCallId, name: string(input.agentType ?? input.agent_type) } : {}) }];
44
+ }
45
+ if (operation !== "wait")
46
+ return [];
47
+ if (status === "completed" || state.completed !== undefined)
48
+ return [{ id, status: "completed" }];
49
+ if (status === "errored" || status === "failed" || state.failed !== undefined || state.error !== undefined)
50
+ return [{ id, status: "failed", error: string(state.message ?? state.error ?? state.failed) }];
51
+ if (status === "interrupted" || status === "cancelled" || state.cancelled === true)
52
+ return [{ id, status: "cancelled" }];
53
+ if (status === "running")
54
+ return [{ id, status: "running" }];
55
+ return [];
56
+ });
57
+ }
58
+ const name = tool.toolName?.toLowerCase();
59
+ if (name !== "task" && name !== "agent")
60
+ return [];
61
+ return [{ id: `acp:claude:${tool.toolCallId}`, parentToolId: tool.toolCallId,
62
+ name: string(input.subagent_type) ?? string(input.description) ?? tool.title,
63
+ status: tool.status === "completed" ? "completed" : tool.status === "failed" ? "failed" : tool.status === "cancelled" ? "cancelled" : "running",
64
+ error: tool.status === "failed" ? string(tool.rawOutput) : undefined,
65
+ }];
66
+ }
67
+ //# sourceMappingURL=acp-subagents.js.map