@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,411 @@
1
+ // BFF route for the governed editor completion gateway (Issue #1199, ADR-0042 D4/D5/D6).
2
+ //
3
+ // POST /api/editor/completion — produce completion items for an editor overlay. Two governed tiers:
4
+ // Tier 1 (always): deterministic, model-free language-service completion (#1198) — the source of
5
+ // truth and the always-available default.
6
+ // Tier 2 (gated): model-assisted completion routed through the Model Gateway, run ONLY when the
7
+ // completion-model selection (#1210) elects an aligned ("instruct"/"edit-tuned") infilling model
8
+ // in budget. The as-you-type tier may run on a trigger character; the manual tier runs only on an
9
+ // explicit invoke. When no governed model is usable the route degrades to deterministic-only and
10
+ // records the content-free degrade reason — never a silent ungoverned fallback.
11
+ //
12
+ // Model-assisted completion enriches its prompt with governed coding context (#1211, repository search
13
+ // plus — when a capsule/capsule-set is selected and the budget allows — Local Knowledge and retained
14
+ // memory), assembled server-side and recorded as content-free evidence. The response is content-free
15
+ // apart from reviewable `insertText`: per-item origin plus a source/provenance rollup with a SHA-256
16
+ // prompt hash, never the prompt, the buffer, or any retrieved excerpt. The browser never reaches the
17
+ // Model Gateway, retrieval, or any provider directly (Acceptance Criterion 5).
18
+ import { CODING_CONTEXT_SCHEMA_VERSION, CODING_CONTEXT_BUDGETS, DEFAULT_LANGUAGE_SERVICE_LIMITS, EDITOR_COMPLETION_SCHEMA_VERSION, isValidScopePath, parseEditorCompletionRequest, stripUnsafeFormatChars, toCodingContextWirePack, } from "@oscharko-dev/keiko-contracts";
19
+ import { Gateway, selectCompletionModel } from "@oscharko-dev/keiko-model-gateway";
20
+ import { nodeWorkspaceFs } from "@oscharko-dev/keiko-workspace/internal/fs";
21
+ import { errorBody } from "../routes.js";
22
+ import { currentGatewayConfig } from "../deps.js";
23
+ import { readJsonObject, resolveRoot, runFilesHandler } from "../files.js";
24
+ import { assembleCodingContext } from "./codingContext.js";
25
+ import { recordCodingContextEvidence } from "./codingContextEvidence.js";
26
+ import { recordEditorCompletionModelEvidence } from "./completionModelEvidence.js";
27
+ import { clientAbortSignal, resolveOverlayPath, STATUS_BY_CODE } from "./languageRoutes.js";
28
+ import { runLanguageOperation } from "./languageService.js";
29
+ import { buildModelCompletionPrompt, generateModelCompletions, } from "./editorCompletionModel.js";
30
+ import { estimateEditorModelReservationTokens, settleModelUsage, sharedEditorModelTokenBudget, } from "./editorModelTokenBudget.js";
31
+ // The overlay buffer may be up to the document-size cap; allow 64 KiB of JSON envelope on top.
32
+ const MAX_COMPLETION_BODY_BYTES = DEFAULT_LANGUAGE_SERVICE_LIMITS.maxDocumentBytes + 64 * 1024;
33
+ // Content-free identifier of the completion governance policy version (audit correlation).
34
+ const COMPLETION_GATEWAY_POLICY_VERSION = "editor-completion/1";
35
+ const MAX_MODEL_ITEMS = 8;
36
+ const MAX_MODEL_INSERT_TEXT_CHARS = 2_000;
37
+ const MAX_CONTEXT_CHANGED_FILES = 64;
38
+ export const COMPLETION_LANGUAGE_SERVICE_LIMITS = {
39
+ ...DEFAULT_LANGUAGE_SERVICE_LIMITS,
40
+ deadlineMs: 500,
41
+ };
42
+ const MODEL_AS_YOU_TYPE_TIMEOUT_MS = 750;
43
+ // Default chat seam: route the elected model through the Model Gateway, server-side only.
44
+ function defaultChatFactory(config, modelId) {
45
+ const gateway = new Gateway(config);
46
+ return async (chatRequest, chatSignal) => {
47
+ const response = await gateway.chat({
48
+ modelId,
49
+ messages: [
50
+ { role: "system", content: chatRequest.system },
51
+ { role: "user", content: chatRequest.user },
52
+ ],
53
+ cancellationSignal: chatSignal,
54
+ });
55
+ return { content: response.content, usage: response.usage };
56
+ };
57
+ }
58
+ function isRouteResult(value) {
59
+ return typeof value === "object" && value !== null && "status" in value && "body" in value;
60
+ }
61
+ function redactPromptText(deps, value) {
62
+ const stripped = stripUnsafeFormatChars(value);
63
+ const redacted = deps.redactor(stripped);
64
+ return typeof redacted === "string" ? redacted : stripped;
65
+ }
66
+ const DETERMINISTIC_OUTCOME = (mode, degradeReason, modelId, latencyClass) => ({
67
+ items: [],
68
+ modelMode: mode,
69
+ degradeReason,
70
+ modelId,
71
+ latencyClass,
72
+ contextSources: [],
73
+ truncated: false,
74
+ });
75
+ function buildContextRequest(request) {
76
+ return {
77
+ schemaVersion: CODING_CONTEXT_SCHEMA_VERSION,
78
+ purpose: "completion",
79
+ documentPath: request.document.path,
80
+ symbol: request.context?.symbol,
81
+ queryText: request.context?.queryText,
82
+ changedFiles: request.context?.changedFiles,
83
+ capsuleId: request.context?.capsuleId,
84
+ capsuleSetId: request.context?.capsuleSetId,
85
+ };
86
+ }
87
+ function dedupeChangedFiles(paths) {
88
+ return [...new Set(paths)];
89
+ }
90
+ function invalidChangedFiles(message) {
91
+ return { status: 400, body: errorBody("INVALID_REQUEST", message) };
92
+ }
93
+ function sanitizeChangedFiles(realRoot, changedFiles) {
94
+ if (changedFiles === undefined) {
95
+ return undefined;
96
+ }
97
+ const deduped = dedupeChangedFiles(changedFiles);
98
+ if (deduped.length > MAX_CONTEXT_CHANGED_FILES) {
99
+ return invalidChangedFiles(`context.changedFiles must contain at most ${MAX_CONTEXT_CHANGED_FILES.toString()} paths.`);
100
+ }
101
+ for (const changed of deduped) {
102
+ if (!isValidScopePath(changed, { mustBeRelative: true })) {
103
+ return invalidChangedFiles(`context.changedFiles contains an invalid workspace-relative path: ${changed}`);
104
+ }
105
+ resolveOverlayPath(realRoot, changed);
106
+ }
107
+ return deduped.length > 0 ? deduped : undefined;
108
+ }
109
+ function sanitizeRequestContext(request, realRoot) {
110
+ const changedFiles = sanitizeChangedFiles(realRoot, request.context?.changedFiles);
111
+ if (isRouteResult(changedFiles)) {
112
+ return changedFiles;
113
+ }
114
+ if (request.context === undefined) {
115
+ return request;
116
+ }
117
+ return {
118
+ ...request,
119
+ context: {
120
+ ...(request.context.queryText === undefined ? {} : { queryText: request.context.queryText }),
121
+ ...(request.context.symbol === undefined ? {} : { symbol: request.context.symbol }),
122
+ ...(request.context.capsuleId === undefined ? {} : { capsuleId: request.context.capsuleId }),
123
+ ...(request.context.capsuleSetId === undefined
124
+ ? {}
125
+ : { capsuleSetId: request.context.capsuleSetId }),
126
+ ...(changedFiles === undefined ? {} : { changedFiles }),
127
+ },
128
+ };
129
+ }
130
+ function effectiveContextBudgetBytes(request) {
131
+ return Math.min(CODING_CONTEXT_BUDGETS.completion.budgetBytes, Math.max(0, Math.trunc(request.contextBudgetBytes)));
132
+ }
133
+ function modelSignal(selection, signal) {
134
+ if (selection.mode !== "as-you-type") {
135
+ return signal;
136
+ }
137
+ return AbortSignal.any([signal, AbortSignal.timeout(MODEL_AS_YOU_TYPE_TIMEOUT_MS)]);
138
+ }
139
+ // Map the coding-context source kinds that actually contributed an excerpt to the AC7 completion
140
+ // source vocabulary. Source kinds outside that vocabulary (QI, workflow, files-focus) are not surfaced.
141
+ function contextSourcesFromPack(pack) {
142
+ const mapping = {
143
+ "repo-search": "repository-context",
144
+ "local-knowledge": "local-knowledge",
145
+ memory: "memory",
146
+ "connected-context": "connected-context",
147
+ };
148
+ const sources = new Set();
149
+ for (const excerpt of pack.excerpts) {
150
+ const mapped = mapping[excerpt.citation.sourceKind];
151
+ if (mapped !== undefined) {
152
+ sources.add(mapped);
153
+ }
154
+ }
155
+ return [...sources];
156
+ }
157
+ function recordModelEvidence(input) {
158
+ recordEditorCompletionModelEvidence(input.deps.evidenceStore, input.deps.redactor, {
159
+ modelId: input.modelId,
160
+ modelMode: input.selection.mode,
161
+ latencyClass: input.selection.latencyClass,
162
+ gatewayPolicyVersion: COMPLETION_GATEWAY_POLICY_VERSION,
163
+ promptHash: input.promptHash,
164
+ itemCount: input.itemCount,
165
+ truncated: input.truncated,
166
+ usage: input.usage,
167
+ }, input.nowMs);
168
+ }
169
+ function completionGenerationInput(ctx, pack) {
170
+ return {
171
+ overlayText: ctx.request.document.text,
172
+ position: ctx.request.position,
173
+ languageId: ctx.request.document.languageId,
174
+ contextPack: pack,
175
+ maxItems: MAX_MODEL_ITEMS,
176
+ maxInsertTextChars: MAX_MODEL_INSERT_TEXT_CHARS,
177
+ redactText: (value) => redactPromptText(ctx.deps, value),
178
+ };
179
+ }
180
+ function maxOutputTokensForModel(config, modelId) {
181
+ const capability = config.capabilities?.find((candidate) => candidate.id === modelId);
182
+ return Math.max(1, capability?.maxOutputTokens ?? Math.ceil((MAX_MODEL_ITEMS * MAX_MODEL_INSERT_TEXT_CHARS) / 4));
183
+ }
184
+ function reserveModelCompletion(ctx, input) {
185
+ const prompt = buildModelCompletionPrompt(input);
186
+ return ctx.tokenBudget.tryReserve(ctx.realRoot, ctx.nowMs, estimateEditorModelReservationTokens(prompt, maxOutputTokensForModel(ctx.config, ctx.modelId)));
187
+ }
188
+ function modelOutcomeFromGenerated(ctx, pack, generated) {
189
+ return {
190
+ items: generated.items,
191
+ modelMode: ctx.selection.mode,
192
+ modelId: ctx.modelId,
193
+ latencyClass: ctx.selection.latencyClass,
194
+ promptHash: generated.promptHash,
195
+ contextSources: generated.items.length > 0 ? contextSourcesFromPack(pack) : [],
196
+ truncated: generated.truncated,
197
+ ...(generated.usage === undefined ? {} : { usage: generated.usage }),
198
+ };
199
+ }
200
+ // Runs the elected model: assembles coding context (#1211), records content-free evidence, and calls
201
+ // the gateway through the injected chat factory. A failure throws to the caller, which degrades.
202
+ async function runElectedModel(ctx) {
203
+ const pack = await assembleCodingContext(buildContextRequest(ctx.request), {
204
+ deps: ctx.deps,
205
+ realRoot: ctx.realRoot,
206
+ signal: ctx.signal,
207
+ nowMs: ctx.nowMs,
208
+ budgetBytes: effectiveContextBudgetBytes(ctx.request),
209
+ });
210
+ recordCodingContextEvidence(ctx.deps.evidenceStore, ctx.deps.redactor, toCodingContextWirePack(pack), ctx.nowMs);
211
+ const generationInput = completionGenerationInput(ctx, pack);
212
+ const reservation = reserveModelCompletion(ctx, generationInput);
213
+ if (reservation === undefined) {
214
+ return DETERMINISTIC_OUTCOME(ctx.selection.mode, ctx.selection.degradeReason, ctx.modelId, ctx.selection.latencyClass);
215
+ }
216
+ const generated = await generateModelCompletions(generationInput, ctx.chatFactory(ctx.config, ctx.modelId), ctx.signal);
217
+ settleModelUsage(reservation, generated.usage);
218
+ recordModelEvidence({
219
+ deps: ctx.deps,
220
+ modelId: ctx.modelId,
221
+ selection: ctx.selection,
222
+ promptHash: generated.promptHash,
223
+ itemCount: generated.items.length,
224
+ truncated: generated.truncated,
225
+ usage: generated.usage,
226
+ nowMs: ctx.nowMs,
227
+ });
228
+ return modelOutcomeFromGenerated(ctx, pack, generated);
229
+ }
230
+ // Decides whether the gated model tier runs for this request and, if so, runs it. The cost ceiling
231
+ // (#1206) and the aligned-FIM guardrail (#1210) are enforced by `selectCompletionModel`.
232
+ async function runModelTier(request, realRoot, signal, deps, chatFactory, tokenBudget, now) {
233
+ const config = currentGatewayConfig(deps);
234
+ if (config === undefined) {
235
+ return DETERMINISTIC_OUTCOME("deterministic", "no-infilling-model", undefined, undefined);
236
+ }
237
+ const selection = selectCompletionModel(config, request.maxCostClass === undefined ? {} : { maxCostClass: request.maxCostClass });
238
+ const modelId = selection.modelId;
239
+ // As-you-type-capable (fast) models may run on a trigger character; a manual-only model runs only on
240
+ // an explicit invoke, bounding per-keystroke cost (ADR-0042 D5/D6).
241
+ const triggerEligible = request.triggerKind === "invoked" || selection.mode === "as-you-type";
242
+ const degraded = () => DETERMINISTIC_OUTCOME(selection.mode, selection.degradeReason, modelId, selection.latencyClass);
243
+ // Skip the model for an ineligible trigger. The per-root token ceiling (#1206 LLM10) reserves
244
+ // immediately before the provider call once the prompt is known.
245
+ if (selection.mode === "deterministic" || modelId === undefined || !triggerEligible) {
246
+ return degraded();
247
+ }
248
+ try {
249
+ const outcome = await runElectedModel({
250
+ request,
251
+ realRoot,
252
+ signal: modelSignal(selection, signal),
253
+ deps,
254
+ selection,
255
+ modelId,
256
+ chatFactory,
257
+ config,
258
+ tokenBudget,
259
+ nowMs: now(),
260
+ });
261
+ return outcome;
262
+ }
263
+ catch {
264
+ // ADR-0042 D5 / AC4: a model or retrieval failure degrades to deterministic-only; it never breaks
265
+ // the route or surfaces partial junk to the editor.
266
+ return degraded();
267
+ }
268
+ }
269
+ // ─── Wire-response assembly ──────────────────────────────────────────────────────────────────────
270
+ function wireItem(item, origin) {
271
+ return {
272
+ label: item.label,
273
+ kind: item.kind,
274
+ insertText: item.insertText,
275
+ origin,
276
+ ...(item.detail === undefined ? {} : { detail: item.detail }),
277
+ ...(item.sortText === undefined ? {} : { sortText: item.sortText }),
278
+ };
279
+ }
280
+ function deterministicWireItem(item) {
281
+ return wireItem({
282
+ label: item.label,
283
+ kind: item.kind,
284
+ // LSP completion items may omit `insertText` (the label is inserted verbatim).
285
+ insertText: item.insertText ?? item.label,
286
+ detail: item.detail,
287
+ sortText: item.sortText,
288
+ }, "deterministic");
289
+ }
290
+ function mergeItems(deterministic, model, maxItems) {
291
+ const items = [];
292
+ const seen = new Set();
293
+ let capped = false;
294
+ function push(candidate) {
295
+ if (seen.has(candidate.insertText)) {
296
+ return;
297
+ }
298
+ if (items.length >= maxItems) {
299
+ capped = true;
300
+ return;
301
+ }
302
+ seen.add(candidate.insertText);
303
+ items.push(candidate);
304
+ }
305
+ // Deterministic completions remain first and win de-dupe conflicts; model items are additive.
306
+ for (const item of deterministic) {
307
+ push(deterministicWireItem(item));
308
+ }
309
+ for (const item of model) {
310
+ push(wireItem(item, "model-assisted"));
311
+ }
312
+ return { items, capped };
313
+ }
314
+ // The model-identifying fields (modelId, latencyClass, gatewayPolicyVersion, promptHash) are present
315
+ // only when model-assisted items were actually produced — they identify the model that produced THIS
316
+ // response's items, matching the wire contract. `modelMode`/`degradeReason` always reflect the
317
+ // selection, so an elected-but-unused model is still visible to the client without a misleading
318
+ // model-identity/audit signal at the response level. (The model invocation itself, including the
319
+ // invoked-but-empty case, is recorded server-side as content-free evidence by the route.)
320
+ function buildProvenance(model, producedModelItems) {
321
+ const sources = ["deterministic-language-service"];
322
+ if (producedModelItems) {
323
+ sources.push("model-assisted", ...model.contextSources);
324
+ }
325
+ return {
326
+ sources: [...new Set(sources)],
327
+ modelMode: model.modelMode,
328
+ ...(model.degradeReason === undefined ? {} : { degradeReason: model.degradeReason }),
329
+ ...(producedModelItems && model.modelId !== undefined ? { modelId: model.modelId } : {}),
330
+ ...(producedModelItems && model.latencyClass !== undefined
331
+ ? { latencyClass: model.latencyClass }
332
+ : {}),
333
+ ...(producedModelItems ? { gatewayPolicyVersion: COMPLETION_GATEWAY_POLICY_VERSION } : {}),
334
+ ...(producedModelItems && model.promptHash !== undefined
335
+ ? { promptHash: model.promptHash }
336
+ : {}),
337
+ };
338
+ }
339
+ function buildWireResponse(deterministic, model) {
340
+ const { items, capped } = mergeItems(deterministic.items, model.items, DEFAULT_LANGUAGE_SERVICE_LIMITS.maxCompletionItems);
341
+ const producedModelItems = items.some((item) => item.origin === "model-assisted");
342
+ return {
343
+ schemaVersion: EDITOR_COMPLETION_SCHEMA_VERSION,
344
+ items,
345
+ isIncomplete: deterministic.isIncomplete || capped,
346
+ truncated: deterministic.truncated || model.truncated || capped,
347
+ provenance: buildProvenance(model, producedModelItems),
348
+ };
349
+ }
350
+ function runDeterministicCompletion(input) {
351
+ const langRequest = {
352
+ operation: "completion",
353
+ root: input.request.root,
354
+ document: input.request.document,
355
+ position: input.request.position,
356
+ };
357
+ const outcome = runLanguageOperation(langRequest, {
358
+ fs: nodeWorkspaceFs,
359
+ realRoot: input.realRoot,
360
+ overlayAbsolutePath: input.overlayAbsolutePath,
361
+ signal: input.signal,
362
+ limits: input.limits ?? COMPLETION_LANGUAGE_SERVICE_LIMITS,
363
+ now: input.now,
364
+ });
365
+ if (outcome.kind === "error") {
366
+ return {
367
+ status: STATUS_BY_CODE[outcome.code],
368
+ body: errorBody(outcome.code, outcome.message),
369
+ };
370
+ }
371
+ if (outcome.kind !== "completion") {
372
+ return { status: 500, body: errorBody("INTERNAL", "Unexpected language-service outcome.") };
373
+ }
374
+ return outcome.result;
375
+ }
376
+ // ─── Route ──────────────────────────────────────────────────────────────────────────────────────
377
+ export async function handleEditorCompletion(ctx, deps, options = {}) {
378
+ const body = await readJsonObject(ctx.req, MAX_COMPLETION_BODY_BYTES);
379
+ if (isRouteResult(body)) {
380
+ return body;
381
+ }
382
+ const parsed = parseEditorCompletionRequest(body);
383
+ if (!parsed.ok) {
384
+ return { status: 400, body: errorBody("INVALID_REQUEST", parsed.errors.join("; ")) };
385
+ }
386
+ const request = parsed.value;
387
+ return runFilesHandler(async () => {
388
+ const root = await resolveRoot(deps.store, request.root, deps.redactor);
389
+ const overlayAbsolutePath = resolveOverlayPath(root.realRoot, request.document.path);
390
+ const sanitizedRequest = sanitizeRequestContext(request, root.realRoot);
391
+ if (isRouteResult(sanitizedRequest)) {
392
+ return sanitizedRequest;
393
+ }
394
+ const signal = clientAbortSignal(ctx);
395
+ // Tier 1: deterministic language-service completion (always).
396
+ const deterministic = runDeterministicCompletion({
397
+ request: sanitizedRequest,
398
+ realRoot: root.realRoot,
399
+ overlayAbsolutePath,
400
+ signal,
401
+ limits: options.languageServiceLimits,
402
+ now: options.languageServiceNow,
403
+ });
404
+ if (isRouteResult(deterministic)) {
405
+ return deterministic;
406
+ }
407
+ // Tier 2: gated model-assisted completion.
408
+ const model = await runModelTier(sanitizedRequest, root.realRoot, signal, deps, options.chatFactory ?? defaultChatFactory, options.tokenBudget ?? sharedEditorModelTokenBudget, options.now ?? Date.now);
409
+ return { status: 200, body: deps.redactor(buildWireResponse(deterministic, model)) };
410
+ });
411
+ }
@@ -0,0 +1,6 @@
1
+ import { type RouteContext, type RouteResult } from "../routes.js";
2
+ import type { UiHandlerDeps } from "../deps.js";
3
+ export declare function handleEditorContext(ctx: RouteContext, deps: UiHandlerDeps): Promise<RouteResult>;
4
+ export declare function handleEditorRepoSearch(ctx: RouteContext, deps: UiHandlerDeps): Promise<RouteResult>;
5
+ export declare function handleEditorLocalKnowledgeRetrieve(ctx: RouteContext, deps: UiHandlerDeps): Promise<RouteResult>;
6
+ //# sourceMappingURL=contextRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextRoutes.d.ts","sourceRoot":"","sources":["../../src/editor/contextRoutes.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAa,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAuHhD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CA4CtB;AA+PD,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAsBtB;AAqDD,wBAAsB,kCAAkC,CACtD,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAuBtB"}