@oscharko-dev/keiko-server 0.2.7 → 0.2.9

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 (302) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/chat-handlers.d.ts +18 -2
  3. package/dist/chat-handlers.d.ts.map +1 -1
  4. package/dist/chat-handlers.js +185 -3
  5. package/dist/command-runner-errors.d.ts +17 -0
  6. package/dist/command-runner-errors.d.ts.map +1 -0
  7. package/dist/command-runner-errors.js +37 -0
  8. package/dist/command-runner-evidence.d.ts +23 -0
  9. package/dist/command-runner-evidence.d.ts.map +1 -0
  10. package/dist/command-runner-evidence.js +69 -0
  11. package/dist/command-runner-routes.d.ts +7 -0
  12. package/dist/command-runner-routes.d.ts.map +1 -0
  13. package/dist/command-runner-routes.js +175 -0
  14. package/dist/command-runner.d.ts +29 -0
  15. package/dist/command-runner.d.ts.map +1 -0
  16. package/dist/command-runner.js +348 -0
  17. package/dist/conversation-prompt.d.ts +2 -2
  18. package/dist/conversation-prompt.d.ts.map +1 -1
  19. package/dist/conversation-prompt.js +17 -1
  20. package/dist/csp.d.ts.map +1 -1
  21. package/dist/csp.js +3 -0
  22. package/dist/deps.d.ts +28 -1
  23. package/dist/deps.d.ts.map +1 -1
  24. package/dist/deps.js +288 -13
  25. package/dist/discussion-prompt.d.ts +4 -0
  26. package/dist/discussion-prompt.d.ts.map +1 -0
  27. package/dist/discussion-prompt.js +19 -0
  28. package/dist/editor/agentActionAudit.d.ts +18 -0
  29. package/dist/editor/agentActionAudit.d.ts.map +1 -0
  30. package/dist/editor/agentActionAudit.js +80 -0
  31. package/dist/editor/agentRoutes.d.ts +1 -0
  32. package/dist/editor/agentRoutes.d.ts.map +1 -1
  33. package/dist/editor/agentRoutes.js +292 -55
  34. package/dist/editor/agentSessionRegistry.d.ts +35 -0
  35. package/dist/editor/agentSessionRegistry.d.ts.map +1 -0
  36. package/dist/editor/agentSessionRegistry.js +243 -0
  37. package/dist/editor/completionRoutes.d.ts.map +1 -1
  38. package/dist/editor/completionRoutes.js +5 -10
  39. package/dist/editor/languageRoutes.d.ts +12 -1
  40. package/dist/editor/languageRoutes.d.ts.map +1 -1
  41. package/dist/editor/languageRoutes.js +71 -8
  42. package/dist/editor/languageService.d.ts +3 -2
  43. package/dist/editor/languageService.d.ts.map +1 -1
  44. package/dist/editor/languageService.js +41 -3
  45. package/dist/editor/languageServiceHost.d.ts.map +1 -1
  46. package/dist/editor/languageServiceHost.js +2 -2
  47. package/dist/editor/lsp/hostLanguageOperation.d.ts +17 -0
  48. package/dist/editor/lsp/hostLanguageOperation.d.ts.map +1 -0
  49. package/dist/editor/lsp/hostLanguageOperation.js +436 -0
  50. package/dist/editor/lsp/hostLanguageProviders.d.ts +26 -0
  51. package/dist/editor/lsp/hostLanguageProviders.d.ts.map +1 -0
  52. package/dist/editor/lsp/hostLanguageProviders.js +161 -0
  53. package/dist/editor/lsp/lspFrameCodec.d.ts +13 -0
  54. package/dist/editor/lsp/lspFrameCodec.d.ts.map +1 -0
  55. package/dist/editor/lsp/lspFrameCodec.js +164 -0
  56. package/dist/editor/lsp/lspJsonRpcClient.d.ts +34 -0
  57. package/dist/editor/lsp/lspJsonRpcClient.d.ts.map +1 -0
  58. package/dist/editor/lsp/lspJsonRpcClient.js +173 -0
  59. package/dist/editor/lsp/lspLanguageProvider.d.ts +7 -0
  60. package/dist/editor/lsp/lspLanguageProvider.d.ts.map +1 -0
  61. package/dist/editor/lsp/lspLanguageProvider.js +29 -0
  62. package/dist/editor/lsp/lspLifecycleLedger.d.ts +5 -0
  63. package/dist/editor/lsp/lspLifecycleLedger.d.ts.map +1 -0
  64. package/dist/editor/lsp/lspLifecycleLedger.js +37 -0
  65. package/dist/editor/lsp/lspNodeAdapter.d.ts +31 -0
  66. package/dist/editor/lsp/lspNodeAdapter.d.ts.map +1 -0
  67. package/dist/editor/lsp/lspNodeAdapter.js +230 -0
  68. package/dist/editor/lsp/lspProcessManager.d.ts +24 -0
  69. package/dist/editor/lsp/lspProcessManager.d.ts.map +1 -0
  70. package/dist/editor/lsp/lspProcessManager.js +255 -0
  71. package/dist/editor/lsp/lspRestartThrottle.d.ts +6 -0
  72. package/dist/editor/lsp/lspRestartThrottle.d.ts.map +1 -0
  73. package/dist/editor/lsp/lspRestartThrottle.js +24 -0
  74. package/dist/editor/lsp/lspStatusRoute.d.ts +8 -0
  75. package/dist/editor/lsp/lspStatusRoute.d.ts.map +1 -0
  76. package/dist/editor/lsp/lspStatusRoute.js +22 -0
  77. package/dist/editor/lsp/lspTransport.d.ts +19 -0
  78. package/dist/editor/lsp/lspTransport.d.ts.map +1 -0
  79. package/dist/editor/lsp/lspTransport.js +55 -0
  80. package/dist/editor/lsp/testing/fakeLspProcess.d.ts +23 -0
  81. package/dist/editor/lsp/testing/fakeLspProcess.d.ts.map +1 -0
  82. package/dist/editor/lsp/testing/fakeLspProcess.js +132 -0
  83. package/dist/files.d.ts +63 -0
  84. package/dist/files.d.ts.map +1 -1
  85. package/dist/files.js +799 -1
  86. package/dist/gateway-readiness.d.ts +6 -0
  87. package/dist/gateway-readiness.d.ts.map +1 -0
  88. package/dist/gateway-readiness.js +624 -0
  89. package/dist/gateway-setup.d.ts +2 -0
  90. package/dist/gateway-setup.d.ts.map +1 -1
  91. package/dist/gateway-setup.js +275 -11
  92. package/dist/gitDelivery/actionSheetProjection.d.ts +30 -0
  93. package/dist/gitDelivery/actionSheetProjection.d.ts.map +1 -0
  94. package/dist/gitDelivery/actionSheetProjection.js +206 -0
  95. package/dist/gitDelivery/actionSheetRoutes.d.ts +29 -0
  96. package/dist/gitDelivery/actionSheetRoutes.d.ts.map +1 -0
  97. package/dist/gitDelivery/actionSheetRoutes.js +293 -0
  98. package/dist/gitDelivery/agentOperationsRoutes.d.ts +33 -0
  99. package/dist/gitDelivery/agentOperationsRoutes.d.ts.map +1 -0
  100. package/dist/gitDelivery/agentOperationsRoutes.js +405 -0
  101. package/dist/gitDelivery/commitRoutes.d.ts +23 -0
  102. package/dist/gitDelivery/commitRoutes.d.ts.map +1 -0
  103. package/dist/gitDelivery/commitRoutes.js +204 -0
  104. package/dist/gitDelivery/evidenceRoutes.d.ts +9 -0
  105. package/dist/gitDelivery/evidenceRoutes.d.ts.map +1 -0
  106. package/dist/gitDelivery/evidenceRoutes.js +101 -0
  107. package/dist/gitDelivery/execution.d.ts +38 -0
  108. package/dist/gitDelivery/execution.d.ts.map +1 -0
  109. package/dist/gitDelivery/execution.js +117 -0
  110. package/dist/gitDelivery/localMutationRoutes.d.ts +30 -0
  111. package/dist/gitDelivery/localMutationRoutes.d.ts.map +1 -0
  112. package/dist/gitDelivery/localMutationRoutes.js +165 -0
  113. package/dist/gitDelivery/mergeExecution.d.ts +63 -0
  114. package/dist/gitDelivery/mergeExecution.d.ts.map +1 -0
  115. package/dist/gitDelivery/mergeExecution.js +168 -0
  116. package/dist/gitDelivery/mergeRoutes.d.ts +12 -0
  117. package/dist/gitDelivery/mergeRoutes.d.ts.map +1 -0
  118. package/dist/gitDelivery/mergeRoutes.js +218 -0
  119. package/dist/gitDelivery/mutationEvidenceLedger.d.ts +23 -0
  120. package/dist/gitDelivery/mutationEvidenceLedger.d.ts.map +1 -0
  121. package/dist/gitDelivery/mutationEvidenceLedger.js +87 -0
  122. package/dist/gitDelivery/prExecution.d.ts +54 -0
  123. package/dist/gitDelivery/prExecution.d.ts.map +1 -0
  124. package/dist/gitDelivery/prExecution.js +192 -0
  125. package/dist/gitDelivery/prRoutes.d.ts +12 -0
  126. package/dist/gitDelivery/prRoutes.d.ts.map +1 -0
  127. package/dist/gitDelivery/prRoutes.js +256 -0
  128. package/dist/gitDelivery/pushExecution.d.ts +43 -0
  129. package/dist/gitDelivery/pushExecution.d.ts.map +1 -0
  130. package/dist/gitDelivery/pushExecution.js +124 -0
  131. package/dist/gitDelivery/pushRoutes.d.ts +12 -0
  132. package/dist/gitDelivery/pushRoutes.d.ts.map +1 -0
  133. package/dist/gitDelivery/pushRoutes.js +200 -0
  134. package/dist/gitDelivery/requestGuards.d.ts +15 -0
  135. package/dist/gitDelivery/requestGuards.d.ts.map +1 -0
  136. package/dist/gitDelivery/requestGuards.js +97 -0
  137. package/dist/gitDelivery/syncEvidence.d.ts +37 -0
  138. package/dist/gitDelivery/syncEvidence.d.ts.map +1 -0
  139. package/dist/gitDelivery/syncEvidence.js +85 -0
  140. package/dist/gitDelivery/syncExecution.d.ts +30 -0
  141. package/dist/gitDelivery/syncExecution.d.ts.map +1 -0
  142. package/dist/gitDelivery/syncExecution.js +266 -0
  143. package/dist/gitDelivery/syncRoutes.d.ts +13 -0
  144. package/dist/gitDelivery/syncRoutes.d.ts.map +1 -0
  145. package/dist/gitDelivery/syncRoutes.js +200 -0
  146. package/dist/gitPorcelainStatus.d.ts +15 -0
  147. package/dist/gitPorcelainStatus.d.ts.map +1 -0
  148. package/dist/gitPorcelainStatus.js +104 -0
  149. package/dist/gitRepositoryReads.d.ts +10 -0
  150. package/dist/gitRepositoryReads.d.ts.map +1 -0
  151. package/dist/gitRepositoryReads.js +314 -0
  152. package/dist/gitRepositoryRoutes.d.ts +7 -0
  153. package/dist/gitRepositoryRoutes.d.ts.map +1 -0
  154. package/dist/gitRepositoryRoutes.js +221 -0
  155. package/dist/gitRoutes.d.ts +66 -0
  156. package/dist/gitRoutes.d.ts.map +1 -0
  157. package/dist/gitRoutes.js +543 -0
  158. package/dist/governed-workflow.d.ts +2 -0
  159. package/dist/governed-workflow.d.ts.map +1 -1
  160. package/dist/governed-workflow.js +4 -0
  161. package/dist/grounded-qa-hybrid.d.ts.map +1 -1
  162. package/dist/grounded-qa-hybrid.js +2 -0
  163. package/dist/grounded-qa-multi-source.d.ts.map +1 -1
  164. package/dist/grounded-qa-multi-source.js +1 -0
  165. package/dist/grounded-qa.d.ts +11 -0
  166. package/dist/grounded-qa.d.ts.map +1 -1
  167. package/dist/grounded-qa.js +14 -4
  168. package/dist/headers.d.ts +4 -1
  169. package/dist/headers.d.ts.map +1 -1
  170. package/dist/headers.js +11 -4
  171. package/dist/index.d.ts +8 -1
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +9 -1
  174. package/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
  175. package/dist/local-knowledge-grounded-qa.js +11 -2
  176. package/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +1 -1
  177. package/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
  178. package/dist/qualityIntelligence/figmaSnapshotRoutes.js +1 -1
  179. package/dist/read-handlers.d.ts +5 -0
  180. package/dist/read-handlers.d.ts.map +1 -1
  181. package/dist/read-handlers.js +57 -1
  182. package/dist/routes.d.ts.map +1 -1
  183. package/dist/routes.js +260 -12
  184. package/dist/run-engine.d.ts.map +1 -1
  185. package/dist/run-engine.js +3 -0
  186. package/dist/run-handlers.d.ts +0 -1
  187. package/dist/run-handlers.d.ts.map +1 -1
  188. package/dist/run-handlers.js +64 -211
  189. package/dist/run-request.d.ts +11 -0
  190. package/dist/run-request.d.ts.map +1 -1
  191. package/dist/run-request.js +158 -10
  192. package/dist/runtime/capabilityDetector.d.ts +38 -0
  193. package/dist/runtime/capabilityDetector.d.ts.map +1 -0
  194. package/dist/runtime/capabilityDetector.js +443 -0
  195. package/dist/runtime/capabilityRoutes.d.ts +9 -0
  196. package/dist/runtime/capabilityRoutes.d.ts.map +1 -0
  197. package/dist/runtime/capabilityRoutes.js +45 -0
  198. package/dist/runtime/containerEngineDetector.d.ts +17 -0
  199. package/dist/runtime/containerEngineDetector.d.ts.map +1 -0
  200. package/dist/runtime/containerEngineDetector.js +222 -0
  201. package/dist/runtime/containerRoutes.d.ts +8 -0
  202. package/dist/runtime/containerRoutes.d.ts.map +1 -0
  203. package/dist/runtime/containerRoutes.js +207 -0
  204. package/dist/runtime/containerRunner-errors.d.ts +18 -0
  205. package/dist/runtime/containerRunner-errors.d.ts.map +1 -0
  206. package/dist/runtime/containerRunner-errors.js +42 -0
  207. package/dist/runtime/containerRunner-evidence.d.ts +24 -0
  208. package/dist/runtime/containerRunner-evidence.d.ts.map +1 -0
  209. package/dist/runtime/containerRunner-evidence.js +74 -0
  210. package/dist/runtime/containerRunner.d.ts +37 -0
  211. package/dist/runtime/containerRunner.d.ts.map +1 -0
  212. package/dist/runtime/containerRunner.js +443 -0
  213. package/dist/server.d.ts.map +1 -1
  214. package/dist/server.js +24 -4
  215. package/dist/store/db.d.ts.map +1 -1
  216. package/dist/store/db.js +2 -1
  217. package/dist/store/index.d.ts +1 -1
  218. package/dist/store/index.d.ts.map +1 -1
  219. package/dist/store/messages.d.ts +2 -1
  220. package/dist/store/messages.d.ts.map +1 -1
  221. package/dist/store/messages.js +46 -4
  222. package/dist/store/schema.d.ts +1 -1
  223. package/dist/store/schema.d.ts.map +1 -1
  224. package/dist/store/schema.js +68 -1
  225. package/dist/store/types.d.ts +3 -2
  226. package/dist/store/types.d.ts.map +1 -1
  227. package/dist/task-workspace/active-store.d.ts +21 -0
  228. package/dist/task-workspace/active-store.d.ts.map +1 -0
  229. package/dist/task-workspace/active-store.js +55 -0
  230. package/dist/task-workspace/authorization.d.ts +7 -0
  231. package/dist/task-workspace/authorization.d.ts.map +1 -0
  232. package/dist/task-workspace/authorization.js +54 -0
  233. package/dist/task-workspace/binding.d.ts +3 -0
  234. package/dist/task-workspace/binding.d.ts.map +1 -0
  235. package/dist/task-workspace/binding.js +22 -0
  236. package/dist/task-workspace/cleanup.d.ts +4 -0
  237. package/dist/task-workspace/cleanup.d.ts.map +1 -0
  238. package/dist/task-workspace/cleanup.js +428 -0
  239. package/dist/task-workspace/errors.d.ts +14 -0
  240. package/dist/task-workspace/errors.d.ts.map +1 -0
  241. package/dist/task-workspace/errors.js +81 -0
  242. package/dist/task-workspace/evidence.d.ts +32 -0
  243. package/dist/task-workspace/evidence.d.ts.map +1 -0
  244. package/dist/task-workspace/evidence.js +52 -0
  245. package/dist/task-workspace/field-safety.d.ts +3 -0
  246. package/dist/task-workspace/field-safety.d.ts.map +1 -0
  247. package/dist/task-workspace/field-safety.js +42 -0
  248. package/dist/task-workspace/health.d.ts +4 -0
  249. package/dist/task-workspace/health.d.ts.map +1 -0
  250. package/dist/task-workspace/health.js +163 -0
  251. package/dist/task-workspace/lifecycle.d.ts +3 -0
  252. package/dist/task-workspace/lifecycle.d.ts.map +1 -0
  253. package/dist/task-workspace/lifecycle.js +248 -0
  254. package/dist/task-workspace/locks.d.ts +13 -0
  255. package/dist/task-workspace/locks.d.ts.map +1 -0
  256. package/dist/task-workspace/locks.js +44 -0
  257. package/dist/task-workspace/managed-root.d.ts +7 -0
  258. package/dist/task-workspace/managed-root.d.ts.map +1 -0
  259. package/dist/task-workspace/managed-root.js +98 -0
  260. package/dist/task-workspace/mutex.d.ts +8 -0
  261. package/dist/task-workspace/mutex.d.ts.map +1 -0
  262. package/dist/task-workspace/mutex.js +82 -0
  263. package/dist/task-workspace/naming.d.ts +15 -0
  264. package/dist/task-workspace/naming.d.ts.map +1 -0
  265. package/dist/task-workspace/naming.js +0 -0
  266. package/dist/task-workspace/provisioning.d.ts +3 -0
  267. package/dist/task-workspace/provisioning.d.ts.map +1 -0
  268. package/dist/task-workspace/provisioning.js +528 -0
  269. package/dist/task-workspace/reconciliation.d.ts +15 -0
  270. package/dist/task-workspace/reconciliation.d.ts.map +1 -0
  271. package/dist/task-workspace/reconciliation.js +274 -0
  272. package/dist/task-workspace/repair.d.ts +3 -0
  273. package/dist/task-workspace/repair.d.ts.map +1 -0
  274. package/dist/task-workspace/repair.js +286 -0
  275. package/dist/task-workspace/routes.d.ts +19 -0
  276. package/dist/task-workspace/routes.d.ts.map +1 -0
  277. package/dist/task-workspace/routes.js +481 -0
  278. package/dist/task-workspace/store.d.ts +12 -0
  279. package/dist/task-workspace/store.d.ts.map +1 -0
  280. package/dist/task-workspace/store.js +128 -0
  281. package/dist/task-workspace/types.d.ts +170 -0
  282. package/dist/task-workspace/types.d.ts.map +1 -0
  283. package/dist/task-workspace/types.js +5 -0
  284. package/dist/voice-action-governance.d.ts +23 -0
  285. package/dist/voice-action-governance.d.ts.map +1 -0
  286. package/dist/voice-action-governance.js +126 -0
  287. package/dist/voice-handlers.d.ts +6 -0
  288. package/dist/voice-handlers.d.ts.map +1 -0
  289. package/dist/voice-handlers.js +570 -0
  290. package/dist/voice-realtime-grounded-tool.d.ts +31 -0
  291. package/dist/voice-realtime-grounded-tool.d.ts.map +1 -0
  292. package/dist/voice-realtime-grounded-tool.js +322 -0
  293. package/dist/voice-realtime.d.ts +69 -0
  294. package/dist/voice-realtime.d.ts.map +1 -0
  295. package/dist/voice-realtime.js +787 -0
  296. package/dist/workspace-state-handlers.d.ts +5 -0
  297. package/dist/workspace-state-handlers.d.ts.map +1 -0
  298. package/dist/workspace-state-handlers.js +106 -0
  299. package/package.json +20 -19
  300. package/dist/grounded-handoff.d.ts +0 -4
  301. package/dist/grounded-handoff.d.ts.map +0 -1
  302. package/dist/grounded-handoff.js +0 -445
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-runner.d.ts","sourceRoot":"","sources":["../src/command-runner.ts"],"names":[],"mappings":"AAaA,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EAIL,KAAK,kBAAkB,EAGvB,KAAK,kBAAkB,EAEvB,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAMlE,OAAO,KAAK,EAAW,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAYzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAE5E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAC7D,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC5E,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,yBAAyB,KAAK,MAAM,IAAI,CAAC;IACxE,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;CAC3C;AAsYD,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,2BAA2B,GAChC,oBAAoB,CAEtB"}
@@ -0,0 +1,348 @@
1
+ // Issue #1387 — controlled test/build/run command executor. A closed catalog of vetted tasks is
2
+ // discovered from the project's package.json scripts; a run names a catalog task id (never free-form
3
+ // argv) and is executed through the SINGLE governed spawn boundary, keiko-tools `runCommand`
4
+ // (ADR-0043 D2): no shell, name-allowlisted env, ephemeral HOME, workspace-contained cwd, output
5
+ // byte cap with truncation, timeout SIGTERM→SIGKILL, and AbortController cancellation. Nothing new is
6
+ // invented here — the executor allowlist (COMMAND_TASK_RULES) and the discovery source are the only
7
+ // additions over the proven ADR-0018 terminal machinery this module mirrors.
8
+ //
9
+ // Reuse (UNCHANGED): runCommand + DEFAULT_SANDBOX_POLICY (@oscharko-dev/keiko-tools), readWorkspaceFile
10
+ // + path containment (@oscharko-dev/keiko-workspace), EvidenceStore (@oscharko-dev/keiko-evidence),
11
+ // ProjectStore (./store). New (bounded composition): CommandRunnerManager + content-free run evidence.
12
+ import { randomUUID } from "node:crypto";
13
+ import { CommandCancelledError, CommandDeniedError, CommandTimeoutError, DEFAULT_SANDBOX_POLICY, runCommand, } from "@oscharko-dev/keiko-tools";
14
+ import { nodeSpawnFn } from "@oscharko-dev/keiko-tools/internal/exec";
15
+ import { readWorkspaceFile } from "@oscharko-dev/keiko-workspace";
16
+ import { nodeWorkspaceFs } from "@oscharko-dev/keiko-workspace/internal/fs";
17
+ import { COMMAND_RUNNER_SCHEMA_VERSION, COMMAND_TASK_RULES, } from "@oscharko-dev/keiko-contracts";
18
+ import { CommandRunnerError } from "./command-runner-errors.js";
19
+ import { appendCommandRunEvidence, buildCommandRunEvidenceEntry, } from "./command-runner-evidence.js";
20
+ const MAX_CONCURRENT_RUNS = 8;
21
+ const MIN_TIMEOUT_MS = 1_000;
22
+ const PACKAGE_READ_BYTES = 262_144;
23
+ const MAX_SCRIPT_NAME_LENGTH = 120;
24
+ // First char must not be `-` (flag injection) and only conservative script-name characters are
25
+ // allowed, so a discovered name can never smuggle a flag or shell metacharacter into `npm run`.
26
+ const SAFE_SCRIPT_NAME = /^[A-Za-z0-9][A-Za-z0-9._:-]*$/;
27
+ // ─── Discovery (package.json scripts → vetted task catalog) ──────────────────────
28
+ function projectFor(store, projectId) {
29
+ for (const project of store.listProjects()) {
30
+ if (project.path === projectId) {
31
+ return project;
32
+ }
33
+ }
34
+ return undefined;
35
+ }
36
+ function projectRootOrThrow(project) {
37
+ try {
38
+ return nodeWorkspaceFs.realPath(project.path);
39
+ }
40
+ catch {
41
+ throw new CommandRunnerError("PROJECT_NOT_FOUND", "Project root path could not be resolved.");
42
+ }
43
+ }
44
+ function buildWorkspaceInfo(projectRoot) {
45
+ return {
46
+ root: projectRoot,
47
+ name: undefined,
48
+ version: undefined,
49
+ testFramework: "unknown",
50
+ sourceDirs: [],
51
+ testDirs: [],
52
+ languages: [],
53
+ ignoreLines: [],
54
+ };
55
+ }
56
+ function parseJsonObject(text) {
57
+ try {
58
+ const parsed = JSON.parse(text);
59
+ return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)
60
+ ? parsed
61
+ : undefined;
62
+ }
63
+ catch {
64
+ return undefined;
65
+ }
66
+ }
67
+ function readPackageScripts(workspace, fs) {
68
+ let record;
69
+ try {
70
+ record = parseJsonObject(readWorkspaceFile(workspace, "package.json", { maxBytes: PACKAGE_READ_BYTES }, fs).text);
71
+ }
72
+ catch {
73
+ return [];
74
+ }
75
+ const scripts = record?.scripts;
76
+ if (typeof scripts !== "object" || scripts === null || Array.isArray(scripts)) {
77
+ return [];
78
+ }
79
+ return Object.entries(scripts)
80
+ .filter(([, value]) => typeof value === "string")
81
+ .map(([name]) => name)
82
+ .filter((name) => name.length > 0 && name.length <= MAX_SCRIPT_NAME_LENGTH)
83
+ .sort();
84
+ }
85
+ function classifyScriptKind(name) {
86
+ const lower = name.toLowerCase();
87
+ if (lower === "test" || lower.startsWith("test:") || lower.startsWith("test-")) {
88
+ return "test";
89
+ }
90
+ if (lower === "build" || lower.startsWith("build:") || lower.startsWith("build-")) {
91
+ return "build";
92
+ }
93
+ return "run";
94
+ }
95
+ function discoverTasks(workspace, fs) {
96
+ const tasks = [];
97
+ for (const name of readPackageScripts(workspace, fs)) {
98
+ if (!SAFE_SCRIPT_NAME.test(name)) {
99
+ continue;
100
+ }
101
+ tasks.push({
102
+ id: `npm-script:${name}`,
103
+ kind: classifyScriptKind(name),
104
+ label: `npm run ${name}`,
105
+ executable: "npm",
106
+ args: ["run", name],
107
+ source: "package-json-script",
108
+ });
109
+ }
110
+ return tasks;
111
+ }
112
+ function outcomeFromResult(result) {
113
+ // runCommand resolves only on a real process exit (timeout/cancel reject); a clean exit can still
114
+ // be truncated. exitCode null here means an output-flood kill — not a clean exit, so non-zero-exit.
115
+ const failureReason = result.exitCode === 0 ? "none" : "non-zero-exit";
116
+ return {
117
+ exitCode: result.exitCode,
118
+ durationMs: result.durationMs,
119
+ truncated: result.truncated,
120
+ timedOut: false,
121
+ failureReason,
122
+ eventKind: "run-completed",
123
+ stdout: result.stdout,
124
+ stderr: result.stderr,
125
+ };
126
+ }
127
+ function deniedFailureReason(error) {
128
+ if (error instanceof CommandDeniedError && !error.message.includes("not found on PATH")) {
129
+ return "denied";
130
+ }
131
+ return "spawn-error";
132
+ }
133
+ function outcomeFromError(error, cancelledByUser, durationMs) {
134
+ const base = { exitCode: null, durationMs, truncated: false, stdout: "", stderr: "" };
135
+ if (error instanceof CommandCancelledError || cancelledByUser) {
136
+ return { ...base, timedOut: false, failureReason: "cancelled", eventKind: "run-cancelled" };
137
+ }
138
+ if (error instanceof CommandTimeoutError) {
139
+ // ADR-0018 D7 — a timeout is a "completed with timedOut=true" outcome, not an infra failure.
140
+ return { ...base, timedOut: true, failureReason: "timed-out", eventKind: "run-completed" };
141
+ }
142
+ return {
143
+ ...base,
144
+ timedOut: false,
145
+ failureReason: deniedFailureReason(error),
146
+ eventKind: "run-failed",
147
+ };
148
+ }
149
+ function clampTimeout(requested, ceiling) {
150
+ if (requested === undefined || !Number.isFinite(requested)) {
151
+ return ceiling;
152
+ }
153
+ const rounded = Math.round(requested);
154
+ if (rounded <= MIN_TIMEOUT_MS)
155
+ return MIN_TIMEOUT_MS;
156
+ if (rounded >= ceiling)
157
+ return ceiling;
158
+ return rounded;
159
+ }
160
+ function requestIdPayload(input) {
161
+ return input.requestId === undefined ? {} : { requestId: input.requestId };
162
+ }
163
+ class CommandRunnerManagerImpl {
164
+ store;
165
+ evidenceStore;
166
+ policy;
167
+ processEnv;
168
+ redactor;
169
+ runDeps;
170
+ now;
171
+ runs = new Map();
172
+ subscribers = new Set();
173
+ constructor(opts) {
174
+ this.store = opts.store;
175
+ this.evidenceStore = opts.evidenceStore;
176
+ this.policy = opts.policy ?? DEFAULT_SANDBOX_POLICY;
177
+ this.processEnv = opts.processEnv ?? process.env;
178
+ this.redactor = opts.redactor ?? ((input) => input);
179
+ this.runDeps = opts.runDeps ?? {};
180
+ this.now = opts.now ?? Date.now;
181
+ }
182
+ inFlightCount = () => this.runs.size;
183
+ subscribe = (listener) => {
184
+ this.subscribers.add(listener);
185
+ return () => {
186
+ this.subscribers.delete(listener);
187
+ };
188
+ };
189
+ abort = (runId) => {
190
+ const entry = this.runs.get(runId);
191
+ if (entry === undefined)
192
+ return false;
193
+ entry.cancelledByUser = true;
194
+ entry.controller.abort();
195
+ return true;
196
+ };
197
+ discover = (projectId) => {
198
+ const workspace = this.resolveWorkspace(projectId);
199
+ return {
200
+ schemaVersion: COMMAND_RUNNER_SCHEMA_VERSION,
201
+ projectId,
202
+ tasks: discoverTasks(workspace, this.fs()),
203
+ };
204
+ };
205
+ execute = async (input) => {
206
+ const workspace = this.resolveWorkspace(input.projectId);
207
+ // Re-discover the catalog at execute time on purpose: the requested taskId is untrusted, so the
208
+ // server re-derives the vetted task from the CURRENT package.json rather than trusting a catalog
209
+ // the client fetched earlier (which may be stale or forged). The extra manifest read is a
210
+ // deliberate security re-validation on a low-frequency, user-triggered path, not a hot loop.
211
+ const task = discoverTasks(workspace, this.fs()).find((entry) => entry.id === input.taskId);
212
+ if (task === undefined) {
213
+ throw new CommandRunnerError("TASK_NOT_FOUND", "Task is not in the discovered catalog.");
214
+ }
215
+ if (this.runs.size >= MAX_CONCURRENT_RUNS) {
216
+ throw new CommandRunnerError("RUN_LIMIT_EXCEEDED", "Too many in-flight command runs.");
217
+ }
218
+ return this.runExecution(task, workspace, input);
219
+ };
220
+ fs() {
221
+ return this.runDeps.fs ?? nodeWorkspaceFs;
222
+ }
223
+ resolveWorkspace(projectId) {
224
+ const project = projectFor(this.store, projectId);
225
+ if (project === undefined) {
226
+ throw new CommandRunnerError("PROJECT_NOT_FOUND", "Project not found.");
227
+ }
228
+ return buildWorkspaceInfo(projectRootOrThrow(project));
229
+ }
230
+ buildRunDeps(workspace) {
231
+ return {
232
+ workspace,
233
+ policy: this.policy,
234
+ commandRules: COMMAND_TASK_RULES,
235
+ spawn: this.runDeps.spawn ?? nodeSpawnFn,
236
+ processEnv: this.processEnv,
237
+ now: this.runDeps.now ?? this.now,
238
+ ...(this.runDeps.resolveExecutable === undefined
239
+ ? {}
240
+ : { resolveExecutable: this.runDeps.resolveExecutable }),
241
+ ...(this.runDeps.fs === undefined ? {} : { fs: this.runDeps.fs }),
242
+ ...(this.runDeps.home === undefined ? {} : { home: this.runDeps.home }),
243
+ };
244
+ }
245
+ async runExecution(task, workspace, input) {
246
+ const runId = randomUUID();
247
+ const controller = new AbortController();
248
+ const entry = { controller, cancelledByUser: false };
249
+ this.runs.set(runId, entry);
250
+ const startedAt = this.now();
251
+ this.emit({
252
+ kind: "run-started",
253
+ runId,
254
+ payload: { taskId: task.id, kind: task.kind, startedAt, ...requestIdPayload(input) },
255
+ });
256
+ try {
257
+ return await this.invoke(runId, task, workspace, input, entry, startedAt);
258
+ }
259
+ finally {
260
+ this.runs.delete(runId);
261
+ }
262
+ }
263
+ async invoke(runId, task, workspace, input, entry, startedAt) {
264
+ const deps = this.buildRunDeps(workspace);
265
+ const timeoutMs = clampTimeout(input.timeoutMs, this.policy.defaultTimeoutMs);
266
+ try {
267
+ const result = await runCommand({
268
+ command: task.executable,
269
+ args: task.args,
270
+ cwd: undefined,
271
+ timeoutMs,
272
+ signal: entry.controller.signal,
273
+ }, deps);
274
+ return this.finalize(runId, task, input, outcomeFromResult(result), startedAt);
275
+ }
276
+ catch (error) {
277
+ const outcome = outcomeFromError(error, entry.cancelledByUser, this.now() - startedAt);
278
+ return this.finalize(runId, task, input, outcome, startedAt);
279
+ }
280
+ }
281
+ finalize(runId, task, input, outcome, startedAt) {
282
+ this.persist(runId, task, input, outcome, startedAt);
283
+ this.emit({
284
+ kind: outcome.eventKind,
285
+ runId,
286
+ payload: {
287
+ exitCode: outcome.exitCode,
288
+ durationMs: outcome.durationMs,
289
+ truncated: outcome.truncated,
290
+ timedOut: outcome.timedOut,
291
+ failureReason: outcome.failureReason,
292
+ ...requestIdPayload(input),
293
+ },
294
+ });
295
+ return {
296
+ schemaVersion: COMMAND_RUNNER_SCHEMA_VERSION,
297
+ runId,
298
+ taskId: task.id,
299
+ kind: task.kind,
300
+ exitCode: outcome.exitCode,
301
+ durationMs: outcome.durationMs,
302
+ truncated: outcome.truncated,
303
+ timedOut: outcome.timedOut,
304
+ failureReason: outcome.failureReason,
305
+ stdout: outcome.stdout,
306
+ stderr: outcome.stderr,
307
+ };
308
+ }
309
+ persist(runId, task, input, outcome, startedAt) {
310
+ if (this.evidenceStore === undefined)
311
+ return;
312
+ try {
313
+ const evidence = buildCommandRunEvidenceEntry({
314
+ runId,
315
+ projectId: input.projectId,
316
+ taskId: task.id,
317
+ kind: task.kind,
318
+ executable: task.executable,
319
+ argCount: task.args.length,
320
+ exitCode: outcome.exitCode,
321
+ durationMs: outcome.durationMs,
322
+ timedOut: outcome.timedOut,
323
+ truncated: outcome.truncated,
324
+ failureReason: outcome.failureReason,
325
+ stdoutBytes: Buffer.byteLength(outcome.stdout, "utf8"),
326
+ stderrBytes: Buffer.byteLength(outcome.stderr, "utf8"),
327
+ startedAt,
328
+ });
329
+ appendCommandRunEvidence(this.evidenceStore, evidence, this.redactor);
330
+ }
331
+ catch {
332
+ // Evidence is best-effort process-evidence; a write hiccup must not corrupt a real run result.
333
+ }
334
+ }
335
+ emit(event) {
336
+ for (const listener of [...this.subscribers]) {
337
+ try {
338
+ listener(event);
339
+ }
340
+ catch {
341
+ // A subscriber throwing must not stop fan-out (matches the terminal/browser tool pattern).
342
+ }
343
+ }
344
+ }
345
+ }
346
+ export function createCommandRunnerManager(opts) {
347
+ return new CommandRunnerManagerImpl(opts);
348
+ }
@@ -1,8 +1,8 @@
1
- import type { ConversationDocumentContextWire } from "@oscharko-dev/keiko-contracts";
1
+ import type { ConversationDocumentContextWire, DiscussionMode } from "@oscharko-dev/keiko-contracts";
2
2
  export declare const CONVERSATION_USER_BLOCK_HEADER = "User message:";
