@oscharko-dev/keiko-server 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/assistant-response.d.ts +6 -0
  3. package/dist/assistant-response.d.ts.map +1 -0
  4. package/dist/assistant-response.js +12 -0
  5. package/dist/browser.d.ts +11 -0
  6. package/dist/browser.d.ts.map +1 -0
  7. package/dist/browser.js +245 -0
  8. package/dist/chat-handlers.d.ts +48 -0
  9. package/dist/chat-handlers.d.ts.map +1 -0
  10. package/dist/chat-handlers.js +821 -0
  11. package/dist/chat-stream-handlers.d.ts +4 -0
  12. package/dist/chat-stream-handlers.d.ts.map +1 -0
  13. package/dist/chat-stream-handlers.js +136 -0
  14. package/dist/conversation-prompt.d.ts +8 -0
  15. package/dist/conversation-prompt.d.ts.map +1 -0
  16. package/dist/conversation-prompt.js +36 -0
  17. package/dist/conversation-validation.d.ts +26 -0
  18. package/dist/conversation-validation.d.ts.map +1 -0
  19. package/dist/conversation-validation.js +125 -0
  20. package/dist/credentialPersistence.d.ts +23 -0
  21. package/dist/credentialPersistence.d.ts.map +1 -0
  22. package/dist/credentialPersistence.js +93 -0
  23. package/dist/credentialVault.d.ts +30 -0
  24. package/dist/credentialVault.d.ts.map +1 -0
  25. package/dist/credentialVault.js +206 -0
  26. package/dist/csp.d.ts +3 -0
  27. package/dist/csp.d.ts.map +1 -0
  28. package/dist/csp.js +75 -0
  29. package/dist/deps.d.ts +78 -0
  30. package/dist/deps.d.ts.map +1 -0
  31. package/dist/deps.js +457 -0
  32. package/dist/editor/agentRoutes.d.ts +7 -0
  33. package/dist/editor/agentRoutes.d.ts.map +1 -0
  34. package/dist/editor/agentRoutes.js +197 -0
  35. package/dist/editor/assuredGateRunner.d.ts +36 -0
  36. package/dist/editor/assuredGateRunner.d.ts.map +1 -0
  37. package/dist/editor/assuredGateRunner.js +100 -0
  38. package/dist/editor/assuredPreFilter.d.ts +34 -0
  39. package/dist/editor/assuredPreFilter.d.ts.map +1 -0
  40. package/dist/editor/assuredPreFilter.js +134 -0
  41. package/dist/editor/assuredPreFilterRunner.d.ts +31 -0
  42. package/dist/editor/assuredPreFilterRunner.d.ts.map +1 -0
  43. package/dist/editor/assuredPreFilterRunner.js +312 -0
  44. package/dist/editor/builtinLanguageProviders.d.ts +6 -0
  45. package/dist/editor/builtinLanguageProviders.d.ts.map +1 -0
  46. package/dist/editor/builtinLanguageProviders.js +221 -0
  47. package/dist/editor/codingContext.d.ts +12 -0
  48. package/dist/editor/codingContext.d.ts.map +1 -0
  49. package/dist/editor/codingContext.js +121 -0
  50. package/dist/editor/codingContextEvidence.d.ts +7 -0
  51. package/dist/editor/codingContextEvidence.d.ts.map +1 -0
  52. package/dist/editor/codingContextEvidence.js +52 -0
  53. package/dist/editor/codingContextProviders.d.ts +36 -0
  54. package/dist/editor/codingContextProviders.d.ts.map +1 -0
  55. package/dist/editor/codingContextProviders.js +348 -0
  56. package/dist/editor/completionModelEvidence.d.ts +16 -0
  57. package/dist/editor/completionModelEvidence.d.ts.map +1 -0
  58. package/dist/editor/completionModelEvidence.js +50 -0
  59. package/dist/editor/completionRoutes.d.ts +37 -0
  60. package/dist/editor/completionRoutes.d.ts.map +1 -0
  61. package/dist/editor/completionRoutes.js +411 -0
  62. package/dist/editor/contextRoutes.d.ts +6 -0
  63. package/dist/editor/contextRoutes.d.ts.map +1 -0
  64. package/dist/editor/contextRoutes.js +411 -0
  65. package/dist/editor/disposableAssuredExecution.d.ts +22 -0
  66. package/dist/editor/disposableAssuredExecution.d.ts.map +1 -0
  67. package/dist/editor/disposableAssuredExecution.js +57 -0
  68. package/dist/editor/editorCompletionModel.d.ts +47 -0
  69. package/dist/editor/editorCompletionModel.d.ts.map +1 -0
  70. package/dist/editor/editorCompletionModel.js +156 -0
  71. package/dist/editor/editorInlineCompletionModel.d.ts +34 -0
  72. package/dist/editor/editorInlineCompletionModel.d.ts.map +1 -0
  73. package/dist/editor/editorInlineCompletionModel.js +112 -0
  74. package/dist/editor/editorModelTokenBudget.d.ts +46 -0
  75. package/dist/editor/editorModelTokenBudget.d.ts.map +1 -0
  76. package/dist/editor/editorModelTokenBudget.js +121 -0
  77. package/dist/editor/inlineCompletionRateLimiter.d.ts +19 -0
  78. package/dist/editor/inlineCompletionRateLimiter.d.ts.map +1 -0
  79. package/dist/editor/inlineCompletionRateLimiter.js +46 -0
  80. package/dist/editor/inlineCompletionRoutes.d.ts +26 -0
  81. package/dist/editor/inlineCompletionRoutes.d.ts.map +1 -0
  82. package/dist/editor/inlineCompletionRoutes.js +404 -0
  83. package/dist/editor/inlineCompletionTelemetryEvidence.d.ts +5 -0
  84. package/dist/editor/inlineCompletionTelemetryEvidence.d.ts.map +1 -0
  85. package/dist/editor/inlineCompletionTelemetryEvidence.js +42 -0
  86. package/dist/editor/languageCancellation.d.ts +19 -0
  87. package/dist/editor/languageCancellation.d.ts.map +1 -0
  88. package/dist/editor/languageCancellation.js +48 -0
  89. package/dist/editor/languageProvider.d.ts +39 -0
  90. package/dist/editor/languageProvider.d.ts.map +1 -0
  91. package/dist/editor/languageProvider.js +11 -0
  92. package/dist/editor/languageRoutes.d.ts +15 -0
  93. package/dist/editor/languageRoutes.d.ts.map +1 -0
  94. package/dist/editor/languageRoutes.js +106 -0
  95. package/dist/editor/languageSanitize.d.ts +8 -0
  96. package/dist/editor/languageSanitize.d.ts.map +1 -0
  97. package/dist/editor/languageSanitize.js +101 -0
  98. package/dist/editor/languageService.d.ts +36 -0
  99. package/dist/editor/languageService.d.ts.map +1 -0
  100. package/dist/editor/languageService.js +93 -0
  101. package/dist/editor/languageServiceHost.d.ts +14 -0
  102. package/dist/editor/languageServiceHost.d.ts.map +1 -0
  103. package/dist/editor/languageServiceHost.js +242 -0
  104. package/dist/editor/localKnowledgeRetrieval.d.ts +21 -0
  105. package/dist/editor/localKnowledgeRetrieval.d.ts.map +1 -0
  106. package/dist/editor/localKnowledgeRetrieval.js +44 -0
  107. package/dist/editor/patchApplyEvidence.d.ts +21 -0
  108. package/dist/editor/patchApplyEvidence.d.ts.map +1 -0
  109. package/dist/editor/patchApplyEvidence.js +87 -0
  110. package/dist/editor/patchApplyRoutes.d.ts +16 -0
  111. package/dist/editor/patchApplyRoutes.d.ts.map +1 -0
  112. package/dist/editor/patchApplyRoutes.js +307 -0
  113. package/dist/editor/postApplyVerification.d.ts +42 -0
  114. package/dist/editor/postApplyVerification.d.ts.map +1 -0
  115. package/dist/editor/postApplyVerification.js +177 -0
  116. package/dist/editor/testGenerationEvidence.d.ts +6 -0
  117. package/dist/editor/testGenerationEvidence.d.ts.map +1 -0
  118. package/dist/editor/testGenerationEvidence.js +72 -0
  119. package/dist/editor/testGenerationPatch.d.ts +10 -0
  120. package/dist/editor/testGenerationPatch.d.ts.map +1 -0
  121. package/dist/editor/testGenerationPatch.js +66 -0
  122. package/dist/editor/testGenerationRoutes.d.ts +21 -0
  123. package/dist/editor/testGenerationRoutes.d.ts.map +1 -0
  124. package/dist/editor/testGenerationRoutes.js +254 -0
  125. package/dist/editor/testGenerationRunner.d.ts +23 -0
  126. package/dist/editor/testGenerationRunner.d.ts.map +1 -0
  127. package/dist/editor/testGenerationRunner.js +120 -0
  128. package/dist/editor/textOffsets.d.ts +6 -0
  129. package/dist/editor/textOffsets.d.ts.map +1 -0
  130. package/dist/editor/textOffsets.js +82 -0
  131. package/dist/editor/typescriptLanguageProvider.d.ts +3 -0
  132. package/dist/editor/typescriptLanguageProvider.d.ts.map +1 -0
  133. package/dist/editor/typescriptLanguageProvider.js +217 -0
  134. package/dist/evidence.d.ts +28 -0
  135. package/dist/evidence.d.ts.map +1 -0
  136. package/dist/evidence.js +145 -0
  137. package/dist/files-deny.d.ts +3 -0
  138. package/dist/files-deny.d.ts.map +1 -0
  139. package/dist/files-deny.js +12 -0
  140. package/dist/files.d.ts +97 -0
  141. package/dist/files.d.ts.map +1 -0
  142. package/dist/files.js +733 -0
  143. package/dist/gateway-setup.d.ts +10 -0
  144. package/dist/gateway-setup.d.ts.map +1 -0
  145. package/dist/gateway-setup.js +896 -0
  146. package/dist/governed-workflow.d.ts +17 -0
  147. package/dist/governed-workflow.d.ts.map +1 -0
  148. package/dist/governed-workflow.js +147 -0
  149. package/dist/grounded-answer.d.ts +12 -0
  150. package/dist/grounded-answer.d.ts.map +1 -0
  151. package/dist/grounded-answer.js +69 -0
  152. package/dist/grounded-context-index.d.ts +25 -0
  153. package/dist/grounded-context-index.d.ts.map +1 -0
  154. package/dist/grounded-context-index.js +169 -0
  155. package/dist/grounded-document-evidence.d.ts +28 -0
  156. package/dist/grounded-document-evidence.d.ts.map +1 -0
  157. package/dist/grounded-document-evidence.js +430 -0
  158. package/dist/grounded-handoff.d.ts +4 -0
  159. package/dist/grounded-handoff.d.ts.map +1 -0
  160. package/dist/grounded-handoff.js +445 -0
  161. package/dist/grounded-orchestrator.d.ts +43 -0
  162. package/dist/grounded-orchestrator.d.ts.map +1 -0
  163. package/dist/grounded-orchestrator.js +1445 -0
  164. package/dist/grounded-prompt.d.ts +2 -0
  165. package/dist/grounded-prompt.d.ts.map +1 -0
  166. package/dist/grounded-prompt.js +17 -0
  167. package/dist/grounded-qa-hybrid.d.ts +36 -0
  168. package/dist/grounded-qa-hybrid.d.ts.map +1 -0
  169. package/dist/grounded-qa-hybrid.js +762 -0
  170. package/dist/grounded-qa-multi-source.d.ts +38 -0
  171. package/dist/grounded-qa-multi-source.d.ts.map +1 -0
  172. package/dist/grounded-qa-multi-source.js +461 -0
  173. package/dist/grounded-qa.d.ts +45 -0
  174. package/dist/grounded-qa.d.ts.map +1 -0
  175. package/dist/grounded-qa.js +877 -0
  176. package/dist/grounded-rerank.d.ts +26 -0
  177. package/dist/grounded-rerank.d.ts.map +1 -0
  178. package/dist/grounded-rerank.js +72 -0
  179. package/dist/grounded-turn-registry.d.ts +23 -0
  180. package/dist/grounded-turn-registry.d.ts.map +1 -0
  181. package/dist/grounded-turn-registry.js +102 -0
  182. package/dist/headers.d.ts +3 -0
  183. package/dist/headers.d.ts.map +1 -0
  184. package/dist/headers.js +22 -0
  185. package/dist/host-check.d.ts +3 -0
  186. package/dist/host-check.d.ts.map +1 -0
  187. package/dist/host-check.js +58 -0
  188. package/dist/index.d.ts +26 -0
  189. package/dist/index.d.ts.map +1 -0
  190. package/dist/index.js +33 -0
  191. package/dist/load-csp.d.ts +3 -0
  192. package/dist/load-csp.d.ts.map +1 -0
  193. package/dist/load-csp.js +100 -0
  194. package/dist/local-knowledge-grounded-qa.d.ts +42 -0
  195. package/dist/local-knowledge-grounded-qa.d.ts.map +1 -0
  196. package/dist/local-knowledge-grounded-qa.js +678 -0
  197. package/dist/local-knowledge-handlers.d.ts +24 -0
  198. package/dist/local-knowledge-handlers.d.ts.map +1 -0
  199. package/dist/local-knowledge-handlers.js +1285 -0
  200. package/dist/local-knowledge-indexing-registry.d.ts +13 -0
  201. package/dist/local-knowledge-indexing-registry.d.ts.map +1 -0
  202. package/dist/local-knowledge-indexing-registry.js +53 -0
  203. package/dist/localKnowledgeKeyProvider.d.ts +11 -0
  204. package/dist/localKnowledgeKeyProvider.d.ts.map +1 -0
  205. package/dist/localKnowledgeKeyProvider.js +48 -0
  206. package/dist/memory-audit-event-builders.d.ts +21 -0
  207. package/dist/memory-audit-event-builders.d.ts.map +1 -0
  208. package/dist/memory-audit-event-builders.js +187 -0
  209. package/dist/memory-audit-handler.d.ts +23 -0
  210. package/dist/memory-audit-handler.d.ts.map +1 -0
  211. package/dist/memory-audit-handler.js +191 -0
  212. package/dist/memory-capture-policy.d.ts +10 -0
  213. package/dist/memory-capture-policy.d.ts.map +1 -0
  214. package/dist/memory-capture-policy.js +44 -0
  215. package/dist/memory-consolidation-handlers.d.ts +6 -0
  216. package/dist/memory-consolidation-handlers.d.ts.map +1 -0
  217. package/dist/memory-consolidation-handlers.js +491 -0
  218. package/dist/memory-consolidation-registry.d.ts +47 -0
  219. package/dist/memory-consolidation-registry.d.ts.map +1 -0
  220. package/dist/memory-consolidation-registry.js +106 -0
  221. package/dist/memory-conv-handlers.d.ts +8 -0
  222. package/dist/memory-conv-handlers.d.ts.map +1 -0
  223. package/dist/memory-conv-handlers.js +369 -0
  224. package/dist/memory-conversation-context.d.ts +13 -0
  225. package/dist/memory-conversation-context.d.ts.map +1 -0
  226. package/dist/memory-conversation-context.js +22 -0
  227. package/dist/memory-diagnostics.d.ts +29 -0
  228. package/dist/memory-diagnostics.d.ts.map +1 -0
  229. package/dist/memory-diagnostics.js +122 -0
  230. package/dist/memory-embedding.d.ts +21 -0
  231. package/dist/memory-embedding.d.ts.map +1 -0
  232. package/dist/memory-embedding.js +264 -0
  233. package/dist/memory-handlers.d.ts +19 -0
  234. package/dist/memory-handlers.d.ts.map +1 -0
  235. package/dist/memory-handlers.js +1204 -0
  236. package/dist/memory-maintenance-handlers.d.ts +35 -0
  237. package/dist/memory-maintenance-handlers.d.ts.map +1 -0
  238. package/dist/memory-maintenance-handlers.js +219 -0
  239. package/dist/memory-record-builders.d.ts +4 -0
  240. package/dist/memory-record-builders.d.ts.map +1 -0
  241. package/dist/memory-record-builders.js +19 -0
  242. package/dist/memory-retention.d.ts +31 -0
  243. package/dist/memory-retention.d.ts.map +1 -0
  244. package/dist/memory-retention.js +151 -0
  245. package/dist/memory-retrieval-signals.d.ts +12 -0
  246. package/dist/memory-retrieval-signals.d.ts.map +1 -0
  247. package/dist/memory-retrieval-signals.js +100 -0
  248. package/dist/memory-salience.d.ts +12 -0
  249. package/dist/memory-salience.d.ts.map +1 -0
  250. package/dist/memory-salience.js +154 -0
  251. package/dist/memory-scope-sanitizer.d.ts +6 -0
  252. package/dist/memory-scope-sanitizer.d.ts.map +1 -0
  253. package/dist/memory-scope-sanitizer.js +106 -0
  254. package/dist/memory-target-resolver.d.ts +4 -0
  255. package/dist/memory-target-resolver.d.ts.map +1 -0
  256. package/dist/memory-target-resolver.js +73 -0
  257. package/dist/memory-workflow-port.d.ts +14 -0
  258. package/dist/memory-workflow-port.d.ts.map +1 -0
  259. package/dist/memory-workflow-port.js +186 -0
  260. package/dist/private-json.d.ts +3 -0
  261. package/dist/private-json.d.ts.map +1 -0
  262. package/dist/private-json.js +62 -0
  263. package/dist/promptEnhancer/index.d.ts +3 -0
  264. package/dist/promptEnhancer/index.d.ts.map +1 -0
  265. package/dist/promptEnhancer/index.js +5 -0
  266. package/dist/promptEnhancer/orchestrate.d.ts +2 -0
  267. package/dist/promptEnhancer/orchestrate.d.ts.map +1 -0
  268. package/dist/promptEnhancer/orchestrate.js +5 -0
  269. package/dist/promptEnhancer/routes.d.ts +9 -0
  270. package/dist/promptEnhancer/routes.d.ts.map +1 -0
  271. package/dist/promptEnhancer/routes.js +205 -0
  272. package/dist/qualityIntelligence/capsuleAdapter.d.ts +27 -0
  273. package/dist/qualityIntelligence/capsuleAdapter.d.ts.map +1 -0
  274. package/dist/qualityIntelligence/capsuleAdapter.js +57 -0
  275. package/dist/qualityIntelligence/connectorAuthorization.d.ts +22 -0
  276. package/dist/qualityIntelligence/connectorAuthorization.d.ts.map +1 -0
  277. package/dist/qualityIntelligence/connectorAuthorization.js +35 -0
  278. package/dist/qualityIntelligence/connectorErrors.d.ts +16 -0
  279. package/dist/qualityIntelligence/connectorErrors.d.ts.map +1 -0
  280. package/dist/qualityIntelligence/connectorErrors.js +56 -0
  281. package/dist/qualityIntelligence/connectorRoutes.d.ts +7 -0
  282. package/dist/qualityIntelligence/connectorRoutes.d.ts.map +1 -0
  283. package/dist/qualityIntelligence/connectorRoutes.js +167 -0
  284. package/dist/qualityIntelligence/editRoutes.d.ts +5 -0
  285. package/dist/qualityIntelligence/editRoutes.d.ts.map +1 -0
  286. package/dist/qualityIntelligence/editRoutes.js +293 -0
  287. package/dist/qualityIntelligence/exportAssembly.d.ts +22 -0
  288. package/dist/qualityIntelligence/exportAssembly.d.ts.map +1 -0
  289. package/dist/qualityIntelligence/exportAssembly.js +352 -0
  290. package/dist/qualityIntelligence/exportRoutes.d.ts +5 -0
  291. package/dist/qualityIntelligence/exportRoutes.d.ts.map +1 -0
  292. package/dist/qualityIntelligence/exportRoutes.js +320 -0
  293. package/dist/qualityIntelligence/figma/figmaConcurrency.d.ts +8 -0
  294. package/dist/qualityIntelligence/figma/figmaConcurrency.d.ts.map +1 -0
  295. package/dist/qualityIntelligence/figma/figmaConcurrency.js +34 -0
  296. package/dist/qualityIntelligence/figma/figmaConnector.d.ts +65 -0
  297. package/dist/qualityIntelligence/figma/figmaConnector.d.ts.map +1 -0
  298. package/dist/qualityIntelligence/figma/figmaConnector.js +184 -0
  299. package/dist/qualityIntelligence/figma/figmaConnectorAudit.d.ts +52 -0
  300. package/dist/qualityIntelligence/figma/figmaConnectorAudit.d.ts.map +1 -0
  301. package/dist/qualityIntelligence/figma/figmaConnectorAudit.js +63 -0
  302. package/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts +31 -0
  303. package/dist/qualityIntelligence/figma/figmaConnectorErrors.d.ts.map +1 -0
  304. package/dist/qualityIntelligence/figma/figmaConnectorErrors.js +220 -0
  305. package/dist/qualityIntelligence/figma/figmaConnectorMetrics.d.ts +44 -0
  306. package/dist/qualityIntelligence/figma/figmaConnectorMetrics.d.ts.map +1 -0
  307. package/dist/qualityIntelligence/figma/figmaConnectorMetrics.js +49 -0
  308. package/dist/qualityIntelligence/figma/figmaConsent.d.ts +39 -0
  309. package/dist/qualityIntelligence/figma/figmaConsent.d.ts.map +1 -0
  310. package/dist/qualityIntelligence/figma/figmaConsent.js +62 -0
  311. package/dist/qualityIntelligence/figma/figmaHttpPort.d.ts +28 -0
  312. package/dist/qualityIntelligence/figma/figmaHttpPort.d.ts.map +1 -0
  313. package/dist/qualityIntelligence/figma/figmaHttpPort.js +70 -0
  314. package/dist/qualityIntelligence/figma/figmaObservedActions.d.ts +49 -0
  315. package/dist/qualityIntelligence/figma/figmaObservedActions.d.ts.map +1 -0
  316. package/dist/qualityIntelligence/figma/figmaObservedActions.js +89 -0
  317. package/dist/qualityIntelligence/figma/figmaReadiness.d.ts +32 -0
  318. package/dist/qualityIntelligence/figma/figmaReadiness.d.ts.map +1 -0
  319. package/dist/qualityIntelligence/figma/figmaReadiness.js +67 -0
  320. package/dist/qualityIntelligence/figma/figmaRenderPort.d.ts +29 -0
  321. package/dist/qualityIntelligence/figma/figmaRenderPort.d.ts.map +1 -0
  322. package/dist/qualityIntelligence/figma/figmaRenderPort.js +93 -0
  323. package/dist/qualityIntelligence/figma/figmaResnapshot.d.ts +28 -0
  324. package/dist/qualityIntelligence/figma/figmaResnapshot.d.ts.map +1 -0
  325. package/dist/qualityIntelligence/figma/figmaResnapshot.js +38 -0
  326. package/dist/qualityIntelligence/figma/figmaRetry.d.ts +31 -0
  327. package/dist/qualityIntelligence/figma/figmaRetry.d.ts.map +1 -0
  328. package/dist/qualityIntelligence/figma/figmaRetry.js +62 -0
  329. package/dist/qualityIntelligence/figma/figmaScopeRef.d.ts +9 -0
  330. package/dist/qualityIntelligence/figma/figmaScopeRef.d.ts.map +1 -0
  331. package/dist/qualityIntelligence/figma/figmaScopeRef.js +18 -0
  332. package/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts +86 -0
  333. package/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts.map +1 -0
  334. package/dist/qualityIntelligence/figma/figmaScopedPagination.js +308 -0
  335. package/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts +31 -0
  336. package/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -0
  337. package/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +314 -0
  338. package/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts +18 -0
  339. package/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts.map +1 -0
  340. package/dist/qualityIntelligence/figma/figmaSnapshotHash.js +63 -0
  341. package/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +65 -0
  342. package/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -0
  343. package/dist/qualityIntelligence/figma/figmaSnapshotTypes.js +13 -0
  344. package/dist/qualityIntelligence/figma/figmaTokenSource.d.ts +9 -0
  345. package/dist/qualityIntelligence/figma/figmaTokenSource.d.ts.map +1 -0
  346. package/dist/qualityIntelligence/figma/figmaTokenSource.js +61 -0
  347. package/dist/qualityIntelligence/figma/figmaTokenStore.d.ts +19 -0
  348. package/dist/qualityIntelligence/figma/figmaTokenStore.d.ts.map +1 -0
  349. package/dist/qualityIntelligence/figma/figmaTokenStore.js +156 -0
  350. package/dist/qualityIntelligence/figma/figmaUrl.d.ts +6 -0
  351. package/dist/qualityIntelligence/figma/figmaUrl.d.ts.map +1 -0
  352. package/dist/qualityIntelligence/figma/figmaUrl.js +36 -0
  353. package/dist/qualityIntelligence/figma/index.d.ts +20 -0
  354. package/dist/qualityIntelligence/figma/index.d.ts.map +1 -0
  355. package/dist/qualityIntelligence/figma/index.js +26 -0
  356. package/dist/qualityIntelligence/figmaCodegenRoutes.d.ts +28 -0
  357. package/dist/qualityIntelligence/figmaCodegenRoutes.d.ts.map +1 -0
  358. package/dist/qualityIntelligence/figmaCodegenRoutes.js +165 -0
  359. package/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts +55 -0
  360. package/dist/qualityIntelligence/figmaSnapshotAdapter.d.ts.map +1 -0
  361. package/dist/qualityIntelligence/figmaSnapshotAdapter.js +219 -0
  362. package/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts +64 -0
  363. package/dist/qualityIntelligence/figmaSnapshotOrchestration.d.ts.map +1 -0
  364. package/dist/qualityIntelligence/figmaSnapshotOrchestration.js +203 -0
  365. package/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +112 -0
  366. package/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -0
  367. package/dist/qualityIntelligence/figmaSnapshotRoutes.js +1063 -0
  368. package/dist/qualityIntelligence/figmaSnapshotScreenIds.d.ts +19 -0
  369. package/dist/qualityIntelligence/figmaSnapshotScreenIds.d.ts.map +1 -0
  370. package/dist/qualityIntelligence/figmaSnapshotScreenIds.js +75 -0
  371. package/dist/qualityIntelligence/generationPort.d.ts +15 -0
  372. package/dist/qualityIntelligence/generationPort.d.ts.map +1 -0
  373. package/dist/qualityIntelligence/generationPort.js +185 -0
  374. package/dist/qualityIntelligence/handoffErrors.d.ts +9 -0
  375. package/dist/qualityIntelligence/handoffErrors.d.ts.map +1 -0
  376. package/dist/qualityIntelligence/handoffErrors.js +21 -0
  377. package/dist/qualityIntelligence/handoffRoutes.d.ts +15 -0
  378. package/dist/qualityIntelligence/handoffRoutes.d.ts.map +1 -0
  379. package/dist/qualityIntelligence/handoffRoutes.js +341 -0
  380. package/dist/qualityIntelligence/index.d.ts +17 -0
  381. package/dist/qualityIntelligence/index.d.ts.map +1 -0
  382. package/dist/qualityIntelligence/index.js +36 -0
  383. package/dist/qualityIntelligence/judgePort.d.ts +30 -0
  384. package/dist/qualityIntelligence/judgePort.d.ts.map +1 -0
  385. package/dist/qualityIntelligence/judgePort.js +326 -0
  386. package/dist/qualityIntelligence/modelSelection.d.ts +58 -0
  387. package/dist/qualityIntelligence/modelSelection.d.ts.map +1 -0
  388. package/dist/qualityIntelligence/modelSelection.js +148 -0
  389. package/dist/qualityIntelligence/reCheckRoutes.d.ts +6 -0
  390. package/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -0
  391. package/dist/qualityIntelligence/reCheckRoutes.js +1157 -0
  392. package/dist/qualityIntelligence/retentionEnforcement.d.ts +13 -0
  393. package/dist/qualityIntelligence/retentionEnforcement.d.ts.map +1 -0
  394. package/dist/qualityIntelligence/retentionEnforcement.js +47 -0
  395. package/dist/qualityIntelligence/retentionRoutes.d.ts +8 -0
  396. package/dist/qualityIntelligence/retentionRoutes.d.ts.map +1 -0
  397. package/dist/qualityIntelligence/retentionRoutes.js +74 -0
  398. package/dist/qualityIntelligence/reviewRoutes.d.ts +5 -0
  399. package/dist/qualityIntelligence/reviewRoutes.d.ts.map +1 -0
  400. package/dist/qualityIntelligence/reviewRoutes.js +145 -0
  401. package/dist/qualityIntelligence/reviewStore.d.ts +75 -0
  402. package/dist/qualityIntelligence/reviewStore.d.ts.map +1 -0
  403. package/dist/qualityIntelligence/reviewStore.js +170 -0
  404. package/dist/qualityIntelligence/runExecution.d.ts +36 -0
  405. package/dist/qualityIntelligence/runExecution.d.ts.map +1 -0
  406. package/dist/qualityIntelligence/runExecution.js +180 -0
  407. package/dist/qualityIntelligence/runIngestion.d.ts +70 -0
  408. package/dist/qualityIntelligence/runIngestion.d.ts.map +1 -0
  409. package/dist/qualityIntelligence/runIngestion.js +1235 -0
  410. package/dist/qualityIntelligence/runRegistry.d.ts +31 -0
  411. package/dist/qualityIntelligence/runRegistry.d.ts.map +1 -0
  412. package/dist/qualityIntelligence/runRegistry.js +66 -0
  413. package/dist/qualityIntelligence/runRoutes.d.ts +16 -0
  414. package/dist/qualityIntelligence/runRoutes.d.ts.map +1 -0
  415. package/dist/qualityIntelligence/runRoutes.js +357 -0
  416. package/dist/qualityIntelligence/traceabilityRoutes.d.ts +5 -0
  417. package/dist/qualityIntelligence/traceabilityRoutes.d.ts.map +1 -0
  418. package/dist/qualityIntelligence/traceabilityRoutes.js +173 -0
  419. package/dist/qualityIntelligence/uiRoutes.d.ts +7 -0
  420. package/dist/qualityIntelligence/uiRoutes.d.ts.map +1 -0
  421. package/dist/qualityIntelligence/uiRoutes.js +336 -0
  422. package/dist/read-handlers.d.ts +9 -0
  423. package/dist/read-handlers.d.ts.map +1 -0
  424. package/dist/read-handlers.js +265 -0
  425. package/dist/relationship-handlers.d.ts +191 -0
  426. package/dist/relationship-handlers.d.ts.map +1 -0
  427. package/dist/relationship-handlers.js +0 -0
  428. package/dist/routes.d.ts +37 -0
  429. package/dist/routes.d.ts.map +1 -0
  430. package/dist/routes.js +507 -0
  431. package/dist/run-engine.d.ts +25 -0
  432. package/dist/run-engine.d.ts.map +1 -0
  433. package/dist/run-engine.js +385 -0
  434. package/dist/run-handlers.d.ts +9 -0
  435. package/dist/run-handlers.d.ts.map +1 -0
  436. package/dist/run-handlers.js +465 -0
  437. package/dist/run-request.d.ts +17 -0
  438. package/dist/run-request.d.ts.map +1 -0
  439. package/dist/run-request.js +219 -0
  440. package/dist/runs.d.ts +47 -0
  441. package/dist/runs.d.ts.map +1 -0
  442. package/dist/runs.js +100 -0
  443. package/dist/server.d.ts +13 -0
  444. package/dist/server.d.ts.map +1 -0
  445. package/dist/server.js +152 -0
  446. package/dist/sink.d.ts +28 -0
  447. package/dist/sink.d.ts.map +1 -0
  448. package/dist/sink.js +80 -0
  449. package/dist/sse-write.d.ts +9 -0
  450. package/dist/sse-write.d.ts.map +1 -0
  451. package/dist/sse-write.js +26 -0
  452. package/dist/sse.d.ts +8 -0
  453. package/dist/sse.d.ts.map +1 -0
  454. package/dist/sse.js +27 -0
  455. package/dist/static.d.ts +5 -0
  456. package/dist/static.d.ts.map +1 -0
  457. package/dist/static.js +76 -0
  458. package/dist/store/chats.d.ts +17 -0
  459. package/dist/store/chats.d.ts.map +1 -0
  460. package/dist/store/chats.js +624 -0
  461. package/dist/store/db.d.ts +11 -0
  462. package/dist/store/db.d.ts.map +1 -0
  463. package/dist/store/db.js +203 -0
  464. package/dist/store/errors.d.ts +13 -0
  465. package/dist/store/errors.d.ts.map +1 -0
  466. package/dist/store/errors.js +30 -0
  467. package/dist/store/index.d.ts +7 -0
  468. package/dist/store/index.d.ts.map +1 -0
  469. package/dist/store/index.js +6 -0
  470. package/dist/store/messages.d.ts +8 -0
  471. package/dist/store/messages.d.ts.map +1 -0
  472. package/dist/store/messages.js +149 -0
  473. package/dist/store/paths.d.ts +5 -0
  474. package/dist/store/paths.d.ts.map +1 -0
  475. package/dist/store/paths.js +84 -0
  476. package/dist/store/projects.d.ts +8 -0
  477. package/dist/store/projects.d.ts.map +1 -0
  478. package/dist/store/projects.js +59 -0
  479. package/dist/store/relationship-audit.d.ts +42 -0
  480. package/dist/store/relationship-audit.d.ts.map +1 -0
  481. package/dist/store/relationship-audit.js +155 -0
  482. package/dist/store/relationships.d.ts +191 -0
  483. package/dist/store/relationships.d.ts.map +1 -0
  484. package/dist/store/relationships.js +724 -0
  485. package/dist/store/schema.d.ts +4 -0
  486. package/dist/store/schema.d.ts.map +1 -0
  487. package/dist/store/schema.js +220 -0
  488. package/dist/store/types.d.ts +29 -0
  489. package/dist/store/types.d.ts.map +1 -0
  490. package/dist/store/types.js +8 -0
  491. package/dist/store/validation.d.ts +7 -0
  492. package/dist/store/validation.d.ts.map +1 -0
  493. package/dist/store/validation.js +117 -0
  494. package/dist/store-handlers.d.ts +17 -0
  495. package/dist/store-handlers.d.ts.map +1 -0
  496. package/dist/store-handlers.js +872 -0
  497. package/dist/terminal-errors.d.ts +22 -0
  498. package/dist/terminal-errors.d.ts.map +1 -0
  499. package/dist/terminal-errors.js +45 -0
  500. package/dist/terminal-evidence.d.ts +21 -0
  501. package/dist/terminal-evidence.d.ts.map +1 -0
  502. package/dist/terminal-evidence.js +65 -0
  503. package/dist/terminal-routes.d.ts +10 -0
  504. package/dist/terminal-routes.d.ts.map +1 -0
  505. package/dist/terminal-routes.js +219 -0
  506. package/dist/terminal.d.ts +68 -0
  507. package/dist/terminal.d.ts.map +1 -0
  508. package/dist/terminal.js +855 -0
  509. package/package.json +52 -0
