@debian777/kairos-mcp 3.0.1-beta.14

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 (502) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +108 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/cli/api-client.d.ts +31 -0
  5. package/dist/cli/api-client.d.ts.map +1 -0
  6. package/dist/cli/api-client.js +110 -0
  7. package/dist/cli/api-client.js.map +1 -0
  8. package/dist/cli/commands/attest.d.ts +6 -0
  9. package/dist/cli/commands/attest.d.ts.map +1 -0
  10. package/dist/cli/commands/attest.js +52 -0
  11. package/dist/cli/commands/attest.js.map +1 -0
  12. package/dist/cli/commands/begin.d.ts +6 -0
  13. package/dist/cli/commands/begin.d.ts.map +1 -0
  14. package/dist/cli/commands/begin.js +32 -0
  15. package/dist/cli/commands/begin.js.map +1 -0
  16. package/dist/cli/commands/delete.d.ts +6 -0
  17. package/dist/cli/commands/delete.d.ts.map +1 -0
  18. package/dist/cli/commands/delete.js +32 -0
  19. package/dist/cli/commands/delete.js.map +1 -0
  20. package/dist/cli/commands/mint.d.ts +6 -0
  21. package/dist/cli/commands/mint.d.ts.map +1 -0
  22. package/dist/cli/commands/mint.js +48 -0
  23. package/dist/cli/commands/mint.js.map +1 -0
  24. package/dist/cli/commands/next.d.ts +6 -0
  25. package/dist/cli/commands/next.d.ts.map +1 -0
  26. package/dist/cli/commands/next.js +89 -0
  27. package/dist/cli/commands/next.js.map +1 -0
  28. package/dist/cli/commands/search.d.ts +6 -0
  29. package/dist/cli/commands/search.d.ts.map +1 -0
  30. package/dist/cli/commands/search.js +32 -0
  31. package/dist/cli/commands/search.js.map +1 -0
  32. package/dist/cli/commands/update.d.ts +6 -0
  33. package/dist/cli/commands/update.d.ts.map +1 -0
  34. package/dist/cli/commands/update.js +72 -0
  35. package/dist/cli/commands/update.js.map +1 -0
  36. package/dist/cli/config.d.ts +9 -0
  37. package/dist/cli/config.d.ts.map +1 -0
  38. package/dist/cli/config.js +14 -0
  39. package/dist/cli/config.js.map +1 -0
  40. package/dist/cli/index.d.ts +6 -0
  41. package/dist/cli/index.d.ts.map +1 -0
  42. package/dist/cli/index.js +40 -0
  43. package/dist/cli/index.js.map +1 -0
  44. package/dist/cli/output.d.ts +10 -0
  45. package/dist/cli/output.d.ts.map +1 -0
  46. package/dist/cli/output.js +20 -0
  47. package/dist/cli/output.js.map +1 -0
  48. package/dist/config.d.ts +58 -0
  49. package/dist/config.d.ts.map +1 -0
  50. package/dist/config.js +165 -0
  51. package/dist/config.js.map +1 -0
  52. package/dist/embed-docs/mem/00000000-0000-0000-0000-000000002001.md +324 -0
  53. package/dist/embed-docs/mem/00000000-0000-0000-0000-000000002002.md +48 -0
  54. package/dist/http/bearer-validate.d.ts +14 -0
  55. package/dist/http/bearer-validate.d.ts.map +1 -0
  56. package/dist/http/bearer-validate.js +111 -0
  57. package/dist/http/bearer-validate.js.map +1 -0
  58. package/dist/http/http-api-attest.d.ts +7 -0
  59. package/dist/http/http-api-attest.d.ts.map +1 -0
  60. package/dist/http/http-api-attest.js +103 -0
  61. package/dist/http/http-api-attest.js.map +1 -0
  62. package/dist/http/http-api-begin-step.d.ts +8 -0
  63. package/dist/http/http-api-begin-step.d.ts.map +1 -0
  64. package/dist/http/http-api-begin-step.js +108 -0
  65. package/dist/http/http-api-begin-step.js.map +1 -0
  66. package/dist/http/http-api-begin.d.ts +8 -0
  67. package/dist/http/http-api-begin.d.ts.map +1 -0
  68. package/dist/http/http-api-begin.js +167 -0
  69. package/dist/http/http-api-begin.js.map +1 -0
  70. package/dist/http/http-api-delete.d.ts +9 -0
  71. package/dist/http/http-api-delete.d.ts.map +1 -0
  72. package/dist/http/http-api-delete.js +67 -0
  73. package/dist/http/http-api-delete.js.map +1 -0
  74. package/dist/http/http-api-dump.d.ts +8 -0
  75. package/dist/http/http-api-dump.d.ts.map +1 -0
  76. package/dist/http/http-api-dump.js +34 -0
  77. package/dist/http/http-api-dump.js.map +1 -0
  78. package/dist/http/http-api-mint.d.ts +9 -0
  79. package/dist/http/http-api-mint.d.ts.map +1 -0
  80. package/dist/http/http-api-mint.js +100 -0
  81. package/dist/http/http-api-mint.js.map +1 -0
  82. package/dist/http/http-api-next.d.ts +9 -0
  83. package/dist/http/http-api-next.d.ts.map +1 -0
  84. package/dist/http/http-api-next.js +237 -0
  85. package/dist/http/http-api-next.js.map +1 -0
  86. package/dist/http/http-api-routes.d.ts +13 -0
  87. package/dist/http/http-api-routes.d.ts.map +1 -0
  88. package/dist/http/http-api-routes.js +28 -0
  89. package/dist/http/http-api-routes.js.map +1 -0
  90. package/dist/http/http-api-snapshot.d.ts +4 -0
  91. package/dist/http/http-api-snapshot.d.ts.map +1 -0
  92. package/dist/http/http-api-snapshot.js +36 -0
  93. package/dist/http/http-api-snapshot.js.map +1 -0
  94. package/dist/http/http-api-update.d.ts +9 -0
  95. package/dist/http/http-api-update.d.ts.map +1 -0
  96. package/dist/http/http-api-update.js +105 -0
  97. package/dist/http/http-api-update.js.map +1 -0
  98. package/dist/http/http-auth-callback.d.ts +6 -0
  99. package/dist/http/http-auth-callback.d.ts.map +1 -0
  100. package/dist/http/http-auth-callback.js +183 -0
  101. package/dist/http/http-auth-callback.js.map +1 -0
  102. package/dist/http/http-auth-middleware.d.ts +30 -0
  103. package/dist/http/http-auth-middleware.d.ts.map +1 -0
  104. package/dist/http/http-auth-middleware.js +224 -0
  105. package/dist/http/http-auth-middleware.js.map +1 -0
  106. package/dist/http/http-error-handlers.d.ts +7 -0
  107. package/dist/http/http-error-handlers.d.ts.map +1 -0
  108. package/dist/http/http-error-handlers.js +35 -0
  109. package/dist/http/http-error-handlers.js.map +1 -0
  110. package/dist/http/http-health-routes.d.ts +9 -0
  111. package/dist/http/http-health-routes.d.ts.map +1 -0
  112. package/dist/http/http-health-routes.js +117 -0
  113. package/dist/http/http-health-routes.js.map +1 -0
  114. package/dist/http/http-mcp-handler.d.ts +8 -0
  115. package/dist/http/http-mcp-handler.d.ts.map +1 -0
  116. package/dist/http/http-mcp-handler.js +136 -0
  117. package/dist/http/http-mcp-handler.js.map +1 -0
  118. package/dist/http/http-metrics-middleware.d.ts +7 -0
  119. package/dist/http/http-metrics-middleware.d.ts.map +1 -0
  120. package/dist/http/http-metrics-middleware.js +56 -0
  121. package/dist/http/http-metrics-middleware.js.map +1 -0
  122. package/dist/http/http-server-config.d.ts +11 -0
  123. package/dist/http/http-server-config.d.ts.map +1 -0
  124. package/dist/http/http-server-config.js +15 -0
  125. package/dist/http/http-server-config.js.map +1 -0
  126. package/dist/http/http-server-startup.d.ts +9 -0
  127. package/dist/http/http-server-startup.d.ts.map +1 -0
  128. package/dist/http/http-server-startup.js +26 -0
  129. package/dist/http/http-server-startup.js.map +1 -0
  130. package/dist/http/http-server.d.ts +4 -0
  131. package/dist/http/http-server.d.ts.map +1 -0
  132. package/dist/http/http-server.js +39 -0
  133. package/dist/http/http-server.js.map +1 -0
  134. package/dist/http/http-well-known.d.ts +13 -0
  135. package/dist/http/http-well-known.d.ts.map +1 -0
  136. package/dist/http/http-well-known.js +32 -0
  137. package/dist/http/http-well-known.js.map +1 -0
  138. package/dist/index.d.ts +7 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +100 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/metrics-server.d.ts +14 -0
  143. package/dist/metrics-server.d.ts.map +1 -0
  144. package/dist/metrics-server.js +41 -0
  145. package/dist/metrics-server.js.map +1 -0
  146. package/dist/resources/docs-resources.d.ts +2 -0
  147. package/dist/resources/docs-resources.d.ts.map +1 -0
  148. package/dist/resources/docs-resources.js +47 -0
  149. package/dist/resources/docs-resources.js.map +1 -0
  150. package/dist/resources/embedded-mcp-resources.d.ts +73 -0
  151. package/dist/resources/embedded-mcp-resources.d.ts.map +1 -0
  152. package/dist/resources/embedded-mcp-resources.js +132 -0
  153. package/dist/resources/embedded-mcp-resources.js.map +1 -0
  154. package/dist/resources/mem-resources-boot.d.ts +10 -0
  155. package/dist/resources/mem-resources-boot.d.ts.map +1 -0
  156. package/dist/resources/mem-resources-boot.js +164 -0
  157. package/dist/resources/mem-resources-boot.js.map +1 -0
  158. package/dist/resources/prompt-resources.d.ts +5 -0
  159. package/dist/resources/prompt-resources.d.ts.map +1 -0
  160. package/dist/resources/prompt-resources.js +42 -0
  161. package/dist/resources/prompt-resources.js.map +1 -0
  162. package/dist/resources/resource-bootstrap.d.ts +7 -0
  163. package/dist/resources/resource-bootstrap.d.ts.map +1 -0
  164. package/dist/resources/resource-bootstrap.js +33 -0
  165. package/dist/resources/resource-bootstrap.js.map +1 -0
  166. package/dist/server.d.ts +4 -0
  167. package/dist/server.d.ts.map +1 -0
  168. package/dist/server.js +79 -0
  169. package/dist/server.js.map +1 -0
  170. package/dist/services/chain-utils.d.ts +22 -0
  171. package/dist/services/chain-utils.d.ts.map +1 -0
  172. package/dist/services/chain-utils.js +95 -0
  173. package/dist/services/chain-utils.js.map +1 -0
  174. package/dist/services/code-block-processor.d.ts +40 -0
  175. package/dist/services/code-block-processor.d.ts.map +1 -0
  176. package/dist/services/code-block-processor.js +169 -0
  177. package/dist/services/code-block-processor.js.map +1 -0
  178. package/dist/services/embedding/config.d.ts +5 -0
  179. package/dist/services/embedding/config.d.ts.map +1 -0
  180. package/dist/services/embedding/config.js +13 -0
  181. package/dist/services/embedding/config.js.map +1 -0
  182. package/dist/services/embedding/providers.d.ts +5 -0
  183. package/dist/services/embedding/providers.d.ts.map +1 -0
  184. package/dist/services/embedding/providers.js +141 -0
  185. package/dist/services/embedding/providers.js.map +1 -0
  186. package/dist/services/embedding/service.d.ts +39 -0
  187. package/dist/services/embedding/service.d.ts.map +1 -0
  188. package/dist/services/embedding/service.js +302 -0
  189. package/dist/services/embedding/service.js.map +1 -0
  190. package/dist/services/embedding/types.d.ts +17 -0
  191. package/dist/services/embedding/types.d.ts.map +1 -0
  192. package/dist/services/embedding/types.js +2 -0
  193. package/dist/services/embedding/types.js.map +1 -0
  194. package/dist/services/id-generator.d.ts +63 -0
  195. package/dist/services/id-generator.d.ts.map +1 -0
  196. package/dist/services/id-generator.js +101 -0
  197. package/dist/services/id-generator.js.map +1 -0
  198. package/dist/services/key-value-store-factory.d.ts +7 -0
  199. package/dist/services/key-value-store-factory.d.ts.map +1 -0
  200. package/dist/services/key-value-store-factory.js +15 -0
  201. package/dist/services/key-value-store-factory.js.map +1 -0
  202. package/dist/services/key-value-store.d.ts +24 -0
  203. package/dist/services/key-value-store.d.ts.map +1 -0
  204. package/dist/services/key-value-store.js +6 -0
  205. package/dist/services/key-value-store.js.map +1 -0
  206. package/dist/services/memory/chain-builder-proof.d.ts +18 -0
  207. package/dist/services/memory/chain-builder-proof.d.ts.map +1 -0
  208. package/dist/services/memory/chain-builder-proof.js +78 -0
  209. package/dist/services/memory/chain-builder-proof.js.map +1 -0
  210. package/dist/services/memory/chain-builder.d.ts +4 -0
  211. package/dist/services/memory/chain-builder.d.ts.map +1 -0
  212. package/dist/services/memory/chain-builder.js +185 -0
  213. package/dist/services/memory/chain-builder.js.map +1 -0
  214. package/dist/services/memory/store-chain-default-handler.d.ts +9 -0
  215. package/dist/services/memory/store-chain-default-handler.d.ts.map +1 -0
  216. package/dist/services/memory/store-chain-default-handler.js +118 -0
  217. package/dist/services/memory/store-chain-default-handler.js.map +1 -0
  218. package/dist/services/memory/store-chain-header-handler.d.ts +8 -0
  219. package/dist/services/memory/store-chain-header-handler.d.ts.map +1 -0
  220. package/dist/services/memory/store-chain-header-handler.js +98 -0
  221. package/dist/services/memory/store-chain-header-handler.js.map +1 -0
  222. package/dist/services/memory/store-chain-helpers.d.ts +27 -0
  223. package/dist/services/memory/store-chain-helpers.d.ts.map +1 -0
  224. package/dist/services/memory/store-chain-helpers.js +102 -0
  225. package/dist/services/memory/store-chain-helpers.js.map +1 -0
  226. package/dist/services/memory/store-chain.d.ts +15 -0
  227. package/dist/services/memory/store-chain.d.ts.map +1 -0
  228. package/dist/services/memory/store-chain.js +56 -0
  229. package/dist/services/memory/store-chain.js.map +1 -0
  230. package/dist/services/memory/store-init.d.ts +3 -0
  231. package/dist/services/memory/store-init.d.ts.map +1 -0
  232. package/dist/services/memory/store-init.js +127 -0
  233. package/dist/services/memory/store-init.js.map +1 -0
  234. package/dist/services/memory/store-methods.d.ts +35 -0
  235. package/dist/services/memory/store-methods.d.ts.map +1 -0
  236. package/dist/services/memory/store-methods.js +308 -0
  237. package/dist/services/memory/store-methods.js.map +1 -0
  238. package/dist/services/memory/store.d.ts +36 -0
  239. package/dist/services/memory/store.d.ts.map +1 -0
  240. package/dist/services/memory/store.js +119 -0
  241. package/dist/services/memory/store.js.map +1 -0
  242. package/dist/services/memory-store.d.ts +33 -0
  243. package/dist/services/memory-store.d.ts.map +1 -0
  244. package/dist/services/memory-store.js +158 -0
  245. package/dist/services/memory-store.js.map +1 -0
  246. package/dist/services/metrics/agent-metrics.d.ts +12 -0
  247. package/dist/services/metrics/agent-metrics.d.ts.map +1 -0
  248. package/dist/services/metrics/agent-metrics.js +34 -0
  249. package/dist/services/metrics/agent-metrics.js.map +1 -0
  250. package/dist/services/metrics/embedding-metrics.d.ts +12 -0
  251. package/dist/services/metrics/embedding-metrics.d.ts.map +1 -0
  252. package/dist/services/metrics/embedding-metrics.js +41 -0
  253. package/dist/services/metrics/embedding-metrics.js.map +1 -0
  254. package/dist/services/metrics/http-metrics.d.ts +12 -0
  255. package/dist/services/metrics/http-metrics.d.ts.map +1 -0
  256. package/dist/services/metrics/http-metrics.js +41 -0
  257. package/dist/services/metrics/http-metrics.js.map +1 -0
  258. package/dist/services/metrics/mcp-metrics.d.ts +16 -0
  259. package/dist/services/metrics/mcp-metrics.d.ts.map +1 -0
  260. package/dist/services/metrics/mcp-metrics.js +55 -0
  261. package/dist/services/metrics/mcp-metrics.js.map +1 -0
  262. package/dist/services/metrics/memory-metrics.d.ts +10 -0
  263. package/dist/services/metrics/memory-metrics.d.ts.map +1 -0
  264. package/dist/services/metrics/memory-metrics.js +28 -0
  265. package/dist/services/metrics/memory-metrics.js.map +1 -0
  266. package/dist/services/metrics/qdrant-metrics.d.ts +11 -0
  267. package/dist/services/metrics/qdrant-metrics.d.ts.map +1 -0
  268. package/dist/services/metrics/qdrant-metrics.js +35 -0
  269. package/dist/services/metrics/qdrant-metrics.js.map +1 -0
  270. package/dist/services/metrics/registry.d.ts +9 -0
  271. package/dist/services/metrics/registry.d.ts.map +1 -0
  272. package/dist/services/metrics/registry.js +19 -0
  273. package/dist/services/metrics/registry.js.map +1 -0
  274. package/dist/services/metrics/system-metrics.d.ts +10 -0
  275. package/dist/services/metrics/system-metrics.d.ts.map +1 -0
  276. package/dist/services/metrics/system-metrics.js +35 -0
  277. package/dist/services/metrics/system-metrics.js.map +1 -0
  278. package/dist/services/proof-of-work-store.d.ts +66 -0
  279. package/dist/services/proof-of-work-store.d.ts.map +1 -0
  280. package/dist/services/proof-of-work-store.js +141 -0
  281. package/dist/services/proof-of-work-store.js.map +1 -0
  282. package/dist/services/qdrant/connection.d.ts +24 -0
  283. package/dist/services/qdrant/connection.d.ts.map +1 -0
  284. package/dist/services/qdrant/connection.js +126 -0
  285. package/dist/services/qdrant/connection.js.map +1 -0
  286. package/dist/services/qdrant/index.d.ts +3 -0
  287. package/dist/services/qdrant/index.d.ts.map +1 -0
  288. package/dist/services/qdrant/index.js +4 -0
  289. package/dist/services/qdrant/index.js.map +1 -0
  290. package/dist/services/qdrant/initialization.d.ts +25 -0
  291. package/dist/services/qdrant/initialization.d.ts.map +1 -0
  292. package/dist/services/qdrant/initialization.js +170 -0
  293. package/dist/services/qdrant/initialization.js.map +1 -0
  294. package/dist/services/qdrant/listing.d.ts +26 -0
  295. package/dist/services/qdrant/listing.d.ts.map +1 -0
  296. package/dist/services/qdrant/listing.js +88 -0
  297. package/dist/services/qdrant/listing.js.map +1 -0
  298. package/dist/services/qdrant/memory-retrieval.d.ts +14 -0
  299. package/dist/services/qdrant/memory-retrieval.d.ts.map +1 -0
  300. package/dist/services/qdrant/memory-retrieval.js +110 -0
  301. package/dist/services/qdrant/memory-retrieval.js.map +1 -0
  302. package/dist/services/qdrant/memory-store.d.ts +16 -0
  303. package/dist/services/qdrant/memory-store.d.ts.map +1 -0
  304. package/dist/services/qdrant/memory-store.js +108 -0
  305. package/dist/services/qdrant/memory-store.js.map +1 -0
  306. package/dist/services/qdrant/memory-updates.d.ts +8 -0
  307. package/dist/services/qdrant/memory-updates.d.ts.map +1 -0
  308. package/dist/services/qdrant/memory-updates.js +206 -0
  309. package/dist/services/qdrant/memory-updates.js.map +1 -0
  310. package/dist/services/qdrant/protocol.d.ts +16 -0
  311. package/dist/services/qdrant/protocol.d.ts.map +1 -0
  312. package/dist/services/qdrant/protocol.js +48 -0
  313. package/dist/services/qdrant/protocol.js.map +1 -0
  314. package/dist/services/qdrant/quality.d.ts +14 -0
  315. package/dist/services/qdrant/quality.d.ts.map +1 -0
  316. package/dist/services/qdrant/quality.js +101 -0
  317. package/dist/services/qdrant/quality.js.map +1 -0
  318. package/dist/services/qdrant/resources.d.ts +7 -0
  319. package/dist/services/qdrant/resources.d.ts.map +1 -0
  320. package/dist/services/qdrant/resources.js +108 -0
  321. package/dist/services/qdrant/resources.js.map +1 -0
  322. package/dist/services/qdrant/search.d.ts +22 -0
  323. package/dist/services/qdrant/search.d.ts.map +1 -0
  324. package/dist/services/qdrant/search.js +75 -0
  325. package/dist/services/qdrant/search.js.map +1 -0
  326. package/dist/services/qdrant/service.d.ts +90 -0
  327. package/dist/services/qdrant/service.d.ts.map +1 -0
  328. package/dist/services/qdrant/service.js +95 -0
  329. package/dist/services/qdrant/service.js.map +1 -0
  330. package/dist/services/qdrant/snapshots.d.ts +19 -0
  331. package/dist/services/qdrant/snapshots.d.ts.map +1 -0
  332. package/dist/services/qdrant/snapshots.js +130 -0
  333. package/dist/services/qdrant/snapshots.js.map +1 -0
  334. package/dist/services/qdrant/types.d.ts +39 -0
  335. package/dist/services/qdrant/types.d.ts.map +1 -0
  336. package/dist/services/qdrant/types.js +2 -0
  337. package/dist/services/qdrant/types.js.map +1 -0
  338. package/dist/services/qdrant/utils.d.ts +20 -0
  339. package/dist/services/qdrant/utils.d.ts.map +1 -0
  340. package/dist/services/qdrant/utils.js +121 -0
  341. package/dist/services/qdrant/utils.js.map +1 -0
  342. package/dist/services/redis-cache.d.ts +43 -0
  343. package/dist/services/redis-cache.d.ts.map +1 -0
  344. package/dist/services/redis-cache.js +214 -0
  345. package/dist/services/redis-cache.js.map +1 -0
  346. package/dist/services/redis.d.ts +43 -0
  347. package/dist/services/redis.d.ts.map +1 -0
  348. package/dist/services/redis.js +234 -0
  349. package/dist/services/redis.js.map +1 -0
  350. package/dist/services/stats/bonuses.d.ts +28 -0
  351. package/dist/services/stats/bonuses.d.ts.map +1 -0
  352. package/dist/services/stats/bonuses.js +96 -0
  353. package/dist/services/stats/bonuses.js.map +1 -0
  354. package/dist/services/stats/healer.d.ts +6 -0
  355. package/dist/services/stats/healer.d.ts.map +1 -0
  356. package/dist/services/stats/healer.js +24 -0
  357. package/dist/services/stats/healer.js.map +1 -0
  358. package/dist/services/stats/model-stats.d.ts +53 -0
  359. package/dist/services/stats/model-stats.d.ts.map +1 -0
  360. package/dist/services/stats/model-stats.js +238 -0
  361. package/dist/services/stats/model-stats.js.map +1 -0
  362. package/dist/services/stats/protocol.d.ts +11 -0
  363. package/dist/services/stats/protocol.d.ts.map +1 -0
  364. package/dist/services/stats/protocol.js +55 -0
  365. package/dist/services/stats/protocol.js.map +1 -0
  366. package/dist/services/stats/scoring.d.ts +19 -0
  367. package/dist/services/stats/scoring.d.ts.map +1 -0
  368. package/dist/services/stats/scoring.js +102 -0
  369. package/dist/services/stats/scoring.js.map +1 -0
  370. package/dist/services/stats/types.d.ts +39 -0
  371. package/dist/services/stats/types.d.ts.map +1 -0
  372. package/dist/services/stats/types.js +8 -0
  373. package/dist/services/stats/types.js.map +1 -0
  374. package/dist/tools/kairos_attest.d.ts +7 -0
  375. package/dist/tools/kairos_attest.d.ts.map +1 -0
  376. package/dist/tools/kairos_attest.js +179 -0
  377. package/dist/tools/kairos_attest.js.map +1 -0
  378. package/dist/tools/kairos_begin.d.ts +9 -0
  379. package/dist/tools/kairos_begin.d.ts.map +1 -0
  380. package/dist/tools/kairos_begin.js +149 -0
  381. package/dist/tools/kairos_begin.js.map +1 -0
  382. package/dist/tools/kairos_begin_schema.d.ts +48 -0
  383. package/dist/tools/kairos_begin_schema.d.ts.map +1 -0
  384. package/dist/tools/kairos_begin_schema.js +48 -0
  385. package/dist/tools/kairos_begin_schema.js.map +1 -0
  386. package/dist/tools/kairos_delete.d.ts +2 -0
  387. package/dist/tools/kairos_delete.d.ts.map +1 -0
  388. package/dist/tools/kairos_delete.js +113 -0
  389. package/dist/tools/kairos_delete.js.map +1 -0
  390. package/dist/tools/kairos_dump.d.ts +14 -0
  391. package/dist/tools/kairos_dump.d.ts.map +1 -0
  392. package/dist/tools/kairos_dump.js +148 -0
  393. package/dist/tools/kairos_dump.js.map +1 -0
  394. package/dist/tools/kairos_mint.d.ts +7 -0
  395. package/dist/tools/kairos_mint.d.ts.map +1 -0
  396. package/dist/tools/kairos_mint.js +233 -0
  397. package/dist/tools/kairos_mint.js.map +1 -0
  398. package/dist/tools/kairos_next-missing-proof-payload.d.ts +24 -0
  399. package/dist/tools/kairos_next-missing-proof-payload.d.ts.map +1 -0
  400. package/dist/tools/kairos_next-missing-proof-payload.js +32 -0
  401. package/dist/tools/kairos_next-missing-proof-payload.js.map +1 -0
  402. package/dist/tools/kairos_next-pow-helpers.d.ts +57 -0
  403. package/dist/tools/kairos_next-pow-helpers.d.ts.map +1 -0
  404. package/dist/tools/kairos_next-pow-helpers.js +271 -0
  405. package/dist/tools/kairos_next-pow-helpers.js.map +1 -0
  406. package/dist/tools/kairos_next-previous-step.d.ts +36 -0
  407. package/dist/tools/kairos_next-previous-step.d.ts.map +1 -0
  408. package/dist/tools/kairos_next-previous-step.js +121 -0
  409. package/dist/tools/kairos_next-previous-step.js.map +1 -0
  410. package/dist/tools/kairos_next.d.ts +12 -0
  411. package/dist/tools/kairos_next.d.ts.map +1 -0
  412. package/dist/tools/kairos_next.js +285 -0
  413. package/dist/tools/kairos_next.js.map +1 -0
  414. package/dist/tools/kairos_next_schema.d.ts +80 -0
  415. package/dist/tools/kairos_next_schema.d.ts.map +1 -0
  416. package/dist/tools/kairos_next_schema.js +82 -0
  417. package/dist/tools/kairos_next_schema.js.map +1 -0
  418. package/dist/tools/kairos_search.d.ts +15 -0
  419. package/dist/tools/kairos_search.d.ts.map +1 -0
  420. package/dist/tools/kairos_search.js +262 -0
  421. package/dist/tools/kairos_search.js.map +1 -0
  422. package/dist/tools/kairos_spaces.d.ts +10 -0
  423. package/dist/tools/kairos_spaces.d.ts.map +1 -0
  424. package/dist/tools/kairos_spaces.js +129 -0
  425. package/dist/tools/kairos_spaces.js.map +1 -0
  426. package/dist/tools/kairos_update.d.ts +2 -0
  427. package/dist/tools/kairos_update.d.ts.map +1 -0
  428. package/dist/tools/kairos_update.js +158 -0
  429. package/dist/tools/kairos_update.js.map +1 -0
  430. package/dist/types/index.d.ts +60 -0
  431. package/dist/types/index.d.ts.map +1 -0
  432. package/dist/types/index.js +21 -0
  433. package/dist/types/index.js.map +1 -0
  434. package/dist/types/memory.d.ts +38 -0
  435. package/dist/types/memory.d.ts.map +1 -0
  436. package/dist/types/memory.js +2 -0
  437. package/dist/types/memory.js.map +1 -0
  438. package/dist/utils/build-version.d.ts +15 -0
  439. package/dist/utils/build-version.d.ts.map +1 -0
  440. package/dist/utils/build-version.js +46 -0
  441. package/dist/utils/build-version.js.map +1 -0
  442. package/dist/utils/global-error-handlers.d.ts +7 -0
  443. package/dist/utils/global-error-handlers.d.ts.map +1 -0
  444. package/dist/utils/global-error-handlers.js +61 -0
  445. package/dist/utils/global-error-handlers.js.map +1 -0
  446. package/dist/utils/log-core.d.ts +11 -0
  447. package/dist/utils/log-core.d.ts.map +1 -0
  448. package/dist/utils/log-core.js +78 -0
  449. package/dist/utils/log-core.js.map +1 -0
  450. package/dist/utils/logger.d.ts +22 -0
  451. package/dist/utils/logger.d.ts.map +1 -0
  452. package/dist/utils/logger.js +63 -0
  453. package/dist/utils/logger.js.map +1 -0
  454. package/dist/utils/memory-body.d.ts +6 -0
  455. package/dist/utils/memory-body.d.ts.map +1 -0
  456. package/dist/utils/memory-body.js +21 -0
  457. package/dist/utils/memory-body.js.map +1 -0
  458. package/dist/utils/memory-store-utils.d.ts +14 -0
  459. package/dist/utils/memory-store-utils.d.ts.map +1 -0
  460. package/dist/utils/memory-store-utils.js +83 -0
  461. package/dist/utils/memory-store-utils.js.map +1 -0
  462. package/dist/utils/qdrant-collection-utils.d.ts +11 -0
  463. package/dist/utils/qdrant-collection-utils.d.ts.map +1 -0
  464. package/dist/utils/qdrant-collection-utils.js +62 -0
  465. package/dist/utils/qdrant-collection-utils.js.map +1 -0
  466. package/dist/utils/qdrant-query-utils.d.ts +6 -0
  467. package/dist/utils/qdrant-query-utils.d.ts.map +1 -0
  468. package/dist/utils/qdrant-query-utils.js +23 -0
  469. package/dist/utils/qdrant-query-utils.js.map +1 -0
  470. package/dist/utils/qdrant-utils.d.ts +5 -0
  471. package/dist/utils/qdrant-utils.d.ts.map +1 -0
  472. package/dist/utils/qdrant-utils.js +5 -0
  473. package/dist/utils/qdrant-utils.js.map +1 -0
  474. package/dist/utils/qdrant-vector-management.d.ts +25 -0
  475. package/dist/utils/qdrant-vector-management.d.ts.map +1 -0
  476. package/dist/utils/qdrant-vector-management.js +284 -0
  477. package/dist/utils/qdrant-vector-management.js.map +1 -0
  478. package/dist/utils/qdrant-vector-types.d.ts +35 -0
  479. package/dist/utils/qdrant-vector-types.d.ts.map +1 -0
  480. package/dist/utils/qdrant-vector-types.js +42 -0
  481. package/dist/utils/qdrant-vector-types.js.map +1 -0
  482. package/dist/utils/space-display.d.ts +11 -0
  483. package/dist/utils/space-display.d.ts.map +1 -0
  484. package/dist/utils/space-display.js +25 -0
  485. package/dist/utils/space-display.js.map +1 -0
  486. package/dist/utils/space-filter.d.ts +15 -0
  487. package/dist/utils/space-filter.d.ts.map +1 -0
  488. package/dist/utils/space-filter.js +18 -0
  489. package/dist/utils/space-filter.js.map +1 -0
  490. package/dist/utils/structured-logger.d.ts +41 -0
  491. package/dist/utils/structured-logger.d.ts.map +1 -0
  492. package/dist/utils/structured-logger.js +133 -0
  493. package/dist/utils/structured-logger.js.map +1 -0
  494. package/dist/utils/tenant-context.d.ts +67 -0
  495. package/dist/utils/tenant-context.d.ts.map +1 -0
  496. package/dist/utils/tenant-context.js +154 -0
  497. package/dist/utils/tenant-context.js.map +1 -0
  498. package/dist/utils/uri-builder.d.ts +37 -0
  499. package/dist/utils/uri-builder.d.ts.map +1 -0
  500. package/dist/utils/uri-builder.js +60 -0
  501. package/dist/utils/uri-builder.js.map +1 -0
  502. package/package.json +121 -0