3
3
  export declare const CONVERSATION_CONTEXT_BLOCK_HEADER = "Attached document context:";
4
4
  export declare const CONVERSATION_MEMORY_BLOCK_HEADER = "Included memory context:";
5
5
  export declare const CONVERSATION_DOCUMENT_SEPARATOR = "---";
6
6
  export declare const CONVERSATION_SYSTEM_PROMPT: string;
7
- export declare function composeConversationPrompt(draft: string, documentContext: readonly ConversationDocumentContextWire[], memoryContextText?: string): string;
7
+ export declare function composeConversationPrompt(draft: string, documentContext: readonly ConversationDocumentContextWire[], memoryContextText?: string, discussionMode?: DiscussionMode): string;
8
8
  //# sourceMappingURL=conversation-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-prompt.d.ts","sourceRoot":"","sources":["../src/conversation-prompt.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAErF,eAAO,MAAM,8BAA8B,kBAAkB,CAAC;AAC9D,eAAO,MAAM,iCAAiC,+BAA+B,CAAC;AAC9E,eAAO,MAAM,gCAAgC,6BAA6B,CAAC;AAC3E,eAAO,MAAM,+BAA+B,QAAQ,CAAC;AACrD,eAAO,MAAM,0BAA0B,QAK0G,CAAC;AAUlJ,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,SAAS,+BAA+B,EAAE,EAC3D,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,CAgBR"}
