@a5c-ai/agent-platform 5.0.1-staging.b436b3b3e611

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 (554) 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 +14 -0
  387. package/dist/index.d.ts.map +1 -0
  388. package/dist/index.js +52 -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/prompts/commandTemplates.d.ts +3 -0
  477. package/dist/prompts/commandTemplates.d.ts.map +1 -0
  478. package/dist/prompts/commandTemplates.js +238 -0
  479. package/dist/runtime/index.d.ts +3 -0
  480. package/dist/runtime/index.d.ts.map +1 -0
  481. package/dist/runtime/index.js +28 -0
  482. package/dist/seams/contract.d.ts +55 -0
  483. package/dist/seams/contract.d.ts.map +1 -0
  484. package/dist/seams/contract.js +120 -0
  485. package/dist/seams/contract.test.d.ts +2 -0
  486. package/dist/seams/contract.test.d.ts.map +1 -0
  487. package/dist/seams/contract.test.js +96 -0
  488. package/dist/seams/index.d.ts +3 -0
  489. package/dist/seams/index.d.ts.map +1 -0
  490. package/dist/seams/index.js +8 -0
  491. package/dist/session/context.d.ts +22 -0
  492. package/dist/session/context.d.ts.map +1 -0
  493. package/dist/session/context.js +113 -0
  494. package/dist/session/continuityState.d.ts +39 -0
  495. package/dist/session/continuityState.d.ts.map +1 -0
  496. package/dist/session/continuityState.js +164 -0
  497. package/dist/session/cost.d.ts +63 -0
  498. package/dist/session/cost.d.ts.map +1 -0
  499. package/dist/session/cost.js +194 -0
  500. package/dist/session/discovery.d.ts +22 -0
  501. package/dist/session/discovery.d.ts.map +1 -0
  502. package/dist/session/discovery.js +35 -0
  503. package/dist/session/history.d.ts +30 -0
  504. package/dist/session/history.d.ts.map +1 -0
  505. package/dist/session/history.js +143 -0
  506. package/dist/session/index.d.ts +7 -0
  507. package/dist/session/index.d.ts.map +1 -0
  508. package/dist/session/index.js +70 -0
  509. package/dist/session/memoryExtraction.d.ts +65 -0
  510. package/dist/session/memoryExtraction.d.ts.map +1 -0
  511. package/dist/session/memoryExtraction.js +201 -0
  512. package/dist/session/parse.d.ts +45 -0
  513. package/dist/session/parse.d.ts.map +1 -0
  514. package/dist/session/parse.js +170 -0
  515. package/dist/session/persistence.d.ts +46 -0
  516. package/dist/session/persistence.d.ts.map +1 -0
  517. package/dist/session/persistence.js +180 -0
  518. package/dist/session/types.d.ts +267 -0
  519. package/dist/session/types.d.ts.map +1 -0
  520. package/dist/session/types.js +45 -0
  521. package/dist/session/write.d.ts +61 -0
  522. package/dist/session/write.d.ts.map +1 -0
  523. package/dist/session/write.js +213 -0
  524. package/dist/storage/atomic.d.ts +2 -0
  525. package/dist/storage/atomic.d.ts.map +1 -0
  526. package/dist/storage/atomic.js +54 -0
  527. package/dist/storage/clock.d.ts +2 -0
  528. package/dist/storage/clock.d.ts.map +1 -0
  529. package/dist/storage/clock.js +6 -0
  530. package/dist/storage/index.d.ts +7 -0
  531. package/dist/storage/index.d.ts.map +1 -0
  532. package/dist/storage/index.js +9 -0
  533. package/dist/storage/journalWatcher.d.ts +24 -0
  534. package/dist/storage/journalWatcher.d.ts.map +1 -0
  535. package/dist/storage/journalWatcher.js +172 -0
  536. package/dist/storage/paths.d.ts +5 -0
  537. package/dist/storage/paths.d.ts.map +1 -0
  538. package/dist/storage/paths.js +26 -0
  539. package/dist/storage/snapshotState.d.ts +10 -0
  540. package/dist/storage/snapshotState.d.ts.map +1 -0
  541. package/dist/storage/snapshotState.js +15 -0
  542. package/dist/storage/storeTaskArtifacts.d.ts +6 -0
  543. package/dist/storage/storeTaskArtifacts.d.ts.map +1 -0
  544. package/dist/storage/storeTaskArtifacts.js +55 -0
  545. package/dist/storage/types.d.ts +21 -0
  546. package/dist/storage/types.d.ts.map +1 -0
  547. package/dist/storage/types.js +2 -0
  548. package/dist/tasks/crud.d.ts +33 -0
  549. package/dist/tasks/crud.d.ts.map +1 -0
  550. package/dist/tasks/crud.js +150 -0
  551. package/dist/tasks/index.d.ts +2 -0
  552. package/dist/tasks/index.d.ts.map +1 -0
  553. package/dist/tasks/index.js +9 -0
  554. package/package.json +141 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"askUserQuestionTypes.d.ts","sourceRoot":"","sources":["../../src/interaction/askUserQuestionTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,uBAAuB,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACxE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for askUserQuestion.
4
+ * Extracted from askUserQuestion.ts for max-lines compliance.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export * from "./askUserQuestion";
2
+ export { resolveInteractionUxHints } from './interactionRouter';
3
+ export type { InteractionUxHints } from './interactionRouter';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interaction/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.resolveInteractionUxHints = void 0;
18
+ __exportStar(require("./askUserQuestion"), exports);
19
+ var interactionRouter_1 = require("./interactionRouter");
20
+ Object.defineProperty(exports, "resolveInteractionUxHints", { enumerable: true, get: function () { return interactionRouter_1.resolveInteractionUxHints; } });
@@ -0,0 +1,25 @@
1
+ /**
2
+ * GAP-SEC-003: Interaction UX Routing
3
+ *
4
+ * Maps InteractionKind values to UX hints that harness adapters
5
+ * consume for kind-appropriate rendering.
6
+ *
7
+ * @module interaction/interactionRouter
8
+ */
9
+ import type { InteractionKind } from '@a5c-ai/babysitter-sdk';
10
+ /**
11
+ * UX hints for rendering a specific interaction kind.
12
+ */
13
+ export interface InteractionUxHints {
14
+ urgency: 'low' | 'medium' | 'high';
15
+ requiresDecision: boolean;
16
+ presentAlwaysApprove: boolean;
17
+ defaultAutoApprove: boolean;
18
+ uiStyle: 'qa' | 'confirm' | 'alert' | 'banner' | 'summary';
19
+ }
20
+ /**
21
+ * Resolve UX hints for a given interaction kind.
22
+ * Pure function — no I/O.
23
+ */
24
+ export declare function resolveInteractionUxHints(kind: InteractionKind): InteractionUxHints | undefined;
25
+ //# sourceMappingURL=interactionRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionRouter.d.ts","sourceRoot":"","sources":["../../src/interaction/interactionRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC5D;AAwCD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,eAAe,GAAG,kBAAkB,GAAG,SAAS,CAE/F"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * GAP-SEC-003: Interaction UX Routing
4
+ *
5
+ * Maps InteractionKind values to UX hints that harness adapters
6
+ * consume for kind-appropriate rendering.
7
+ *
8
+ * @module interaction/interactionRouter
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.resolveInteractionUxHints = resolveInteractionUxHints;
12
+ const HINTS_MAP = {
13
+ clarification: {
14
+ urgency: 'low',
15
+ requiresDecision: true,
16
+ presentAlwaysApprove: false,
17
+ defaultAutoApprove: false,
18
+ uiStyle: 'qa',
19
+ },
20
+ approval: {
21
+ urgency: 'medium',
22
+ requiresDecision: true,
23
+ presentAlwaysApprove: true,
24
+ defaultAutoApprove: false,
25
+ uiStyle: 'confirm',
26
+ },
27
+ intervention: {
28
+ urgency: 'high',
29
+ requiresDecision: true,
30
+ presentAlwaysApprove: false,
31
+ defaultAutoApprove: false,
32
+ uiStyle: 'alert',
33
+ },
34
+ notification: {
35
+ urgency: 'low',
36
+ requiresDecision: false,
37
+ presentAlwaysApprove: false,
38
+ defaultAutoApprove: true,
39
+ uiStyle: 'banner',
40
+ },
41
+ handoff: {
42
+ urgency: 'low',
43
+ requiresDecision: false,
44
+ presentAlwaysApprove: false,
45
+ defaultAutoApprove: false,
46
+ uiStyle: 'summary',
47
+ },
48
+ };
49
+ /**
50
+ * Resolve UX hints for a given interaction kind.
51
+ * Pure function — no I/O.
52
+ */
53
+ function resolveInteractionUxHints(kind) {
54
+ return HINTS_MAP[kind];
55
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * GAP-MCPC-001: Channel Allowlist.
3
+ *
4
+ * Controls which MCP channels are active. Channels require explicit opt-in.
5
+ * Uses atomic write pattern consistent with other SDK state modules.
6
+ */
7
+ import type { ChannelConfig, ChannelAllowlistFile } from "./types";
8
+ export declare function getChannelAllowlistPath(stateDir: string): string;
9
+ export declare function readChannelAllowlist(stateDir: string): Promise<ChannelAllowlistFile>;
10
+ export declare function writeChannelAllowlist(stateDir: string, allowlist: ChannelAllowlistFile): Promise<void>;
11
+ /** Add or update a channel in the allowlist. */
12
+ export declare function upsertChannel(stateDir: string, channel: ChannelConfig): Promise<ChannelAllowlistFile>;
13
+ /** Remove a channel from the allowlist. Returns true if removed. */
14
+ export declare function removeChannel(stateDir: string, serverName: string, channelId: string): Promise<boolean>;
15
+ /** Toggle a channel's enabled state. Returns the new enabled state. */
16
+ export declare function toggleChannel(stateDir: string, serverName: string, channelId: string, enabled?: boolean): Promise<boolean | undefined>;
17
+ /** Get all enabled channels. */
18
+ export declare function getEnabledChannels(allowlist: ChannelAllowlistFile): ChannelConfig[];
19
+ //# sourceMappingURL=allowlist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allowlist.d.ts","sourceRoot":"","sources":["../../../src/mcp/channels/allowlist.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAenE,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA+B1F;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,oBAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,gDAAgD;AAChD,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAa/B;AAED,oEAAoE;AACpE,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED,uEAAuE;AACvE,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAU9B;AAED,gCAAgC;AAChC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,GAAG,aAAa,EAAE,CAEnF"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ /**
3
+ * GAP-MCPC-001: Channel Allowlist.
4
+ *
5
+ * Controls which MCP channels are active. Channels require explicit opt-in.
6
+ * Uses atomic write pattern consistent with other SDK state modules.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.getChannelAllowlistPath = getChannelAllowlistPath;
43
+ exports.readChannelAllowlist = readChannelAllowlist;
44
+ exports.writeChannelAllowlist = writeChannelAllowlist;
45
+ exports.upsertChannel = upsertChannel;
46
+ exports.removeChannel = removeChannel;
47
+ exports.toggleChannel = toggleChannel;
48
+ exports.getEnabledChannels = getEnabledChannels;
49
+ const node_fs_1 = require("node:fs");
50
+ const path = __importStar(require("node:path"));
51
+ const atomic_1 = require("../../storage/atomic");
52
+ const types_1 = require("./types");
53
+ // ---------------------------------------------------------------------------
54
+ // Helpers
55
+ // ---------------------------------------------------------------------------
56
+ function emptyAllowlist() {
57
+ return { schemaVersion: types_1.CHANNEL_ALLOWLIST_SCHEMA_VERSION, channels: [] };
58
+ }
59
+ // ---------------------------------------------------------------------------
60
+ // Public API
61
+ // ---------------------------------------------------------------------------
62
+ function getChannelAllowlistPath(stateDir) {
63
+ return path.join(stateDir, "channel-allowlist.json");
64
+ }
65
+ async function readChannelAllowlist(stateDir) {
66
+ const filePath = getChannelAllowlistPath(stateDir);
67
+ let raw;
68
+ try {
69
+ raw = await node_fs_1.promises.readFile(filePath, "utf8");
70
+ }
71
+ catch (error) {
72
+ const err = error;
73
+ if (err.code === "ENOENT")
74
+ return emptyAllowlist();
75
+ throw error;
76
+ }
77
+ try {
78
+ const data = JSON.parse(raw);
79
+ const rawChannels = Array.isArray(data.channels) ? data.channels : [];
80
+ const validChannels = rawChannels.filter((c) => {
81
+ if (typeof c !== "object" || c === null)
82
+ return false;
83
+ const obj = c;
84
+ return (typeof obj.serverName === "string" &&
85
+ typeof obj.channelId === "string" &&
86
+ typeof obj.enabled === "boolean");
87
+ });
88
+ return {
89
+ schemaVersion: typeof data.schemaVersion === "string" ? data.schemaVersion : types_1.CHANNEL_ALLOWLIST_SCHEMA_VERSION,
90
+ channels: validChannels,
91
+ };
92
+ }
93
+ catch {
94
+ return emptyAllowlist();
95
+ }
96
+ }
97
+ async function writeChannelAllowlist(stateDir, allowlist) {
98
+ const filePath = getChannelAllowlistPath(stateDir);
99
+ await (0, atomic_1.writeFileAtomic)(filePath, JSON.stringify(allowlist, null, 2));
100
+ }
101
+ /** Add or update a channel in the allowlist. */
102
+ async function upsertChannel(stateDir, channel) {
103
+ const allowlist = await readChannelAllowlist(stateDir);
104
+ const key = `${channel.serverName}:${channel.channelId}`;
105
+ const idx = allowlist.channels.findIndex((c) => `${c.serverName}:${c.channelId}` === key);
106
+ if (idx >= 0) {
107
+ allowlist.channels[idx] = channel;
108
+ }
109
+ else {
110
+ allowlist.channels.push(channel);
111
+ }
112
+ await writeChannelAllowlist(stateDir, allowlist);
113
+ return allowlist;
114
+ }
115
+ /** Remove a channel from the allowlist. Returns true if removed. */
116
+ async function removeChannel(stateDir, serverName, channelId) {
117
+ const allowlist = await readChannelAllowlist(stateDir);
118
+ const key = `${serverName}:${channelId}`;
119
+ const before = allowlist.channels.length;
120
+ allowlist.channels = allowlist.channels.filter((c) => `${c.serverName}:${c.channelId}` !== key);
121
+ if (allowlist.channels.length === before)
122
+ return false;
123
+ await writeChannelAllowlist(stateDir, allowlist);
124
+ return true;
125
+ }
126
+ /** Toggle a channel's enabled state. Returns the new enabled state. */
127
+ async function toggleChannel(stateDir, serverName, channelId, enabled) {
128
+ const allowlist = await readChannelAllowlist(stateDir);
129
+ const key = `${serverName}:${channelId}`;
130
+ const channel = allowlist.channels.find((c) => `${c.serverName}:${c.channelId}` === key);
131
+ if (!channel)
132
+ return undefined;
133
+ channel.enabled = enabled ?? !channel.enabled;
134
+ await writeChannelAllowlist(stateDir, allowlist);
135
+ return channel.enabled;
136
+ }
137
+ /** Get all enabled channels. */
138
+ function getEnabledChannels(allowlist) {
139
+ return allowlist.channels.filter((c) => c.enabled);
140
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * GAP-MCPC-001: Channel Manager.
3
+ *
4
+ * Detects channel capability on connected MCP servers and manages
5
+ * channel bindings. Integrates with McpClientManager and InboundMessageQueue.
6
+ */
7
+ import type { ChannelCapability, ChannelConfig, ChannelMessage } from "./types";
8
+ import type { McpClientManager } from "../client/manager";
9
+ import { InboundMessageQueue, type WakeCallback } from "./inboundQueue";
10
+ export interface ChannelManagerOptions {
11
+ /** State directory for reading allowlist. */
12
+ stateDir: string;
13
+ /** MCP client manager for server connections. */
14
+ clientManager: McpClientManager;
15
+ /** Wake callback for sleeping runs. */
16
+ onWake?: WakeCallback;
17
+ /** Maximum inbound queue size per run. */
18
+ maxQueueSize?: number;
19
+ }
20
+ /** Detected channel server. */
21
+ export interface DetectedChannel {
22
+ serverName: string;
23
+ capability: ChannelCapability;
24
+ }
25
+ export declare class ChannelManager {
26
+ private readonly _stateDir;
27
+ private readonly _clientManager;
28
+ private readonly _queue;
29
+ private readonly _detectedChannels;
30
+ constructor(options: ChannelManagerOptions);
31
+ /**
32
+ * Detect channel capability on connected MCP servers.
33
+ * A server declares channel capability by exposing tools matching
34
+ * known channel patterns (e.g. slack_send_message, gmail_create_draft).
35
+ */
36
+ detectChannels(): Promise<DetectedChannel[]>;
37
+ /** Get detected channel capabilities. */
38
+ getDetectedChannels(): DetectedChannel[];
39
+ /** Check if a server has channel capability. */
40
+ hasChannelCapability(serverName: string): boolean;
41
+ /**
42
+ * Process an inbound channel message.
43
+ * Routes to bound run and queues for retrieval.
44
+ */
45
+ processInboundMessage(message: ChannelMessage): void;
46
+ /** Bind a channel to a run for message routing. */
47
+ bindChannelToRun(channelSource: string, runId: string): void;
48
+ /** Unbind a channel from its run. */
49
+ unbindChannel(channelSource: string): void;
50
+ /** Get messages for a run. */
51
+ getMessages(runId: string, limit?: number): ChannelMessage[];
52
+ /** Dequeue messages for a run. */
53
+ consumeMessages(runId: string, limit?: number): ChannelMessage[];
54
+ /** Check if a run has pending messages. */
55
+ hasMessages(runId: string): boolean;
56
+ /**
57
+ * Load enabled channels from the allowlist.
58
+ * Returns configs for channels that are both allowed and connected.
59
+ */
60
+ getActiveChannels(): Promise<ChannelConfig[]>;
61
+ /** Access the underlying queue (for advanced use). */
62
+ get queue(): InboundMessageQueue;
63
+ }
64
+ //# sourceMappingURL=channelManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelManager.d.ts","sourceRoot":"","sources":["../../../src/mcp/channels/channelManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAUxE,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,aAAa,EAAE,gBAAgB,CAAC;IAChC,uCAAuC;IACvC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,+BAA+B;AAC/B,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAMD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwC;gBAE9D,OAAO,EAAE,qBAAqB;IAS1C;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAuClD,yCAAyC;IACzC,mBAAmB,IAAI,eAAe,EAAE;IAOxC,gDAAgD;IAChD,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIjD;;;OAGG;IACH,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIpD,mDAAmD;IACnD,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI5D,qCAAqC;IACrC,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAI1C,8BAA8B;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,cAAc,EAAE;IAIxD,kCAAkC;IAClC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,cAAc,EAAE;IAI5D,2CAA2C;IAC3C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAInC;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAYnD,sDAAsD;IACtD,IAAI,KAAK,IAAI,mBAAmB,CAE/B;CACF"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ /**
3
+ * GAP-MCPC-001: Channel Manager.
4
+ *
5
+ * Detects channel capability on connected MCP servers and manages
6
+ * channel bindings. Integrates with McpClientManager and InboundMessageQueue.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ChannelManager = void 0;
10
+ const inboundQueue_1 = require("./inboundQueue");
11
+ const allowlist_1 = require("./allowlist");
12
+ // ---------------------------------------------------------------------------
13
+ // ChannelManager
14
+ // ---------------------------------------------------------------------------
15
+ class ChannelManager {
16
+ _stateDir;
17
+ _clientManager;
18
+ _queue;
19
+ _detectedChannels = new Map();
20
+ constructor(options) {
21
+ this._stateDir = options.stateDir;
22
+ this._clientManager = options.clientManager;
23
+ this._queue = new inboundQueue_1.InboundMessageQueue({
24
+ maxQueueSize: options.maxQueueSize,
25
+ onWake: options.onWake,
26
+ });
27
+ }
28
+ /**
29
+ * Detect channel capability on connected MCP servers.
30
+ * A server declares channel capability by exposing tools matching
31
+ * known channel patterns (e.g. slack_send_message, gmail_create_draft).
32
+ */
33
+ async detectChannels() {
34
+ const connections = this._clientManager.listConnections();
35
+ const detected = [];
36
+ for (const conn of connections) {
37
+ if (conn.status !== "connected")
38
+ continue;
39
+ try {
40
+ const tools = await this._clientManager.listTools(conn.name);
41
+ const toolNames = tools.map((t) => t.name);
42
+ const channelType = inferChannelType(toolNames);
43
+ // Only consider servers that match a known channel type
44
+ if (!channelType)
45
+ continue;
46
+ const capability = {
47
+ inbound: toolNames.some((n) => n.includes("read_channel") || n.includes("read_message") || n.includes("read_thread")),
48
+ outbound: toolNames.some((n) => n.includes("send_message") || n.includes("create_draft")),
49
+ permissionRelay: false,
50
+ channelType,
51
+ };
52
+ if (capability.inbound || capability.outbound) {
53
+ this._detectedChannels.set(conn.name, capability);
54
+ detected.push({ serverName: conn.name, capability });
55
+ }
56
+ }
57
+ catch {
58
+ // Skip servers that fail to list tools
59
+ }
60
+ }
61
+ return detected;
62
+ }
63
+ /** Get detected channel capabilities. */
64
+ getDetectedChannels() {
65
+ return [...this._detectedChannels.entries()].map(([serverName, capability]) => ({
66
+ serverName,
67
+ capability,
68
+ }));
69
+ }
70
+ /** Check if a server has channel capability. */
71
+ hasChannelCapability(serverName) {
72
+ return this._detectedChannels.has(serverName);
73
+ }
74
+ /**
75
+ * Process an inbound channel message.
76
+ * Routes to bound run and queues for retrieval.
77
+ */
78
+ processInboundMessage(message) {
79
+ this._queue.enqueue(message);
80
+ }
81
+ /** Bind a channel to a run for message routing. */
82
+ bindChannelToRun(channelSource, runId) {
83
+ this._queue.bindChannel(channelSource, runId);
84
+ }
85
+ /** Unbind a channel from its run. */
86
+ unbindChannel(channelSource) {
87
+ this._queue.unbindChannel(channelSource);
88
+ }
89
+ /** Get messages for a run. */
90
+ getMessages(runId, limit = 10) {
91
+ return this._queue.peek(runId, limit);
92
+ }
93
+ /** Dequeue messages for a run. */
94
+ consumeMessages(runId, limit = 10) {
95
+ return this._queue.dequeue(runId, limit);
96
+ }
97
+ /** Check if a run has pending messages. */
98
+ hasMessages(runId) {
99
+ return this._queue.hasMessages(runId);
100
+ }
101
+ /**
102
+ * Load enabled channels from the allowlist.
103
+ * Returns configs for channels that are both allowed and connected.
104
+ */
105
+ async getActiveChannels() {
106
+ const allowlist = await (0, allowlist_1.readChannelAllowlist)(this._stateDir);
107
+ const enabled = (0, allowlist_1.getEnabledChannels)(allowlist);
108
+ const connected = new Set(this._clientManager
109
+ .listConnections()
110
+ .filter((c) => c.status === "connected")
111
+ .map((c) => c.name));
112
+ return enabled.filter((c) => connected.has(c.serverName));
113
+ }
114
+ /** Access the underlying queue (for advanced use). */
115
+ get queue() {
116
+ return this._queue;
117
+ }
118
+ }
119
+ exports.ChannelManager = ChannelManager;
120
+ // ---------------------------------------------------------------------------
121
+ // Helpers
122
+ // ---------------------------------------------------------------------------
123
+ /** Infer channel type from tool name prefixes. */
124
+ function inferChannelType(toolNames) {
125
+ const hasPrefix = (prefix) => toolNames.some((n) => n.startsWith(prefix));
126
+ if (hasPrefix("slack_"))
127
+ return "slack";
128
+ if (hasPrefix("discord_"))
129
+ return "discord";
130
+ if (hasPrefix("gmail_") || hasPrefix("email_"))
131
+ return "email";
132
+ if (hasPrefix("telegram_"))
133
+ return "telegram";
134
+ if (hasPrefix("teams_"))
135
+ return "teams";
136
+ return undefined;
137
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * GAP-MCPC-001: Inbound Message Queue.
3
+ *
4
+ * Stores inbound channel messages in-memory and provides wake-up
5
+ * triggers for sleeping runs. Messages do not survive process restarts.
6
+ */
7
+ import type { ChannelMessage, ChannelBinding } from "./types";
8
+ export type WakeCallback = (runId: string, message: ChannelMessage) => void;
9
+ export interface InboundQueueOptions {
10
+ /** Maximum messages to buffer per run before dropping oldest. */
11
+ maxQueueSize?: number;
12
+ /** Callback fired when a bound run receives a message (for wake-up). */
13
+ onWake?: WakeCallback;
14
+ }
15
+ export declare class InboundMessageQueue {
16
+ private readonly _queues;
17
+ private readonly _bindings;
18
+ private readonly _maxQueueSize;
19
+ private readonly _onWake;
20
+ constructor(options?: InboundQueueOptions);
21
+ /** Bind a channel to a run for message routing. */
22
+ bindChannel(channelSource: string, runId: string): void;
23
+ /** Unbind a channel from its run. */
24
+ unbindChannel(channelSource: string): void;
25
+ /** Get the run ID a channel is bound to (if any). */
26
+ getBoundRunId(channelSource: string): string | undefined;
27
+ /** Get all active bindings. */
28
+ getBindings(): ChannelBinding[];
29
+ /**
30
+ * Enqueue an inbound message. Routes to bound run if one exists.
31
+ * Fires the wake callback if a binding exists.
32
+ */
33
+ enqueue(message: ChannelMessage): void;
34
+ /** Peek at messages for a run (does not remove). */
35
+ peek(runId: string, limit?: number): ChannelMessage[];
36
+ /** Dequeue (remove and return) messages for a run. */
37
+ dequeue(runId: string, limit?: number): ChannelMessage[];
38
+ /** Get the number of queued messages for a run. */
39
+ queueSize(runId: string): number;
40
+ /** Check if there are any messages for a run. */
41
+ hasMessages(runId: string): boolean;
42
+ /** Get unbound messages (not routed to any run). */
43
+ getUnboundMessages(limit?: number): ChannelMessage[];
44
+ /** Clear all queues and bindings. */
45
+ clear(): void;
46
+ }
47
+ //# sourceMappingURL=inboundQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inboundQueue.d.ts","sourceRoot":"","sources":["../../../src/mcp/channels/inboundQueue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM9D,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AAE5E,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAMD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;gBAEvC,OAAO,CAAC,EAAE,mBAAmB;IAKzC,mDAAmD;IACnD,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQvD,qCAAqC;IACrC,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAI1C,qDAAqD;IACrD,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxD,+BAA+B;IAC/B,WAAW,IAAI,cAAc,EAAE;IAI/B;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAuBtC,oDAAoD;IACpD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,cAAc,EAAE;IAMjD,sDAAsD;IACtD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,cAAc,EAAE;IAMpD,mDAAmD;IACnD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIhC,iDAAiD;IACjD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAInC,oDAAoD;IACpD,kBAAkB,CAAC,KAAK,SAAK,GAAG,cAAc,EAAE;IAIhD,qCAAqC;IACrC,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ /**
3
+ * GAP-MCPC-001: Inbound Message Queue.
4
+ *
5
+ * Stores inbound channel messages in-memory and provides wake-up
6
+ * triggers for sleeping runs. Messages do not survive process restarts.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.InboundMessageQueue = void 0;
10
+ // ---------------------------------------------------------------------------
11
+ // InboundMessageQueue
12
+ // ---------------------------------------------------------------------------
13
+ class InboundMessageQueue {
14
+ _queues = new Map();
15
+ _bindings = new Map();
16
+ _maxQueueSize;
17
+ _onWake;
18
+ constructor(options) {
19
+ this._maxQueueSize = options?.maxQueueSize ?? 100;
20
+ this._onWake = options?.onWake;
21
+ }
22
+ /** Bind a channel to a run for message routing. */
23
+ bindChannel(channelSource, runId) {
24
+ this._bindings.set(channelSource, {
25
+ channelSource,
26
+ runId,
27
+ boundAt: new Date().toISOString(),
28
+ });
29
+ }
30
+ /** Unbind a channel from its run. */
31
+ unbindChannel(channelSource) {
32
+ this._bindings.delete(channelSource);
33
+ }
34
+ /** Get the run ID a channel is bound to (if any). */
35
+ getBoundRunId(channelSource) {
36
+ return this._bindings.get(channelSource)?.runId;
37
+ }
38
+ /** Get all active bindings. */
39
+ getBindings() {
40
+ return [...this._bindings.values()];
41
+ }
42
+ /**
43
+ * Enqueue an inbound message. Routes to bound run if one exists.
44
+ * Fires the wake callback if a binding exists.
45
+ */
46
+ enqueue(message) {
47
+ const runId = this._bindings.get(message.source)?.runId;
48
+ const queueKey = runId ?? "__unbound__";
49
+ let queue = this._queues.get(queueKey);
50
+ if (!queue) {
51
+ queue = [];
52
+ this._queues.set(queueKey, queue);
53
+ }
54
+ queue.push(message);
55
+ // Trim if over max
56
+ if (queue.length > this._maxQueueSize) {
57
+ queue.shift();
58
+ }
59
+ // Fire wake callback for bound runs
60
+ if (runId && this._onWake) {
61
+ this._onWake(runId, message);
62
+ }
63
+ }
64
+ /** Peek at messages for a run (does not remove). */
65
+ peek(runId, limit = 10) {
66
+ const queue = this._queues.get(runId);
67
+ if (!queue)
68
+ return [];
69
+ return queue.slice(-limit);
70
+ }
71
+ /** Dequeue (remove and return) messages for a run. */
72
+ dequeue(runId, limit = 10) {
73
+ const queue = this._queues.get(runId);
74
+ if (!queue || queue.length === 0)
75
+ return [];
76
+ return queue.splice(0, Math.min(limit, queue.length));
77
+ }
78
+ /** Get the number of queued messages for a run. */
79
+ queueSize(runId) {
80
+ return this._queues.get(runId)?.length ?? 0;
81
+ }
82
+ /** Check if there are any messages for a run. */
83
+ hasMessages(runId) {
84
+ return this.queueSize(runId) > 0;
85
+ }
86
+ /** Get unbound messages (not routed to any run). */
87
+ getUnboundMessages(limit = 10) {
88
+ return this.peek("__unbound__", limit);
89
+ }
90
+ /** Clear all queues and bindings. */
91
+ clear() {
92
+ this._queues.clear();
93
+ this._bindings.clear();
94
+ }
95
+ }
96
+ exports.InboundMessageQueue = InboundMessageQueue;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * MCP Channels — interactive messaging and approval routing.
3
+ * Moved from @a5c-ai/babysitter-sdk.
4
+ *
5
+ * Status: NOT INTEGRATED YET — these modules are implemented but not wired
6
+ * into the harness's interaction/governance layer.
7
+ *
8
+ * GAP-MCPC-001/002/003/004
9
+ */
10
+ export type { ChannelCapability, ChannelConfig, ChannelMessage, ChannelBinding, OutboundMessageRequest, OutboundMessageResult, ChannelApprovalRequest, ChannelApprovalResponse, ApprovalClaim, ChannelAllowlistFile, ChannelApprovalSecurityConfig, } from "./types";
11
+ export { CHANNEL_ALLOWLIST_SCHEMA_VERSION, DEFAULT_APPROVAL_SECURITY, } from "./types";
12
+ export { getChannelAllowlistPath, readChannelAllowlist, writeChannelAllowlist, upsertChannel, removeChannel, toggleChannel, getEnabledChannels, } from "./allowlist";
13
+ export { InboundMessageQueue, type WakeCallback, type InboundQueueOptions, } from "./inboundQueue";
14
+ export { ChannelManager, type ChannelManagerOptions, type DetectedChannel, } from "./channelManager";
15
+ export { OutboundChannelSender, formatTemplate, DEFAULT_CHANNEL_TOOL_MAPPINGS, type ChannelToolMapping, } from "./outbound";
16
+ export { ChannelPermissionRelay, createApprovalRace, type PermissionRelayOptions, type RelayResult, } from "./permissionRelay";
17
+ //# sourceMappingURL=index.d.ts.map