@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,348 @@
1
+ // Governed coding-context providers (Issue #1211, ADR-0042 D6). Each provider wraps an EXISTING
2
+ // retrieval seam and returns redacted, byte-bounded excerpt candidates plus a content-free omission
3
+ // when the source is unavailable, not-ready, denied, or excluded for the request's purpose. No
4
+ // provider invents retrieval logic: repo-search reuses keiko-workspace `searchText`/`readExcerpt`,
5
+ // Local Knowledge reuses the query-only `runLocalKnowledgeRetrieval` path (no answer generation), and
6
+ // memory reuses the `retrieveMemoryContext` pipeline already wired for /api/memory/context. Retrieved
7
+ // text is untrusted model input (OWASP LLM08/LLM01): every candidate is tagged with its source tier
8
+ // (by the orchestrator) and stripped of unsafe format characters before it can reach a model or the
9
+ // harness.
10
+ import { stripUnsafeFormatChars, } from "@oscharko-dev/keiko-contracts";
11
+ import { DEFAULT_SEARCH_LIMITS, detectWorkspaceAt, readExcerpt, searchText, } from "@oscharko-dev/keiko-workspace";
12
+ import { nodeWorkspaceFs } from "@oscharko-dev/keiko-workspace/internal/fs";
13
+ import { readCitationExcerpt } from "@oscharko-dev/keiko-local-knowledge";
14
+ import { retrieveMemoryContext } from "@oscharko-dev/keiko-memory-retrieval";
15
+ import { memoryTextEgressRejectionReason } from "@oscharko-dev/keiko-memory-capture";
16
+ import { openStoreForDeps } from "../local-knowledge-grounded-qa.js";
17
+ import { vaultAsQueryPort } from "../memory-conv-handlers.js";
18
+ import { LOCAL_CONVERSATION_MEMORY_USER_ID } from "../memory-conversation-context.js";
19
+ import { memoryCapturePolicyForDeps } from "../memory-capture-policy.js";
20
+ import { buildConversationRetrievalSignals, conversationFusionMode, } from "../memory-retrieval-signals.js";
21
+ import { buildLocalKnowledgeScope, retrieveEditorLocalKnowledge, } from "./localKnowledgeRetrieval.js";
22
+ const REPO_SEARCH_MAX_HITS = 6;
23
+ const FILES_FOCUS_MAX_LINES = 240;
24
+ const FILES_FOCUS_MAX_CHANGED_FILES = 4;
25
+ const LOCAL_KNOWLEDGE_MAX_REFERENCES = 8;
26
+ const MEMORY_MAX_ENTRIES = 8;
27
+ const MAX_CITATION_REF_CHARS = 160;
28
+ function basename(scopePath) {
29
+ const parts = scopePath.split("/");
30
+ return parts[parts.length - 1] ?? scopePath;
31
+ }
32
+ // strip-then-redact, mirroring grounded-qa redactString: format-char stripping first (GRD-001)
33
+ // prevents Trojan-source splits from confusing the redactor; the redactor then removes secrets.
34
+ function redactExcerpt(deps, text) {
35
+ return String(deps.redactor(stripUnsafeFormatChars(text)));
36
+ }
37
+ function sanitizeCitationRef(ctx, citationRef) {
38
+ if (citationRef === undefined) {
39
+ return undefined;
40
+ }
41
+ const redacted = String(ctx.deps.redactor(stripUnsafeFormatChars(citationRef)));
42
+ let out = "";
43
+ let pendingSpace = false;
44
+ for (const char of redacted) {
45
+ const code = char.codePointAt(0) ?? 0;
46
+ if (code <= 0x20 || code === 0x7f) {
47
+ pendingSpace = out.length > 0;
48
+ continue;
49
+ }
50
+ if (pendingSpace) {
51
+ out += " ";
52
+ pendingSpace = false;
53
+ }
54
+ out += char;
55
+ if (out.length >= MAX_CITATION_REF_CHARS) {
56
+ break;
57
+ }
58
+ }
59
+ const trimmed = out.trim();
60
+ return trimmed.length > 0 ? trimmed : undefined;
61
+ }
62
+ // UTF-8-safe byte clamp (no multi-byte split).
63
+ function clampToBytes(text, maxBytes) {
64
+ if (maxBytes <= 0) {
65
+ return { text: "", truncated: true };
66
+ }
67
+ const encoded = new TextEncoder().encode(text);
68
+ if (encoded.length <= maxBytes) {
69
+ return { text, truncated: false };
70
+ }
71
+ const decoded = new TextDecoder("utf-8", { fatal: false })
72
+ .decode(encoded.subarray(0, maxBytes))
73
+ .replace(/�+$/u, "");
74
+ return { text: decoded, truncated: true };
75
+ }
76
+ function prepareExcerpt(ctx, raw) {
77
+ const redacted = redactExcerpt(ctx.deps, raw.text);
78
+ const clamped = clampToBytes(redacted, ctx.maxBytesPerExcerpt);
79
+ if (clamped.text.length === 0) {
80
+ return undefined;
81
+ }
82
+ return {
83
+ sourceKind: raw.sourceKind,
84
+ id: raw.id,
85
+ score: raw.score,
86
+ citationRef: sanitizeCitationRef(ctx, raw.citationRef),
87
+ text: clamped.text,
88
+ // truncated if the upstream read clamped OR our per-excerpt cap clamped.
89
+ truncated: (raw.truncated ?? false) || clamped.truncated,
90
+ };
91
+ }
92
+ function omission(sourceKind, reason) {
93
+ return { sourceKind, reason };
94
+ }
95
+ function buildScope(realRoot, relativePaths) {
96
+ return {
97
+ workspace: detectWorkspaceAt(realRoot, nodeWorkspaceFs),
98
+ scopeId: "editor-coding-context",
99
+ relativePaths,
100
+ };
101
+ }
102
+ function buildQuery(text, symbol, nowMs) {
103
+ return {
104
+ kind: symbol !== undefined ? "exact-symbol" : "natural-language",
105
+ text,
106
+ caseSensitive: false,
107
+ maxResults: REPO_SEARCH_MAX_HITS,
108
+ emittedAtMs: nowMs,
109
+ };
110
+ }
111
+ async function readHitExcerpt(signal, scope, atom, maxBytes) {
112
+ const startLine = atom.lineRange?.startLine ?? 1;
113
+ const endLine = atom.lineRange?.endLine ?? startLine;
114
+ try {
115
+ const result = await readExcerpt(scope, {
116
+ scopePath: atom.scopePath,
117
+ startLine,
118
+ endLine,
119
+ maxBytes,
120
+ }, { signal });
121
+ return { content: result.content, truncated: result.truncated };
122
+ }
123
+ catch {
124
+ return undefined;
125
+ }
126
+ }
127
+ // AbortSignal.aborted is a live getter that can flip true across an await, but TS narrows it to
128
+ // `false` after an early-return guard. Reading it through this helper defeats that narrowing so the
129
+ // cooperative cancellation checks stay live (and lint-clean).
130
+ function isAborted(signal) {
131
+ return signal.aborted;
132
+ }
133
+ // ─── files-focus + repo-search provider ─────────────────────────────────────────────
134
+ // Grounds the model in the active document and the top lexical hits for the symbol/query, all from
135
+ // the contained workspace via the governed keiko-workspace facade (deny/realpath/size enforced there).
136
+ async function readFocusExcerpt(ctx, scope, documentPath, score = 1) {
137
+ try {
138
+ const focus = await readExcerpt(scope, {
139
+ scopePath: documentPath,
140
+ startLine: 1,
141
+ endLine: FILES_FOCUS_MAX_LINES,
142
+ maxBytes: ctx.maxBytesPerExcerpt,
143
+ }, { signal: ctx.signal });
144
+ return prepareExcerpt(ctx, {
145
+ sourceKind: "files-focus",
146
+ id: focus.atom.stableId,
147
+ score,
148
+ citationRef: basename(documentPath),
149
+ text: focus.content,
150
+ truncated: focus.truncated,
151
+ });
152
+ }
153
+ catch {
154
+ return "denied";
155
+ }
156
+ }
157
+ async function searchHitExcerpts(ctx, scope, term, symbol) {
158
+ let hits;
159
+ try {
160
+ hits = await searchText(scope, buildQuery(term, symbol, ctx.nowMs), DEFAULT_SEARCH_LIMITS, {
161
+ signal: ctx.signal,
162
+ });
163
+ }
164
+ catch {
165
+ return "unavailable";
166
+ }
167
+ const excerpts = [];
168
+ for (const atom of hits.atoms.slice(0, REPO_SEARCH_MAX_HITS)) {
169
+ if (isAborted(ctx.signal)) {
170
+ break;
171
+ }
172
+ const hit = await readHitExcerpt(ctx.signal, scope, atom, ctx.maxBytesPerExcerpt);
173
+ if (hit === undefined) {
174
+ continue;
175
+ }
176
+ const prepared = prepareExcerpt(ctx, {
177
+ sourceKind: "repo-search",
178
+ id: atom.stableId,
179
+ score: atom.score,
180
+ citationRef: basename(atom.scopePath),
181
+ text: hit.content,
182
+ truncated: hit.truncated,
183
+ });
184
+ if (prepared !== undefined) {
185
+ excerpts.push(prepared);
186
+ }
187
+ }
188
+ return excerpts;
189
+ }
190
+ async function readFocusExcerpts(ctx, scope, documentPath, changedFiles) {
191
+ const focus = await readFocusExcerpt(ctx, scope, documentPath);
192
+ if (focus === "denied") {
193
+ return "denied";
194
+ }
195
+ const excerpts = focus !== undefined ? [focus] : [];
196
+ for (const changed of (changedFiles ?? []).slice(0, FILES_FOCUS_MAX_CHANGED_FILES)) {
197
+ if (changed === documentPath || isAborted(ctx.signal)) {
198
+ continue;
199
+ }
200
+ const changedFocus = await readFocusExcerpt(ctx, scope, changed, 0.85);
201
+ if (changedFocus !== undefined && changedFocus !== "denied") {
202
+ excerpts.push(changedFocus);
203
+ }
204
+ }
205
+ return excerpts;
206
+ }
207
+ export async function runRepoSearchProvider(ctx, input) {
208
+ if (isAborted(ctx.signal)) {
209
+ return { excerpts: [], omission: omission("repo-search", "unavailable") };
210
+ }
211
+ const focusPaths = [input.documentPath, ...(input.changedFiles ?? [])];
212
+ const focusScope = buildScope(ctx.realRoot, focusPaths);
213
+ const searchScope = buildScope(ctx.realRoot, []);
214
+ const excerpts = await readFocusExcerpts(ctx, focusScope, input.documentPath, input.changedFiles);
215
+ if (excerpts === "denied") {
216
+ return { excerpts: [], omission: omission("files-focus", "denied") };
217
+ }
218
+ const term = input.symbol ?? input.queryText ?? basename(input.documentPath);
219
+ if (term.trim().length === 0 || isAborted(ctx.signal)) {
220
+ return { excerpts, omission: undefined };
221
+ }
222
+ const hits = await searchHitExcerpts(ctx, searchScope, term, input.symbol);
223
+ if (hits === "unavailable") {
224
+ return { excerpts, omission: omission("repo-search", "unavailable") };
225
+ }
226
+ return { excerpts: [...excerpts, ...hits], omission: undefined };
227
+ }
228
+ // ─── Local Knowledge provider (query-only, no answer generation) ─────────────────────
229
+ function localKnowledgeExcerpts(ctx, store, references) {
230
+ const excerpts = [];
231
+ for (const reference of references.slice(0, LOCAL_KNOWLEDGE_MAX_REFERENCES)) {
232
+ if (isAborted(ctx.signal)) {
233
+ break;
234
+ }
235
+ const text = readCitationExcerpt(store, reference.capsuleId, reference.citation);
236
+ const prepared = prepareExcerpt(ctx, {
237
+ sourceKind: "local-knowledge",
238
+ id: reference.chunkId,
239
+ score: reference.score,
240
+ citationRef: reference.citation.safeDisplayName,
241
+ text,
242
+ });
243
+ if (prepared !== undefined) {
244
+ excerpts.push(prepared);
245
+ }
246
+ }
247
+ return excerpts;
248
+ }
249
+ export async function runLocalKnowledgeProvider(ctx, input) {
250
+ const query = input.queryText;
251
+ if (query === undefined || query.trim().length === 0) {
252
+ return { excerpts: [], omission: omission("local-knowledge", "unavailable") };
253
+ }
254
+ const scope = buildLocalKnowledgeScope(input.capsuleId, input.capsuleSetId);
255
+ if (scope === undefined) {
256
+ return { excerpts: [], omission: omission("local-knowledge", "unavailable") };
257
+ }
258
+ let env;
259
+ try {
260
+ env = openStoreForDeps(ctx.deps);
261
+ }
262
+ catch {
263
+ return { excerpts: [], omission: omission("local-knowledge", "unavailable") };
264
+ }
265
+ try {
266
+ const outcome = await retrieveEditorLocalKnowledge(ctx.deps, env.store, scope, query, ctx.signal);
267
+ if (outcome.kind === "conflict") {
268
+ return { excerpts: [], omission: omission("local-knowledge", "denied") };
269
+ }
270
+ if (outcome.kind === "not-ready" || outcome.noEvidence) {
271
+ return { excerpts: [], omission: omission("local-knowledge", "not-ready") };
272
+ }
273
+ return {
274
+ excerpts: localKnowledgeExcerpts(ctx, env.store, outcome.references),
275
+ omission: undefined,
276
+ };
277
+ }
278
+ catch {
279
+ return { excerpts: [], omission: omission("local-knowledge", "unavailable") };
280
+ }
281
+ finally {
282
+ env.close();
283
+ }
284
+ }
285
+ // ─── Memory provider (query-only, reuses retrieveMemoryContext) ───────────────────────
286
+ function editorMemoryScopes(realRoot) {
287
+ return [
288
+ { kind: "workspace", workspaceId: realRoot },
289
+ { kind: "project", projectId: realRoot },
290
+ { kind: "user", userId: LOCAL_CONVERSATION_MEMORY_USER_ID },
291
+ { kind: "global" },
292
+ ];
293
+ }
294
+ async function runMemoryRetrieval(ctx, vault, queryText, scopes) {
295
+ if (isAborted(ctx.signal)) {
296
+ throw new Error("memory retrieval aborted");
297
+ }
298
+ // Embedding egress gate (#204 O-F4): never send a secret-shaped query to the secondary embedding
299
+ // model — identical to the conversation memory path.
300
+ const safeForSecondaryModel = queryText === undefined ||
301
+ memoryTextEgressRejectionReason(queryText, memoryCapturePolicyForDeps(ctx.deps)) === null;
302
+ const signals = await buildConversationRetrievalSignals(ctx.deps, vault, queryText, scopes, ctx.nowMs, safeForSecondaryModel, ctx.signal);
303
+ if (isAborted(ctx.signal)) {
304
+ throw new Error("memory retrieval aborted");
305
+ }
306
+ return retrieveMemoryContext({
307
+ scopes,
308
+ nowMs: ctx.nowMs,
309
+ maxIncluded: MEMORY_MAX_ENTRIES,
310
+ budgetTokens: Math.max(1, Math.ceil((ctx.maxBytesPerExcerpt * MEMORY_MAX_ENTRIES) / 4)),
311
+ ...(queryText !== undefined ? { queryText } : {}),
312
+ fusion: conversationFusionMode(ctx.deps),
313
+ ...(signals.semanticById !== undefined ? { semanticById: signals.semanticById } : {}),
314
+ ...(signals.strengthById.size > 0 ? { strengthById: signals.strengthById } : {}),
315
+ ...(signals.embeddingById.size > 0 ? { embeddingById: signals.embeddingById } : {}),
316
+ }, vaultAsQueryPort(vault));
317
+ }
318
+ function memoryExcerpts(ctx, result) {
319
+ const scoreById = new Map(result.included.map((item) => [item.memoryId, item.score]));
320
+ const excerpts = [];
321
+ for (const entry of result.contextBlock.memories.slice(0, MEMORY_MAX_ENTRIES)) {
322
+ const prepared = prepareExcerpt(ctx, {
323
+ sourceKind: "memory",
324
+ id: entry.memoryId,
325
+ score: scoreById.get(entry.memoryId) ?? entry.confidence,
326
+ citationRef: entry.inclusionReason,
327
+ text: entry.bodyExcerpt,
328
+ });
329
+ if (prepared !== undefined) {
330
+ excerpts.push(prepared);
331
+ }
332
+ }
333
+ return excerpts;
334
+ }
335
+ export async function runMemoryProvider(ctx, input) {
336
+ const vault = ctx.deps.memoryVault;
337
+ if (vault === undefined) {
338
+ return { excerpts: [], omission: omission("memory", "unavailable") };
339
+ }
340
+ let result;
341
+ try {
342
+ result = await runMemoryRetrieval(ctx, vault, input.queryText, editorMemoryScopes(ctx.realRoot));
343
+ }
344
+ catch {
345
+ return { excerpts: [], omission: omission("memory", "unavailable") };
346
+ }
347
+ return { excerpts: memoryExcerpts(ctx, result), omission: undefined };
348
+ }
@@ -0,0 +1,16 @@
1
+ import type { CompletionInteractionMode, UsageMetadata } from "@oscharko-dev/keiko-contracts";
2
+ import type { EvidenceStore } from "@oscharko-dev/keiko-contracts";
3
+ import type { Redactor } from "../deps.js";
4
+ export declare const EDITOR_COMPLETION_MODEL_EVIDENCE_SCHEMA_VERSION: "1";
5
+ export interface EditorCompletionModelEvidenceInput {
6
+ readonly modelId: string;
7
+ readonly modelMode: CompletionInteractionMode;
8
+ readonly latencyClass: string | undefined;
9
+ readonly gatewayPolicyVersion: string;
10
+ readonly promptHash: string;
11
+ readonly itemCount: number;
12
+ readonly truncated: boolean;
13
+ readonly usage: UsageMetadata | undefined;
14
+ }
15
+ export declare function recordEditorCompletionModelEvidence(store: EvidenceStore, redactor: Redactor, input: EditorCompletionModelEvidenceInput, emittedAtMs: number): string;
16
+ //# sourceMappingURL=completionModelEvidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completionModelEvidence.d.ts","sourceRoot":"","sources":["../../src/editor/completionModelEvidence.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,yBAAyB,EACzB,aAAa,EACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,+CAA+C,EAAG,GAAY,CAAC;AAE5E,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;CAC3C;AAkBD,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,kCAAkC,EACzC,WAAW,EAAE,MAAM,GAClB,MAAM,CA+BR"}
@@ -0,0 +1,50 @@
1
+ // Content-free audit linkage for governed editor completion model calls (Issue #1199). The record
2
+ // carries only model ids, policy/version ids, prompt hash, item counts, and Gateway usage metadata.
3
+ // It never persists prompts, overlay text, retrieved context, or generated insert text.
4
+ import { createHash } from "node:crypto";
5
+ export const EDITOR_COMPLETION_MODEL_EVIDENCE_SCHEMA_VERSION = "1";
6
+ function completionModelEvidenceRunId(input, emittedAtMs) {
7
+ const material = [
8
+ input.modelId,
9
+ input.modelMode,
10
+ input.gatewayPolicyVersion,
11
+ input.promptHash,
12
+ String(emittedAtMs),
13
+ input.usage?.requestId ?? "no-gateway-request",
14
+ ].join("\n");
15
+ const digest = createHash("sha256").update(material).digest("hex").slice(0, 16);
16
+ return `editor-completion-model-${digest}`;
17
+ }
18
+ export function recordEditorCompletionModelEvidence(store, redactor, input, emittedAtMs) {
19
+ const runId = completionModelEvidenceRunId(input, emittedAtMs);
20
+ const manifest = {
21
+ editorCompletionModelSchemaVersion: EDITOR_COMPLETION_MODEL_EVIDENCE_SCHEMA_VERSION,
22
+ runId,
23
+ emittedAtMs,
24
+ modelId: input.modelId,
25
+ modelMode: input.modelMode,
26
+ latencyClass: input.latencyClass,
27
+ gatewayPolicyVersion: input.gatewayPolicyVersion,
28
+ promptHash: input.promptHash,
29
+ itemCount: input.itemCount,
30
+ truncated: input.truncated,
31
+ ...(input.usage === undefined
32
+ ? {}
33
+ : {
34
+ usage: {
35
+ requestId: input.usage.requestId,
36
+ promptTokens: input.usage.promptTokens,
37
+ completionTokens: input.usage.completionTokens,
38
+ latencyMs: input.usage.latencyMs,
39
+ costClass: input.usage.costClass,
40
+ },
41
+ }),
42
+ };
43
+ try {
44
+ store.put(runId, JSON.stringify(redactor(manifest)));
45
+ }
46
+ catch {
47
+ // Evidence persistence is best-effort; a write failure must not break editing.
48
+ }
49
+ return runId;
50
+ }
@@ -0,0 +1,37 @@
1
+ import { type LanguageServiceLimits } from "@oscharko-dev/keiko-contracts";
2
+ import type { GatewayConfig } from "@oscharko-dev/keiko-model-gateway";
3
+ import { type RouteContext, type RouteResult } from "../routes.js";
4
+ import { type UiHandlerDeps } from "../deps.js";
5
+ import { type ModelChatFn } from "./editorCompletionModel.js";
6
+ import { type EditorModelTokenBudget } from "./editorModelTokenBudget.js";
7
+ export declare const COMPLETION_LANGUAGE_SERVICE_LIMITS: {
8
+ readonly deadlineMs: 500;
9
+ readonly maxDocumentBytes: number;
10
+ readonly maxCompletionItems: number;
11
+ readonly maxDiagnostics: number;
12
+ readonly maxSymbols: number;
13
+ readonly maxFormattingEdits: number;
14
+ readonly maxHoverChars: number;
15
+ readonly maxLabelChars: number;
16
+ readonly maxDetailChars: number;
17
+ readonly maxDocumentationChars: number;
18
+ readonly maxMessageChars: number;
19
+ readonly maxWorkspaceReadBytes: number;
20
+ readonly maxWorkspaceReadFileBytes: number;
21
+ readonly maxWorkspaceReadFiles: number;
22
+ };
23
+ /** Builds the chat function for the elected model. Injectable so tests avoid a live model call. */
24
+ export type CompletionChatFactory = (config: GatewayConfig, modelId: string) => ModelChatFn;
25
+ export interface EditorCompletionRouteOptions {
26
+ readonly chatFactory?: CompletionChatFactory | undefined;
27
+ /** Injectable per-root token budget (tests supply a fresh one); defaults to a shared instance. */
28
+ readonly tokenBudget?: EditorModelTokenBudget | undefined;
29
+ /** Injectable clock for the token budget; defaults to `Date.now`. */
30
+ readonly now?: (() => number) | undefined;
31
+ /** Test-only deterministic language-service limits seam; production keeps the default deadline. */
32
+ readonly languageServiceLimits?: LanguageServiceLimits | undefined;
33
+ /** Test-only deterministic language-service clock seam; production keeps the real clock. */
34
+ readonly languageServiceNow?: (() => number) | undefined;
35
+ }
36
+ export declare function handleEditorCompletion(ctx: RouteContext, deps: UiHandlerDeps, options?: EditorCompletionRouteOptions): Promise<RouteResult>;
37
+ //# sourceMappingURL=completionRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completionRoutes.d.ts","sourceRoot":"","sources":["../../src/editor/completionRoutes.ts"],"names":[],"mappings":"AAkBA,OAAO,EAqBL,KAAK,qBAAqB,EAG3B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAa,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAOtE,OAAO,EAIL,KAAK,WAAW,EAEjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAIL,KAAK,sBAAsB,EAE5B,MAAM,6BAA6B,CAAC;AASrC,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;CAGrC,CAAC;AAGX,mGAAmG;AACnG,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,KAAK,WAAW,CAAC;AAE5F,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACzD,kGAAkG;IAClG,QAAQ,CAAC,WAAW,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC1D,qEAAqE;IACrE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1C,mGAAmG;IACnG,QAAQ,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACnE,4FAA4F;IAC5F,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;CAC1D;AAufD,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,WAAW,CAAC,CA6CtB"}