@@ -0,0 +1,385 @@
1
+ // The run engine (ADR-0011 D7/D8): it starts a dry-run-first run in the BACKGROUND and bridges it to
2
+ // the registry + streaming sink. It maps a validated RunRequest to the existing workflow / harness
3
+ // entry points UNCHANGED — generateUnitTests / investigateBug / createSession — and never calls a
4
+ // model directly or reimplements a guard. The BFF owns the runId (injected via the workflow idSource
5
+ // / read from the harness session) and a fingerprint so the 202 response is synchronous; completion
6
+ // is captured into the registry asynchronously. `apply` defaults false; the only place apply becomes
7
+ // true is the gated apply path (run-handlers), which re-invokes this engine with apply:true.
8
+ import { createHash, randomUUID } from "node:crypto";
9
+ import { DryRunToolPort } from "@oscharko-dev/keiko-harness";
10
+ import { canonicalise, createSession, HARNESS_VERSION, } from "@oscharko-dev/keiko-harness";
11
+ import { generateUnitTests, investigateBug } from "@oscharko-dev/keiko-workflows";
12
+ import { buildVerificationPlan, detectScripts, runVerification, } from "@oscharko-dev/keiko-verification";
13
+ import { detectWorkspace, readWorkspaceFile } from "@oscharko-dev/keiko-workspace";
14
+ import { DEFAULT_LIMITS } from "@oscharko-dev/keiko-harness";
15
+ import { QueueEventSink } from "./sink.js";
16
+ import { persistWorkflowEvidence, persistExplainEvidence, persistVerifyEvidence, } from "./evidence.js";
17
+ import { createWorkflowMemoryPort } from "./memory-workflow-port.js";
18
+ import { buildGovernedHandoffEvidence } from "./governed-workflow.js";
19
+ const KIND_TO_TASK_TYPE = {
20
+ "unit-tests": "generate-unit-tests",
21
+ "bug-investigation": "investigate-bug",
22
+ "explain-plan": "explain-plan",
23
+ verify: "verify",
24
+ };
25
+ // Assembles the workflow/task input by overlaying the request-level fields onto the client `input`
26
+ // object. The workflow validates the shape at its own boundary; the cast is the single typed
27
+ // boundary (no `any` — the value is built from validated primitives plus the passthrough record).
28
+ function unitTestInput(request) {
29
+ return {
30
+ ...request.input,
31
+ modelId: request.modelId,
32
+ apply: request.apply,
33
+ ...(request.limits === undefined ? {} : { limits: request.limits }),
34
+ };
35
+ }
36
+ function bugInput(request) {
37
+ return {
38
+ ...request.input,
39
+ modelId: request.modelId,
40
+ apply: request.apply,
41
+ ...(request.limits === undefined ? {} : { limits: request.limits }),
42
+ };
43
+ }
44
+ function explainTask(request) {
45
+ const root = workspaceRoot(request);
46
+ const filePath = request.input.filePath;
47
+ if (typeof filePath !== "string" || filePath.length === 0) {
48
+ return { taskType: "explain-plan", input: request.input };
49
+ }
50
+ const workspace = detectWorkspace(root);
51
+ const file = readWorkspaceFile(workspace, filePath, { maxBytes: 32_768 });
52
+ const context = [
53
+ `--- ${file.relativePath}${file.truncated ? " (truncated)" : ""} ---`,
54
+ file.text,
55
+ ].join("\n");
56
+ return { taskType: "explain-plan", input: { ...request.input, context } };
57
+ }
58
+ function workspaceRoot(request) {
59
+ const root = request.input.workspaceRoot;
60
+ if (typeof root !== "string" || root.length === 0) {
61
+ throw new Error("validated RunRequest is missing workspaceRoot");
62
+ }
63
+ return root;
64
+ }
65
+ function workflowFingerprint(request) {
66
+ const taskType = KIND_TO_TASK_TYPE[request.kind];
67
+ const canonical = canonicalise({
68
+ taskType,
69
+ taskInput: { taskType, input: request.input },
70
+ limits: request.limits ?? {},
71
+ modelId: request.modelId,
72
+ governedHandoff: request.governedHandoff ?? null,
73
+ governedHandoffSourceGroundedRunId: request.governedHandoffSourceGroundedRunId ?? null,
74
+ workingDirectory: workspaceRoot(request),
75
+ dryRun: true,
76
+ harnessVersion: HARNESS_VERSION,
77
+ });
78
+ return createHash("sha256").update(canonical, "utf8").digest("hex");
79
+ }
80
+ // dry-run-success (appliable) states per workflow. Only these produce an appliable snapshot for the
81
+ // gated apply path; any other terminal state is non-appliable (409 on apply).
82
+ function unitTestStatusToRun(status) {
83
+ return status === "completed" || status === "dry-run" ? "completed" : statusOrFailed(status);
84
+ }
85
+ function bugStatusToRun(status) {
86
+ if (status === "fix-applied" || status === "fix-proposed" || status === "investigation-only") {
87
+ return "completed";
88
+ }
89
+ return statusOrFailed(status);
90
+ }
91
+ function statusOrFailed(status) {
92
+ return status === "cancelled" ? "cancelled" : "failed";
93
+ }
94
+ function unitTestAppliable(request, report) {
95
+ return report.status === "dry-run" && report.proposedDiff !== undefined
96
+ ? {
97
+ kind: "unit-tests",
98
+ payload: request.input,
99
+ limits: request.limits,
100
+ governedHandoff: request.governedHandoff,
101
+ }
102
+ : undefined;
103
+ }
104
+ function bugAppliable(request, report) {
105
+ return report.status === "fix-proposed" && report.proposedDiff !== undefined
106
+ ? {
107
+ kind: "bug-investigation",
108
+ payload: request.input,
109
+ limits: request.limits,
110
+ governedHandoff: request.governedHandoff,
111
+ }
112
+ : undefined;
113
+ }
114
+ // Starts the underlying run for a workflow request: an AbortController drives cancellation (the
115
+ // workflow honours deps.signal), and the BFF-owned runId is injected as the workflow idSource so the
116
+ // streamed events carry the same runId the registry/SSE key on.
117
+ function dispatchWorkflow(ctx, sink, runId) {
118
+ const controller = new AbortController();
119
+ const commonDeps = {
120
+ model: ctx.model,
121
+ sink,
122
+ signal: controller.signal,
123
+ idSource: () => runId,
124
+ ...(ctx.request.governedHandoff === undefined
125
+ ? {}
126
+ : { workflowHandoff: ctx.request.governedHandoff }),
127
+ ...(ctx.memoryVault !== undefined && ctx.evidence !== undefined
128
+ ? {
129
+ memoryPort: createWorkflowMemoryPort({
130
+ vault: ctx.memoryVault,
131
+ evidenceStore: ctx.evidence.store,
132
+ runId,
133
+ redactString: ctx.memoryAuditRedactString ?? ((input) => input),
134
+ ...(ctx.memoryCustomerIdentifierMatchers === undefined
135
+ ? {}
136
+ : { customerIdentifierMatchers: ctx.memoryCustomerIdentifierMatchers }),
137
+ }),
138
+ }
139
+ : {}),
140
+ };
141
+ if (ctx.request.kind === "unit-tests") {
142
+ const result = generateUnitTests(unitTestInput(ctx.request), commonDeps).then((report) => ({
143
+ status: unitTestStatusToRun(report.status),
144
+ report,
145
+ appliable: unitTestAppliable(ctx.request, report),
146
+ }));
147
+ return {
148
+ result,
149
+ cancel: (reason) => {
150
+ controller.abort(reason);
151
+ },
152
+ };
153
+ }
154
+ const result = investigateBug(bugInput(ctx.request), commonDeps).then((report) => ({
155
+ status: bugStatusToRun(report.status),
156
+ report,
157
+ appliable: bugAppliable(ctx.request, report),
158
+ }));
159
+ return {
160
+ result,
161
+ cancel: (reason) => {
162
+ controller.abort(reason);
163
+ },
164
+ };
165
+ }
166
+ // Starts an explain-plan harness run. createSession returns the runId/fingerprint synchronously and
167
+ // exposes its own cancel(); the BFF reuses those rather than injecting an id.
168
+ function dispatchExplain(ctx, sink, reservedRunId) {
169
+ const config = {
170
+ model: ctx.request.modelId,
171
+ workingDirectory: workspaceRoot(ctx.request),
172
+ dryRun: true,
173
+ ...(ctx.request.limits === undefined ? {} : { limits: ctx.request.limits }),
174
+ };
175
+ const session = createSession(explainTask(ctx.request), config, {
176
+ model: ctx.model,
177
+ tools: new DryRunToolPort(),
178
+ sink,
179
+ ...(reservedRunId === undefined ? {} : { idSource: { newRunId: () => reservedRunId } }),
180
+ });
181
+ const result = session.result.then((runResult) => ({
182
+ status: runResult.outcome === "completed" ? "completed" : statusOrFailed(runResult.outcome),
183
+ report: runResult.report ?? { status: runResult.outcome },
184
+ appliable: undefined,
185
+ result: runResult,
186
+ }));
187
+ return {
188
+ dispatched: {
189
+ result,
190
+ cancel: (reason) => {
191
+ session.cancel(reason);
192
+ },
193
+ },
194
+ runId: session.runId,
195
+ fingerprint: session.fingerprint,
196
+ };
197
+ }
198
+ // Maps a VerificationStatus to the BFF RunStatus. Verify has no "appliable" snapshot — the gates
199
+ // either pass, fail/skip/deny (terminal), or are cancelled. `passed` → completed; `cancelled` →
200
+ // cancelled; every other terminal status (failed/skipped/denied/timed-out/resource-exceeded) is
201
+ // surfaced as `failed` so the registry stays in a known terminal state.
202
+ function verifyStatusToRun(status) {
203
+ if (status === "passed") {
204
+ return "completed";
205
+ }
206
+ if (status === "cancelled") {
207
+ return "cancelled";
208
+ }
209
+ return "failed";
210
+ }
211
+ // Builds a structurally-valid HarnessEvent envelope for a verify run's run:started/run:completed
212
+ // SSE events. Verify never enters the harness loop, but the SSE consumer keys on `type` and the
213
+ // shared envelope (`schemaVersion`/`runId`/`fingerprint`/`seq`/`ts`) so a deterministic shape lets
214
+ // the UI render a synthetic timeline alongside the workflow runs.
215
+ function emitVerifyStart(sink, runId, fingerprint, modelId) {
216
+ const event = {
217
+ schemaVersion: "1",
218
+ runId,
219
+ fingerprint,
220
+ seq: 0,
221
+ ts: Date.now(),
222
+ type: "run:started",
223
+ taskType: "verify",
224
+ modelId,
225
+ limits: DEFAULT_LIMITS,
226
+ };
227
+ sink.emit(event);
228
+ }
229
+ function emitVerifyComplete(sink, runId, fingerprint, report) {
230
+ const event = {
231
+ schemaVersion: "1",
232
+ runId,
233
+ fingerprint,
234
+ seq: 1,
235
+ ts: Date.now(),
236
+ type: "run:completed",
237
+ report: `verify overall=${report.overallStatus}`,
238
+ };
239
+ sink.emit(event);
240
+ }
241
+ // Starts a deterministic verify run via the verification orchestrator. No model loop is entered;
242
+ // the AbortController bridges the BFF cancel path to the orchestrator's signal. The two SSE events
243
+ // (`run:started`, `run:completed`) frame the run for any attached UI subscriber.
244
+ function dispatchVerify(ctx, sink, runId) {
245
+ const controller = new AbortController();
246
+ const fingerprint = workflowFingerprint(ctx.request);
247
+ const root = workspaceRoot(ctx.request);
248
+ emitVerifyStart(sink, runId, fingerprint, ctx.request.modelId);
249
+ const result = runVerify(ctx, controller.signal, root).then((report) => {
250
+ emitVerifyComplete(sink, runId, fingerprint, report);
251
+ return {
252
+ status: verifyStatusToRun(report.overallStatus),
253
+ report,
254
+ appliable: undefined,
255
+ };
256
+ });
257
+ return {
258
+ result,
259
+ cancel: (reason) => {
260
+ controller.abort(reason);
261
+ },
262
+ };
263
+ }
264
+ async function runVerify(ctx, signal, root) {
265
+ const workspace = detectWorkspace(root);
266
+ const catalog = detectScripts(workspace);
267
+ const targetFiles = readTargetFiles(ctx.request.input.targetFiles);
268
+ const plan = buildVerificationPlan(workspace, catalog, {
269
+ ...(targetFiles === undefined ? {} : { changedFiles: targetFiles }),
270
+ });
271
+ return runVerification(plan, { workspace, signal });
272
+ }
273
+ function readTargetFiles(value) {
274
+ if (!Array.isArray(value)) {
275
+ return undefined;
276
+ }
277
+ return value.filter((entry) => typeof entry === "string" && entry.length > 0);
278
+ }
279
+ // Registers the run, wires completion capture, and returns the synchronous {runId, fingerprint}. The
280
+ // caller (POST /api/runs) has already validated the request and resolved the ModelPort. Throws
281
+ // ActiveRunLimitError when the registry is at capacity (mapped to 429 upstream).
282
+ export function startRun(ctx, redactReport, options = {}) {
283
+ const sink = new QueueEventSink();
284
+ const startedAt = Date.now();
285
+ if (ctx.request.kind === "explain-plan") {
286
+ const { dispatched, runId, fingerprint } = dispatchExplain(ctx, sink, options.runId);
287
+ registerAndCapture(ctx, { runId, fingerprint, sink, startedAt }, dispatched, redactReport);
288
+ return { runId, fingerprint };
289
+ }
290
+ if (ctx.request.kind === "verify") {
291
+ const runId = options.runId ?? randomUUID();
292
+ const fingerprint = workflowFingerprint(ctx.request);
293
+ const dispatched = dispatchVerify(ctx, sink, runId);
294
+ registerAndCapture(ctx, { runId, fingerprint, sink, startedAt }, dispatched, redactReport);
295
+ return { runId, fingerprint };
296
+ }
297
+ const runId = options.runId ?? randomUUID();
298
+ const fingerprint = workflowFingerprint(ctx.request);
299
+ const dispatched = dispatchWorkflow(ctx, sink, runId);
300
+ registerAndCapture(ctx, { runId, fingerprint, sink, startedAt }, dispatched, redactReport);
301
+ return { runId, fingerprint };
302
+ }
303
+ function registerAndCapture(ctx, identity, dispatched, redactReport) {
304
+ ctx.registry.register({
305
+ runId: identity.runId,
306
+ fingerprint: identity.fingerprint,
307
+ modelId: ctx.request.modelId,
308
+ sink: identity.sink,
309
+ cancel: dispatched.cancel,
310
+ });
311
+ void dispatched.result
312
+ .then((outcome) => {
313
+ const evidence = persistOutcome(ctx, identity, outcome);
314
+ ctx.registry.complete(identity.runId, outcome.status, redactReport(attachEvidenceReport(outcome.report, evidence)), outcome.appliable);
315
+ })
316
+ .catch((error) => {
317
+ ctx.registry.complete(identity.runId, "failed", redactReport({ error: String(error) }), undefined);
318
+ })
319
+ .finally(() => {
320
+ identity.sink.closeAll();
321
+ });
322
+ }
323
+ // Persists a terminated run's redacted evidence manifest (AC5). Persistence errors intentionally
324
+ // surface to the final registry payload so a terminal UI run cannot silently omit required evidence.
325
+ function persistOutcome(ctx, identity, outcome) {
326
+ if (ctx.evidence === undefined) {
327
+ return undefined;
328
+ }
329
+ const runIdentity = {
330
+ runId: identity.runId,
331
+ fingerprint: identity.fingerprint,
332
+ modelId: ctx.request.modelId,
333
+ kind: ctx.request.kind,
334
+ status: outcome.status,
335
+ startedAt: identity.startedAt,
336
+ finishedAt: Date.now(),
337
+ workspaceRoot: workspaceRoot(ctx.request),
338
+ };
339
+ if (ctx.request.kind === "explain-plan" && outcome.result !== undefined) {
340
+ return persistExplainEvidence(runIdentity, outcome.result, ctx.evidence);
341
+ }
342
+ if (ctx.request.kind === "verify") {
343
+ return persistVerifyEvidence(runIdentity, ctx.evidence, ctx.request.governedHandoff === undefined
344
+ ? undefined
345
+ : buildGovernedHandoffEvidence({
346
+ request: ctx.request.governedHandoff,
347
+ sourceGroundedRunId: ctx.request.governedHandoffSourceGroundedRunId,
348
+ }));
349
+ }
350
+ return persistWorkflowEvidence(runIdentity, outcome.report, identity.sink.buffered(), ctx.evidence, ctx.request.governedHandoff === undefined
351
+ ? undefined
352
+ : buildGovernedHandoffEvidence({
353
+ request: ctx.request.governedHandoff,
354
+ sourceGroundedRunId: ctx.request.governedHandoffSourceGroundedRunId,
355
+ }));
356
+ }
357
+ function attachEvidenceReport(report, evidence) {
358
+ if (evidence === undefined) {
359
+ return report;
360
+ }
361
+ if (isRecord(report)) {
362
+ return { ...report, evidence };
363
+ }
364
+ return { report, evidence };
365
+ }
366
+ // Re-invokes a workflow with apply:true through the SAME gated entry point (D8). This is the only
367
+ // place the engine sets apply:true; it does not construct a patch or write a file — the workflow's
368
+ // own guards (isSensitivePath, patch limits, #6 applyEnabled) fire at its boundary. Awaits the
369
+ // apply+verify result and returns the redacted report. The model is resolved by the caller.
370
+ export async function applyRun(snapshot, model, modelId, redactReport) {
371
+ const input = isRecord(snapshot.payload) ? snapshot.payload : {};
372
+ const limitsOverride = snapshot.limits !== undefined ? { limits: snapshot.limits } : {};
373
+ const deps = snapshot.governedHandoff === undefined
374
+ ? { model }
375
+ : { model, workflowHandoff: snapshot.governedHandoff };
376
+ if (snapshot.kind === "unit-tests") {
377
+ const report = await generateUnitTests({ ...input, modelId, apply: true, ...limitsOverride }, deps);
378
+ return redactReport(report);
379
+ }
380
+ const report = await investigateBug({ ...input, modelId, apply: true, ...limitsOverride }, deps);
381
+ return redactReport(report);
382
+ }
383
+ function isRecord(value) {
384
+ return typeof value === "object" && value !== null && !Array.isArray(value);
385
+ }
@@ -0,0 +1,9 @@
1
+ import type { RouteContext, RouteResult, HandlerOutcome } from "./routes.js";
2
+ import type { UiHandlerDeps } from "./deps.js";
3
+ export declare function handleCreateRun(ctx: RouteContext, deps: UiHandlerDeps): Promise<RouteResult>;
4
+ export declare function handleCreateChatRun(ctx: RouteContext, deps: UiHandlerDeps): Promise<RouteResult>;
5
+ export declare function handleRunEvents(ctx: RouteContext, deps: UiHandlerDeps): HandlerOutcome;
6
+ export declare function handleCancelRun(ctx: RouteContext, deps: UiHandlerDeps): RouteResult;
7
+ export declare function handleGetRun(ctx: RouteContext, deps: UiHandlerDeps): RouteResult;
8
+ export declare function handleApplyRun(ctx: RouteContext, deps: UiHandlerDeps): Promise<RouteResult>;
9
+ //# sourceMappingURL=run-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-handlers.d.ts","sourceRoot":"","sources":["../src/run-handlers.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAuU/C,wBAAsB,eAAe,CACnC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAyCtB;AAMD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAqBtB;AAeD,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,cAAc,CAUtF;AA+BD,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,WAAW,CAOnF;AAGD,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,WAAW,CAYhF;AAuBD,wBAAsB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAwBjG"}