@oscharko-dev/keiko 0.2.0-beta.8 → 0.2.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/ui/csp-hashes.json +14 -14
  2. package/dist/ui/static/404.html +1 -1
  3. package/dist/ui/static/__next.__PAGE__.txt +2 -2
  4. package/dist/ui/static/__next._full.txt +3 -3
  5. package/dist/ui/static/__next._head.txt +1 -1
  6. package/dist/ui/static/__next._index.txt +2 -2
  7. package/dist/ui/static/__next._tree.txt +2 -2
  8. package/dist/ui/static/_next/static/chunks/06-q1ntr51v8r.js +1 -0
  9. package/dist/ui/static/_next/static/chunks/0y9qlvrxsyign.js +109 -0
  10. package/dist/ui/static/_next/static/chunks/1h0v66-p9cx19.css +1 -0
  11. package/dist/ui/static/_next/static/chunks/3ewv4mguqzooj.js +1 -0
  12. package/dist/ui/static/_not-found/__next._full.txt +2 -2
  13. package/dist/ui/static/_not-found/__next._head.txt +1 -1
  14. package/dist/ui/static/_not-found/__next._index.txt +2 -2
  15. package/dist/ui/static/_not-found/__next._not-found.__PAGE__.txt +1 -1
  16. package/dist/ui/static/_not-found/__next._not-found.txt +1 -1
  17. package/dist/ui/static/_not-found/__next._tree.txt +2 -2
  18. package/dist/ui/static/_not-found.html +1 -1
  19. package/dist/ui/static/_not-found.txt +2 -2
  20. package/dist/ui/static/index.html +1 -1
  21. package/dist/ui/static/index.txt +3 -3
  22. package/dist/ui/static/launch/__next._full.txt +3 -3
  23. package/dist/ui/static/launch/__next._head.txt +1 -1
  24. package/dist/ui/static/launch/__next._index.txt +2 -2
  25. package/dist/ui/static/launch/__next._tree.txt +2 -2
  26. package/dist/ui/static/launch/__next.launch.__PAGE__.txt +2 -2
  27. package/dist/ui/static/launch/__next.launch.txt +1 -1
  28. package/dist/ui/static/launch.html +1 -1
  29. package/dist/ui/static/launch.txt +3 -3
  30. package/dist/ui/static/local-knowledge/__next._full.txt +3 -3
  31. package/dist/ui/static/local-knowledge/__next._head.txt +1 -1
  32. package/dist/ui/static/local-knowledge/__next._index.txt +2 -2
  33. package/dist/ui/static/local-knowledge/__next._tree.txt +2 -2
  34. package/dist/ui/static/local-knowledge/__next.local-knowledge.__PAGE__.txt +2 -2
  35. package/dist/ui/static/local-knowledge/__next.local-knowledge.txt +1 -1
  36. package/dist/ui/static/local-knowledge/capsule/__next._full.txt +3 -3
  37. package/dist/ui/static/local-knowledge/capsule/__next._head.txt +1 -1
  38. package/dist/ui/static/local-knowledge/capsule/__next._index.txt +2 -2
  39. package/dist/ui/static/local-knowledge/capsule/__next._tree.txt +2 -2
  40. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.__PAGE__.txt +2 -2
  41. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.txt +1 -1
  42. package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.txt +1 -1
  43. package/dist/ui/static/local-knowledge/capsule.html +1 -1
  44. package/dist/ui/static/local-knowledge/capsule.txt +3 -3
  45. package/dist/ui/static/local-knowledge.html +1 -1
  46. package/dist/ui/static/local-knowledge.txt +3 -3
  47. package/dist/ui/static/memoriaviva/__next._full.txt +2 -2
  48. package/dist/ui/static/memoriaviva/__next._head.txt +1 -1
  49. package/dist/ui/static/memoriaviva/__next._index.txt +2 -2
  50. package/dist/ui/static/memoriaviva/__next._tree.txt +2 -2
  51. package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +1 -1
  52. package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +1 -1
  53. package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +2 -2
  54. package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +1 -1
  55. package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +2 -2
  56. package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -2
  57. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +1 -1
  58. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +1 -1
  59. package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +1 -1
  60. package/dist/ui/static/memoriaviva/consolidation.html +1 -1
  61. package/dist/ui/static/memoriaviva/consolidation.txt +2 -2
  62. package/dist/ui/static/memoriaviva/detail/__next._full.txt +2 -2
  63. package/dist/ui/static/memoriaviva/detail/__next._head.txt +1 -1
  64. package/dist/ui/static/memoriaviva/detail/__next._index.txt +2 -2
  65. package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -2
  66. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +1 -1
  67. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +1 -1
  68. package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +1 -1
  69. package/dist/ui/static/memoriaviva/detail.html +1 -1
  70. package/dist/ui/static/memoriaviva/detail.txt +2 -2
  71. package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +2 -2
  72. package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +1 -1
  73. package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +2 -2
  74. package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -2
  75. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +1 -1
  76. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +1 -1
  77. package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +1 -1
  78. package/dist/ui/static/memoriaviva/review-queue.html +1 -1
  79. package/dist/ui/static/memoriaviva/review-queue.txt +2 -2
  80. package/dist/ui/static/memoriaviva.html +1 -1
  81. package/dist/ui/static/memoriaviva.txt +2 -2
  82. package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
  83. package/node_modules/@oscharko-dev/keiko-cli/package.json +1 -1
  84. package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
  85. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +2 -2
  86. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
  87. package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +1 -1
  88. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts +36 -4
  89. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
  90. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts +1 -1
  91. package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts.map +1 -1
  92. package/node_modules/@oscharko-dev/keiko-contracts/package.json +1 -1
  93. package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
  94. package/node_modules/@oscharko-dev/keiko-evaluations/package.json +1 -1
  95. package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
  96. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts +1 -1
  97. package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts.map +1 -1
  98. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +15 -0
  99. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
  100. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.js +13 -3
  101. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +8 -0
  102. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
  103. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +30 -2
  104. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts +2 -2
  105. package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts.map +1 -1
  106. package/node_modules/@oscharko-dev/keiko-evidence/package.json +1 -1
  107. package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
  108. package/node_modules/@oscharko-dev/keiko-harness/package.json +1 -1
  109. package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
  110. package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +1 -1
  111. package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +1 -1
  112. package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +1 -1
  113. package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +1 -1
  114. package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +1 -1
  115. package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
  116. package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +1 -1
  117. package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
  118. package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +1 -1
  119. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
  120. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts +8 -0
  121. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
  122. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +9 -5
  123. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts +6 -0
  124. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts.map +1 -1
  125. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.js +116 -21
  126. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testQualityRubric.d.ts +6 -0
  127. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testQualityRubric.d.ts.map +1 -1
  128. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testQualityRubric.js +12 -0
  129. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
  130. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +8 -7
  131. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.d.ts.map +1 -1
  132. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.js +29 -7
  133. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.d.ts.map +1 -1
  134. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.js +61 -24
  135. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts +1 -1
  136. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts.map +1 -1
  137. package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.js +1 -1
  138. package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +1 -1
  139. package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
  140. package/node_modules/@oscharko-dev/keiko-sdk/package.json +1 -1
  141. package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
  142. package/node_modules/@oscharko-dev/keiko-security/package.json +1 -1
  143. package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
  144. package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts.map +1 -1
  145. package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.js +2 -0
  146. package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.d.ts.map +1 -1
  147. package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.js +30 -6
  148. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts +1 -0
  149. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts.map +1 -1
  150. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.js +410 -18
  151. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.d.ts.map +1 -1
  152. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.js +1 -0
  153. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
  154. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +7 -5
  155. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +4 -3
  156. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts +1 -0
  157. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
  158. package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +4 -1
  159. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts +1 -0
  160. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
  161. package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +8 -3
  162. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.d.ts.map +1 -1
  163. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.js +9 -4
  164. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts +6 -5
  165. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts.map +1 -1
  166. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.js +10 -9
  167. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts +2 -1
  168. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
  169. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +62 -26
  170. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts +2 -0
  171. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts.map +1 -1
  172. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.js +6 -3
  173. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +14 -0
  174. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
  175. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +18 -0
  176. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
  177. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +159 -6
  178. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotScreenIds.d.ts +19 -0
  179. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotScreenIds.d.ts.map +1 -0
  180. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotScreenIds.js +75 -0
  181. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
  182. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +13 -12
  183. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts +6 -6
  184. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts.map +1 -1
  185. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.js +12 -7
  186. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
  187. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +34 -3
  188. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts +4 -2
  189. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts.map +1 -1
  190. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.js +222 -35
  191. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts +7 -0
  192. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
  193. package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +68 -16
  194. package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
  195. package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +6 -1
  196. package/node_modules/@oscharko-dev/keiko-server/package.json +1 -1
  197. package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
  198. package/node_modules/@oscharko-dev/keiko-tools/package.json +1 -1
  199. package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
  200. package/node_modules/@oscharko-dev/keiko-verification/package.json +1 -1
  201. package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
  202. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.d.ts.map +1 -1
  203. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.js +45 -0
  204. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/index.d.ts +2 -0
  205. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/index.d.ts.map +1 -1
  206. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/index.js +1 -0
  207. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/intent.d.ts +8 -0
  208. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/intent.d.ts.map +1 -0
  209. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/intent.js +140 -0
  210. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.d.ts +2 -0
  211. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.d.ts.map +1 -1
  212. package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.js +21 -5
  213. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
  214. package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +86 -40
  215. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.d.ts.map +1 -1
  216. package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.js +9 -0
  217. package/node_modules/@oscharko-dev/keiko-workflows/package.json +1 -1
  218. package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
  219. package/node_modules/@oscharko-dev/keiko-workspace/dist/index.d.ts +1 -0
  220. package/node_modules/@oscharko-dev/keiko-workspace/dist/index.d.ts.map +1 -1
  221. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.d.ts +3 -0
  222. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.d.ts.map +1 -1
  223. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.js +23 -6
  224. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts +1 -1
  225. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
  226. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +24 -3
  227. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchPolicy.d.ts +34 -0
  228. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchPolicy.d.ts.map +1 -0
  229. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchPolicy.js +342 -0
  230. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts +6 -1
  231. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts.map +1 -1
  232. package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.js +57 -9
  233. package/node_modules/@oscharko-dev/keiko-workspace/package.json +1 -1
  234. package/package.json +1 -1
  235. package/dist/ui/static/_next/static/chunks/0i3jzgrj42so8.css +0 -1
  236. package/dist/ui/static/_next/static/chunks/1ru_021szp0u7.js +0 -1
  237. package/dist/ui/static/_next/static/chunks/1t7vb5d9ed2e7.js +0 -1
  238. package/dist/ui/static/_next/static/chunks/23o2c6pyjq92z.js +0 -109
  239. /package/dist/ui/static/_next/static/{Ppze_8n_i3yc1FS_Qdj0I → a5sUbXeTgQ9A2LRTMu_Q_}/_buildManifest.js +0 -0
  240. /package/dist/ui/static/_next/static/{Ppze_8n_i3yc1FS_Qdj0I → a5sUbXeTgQ9A2LRTMu_Q_}/_clientMiddlewareManifest.js +0 -0
  241. /package/dist/ui/static/_next/static/{Ppze_8n_i3yc1FS_Qdj0I → a5sUbXeTgQ9A2LRTMu_Q_}/_ssgManifest.js +0 -0