1
+ {"version":3,"file":"conversation-prompt.d.ts","sourceRoot":"","sources":["../src/conversation-prompt.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,+BAA+B,EAC/B,cAAc,EACf,MAAM,+BAA+B,CAAC;AAIvC,eAAO,MAAM,8BAA8B,kBAAkB,CAAC;AAC9D,eAAO,MAAM,iCAAiC,+BAA+B,CAAC;AAC9E,eAAO,MAAM,gCAAgC,6BAA6B,CAAC;AAC3E,eAAO,MAAM,+BAA+B,QAAQ,CAAC;AACrD,eAAO,MAAM,0BAA0B,QAK0G,CAAC;AAwClJ,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,SAAS,+BAA+B,EAAE,EAC3D,iBAAiB,CAAC,EAAE,MAAM,EAC1B,cAAc,CAAC,EAAE,cAAc,GAC9B,MAAM,CAMR"}
@@ -4,6 +4,7 @@
4
4
  // labeled blocks separated by a fixed structural separator. The block headers and separator
5
5
  // are exported so the test suite and the gateway can assert the separation contract directly.
6
6
  // No IO, no redaction (the extractor already redacted), no error throwing.
7
+ import { composeDiscussionDirectiveBlock } from "./discussion-prompt.js";
7
8
  export const CONVERSATION_USER_BLOCK_HEADER = "User message:";
8
9
  export const CONVERSATION_CONTEXT_BLOCK_HEADER = "Attached document context:";
9
10
  export const CONVERSATION_MEMORY_BLOCK_HEADER = "Included memory context:";
@@ -19,7 +20,10 @@ function renderDocumentBlock(doc) {
19
20
  const marker = doc.truncated && doc.truncationMarker !== undefined ? `\n${doc.truncationMarker}` : "";
20
21
  return `${header}\n${doc.text}${marker}\n${CONVERSATION_DOCUMENT_SEPARATOR}`;
21
22
  }
22
- export function composeConversationPrompt(draft, documentContext, memoryContextText) {
23
+ // Composes the user-message body: the labeled user block followed by the optional memory and
24
+ // document-context blocks, in their fixed order. Returns the bare draft when neither memory nor
25
+ // document context is present (the legacy single-string form).
26
+ function composeUserMessageBody(draft, documentContext, memoryContextText) {
23
27
  if (documentContext.length === 0 &&
24
28
  (memoryContextText === undefined || memoryContextText.length === 0)) {
25
29
  return draft;
@@ -34,3 +38,15 @@ export function composeConversationPrompt(draft, documentContext, memoryContextT
34
38
  }
35
39
  return blocks.join("\n\n");
36
40
  }
41
+ // Issue #502 — the `discussionMode` PARAMETER is appended last in the signature (for backward-compat:
42
+ // when it is omitted the return value is byte-identical to the pre-#502 composer). The rendered
43
+ // directive BLOCK, however, is prepended BEFORE the user-message body when a mode is present — see the
44
+ // return below. The block (content-free templates, see discussion-prompt.ts) is a labeled section
45
+ // inserted between the system prompt and the user message; `CONVERSATION_SYSTEM_PROMPT` is never touched.
46
+ export function composeConversationPrompt(draft, documentContext, memoryContextText, discussionMode) {
47
+ const body = composeUserMessageBody(draft, documentContext, memoryContextText);
48
+ if (discussionMode === undefined) {
49
+ return body;
50
+ }
51
+ return `${composeDiscussionDirectiveBlock(discussionMode)}\n\n${body}`;
52
+ }
package/dist/csp.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"csp.d.ts","sourceRoot":"","sources":["../src/csp.ts"],"names":[],"mappings":"AAoCA,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAgB7F;AAKD,wBAAgB,cAAc,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAsBtE"}
1
+ {"version":3,"file":"csp.d.ts","sourceRoot":"","sources":["../src/csp.ts"],"names":[],"mappings":"AAoCA,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAgB7F;AAKD,wBAAgB,cAAc,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAyBtE"}
package/dist/csp.js CHANGED
@@ -57,6 +57,9 @@ export function buildCspHeader(scriptHashes) {
57
57
  `script-src ${scriptSrc}`,
58
58
  "style-src 'self' 'unsafe-inline'",
59
59
  "img-src 'self' data:",
60
+ // Generated assistant speech is played from a per-turn blob: object URL in the browser.
61
+ // Keep media playback local to same-origin/static assets and ephemeral object URLs only.
62
+ "media-src 'self' blob:",
60
63
  "connect-src 'self'",
61
64
  "font-src 'self'",
62
65
  // `manifest-src 'self'` is required for the PWA manifest at /manifest.webmanifest to load
package/dist/deps.d.ts CHANGED
@@ -5,13 +5,18 @@ import type { EvidenceStore } from "@oscharko-dev/keiko-evidence";
5
5
  import type { RunRegistry } from "./runs.js";
6
6
  import { type UiStore } from "./store/index.js";
7
7
  import { type TerminalExecutionManager } from "./terminal.js";
8
+ import { type CommandRunnerManager } from "./command-runner.js";
9
+ import { type ContainerRunnerManager } from "./runtime/containerRunner.js";
8
10
  import { type BrowserSessionManager } from "@oscharko-dev/keiko-tools";
9
11
  import { type MemoryVaultStore } from "@oscharko-dev/keiko-memory-vault";
10
12
  import { type ConsolidationJobRegistry } from "./memory-consolidation-registry.js";
11
- import type { OpenAIEmbeddingBatchOutcome, OpenAIEmbeddingBatchRequest, OpenAIEmbeddingOutcome, OpenAIEmbeddingRequest } from "@oscharko-dev/keiko-model-gateway";
13
+ import type { OpenAIEmbeddingBatchOutcome, OpenAIEmbeddingBatchRequest, OpenAIEmbeddingOutcome, OpenAIEmbeddingRequest, RealtimeNegotiationOutcome, RealtimeNegotiationRequest, SpeechToTextOutcome, SpeechToTextRequest, TextToSpeechOutcome, TextToSpeechRequest, TextToSpeechStreamOutcome } from "@oscharko-dev/keiko-model-gateway";
12
14
  import { type RelationshipHandlerDeps } from "./relationship-handlers.js";
15
+ import type { WorkspaceCleanupService, WorkspaceHealthService, WorkspaceLifecycleService, WorkspaceProvisioningService, WorkspaceReconciliationService, WorkspaceRepairService } from "./task-workspace/types.js";
13
16
  import { type GroundingLimits } from "@oscharko-dev/keiko-contracts/bff-wire";
14
17
  import type { EditorLanguageRouteOptions } from "./editor/languageRoutes.js";
18
+ import type { RuntimeCapabilityRouteOptions } from "./runtime/capabilityRoutes.js";
19
+ import type { GitRouteOptions } from "./gitRoutes.js";
15
20
  import type { KnowledgeStoreKeyProvider } from "@oscharko-dev/keiko-local-knowledge";
16
21
  import { type QiRetentionAuditSink } from "./qualityIntelligence/retentionEnforcement.js";
17
22
  export type Redactor = (value: unknown) => unknown;
@@ -44,20 +49,36 @@ export interface UiHandlerDeps {
44
49
  readonly uiDbPath?: string | undefined;
45
50
  readonly preferredProjectPath?: string | undefined;
46
51
  readonly terminal?: TerminalExecutionManager | undefined;
52
+ readonly commandRunner?: CommandRunnerManager | undefined;
53
+ readonly containerRunner?: ContainerRunnerManager | undefined;
47
54
  readonly browser?: BrowserSessionManager | undefined;
48
55
  readonly memoryVault?: MemoryVaultStore | undefined;
49
56
  readonly consolidationJobs?: ConsolidationJobRegistry | undefined;
50
57
  readonly gatewayConfig?: RuntimeGatewayConfig | undefined;
51
58
  readonly gatewaySetupTester?: ((config: GatewayConfig, candidateModelIds: readonly string[]) => Promise<readonly string[]>) | undefined;
52
59
  readonly gatewayModelDiscovery?: ((baseUrl: string, apiKey: string, apiKeyHeaderName?: string, egress?: GatewayEgressConfig) => Promise<GatewayModelDiscoveryOutput>) | undefined;
60
+ readonly gatewayReadinessFetch?: typeof fetch | undefined;
53
61
  readonly figmaCredentialTester?: ((accessToken: string, egress?: GatewayEgressConfig) => Promise<void>) | undefined;
54
62
  readonly editorLanguageRouteOptions?: EditorLanguageRouteOptions | undefined;
63
+ readonly runtimeCapabilityRouteOptions?: RuntimeCapabilityRouteOptions | undefined;
64
+ readonly gitRouteOptions?: GitRouteOptions | undefined;
55
65
  readonly localKnowledgeEmbeddingRequest?: ((request: OpenAIEmbeddingRequest) => Promise<OpenAIEmbeddingOutcome>) | undefined;
56
66
  readonly localKnowledgeEmbeddingBatchRequest?: ((request: OpenAIEmbeddingBatchRequest) => Promise<OpenAIEmbeddingBatchOutcome>) | undefined;
57
67
  readonly relationship?: RelationshipHandlerDeps | undefined;
68
+ readonly workspaceProvisioning?: WorkspaceProvisioningService | undefined;
69
+ readonly managedTaskWorkspaceRoot?: string | undefined;
70
+ readonly workspaceLifecycle?: WorkspaceLifecycleService | undefined;
71
+ readonly workspaceReconciliation?: WorkspaceReconciliationService | undefined;
72
+ readonly workspaceRepair?: WorkspaceRepairService | undefined;
73
+ readonly workspaceHealth?: WorkspaceHealthService | undefined;
74
+ readonly workspaceCleanup?: WorkspaceCleanupService | undefined;
58
75
  readonly evidenceDir?: string | undefined;
59
76
  readonly localKnowledgeKeyProvider?: KnowledgeStoreKeyProvider | undefined;
60
77
  readonly contextProfile?: ContextProfile | undefined;
78
+ readonly voiceTranscriptionRequest?: ((request: SpeechToTextRequest) => Promise<SpeechToTextOutcome>) | undefined;
79
+ readonly voiceSpeechRequest?: ((request: TextToSpeechRequest) => Promise<TextToSpeechOutcome>) | undefined;
80
+ readonly voiceSpeechStreamRequest?: ((request: TextToSpeechRequest) => Promise<TextToSpeechStreamOutcome>) | undefined;
81
+ readonly voiceRealtimeNegotiationRequest?: ((request: RealtimeNegotiationRequest) => Promise<RealtimeNegotiationOutcome>) | undefined;
61
82
  }
62
83
  export interface BuildHandlerDepsOptions {
63
84
  readonly configPath: string | undefined;
@@ -67,6 +88,12 @@ export interface BuildHandlerDepsOptions {
67
88
  readonly modelPortFactory?: ModelPortFactory | undefined;
68
89
  readonly uiDbPath?: string | undefined;
69
90
  readonly store?: UiStore | undefined;
91
+ readonly workspaceProvisioning?: WorkspaceProvisioningService | undefined;
92
+ readonly workspaceLifecycle?: WorkspaceLifecycleService | undefined;
93
+ readonly workspaceReconciliation?: WorkspaceReconciliationService | undefined;
94
+ readonly workspaceRepair?: WorkspaceRepairService | undefined;
95
+ readonly workspaceHealth?: WorkspaceHealthService | undefined;
96
+ readonly workspaceCleanup?: WorkspaceCleanupService | undefined;
70
97
  readonly initialProjectPath?: string | undefined;
71
98
  readonly gatewaySetupTester?: ((config: GatewayConfig, candidateModelIds: readonly string[]) => Promise<readonly string[]>) | undefined;
72
99
  readonly gatewayModelDiscovery?: ((baseUrl: string, apiKey: string, apiKeyHeaderName?: string, egress?: GatewayEgressConfig) => Promise<GatewayModelDiscoveryOutput>) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"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"}