@a5c-ai/agent-platform 5.0.1-staging.04ca6ab00d21

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 (596) hide show
  1. package/README.md +53 -0
  2. package/dist/anycli/cache.d.ts +45 -0
  3. package/dist/anycli/cache.d.ts.map +1 -0
  4. package/dist/anycli/cache.js +118 -0
  5. package/dist/anycli/index.d.ts +10 -0
  6. package/dist/anycli/index.d.ts.map +1 -0
  7. package/dist/anycli/index.js +25 -0
  8. package/dist/anycli/types.d.ts +32 -0
  9. package/dist/anycli/types.d.ts.map +1 -0
  10. package/dist/anycli/types.js +9 -0
  11. package/dist/api/breakpoints.d.ts +93 -0
  12. package/dist/api/breakpoints.d.ts.map +1 -0
  13. package/dist/api/breakpoints.js +334 -0
  14. package/dist/api/effects.d.ts +14 -0
  15. package/dist/api/effects.d.ts.map +1 -0
  16. package/dist/api/effects.js +306 -0
  17. package/dist/api/effectsTypes.d.ts +79 -0
  18. package/dist/api/effectsTypes.d.ts.map +1 -0
  19. package/dist/api/effectsTypes.js +6 -0
  20. package/dist/api/eventStream.d.ts +34 -0
  21. package/dist/api/eventStream.d.ts.map +1 -0
  22. package/dist/api/eventStream.js +126 -0
  23. package/dist/api/index.d.ts +10 -0
  24. package/dist/api/index.d.ts.map +1 -0
  25. package/dist/api/index.js +27 -0
  26. package/dist/api/runs.d.ts +85 -0
  27. package/dist/api/runs.d.ts.map +1 -0
  28. package/dist/api/runs.js +247 -0
  29. package/dist/api/utils.d.ts +28 -0
  30. package/dist/api/utils.d.ts.map +1 -0
  31. package/dist/api/utils.js +74 -0
  32. package/dist/breakpoints/approvalChains.d.ts +68 -0
  33. package/dist/breakpoints/approvalChains.d.ts.map +1 -0
  34. package/dist/breakpoints/approvalChains.js +111 -0
  35. package/dist/breakpoints/delegation.d.ts +42 -0
  36. package/dist/breakpoints/delegation.d.ts.map +1 -0
  37. package/dist/breakpoints/delegation.js +199 -0
  38. package/dist/breakpoints/delegationTypes.d.ts +46 -0
  39. package/dist/breakpoints/delegationTypes.d.ts.map +1 -0
  40. package/dist/breakpoints/delegationTypes.js +10 -0
  41. package/dist/breakpoints/postures.d.ts +28 -0
  42. package/dist/breakpoints/postures.d.ts.map +1 -0
  43. package/dist/breakpoints/postures.js +100 -0
  44. package/dist/cli/amuxEventsFormatter.d.ts +26 -0
  45. package/dist/cli/amuxEventsFormatter.d.ts.map +1 -0
  46. package/dist/cli/amuxEventsFormatter.js +86 -0
  47. package/dist/cli/args/argFlags.d.ts +6 -0
  48. package/dist/cli/args/argFlags.d.ts.map +1 -0
  49. package/dist/cli/args/argFlags.js +72 -0
  50. package/dist/cli/args/argPositionals.d.ts +3 -0
  51. package/dist/cli/args/argPositionals.d.ts.map +1 -0
  52. package/dist/cli/args/argPositionals.js +18 -0
  53. package/dist/cli/args/index.d.ts +4 -0
  54. package/dist/cli/args/index.d.ts.map +1 -0
  55. package/dist/cli/args/index.js +75 -0
  56. package/dist/cli/args/types.d.ts +13 -0
  57. package/dist/cli/args/types.d.ts.map +1 -0
  58. package/dist/cli/args/types.js +2 -0
  59. package/dist/cli/commands/daemon.d.ts +31 -0
  60. package/dist/cli/commands/daemon.d.ts.map +1 -0
  61. package/dist/cli/commands/daemon.js +156 -0
  62. package/dist/cli/commands/harness/createRun.d.ts +3 -0
  63. package/dist/cli/commands/harness/createRun.d.ts.map +1 -0
  64. package/dist/cli/commands/harness/createRun.js +8 -0
  65. package/dist/cli/commands/harness/resumeRun.d.ts +20 -0
  66. package/dist/cli/commands/harness/resumeRun.d.ts.map +1 -0
  67. package/dist/cli/commands/harness/resumeRun.js +341 -0
  68. package/dist/cli/commands/jsonlInteractive.d.ts +35 -0
  69. package/dist/cli/commands/jsonlInteractive.d.ts.map +1 -0
  70. package/dist/cli/commands/jsonlInteractive.js +302 -0
  71. package/dist/cli/commands/mcpServe.d.ts +18 -0
  72. package/dist/cli/commands/mcpServe.d.ts.map +1 -0
  73. package/dist/cli/commands/mcpServe.js +59 -0
  74. package/dist/cli/commands/session/history.d.ts +14 -0
  75. package/dist/cli/commands/session/history.d.ts.map +1 -0
  76. package/dist/cli/commands/session/history.js +100 -0
  77. package/dist/cli/commands/tui.d.ts +23 -0
  78. package/dist/cli/commands/tui.d.ts.map +1 -0
  79. package/dist/cli/commands/tui.js +183 -0
  80. package/dist/cli/dispatch.d.ts +4 -0
  81. package/dist/cli/dispatch.d.ts.map +1 -0
  82. package/dist/cli/dispatch.js +332 -0
  83. package/dist/cli/main.d.ts +7 -0
  84. package/dist/cli/main.d.ts.map +1 -0
  85. package/dist/cli/main.js +41 -0
  86. package/dist/cli/program.d.ts +7 -0
  87. package/dist/cli/program.d.ts.map +1 -0
  88. package/dist/cli/program.js +8 -0
  89. package/dist/cli/ui.d.ts +9 -0
  90. package/dist/cli/ui.d.ts.map +1 -0
  91. package/dist/cli/ui.js +125 -0
  92. package/dist/compression/compaction.d.ts +82 -0
  93. package/dist/compression/compaction.d.ts.map +1 -0
  94. package/dist/compression/compaction.js +310 -0
  95. package/dist/cost/claudeCodeParser.d.ts +81 -0
  96. package/dist/cost/claudeCodeParser.d.ts.map +1 -0
  97. package/dist/cost/claudeCodeParser.js +232 -0
  98. package/dist/cost/collector.d.ts +42 -0
  99. package/dist/cost/collector.d.ts.map +1 -0
  100. package/dist/cost/collector.js +105 -0
  101. package/dist/cost/effectCost.d.ts +23 -0
  102. package/dist/cost/effectCost.d.ts.map +1 -0
  103. package/dist/cost/effectCost.js +26 -0
  104. package/dist/cost/index.d.ts +7 -0
  105. package/dist/cost/index.d.ts.map +1 -0
  106. package/dist/cost/index.js +28 -0
  107. package/dist/cost/journal.d.ts +40 -0
  108. package/dist/cost/journal.d.ts.map +1 -0
  109. package/dist/cost/journal.js +137 -0
  110. package/dist/cost/types.d.ts +164 -0
  111. package/dist/cost/types.d.ts.map +1 -0
  112. package/dist/cost/types.js +228 -0
  113. package/dist/daemon/automationExecutor.d.ts +16 -0
  114. package/dist/daemon/automationExecutor.d.ts.map +1 -0
  115. package/dist/daemon/automationExecutor.js +222 -0
  116. package/dist/daemon/config.d.ts +8 -0
  117. package/dist/daemon/config.d.ts.map +1 -0
  118. package/dist/daemon/config.js +209 -0
  119. package/dist/daemon/daemonLog.d.ts +13 -0
  120. package/dist/daemon/daemonLog.d.ts.map +1 -0
  121. package/dist/daemon/daemonLog.js +64 -0
  122. package/dist/daemon/fileWatcher.d.ts +9 -0
  123. package/dist/daemon/fileWatcher.d.ts.map +1 -0
  124. package/dist/daemon/fileWatcher.js +141 -0
  125. package/dist/daemon/index.d.ts +7 -0
  126. package/dist/daemon/index.d.ts.map +1 -0
  127. package/dist/daemon/index.js +21 -0
  128. package/dist/daemon/lifecycle.d.ts +12 -0
  129. package/dist/daemon/lifecycle.d.ts.map +1 -0
  130. package/dist/daemon/lifecycle.js +257 -0
  131. package/dist/daemon/loop.d.ts +21 -0
  132. package/dist/daemon/loop.d.ts.map +1 -0
  133. package/dist/daemon/loop.js +196 -0
  134. package/dist/daemon/timerScheduler.d.ts +13 -0
  135. package/dist/daemon/timerScheduler.d.ts.map +1 -0
  136. package/dist/daemon/timerScheduler.js +122 -0
  137. package/dist/daemon/types.d.ts +93 -0
  138. package/dist/daemon/types.d.ts.map +1 -0
  139. package/dist/daemon/types.js +25 -0
  140. package/dist/daemon/webhookListener.d.ts +6 -0
  141. package/dist/daemon/webhookListener.d.ts.map +1 -0
  142. package/dist/daemon/webhookListener.js +110 -0
  143. package/dist/governance/authority.d.ts +68 -0
  144. package/dist/governance/authority.d.ts.map +1 -0
  145. package/dist/governance/authority.js +136 -0
  146. package/dist/governance/bridge.d.ts +17 -0
  147. package/dist/governance/bridge.d.ts.map +1 -0
  148. package/dist/governance/bridge.js +46 -0
  149. package/dist/governance/builtins.d.ts +25 -0
  150. package/dist/governance/builtins.d.ts.map +1 -0
  151. package/dist/governance/builtins.js +67 -0
  152. package/dist/governance/categories.d.ts +58 -0
  153. package/dist/governance/categories.d.ts.map +1 -0
  154. package/dist/governance/categories.js +120 -0
  155. package/dist/governance/decisionTrail.d.ts +60 -0
  156. package/dist/governance/decisionTrail.d.ts.map +1 -0
  157. package/dist/governance/decisionTrail.js +68 -0
  158. package/dist/governance/engine.d.ts +20 -0
  159. package/dist/governance/engine.d.ts.map +1 -0
  160. package/dist/governance/engine.js +124 -0
  161. package/dist/governance/index.d.ts +20 -0
  162. package/dist/governance/index.d.ts.map +1 -0
  163. package/dist/governance/index.js +75 -0
  164. package/dist/governance/logging.d.ts +18 -0
  165. package/dist/governance/logging.d.ts.map +1 -0
  166. package/dist/governance/logging.js +83 -0
  167. package/dist/governance/mandate.d.ts +83 -0
  168. package/dist/governance/mandate.d.ts.map +1 -0
  169. package/dist/governance/mandate.js +180 -0
  170. package/dist/governance/permissionEvents.d.ts +51 -0
  171. package/dist/governance/permissionEvents.d.ts.map +1 -0
  172. package/dist/governance/permissionEvents.js +52 -0
  173. package/dist/governance/permissionPropagation.d.ts +18 -0
  174. package/dist/governance/permissionPropagation.d.ts.map +1 -0
  175. package/dist/governance/permissionPropagation.js +58 -0
  176. package/dist/governance/postureBridge.d.ts +17 -0
  177. package/dist/governance/postureBridge.d.ts.map +1 -0
  178. package/dist/governance/postureBridge.js +117 -0
  179. package/dist/governance/sandboxBridge.d.ts +49 -0
  180. package/dist/governance/sandboxBridge.d.ts.map +1 -0
  181. package/dist/governance/sandboxBridge.js +77 -0
  182. package/dist/governance/sandboxPolicy.d.ts +51 -0
  183. package/dist/governance/sandboxPolicy.d.ts.map +1 -0
  184. package/dist/governance/sandboxPolicy.js +177 -0
  185. package/dist/governance/types.d.ts +3 -0
  186. package/dist/governance/types.d.ts.map +1 -0
  187. package/dist/governance/types.js +5 -0
  188. package/dist/harness/amux/amuxBridge.d.ts +71 -0
  189. package/dist/harness/amux/amuxBridge.d.ts.map +1 -0
  190. package/dist/harness/amux/amuxBridge.js +117 -0
  191. package/dist/harness/amux/amuxClientFactory.d.ts +29 -0
  192. package/dist/harness/amux/amuxClientFactory.d.ts.map +1 -0
  193. package/dist/harness/amux/amuxClientFactory.js +90 -0
  194. package/dist/harness/amux/amuxEventEmitter.d.ts +51 -0
  195. package/dist/harness/amux/amuxEventEmitter.d.ts.map +1 -0
  196. package/dist/harness/amux/amuxEventEmitter.js +143 -0
  197. package/dist/harness/amux/amuxEventMapper.d.ts +58 -0
  198. package/dist/harness/amux/amuxEventMapper.d.ts.map +1 -0
  199. package/dist/harness/amux/amuxEventMapper.js +92 -0
  200. package/dist/harness/amux/amuxHarnessMap.d.ts +25 -0
  201. package/dist/harness/amux/amuxHarnessMap.d.ts.map +1 -0
  202. package/dist/harness/amux/amuxHarnessMap.js +55 -0
  203. package/dist/harness/amux/amuxStdinReader.d.ts +45 -0
  204. package/dist/harness/amux/amuxStdinReader.d.ts.map +1 -0
  205. package/dist/harness/amux/amuxStdinReader.js +106 -0
  206. package/dist/harness/amux/amuxTypes.d.ts +122 -0
  207. package/dist/harness/amux/amuxTypes.d.ts.map +1 -0
  208. package/dist/harness/amux/amuxTypes.js +11 -0
  209. package/dist/harness/amux/index.d.ts +17 -0
  210. package/dist/harness/amux/index.d.ts.map +1 -0
  211. package/dist/harness/amux/index.js +34 -0
  212. package/dist/harness/backgroundTracker.d.ts +64 -0
  213. package/dist/harness/backgroundTracker.d.ts.map +1 -0
  214. package/dist/harness/backgroundTracker.js +107 -0
  215. package/dist/harness/builtInHarness.d.ts +3 -0
  216. package/dist/harness/builtInHarness.d.ts.map +1 -0
  217. package/dist/harness/builtInHarness.js +18 -0
  218. package/dist/harness/capabilityRouter.d.ts +76 -0
  219. package/dist/harness/capabilityRouter.d.ts.map +1 -0
  220. package/dist/harness/capabilityRouter.js +176 -0
  221. package/dist/harness/fallbackChains.d.ts +42 -0
  222. package/dist/harness/fallbackChains.d.ts.map +1 -0
  223. package/dist/harness/fallbackChains.js +69 -0
  224. package/dist/harness/hostContract.d.ts +63 -0
  225. package/dist/harness/hostContract.d.ts.map +1 -0
  226. package/dist/harness/hostContract.js +136 -0
  227. package/dist/harness/index.d.ts +10 -0
  228. package/dist/harness/index.d.ts.map +1 -0
  229. package/dist/harness/index.js +66 -0
  230. package/dist/harness/internal/createRun/askUserQuestion.d.ts +11 -0
  231. package/dist/harness/internal/createRun/askUserQuestion.d.ts.map +1 -0
  232. package/dist/harness/internal/createRun/askUserQuestion.js +162 -0
  233. package/dist/harness/internal/createRun/index.d.ts +25 -0
  234. package/dist/harness/internal/createRun/index.d.ts.map +1 -0
  235. package/dist/harness/internal/createRun/index.js +137 -0
  236. package/dist/harness/internal/createRun/orchestration/constants.d.ts +7 -0
  237. package/dist/harness/internal/createRun/orchestration/constants.d.ts.map +1 -0
  238. package/dist/harness/internal/createRun/orchestration/constants.js +13 -0
  239. package/dist/harness/internal/createRun/orchestration/effects.d.ts +43 -0
  240. package/dist/harness/internal/createRun/orchestration/effects.d.ts.map +1 -0
  241. package/dist/harness/internal/createRun/orchestration/effects.js +490 -0
  242. package/dist/harness/internal/createRun/orchestration/effectsHelpers.d.ts +20 -0
  243. package/dist/harness/internal/createRun/orchestration/effectsHelpers.d.ts.map +1 -0
  244. package/dist/harness/internal/createRun/orchestration/effectsHelpers.js +79 -0
  245. package/dist/harness/internal/createRun/orchestration/externalPhase.d.ts +3 -0
  246. package/dist/harness/internal/createRun/orchestration/externalPhase.d.ts.map +1 -0
  247. package/dist/harness/internal/createRun/orchestration/externalPhase.js +319 -0
  248. package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.d.ts +16 -0
  249. package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.d.ts.map +1 -0
  250. package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.js +104 -0
  251. package/dist/harness/internal/createRun/orchestration/index.d.ts +14 -0
  252. package/dist/harness/internal/createRun/orchestration/index.d.ts.map +1 -0
  253. package/dist/harness/internal/createRun/orchestration/index.js +36 -0
  254. package/dist/harness/internal/createRun/orchestration/internalPhase.d.ts +3 -0
  255. package/dist/harness/internal/createRun/orchestration/internalPhase.d.ts.map +1 -0
  256. package/dist/harness/internal/createRun/orchestration/internalPhase.js +464 -0
  257. package/dist/harness/internal/createRun/orchestration/internalTools.d.ts +26 -0
  258. package/dist/harness/internal/createRun/orchestration/internalTools.d.ts.map +1 -0
  259. package/dist/harness/internal/createRun/orchestration/internalTools.js +262 -0
  260. package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.d.ts +17 -0
  261. package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.d.ts.map +1 -0
  262. package/dist/harness/internal/createRun/orchestration/internalToolsHelpers.js +23 -0
  263. package/dist/harness/internal/createRun/orchestration/taskResult.d.ts +10 -0
  264. package/dist/harness/internal/createRun/orchestration/taskResult.d.ts.map +1 -0
  265. package/dist/harness/internal/createRun/orchestration/taskResult.js +67 -0
  266. package/dist/harness/internal/createRun/orchestration/types.d.ts +46 -0
  267. package/dist/harness/internal/createRun/orchestration/types.d.ts.map +1 -0
  268. package/dist/harness/internal/createRun/orchestration/types.js +2 -0
  269. package/dist/harness/internal/createRun/orchestration/verbose.d.ts +7 -0
  270. package/dist/harness/internal/createRun/orchestration/verbose.d.ts.map +1 -0
  271. package/dist/harness/internal/createRun/orchestration/verbose.js +240 -0
  272. package/dist/harness/internal/createRun/output.d.ts +38 -0
  273. package/dist/harness/internal/createRun/output.d.ts.map +1 -0
  274. package/dist/harness/internal/createRun/output.js +415 -0
  275. package/dist/harness/internal/createRun/pi.d.ts +34 -0
  276. package/dist/harness/internal/createRun/pi.d.ts.map +1 -0
  277. package/dist/harness/internal/createRun/pi.js +216 -0
  278. package/dist/harness/internal/createRun/planProcess/agentOutput.d.ts +5 -0
  279. package/dist/harness/internal/createRun/planProcess/agentOutput.d.ts.map +1 -0
  280. package/dist/harness/internal/createRun/planProcess/agentOutput.js +113 -0
  281. package/dist/harness/internal/createRun/planProcess/delegation.d.ts +23 -0
  282. package/dist/harness/internal/createRun/planProcess/delegation.d.ts.map +1 -0
  283. package/dist/harness/internal/createRun/planProcess/delegation.js +176 -0
  284. package/dist/harness/internal/createRun/planProcess/external.d.ts +14 -0
  285. package/dist/harness/internal/createRun/planProcess/external.d.ts.map +1 -0
  286. package/dist/harness/internal/createRun/planProcess/external.js +139 -0
  287. package/dist/harness/internal/createRun/planProcess/index.d.ts +12 -0
  288. package/dist/harness/internal/createRun/planProcess/index.d.ts.map +1 -0
  289. package/dist/harness/internal/createRun/planProcess/index.js +24 -0
  290. package/dist/harness/internal/createRun/planProcess/paths.d.ts +7 -0
  291. package/dist/harness/internal/createRun/planProcess/paths.d.ts.map +1 -0
  292. package/dist/harness/internal/createRun/planProcess/paths.js +98 -0
  293. package/dist/harness/internal/createRun/planProcess/phase.d.ts +6 -0
  294. package/dist/harness/internal/createRun/planProcess/phase.d.ts.map +1 -0
  295. package/dist/harness/internal/createRun/planProcess/phase.js +361 -0
  296. package/dist/harness/internal/createRun/planProcess/phaseHelpers.d.ts +37 -0
  297. package/dist/harness/internal/createRun/planProcess/phaseHelpers.d.ts.map +1 -0
  298. package/dist/harness/internal/createRun/planProcess/phaseHelpers.js +159 -0
  299. package/dist/harness/internal/createRun/planProcess/phaseTypes.d.ts +25 -0
  300. package/dist/harness/internal/createRun/planProcess/phaseTypes.d.ts.map +1 -0
  301. package/dist/harness/internal/createRun/planProcess/phaseTypes.js +6 -0
  302. package/dist/harness/internal/createRun/planProcess/prompts.d.ts +20 -0
  303. package/dist/harness/internal/createRun/planProcess/prompts.d.ts.map +1 -0
  304. package/dist/harness/internal/createRun/planProcess/prompts.js +208 -0
  305. package/dist/harness/internal/createRun/planProcess/recovery.d.ts +18 -0
  306. package/dist/harness/internal/createRun/planProcess/recovery.d.ts.map +1 -0
  307. package/dist/harness/internal/createRun/planProcess/recovery.js +188 -0
  308. package/dist/harness/internal/createRun/planProcess/recovery.test.d.ts +2 -0
  309. package/dist/harness/internal/createRun/planProcess/recovery.test.d.ts.map +1 -0
  310. package/dist/harness/internal/createRun/planProcess/recovery.test.js +68 -0
  311. package/dist/harness/internal/createRun/planProcess/runState.d.ts +40 -0
  312. package/dist/harness/internal/createRun/planProcess/runState.d.ts.map +1 -0
  313. package/dist/harness/internal/createRun/planProcess/runState.js +179 -0
  314. package/dist/harness/internal/createRun/planProcess/understandIntent.d.ts +22 -0
  315. package/dist/harness/internal/createRun/planProcess/understandIntent.d.ts.map +1 -0
  316. package/dist/harness/internal/createRun/planProcess/understandIntent.js +65 -0
  317. package/dist/harness/internal/createRun/planProcess/validation.d.ts +2 -0
  318. package/dist/harness/internal/createRun/planProcess/validation.d.ts.map +1 -0
  319. package/dist/harness/internal/createRun/planProcess/validation.js +212 -0
  320. package/dist/harness/internal/createRun/planProcess/validationSource.d.ts +11 -0
  321. package/dist/harness/internal/createRun/planProcess/validationSource.d.ts.map +1 -0
  322. package/dist/harness/internal/createRun/planProcess/validationSource.js +328 -0
  323. package/dist/harness/internal/createRun/planProcess/validationText.d.ts +3 -0
  324. package/dist/harness/internal/createRun/planProcess/validationText.d.ts.map +1 -0
  325. package/dist/harness/internal/createRun/planProcess/validationText.js +145 -0
  326. package/dist/harness/internal/createRun/prompts.d.ts +49 -0
  327. package/dist/harness/internal/createRun/prompts.d.ts.map +1 -0
  328. package/dist/harness/internal/createRun/prompts.js +307 -0
  329. package/dist/harness/internal/createRun/resumeState.d.ts +28 -0
  330. package/dist/harness/internal/createRun/resumeState.d.ts.map +1 -0
  331. package/dist/harness/internal/createRun/resumeState.js +133 -0
  332. package/dist/harness/internal/createRun/utils.d.ts +182 -0
  333. package/dist/harness/internal/createRun/utils.d.ts.map +1 -0
  334. package/dist/harness/internal/createRun/utils.js +133 -0
  335. package/dist/harness/internal.d.ts +13 -0
  336. package/dist/harness/internal.d.ts.map +1 -0
  337. package/dist/harness/internal.js +149 -0
  338. package/dist/harness/invoker/launch.d.ts +20 -0
  339. package/dist/harness/invoker/launch.d.ts.map +1 -0
  340. package/dist/harness/invoker/launch.js +23 -0
  341. package/dist/harness/invoker/processControl.d.ts +11 -0
  342. package/dist/harness/invoker/processControl.d.ts.map +1 -0
  343. package/dist/harness/invoker/processControl.js +50 -0
  344. package/dist/harness/invoker.d.ts +43 -0
  345. package/dist/harness/invoker.d.ts.map +1 -0
  346. package/dist/harness/invoker.js +210 -0
  347. package/dist/harness/modeSelector.d.ts +50 -0
  348. package/dist/harness/modeSelector.d.ts.map +1 -0
  349. package/dist/harness/modeSelector.js +124 -0
  350. package/dist/harness/modelSelection.d.ts +37 -0
  351. package/dist/harness/modelSelection.d.ts.map +1 -0
  352. package/dist/harness/modelSelection.js +81 -0
  353. package/dist/harness/operatorCommands.d.ts +38 -0
  354. package/dist/harness/operatorCommands.d.ts.map +1 -0
  355. package/dist/harness/operatorCommands.js +118 -0
  356. package/dist/harness/piSecureSandbox.d.ts +8 -0
  357. package/dist/harness/piSecureSandbox.d.ts.map +1 -0
  358. package/dist/harness/piSecureSandbox.js +366 -0
  359. package/dist/harness/piSecureSandboxTypes.d.ts +51 -0
  360. package/dist/harness/piSecureSandboxTypes.d.ts.map +1 -0
  361. package/dist/harness/piSecureSandboxTypes.js +6 -0
  362. package/dist/harness/piWrapper/compaction.d.ts +13 -0
  363. package/dist/harness/piWrapper/compaction.d.ts.map +1 -0
  364. package/dist/harness/piWrapper/compaction.js +38 -0
  365. package/dist/harness/piWrapper/instructionPrompts.d.ts +2 -0
  366. package/dist/harness/piWrapper/instructionPrompts.d.ts.map +1 -0
  367. package/dist/harness/piWrapper/instructionPrompts.js +97 -0
  368. package/dist/harness/piWrapper/moduleSupport.d.ts +77 -0
  369. package/dist/harness/piWrapper/moduleSupport.d.ts.map +1 -0
  370. package/dist/harness/piWrapper/moduleSupport.js +204 -0
  371. package/dist/harness/piWrapper.d.ts +80 -0
  372. package/dist/harness/piWrapper.d.ts.map +1 -0
  373. package/dist/harness/piWrapper.js +389 -0
  374. package/dist/harness/piWrapper.test.d.ts +2 -0
  375. package/dist/harness/piWrapper.test.d.ts.map +1 -0
  376. package/dist/harness/piWrapper.test.js +193 -0
  377. package/dist/harness/planMode.d.ts +68 -0
  378. package/dist/harness/planMode.d.ts.map +1 -0
  379. package/dist/harness/planMode.js +145 -0
  380. package/dist/harness/selectionPolicies.d.ts +29 -0
  381. package/dist/harness/selectionPolicies.d.ts.map +1 -0
  382. package/dist/harness/selectionPolicies.js +165 -0
  383. package/dist/harness/types.d.ts +266 -0
  384. package/dist/harness/types.d.ts.map +1 -0
  385. package/dist/harness/types.js +34 -0
  386. package/dist/index.d.ts +17 -0
  387. package/dist/index.d.ts.map +1 -0
  388. package/dist/index.js +55 -0
  389. package/dist/interaction/askUserQuestion/core.d.ts +8 -0
  390. package/dist/interaction/askUserQuestion/core.d.ts.map +1 -0
  391. package/dist/interaction/askUserQuestion/core.js +112 -0
  392. package/dist/interaction/askUserQuestion/terminal.d.ts +15 -0
  393. package/dist/interaction/askUserQuestion/terminal.d.ts.map +1 -0
  394. package/dist/interaction/askUserQuestion/terminal.js +128 -0
  395. package/dist/interaction/askUserQuestion.d.ts +10 -0
  396. package/dist/interaction/askUserQuestion.d.ts.map +1 -0
  397. package/dist/interaction/askUserQuestion.js +295 -0
  398. package/dist/interaction/askUserQuestionTypes.d.ts +31 -0
  399. package/dist/interaction/askUserQuestionTypes.d.ts.map +1 -0
  400. package/dist/interaction/askUserQuestionTypes.js +6 -0
  401. package/dist/interaction/index.d.ts +4 -0
  402. package/dist/interaction/index.d.ts.map +1 -0
  403. package/dist/interaction/index.js +20 -0
  404. package/dist/interaction/interactionRouter.d.ts +25 -0
  405. package/dist/interaction/interactionRouter.d.ts.map +1 -0
  406. package/dist/interaction/interactionRouter.js +55 -0
  407. package/dist/mcp/channels/allowlist.d.ts +19 -0
  408. package/dist/mcp/channels/allowlist.d.ts.map +1 -0
  409. package/dist/mcp/channels/allowlist.js +140 -0
  410. package/dist/mcp/channels/channelManager.d.ts +64 -0
  411. package/dist/mcp/channels/channelManager.d.ts.map +1 -0
  412. package/dist/mcp/channels/channelManager.js +137 -0
  413. package/dist/mcp/channels/inboundQueue.d.ts +47 -0
  414. package/dist/mcp/channels/inboundQueue.d.ts.map +1 -0
  415. package/dist/mcp/channels/inboundQueue.js +96 -0
  416. package/dist/mcp/channels/index.d.ts +17 -0
  417. package/dist/mcp/channels/index.d.ts.map +1 -0
  418. package/dist/mcp/channels/index.js +39 -0
  419. package/dist/mcp/channels/outbound.d.ts +33 -0
  420. package/dist/mcp/channels/outbound.d.ts.map +1 -0
  421. package/dist/mcp/channels/outbound.js +94 -0
  422. package/dist/mcp/channels/permissionRelay.d.ts +62 -0
  423. package/dist/mcp/channels/permissionRelay.d.ts.map +1 -0
  424. package/dist/mcp/channels/permissionRelay.js +159 -0
  425. package/dist/mcp/channels/types.d.ts +135 -0
  426. package/dist/mcp/channels/types.d.ts.map +1 -0
  427. package/dist/mcp/channels/types.js +16 -0
  428. package/dist/mcp/client/config.d.ts +28 -0
  429. package/dist/mcp/client/config.d.ts.map +1 -0
  430. package/dist/mcp/client/config.js +142 -0
  431. package/dist/mcp/client/executor.d.ts +30 -0
  432. package/dist/mcp/client/executor.d.ts.map +1 -0
  433. package/dist/mcp/client/executor.js +60 -0
  434. package/dist/mcp/client/index.d.ts +12 -0
  435. package/dist/mcp/client/index.d.ts.map +1 -0
  436. package/dist/mcp/client/index.js +27 -0
  437. package/dist/mcp/client/manager.d.ts +74 -0
  438. package/dist/mcp/client/manager.d.ts.map +1 -0
  439. package/dist/mcp/client/manager.js +214 -0
  440. package/dist/mcp/client/toolRegistry.d.ts +50 -0
  441. package/dist/mcp/client/toolRegistry.d.ts.map +1 -0
  442. package/dist/mcp/client/toolRegistry.js +118 -0
  443. package/dist/mcp/client/types.d.ts +96 -0
  444. package/dist/mcp/client/types.d.ts.map +1 -0
  445. package/dist/mcp/client/types.js +15 -0
  446. package/dist/mcp/transport/index.d.ts +9 -0
  447. package/dist/mcp/transport/index.d.ts.map +1 -0
  448. package/dist/mcp/transport/index.js +13 -0
  449. package/dist/mcp/transport/session.d.ts +18 -0
  450. package/dist/mcp/transport/session.d.ts.map +1 -0
  451. package/dist/mcp/transport/session.js +78 -0
  452. package/dist/mcp/transport/types.d.ts +19 -0
  453. package/dist/mcp/transport/types.d.ts.map +1 -0
  454. package/dist/mcp/transport/types.js +7 -0
  455. package/dist/mcp/transport/websocket.d.ts +41 -0
  456. package/dist/mcp/transport/websocket.d.ts.map +1 -0
  457. package/dist/mcp/transport/websocket.js +271 -0
  458. package/dist/observability/health.d.ts +19 -0
  459. package/dist/observability/health.d.ts.map +1 -0
  460. package/dist/observability/health.js +129 -0
  461. package/dist/observability/index.d.ts +7 -0
  462. package/dist/observability/index.d.ts.map +1 -0
  463. package/dist/observability/index.js +22 -0
  464. package/dist/observability/runStatus.d.ts +44 -0
  465. package/dist/observability/runStatus.d.ts.map +1 -0
  466. package/dist/observability/runStatus.js +169 -0
  467. package/dist/observability/timeline.d.ts +11 -0
  468. package/dist/observability/timeline.d.ts.map +1 -0
  469. package/dist/observability/timeline.js +176 -0
  470. package/dist/observability/types.d.ts +62 -0
  471. package/dist/observability/types.d.ts.map +1 -0
  472. package/dist/observability/types.js +8 -0
  473. package/dist/observability/webhooks.d.ts +68 -0
  474. package/dist/observability/webhooks.d.ts.map +1 -0
  475. package/dist/observability/webhooks.js +132 -0
  476. package/dist/plugins/index.d.ts +11 -0
  477. package/dist/plugins/index.d.ts.map +1 -0
  478. package/dist/plugins/index.js +18 -0
  479. package/dist/plugins/loader.d.ts +37 -0
  480. package/dist/plugins/loader.d.ts.map +1 -0
  481. package/dist/plugins/loader.js +112 -0
  482. package/dist/plugins/sandbox.d.ts +38 -0
  483. package/dist/plugins/sandbox.d.ts.map +1 -0
  484. package/dist/plugins/sandbox.js +109 -0
  485. package/dist/plugins/types.d.ts +27 -0
  486. package/dist/plugins/types.d.ts.map +1 -0
  487. package/dist/plugins/types.js +7 -0
  488. package/dist/plugins/version-check.d.ts +23 -0
  489. package/dist/plugins/version-check.d.ts.map +1 -0
  490. package/dist/plugins/version-check.js +70 -0
  491. package/dist/processes/index.d.ts +12 -0
  492. package/dist/processes/index.d.ts.map +1 -0
  493. package/dist/processes/index.js +15 -0
  494. package/dist/processes/recommender.d.ts +36 -0
  495. package/dist/processes/recommender.d.ts.map +1 -0
  496. package/dist/processes/recommender.js +73 -0
  497. package/dist/processes/scorer.d.ts +26 -0
  498. package/dist/processes/scorer.d.ts.map +1 -0
  499. package/dist/processes/scorer.js +104 -0
  500. package/dist/processes/types.d.ts +48 -0
  501. package/dist/processes/types.d.ts.map +1 -0
  502. package/dist/processes/types.js +9 -0
  503. package/dist/prompts/commandTemplates.d.ts +3 -0
  504. package/dist/prompts/commandTemplates.d.ts.map +1 -0
  505. package/dist/prompts/commandTemplates.js +238 -0
  506. package/dist/runtime/index.d.ts +3 -0
  507. package/dist/runtime/index.d.ts.map +1 -0
  508. package/dist/runtime/index.js +28 -0
  509. package/dist/seams/contract.d.ts +63 -0
  510. package/dist/seams/contract.d.ts.map +1 -0
  511. package/dist/seams/contract.js +140 -0
  512. package/dist/seams/contract.test.d.ts +2 -0
  513. package/dist/seams/contract.test.d.ts.map +1 -0
  514. package/dist/seams/contract.test.js +102 -0
  515. package/dist/seams/index.d.ts +3 -0
  516. package/dist/seams/index.d.ts.map +1 -0
  517. package/dist/seams/index.js +8 -0
  518. package/dist/session/context.d.ts +22 -0
  519. package/dist/session/context.d.ts.map +1 -0
  520. package/dist/session/context.js +113 -0
  521. package/dist/session/continuityState.d.ts +39 -0
  522. package/dist/session/continuityState.d.ts.map +1 -0
  523. package/dist/session/continuityState.js +164 -0
  524. package/dist/session/cost.d.ts +63 -0
  525. package/dist/session/cost.d.ts.map +1 -0
  526. package/dist/session/cost.js +194 -0
  527. package/dist/session/discovery.d.ts +22 -0
  528. package/dist/session/discovery.d.ts.map +1 -0
  529. package/dist/session/discovery.js +35 -0
  530. package/dist/session/history.d.ts +30 -0
  531. package/dist/session/history.d.ts.map +1 -0
  532. package/dist/session/history.js +143 -0
  533. package/dist/session/index.d.ts +7 -0
  534. package/dist/session/index.d.ts.map +1 -0
  535. package/dist/session/index.js +70 -0
  536. package/dist/session/memoryExtraction.d.ts +65 -0
  537. package/dist/session/memoryExtraction.d.ts.map +1 -0
  538. package/dist/session/memoryExtraction.js +201 -0
  539. package/dist/session/parse.d.ts +45 -0
  540. package/dist/session/parse.d.ts.map +1 -0
  541. package/dist/session/parse.js +170 -0
  542. package/dist/session/persistence.d.ts +46 -0
  543. package/dist/session/persistence.d.ts.map +1 -0
  544. package/dist/session/persistence.js +180 -0
  545. package/dist/session/types.d.ts +267 -0
  546. package/dist/session/types.d.ts.map +1 -0
  547. package/dist/session/types.js +45 -0
  548. package/dist/session/write.d.ts +61 -0
  549. package/dist/session/write.d.ts.map +1 -0
  550. package/dist/session/write.js +213 -0
  551. package/dist/skills/chain.d.ts +31 -0
  552. package/dist/skills/chain.d.ts.map +1 -0
  553. package/dist/skills/chain.js +113 -0
  554. package/dist/skills/discovery.d.ts +34 -0
  555. package/dist/skills/discovery.d.ts.map +1 -0
  556. package/dist/skills/discovery.js +185 -0
  557. package/dist/skills/index.d.ts +12 -0
  558. package/dist/skills/index.d.ts.map +1 -0
  559. package/dist/skills/index.js +18 -0
  560. package/dist/skills/router.d.ts +35 -0
  561. package/dist/skills/router.d.ts.map +1 -0
  562. package/dist/skills/router.js +143 -0
  563. package/dist/skills/types.d.ts +33 -0
  564. package/dist/skills/types.d.ts.map +1 -0
  565. package/dist/skills/types.js +5 -0
  566. package/dist/storage/atomic.d.ts +2 -0
  567. package/dist/storage/atomic.d.ts.map +1 -0
  568. package/dist/storage/atomic.js +54 -0
  569. package/dist/storage/clock.d.ts +2 -0
  570. package/dist/storage/clock.d.ts.map +1 -0
  571. package/dist/storage/clock.js +6 -0
  572. package/dist/storage/index.d.ts +7 -0
  573. package/dist/storage/index.d.ts.map +1 -0
  574. package/dist/storage/index.js +9 -0
  575. package/dist/storage/journalWatcher.d.ts +24 -0
  576. package/dist/storage/journalWatcher.d.ts.map +1 -0
  577. package/dist/storage/journalWatcher.js +172 -0
  578. package/dist/storage/paths.d.ts +5 -0
  579. package/dist/storage/paths.d.ts.map +1 -0
  580. package/dist/storage/paths.js +26 -0
  581. package/dist/storage/snapshotState.d.ts +10 -0
  582. package/dist/storage/snapshotState.d.ts.map +1 -0
  583. package/dist/storage/snapshotState.js +15 -0
  584. package/dist/storage/storeTaskArtifacts.d.ts +6 -0
  585. package/dist/storage/storeTaskArtifacts.d.ts.map +1 -0
  586. package/dist/storage/storeTaskArtifacts.js +55 -0
  587. package/dist/storage/types.d.ts +21 -0
  588. package/dist/storage/types.d.ts.map +1 -0
  589. package/dist/storage/types.js +2 -0
  590. package/dist/tasks/crud.d.ts +33 -0
  591. package/dist/tasks/crud.d.ts.map +1 -0
  592. package/dist/tasks/crud.js +150 -0
  593. package/dist/tasks/index.d.ts +2 -0
  594. package/dist/tasks/index.d.ts.map +1 -0
  595. package/dist/tasks/index.js +9 -0
  596. package/package.json +163 -0