@@ -0,0 +1,342 @@
1
+ const METADATA_FILENAMES = new Set([
2
+ "package.json",
3
+ "tsconfig.json",
4
+ "tsconfig.base.json",
5
+ "tsconfig.build.json",
6
+ "vite.config.ts",
7
+ "vite.config.js",
8
+ "vitest.config.ts",
9
+ "vitest.config.js",
10
+ "jest.config.ts",
11
+ "jest.config.js",
12
+ "playwright.config.ts",
13
+ "playwright.config.js",
14
+ "next.config.ts",
15
+ "next.config.js",
16
+ "eslint.config.ts",
17
+ "eslint.config.js",
18
+ ]);
19
+ const OVERVIEW_FILENAMES = new Set([
20
+ "readme.md",
21
+ "agents.md",
22
+ "contributing.md",
23
+ "architecture.md",
24
+ "docs/architecture.md",
25
+ "docs/overview.md",
26
+ "docs/readme.md",
27
+ ]);
28
+ const LOCKFILE_FILENAMES = new Set([
29
+ "bun.lock",
30
+ "bun.lockb",
31
+ "cargo.lock",
32
+ "composer.lock",
33
+ "gemfile.lock",
34
+ "package-lock.json",
35
+ "pnpm-lock.yaml",
36
+ "yarn.lock",
37
+ ]);
38
+ const LOW_VALUE_SEGMENTS = new Set([
39
+ ".parcel-cache",
40
+ ".svelte-kit",
41
+ ".vercel",
42
+ "coverage",
43
+ "dist",
44
+ "generated",
45
+ "storybook-static",
46
+ "tmp",
47
+ ]);
48
+ const LOW_VALUE_IGNORE_LINES = Object.freeze([
49
+ ".parcel-cache/",
50
+ ".svelte-kit/",
51
+ ".vercel/",
52
+ "coverage/",
53
+ "dist/",
54
+ "generated/",
55
+ "storybook-static/",
56
+ "tmp/",
57
+ "bun.lock",
58
+ "bun.lockb",
59
+ "cargo.lock",
60
+ "composer.lock",
61
+ "Gemfile.lock",
62
+ "package-lock.json",
63
+ "pnpm-lock.yaml",
64
+ "yarn.lock",
65
+ ]);
66
+ const SOURCE_EXTENSIONS = new Set([
67
+ "cjs",
68
+ "cts",
69
+ "go",
70
+ "java",
71
+ "js",
72
+ "jsx",
73
+ "mjs",
74
+ "mts",
75
+ "py",
76
+ "rs",
77
+ "ts",
78
+ "tsx",
79
+ "vue",
80
+ ]);
81
+ const DOC_EXTENSIONS = new Set(["adoc", "md", "mdx", "rst", "txt"]);
82
+ const TEST_FILE_RE = /(?:^|[./_-])(?:test|spec|fixture|mock)s?(?:[./_-]|$)/iu;
83
+ // Identifier tokens with a SINGLE greedy quantifier — no two overlapping `[A-Za-z0-9_$]*` runs
84
+ // around `[A-Z]`, which is a polynomial-ReDoS shape on uncontrolled query text (CodeQL). The
85
+ // camelCase test (an uppercase at position >= 1) is applied separately as a constant-width probe.
86
+ const IDENTIFIER_TOKEN_RE = /\b[A-Za-z_$][A-Za-z0-9_$]*\b/gu;
87
+ const HAS_INNER_UPPERCASE_RE = /[A-Za-z0-9_$][A-Z]/u;
88
+ const TOKEN_RE = /[A-Za-z0-9_.-]{3,}/gu;
89
+ function emptyBucketCounts() {
90
+ return {
91
+ "canonical-metadata": 0,
92
+ "overview-doc": 0,
93
+ "exact-path": 0,
94
+ "symbol-source": 0,
95
+ source: 0,
96
+ test: 0,
97
+ docs: 0,
98
+ lockfile: 0,
99
+ "low-value": 0,
100
+ other: 0,
101
+ };
102
+ }
103
+ function basename(scopePath) {
104
+ const index = scopePath.lastIndexOf("/");
105
+ return index >= 0 ? scopePath.slice(index + 1) : scopePath;
106
+ }
107
+ function extension(scopePath) {
108
+ const name = basename(scopePath).toLowerCase();
109
+ const dot = name.lastIndexOf(".");
110
+ return dot < 0 ? "" : name.slice(dot + 1);
111
+ }
112
+ function normalizedPath(scopePath) {
113
+ return scopePath.split("\\").join("/").toLowerCase();
114
+ }
115
+ function pathSegments(scopePath) {
116
+ return normalizedPath(scopePath)
117
+ .split("/")
118
+ .filter((segment) => segment.length > 0);
119
+ }
120
+ function isLockfile(scopePath) {
121
+ return LOCKFILE_FILENAMES.has(basename(scopePath).toLowerCase());
122
+ }
123
+ function hasLowValueSegment(scopePath) {
124
+ return pathSegments(scopePath).some((segment) => LOW_VALUE_SEGMENTS.has(segment));
125
+ }
126
+ function normalizedQueryTerms(query) {
127
+ const terms = new Set();
128
+ for (const match of query.text.matchAll(TOKEN_RE)) {
129
+ terms.add(match[0].toLowerCase());
130
+ }
131
+ for (const match of query.text.matchAll(IDENTIFIER_TOKEN_RE)) {
132
+ if (HAS_INNER_UPPERCASE_RE.test(match[0])) {
133
+ terms.add(match[0].toLowerCase());
134
+ }
135
+ }
136
+ return [...terms];
137
+ }
138
+ function bucketByPath(scopePath) {
139
+ const path = normalizedPath(scopePath);
140
+ const name = basename(path);
141
+ const ext = extension(path);
142
+ if (METADATA_FILENAMES.has(name)) {
143
+ return "canonical-metadata";
144
+ }
145
+ if (OVERVIEW_FILENAMES.has(path) || OVERVIEW_FILENAMES.has(name)) {
146
+ return "overview-doc";
147
+ }
148
+ if (isLockfile(path)) {
149
+ return "lockfile";
150
+ }
151
+ if (hasLowValueSegment(path)) {
152
+ return "low-value";
153
+ }
154
+ if (TEST_FILE_RE.test(path)) {
155
+ return "test";
156
+ }
157
+ if (SOURCE_EXTENSIONS.has(ext)) {
158
+ return "source";
159
+ }
160
+ if (DOC_EXTENSIONS.has(ext)) {
161
+ return "docs";
162
+ }
163
+ return "other";
164
+ }
165
+ function bucketScore(bucket, intent) {
166
+ if (intent === "project-metadata") {
167
+ return metadataBucketScore(bucket);
168
+ }
169
+ if (intent === "repository-overview") {
170
+ return overviewBucketScore(bucket);
171
+ }
172
+ if (intent === "targeted-code-search" || intent === "diagnostic-search") {
173
+ return targetedBucketScore(bucket);
174
+ }
175
+ return genericBucketScore(bucket);
176
+ }
177
+ function metadataBucketScore(bucket) {
178
+ const scores = {
179
+ "canonical-metadata": 100,
180
+ "overview-doc": 70,
181
+ "exact-path": 95,
182
+ "symbol-source": 80,
183
+ source: 45,
184
+ test: 40,
185
+ docs: 55,
186
+ lockfile: 15,
187
+ "low-value": 5,
188
+ other: 20,
189
+ };
190
+ return scores[bucket];
191
+ }
192
+ function overviewBucketScore(bucket) {
193
+ const scores = {
194
+ "canonical-metadata": 75,
195
+ "overview-doc": 100,
196
+ "exact-path": 95,
197
+ "symbol-source": 80,
198
+ source: 50,
199
+ test: 35,
200
+ docs: 70,
201
+ lockfile: 5,
202
+ "low-value": 5,
203
+ other: 20,
204
+ };
205
+ return scores[bucket];
206
+ }
207
+ function targetedBucketScore(bucket) {
208
+ const scores = {
209
+ "canonical-metadata": 65,
210
+ "overview-doc": 35,
211
+ "exact-path": 100,
212
+ "symbol-source": 95,
213
+ source: 80,
214
+ test: 55,
215
+ docs: 25,
216
+ lockfile: 5,
217
+ "low-value": 5,
218
+ other: 20,
219
+ };
220
+ return scores[bucket];
221
+ }
222
+ function genericBucketScore(bucket) {
223
+ const scores = {
224
+ "canonical-metadata": 80,
225
+ "overview-doc": 65,
226
+ "exact-path": 90,
227
+ "symbol-source": 85,
228
+ source: 60,
229
+ test: 45,
230
+ docs: 50,
231
+ lockfile: 5,
232
+ "low-value": 5,
233
+ other: 20,
234
+ };
235
+ return scores[bucket];
236
+ }
237
+ function pathTermBonus(scopePath, terms) {
238
+ const path = normalizedPath(scopePath);
239
+ const name = basename(path);
240
+ let score = 0;
241
+ for (const term of terms) {
242
+ if (name === term || name.startsWith(`${term}.`)) {
243
+ score = Math.max(score, 25);
244
+ }
245
+ else if (path.includes(term)) {
246
+ score = Math.max(score, 12);
247
+ }
248
+ }
249
+ return score;
250
+ }
251
+ function depthPenalty(scopePath) {
252
+ return Math.min(pathSegments(scopePath).length, 12);
253
+ }
254
+ function priorityForFile(file, terms, policy) {
255
+ return (bucketScore(bucketByPath(file.relativePath), policy.intent) +
256
+ pathTermBonus(file.relativePath, terms) -
257
+ depthPenalty(file.relativePath));
258
+ }
259
+ function bucketCounts(files) {
260
+ const counts = emptyBucketCounts();
261
+ for (const file of files) {
262
+ counts[bucketByPath(file.relativePath)] += 1;
263
+ }
264
+ return counts;
265
+ }
266
+ function sortFiles(files, query, policy) {
267
+ // Score each file ONCE (query tokenization + path bucketing are O(path) and were previously
268
+ // recomputed twice per comparison — O(n log n) blocking work on the 2000-file candidate cap).
269
+ // Tie-break on raw code-point order, not localeCompare, so evidence ordering is reproducible
270
+ // across locales/ICU builds (regulated-delivery determinism).
271
+ const terms = normalizedQueryTerms(query);
272
+ const scored = files.map((file) => ({ file, score: priorityForFile(file, terms, policy) }));
273
+ scored.sort((a, b) => {
274
+ if (a.score !== b.score)
275
+ return b.score - a.score;
276
+ if (a.file.relativePath < b.file.relativePath)
277
+ return -1;
278
+ return a.file.relativePath > b.file.relativePath ? 1 : 0;
279
+ });
280
+ return scored.map((entry) => entry.file);
281
+ }
282
+ export function resolveSearchPolicy(hasExplicitRelativePaths, hints) {
283
+ const mode = hasExplicitRelativePaths ? "explicit-scope" : "workspace-root-default";
284
+ const intent = hints?.retrievalIntent ?? "generic";
285
+ return {
286
+ mode,
287
+ intent,
288
+ applyGitignore: mode === "workspace-root-default",
289
+ omitLowValueWorkspaceFiles: mode === "workspace-root-default",
290
+ };
291
+ }
292
+ // The legacy `gatherCandidates(scope, limits, fs)` overload predates the search-policy work and is
293
+ // still used by importGraph / testSourcePairing, which expect FULL-tree discovery (no .gitignore
294
+ // subset, no low-value omission) — that was the hardcoded `applyGitignore: false` behavior before
295
+ // this change. Resolving the default workspace-root policy for them would silently start dropping
296
+ // gitignored / low-value files from those callers, so they get this neutral policy instead.
297
+ export function legacyDiscoveryPolicy(hasExplicitRelativePaths) {
298
+ return {
299
+ mode: hasExplicitRelativePaths ? "explicit-scope" : "workspace-root-default",
300
+ intent: "generic",
301
+ applyGitignore: false,
302
+ omitLowValueWorkspaceFiles: false,
303
+ };
304
+ }
305
+ export function policyOmissionReason(scopePath, policy) {
306
+ if (!policy.omitLowValueWorkspaceFiles) {
307
+ return undefined;
308
+ }
309
+ if (isLockfile(scopePath) && policy.intent !== "project-metadata") {
310
+ return "generated";
311
+ }
312
+ return hasLowValueSegment(scopePath) ? "generated" : undefined;
313
+ }
314
+ export function extraIgnoreLinesForSearch(policy) {
315
+ return policy.omitLowValueWorkspaceFiles ? LOW_VALUE_IGNORE_LINES : [];
316
+ }
317
+ export function orderCandidatesForSearch(files, query, policy, ignoredByDiscovery, deniedByDiscovery) {
318
+ const ordered = sortFiles(files, query, policy);
319
+ return {
320
+ files: ordered,
321
+ diagnostics: {
322
+ policyMode: policy.mode,
323
+ intent: policy.intent,
324
+ filesDiscovered: files.length,
325
+ filesAfterPolicy: ordered.length,
326
+ ignoredByDiscovery,
327
+ deniedByDiscovery,
328
+ candidateBuckets: bucketCounts(ordered),
329
+ },
330
+ };
331
+ }
332
+ export function shouldScoreContent(query, text, policy) {
333
+ if (query.kind !== "natural-language" && query.kind !== "exact-symbol") {
334
+ return true;
335
+ }
336
+ if (policy.intent === "repository-overview" || policy.intent === "project-metadata") {
337
+ return true;
338
+ }
339
+ const haystack = query.caseSensitive ? text : text.toLowerCase();
340
+ const terms = normalizedQueryTerms(query).filter((term) => term.length >= 4);
341
+ return terms.length === 0 || terms.some((term) => haystack.includes(term));
342
+ }
@@ -1,6 +1,7 @@
1
- import type { CandidateFile, CandidateOmissionReason, EvidenceAtom, EvidenceAtomProvenanceKind } from "@oscharko-dev/keiko-contracts/connected-context";
1
+ import type { CandidateFile, CandidateOmissionReason, EvidenceAtom, EvidenceAtomProvenanceKind, RetrievalQuery } from "@oscharko-dev/keiko-contracts/connected-context";
2
2
  import type { WorkspaceFs } from "./fs.js";
