@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,154 @@
1
+ // Server-side orchestration for model-assisted salience capture (Keiko "learns from experience").
2
+ //
3
+ // After a chat turn, this module asks the model to extract durable, salient facts the USER stated
4
+ // in natural conversation and persists them as `proposed` memory candidates — IN ADDITION to the
5
+ // regex intent path in chat-handlers.ts. The capture filter is intentionally LOW; a later
6
+ // decay/consolidation pass prunes.
7
+ //
8
+ // This is the model/IO boundary: the WHOLE body runs inside one try/catch so a model error, a
9
+ // vault hiccup, or any other failure can NEVER throw into the chat path — it logs and returns [].
10
+ import { randomUUID } from "node:crypto";
11
+ import { redact } from "@oscharko-dev/keiko-security";
12
+ import { extractSalientMemories, memoryTextEgressRejectionReason, } from "@oscharko-dev/keiko-memory-capture";
13
+ import { currentRedactionSecrets } from "./deps.js";
14
+ import { conversationMemoryScopes, } from "./memory-conversation-context.js";
15
+ import { buildMemoryRecordFromProposal } from "./memory-record-builders.js";
16
+ import { insertSalienceMemoryWithNoveltyGate } from "./memory-embedding.js";
17
+ import { isPersistableMemoryCandidate, memoryCapturePolicyForDeps, SENSITIVE_MEMORY_REJECTION_REASON, } from "./memory-capture-policy.js";
18
+ // Mirror of chat-handlers' private scopeLabel (decision 3 — mirrored rather than exported to keep
19
+ // the modules decoupled). Pure and trivial.
20
+ function scopeLabel(scope) {
21
+ switch (scope.kind) {
22
+ case "user":
23
+ return "User memory";
24
+ case "workspace":
25
+ return "Workspace memory";
26
+ case "project":
27
+ return "Project memory";
28
+ case "workflow":
29
+ return "Workflow memory";
30
+ case "global":
31
+ return "Global memory";
32
+ }
33
+ }
34
+ // Bounds the dedup corpus so the Jaccard loop stays cheap even for a large vault.
35
+ const MAX_EXISTING_BODIES = 200;
36
+ function gatherExistingBodies(vault, context) {
37
+ const seen = new Set();
38
+ for (const scope of conversationMemoryScopes(context)) {
39
+ for (const record of vault.listMemoriesByScope(scope)) {
40
+ seen.add(record.body);
41
+ if (seen.size >= MAX_EXISTING_BODIES) {
42
+ return [...seen];
43
+ }
44
+ }
45
+ }
46
+ return [...seen];
47
+ }
48
+ function buildSalienceContext(context) {
49
+ return {
50
+ userId: context.userId,
51
+ nowMs: Date.now(),
52
+ newMemoryId: () => randomUUID(),
53
+ newProposalId: () => randomUUID(),
54
+ workspaceId: context.workspaceId,
55
+ projectId: context.projectId,
56
+ conversationId: context.conversationId,
57
+ };
58
+ }
59
+ function buildCallModel(deps, modelId) {
60
+ const model = deps.modelPortFactory(modelId);
61
+ if (model === undefined) {
62
+ return null;
63
+ }
64
+ return async (system, user) => {
65
+ const response = await model.call({
66
+ modelId,
67
+ messages: [
68
+ { role: "system", content: system },
69
+ { role: "user", content: user },
70
+ ],
71
+ stream: false,
72
+ }, new AbortController().signal);
73
+ return response.content;
74
+ };
75
+ }
76
+ function redactedErrorMessage(error, deps) {
77
+ const message = error instanceof Error ? error.message : String(error);
78
+ return redact(message, currentRedactionSecrets(deps));
79
+ }
80
+ // Persists one salience candidate and returns its wire action, or null when the outcome is not a
81
+ // candidate, no record could be built, or the candidate was merged into an existing semantic
82
+ // near-duplicate (#204, O-F1) instead of stored. Embed-on-capture happens INSIDE the novelty gate:
83
+ // the body is embedded once, used to detect a near-duplicate, and stored only when the record is
84
+ // actually inserted. Graceful when no embedding model is configured (plain insert, no dedup).
85
+ async function persistCandidate(deps, outcome, vault) {
86
+ if (outcome.kind !== "candidate") {
87
+ return null;
88
+ }
89
+ if (!isPersistableMemoryCandidate(outcome)) {
90
+ return { kind: "rejected", reason: SENSITIVE_MEMORY_REJECTION_REASON };
91
+ }
92
+ const proposalId = outcome.proposal.proposalId;
93
+ const record = buildMemoryRecordFromProposal(proposalId, outcome);
94
+ if (record === null) {
95
+ return null;
96
+ }
97
+ const { inserted } = await insertSalienceMemoryWithNoveltyGate(deps, vault, record);
98
+ if (inserted === null) {
99
+ // Near-duplicate of an existing in-scope memory: the canonical was reinforced, nothing new to
100
+ // surface. Over-capture is bounded at the encode boundary rather than deferred to a decay pass.
101
+ return null;
102
+ }
103
+ return {
104
+ kind: "candidate",
105
+ proposalId: String(inserted.id),
106
+ body: inserted.body,
107
+ scopeLabel: scopeLabel(inserted.scope),
108
+ requiresApproval: outcome.requiresApproval,
109
+ };
110
+ }
111
+ // Captures salient memories from a completed chat turn. Never throws — any failure (model error,
112
+ // vault error, malformed output) yields [] so the chat response is unaffected.
113
+ export async function captureSalientFromTurn(deps, request, context, modelId, assistantText) {
114
+ const vault = deps.memoryVault;
115
+ if (request.memory === undefined || !request.memory.enabled || vault === undefined) {
116
+ return [];
117
+ }
118
+ try {
119
+ const callModel = buildCallModel(deps, modelId);
120
+ if (callModel === null) {
121
+ return [];
122
+ }
123
+ const policy = memoryCapturePolicyForDeps(deps);
124
+ if (memoryTextEgressRejectionReason(request.content, policy) !== null) {
125
+ return [];
126
+ }
127
+ const outcomes = await extractSalientMemories({
128
+ userText: request.content,
129
+ assistantText,
130
+ existingBodies: gatherExistingBodies(vault, context),
131
+ context: buildSalienceContext(context),
132
+ policy,
133
+ }, {
134
+ callModel,
135
+ now: () => Date.now(),
136
+ newMemoryId: () => randomUUID(),
137
+ newProposalId: () => randomUUID(),
138
+ });
139
+ const actions = [];
140
+ for (const outcome of outcomes) {
141
+ const action = await persistCandidate(deps, outcome, vault);
142
+ if (action !== null) {
143
+ actions.push(action);
144
+ }
145
+ }
146
+ return actions;
147
+ }
148
+ catch (error) {
149
+ // Boundary: salience must never break the chat path. Log and continue.
150
+ // eslint-disable-next-line no-console
151
+ console.error("salience capture failed", redactedErrorMessage(error, deps));
152
+ return [];
153
+ }
154
+ }
@@ -0,0 +1,6 @@
1
+ import type { MemoryAuditEvent, MemoryScope } from "@oscharko-dev/keiko-contracts";
2
+ export declare function sanitizeMemoryScope(scope: MemoryScope, redactString: (input: string) => string): MemoryScope;
3
+ export declare function memoryScopeKey(scope: MemoryScope): string;
4
+ export declare function sanitizeAuditEvent(event: MemoryAuditEvent, redactString: (input: string) => string): MemoryAuditEvent;
5
+ export declare function auditEventTouchesScope(event: MemoryAuditEvent, allowedScopeKeys: ReadonlySet<string>): boolean;
6
+ //# sourceMappingURL=memory-scope-sanitizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-scope-sanitizer.d.ts","sourceRoot":"","sources":["../src/memory-scope-sanitizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAenF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACtC,WAAW,CAgCb;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAiBzD;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,gBAAgB,EACvB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GACtC,gBAAgB,CA+BlB;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,gBAAgB,EACvB,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,GACpC,OAAO,CAYT"}
@@ -0,0 +1,106 @@
1
+ import { createHash } from "node:crypto";
2
+ import { safeSummary } from "./memory-audit-event-builders.js";
3
+ function maskedCoordinate(value, redactString) {
4
+ if (value.startsWith("[redacted:") && value.endsWith("]")) {
5
+ return value;
6
+ }
7
+ const redacted = redactString(value);
8
+ if (redacted !== value) {
9
+ return redacted;
10
+ }
11
+ const digest = createHash("sha256").update(value).digest("hex").slice(0, 12);
12
+ return `[redacted:${digest}]`;
13
+ }
14
+ export function sanitizeMemoryScope(scope, redactString) {
15
+ switch (scope.kind) {
16
+ case "user":
17
+ return {
18
+ kind: "user",
19
+ userId: maskedCoordinate(scope.userId, redactString),
20
+ };
21
+ case "workspace":
22
+ return {
23
+ kind: "workspace",
24
+ workspaceId: maskedCoordinate(scope.workspaceId, redactString),
25
+ };
26
+ case "project":
27
+ return {
28
+ kind: "project",
29
+ projectId: maskedCoordinate(scope.projectId, redactString),
30
+ };
31
+ case "workflow":
32
+ return {
33
+ kind: "workflow",
34
+ workflowDefinitionId: maskedCoordinate(scope.workflowDefinitionId, redactString),
35
+ };
36
+ case "global":
37
+ return { kind: "global" };
38
+ default: {
39
+ const never = scope;
40
+ return never;
41
+ }
42
+ }
43
+ }
44
+ export function memoryScopeKey(scope) {
45
+ switch (scope.kind) {
46
+ case "user":
47
+ return `user:${scope.userId}`;
48
+ case "workspace":
49
+ return `workspace:${scope.workspaceId}`;
50
+ case "project":
51
+ return `project:${scope.projectId}`;
52
+ case "workflow":
53
+ return `workflow:${scope.workflowDefinitionId}`;
54
+ case "global":
55
+ return "global";
56
+ default: {
57
+ const never = scope;
58
+ return never;
59
+ }
60
+ }
61
+ }
62
+ export function sanitizeAuditEvent(event, redactString) {
63
+ const redactedSummary = safeSummary(event.summary, redactString);
64
+ switch (event.kind) {
65
+ case "memory:retrieved":
66
+ return {
67
+ ...event,
68
+ summary: redactedSummary,
69
+ scopes: event.scopes.map((scope) => sanitizeMemoryScope(scope, redactString)),
70
+ };
71
+ case "memory:workflow-used":
72
+ return { ...event, summary: redactedSummary };
73
+ case "memory:workflow-omitted":
74
+ return {
75
+ ...event,
76
+ summary: redactedSummary,
77
+ reason: safeSummary(event.reason, redactString),
78
+ scopes: event.scopes.map((scope) => sanitizeMemoryScope(scope, redactString)),
79
+ };
80
+ case "memory:workflow-write-candidate":
81
+ return {
82
+ ...event,
83
+ summary: redactedSummary,
84
+ scope: sanitizeMemoryScope(event.scope, redactString),
85
+ };
86
+ default:
87
+ return {
88
+ ...event,
89
+ summary: redactedSummary,
90
+ scope: sanitizeMemoryScope(event.scope, redactString),
91
+ };
92
+ }
93
+ }
94
+ export function auditEventTouchesScope(event, allowedScopeKeys) {
95
+ switch (event.kind) {
96
+ case "memory:retrieved":
97
+ case "memory:workflow-omitted":
98
+ return event.scopes.some((scope) => allowedScopeKeys.has(memoryScopeKey(scope)));
99
+ case "memory:workflow-used":
100
+ return false;
101
+ case "memory:workflow-write-candidate":
102
+ return allowedScopeKeys.has(memoryScopeKey(event.scope));
103
+ default:
104
+ return allowedScopeKeys.has(memoryScopeKey(event.scope));
105
+ }
106
+ }
@@ -0,0 +1,4 @@
1
+ import type { CaptureMemoryResolver } from "@oscharko-dev/keiko-memory-capture";
2
+ import type { MemoryVaultStore } from "@oscharko-dev/keiko-memory-vault";
3
+ export declare function createMemoryTargetResolver(vault: MemoryVaultStore): CaptureMemoryResolver;
4
+ //# sourceMappingURL=memory-target-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-target-resolver.d.ts","sourceRoot":"","sources":["../src/memory-target-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAEhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AA+EzE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,gBAAgB,GAAG,qBAAqB,CASzF"}
@@ -0,0 +1,73 @@
1
+ const TARGETABLE_STATUSES = [
2
+ "accepted",
3
+ "archived",
4
+ "conflicted",
5
+ "expired",
6
+ "superseded",
7
+ ];
8
+ const STOP_WORDS = new Set([
9
+ "a",
10
+ "an",
11
+ "about",
12
+ "for",
13
+ "i",
14
+ "is",
15
+ "it",
16
+ "me",
17
+ "memory",
18
+ "my",
19
+ "of",
20
+ "please",
21
+ "that",
22
+ "the",
23
+ "this",
24
+ "to",
25
+ "we",
26
+ ]);
27
+ function normalizePhrase(value) {
28
+ return value
29
+ .toLowerCase()
30
+ .replace(/[^a-z0-9]+/g, " ")
31
+ .trim();
32
+ }
33
+ function stemToken(token) {
34
+ const strippedPossessive = token.endsWith("'s") ? token.slice(0, -2) : token;
35
+ const suffixes = ["ence", "ance", "ing", "ers", "ies", "ied", "ed", "es", "s"];
36
+ for (const suffix of suffixes) {
37
+ if (strippedPossessive.length > suffix.length + 2 && strippedPossessive.endsWith(suffix)) {
38
+ return strippedPossessive.slice(0, -suffix.length);
39
+ }
40
+ }
41
+ return strippedPossessive;
42
+ }
43
+ function tokenize(value) {
44
+ return normalizePhrase(value)
45
+ .split(/\s+/)
46
+ .map(stemToken)
47
+ .filter((token) => token.length > 1 && !STOP_WORDS.has(token));
48
+ }
49
+ function tokensMatch(targetTokens, bodyTokens) {
50
+ if (targetTokens.length === 0) {
51
+ return false;
52
+ }
53
+ return targetTokens.every((target) => bodyTokens.some((body) => body === target || body.startsWith(target) || target.startsWith(body)));
54
+ }
55
+ function matchesTarget(target, record) {
56
+ const haystack = `${record.body} ${record.tags.join(" ")}`;
57
+ const normalizedTarget = normalizePhrase(target);
58
+ const normalizedHaystack = normalizePhrase(haystack);
59
+ if (normalizedTarget.length > 0 &&
60
+ (normalizedHaystack.includes(normalizedTarget) || normalizedTarget.includes(normalizedHaystack))) {
61
+ return true;
62
+ }
63
+ return tokensMatch(tokenize(target), tokenize(haystack));
64
+ }
65
+ export function createMemoryTargetResolver(vault) {
66
+ return (target, scope) => vault
67
+ .listMemoriesByScope(scope, {
68
+ status: TARGETABLE_STATUSES,
69
+ includeExpired: true,
70
+ })
71
+ .filter((record) => matchesTarget(target, record))
72
+ .map((record) => record.id);
73
+ }
@@ -0,0 +1,14 @@
1
+ import type { MemoryWorkflowPort } from "@oscharko-dev/keiko-contracts";
2
+ import type { MemoryVaultStore } from "@oscharko-dev/keiko-memory-vault";
3
+ import type { EvidenceStore } from "@oscharko-dev/keiko-evidence";
4
+ interface WorkflowMemoryPortOptions {
5
+ readonly vault: MemoryVaultStore;
6
+ readonly evidenceStore: EvidenceStore;
7
+ readonly runId: string;
8
+ readonly redactString: (input: string) => string;
9
+ readonly customerIdentifierMatchers?: readonly RegExp[] | undefined;
10
+ readonly now?: (() => number) | undefined;
11
+ }
12
+ export declare function createWorkflowMemoryPort(options: WorkflowMemoryPortOptions): MemoryWorkflowPort;
13
+ export {};
14
+ //# sourceMappingURL=memory-workflow-port.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-workflow-port.d.ts","sourceRoot":"","sources":["../src/memory-workflow-port.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAMV,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAOlE,UAAU,yBAAyB;IACjC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,QAAQ,CAAC,0BAA0B,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;CAC3C;AAoPD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CAsB/F"}
@@ -0,0 +1,186 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { extractCandidatesFromWorkflowOutcome, } from "@oscharko-dev/keiko-memory-capture";
3
+ import { retrieveMemoryContext } from "@oscharko-dev/keiko-memory-retrieval";
4
+ import { recordMemoryAudit, recordMemoryAudits } from "./memory-audit-handler.js";
5
+ import { vaultAsQueryPort } from "./memory-conv-handlers.js";
6
+ import { LOCAL_CONVERSATION_MEMORY_USER_ID } from "./memory-conversation-context.js";
7
+ import { buildMemoryRecordFromProposal } from "./memory-record-builders.js";
8
+ import { isPersistableMemoryCandidate } from "./memory-capture-policy.js";
9
+ function buildRetrievedAudit(occurredAt, scopes, matchedMemoryIds) {
10
+ if (matchedMemoryIds.length === 0) {
11
+ return undefined;
12
+ }
13
+ return {
14
+ schemaVersion: "1",
15
+ kind: "memory:retrieved",
16
+ eventId: randomUUID(),
17
+ occurredAt,
18
+ initiatorSurface: "workflow",
19
+ summary: matchedMemoryIds.length === 1
20
+ ? "Retrieved 1 memory for workflow context."
21
+ : `Retrieved ${String(matchedMemoryIds.length)} memories for workflow context.`,
22
+ scopes,
23
+ matchedMemoryIds,
24
+ };
25
+ }
26
+ function buildWorkflowOmittedAudit(options, occurredAt, event) {
27
+ return {
28
+ schemaVersion: "1",
29
+ kind: "memory:workflow-omitted",
30
+ eventId: randomUUID(),
31
+ occurredAt,
32
+ initiatorSurface: "workflow",
33
+ summary: `Workflow omitted memory (${event.reason}).`,
34
+ workflowRunId: options.runId,
35
+ scopes: event.scopes,
36
+ omittedMemoryId: event.memoryId,
37
+ reason: event.reason,
38
+ };
39
+ }
40
+ function recordWorkflowOmittedAudit(options, now, event) {
41
+ recordMemoryAudit({
42
+ evidenceStore: options.evidenceStore,
43
+ redactString: options.redactString,
44
+ now,
45
+ }, buildWorkflowOmittedAudit(options, now(), event));
46
+ }
47
+ function recordWorkflowRetrievalAudits(options, now, scopes, matchedMemoryIds, omittedMemories) {
48
+ const occurredAt = now();
49
+ const events = [];
50
+ const retrievedEvent = buildRetrievedAudit(occurredAt, scopes, matchedMemoryIds);
51
+ if (retrievedEvent !== undefined) {
52
+ events.push(retrievedEvent);
53
+ }
54
+ for (const omitted of omittedMemories) {
55
+ events.push(buildWorkflowOmittedAudit(options, occurredAt, {
56
+ memoryId: omitted.memoryId,
57
+ reason: omitted.reason,
58
+ scopes,
59
+ }));
60
+ }
61
+ recordMemoryAudits({
62
+ evidenceStore: options.evidenceStore,
63
+ redactString: options.redactString,
64
+ now,
65
+ }, events);
66
+ }
67
+ function recordWorkflowUsedAudit(options, now, event) {
68
+ recordMemoryAudit({
69
+ evidenceStore: options.evidenceStore,
70
+ redactString: options.redactString,
71
+ now,
72
+ }, {
73
+ schemaVersion: "1",
74
+ kind: "memory:workflow-used",
75
+ eventId: randomUUID(),
76
+ occurredAt: now(),
77
+ initiatorSurface: "workflow",
78
+ summary: event.memoryIds.length === 1
79
+ ? `Workflow used 1 memory (${event.reason}).`
80
+ : `Workflow used ${String(event.memoryIds.length)} memories (${event.reason}).`,
81
+ workflowRunId: options.runId,
82
+ usedMemoryIds: event.memoryIds,
83
+ });
84
+ }
85
+ function recordWorkflowWriteCandidateAudit(options, now, event, proposedMemoryIds) {
86
+ const auditEvent = {
87
+ schemaVersion: "1",
88
+ kind: "memory:workflow-write-candidate",
89
+ eventId: randomUUID(),
90
+ occurredAt: now(),
91
+ initiatorSurface: "workflow",
92
+ summary: proposedMemoryIds.length === 0
93
+ ? `Workflow produced a memory write candidate that was not eligible for review (${event.source}).`
94
+ : proposedMemoryIds.length === 1
95
+ ? `Workflow produced 1 governed memory write candidate (${event.source}).`
96
+ : `Workflow produced ${String(proposedMemoryIds.length)} governed memory write candidates (${event.source}).`,
97
+ workflowRunId: options.runId,
98
+ source: event.source,
99
+ scope: event.scope,
100
+ proposedMemoryIds,
101
+ };
102
+ recordMemoryAudit({
103
+ evidenceStore: options.evidenceStore,
104
+ redactString: options.redactString,
105
+ now,
106
+ }, auditEvent);
107
+ }
108
+ function persistWorkflowCandidates(options, event, capturedAt) {
109
+ const outcomes = extractCandidatesFromWorkflowOutcome({
110
+ runId: options.runId,
111
+ outcomeKind: event.source === "workflow-correction" ? "corrected" : "success",
112
+ structuredReport: event.proposalSummary,
113
+ capturedAt,
114
+ }, captureContextFor(event.scope, capturedAt, options.runId), {
115
+ scopeKind: event.scope.kind,
116
+ ...(options.customerIdentifierMatchers === undefined
117
+ ? {}
118
+ : { customerIdentifierMatchers: options.customerIdentifierMatchers }),
119
+ });
120
+ const proposedMemoryIds = [];
121
+ for (const outcome of outcomes) {
122
+ if (!isPersistableMemoryCandidate(outcome)) {
123
+ continue;
124
+ }
125
+ const proposalId = outcome.proposal.proposalId;
126
+ const record = buildMemoryRecordFromProposal(proposalId, outcome);
127
+ if (record !== null) {
128
+ options.vault.insertMemory(record);
129
+ proposedMemoryIds.push(record.id);
130
+ }
131
+ }
132
+ return proposedMemoryIds;
133
+ }
134
+ function captureContextFor(scope, nowMs, runId) {
135
+ return {
136
+ userId: LOCAL_CONVERSATION_MEMORY_USER_ID,
137
+ ...(scope.kind === "workspace" ? { workspaceId: scope.workspaceId } : {}),
138
+ ...(scope.kind === "project" ? { projectId: scope.projectId } : {}),
139
+ sourceWorkflowRunId: runId,
140
+ ...(scope.kind === "workflow"
141
+ ? {
142
+ workflowDefinitionId: scope.workflowDefinitionId,
143
+ }
144
+ : {}),
145
+ nowMs,
146
+ newMemoryId: () => randomUUID(),
147
+ newProposalId: () => randomUUID(),
148
+ };
149
+ }
150
+ function createWorkflowContextGetter(options, now, queryPort) {
151
+ return (scopes, queryText, budgetTokens) => {
152
+ const result = retrieveMemoryContext({
153
+ scopes,
154
+ nowMs: now(),
155
+ ...(queryText === undefined ? {} : { queryText }),
156
+ ...(budgetTokens === undefined ? {} : { budgetTokens }),
157
+ }, queryPort);
158
+ recordWorkflowRetrievalAudits(options, now, scopes, result.included.map((item) => item.memoryId), result.omitted);
159
+ return Promise.resolve({
160
+ text: result.contextBlock.text,
161
+ includedMemoryIds: result.contextBlock.memories.map((item) => item.memoryId),
162
+ });
163
+ };
164
+ }
165
+ export function createWorkflowMemoryPort(options) {
166
+ const now = options.now ?? Date.now;
167
+ const queryPort = vaultAsQueryPort(options.vault);
168
+ return {
169
+ getContextForWorkflow: createWorkflowContextGetter(options, now, queryPort),
170
+ onMemoryUsed(event) {
171
+ recordWorkflowUsedAudit(options, now, event);
172
+ },
173
+ onMemoryOmitted(event) {
174
+ recordWorkflowOmittedAudit(options, now, {
175
+ memoryId: event.memoryId,
176
+ reason: event.reason,
177
+ scopes: [],
178
+ });
179
+ },
180
+ onMemoryWriteCandidate(event) {
181
+ const capturedAt = now();
182
+ const proposedMemoryIds = persistWorkflowCandidates(options, event, capturedAt);
183
+ recordWorkflowWriteCandidateAudit(options, () => capturedAt, event, proposedMemoryIds);
184
+ },
185
+ };
186
+ }
@@ -0,0 +1,3 @@
1
+ export declare function savePrivateJson(path: string, raw: Record<string, unknown>): void;
2
+ export declare function assertNoSymlinkedPathSegments(resolvedPath: string): void;
3
+ //# sourceMappingURL=private-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"private-json.d.ts","sourceRoot":"","sources":["../src/private-json.ts"],"names":[],"mappings":"AAoBA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAgChF;AAED,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAQxE"}
@@ -0,0 +1,62 @@
1
+ // Atomic, private-permission JSON writer for local runtime files (keiko.config.json and siblings).
2
+ //
3
+ // Extracted from gateway-setup so the first-run setup writer and the one-time credential migration
4
+ // share ONE crash-safe write path (Issue #1320): a fresh temp file in the same directory is written
5
+ // with 0600, then renamed over the target so a reader never observes a partially written file. Every
6
+ // path segment is checked for symlinks first so a hostile symlink cannot redirect the write outside
7
+ // the intended private directory.
8
+ import { chmodSync, existsSync, lstatSync, mkdirSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
9
+ import { dirname, join, resolve } from "node:path";
10
+ import { randomUUID } from "node:crypto";
11
+ export function savePrivateJson(path, raw) {
12
+ const resolvedPath = resolve(path);
13
+ const dir = dirname(resolvedPath);
14
+ assertNoSymlinkedPathSegments(resolvedPath);
15
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
16
+ assertNoSymlinkedPathSegments(resolvedPath);
17
+ if (process.platform !== "win32") {
18
+ chmodSync(dir, 0o700);
19
+ }
20
+ const tempPath = join(dir, `.keiko-config.${String(process.pid)}.${Date.now().toString(36)}.${randomUUID()}.tmp`);
21
+ try {
22
+ writeFileSync(tempPath, `${JSON.stringify(raw, null, 2)}\n`, {
23
+ encoding: "utf8",
24
+ flag: "wx",
25
+ mode: 0o600,
26
+ });
27
+ if (process.platform !== "win32") {
28
+ chmodSync(tempPath, 0o600);
29
+ }
30
+ renameSync(tempPath, resolvedPath);
31
+ }
32
+ finally {
33
+ if (existsSync(tempPath)) {
34
+ try {
35
+ unlinkSync(tempPath);
36
+ }
37
+ catch {
38
+ // Best-effort cleanup only.
39
+ }
40
+ }
41
+ }
42
+ }
43
+ export function assertNoSymlinkedPathSegments(resolvedPath) {
44
+ let current = resolvedPath;
45
+ while (current !== dirname(current)) {
46
+ if (isSymlink(current)) {
47
+ throw new Error("refusing to write gateway config through a symlinked path");
48
+ }
49
+ current = dirname(current);
50
+ }
51
+ }
52
+ function isSymlink(path) {
53
+ try {
54
+ return lstatSync(path).isSymbolicLink();
55
+ }
56
+ catch (error) {
57
+ if (error.code === "ENOENT") {
58
+ return false;
59
+ }
60
+ throw error;
61
+ }
62
+ }
@@ -0,0 +1,3 @@
1
+ export { handlePromptEnhancement, handlePromptEnhancementEvidence } from "./routes.js";
2
+ export { PromptEnhancementCancelledError, PromptEnhancementInputError, buildPromptEnhancementRecordInput, runPromptEnhancement, type RunPromptEnhancementDeps, } from "./orchestrate.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/promptEnhancer/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,iCAAiC,EACjC,oBAAoB,EACpB,KAAK,wBAAwB,GAC9B,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Public barrel for the Prompt Enhancer server sub-module (Epic #1307, Issue #1314; ADR-0044 §1).
2
+ // Exposes the BFF route handler and the reusable, deterministic orchestration the CLI surface also
3
+ // drives (so both surfaces produce byte-identical enhancements — AC1).
4
+ export { handlePromptEnhancement, handlePromptEnhancementEvidence } from "./routes.js";
5
+ export { PromptEnhancementCancelledError, PromptEnhancementInputError, buildPromptEnhancementRecordInput, runPromptEnhancement, } from "./orchestrate.js";
@@ -0,0 +1,2 @@
1
+ export { PromptEnhancementCancelledError, PromptEnhancementInputError, buildPromptEnhancementRecordInput, promptEnhancementGatewayRoutingConfig, runPromptEnhancement, type PromptEnhancementGatewayRoutingConfig, type RunPromptEnhancementDeps, } from "@oscharko-dev/keiko-workflows";
2
+ //# sourceMappingURL=orchestrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrate.d.ts","sourceRoot":"","sources":["../../src/promptEnhancer/orchestrate.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,iCAAiC,EACjC,qCAAqC,EACrC,oBAAoB,EACpB,KAAK,qCAAqC,EAC1C,KAAK,wBAAwB,GAC9B,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Compatibility barrel for the Prompt Enhancer workflow authority.
2
+ //
3
+ // The lifecycle lives in `@oscharko-dev/keiko-workflows/promptEnhancer` per ADR-0044; server callers
4
+ // keep importing from this path so existing route and public server exports stay stable.
5
+ export { PromptEnhancementCancelledError, PromptEnhancementInputError, buildPromptEnhancementRecordInput, promptEnhancementGatewayRoutingConfig, runPromptEnhancement, } from "@oscharko-dev/keiko-workflows";