@@ -0,0 +1,11 @@
1
+ /**
2
+ * GAP-OBS-NEW-002: Phase Timeline Visualization.
3
+ *
4
+ * Synthesizes phase timeline data from journal events. Identifies planning,
5
+ * execution, verification, and completion phases with duration metrics.
6
+ */
7
+ import { type JournalEvent } from "@a5c-ai/babysitter-sdk";
8
+ import type { PhaseTimeline } from "./types";
9
+ export declare function buildPhaseTimelineFromEvents(events: JournalEvent[]): PhaseTimeline;
10
+ export declare function buildPhaseTimeline(runDir: string): Promise<PhaseTimeline>;
11
+ //# sourceMappingURL=timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/observability/timeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EACV,aAAa,EAKd,MAAM,SAAS,CAAC;AA2BjB,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CA6HlF;AAoCD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAG/E"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ /**
3
+ * GAP-OBS-NEW-002: Phase Timeline Visualization.
4
+ *
5
+ * Synthesizes phase timeline data from journal events. Identifies planning,
6
+ * execution, verification, and completion phases with duration metrics.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.buildPhaseTimelineFromEvents = buildPhaseTimelineFromEvents;
10
+ exports.buildPhaseTimeline = buildPhaseTimeline;
11
+ const babysitter_sdk_1 = require("@a5c-ai/babysitter-sdk");
12
+ const VERIFICATION_TASK_IDS = new Set([
13
+ "typecheck",
14
+ "lint",
15
+ "run-tests",
16
+ "adversarial-review",
17
+ ]);
18
+ function ms(a, b) {
19
+ return new Date(b).getTime() - new Date(a).getTime();
20
+ }
21
+ function makePhase(name, startedAt, endedAt) {
22
+ return {
23
+ name,
24
+ startedAt,
25
+ endedAt,
26
+ durationMs: endedAt ? ms(startedAt, endedAt) : null,
27
+ };
28
+ }
29
+ function isVerificationEvent(event) {
30
+ const taskId = event.data.taskId;
31
+ return taskId != null && VERIFICATION_TASK_IDS.has(taskId);
32
+ }
33
+ function buildPhaseTimelineFromEvents(events) {
34
+ if (events.length === 0) {
35
+ return {
36
+ phases: [],
37
+ milestones: [],
38
+ iterations: [],
39
+ currentPhase: "planning",
40
+ totalDurationMs: null,
41
+ };
42
+ }
43
+ const phases = [];
44
+ const milestones = [];
45
+ let currentPhase = "planning";
46
+ const firstEvent = events[0];
47
+ const lastEvent = events[events.length - 1];
48
+ // Find key transition points
49
+ const firstEffectReq = events.find((e) => e.type === "EFFECT_REQUESTED");
50
+ const runCompleted = events.find((e) => e.type === "RUN_COMPLETED");
51
+ const runFailed = events.find((e) => e.type === "RUN_FAILED");
52
+ // Find first verification event (typecheck/lint/test/review)
53
+ const firstVerificationReq = events.find((e) => e.type === "EFFECT_REQUESTED" && isVerificationEvent(e));
54
+ const lastVerificationResolved = [...events]
55
+ .reverse()
56
+ .find((e) => e.type === "EFFECT_RESOLVED" && isVerificationEvent(e));
57
+ // Phase 1: Planning — from RUN_CREATED to first EFFECT_REQUESTED
58
+ if (firstEvent.type === "RUN_CREATED") {
59
+ const planEnd = firstEffectReq?.recordedAt ?? null;
60
+ phases.push(makePhase("planning", firstEvent.recordedAt, planEnd));
61
+ if (planEnd) {
62
+ currentPhase = "execution";
63
+ }
64
+ }
65
+ // Phase 2: Execution — from first EFFECT_REQUESTED to verification start (or last resolved)
66
+ if (firstEffectReq) {
67
+ // Find the last non-verification EFFECT_RESOLVED as fallback execution end
68
+ const lastNonVerifResolved = [...events]
69
+ .reverse()
70
+ .find((e) => e.type === "EFFECT_RESOLVED" && !isVerificationEvent(e));
71
+ const execEnd = firstVerificationReq?.recordedAt
72
+ ?? runCompleted?.recordedAt
73
+ ?? runFailed?.recordedAt
74
+ ?? lastNonVerifResolved?.recordedAt
75
+ ?? null;
76
+ phases.push(makePhase("execution", firstEffectReq.recordedAt, execEnd));
77
+ currentPhase = execEnd ? (firstVerificationReq ? "verification" : "execution") : "execution";
78
+ }
79
+ // Phase 3: Verification — quality gates
80
+ if (firstVerificationReq) {
81
+ const verEnd = lastVerificationResolved?.recordedAt
82
+ ?? runCompleted?.recordedAt
83
+ ?? runFailed?.recordedAt
84
+ ?? null;
85
+ phases.push(makePhase("verification", firstVerificationReq.recordedAt, verEnd));
86
+ currentPhase = verEnd ? "completion" : "verification";
87
+ }
88
+ // Phase 4: Completion
89
+ if (runCompleted) {
90
+ phases.push(makePhase("completion", runCompleted.recordedAt, runCompleted.recordedAt));
91
+ currentPhase = "completed";
92
+ }
93
+ else if (runFailed) {
94
+ phases.push(makePhase("completion", runFailed.recordedAt, runFailed.recordedAt));
95
+ currentPhase = "failed";
96
+ }
97
+ // Extract milestones
98
+ for (const event of events) {
99
+ if (event.type === "EFFECT_RESOLVED" && event.data.kind === "breakpoint") {
100
+ milestones.push({
101
+ type: "breakpoint",
102
+ label: event.data.title ?? `Breakpoint ${event.data.effectId}`,
103
+ occurredAt: event.recordedAt,
104
+ data: event.data,
105
+ });
106
+ }
107
+ if (event.type === "EFFECT_RESOLVED" &&
108
+ (event.data.taskId === "adversarial-review")) {
109
+ milestones.push({
110
+ type: "quality-gate",
111
+ label: `Quality review: ${event.data.taskId}`,
112
+ occurredAt: event.recordedAt,
113
+ data: event.data,
114
+ });
115
+ }
116
+ if (event.type === "RUN_COMPLETED") {
117
+ milestones.push({
118
+ type: "run-completed",
119
+ label: "Run completed",
120
+ occurredAt: event.recordedAt,
121
+ });
122
+ }
123
+ if (event.type === "RUN_FAILED") {
124
+ milestones.push({
125
+ type: "run-failed",
126
+ label: "Run failed",
127
+ occurredAt: event.recordedAt,
128
+ data: event.data,
129
+ });
130
+ }
131
+ }
132
+ // Build iteration breakdowns
133
+ const iterations = buildIterations(events);
134
+ const totalDurationMs = events.length >= 2 ? ms(firstEvent.recordedAt, lastEvent.recordedAt) : null;
135
+ return {
136
+ phases,
137
+ milestones,
138
+ iterations,
139
+ currentPhase,
140
+ totalDurationMs,
141
+ };
142
+ }
143
+ function buildIterations(events) {
144
+ const iterationMap = new Map();
145
+ for (const event of events) {
146
+ const iter = event.data.iteration;
147
+ if (iter != null) {
148
+ let group = iterationMap.get(iter);
149
+ if (!group) {
150
+ group = [];
151
+ iterationMap.set(iter, group);
152
+ }
153
+ group.push(event);
154
+ }
155
+ }
156
+ const iterations = [];
157
+ for (const [iteration, iterEvents] of iterationMap) {
158
+ if (iterEvents.length === 0)
159
+ continue;
160
+ const first = iterEvents[0];
161
+ const last = iterEvents[iterEvents.length - 1];
162
+ const endedAt = last.type === "EFFECT_RESOLVED" ? last.recordedAt : null;
163
+ iterations.push({
164
+ iteration,
165
+ phases: [], // Per-iteration phase breakdown could be added later
166
+ startedAt: first.recordedAt,
167
+ endedAt,
168
+ durationMs: endedAt ? ms(first.recordedAt, endedAt) : null,
169
+ });
170
+ }
171
+ return iterations.sort((a, b) => a.iteration - b.iteration);
172
+ }
173
+ async function buildPhaseTimeline(runDir) {
174
+ const events = await (0, babysitter_sdk_1.loadJournal)(runDir);
175
+ return buildPhaseTimelineFromEvents(events);
176
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Observability types.
3
+ *
4
+ * GAP-OBS-NEW-002: Phase Timeline types.
5
+ * GAP-STATE-008: Run Health Model types.
6
+ */
7
+ export type RunHealthStatus = "healthy" | "degraded" | "stuck" | "failed";
8
+ export interface RunHealthMetrics {
9
+ errorRate: number;
10
+ avgEffectLatencyMs: number;
11
+ pendingCount: number;
12
+ oldestPendingAgeMs: number;
13
+ iterationCount: number;
14
+ lastActivityAt: string | null;
15
+ totalEffects: number;
16
+ resolvedEffects: number;
17
+ failedEffects: number;
18
+ }
19
+ export interface RunHealthSnapshot {
20
+ status: RunHealthStatus;
21
+ metrics: RunHealthMetrics;
22
+ issues: string[];
23
+ computedAt: string;
24
+ }
25
+ export interface HealthConfig {
26
+ /** Threshold for detecting stuck runs (default: 300000ms = 5min). */
27
+ stuckThresholdMs: number;
28
+ /** Error rate above which run is 'degraded' (default: 0.3). */
29
+ degradedErrorRate: number;
30
+ /** Error rate above which run is 'failed' (default: 0.7). */
31
+ failedErrorRate: number;
32
+ /** Max age for pending effects before generating issue (default: 600000ms = 10min). */
33
+ maxPendingAge: number;
34
+ }
35
+ export type PhaseName = "planning" | "execution" | "verification" | "completion";
36
+ export interface PhaseEntry {
37
+ name: PhaseName;
38
+ startedAt: string;
39
+ endedAt: string | null;
40
+ durationMs: number | null;
41
+ }
42
+ export interface Milestone {
43
+ type: "breakpoint" | "quality-gate" | "run-completed" | "run-failed";
44
+ label: string;
45
+ occurredAt: string;
46
+ data?: Record<string, unknown>;
47
+ }
48
+ export interface IterationTimeline {
49
+ iteration: number;
50
+ phases: PhaseEntry[];
51
+ startedAt: string;
52
+ endedAt: string | null;
53
+ durationMs: number | null;
54
+ }
55
+ export interface PhaseTimeline {
56
+ phases: PhaseEntry[];
57
+ milestones: Milestone[];
58
+ iterations: IterationTimeline[];
59
+ currentPhase: PhaseName | "completed" | "failed";
60
+ totalDurationMs: number | null;
61
+ }
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/observability/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,CAAC;AAEjF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,YAAY,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,CAAC;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,YAAY,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACjD,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * Observability types.
4
+ *
5
+ * GAP-OBS-NEW-002: Phase Timeline types.
6
+ * GAP-STATE-008: Run Health Model types.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,68 @@
1
+ /**
2
+ * GAP-OBS-NEW-001: Dashboard Webhook and Alert System.
3
+ *
4
+ * Webhook registration, event filtering, and alert evaluation
5
+ * for run health changes. Pure functions for registry management
6
+ * and alert level computation.
7
+ */
8
+ import type { RunHealthSnapshot } from "./types";
9
+ export type AlertLevel = "info" | "warn" | "critical";
10
+ export type WebhookEventType = "run.health_changed" | "run.completed" | "run.failed" | "run.stuck" | "effect.pending_timeout";
11
+ export interface WebhookRegistration {
12
+ id: string;
13
+ url: string;
14
+ events: WebhookEventType[];
15
+ runId?: string;
16
+ alertLevels?: AlertLevel[];
17
+ secret?: string;
18
+ createdAt: string;
19
+ enabled: boolean;
20
+ }
21
+ export interface WebhookEvent {
22
+ id: string;
23
+ type: WebhookEventType;
24
+ runId: string;
25
+ alertLevel: AlertLevel;
26
+ payload: Record<string, unknown>;
27
+ occurredAt: string;
28
+ }
29
+ export interface WebhookDeliveryResult {
30
+ webhookId: string;
31
+ success: boolean;
32
+ statusCode?: number;
33
+ error?: string;
34
+ deliveredAt: string;
35
+ }
36
+ export interface WebhookRegistry {
37
+ schemaVersion: string;
38
+ registrations: WebhookRegistration[];
39
+ }
40
+ export type WebhookRegistrationInput = Omit<WebhookRegistration, "id" | "createdAt">;
41
+ export declare const WEBHOOK_SCHEMA_VERSION = "2026.01.webhooks-v1";
42
+ /**
43
+ * Register a new webhook in the registry.
44
+ * Mutates the registry and returns the created registration.
45
+ */
46
+ export declare function registerWebhook(registry: WebhookRegistry, input: WebhookRegistrationInput): WebhookRegistration;
47
+ /**
48
+ * Remove a webhook by id. Throws if not found.
49
+ */
50
+ export declare function unregisterWebhook(registry: WebhookRegistry, id: string): void;
51
+ /**
52
+ * List webhooks, optionally filtered by runId.
53
+ */
54
+ export declare function listWebhooks(registry: WebhookRegistry, runId?: string): WebhookRegistration[];
55
+ /**
56
+ * Build a webhook event from a health snapshot.
57
+ */
58
+ export declare function buildWebhookEvent(type: WebhookEventType, runId: string, snapshot: RunHealthSnapshot): WebhookEvent;
59
+ /**
60
+ * Evaluate whether a health transition warrants an alert.
61
+ * Returns the alert level, or null if no alert is needed.
62
+ */
63
+ export declare function evaluateAlertLevel(prev: RunHealthSnapshot | null, next: RunHealthSnapshot): AlertLevel | null;
64
+ /**
65
+ * Filter registrations for a given event type and optional alert level.
66
+ */
67
+ export declare function filterRegistrations(registrations: WebhookRegistration[], eventType: WebhookEventType, alertLevel?: AlertLevel): WebhookRegistration[];
68
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/observability/webhooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,SAAS,CAAC;AAMlE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GACxB,oBAAoB,GACpB,eAAe,GACf,YAAY,GACZ,WAAW,GACX,wBAAwB,CAAC;AAE7B,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,mBAAmB,EAAE,CAAC;CACtC;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC;AAMrF,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AA0B5D;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,wBAAwB,GAC9B,mBAAmB,CAQrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,eAAe,EACzB,EAAE,EAAE,MAAM,GACT,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,eAAe,EACzB,KAAK,CAAC,EAAE,MAAM,GACb,mBAAmB,EAAE,CAGvB;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,iBAAiB,GAC1B,YAAY,CAad;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,iBAAiB,GAAG,IAAI,EAC9B,IAAI,EAAE,iBAAiB,GACtB,UAAU,GAAG,IAAI,CAgBnB;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,mBAAmB,EAAE,EACpC,SAAS,EAAE,gBAAgB,EAC3B,UAAU,CAAC,EAAE,UAAU,GACtB,mBAAmB,EAAE,CASvB"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ /**
3
+ * GAP-OBS-NEW-001: Dashboard Webhook and Alert System.
4
+ *
5
+ * Webhook registration, event filtering, and alert evaluation
6
+ * for run health changes. Pure functions for registry management
7
+ * and alert level computation.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.WEBHOOK_SCHEMA_VERSION = void 0;
11
+ exports.registerWebhook = registerWebhook;
12
+ exports.unregisterWebhook = unregisterWebhook;
13
+ exports.listWebhooks = listWebhooks;
14
+ exports.buildWebhookEvent = buildWebhookEvent;
15
+ exports.evaluateAlertLevel = evaluateAlertLevel;
16
+ exports.filterRegistrations = filterRegistrations;
17
+ // ---------------------------------------------------------------------------
18
+ // Constants
19
+ // ---------------------------------------------------------------------------
20
+ exports.WEBHOOK_SCHEMA_VERSION = "2026.01.webhooks-v1";
21
+ // ---------------------------------------------------------------------------
22
+ // ID generation
23
+ // ---------------------------------------------------------------------------
24
+ function generateId() {
25
+ // Use crypto.randomUUID for test isolation (no shared mutable counter)
26
+ return `wh-${crypto.randomUUID()}`;
27
+ }
28
+ // ---------------------------------------------------------------------------
29
+ // Alert level mapping
30
+ // ---------------------------------------------------------------------------
31
+ const STATUS_ALERT_MAP = {
32
+ healthy: "info",
33
+ degraded: "warn",
34
+ stuck: "critical",
35
+ failed: "critical",
36
+ };
37
+ // ---------------------------------------------------------------------------
38
+ // Registry management (pure, operates on mutable registry)
39
+ // ---------------------------------------------------------------------------
40
+ /**
41
+ * Register a new webhook in the registry.
42
+ * Mutates the registry and returns the created registration.
43
+ */
44
+ function registerWebhook(registry, input) {
45
+ const registration = {
46
+ ...input,
47
+ id: generateId(),
48
+ createdAt: new Date().toISOString(),
49
+ };
50
+ registry.registrations.push(registration);
51
+ return registration;
52
+ }
53
+ /**
54
+ * Remove a webhook by id. Throws if not found.
55
+ */
56
+ function unregisterWebhook(registry, id) {
57
+ const index = registry.registrations.findIndex((r) => r.id === id);
58
+ if (index === -1) {
59
+ throw new Error(`Webhook not found: ${id}`);
60
+ }
61
+ registry.registrations.splice(index, 1);
62
+ }
63
+ /**
64
+ * List webhooks, optionally filtered by runId.
65
+ */
66
+ function listWebhooks(registry, runId) {
67
+ if (!runId)
68
+ return [...registry.registrations];
69
+ return registry.registrations.filter((r) => r.runId === runId);
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // Event building
73
+ // ---------------------------------------------------------------------------
74
+ /**
75
+ * Build a webhook event from a health snapshot.
76
+ */
77
+ function buildWebhookEvent(type, runId, snapshot) {
78
+ return {
79
+ id: generateId(),
80
+ type,
81
+ runId,
82
+ alertLevel: STATUS_ALERT_MAP[snapshot.status],
83
+ payload: {
84
+ status: snapshot.status,
85
+ metrics: snapshot.metrics,
86
+ issues: snapshot.issues,
87
+ },
88
+ occurredAt: new Date().toISOString(),
89
+ };
90
+ }
91
+ // ---------------------------------------------------------------------------
92
+ // Alert level evaluation (pure)
93
+ // ---------------------------------------------------------------------------
94
+ /**
95
+ * Evaluate whether a health transition warrants an alert.
96
+ * Returns the alert level, or null if no alert is needed.
97
+ */
98
+ function evaluateAlertLevel(prev, next) {
99
+ const prevStatus = prev?.status ?? "healthy";
100
+ const nextStatus = next.status;
101
+ if (prevStatus === nextStatus)
102
+ return null;
103
+ // Recovery: anything → healthy
104
+ if (nextStatus === "healthy")
105
+ return "info";
106
+ // Degradation
107
+ if (nextStatus === "degraded")
108
+ return "warn";
109
+ // Critical states
110
+ if (nextStatus === "stuck" || nextStatus === "failed")
111
+ return "critical";
112
+ return null;
113
+ }
114
+ // ---------------------------------------------------------------------------
115
+ // Registration filtering
116
+ // ---------------------------------------------------------------------------
117
+ /**
118
+ * Filter registrations for a given event type and optional alert level.
119
+ */
120
+ function filterRegistrations(registrations, eventType, alertLevel) {
121
+ return registrations.filter((r) => {
122
+ if (!r.enabled)
123
+ return false;
124
+ if (!r.events.includes(eventType))
125
+ return false;
126
+ if (alertLevel && r.alertLevels && r.alertLevels.length > 0) {
127
+ if (!r.alertLevels.includes(alertLevel))
128
+ return false;
129
+ }
130
+ return true;
131
+ });
132
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Plugin sandboxing module for L6 Agent-Platform.
3
+ *
4
+ * Provides permission-gated plugin loading, runtime sandbox enforcement,
5
+ * and semver compatibility checking.
6
+ */
7
+ export type { PluginPermission, PluginManifest, PluginStatus, PluginInstance, PluginSandboxConfig, } from './types';
8
+ export { PluginSandbox } from './sandbox';
9
+ export { PluginLoader } from './loader';
10
+ export { PluginVersionChecker, type VersionCheckResult } from './version-check';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * Plugin sandboxing module for L6 Agent-Platform.
4
+ *
5
+ * Provides permission-gated plugin loading, runtime sandbox enforcement,
6
+ * and semver compatibility checking.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PluginVersionChecker = exports.PluginLoader = exports.PluginSandbox = void 0;
10
+ // Sandbox
11
+ var sandbox_1 = require("./sandbox");
12
+ Object.defineProperty(exports, "PluginSandbox", { enumerable: true, get: function () { return sandbox_1.PluginSandbox; } });
13
+ // Loader
14
+ var loader_1 = require("./loader");
15
+ Object.defineProperty(exports, "PluginLoader", { enumerable: true, get: function () { return loader_1.PluginLoader; } });
16
+ // Version checker
17
+ var version_check_1 = require("./version-check");
18
+ Object.defineProperty(exports, "PluginVersionChecker", { enumerable: true, get: function () { return version_check_1.PluginVersionChecker; } });
@@ -0,0 +1,37 @@
1
+ /**
2
+ * PluginLoader — lifecycle manager for plugin instances.
3
+ *
4
+ * Tracks loaded plugins, validates manifests on load, and manages
5
+ * status transitions (loading -> loaded | error, unloading, reloading).
6
+ */
7
+ import type { PluginManifest, PluginInstance } from './types';
8
+ export declare class PluginLoader {
9
+ private plugins;
10
+ /**
11
+ * Load a plugin from its manifest.
12
+ *
13
+ * Validates required fields and permissions before transitioning the
14
+ * instance to `loaded`. If validation fails the instance is stored with
15
+ * status `error` and the error message is attached.
16
+ */
17
+ load(manifest: PluginManifest): PluginInstance;
18
+ /**
19
+ * Unload a plugin by id.
20
+ *
21
+ * Sets status to `unloaded`. Returns `true` if the plugin existed,
22
+ * `false` otherwise.
23
+ */
24
+ unload(pluginId: string): boolean;
25
+ /**
26
+ * Reload a plugin by re-loading from the existing manifest.
27
+ * Returns the new instance, or `undefined` if the plugin was not found.
28
+ */
29
+ reload(pluginId: string): PluginInstance | undefined;
30
+ /** Return all tracked plugin instances. */
31
+ list(): PluginInstance[];
32
+ /** Get a single plugin instance by id. */
33
+ get(pluginId: string): PluginInstance | undefined;
34
+ /** Check whether a plugin is currently loaded (status === 'loaded'). */
35
+ isLoaded(pluginId: string): boolean;
36
+ }
37
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAoB,MAAM,SAAS,CAAC;AAahF,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAqC;IAMpD;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc;IAqC9C;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUjC;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAYpD,2CAA2C;IAC3C,IAAI,IAAI,cAAc,EAAE;IAIxB,0CAA0C;IAC1C,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIjD,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGpC"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ /**
3
+ * PluginLoader — lifecycle manager for plugin instances.
4
+ *
5
+ * Tracks loaded plugins, validates manifests on load, and manages
6
+ * status transitions (loading -> loaded | error, unloading, reloading).
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PluginLoader = void 0;
10
+ /** Set of all valid permission strings used for manifest validation. */
11
+ const VALID_PERMISSIONS = new Set([
12
+ 'fs:read',
13
+ 'fs:write',
14
+ 'net:outbound',
15
+ 'process:spawn',
16
+ 'env:read',
17
+ 'mcp:connect',
18
+ 'shell:execute',
19
+ ]);
20
+ class PluginLoader {
21
+ plugins = new Map();
22
+ // ---------------------------------------------------------------------------
23
+ // Load / Unload / Reload
24
+ // ---------------------------------------------------------------------------
25
+ /**
26
+ * Load a plugin from its manifest.
27
+ *
28
+ * Validates required fields and permissions before transitioning the
29
+ * instance to `loaded`. If validation fails the instance is stored with
30
+ * status `error` and the error message is attached.
31
+ */
32
+ load(manifest) {
33
+ // Validate required fields
34
+ const issues = [];
35
+ if (!manifest.id)
36
+ issues.push('missing id');
37
+ if (!manifest.name)
38
+ issues.push('missing name');
39
+ if (!manifest.version)
40
+ issues.push('missing version');
41
+ if (!manifest.entrypoint)
42
+ issues.push('missing entrypoint');
43
+ if (!Array.isArray(manifest.permissions)) {
44
+ issues.push('permissions must be an array');
45
+ }
46
+ else {
47
+ for (const perm of manifest.permissions) {
48
+ if (!VALID_PERMISSIONS.has(perm)) {
49
+ issues.push(`unknown permission: ${perm}`);
50
+ }
51
+ }
52
+ }
53
+ if (issues.length > 0) {
54
+ const instance = {
55
+ manifest,
56
+ status: 'error',
57
+ error: `Manifest validation failed: ${issues.join('; ')}`,
58
+ };
59
+ this.plugins.set(manifest.id, instance);
60
+ return instance;
61
+ }
62
+ const instance = {
63
+ manifest,
64
+ status: 'loaded',
65
+ loadedAt: Date.now(),
66
+ };
67
+ this.plugins.set(manifest.id, instance);
68
+ return instance;
69
+ }
70
+ /**
71
+ * Unload a plugin by id.
72
+ *
73
+ * Sets status to `unloaded`. Returns `true` if the plugin existed,
74
+ * `false` otherwise.
75
+ */
76
+ unload(pluginId) {
77
+ const instance = this.plugins.get(pluginId);
78
+ if (!instance)
79
+ return false;
80
+ instance.status = 'unloaded';
81
+ instance.loadedAt = undefined;
82
+ instance.error = undefined;
83
+ return true;
84
+ }
85
+ /**
86
+ * Reload a plugin by re-loading from the existing manifest.
87
+ * Returns the new instance, or `undefined` if the plugin was not found.
88
+ */
89
+ reload(pluginId) {
90
+ const existing = this.plugins.get(pluginId);
91
+ if (!existing)
92
+ return undefined;
93
+ this.unload(pluginId);
94
+ return this.load(existing.manifest);
95
+ }
96
+ // ---------------------------------------------------------------------------
97
+ // Queries
98
+ // ---------------------------------------------------------------------------
99
+ /** Return all tracked plugin instances. */
100
+ list() {
101
+ return [...this.plugins.values()];
102
+ }
103
+ /** Get a single plugin instance by id. */
104
+ get(pluginId) {
105
+ return this.plugins.get(pluginId);
106
+ }
107
+ /** Check whether a plugin is currently loaded (status === 'loaded'). */
108
+ isLoaded(pluginId) {
109
+ return this.plugins.get(pluginId)?.status === 'loaded';
110
+ }
111
+ }
112
+ exports.PluginLoader = PluginLoader;