3
3
  import type { LineMatcher } from "./repoSearchMatchers.js";
4
+ import { type SearchDiagnostics, type SearchPolicy } from "./repoSearchPolicy.js";
4
5
  import type { DiscoveredFile, WorkspaceInfo } from "./types.js";
5
6
  export declare function isImageScopePath(scopePath: string): boolean;
6
7
  export interface ScopeShape {
@@ -32,8 +33,10 @@ export declare function buildCandidate(scopePath: string, omitted: CandidateOmis
32
33
  export interface CandidateSet {
33
34
  readonly files: readonly DiscoveredFile[];
34
35
  readonly truncated: boolean;
36
+ readonly diagnostics: SearchDiagnostics;
35
37
  }
36
38
  export declare function gatherCandidates(scope: ScopeShape, limits: LimitsShape, fs: WorkspaceFs): CandidateSet;
39
+ export declare function gatherCandidates(scope: ScopeShape, query: RetrievalQuery, limits: LimitsShape, fs: WorkspaceFs, policy: SearchPolicy): CandidateSet;
37
40
  export declare function probeBinary(fs: WorkspaceFs, abs: string, size: number): Promise<boolean>;
38
41
  export interface SearchTextRunner {
39
42
  readonly scope: ScopeShape;
@@ -43,6 +46,8 @@ export interface SearchTextRunner {
43
46
  readonly startMs: number;
44
47
  readonly matcher: LineMatcher;
45
48
  readonly fingerprint: string;
49
+ readonly policy: SearchPolicy;
50
+ readonly query: RetrievalQuery;
46
51
  }
47
52
  export interface RunState {
48
53
  filesScanned: number;
@@ -1 +1 @@
1
- {"version":3,"file":"repoSearchScan.d.ts","sourceRoot":"","sources":["../src/repoSearchScan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repoSearchScan.d.ts","sourceRoot":"","sources":["../src/repoSearchScan.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  // Every file system touch goes through the injected WorkspaceFs port; nothing here calls
4
4
  // node:fs directly.
5
5
  import { CONNECTED_CONTEXT_SCHEMA_VERSION, isValidScopePath, } from "@oscharko-dev/keiko-contracts/connected-context";
6
- import { discoverFiles, readWorkspaceFile } from "./discovery.js";
6
+ import { discoverWithStats, readWorkspaceFile } from "./discovery.js";
7
7
  import { FileTooLargeError, RepoSearchInvalidQueryError } from "./errors.js";
8
8
  import { isDenied } from "./ignore.js";
9
9
  import { resolveWithinWorkspace } from "./paths.js";
@@ -12,6 +12,7 @@ import { looksBinary } from "./binaryDetect.js";
12
12
  import { collectFromEntries } from "./repoSearchEntries.js";
13
13
  import { collectBestLines } from "./repoSearchLineSelection.js";
14
14
  import { evidenceAtomStableId } from "./stableId.js";
15
+ import { extraIgnoreLinesForSearch, legacyDiscoveryPolicy, orderCandidatesForSearch, policyOmissionReason, resolveSearchPolicy, shouldScoreContent, } from "./repoSearchPolicy.js";
15
16
  const BINARY_PROBE_BYTES = 512;
16
17
  const IMAGE_EXTENSIONS = new Set([
17
18
  ".avif",
@@ -64,14 +65,52 @@ export function buildAtom(shape) {
64
65
  export function buildCandidate(scopePath, omitted) {
65
66
  return { scopePath, score: 0, signals: [], omitted };
66
67
  }
67
- function collectFromDirectory(scope, limits, fs) {
68
- const files = discoverFiles(scope.workspace, { maxDepth: 12, maxFiles: limits.maxFilesScanned + 1, applyGitignore: false }, fs);
68
+ function collectFromDirectory(scope, limits, fs, policy) {
69
+ const extraIgnoreLines = extraIgnoreLinesForSearch(policy);
70
+ const workspace = extraIgnoreLines.length === 0
71
+ ? scope.workspace
72
+ : { ...scope.workspace, ignoreLines: [...scope.workspace.ignoreLines, ...extraIgnoreLines] };
73
+ const result = discoverWithStats(workspace, {
74
+ maxDepth: 12,
75
+ maxFiles: limits.maxFilesScanned + 1,
76
+ applyGitignore: policy.applyGitignore,
77
+ }, fs);
78
+ const files = result.files;
69
79
  return {
70
80
  files: files.slice(0, limits.maxFilesScanned),
71
81
  truncated: files.length > limits.maxFilesScanned,
82
+ ignored: result.stats.ignored,
83
+ denied: result.stats.denied,
72
84
  };
73
85
  }
74
- export function gatherCandidates(scope, limits, fs) {
86
+ const DEFAULT_GATHER_QUERY = {
87
+ kind: "natural-language",
88
+ text: "generic repository search",
89
+ caseSensitive: false,
90
+ maxResults: 100,
91
+ emittedAtMs: 0,
92
+ };
93
+ function isRetrievalQuery(value) {
94
+ return typeof value === "object" && value !== null && "kind" in value && "text" in value;
95
+ }
96
+ function resolveGatherInputs(scope, queryOrLimits, limitsOrFs, fsOrPolicy, policy) {
97
+ if (isRetrievalQuery(queryOrLimits)) {
98
+ return {
99
+ query: queryOrLimits,
100
+ limits: limitsOrFs,
101
+ fs: fsOrPolicy,
102
+ policy: policy ?? resolveSearchPolicy(scope.relativePaths.length > 0, undefined),
103
+ };
104
+ }
105
+ return {
106
+ query: DEFAULT_GATHER_QUERY,
107
+ limits: queryOrLimits,
108
+ fs: limitsOrFs,
109
+ policy: legacyDiscoveryPolicy(scope.relativePaths.length > 0),
110
+ };
111
+ }
112
+ export function gatherCandidates(scope, queryOrLimits, limitsOrFs, fsOrPolicy, policy) {
113
+ const inputs = resolveGatherInputs(scope, queryOrLimits, limitsOrFs, fsOrPolicy, policy);
75
114
  // Defense in depth alongside the realpath gate: validate scope.relativePaths against the
76
115
  // contracts-layer shape rules (no absolute paths, no `..`, no drive letters, no backslashes).
77
116
  // resolveWithinWorkspace + assertContainedRealPath already provide a complete barrier; this
@@ -83,16 +122,20 @@ export function gatherCandidates(scope, limits, fs) {
83
122
  }
84
123
  }
85
124
  if (scope.relativePaths.length === 0) {
86
- const result = collectFromDirectory(scope, limits, fs);
125
+ const result = collectFromDirectory(scope, inputs.limits, inputs.fs, inputs.policy);
126
+ const ordered = orderCandidatesForSearch(result.files, inputs.query, inputs.policy, result.ignored, result.denied);
87
127
  return {
88
- files: [...result.files].sort((a, b) => (a.relativePath < b.relativePath ? -1 : 1)),
128
+ files: ordered.files,
89
129
  truncated: result.truncated,
130
+ diagnostics: ordered.diagnostics,
90
131
  };
91
132
  }
92
- const result = collectFromEntries(scope, limits, fs);
133
+ const result = collectFromEntries(scope, inputs.limits, inputs.fs);
134
+ const ordered = orderCandidatesForSearch(result.files, inputs.query, inputs.policy, 0, 0);
93
135
  return {
94
- files: [...result.files].sort((a, b) => (a.relativePath < b.relativePath ? -1 : 1)),
136
+ files: ordered.files,
95
137
  truncated: result.truncated,
138
+ diagnostics: ordered.diagnostics,
96
139
  };
97
140
  }
98
141
  export async function probeBinary(fs, abs, size) {
@@ -199,6 +242,11 @@ export async function scanFile(runner, file, state, atoms, candidates) {
199
242
  candidates.push(buildCandidate(file.relativePath, "ignored"));
200
243
  return;
201
244
  }
245
+ const omitted = policyOmissionReason(file.relativePath, runner.policy);
246
+ if (omitted !== undefined) {
247
+ candidates.push(buildCandidate(file.relativePath, omitted));
248
+ return;
249
+ }
202
250
  let isBinary;
203
251
  try {
204
252
  isBinary = await probeBinary(runner.fs, contained.path, file.sizeBytes);
@@ -217,7 +265,7 @@ export async function scanFile(runner, file, state, atoms, candidates) {
217
265
  }
218
266
  state.filesScanned += 1;
219
267
  const text = readForScan(runner, file.relativePath, candidates);
220
- if (text === undefined) {
268
+ if (text === undefined || !shouldScoreContent(runner.query, text, runner.policy)) {
221
269
  return;
222
270
  }
223
271
  scanLines(runner, file.relativePath, text, state, atoms);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oscharko-dev/keiko-workspace",
3
- "version": "0.2.0-beta.8",
3
+ "version": "0.2.0-beta.9",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oscharko-dev/keiko",
3
- "version": "0.2.0-beta.8",
3
+ "version": "0.2.0-beta.9",
4
4
  "description": "Enterprise model-agnostic developer-assist coding agent for regulated engineering workflows.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",