@@ -0,0 +1,324 @@
1
+ # Create New KAIROS Protocol Chain
2
+
3
+ Guide an AI agent through creating a new executable protocol chain in KAIROS.
4
+ This protocol is offered when kairos_search finds no match. **Use a challenge
5
+ on every step that can be verified** — it makes protocols runnable, auditable,
6
+ and self-healing. When in doubt, add a challenge.
7
+
8
+ A challenge is defined as a **JSON object in a fenced ` ```json ` block** at the
9
+ end of each step: use an object with a `challenge` key whose value has the same
10
+ shape as the `challenge` returned by kairos_begin and kairos_next; round-trips
11
+ cleanly with kairos_dump and kairos_mint.
12
+
13
+ ## How to write a Natural Language Triggers section
14
+
15
+ Every protocol **must** include a `## Natural Language Triggers` section as the
16
+ **first H2** after the H1 title and introductory paragraph. This section tells
17
+ agents when to activate the protocol from human speech.
18
+
19
+ **Required structure (exact order):**
20
+
21
+ 1. **Trigger phrases** — 3–6 quoted phrases a user would say to invoke this protocol.
22
+ 2. **Trigger pattern** — verb + noun formula: `**verb** + (noun1 / noun2 / noun3)`.
23
+ 3. **Must Never** — 1–3 cases where this protocol must NOT be triggered.
24
+ 4. **Must Always** — 1–3 mandatory behaviours when the protocol IS triggered.
25
+ 5. **Good trigger examples** — 2–3 phrases that correctly activate, with `→ run this protocol`.
26
+ 6. **Bad trigger examples** — 2–3 phrases that should NOT activate, with `→ use X instead`.
27
+
28
+ **Must Never:**
29
+ - Use vague descriptions: ❌ "Run when the user wants to do something with UI"
30
+ - Overlap with another protocol's triggers without disambiguation
31
+ - Omit the section — every protocol needs one
32
+
33
+ **Must Always:**
34
+ - Use imperative language in Must Never / Must Always (no "should", "consider", "might")
35
+ - Include at least one Good and one Bad example
36
+ - Match trigger verbs to the protocol's actual purpose
37
+
38
+ **Good example** (for a deployment protocol):
39
+
40
+ ```markdown
41
+ ## Natural Language Triggers
42
+
43
+ **Run this protocol when the user says ANY of:**
44
+
45
+ - "deploy to staging" / "push to production"
46
+ - "release this version" / "ship it"
47
+
48
+ **Trigger verbs** + (staging / production / environment / release):
49
+ - **deploy** / **push** / **release** / **ship** / **promote**
50
+
51
+ **Must Never:**
52
+ - Trigger on "deploy" when the user means a local dev server
53
+ - Run without confirming the target environment
54
+
55
+ **Must Always:**
56
+ - Confirm target environment before Step 1
57
+ - Check that CI pipeline passed before deploying
58
+
59
+ **Good trigger examples:**
60
+ - "Deploy the API to staging" → run this protocol
61
+ - "Ship v2.3.0 to production" → run this protocol
62
+
63
+ **Bad trigger examples:**
64
+ - "Start the dev server" → not a deployment, do not trigger
65
+ - "Show me the last deployment" → use search, not this protocol
66
+ ```
67
+
68
+ **Bad example** (vague, no verbs, no Good/Bad):
69
+
70
+ ```markdown
71
+ ## When to Use
72
+ This protocol can be used for deployments and releases.
73
+ ```
74
+
75
+ ## Why use a challenge on every step
76
+
77
+ - **Runnable:** Agents and users can execute the protocol step-by-step and
78
+ prove completion.
79
+ - **Deterministic:** Each step has a clear success criterion (command exit
80
+ code, comment length, user confirmation, or MCP result).
81
+ - **Recoverable:** If a step fails, kairos_next returns a fresh challenge
82
+ and the agent can retry or fix the step via kairos_update.
83
+
84
+ Prefer a challenge on every step; omit only for purely informational steps
85
+ where no verification is possible.
86
+
87
+ Example: ```json
88
+ {
89
+ "challenge": {
90
+ "type": "comment",
91
+ "comment": { "min_length": 10 },
92
+ "required": true
93
+ }
94
+ }
95
+ ```
96
+
97
+ ## Challenge types and JSON examples
98
+
99
+ Place a fenced ` ```json ` block at the end of the step with an object with a
100
+ `challenge` key. Use the type that fits the step; mix types in one protocol.
101
+
102
+ **shell** — Step requires running a command (build, test, deploy script).
103
+
104
+ Example: ```json
105
+ {
106
+ "challenge": {
107
+ "type": "shell",
108
+ "shell": {
109
+ "cmd": "npm test",
110
+ "timeout_seconds": 60
111
+ },
112
+ "required": true
113
+ }
114
+ }
115
+ ```
116
+
117
+ **comment** — Step requires a short verification (review, summary, checklist).
118
+
119
+ Example: ```json
120
+ {
121
+ "challenge": {
122
+ "type": "comment",
123
+ "comment": { "min_length": 50 },
124
+ "required": true
125
+ }
126
+ }
127
+ ```
128
+
129
+ **user_input** — Step requires human confirmation (approvals, go/no-go).
130
+
131
+ Example: ```json
132
+ {
133
+ "challenge": {
134
+ "type": "user_input",
135
+ "user_input": { "prompt": "Approve deployment?" },
136
+ "required": true
137
+ }
138
+ }
139
+ ```
140
+
141
+ **mcp** — Step requires calling an MCP tool (e.g. kairos_mint, kairos_update).
142
+
143
+ Example: ```json
144
+ {
145
+ "challenge": {
146
+ "type": "mcp",
147
+ "mcp": { "tool_name": "kairos_mint" },
148
+ "required": true
149
+ }
150
+ }
151
+ ```
152
+
153
+ ## Example protocol (for inspiration)
154
+
155
+ Use H1 for the protocol title, H2 for each step, then step body, then a
156
+ ` ```json ` block with the challenge for that step.
157
+
158
+ **Step 1 — shell:** Run the test suite and linter.
159
+
160
+ Example: ```json
161
+ {
162
+ "challenge": {
163
+ "type": "shell",
164
+ "shell": {
165
+ "cmd": "npm test && npm run lint",
166
+ "timeout_seconds": 60
167
+ },
168
+ "required": true
169
+ }
170
+ }
171
+ ```
172
+
173
+ **Step 2 — comment:** Summarize what changed and why (min 50 chars).
174
+
175
+ Example: ```json
176
+ {
177
+ "challenge": {
178
+ "type": "comment",
179
+ "comment": { "min_length": 50 },
180
+ "required": true
181
+ }
182
+ }
183
+ ```
184
+
185
+ **Step 3 — user_input:** Get user approval for merge.
186
+
187
+ Example: ```json
188
+ {
189
+ "challenge": {
190
+ "type": "user_input",
191
+ "user_input": { "prompt": "Approve these changes for merge?" },
192
+ "required": true
193
+ }
194
+ }
195
+ ```
196
+
197
+ **Step 4 — mcp:** Call the merge tool.
198
+
199
+ Example: ```json
200
+ {
201
+ "challenge": {
202
+ "type": "mcp",
203
+ "mcp": { "tool_name": "merge_tool" },
204
+ "required": true
205
+ }
206
+ }
207
+ ```
208
+
209
+ ---
210
+
211
+ Example step format: H2, body, then a trailing ` ```json ` block with `challenge`.
212
+
213
+ Format: ```json
214
+ {
215
+ "challenge": {
216
+ "type": "comment",
217
+ "comment": { "min_length": 10 },
218
+ "required": true
219
+ }
220
+ }
221
+ ```
222
+
223
+ ## Step 1: Confirm Intent
224
+
225
+ Before creating a new protocol, confirm the user actually wants this.
226
+ They may have misspelled a search query, or the protocol may exist under
227
+ a different name.
228
+
229
+ Ask the user: "No existing protocol matched your query. Would you like
230
+ to create a new one, or refine your search?"
231
+
232
+ ```json
233
+ {
234
+ "challenge": {
235
+ "type": "user_input",
236
+ "user_input": { "prompt": "Confirm you want to create a new protocol chain" },
237
+ "required": true
238
+ }
239
+ }
240
+ ```
241
+
242
+ ## Step 2: Gather Requirements
243
+
244
+ Collect the key details for the new protocol:
245
+
246
+ - **Title**: A clear, descriptive name for the protocol chain (H1 heading)
247
+ - **Steps**: What steps should the protocol have? (each becomes an H2 heading)
248
+ - **Challenges**: For each step, add a ` ```json ` block with a `challenge` key (one of):
249
+ - **shell** — `{"challenge":{"type":"shell","shell":{"cmd":"...","timeout_seconds":30},"required":true}}`
250
+ - **comment** — `{"challenge":{"type":"comment","comment":{"min_length":50},"required":true}}`
251
+ - **user_input** — `{"challenge":{"type":"user_input","user_input":{"prompt":"..."},"required":true}}`
252
+ - **mcp** — `{"challenge":{"type":"mcp","mcp":{"tool_name":"kairos_mint"},"required":true}}`
253
+
254
+ Summarize the gathered requirements as a structured list.
255
+
256
+ ```json
257
+ {
258
+ "challenge": {
259
+ "type": "comment",
260
+ "comment": { "min_length": 50 },
261
+ "required": true
262
+ }
263
+ }
264
+ ```
265
+
266
+ ## Step 3: Draft Markdown
267
+
268
+ Using the requirements from step 2, draft the full markdown document
269
+ that will be passed to `kairos_mint`. Use H1 for title, H2 per step,
270
+ step body, then a ` ```json ` block with the challenge for that step.
271
+ **Add a challenge (```json block) to every step** that can be verified (see
272
+ examples above). Post the full drafted markdown in your verification comment.
273
+
274
+ **Must Always include in the draft:**
275
+ - **Natural Language Triggers** section as the first H2 — follow the structure
276
+ and Good/Bad examples defined in "How to write a Natural Language Triggers
277
+ section" above.
278
+ - **Completion Rule** section as the last H2.
279
+
280
+ ```json
281
+ {
282
+ "challenge": {
283
+ "type": "comment",
284
+ "comment": { "min_length": 100 },
285
+ "required": true
286
+ }
287
+ }
288
+ ```
289
+
290
+ ## Step 4: User Review
291
+
292
+ Present the drafted protocol markdown to the user for review.
293
+ Ask them to approve, request changes, or cancel.
294
+
295
+ If they request changes, update the draft before proceeding.
296
+
297
+ ```json
298
+ {
299
+ "challenge": {
300
+ "type": "user_input",
301
+ "user_input": { "prompt": "Approve the protocol draft for minting" },
302
+ "required": true
303
+ }
304
+ }
305
+ ```
306
+
307
+ ## Step 5: Mint Protocol
308
+
309
+ Call `kairos_mint` with the approved markdown document. Use
310
+ `force_update: false` (default) unless the user explicitly asks to
311
+ overwrite an existing protocol.
312
+
313
+ Confirm the mint was successful and report the chain head URI back
314
+ to the user.
315
+
316
+ ```json
317
+ {
318
+ "challenge": {
319
+ "type": "mcp",
320
+ "mcp": { "tool_name": "kairos_mint" },
321
+ "required": true
322
+ }
323
+ }
324
+ ```
@@ -0,0 +1,48 @@
1
+ # Get help refining your search
2
+
3
+ **You are an AI agent.** You ran `kairos_search` and got no solid match (or only weak/ambiguous ones). This protocol helps you turn the user's vague request into a better query so the next `kairos_search` can find the right protocol.
4
+
5
+ ## Step 1: Extract what the user actually wants
6
+
7
+ From the user's original message, identify:
8
+ - **Goal:** What outcome do they want? (e.g. "run tests", "write docs", "create a Jira ticket")
9
+ - **Context:** Any project, tool, domain, or proper noun they mentioned?
10
+ - **Gaps:** What is missing or ambiguous? (e.g. "which repo?", "which doc type?", "which project key?")
11
+
12
+ If the request was a slash-command or shorthand (e.g. "/ai-docs", "do the thing"), expand it: what would a concrete version of that command look like?
13
+
14
+ Write your analysis as your solution (goal + context + gaps, minimum 30 characters).
15
+
16
+ ```json
17
+ {
18
+ "challenge": {
19
+ "type": "comment",
20
+ "comment": { "min_length": 30 },
21
+ "required": true
22
+ }
23
+ }
24
+ ```
25
+
26
+ ## Step 2: Build and run a refined kairos_search query
27
+
28
+ Using your Step 1 analysis, construct a single search query:
29
+ - Use 3–8 specific words (nouns and verbs, no filler). Examples: "write ai instructions zero-drift template", "jira create story BIB", "npm test lint deploy".
30
+ - Include domain or tool names if known (e.g. "jira", "gitlab", "coding standards").
31
+ - Do not reuse the user's exact vague phrase — that already failed.
32
+
33
+ Write your refined query as your solution, then call `kairos_search` with it.
34
+
35
+ - **Strong match (score >= 0.7):** Pick that choice and call `kairos_begin` with its URI.
36
+ - **Weak matches only (all scores < 0.7):** Ask the user to clarify, or pick the create choice to build a new protocol.
37
+
38
+ Do not loop this refining protocol more than once — if two searches fail, the protocol likely does not exist yet.
39
+
40
+ ```json
41
+ {
42
+ "challenge": {
43
+ "type": "mcp",
44
+ "mcp": { "tool_name": "kairos_search" },
45
+ "required": true
46
+ }
47
+ }
48
+ ```
@@ -0,0 +1,14 @@
1
+ export interface AuthPayload {
2
+ sub: string;
3
+ groups: string[];
4
+ /** Realm from token issuer (e.g. kairos-dev) for space isolation. */
5
+ realm: string;
6
+ /** Optional group UUIDs from token; when present used for space ID so renames are stable. */
7
+ group_ids?: string[];
8
+ }
9
+ /**
10
+ * Validate Bearer JWT: iss in trusted list, aud in allowed list, exp not expired, signature valid.
11
+ * Returns { sub, groups } or null if invalid.
12
+ */
13
+ export declare function validateBearerToken(token: string, trustedIssuers: string[], allowedAudiences: string[]): Promise<AuthPayload | null>;
14
+ //# sourceMappingURL=bearer-validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bearer-validate.d.ts","sourceRoot":"","sources":["../../src/http/bearer-validate.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAoDD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EAAE,EACxB,gBAAgB,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAsD7B"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Bearer JWT validation for OIDC (Keycloak). Verifies iss, aud, exp and signature via JWKS.
3
+ * When KEYCLOAK_INTERNAL_URL is set, JWKS is fetched from that host so the app in Docker can reach Keycloak.
4
+ */
5
+ import { createRemoteJWKSet, jwtVerify } from 'jose';
6
+ import { decodeJwt } from 'jose/jwt/decode';
7
+ import { KEYCLOAK_URL, KEYCLOAK_INTERNAL_URL } from '../config.js';
8
+ import { structuredLogger } from '../utils/structured-logger.js';
9
+ const JWKS_CACHE = new Map();
10
+ /** Resolve JWKS fetch URL: use KEYCLOAK_INTERNAL_URL when token issuer is user-facing (localhost) so Docker app can reach Keycloak. */
11
+ function getJwksFetchUrl(issuer) {
12
+ const base = issuer.replace(/\/$/, '');
13
+ if (KEYCLOAK_INTERNAL_URL && KEYCLOAK_URL && base.startsWith(KEYCLOAK_URL.replace(/\/$/, ''))) {
14
+ const internalBase = KEYCLOAK_INTERNAL_URL.replace(/\/$/, '');
15
+ return `${internalBase}${new URL(base).pathname}/protocol/openid-connect/certs`;
16
+ }
17
+ return `${base}/protocol/openid-connect/certs`;
18
+ }
19
+ function getJwksForIssuer(issuer) {
20
+ const cached = JWKS_CACHE.get(issuer);
21
+ if (cached)
22
+ return cached;
23
+ const url = getJwksFetchUrl(issuer);
24
+ const jwks = createRemoteJWKSet(new URL(url));
25
+ JWKS_CACHE.set(issuer, jwks);
26
+ return jwks;
27
+ }
28
+ /** Decode JWT payload without verification (issuer check only). */
29
+ function decodePayload(jwt) {
30
+ return decodeJwt(jwt);
31
+ }
32
+ function extractGroups(payload) {
33
+ const g = payload['groups'];
34
+ if (Array.isArray(g))
35
+ return g.filter((x) => typeof x === 'string');
36
+ const realm = payload['realm_access'];
37
+ if (realm && Array.isArray(realm.roles))
38
+ return realm.roles.filter((x) => typeof x === 'string');
39
+ return [];
40
+ }
41
+ /** Extract realm from issuer URL (e.g. http://keycloak:8080/realms/kairos-dev -> kairos-dev). */
42
+ function realmFromIssuer(iss) {
43
+ const match = /\/realms\/([^/]+)/.exec(iss);
44
+ const segment = match?.[1] ?? iss.split('/').filter(Boolean).pop();
45
+ return typeof segment === 'string' ? segment : 'default';
46
+ }
47
+ function extractGroupIds(payload) {
48
+ const g = payload['group_ids'];
49
+ if (Array.isArray(g)) {
50
+ const ids = g.filter((x) => typeof x === 'string' && x.length > 0);
51
+ return ids.length > 0 ? ids : undefined;
52
+ }
53
+ return undefined;
54
+ }
55
+ /**
56
+ * Validate Bearer JWT: iss in trusted list, aud in allowed list, exp not expired, signature valid.
57
+ * Returns { sub, groups } or null if invalid.
58
+ */
59
+ export async function validateBearerToken(token, trustedIssuers, allowedAudiences) {
60
+ if (!token || trustedIssuers.length === 0 || allowedAudiences.length === 0)
61
+ return null;
62
+ let payload;
63
+ try {
64
+ const unverified = decodePayload(token);
65
+ if (process.env['AUTH_TRACE'] === 'true' || process.env['LOG_LEVEL'] === 'trace') {
66
+ structuredLogger.info(`[auth] TRACE Bearer unverified payload raw=${JSON.stringify(unverified)}`);
67
+ }
68
+ const iss = typeof unverified['iss'] === 'string' ? unverified['iss'] : undefined;
69
+ if (!iss || !trustedIssuers.includes(iss)) {
70
+ structuredLogger.info(`[auth] Bearer rejected: issuer not trusted token_iss=${iss ?? 'missing'} trusted=${JSON.stringify(trustedIssuers)}`);
71
+ return null;
72
+ }
73
+ const jwks = getJwksForIssuer(iss);
74
+ const getKey = (protectedHeader) => jwks(protectedHeader);
75
+ const { payload: p } = await jwtVerify(token, getKey, { issuer: iss });
76
+ payload = p;
77
+ if (process.env['AUTH_TRACE'] === 'true' || process.env['LOG_LEVEL'] === 'trace') {
78
+ structuredLogger.info(`[auth] TRACE Bearer payload raw=${JSON.stringify(payload)}`);
79
+ }
80
+ }
81
+ catch (err) {
82
+ const msg = err instanceof Error ? err.message : String(err);
83
+ structuredLogger.info(`[auth] Bearer rejected: JWT verify failed err=${msg}`);
84
+ return null;
85
+ }
86
+ const aud = payload['aud'];
87
+ const audList = Array.isArray(aud) ? aud : typeof aud === 'string' ? [aud] : [];
88
+ const issForAud = typeof payload['iss'] === 'string' ? payload['iss'] : '';
89
+ // Keycloak: accept aud "account", or empty aud when issuer is a Keycloak realm (some tokens omit aud).
90
+ const keycloakAccountAud = audList.includes('account') && issForAud.includes('/realms/');
91
+ const keycloakEmptyAud = audList.length === 0 && issForAud.includes('/realms/');
92
+ const hasAudience = allowedAudiences.some((a) => audList.includes(a)) ||
93
+ keycloakAccountAud ||
94
+ keycloakEmptyAud;
95
+ if (!hasAudience) {
96
+ structuredLogger.info(`[auth] Bearer rejected: audience not allowed token_aud=${JSON.stringify(audList)} allowed=${JSON.stringify(allowedAudiences)}`);
97
+ return null;
98
+ }
99
+ const sub = typeof payload['sub'] === 'string' ? payload['sub'] : '';
100
+ if (!sub)
101
+ return null;
102
+ const iss = typeof payload['iss'] === 'string' ? payload['iss'] : '';
103
+ const realm = realmFromIssuer(iss);
104
+ const groups = extractGroups(payload);
105
+ const group_ids = extractGroupIds(payload);
106
+ const result = { sub, groups, realm };
107
+ if (group_ids && group_ids.length > 0)
108
+ result.group_ids = group_ids;
109
+ return result;
110
+ }
111
+ //# sourceMappingURL=bearer-validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bearer-validate.js","sourceRoot":"","sources":["../../src/http/bearer-validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import express from 'express';
2
+ import type { QdrantService } from '../services/qdrant/service.js';
3
+ /**
4
+ * Set up API route for kairos_attest (V2: no final_solution required)
5
+ */
6
+ export declare function setupAttestRoute(app: express.Express, qdrantService: QdrantService): void;
7
+ //# sourceMappingURL=http-api-attest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-api-attest.d.ts","sourceRoot":"","sources":["../../src/http/http-api-attest.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAInE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,QAmIlF"}
@@ -0,0 +1,103 @@
1
+ import { structuredLogger } from '../utils/structured-logger.js';
2
+ import { IDGenerator } from '../services/id-generator.js';
3
+ import { modelStats } from '../services/stats/model-stats.js';
4
+ /**
5
+ * Set up API route for kairos_attest (V2: no final_solution required)
6
+ */
7
+ export function setupAttestRoute(app, qdrantService) {
8
+ app.post('/api/kairos_attest', async (req, res) => {
9
+ const startTime = Date.now();
10
+ try {
11
+ const { uri, outcome, quality_bonus = 0, message, llm_model_id } = req.body;
12
+ if (!uri || typeof uri !== 'string') {
13
+ res.status(400).json({
14
+ error: 'INVALID_INPUT',
15
+ message: 'uri is required and must be a string'
16
+ });
17
+ return;
18
+ }
19
+ if (!outcome || !['success', 'failure'].includes(outcome)) {
20
+ res.status(400).json({
21
+ error: 'INVALID_INPUT',
22
+ message: 'outcome is required and must be "success" or "failure"'
23
+ });
24
+ return;
25
+ }
26
+ if (!message || typeof message !== 'string') {
27
+ res.status(400).json({
28
+ error: 'INVALID_INPUT',
29
+ message: 'message is required and must be a string'
30
+ });
31
+ return;
32
+ }
33
+ structuredLogger.info(`-> POST /api/kairos_attest (uri: ${uri}, outcome: ${outcome})`);
34
+ const modelIdentity = {
35
+ modelId: llm_model_id || 'http-api-attest',
36
+ provider: 'unknown',
37
+ family: 'unknown'
38
+ };
39
+ const qdrantUuid = IDGenerator.qdrantIdFromUri(uri);
40
+ const basicQualityBonus = outcome === 'success' ? 1 : -0.2;
41
+ const currentPoint = await qdrantService.retrieveById(qdrantUuid);
42
+ if (!currentPoint) {
43
+ res.status(404).json({
44
+ error: 'NOT_FOUND',
45
+ message: `Memory not found: ${uri}`
46
+ });
47
+ return;
48
+ }
49
+ const currentMetrics = currentPoint.payload?.quality_metrics || {};
50
+ const implementationBonus = await modelStats.calculateImplementationBonus(currentMetrics, modelIdentity.modelId, outcome);
51
+ const totalQualityBonus = basicQualityBonus + implementationBonus + quality_bonus;
52
+ const metricsUpdate = {
53
+ retrievalCount: 1,
54
+ successCount: outcome === 'success' ? 1 : 0,
55
+ failureCount: outcome === 'failure' ? 1 : 0,
56
+ lastRated: new Date().toISOString(),
57
+ lastRater: modelIdentity.modelId,
58
+ qualityBonus: totalQualityBonus
59
+ };
60
+ if (message) {
61
+ metricsUpdate.usageContext = message;
62
+ }
63
+ await qdrantService.updateQualityMetrics(qdrantUuid, metricsUpdate);
64
+ if (currentPoint.payload) {
65
+ const { description_short, domain, task, type, tags } = currentPoint.payload;
66
+ const updatedQualityMetadata = modelStats.calculateStepQualityMetadata(description_short || 'Knowledge step', domain || 'general', task || 'general', type || 'context', tags || [], outcome);
67
+ await qdrantService.updateQualityMetadata(qdrantUuid, {
68
+ step_quality_score: updatedQualityMetadata.step_quality_score,
69
+ step_quality: updatedQualityMetadata.step_quality
70
+ });
71
+ }
72
+ await modelStats.processQualityFeedback(modelIdentity.modelId, uri, outcome, totalQualityBonus);
73
+ if (implementationBonus > 0) {
74
+ await modelStats.updateImplementationBonus(modelIdentity.modelId, implementationBonus);
75
+ }
76
+ const result = {
77
+ uri: uri,
78
+ outcome: outcome,
79
+ quality_bonus: totalQualityBonus,
80
+ message,
81
+ rated_at: new Date().toISOString()
82
+ };
83
+ const duration = Date.now() - startTime;
84
+ structuredLogger.info(`kairos_attest completed in ${duration}ms`);
85
+ res.status(200).json({
86
+ results: [result],
87
+ total_rated: 1,
88
+ total_failed: 0,
89
+ metadata: { duration_ms: duration }
90
+ });
91
+ }
92
+ catch (error) {
93
+ const duration = Date.now() - startTime;
94
+ structuredLogger.error(`kairos_attest failed in ${duration}ms`, error);
95
+ res.status(500).json({
96
+ error: 'ATTEST_FAILED',
97
+ message: error instanceof Error ? error.message : 'Failed to attest step completion',
98
+ duration_ms: duration
99
+ });
100
+ }
101
+ });
102
+ }
103
+ //# sourceMappingURL=http-api-attest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-api-attest.js","sourceRoot":"","sources":["../../src/http/http-api-attest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import express from 'express';
2
+ import { MemoryQdrantStore } from '../services/memory/store.js';
3
+ import type { QdrantService } from '../services/qdrant/service.js';
4
+ /**
5
+ * Set up API route for kairos_begin (V2: auto-redirect, no next_step/protocol_status/attest_required)
6
+ */
7
+ export declare function setupBeginStepRoute(app: express.Express, memoryStore: MemoryQdrantStore, qdrantService: QdrantService): void;
8
+ //# sourceMappingURL=http-api-begin-step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-api-begin-step.d.ts","sourceRoot":"","sources":["../../src/http/http-api-begin-step.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAOnE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CAgH5H"}