kiokuko 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (822) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +75 -0
  3. package/README.ko.md +60 -0
  4. package/README.md +90 -0
  5. package/README.zh-CN.md +61 -0
  6. package/dist/agent-file/atomic-write.d.ts +93 -0
  7. package/dist/agent-file/atomic-write.d.ts.map +1 -0
  8. package/dist/agent-file/atomic-write.js +1026 -0
  9. package/dist/agent-file/atomic-write.js.map +1 -0
  10. package/dist/agent-file/managed-block.d.ts +23 -0
  11. package/dist/agent-file/managed-block.d.ts.map +1 -0
  12. package/dist/agent-file/managed-block.js +101 -0
  13. package/dist/agent-file/managed-block.js.map +1 -0
  14. package/dist/agent-file/render.d.ts +14 -0
  15. package/dist/agent-file/render.d.ts.map +1 -0
  16. package/dist/agent-file/render.js +55 -0
  17. package/dist/agent-file/render.js.map +1 -0
  18. package/dist/akinator/agent-task.d.ts +70 -0
  19. package/dist/akinator/agent-task.d.ts.map +1 -0
  20. package/dist/akinator/agent-task.js +657 -0
  21. package/dist/akinator/agent-task.js.map +1 -0
  22. package/dist/akinator/capabilities.d.ts +92 -0
  23. package/dist/akinator/capabilities.d.ts.map +1 -0
  24. package/dist/akinator/capabilities.js +364 -0
  25. package/dist/akinator/capabilities.js.map +1 -0
  26. package/dist/akinator/capability-binding.d.ts +11 -0
  27. package/dist/akinator/capability-binding.d.ts.map +1 -0
  28. package/dist/akinator/capability-binding.js +71 -0
  29. package/dist/akinator/capability-binding.js.map +1 -0
  30. package/dist/akinator/discovery-policy.d.ts +4 -0
  31. package/dist/akinator/discovery-policy.d.ts.map +1 -0
  32. package/dist/akinator/discovery-policy.js +4 -0
  33. package/dist/akinator/discovery-policy.js.map +1 -0
  34. package/dist/akinator/domain.d.ts +25 -0
  35. package/dist/akinator/domain.d.ts.map +1 -0
  36. package/dist/akinator/domain.js +266 -0
  37. package/dist/akinator/domain.js.map +1 -0
  38. package/dist/akinator/instructions.d.ts +3 -0
  39. package/dist/akinator/instructions.d.ts.map +1 -0
  40. package/dist/akinator/instructions.js +4 -0
  41. package/dist/akinator/instructions.js.map +1 -0
  42. package/dist/akinator/knowledge-path.d.ts +33 -0
  43. package/dist/akinator/knowledge-path.d.ts.map +1 -0
  44. package/dist/akinator/knowledge-path.js +474 -0
  45. package/dist/akinator/knowledge-path.js.map +1 -0
  46. package/dist/akinator/orchestrator.d.ts +7 -0
  47. package/dist/akinator/orchestrator.d.ts.map +1 -0
  48. package/dist/akinator/orchestrator.js +8 -0
  49. package/dist/akinator/orchestrator.js.map +1 -0
  50. package/dist/akinator/reasoning.d.ts +8 -0
  51. package/dist/akinator/reasoning.d.ts.map +1 -0
  52. package/dist/akinator/reasoning.js +118 -0
  53. package/dist/akinator/reasoning.js.map +1 -0
  54. package/dist/akinator/service.d.ts +32 -0
  55. package/dist/akinator/service.d.ts.map +1 -0
  56. package/dist/akinator/service.js +294 -0
  57. package/dist/akinator/service.js.map +1 -0
  58. package/dist/akinator/skill-discovery-attempt.d.ts +25 -0
  59. package/dist/akinator/skill-discovery-attempt.d.ts.map +1 -0
  60. package/dist/akinator/skill-discovery-attempt.js +465 -0
  61. package/dist/akinator/skill-discovery-attempt.js.map +1 -0
  62. package/dist/akinator/store.d.ts +96 -0
  63. package/dist/akinator/store.d.ts.map +1 -0
  64. package/dist/akinator/store.js +642 -0
  65. package/dist/akinator/store.js.map +1 -0
  66. package/dist/akinator/types.d.ts +70 -0
  67. package/dist/akinator/types.d.ts.map +1 -0
  68. package/dist/akinator/types.js +2 -0
  69. package/dist/akinator/types.js.map +1 -0
  70. package/dist/bin/kiokuko.d.ts +3 -0
  71. package/dist/bin/kiokuko.d.ts.map +1 -0
  72. package/dist/bin/kiokuko.js +13 -0
  73. package/dist/bin/kiokuko.js.map +1 -0
  74. package/dist/cli.d.ts +24 -0
  75. package/dist/cli.d.ts.map +1 -0
  76. package/dist/cli.js +957 -0
  77. package/dist/cli.js.map +1 -0
  78. package/dist/client/server-client.d.ts +22 -0
  79. package/dist/client/server-client.d.ts.map +1 -0
  80. package/dist/client/server-client.js +729 -0
  81. package/dist/client/server-client.js.map +1 -0
  82. package/dist/commands/agent.d.ts +12 -0
  83. package/dist/commands/agent.d.ts.map +1 -0
  84. package/dist/commands/agent.js +1138 -0
  85. package/dist/commands/agent.js.map +1 -0
  86. package/dist/commands/backup.d.ts +6 -0
  87. package/dist/commands/backup.d.ts.map +1 -0
  88. package/dist/commands/backup.js +77 -0
  89. package/dist/commands/backup.js.map +1 -0
  90. package/dist/commands/curator.d.ts +25 -0
  91. package/dist/commands/curator.d.ts.map +1 -0
  92. package/dist/commands/curator.js +58 -0
  93. package/dist/commands/curator.js.map +1 -0
  94. package/dist/commands/doctor.d.ts +57 -0
  95. package/dist/commands/doctor.d.ts.map +1 -0
  96. package/dist/commands/doctor.js +389 -0
  97. package/dist/commands/doctor.js.map +1 -0
  98. package/dist/commands/embeddings.d.ts +40 -0
  99. package/dist/commands/embeddings.d.ts.map +1 -0
  100. package/dist/commands/embeddings.js +315 -0
  101. package/dist/commands/embeddings.js.map +1 -0
  102. package/dist/commands/export.d.ts +17 -0
  103. package/dist/commands/export.d.ts.map +1 -0
  104. package/dist/commands/export.js +233 -0
  105. package/dist/commands/export.js.map +1 -0
  106. package/dist/commands/import.d.ts +24 -0
  107. package/dist/commands/import.d.ts.map +1 -0
  108. package/dist/commands/import.js +778 -0
  109. package/dist/commands/import.js.map +1 -0
  110. package/dist/commands/init.d.ts +21 -0
  111. package/dist/commands/init.d.ts.map +1 -0
  112. package/dist/commands/init.js +201 -0
  113. package/dist/commands/init.js.map +1 -0
  114. package/dist/commands/ledger.d.ts +7 -0
  115. package/dist/commands/ledger.d.ts.map +1 -0
  116. package/dist/commands/ledger.js +66 -0
  117. package/dist/commands/ledger.js.map +1 -0
  118. package/dist/commands/purge.d.ts +10 -0
  119. package/dist/commands/purge.d.ts.map +1 -0
  120. package/dist/commands/purge.js +29 -0
  121. package/dist/commands/purge.js.map +1 -0
  122. package/dist/commands/serve.d.ts +34 -0
  123. package/dist/commands/serve.d.ts.map +1 -0
  124. package/dist/commands/serve.js +120 -0
  125. package/dist/commands/serve.js.map +1 -0
  126. package/dist/commands/server-status.d.ts +20 -0
  127. package/dist/commands/server-status.d.ts.map +1 -0
  128. package/dist/commands/server-status.js +21 -0
  129. package/dist/commands/server-status.js.map +1 -0
  130. package/dist/commands/server.d.ts +13 -0
  131. package/dist/commands/server.d.ts.map +1 -0
  132. package/dist/commands/server.js +89 -0
  133. package/dist/commands/server.js.map +1 -0
  134. package/dist/commands/setup.d.ts +98 -0
  135. package/dist/commands/setup.d.ts.map +1 -0
  136. package/dist/commands/setup.js +690 -0
  137. package/dist/commands/setup.js.map +1 -0
  138. package/dist/commands/skills.d.ts +9 -0
  139. package/dist/commands/skills.d.ts.map +1 -0
  140. package/dist/commands/skills.js +317 -0
  141. package/dist/commands/skills.js.map +1 -0
  142. package/dist/commands/use.d.ts +40 -0
  143. package/dist/commands/use.d.ts.map +1 -0
  144. package/dist/commands/use.js +1090 -0
  145. package/dist/commands/use.js.map +1 -0
  146. package/dist/config/paths.d.ts +47 -0
  147. package/dist/config/paths.d.ts.map +1 -0
  148. package/dist/config/paths.js +324 -0
  149. package/dist/config/paths.js.map +1 -0
  150. package/dist/config/project-config.d.ts +11 -0
  151. package/dist/config/project-config.d.ts.map +1 -0
  152. package/dist/config/project-config.js +97 -0
  153. package/dist/config/project-config.js.map +1 -0
  154. package/dist/context/broker.d.ts +99 -0
  155. package/dist/context/broker.d.ts.map +1 -0
  156. package/dist/context/broker.js +923 -0
  157. package/dist/context/broker.js.map +1 -0
  158. package/dist/context/delivery.d.ts +60 -0
  159. package/dist/context/delivery.d.ts.map +1 -0
  160. package/dist/context/delivery.js +845 -0
  161. package/dist/context/delivery.js.map +1 -0
  162. package/dist/context/feedback.d.ts +73 -0
  163. package/dist/context/feedback.d.ts.map +1 -0
  164. package/dist/context/feedback.js +993 -0
  165. package/dist/context/feedback.js.map +1 -0
  166. package/dist/context/nudge-store.d.ts +57 -0
  167. package/dist/context/nudge-store.d.ts.map +1 -0
  168. package/dist/context/nudge-store.js +227 -0
  169. package/dist/context/nudge-store.js.map +1 -0
  170. package/dist/context/nudge-validation.d.ts +26 -0
  171. package/dist/context/nudge-validation.d.ts.map +1 -0
  172. package/dist/context/nudge-validation.js +122 -0
  173. package/dist/context/nudge-validation.js.map +1 -0
  174. package/dist/context/nudges.d.ts +38 -0
  175. package/dist/context/nudges.d.ts.map +1 -0
  176. package/dist/context/nudges.js +131 -0
  177. package/dist/context/nudges.js.map +1 -0
  178. package/dist/context/origin.d.ts +9 -0
  179. package/dist/context/origin.d.ts.map +1 -0
  180. package/dist/context/origin.js +15 -0
  181. package/dist/context/origin.js.map +1 -0
  182. package/dist/context/ranking.d.ts +92 -0
  183. package/dist/context/ranking.d.ts.map +1 -0
  184. package/dist/context/ranking.js +560 -0
  185. package/dist/context/ranking.js.map +1 -0
  186. package/dist/context/recommendations.d.ts +80 -0
  187. package/dist/context/recommendations.d.ts.map +1 -0
  188. package/dist/context/recommendations.js +341 -0
  189. package/dist/context/recommendations.js.map +1 -0
  190. package/dist/context/run-state.d.ts +26 -0
  191. package/dist/context/run-state.d.ts.map +1 -0
  192. package/dist/context/run-state.js +399 -0
  193. package/dist/context/run-state.js.map +1 -0
  194. package/dist/context/scoped-broker.d.ts +77 -0
  195. package/dist/context/scoped-broker.d.ts.map +1 -0
  196. package/dist/context/scoped-broker.js +690 -0
  197. package/dist/context/scoped-broker.js.map +1 -0
  198. package/dist/context/selection-state.d.ts +32 -0
  199. package/dist/context/selection-state.d.ts.map +1 -0
  200. package/dist/context/selection-state.js +357 -0
  201. package/dist/context/selection-state.js.map +1 -0
  202. package/dist/db/adapter.d.ts +27 -0
  203. package/dist/db/adapter.d.ts.map +1 -0
  204. package/dist/db/adapter.js +41 -0
  205. package/dist/db/adapter.js.map +1 -0
  206. package/dist/db/capabilities.d.ts +21 -0
  207. package/dist/db/capabilities.d.ts.map +1 -0
  208. package/dist/db/capabilities.js +57 -0
  209. package/dist/db/capabilities.js.map +1 -0
  210. package/dist/db/connection.d.ts +21 -0
  211. package/dist/db/connection.d.ts.map +1 -0
  212. package/dist/db/connection.js +129 -0
  213. package/dist/db/connection.js.map +1 -0
  214. package/dist/db/inspection-snapshot.d.ts +4 -0
  215. package/dist/db/inspection-snapshot.d.ts.map +1 -0
  216. package/dist/db/inspection-snapshot.js +86 -0
  217. package/dist/db/inspection-snapshot.js.map +1 -0
  218. package/dist/db/migrate.d.ts +37 -0
  219. package/dist/db/migrate.d.ts.map +1 -0
  220. package/dist/db/migrate.js +202 -0
  221. package/dist/db/migrate.js.map +1 -0
  222. package/dist/db/serialized-backup.d.ts +58 -0
  223. package/dist/db/serialized-backup.d.ts.map +1 -0
  224. package/dist/db/serialized-backup.js +647 -0
  225. package/dist/db/serialized-backup.js.map +1 -0
  226. package/dist/db/sqlite-retry.d.ts +11 -0
  227. package/dist/db/sqlite-retry.d.ts.map +1 -0
  228. package/dist/db/sqlite-retry.js +70 -0
  229. package/dist/db/sqlite-retry.js.map +1 -0
  230. package/dist/db/transaction.d.ts +17 -0
  231. package/dist/db/transaction.d.ts.map +1 -0
  232. package/dist/db/transaction.js +68 -0
  233. package/dist/db/transaction.js.map +1 -0
  234. package/dist/embedding/backend.d.ts +27 -0
  235. package/dist/embedding/backend.d.ts.map +1 -0
  236. package/dist/embedding/backend.js +67 -0
  237. package/dist/embedding/backend.js.map +1 -0
  238. package/dist/embedding/config.d.ts +7 -0
  239. package/dist/embedding/config.d.ts.map +1 -0
  240. package/dist/embedding/config.js +125 -0
  241. package/dist/embedding/config.js.map +1 -0
  242. package/dist/embedding/diagnostics.d.ts +34 -0
  243. package/dist/embedding/diagnostics.d.ts.map +1 -0
  244. package/dist/embedding/diagnostics.js +274 -0
  245. package/dist/embedding/diagnostics.js.map +1 -0
  246. package/dist/embedding/document.d.ts +20 -0
  247. package/dist/embedding/document.d.ts.map +1 -0
  248. package/dist/embedding/document.js +122 -0
  249. package/dist/embedding/document.js.map +1 -0
  250. package/dist/embedding/javascript-backend.d.ts +11 -0
  251. package/dist/embedding/javascript-backend.d.ts.map +1 -0
  252. package/dist/embedding/javascript-backend.js +164 -0
  253. package/dist/embedding/javascript-backend.js.map +1 -0
  254. package/dist/embedding/jobs.d.ts +67 -0
  255. package/dist/embedding/jobs.d.ts.map +1 -0
  256. package/dist/embedding/jobs.js +259 -0
  257. package/dist/embedding/jobs.js.map +1 -0
  258. package/dist/embedding/local-model-loader.d.ts +24 -0
  259. package/dist/embedding/local-model-loader.d.ts.map +1 -0
  260. package/dist/embedding/local-model-loader.js +64 -0
  261. package/dist/embedding/local-model-loader.js.map +1 -0
  262. package/dist/embedding/local-transformers-provider.d.ts +17 -0
  263. package/dist/embedding/local-transformers-provider.d.ts.map +1 -0
  264. package/dist/embedding/local-transformers-provider.js +54 -0
  265. package/dist/embedding/local-transformers-provider.js.map +1 -0
  266. package/dist/embedding/model-download.d.ts +32 -0
  267. package/dist/embedding/model-download.d.ts.map +1 -0
  268. package/dist/embedding/model-download.js +41 -0
  269. package/dist/embedding/model-download.js.map +1 -0
  270. package/dist/embedding/model-installation.d.ts +17 -0
  271. package/dist/embedding/model-installation.d.ts.map +1 -0
  272. package/dist/embedding/model-installation.js +71 -0
  273. package/dist/embedding/model-installation.js.map +1 -0
  274. package/dist/embedding/model-manifest.d.ts +18 -0
  275. package/dist/embedding/model-manifest.d.ts.map +1 -0
  276. package/dist/embedding/model-manifest.js +86 -0
  277. package/dist/embedding/model-manifest.js.map +1 -0
  278. package/dist/embedding/openai-compatible-provider.d.ts +24 -0
  279. package/dist/embedding/openai-compatible-provider.d.ts.map +1 -0
  280. package/dist/embedding/openai-compatible-provider.js +330 -0
  281. package/dist/embedding/openai-compatible-provider.js.map +1 -0
  282. package/dist/embedding/presets/local-small.d.ts +8 -0
  283. package/dist/embedding/presets/local-small.d.ts.map +1 -0
  284. package/dist/embedding/presets/local-small.js +67 -0
  285. package/dist/embedding/presets/local-small.js.map +1 -0
  286. package/dist/embedding/presets/manifest.d.ts +27 -0
  287. package/dist/embedding/presets/manifest.d.ts.map +1 -0
  288. package/dist/embedding/presets/manifest.js +5 -0
  289. package/dist/embedding/presets/manifest.js.map +1 -0
  290. package/dist/embedding/profile.d.ts +10 -0
  291. package/dist/embedding/profile.d.ts.map +1 -0
  292. package/dist/embedding/profile.js +67 -0
  293. package/dist/embedding/profile.js.map +1 -0
  294. package/dist/embedding/provider.d.ts +13 -0
  295. package/dist/embedding/provider.d.ts.map +1 -0
  296. package/dist/embedding/provider.js +17 -0
  297. package/dist/embedding/provider.js.map +1 -0
  298. package/dist/embedding/query-cache.d.ts +45 -0
  299. package/dist/embedding/query-cache.d.ts.map +1 -0
  300. package/dist/embedding/query-cache.js +181 -0
  301. package/dist/embedding/query-cache.js.map +1 -0
  302. package/dist/embedding/runtime.d.ts +14 -0
  303. package/dist/embedding/runtime.d.ts.map +1 -0
  304. package/dist/embedding/runtime.js +407 -0
  305. package/dist/embedding/runtime.js.map +1 -0
  306. package/dist/embedding/settings.d.ts +6 -0
  307. package/dist/embedding/settings.d.ts.map +1 -0
  308. package/dist/embedding/settings.js +60 -0
  309. package/dist/embedding/settings.js.map +1 -0
  310. package/dist/embedding/setup-lock.d.ts +7 -0
  311. package/dist/embedding/setup-lock.d.ts.map +1 -0
  312. package/dist/embedding/setup-lock.js +35 -0
  313. package/dist/embedding/setup-lock.js.map +1 -0
  314. package/dist/embedding/setup-service.d.ts +47 -0
  315. package/dist/embedding/setup-service.d.ts.map +1 -0
  316. package/dist/embedding/setup-service.js +181 -0
  317. package/dist/embedding/setup-service.js.map +1 -0
  318. package/dist/embedding/sqlite-vec-backend.d.ts +9 -0
  319. package/dist/embedding/sqlite-vec-backend.d.ts.map +1 -0
  320. package/dist/embedding/sqlite-vec-backend.js +106 -0
  321. package/dist/embedding/sqlite-vec-backend.js.map +1 -0
  322. package/dist/embedding/sqlite-vec-loader.d.ts +17 -0
  323. package/dist/embedding/sqlite-vec-loader.d.ts.map +1 -0
  324. package/dist/embedding/sqlite-vec-loader.js +51 -0
  325. package/dist/embedding/sqlite-vec-loader.js.map +1 -0
  326. package/dist/embedding/store.d.ts +66 -0
  327. package/dist/embedding/store.d.ts.map +1 -0
  328. package/dist/embedding/store.js +474 -0
  329. package/dist/embedding/store.js.map +1 -0
  330. package/dist/embedding/types.d.ts +126 -0
  331. package/dist/embedding/types.d.ts.map +1 -0
  332. package/dist/embedding/types.js +2 -0
  333. package/dist/embedding/types.js.map +1 -0
  334. package/dist/embedding/vector.d.ts +9 -0
  335. package/dist/embedding/vector.d.ts.map +1 -0
  336. package/dist/embedding/vector.js +90 -0
  337. package/dist/embedding/vector.js.map +1 -0
  338. package/dist/embedding/worker.d.ts +23 -0
  339. package/dist/embedding/worker.d.ts.map +1 -0
  340. package/dist/embedding/worker.js +84 -0
  341. package/dist/embedding/worker.js.map +1 -0
  342. package/dist/errors.d.ts +13 -0
  343. package/dist/errors.d.ts.map +1 -0
  344. package/dist/errors.js +53 -0
  345. package/dist/errors.js.map +1 -0
  346. package/dist/gateway/agent-service.d.ts +72 -0
  347. package/dist/gateway/agent-service.d.ts.map +1 -0
  348. package/dist/gateway/agent-service.js +594 -0
  349. package/dist/gateway/agent-service.js.map +1 -0
  350. package/dist/gateway/checkpoint-mutation-service.d.ts +33 -0
  351. package/dist/gateway/checkpoint-mutation-service.d.ts.map +1 -0
  352. package/dist/gateway/checkpoint-mutation-service.js +503 -0
  353. package/dist/gateway/checkpoint-mutation-service.js.map +1 -0
  354. package/dist/gateway/checkpoint-service.d.ts +17 -0
  355. package/dist/gateway/checkpoint-service.d.ts.map +1 -0
  356. package/dist/gateway/checkpoint-service.js +123 -0
  357. package/dist/gateway/checkpoint-service.js.map +1 -0
  358. package/dist/gateway/nudge-delivery-service.d.ts +21 -0
  359. package/dist/gateway/nudge-delivery-service.d.ts.map +1 -0
  360. package/dist/gateway/nudge-delivery-service.js +67 -0
  361. package/dist/gateway/nudge-delivery-service.js.map +1 -0
  362. package/dist/ledger/archive.d.ts +48 -0
  363. package/dist/ledger/archive.d.ts.map +1 -0
  364. package/dist/ledger/archive.js +1252 -0
  365. package/dist/ledger/archive.js.map +1 -0
  366. package/dist/ledger/checkpoint-contract.d.ts +144 -0
  367. package/dist/ledger/checkpoint-contract.d.ts.map +1 -0
  368. package/dist/ledger/checkpoint-contract.js +91 -0
  369. package/dist/ledger/checkpoint-contract.js.map +1 -0
  370. package/dist/ledger/checkpoint-eligibility.d.ts +17 -0
  371. package/dist/ledger/checkpoint-eligibility.d.ts.map +1 -0
  372. package/dist/ledger/checkpoint-eligibility.js +19 -0
  373. package/dist/ledger/checkpoint-eligibility.js.map +1 -0
  374. package/dist/ledger/hash.d.ts +22 -0
  375. package/dist/ledger/hash.d.ts.map +1 -0
  376. package/dist/ledger/hash.js +25 -0
  377. package/dist/ledger/hash.js.map +1 -0
  378. package/dist/ledger/maintenance.d.ts +68 -0
  379. package/dist/ledger/maintenance.d.ts.map +1 -0
  380. package/dist/ledger/maintenance.js +758 -0
  381. package/dist/ledger/maintenance.js.map +1 -0
  382. package/dist/ledger/projection.d.ts +38 -0
  383. package/dist/ledger/projection.d.ts.map +1 -0
  384. package/dist/ledger/projection.js +315 -0
  385. package/dist/ledger/projection.js.map +1 -0
  386. package/dist/ledger/promotion.d.ts +19 -0
  387. package/dist/ledger/promotion.d.ts.map +1 -0
  388. package/dist/ledger/promotion.js +310 -0
  389. package/dist/ledger/promotion.js.map +1 -0
  390. package/dist/ledger/query.d.ts +41 -0
  391. package/dist/ledger/query.d.ts.map +1 -0
  392. package/dist/ledger/query.js +321 -0
  393. package/dist/ledger/query.js.map +1 -0
  394. package/dist/ledger/redaction.d.ts +8 -0
  395. package/dist/ledger/redaction.d.ts.map +1 -0
  396. package/dist/ledger/redaction.js +40 -0
  397. package/dist/ledger/redaction.js.map +1 -0
  398. package/dist/ledger/store.d.ts +45 -0
  399. package/dist/ledger/store.d.ts.map +1 -0
  400. package/dist/ledger/store.js +327 -0
  401. package/dist/ledger/store.js.map +1 -0
  402. package/dist/ledger/types.d.ts +115 -0
  403. package/dist/ledger/types.d.ts.map +1 -0
  404. package/dist/ledger/types.js +22 -0
  405. package/dist/ledger/types.js.map +1 -0
  406. package/dist/ledger/validate.d.ts +10 -0
  407. package/dist/ledger/validate.d.ts.map +1 -0
  408. package/dist/ledger/validate.js +178 -0
  409. package/dist/ledger/validate.js.map +1 -0
  410. package/dist/mcp/bounded-stdio-transport.d.ts +26 -0
  411. package/dist/mcp/bounded-stdio-transport.d.ts.map +1 -0
  412. package/dist/mcp/bounded-stdio-transport.js +121 -0
  413. package/dist/mcp/bounded-stdio-transport.js.map +1 -0
  414. package/dist/mcp/client-identity.d.ts +22 -0
  415. package/dist/mcp/client-identity.d.ts.map +1 -0
  416. package/dist/mcp/client-identity.js +65 -0
  417. package/dist/mcp/client-identity.js.map +1 -0
  418. package/dist/mcp/request-deadline.d.ts +51 -0
  419. package/dist/mcp/request-deadline.d.ts.map +1 -0
  420. package/dist/mcp/request-deadline.js +147 -0
  421. package/dist/mcp/request-deadline.js.map +1 -0
  422. package/dist/mcp/runtime-owner.d.ts +27 -0
  423. package/dist/mcp/runtime-owner.d.ts.map +1 -0
  424. package/dist/mcp/runtime-owner.js +129 -0
  425. package/dist/mcp/runtime-owner.js.map +1 -0
  426. package/dist/mcp/server.d.ts +24 -0
  427. package/dist/mcp/server.d.ts.map +1 -0
  428. package/dist/mcp/server.js +415 -0
  429. package/dist/mcp/server.js.map +1 -0
  430. package/dist/memory/audit.d.ts +13 -0
  431. package/dist/memory/audit.d.ts.map +1 -0
  432. package/dist/memory/audit.js +15 -0
  433. package/dist/memory/audit.js.map +1 -0
  434. package/dist/memory/checkpoint-contract.d.ts +490 -0
  435. package/dist/memory/checkpoint-contract.d.ts.map +1 -0
  436. package/dist/memory/checkpoint-contract.js +106 -0
  437. package/dist/memory/checkpoint-contract.js.map +1 -0
  438. package/dist/memory/curator-trust.d.ts +9 -0
  439. package/dist/memory/curator-trust.d.ts.map +1 -0
  440. package/dist/memory/curator-trust.js +47 -0
  441. package/dist/memory/curator-trust.js.map +1 -0
  442. package/dist/memory/curator.d.ts +115 -0
  443. package/dist/memory/curator.d.ts.map +1 -0
  444. package/dist/memory/curator.js +674 -0
  445. package/dist/memory/curator.js.map +1 -0
  446. package/dist/memory/entries.d.ts +75 -0
  447. package/dist/memory/entries.d.ts.map +1 -0
  448. package/dist/memory/entries.js +355 -0
  449. package/dist/memory/entries.js.map +1 -0
  450. package/dist/memory/federated-retrieval.d.ts +79 -0
  451. package/dist/memory/federated-retrieval.d.ts.map +1 -0
  452. package/dist/memory/federated-retrieval.js +515 -0
  453. package/dist/memory/federated-retrieval.js.map +1 -0
  454. package/dist/memory/hybrid-retrieval.d.ts +33 -0
  455. package/dist/memory/hybrid-retrieval.d.ts.map +1 -0
  456. package/dist/memory/hybrid-retrieval.js +398 -0
  457. package/dist/memory/hybrid-retrieval.js.map +1 -0
  458. package/dist/memory/lifecycle.d.ts +29 -0
  459. package/dist/memory/lifecycle.d.ts.map +1 -0
  460. package/dist/memory/lifecycle.js +65 -0
  461. package/dist/memory/lifecycle.js.map +1 -0
  462. package/dist/memory/portability.d.ts +10 -0
  463. package/dist/memory/portability.d.ts.map +1 -0
  464. package/dist/memory/portability.js +44 -0
  465. package/dist/memory/portability.js.map +1 -0
  466. package/dist/memory/rebuild-search.d.ts +19 -0
  467. package/dist/memory/rebuild-search.d.ts.map +1 -0
  468. package/dist/memory/rebuild-search.js +138 -0
  469. package/dist/memory/rebuild-search.js.map +1 -0
  470. package/dist/memory/retrieval-query.d.ts +16 -0
  471. package/dist/memory/retrieval-query.d.ts.map +1 -0
  472. package/dist/memory/retrieval-query.js +161 -0
  473. package/dist/memory/retrieval-query.js.map +1 -0
  474. package/dist/memory/retrieval.d.ts +56 -0
  475. package/dist/memory/retrieval.d.ts.map +1 -0
  476. package/dist/memory/retrieval.js +101 -0
  477. package/dist/memory/retrieval.js.map +1 -0
  478. package/dist/memory/revisions.d.ts +109 -0
  479. package/dist/memory/revisions.d.ts.map +1 -0
  480. package/dist/memory/revisions.js +409 -0
  481. package/dist/memory/revisions.js.map +1 -0
  482. package/dist/memory/scoped-memory.d.ts +76 -0
  483. package/dist/memory/scoped-memory.d.ts.map +1 -0
  484. package/dist/memory/scoped-memory.js +530 -0
  485. package/dist/memory/scoped-memory.js.map +1 -0
  486. package/dist/memory/secrets.d.ts +8 -0
  487. package/dist/memory/secrets.d.ts.map +1 -0
  488. package/dist/memory/secrets.js +54 -0
  489. package/dist/memory/secrets.js.map +1 -0
  490. package/dist/memory/structured-memory.d.ts +56 -0
  491. package/dist/memory/structured-memory.d.ts.map +1 -0
  492. package/dist/memory/structured-memory.js +281 -0
  493. package/dist/memory/structured-memory.js.map +1 -0
  494. package/dist/memory/workspaces.d.ts +26 -0
  495. package/dist/memory/workspaces.d.ts.map +1 -0
  496. package/dist/memory/workspaces.js +159 -0
  497. package/dist/memory/workspaces.js.map +1 -0
  498. package/dist/package-version.d.ts +2 -0
  499. package/dist/package-version.d.ts.map +1 -0
  500. package/dist/package-version.js +7 -0
  501. package/dist/package-version.js.map +1 -0
  502. package/dist/repository/binding.d.ts +32 -0
  503. package/dist/repository/binding.d.ts.map +1 -0
  504. package/dist/repository/binding.js +208 -0
  505. package/dist/repository/binding.js.map +1 -0
  506. package/dist/repository/cwd-schema.d.ts +4 -0
  507. package/dist/repository/cwd-schema.d.ts.map +1 -0
  508. package/dist/repository/cwd-schema.js +8 -0
  509. package/dist/repository/cwd-schema.js.map +1 -0
  510. package/dist/repository/detect-root.d.ts +13 -0
  511. package/dist/repository/detect-root.d.ts.map +1 -0
  512. package/dist/repository/detect-root.js +77 -0
  513. package/dist/repository/detect-root.js.map +1 -0
  514. package/dist/repository/framework-version.d.ts +8 -0
  515. package/dist/repository/framework-version.d.ts.map +1 -0
  516. package/dist/repository/framework-version.js +29 -0
  517. package/dist/repository/framework-version.js.map +1 -0
  518. package/dist/repository/git-origin.d.ts +2 -0
  519. package/dist/repository/git-origin.d.ts.map +1 -0
  520. package/dist/repository/git-origin.js +15 -0
  521. package/dist/repository/git-origin.js.map +1 -0
  522. package/dist/repository/gitignore.d.ts +8 -0
  523. package/dist/repository/gitignore.d.ts.map +1 -0
  524. package/dist/repository/gitignore.js +21 -0
  525. package/dist/repository/gitignore.js.map +1 -0
  526. package/dist/repository/identity-value.d.ts +4 -0
  527. package/dist/repository/identity-value.d.ts.map +1 -0
  528. package/dist/repository/identity-value.js +24 -0
  529. package/dist/repository/identity-value.js.map +1 -0
  530. package/dist/repository/identity.d.ts +19 -0
  531. package/dist/repository/identity.d.ts.map +1 -0
  532. package/dist/repository/identity.js +25 -0
  533. package/dist/repository/identity.js.map +1 -0
  534. package/dist/repository/project-fingerprint.d.ts +33 -0
  535. package/dist/repository/project-fingerprint.d.ts.map +1 -0
  536. package/dist/repository/project-fingerprint.js +429 -0
  537. package/dist/repository/project-fingerprint.js.map +1 -0
  538. package/dist/repository/remote-url.d.ts +3 -0
  539. package/dist/repository/remote-url.d.ts.map +1 -0
  540. package/dist/repository/remote-url.js +35 -0
  541. package/dist/repository/remote-url.js.map +1 -0
  542. package/dist/runtime-version.d.ts +6 -0
  543. package/dist/runtime-version.d.ts.map +1 -0
  544. package/dist/runtime-version.js +33 -0
  545. package/dist/runtime-version.js.map +1 -0
  546. package/dist/security/sanitize.d.ts +4 -0
  547. package/dist/security/sanitize.d.ts.map +1 -0
  548. package/dist/security/sanitize.js +174 -0
  549. package/dist/security/sanitize.js.map +1 -0
  550. package/dist/serialization/boundary-json.d.ts +20 -0
  551. package/dist/serialization/boundary-json.d.ts.map +1 -0
  552. package/dist/serialization/boundary-json.js +129 -0
  553. package/dist/serialization/boundary-json.js.map +1 -0
  554. package/dist/serialization/envelope.d.ts +20 -0
  555. package/dist/serialization/envelope.d.ts.map +1 -0
  556. package/dist/serialization/envelope.js +11 -0
  557. package/dist/serialization/envelope.js.map +1 -0
  558. package/dist/serialization/validate.d.ts +38 -0
  559. package/dist/serialization/validate.d.ts.map +1 -0
  560. package/dist/serialization/validate.js +233 -0
  561. package/dist/serialization/validate.js.map +1 -0
  562. package/dist/server/agent-application.d.ts +6 -0
  563. package/dist/server/agent-application.d.ts.map +1 -0
  564. package/dist/server/agent-application.js +74 -0
  565. package/dist/server/agent-application.js.map +1 -0
  566. package/dist/server/agent-checkpoint-use-case.d.ts +40 -0
  567. package/dist/server/agent-checkpoint-use-case.d.ts.map +1 -0
  568. package/dist/server/agent-checkpoint-use-case.js +157 -0
  569. package/dist/server/agent-checkpoint-use-case.js.map +1 -0
  570. package/dist/server/app.d.ts +5 -0
  571. package/dist/server/app.d.ts.map +1 -0
  572. package/dist/server/app.js +87 -0
  573. package/dist/server/app.js.map +1 -0
  574. package/dist/server/auth.d.ts +2 -0
  575. package/dist/server/auth.d.ts.map +1 -0
  576. package/dist/server/auth.js +22 -0
  577. package/dist/server/auth.js.map +1 -0
  578. package/dist/server/http.d.ts +86 -0
  579. package/dist/server/http.d.ts.map +1 -0
  580. package/dist/server/http.js +455 -0
  581. package/dist/server/http.js.map +1 -0
  582. package/dist/server/idempotency.d.ts +6 -0
  583. package/dist/server/idempotency.d.ts.map +1 -0
  584. package/dist/server/idempotency.js +210 -0
  585. package/dist/server/idempotency.js.map +1 -0
  586. package/dist/server/instance-lock.d.ts +17 -0
  587. package/dist/server/instance-lock.d.ts.map +1 -0
  588. package/dist/server/instance-lock.js +118 -0
  589. package/dist/server/instance-lock.js.map +1 -0
  590. package/dist/server/router.d.ts +29 -0
  591. package/dist/server/router.d.ts.map +1 -0
  592. package/dist/server/router.js +129 -0
  593. package/dist/server/router.js.map +1 -0
  594. package/dist/server/routes/agent-capability-gate.d.ts +43 -0
  595. package/dist/server/routes/agent-capability-gate.d.ts.map +1 -0
  596. package/dist/server/routes/agent-capability-gate.js +202 -0
  597. package/dist/server/routes/agent-capability-gate.js.map +1 -0
  598. package/dist/server/routes/agent-events.d.ts +5 -0
  599. package/dist/server/routes/agent-events.d.ts.map +1 -0
  600. package/dist/server/routes/agent-events.js +53 -0
  601. package/dist/server/routes/agent-events.js.map +1 -0
  602. package/dist/server/routes/agent-intake.d.ts +5 -0
  603. package/dist/server/routes/agent-intake.d.ts.map +1 -0
  604. package/dist/server/routes/agent-intake.js +50 -0
  605. package/dist/server/routes/agent-intake.js.map +1 -0
  606. package/dist/server/routes/agent-promotions.d.ts +5 -0
  607. package/dist/server/routes/agent-promotions.d.ts.map +1 -0
  608. package/dist/server/routes/agent-promotions.js +55 -0
  609. package/dist/server/routes/agent-promotions.js.map +1 -0
  610. package/dist/server/routes/agent-runs.d.ts +26 -0
  611. package/dist/server/routes/agent-runs.d.ts.map +1 -0
  612. package/dist/server/routes/agent-runs.js +165 -0
  613. package/dist/server/routes/agent-runs.js.map +1 -0
  614. package/dist/server/routes/request-binding.d.ts +5 -0
  615. package/dist/server/routes/request-binding.d.ts.map +1 -0
  616. package/dist/server/routes/request-binding.js +49 -0
  617. package/dist/server/routes/request-binding.js.map +1 -0
  618. package/dist/server/routes/task5-support.d.ts +4 -0
  619. package/dist/server/routes/task5-support.d.ts.map +1 -0
  620. package/dist/server/routes/task5-support.js +6 -0
  621. package/dist/server/routes/task5-support.js.map +1 -0
  622. package/dist/server/routes/task5.d.ts +5 -0
  623. package/dist/server/routes/task5.d.ts.map +1 -0
  624. package/dist/server/routes/task5.js +56 -0
  625. package/dist/server/routes/task5.js.map +1 -0
  626. package/dist/server/runtime-descriptor.d.ts +24 -0
  627. package/dist/server/runtime-descriptor.d.ts.map +1 -0
  628. package/dist/server/runtime-descriptor.js +156 -0
  629. package/dist/server/runtime-descriptor.js.map +1 -0
  630. package/dist/server/write-queue.d.ts +20 -0
  631. package/dist/server/write-queue.d.ts.map +1 -0
  632. package/dist/server/write-queue.js +83 -0
  633. package/dist/server/write-queue.js.map +1 -0
  634. package/dist/setup/claude-config.d.ts +6 -0
  635. package/dist/setup/claude-config.d.ts.map +1 -0
  636. package/dist/setup/claude-config.js +83 -0
  637. package/dist/setup/claude-config.js.map +1 -0
  638. package/dist/setup/client-detection.d.ts +13 -0
  639. package/dist/setup/client-detection.d.ts.map +1 -0
  640. package/dist/setup/client-detection.js +64 -0
  641. package/dist/setup/client-detection.js.map +1 -0
  642. package/dist/setup/hermes-config.d.ts +7 -0
  643. package/dist/setup/hermes-config.d.ts.map +1 -0
  644. package/dist/setup/hermes-config.js +145 -0
  645. package/dist/setup/hermes-config.js.map +1 -0
  646. package/dist/setup/managed-text.d.ts +6 -0
  647. package/dist/setup/managed-text.d.ts.map +1 -0
  648. package/dist/setup/managed-text.js +52 -0
  649. package/dist/setup/managed-text.js.map +1 -0
  650. package/dist/setup/mcp-conflict.d.ts +4 -0
  651. package/dist/setup/mcp-conflict.d.ts.map +1 -0
  652. package/dist/setup/mcp-conflict.js +15 -0
  653. package/dist/setup/mcp-conflict.js.map +1 -0
  654. package/dist/setup/opencode-config.d.ts +6 -0
  655. package/dist/setup/opencode-config.d.ts.map +1 -0
  656. package/dist/setup/opencode-config.js +86 -0
  657. package/dist/setup/opencode-config.js.map +1 -0
  658. package/dist/setup/project-agent-refresh.d.ts +41 -0
  659. package/dist/setup/project-agent-refresh.d.ts.map +1 -0
  660. package/dist/setup/project-agent-refresh.js +158 -0
  661. package/dist/setup/project-agent-refresh.js.map +1 -0
  662. package/dist/setup/render.d.ts +11 -0
  663. package/dist/setup/render.d.ts.map +1 -0
  664. package/dist/setup/render.js +323 -0
  665. package/dist/setup/render.js.map +1 -0
  666. package/dist/setup/standard-skills.d.ts +52 -0
  667. package/dist/setup/standard-skills.d.ts.map +1 -0
  668. package/dist/setup/standard-skills.js +125 -0
  669. package/dist/setup/standard-skills.js.map +1 -0
  670. package/dist/setup/strict-json.d.ts +7 -0
  671. package/dist/setup/strict-json.d.ts.map +1 -0
  672. package/dist/setup/strict-json.js +98 -0
  673. package/dist/setup/strict-json.js.map +1 -0
  674. package/dist/setup/strict-toml.d.ts +18 -0
  675. package/dist/setup/strict-toml.d.ts.map +1 -0
  676. package/dist/setup/strict-toml.js +491 -0
  677. package/dist/setup/strict-toml.js.map +1 -0
  678. package/dist/skills/cache.d.ts +15 -0
  679. package/dist/skills/cache.d.ts.map +1 -0
  680. package/dist/skills/cache.js +19 -0
  681. package/dist/skills/cache.js.map +1 -0
  682. package/dist/skills/candidate-ranking.d.ts +15 -0
  683. package/dist/skills/candidate-ranking.d.ts.map +1 -0
  684. package/dist/skills/candidate-ranking.js +52 -0
  685. package/dist/skills/candidate-ranking.js.map +1 -0
  686. package/dist/skills/chunking.d.ts +11 -0
  687. package/dist/skills/chunking.d.ts.map +1 -0
  688. package/dist/skills/chunking.js +291 -0
  689. package/dist/skills/chunking.js.map +1 -0
  690. package/dist/skills/config.d.ts +19 -0
  691. package/dist/skills/config.d.ts.map +1 -0
  692. package/dist/skills/config.js +103 -0
  693. package/dist/skills/config.js.map +1 -0
  694. package/dist/skills/discovery-service.d.ts +26 -0
  695. package/dist/skills/discovery-service.d.ts.map +1 -0
  696. package/dist/skills/discovery-service.js +929 -0
  697. package/dist/skills/discovery-service.js.map +1 -0
  698. package/dist/skills/external-transport.d.ts +2 -0
  699. package/dist/skills/external-transport.d.ts.map +1 -0
  700. package/dist/skills/external-transport.js +30 -0
  701. package/dist/skills/external-transport.js.map +1 -0
  702. package/dist/skills/find.d.ts +17 -0
  703. package/dist/skills/find.d.ts.map +1 -0
  704. package/dist/skills/find.js +59 -0
  705. package/dist/skills/find.js.map +1 -0
  706. package/dist/skills/gap-detection.d.ts +23 -0
  707. package/dist/skills/gap-detection.d.ts.map +1 -0
  708. package/dist/skills/gap-detection.js +62 -0
  709. package/dist/skills/gap-detection.js.map +1 -0
  710. package/dist/skills/import-preparation.d.ts +4 -0
  711. package/dist/skills/import-preparation.d.ts.map +1 -0
  712. package/dist/skills/import-preparation.js +20 -0
  713. package/dist/skills/import-preparation.js.map +1 -0
  714. package/dist/skills/materialization-authority.d.ts +11 -0
  715. package/dist/skills/materialization-authority.d.ts.map +1 -0
  716. package/dist/skills/materialization-authority.js +92 -0
  717. package/dist/skills/materialization-authority.js.map +1 -0
  718. package/dist/skills/materialization-service.d.ts +22 -0
  719. package/dist/skills/materialization-service.d.ts.map +1 -0
  720. package/dist/skills/materialization-service.js +101 -0
  721. package/dist/skills/materialization-service.js.map +1 -0
  722. package/dist/skills/official-catalog.d.ts +31 -0
  723. package/dist/skills/official-catalog.d.ts.map +1 -0
  724. package/dist/skills/official-catalog.js +110 -0
  725. package/dist/skills/official-catalog.js.map +1 -0
  726. package/dist/skills/providers/schema.d.ts +30 -0
  727. package/dist/skills/providers/schema.d.ts.map +1 -0
  728. package/dist/skills/providers/schema.js +354 -0
  729. package/dist/skills/providers/schema.js.map +1 -0
  730. package/dist/skills/providers/skills-sh-compat.d.ts +17 -0
  731. package/dist/skills/providers/skills-sh-compat.d.ts.map +1 -0
  732. package/dist/skills/providers/skills-sh-compat.js +73 -0
  733. package/dist/skills/providers/skills-sh-compat.js.map +1 -0
  734. package/dist/skills/providers/skills-sh-v1.d.ts +23 -0
  735. package/dist/skills/providers/skills-sh-v1.d.ts.map +1 -0
  736. package/dist/skills/providers/skills-sh-v1.js +152 -0
  737. package/dist/skills/providers/skills-sh-v1.js.map +1 -0
  738. package/dist/skills/query-builder.d.ts +18 -0
  739. package/dist/skills/query-builder.d.ts.map +1 -0
  740. package/dist/skills/query-builder.js +93 -0
  741. package/dist/skills/query-builder.js.map +1 -0
  742. package/dist/skills/source/errors.d.ts +9 -0
  743. package/dist/skills/source/errors.d.ts.map +1 -0
  744. package/dist/skills/source/errors.js +15 -0
  745. package/dist/skills/source/errors.js.map +1 -0
  746. package/dist/skills/source/frontmatter.d.ts +9 -0
  747. package/dist/skills/source/frontmatter.d.ts.map +1 -0
  748. package/dist/skills/source/frontmatter.js +77 -0
  749. package/dist/skills/source/frontmatter.js.map +1 -0
  750. package/dist/skills/source/github-fetcher.d.ts +20 -0
  751. package/dist/skills/source/github-fetcher.d.ts.map +1 -0
  752. package/dist/skills/source/github-fetcher.js +296 -0
  753. package/dist/skills/source/github-fetcher.js.map +1 -0
  754. package/dist/skills/source/snapshot-validator.d.ts +28 -0
  755. package/dist/skills/source/snapshot-validator.d.ts.map +1 -0
  756. package/dist/skills/source/snapshot-validator.js +186 -0
  757. package/dist/skills/source/snapshot-validator.js.map +1 -0
  758. package/dist/skills/store.d.ts +180 -0
  759. package/dist/skills/store.d.ts.map +1 -0
  760. package/dist/skills/store.js +1712 -0
  761. package/dist/skills/store.js.map +1 -0
  762. package/dist/skills/types.d.ts +171 -0
  763. package/dist/skills/types.d.ts.map +1 -0
  764. package/dist/skills/types.js +2 -0
  765. package/dist/skills/types.js.map +1 -0
  766. package/dist/web/i18n.d.ts +184 -0
  767. package/dist/web/i18n.d.ts.map +1 -0
  768. package/dist/web/i18n.js +733 -0
  769. package/dist/web/i18n.js.map +1 -0
  770. package/dist/web/server.d.ts +16 -0
  771. package/dist/web/server.d.ts.map +1 -0
  772. package/dist/web/server.js +864 -0
  773. package/dist/web/server.js.map +1 -0
  774. package/dist/web/ui.d.ts +6 -0
  775. package/dist/web/ui.d.ts.map +1 -0
  776. package/dist/web/ui.js +1328 -0
  777. package/dist/web/ui.js.map +1 -0
  778. package/docs/README.ja.md +13 -0
  779. package/docs/README.md +15 -0
  780. package/docs/agent-file.md +53 -0
  781. package/docs/agent-gateway.md +102 -0
  782. package/docs/architecture.md +12 -0
  783. package/docs/breaking-changes-1.0.md +64 -0
  784. package/docs/cli-contract.md +39 -0
  785. package/docs/client-compatibility.md +110 -0
  786. package/docs/concepts.ja.md +25 -0
  787. package/docs/concepts.md +33 -0
  788. package/docs/database.md +20 -0
  789. package/docs/execution-ledger.md +68 -0
  790. package/docs/getting-started.ja.md +45 -0
  791. package/docs/getting-started.md +49 -0
  792. package/docs/release-notes-0.1.18.md +105 -0
  793. package/docs/retrieval-evaluation.md +10 -0
  794. package/docs/security-and-trust.ja.md +29 -0
  795. package/docs/security-and-trust.md +39 -0
  796. package/docs/security.md +11 -0
  797. package/docs/semantic-retrieval.ja.md +18 -0
  798. package/docs/semantic-retrieval.md +26 -0
  799. package/docs/sqlite-driver-adr.md +8 -0
  800. package/migrations/001_baseline.sql +972 -0
  801. package/package.json +81 -0
  802. package/skills/kiokuko-simple-work/SKILL.md +112 -0
  803. package/skills/kiokuko-single-purpose-functions/SKILL.md +81 -0
  804. package/skills/kiokuko-single-purpose-functions/references/boundaries-and-ownership.md +50 -0
  805. package/skills/kiokuko-single-purpose-functions/references/domain-and-types.md +48 -0
  806. package/skills/kiokuko-single-purpose-functions/references/effects-and-data.md +43 -0
  807. package/skills/kiokuko-single-purpose-functions/references/kiokuko-patterns.md +344 -0
  808. package/skills/kiokuko-single-purpose-functions/references/problem-shaping-and-language.md +84 -0
  809. package/skills/kiokuko-single-purpose-functions/references/protocols-and-idempotency.md +42 -0
  810. package/skills/kiokuko-single-purpose-functions/references/review-checklist.md +97 -0
  811. package/skills/kiokuko-single-purpose-functions/references/verification.md +41 -0
  812. package/skills/kiokuko-soul/SKILL.md +93 -0
  813. package/skills/kiokuko-ui-design-soul/SKILL.md +71 -0
  814. package/skills/kiokuko-ui-design-soul/references/accessibility-and-navigation.md +31 -0
  815. package/skills/kiokuko-ui-design-soul/references/async-recovery.md +49 -0
  816. package/skills/kiokuko-ui-design-soul/references/forms-and-controls.md +35 -0
  817. package/skills/kiokuko-ui-design-soul/references/interaction-feedback.md +34 -0
  818. package/skills/kiokuko-ui-design-soul/references/responsive-and-platform.md +38 -0
  819. package/skills/kiokuko-ui-design-soul/references/safety-and-review.md +39 -0
  820. package/skills/kiokuko-ui-design-soul/references/ui-checklist.md +71 -0
  821. package/skills/memory-reasoning/SKILL.md +52 -0
  822. package/templates/AGENTS.md +39 -0
@@ -0,0 +1,864 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import { readAkinatorSession, readRunIntakeLink } from '../akinator/store.js';
3
+ import { ContextBroker } from '../context/broker.js';
4
+ import { listContextFeedback, listIntakeFeedback, listRunFeedback } from '../context/feedback.js';
5
+ import { rollbackFailedTransaction } from '../db/transaction.js';
6
+ import { KiokukoError } from '../errors.js';
7
+ import { AgentGatewayService } from '../gateway/agent-service.js';
8
+ import { projectLedger } from '../ledger/projection.js';
9
+ import { curateMemoryCandidates, curatorFacets, globalizeCuratorCandidate } from '../memory/curator.js';
10
+ import { readEntry, updateCandidateEntry } from '../memory/entries.js';
11
+ import { searchEntries } from '../memory/retrieval.js';
12
+ import { recallScopedMemory } from '../memory/scoped-memory.js';
13
+ import { MEMORY_CLASSES } from '../memory/structured-memory.js';
14
+ import { GLOBAL_WORKSPACE } from '../memory/workspaces.js';
15
+ import { compareCanonicalStrings, ENTRY_KINDS, ENTRY_STATUSES, requireWorkspace } from '../serialization/validate.js';
16
+ import { createAgentV1Handler } from '../server/agent-application.js';
17
+ import { startHttpServer } from '../server/http.js';
18
+ import { parseStrictJson } from '../setup/strict-json.js';
19
+ import { readSkillDiscoveryConfig } from '../skills/config.js';
20
+ import { createSkillRegistryProvider } from '../skills/find.js';
21
+ import { documentsFromSkillSnapshot } from '../skills/import-preparation.js';
22
+ import { fetchMaterializableSkillSnapshot } from '../skills/materialization-service.js';
23
+ import { SkillSourceError } from '../skills/source/errors.js';
24
+ import { GitHubSkillSourceFetcher } from '../skills/source/github-fetcher.js';
25
+ import { externalSkillRequirement, externalSkillSourceFetchRequest, listExternalSkills, listExternalSkillsPage, markExternalSkillRefreshFailure, readExternalSkill, refreshExternalSkillSnapshot, setExternalSkillState } from '../skills/store.js';
26
+ import { WEB_HTML } from './ui.js';
27
+ const DEFAULT_HOST = '127.0.0.1';
28
+ const DEFAULT_PORT = 4173;
29
+ const MAX_BODY_BYTES = 2 * 1024 * 1024;
30
+ const MAX_WEB_ENTRIES = 200;
31
+ function hasUtf8Bom(bytes) {
32
+ return bytes.byteLength >= 3 && bytes[0] === 0xef && bytes[1] === 0xbb && bytes[2] === 0xbf;
33
+ }
34
+ function isInvalidUtf8EncodingError(error) {
35
+ return error instanceof TypeError && 'code' in error && error.code === 'ERR_ENCODING_INVALID_ENCODED_DATA';
36
+ }
37
+ function jsonResponse(response, status, value) {
38
+ const body = JSON.stringify(value);
39
+ response.writeHead(status, {
40
+ 'content-type': 'application/json; charset=utf-8',
41
+ 'cache-control': 'no-store',
42
+ 'content-length': Buffer.byteLength(body),
43
+ });
44
+ response.end(body);
45
+ }
46
+ function htmlResponse(response, sessionToken) {
47
+ response.writeHead(200, {
48
+ 'content-type': 'text/html; charset=utf-8',
49
+ 'cache-control': 'no-store',
50
+ 'set-cookie': `kiokuko_ui_session=${sessionToken}; Path=/; HttpOnly; SameSite=Strict`,
51
+ 'content-length': Buffer.byteLength(WEB_HTML),
52
+ });
53
+ response.end(WEB_HTML);
54
+ }
55
+ const UI_SESSION_COOKIE = 'kiokuko_ui_session';
56
+ function cookieValue(request, name) {
57
+ const header = request.headers.cookie;
58
+ if (typeof header !== 'string')
59
+ return undefined;
60
+ for (const item of header.split(';')) {
61
+ const separator = item.indexOf('=');
62
+ if (separator < 0)
63
+ continue;
64
+ if (item.slice(0, separator).trim() === name)
65
+ return item.slice(separator + 1).trim();
66
+ }
67
+ return undefined;
68
+ }
69
+ function requireTrustedWebOrigin(request, trustedOrigin) {
70
+ if (trustedOrigin === undefined) {
71
+ throw new KiokukoError('AUTHENTICATION_ERROR', 'Origin is invalid');
72
+ }
73
+ const expectedHost = new URL(trustedOrigin).host;
74
+ if (request.headers.host !== expectedHost) {
75
+ throw new KiokukoError('AUTHENTICATION_ERROR', 'Origin is invalid');
76
+ }
77
+ const origin = request.headers.origin;
78
+ if (origin !== undefined && origin !== trustedOrigin) {
79
+ throw new KiokukoError('AUTHENTICATION_ERROR', 'Origin is invalid');
80
+ }
81
+ const referer = request.headers.referer;
82
+ if (referer !== undefined) {
83
+ try {
84
+ if (new URL(referer).origin !== trustedOrigin)
85
+ throw new Error('origin');
86
+ }
87
+ catch {
88
+ throw new KiokukoError('AUTHENTICATION_ERROR', 'Origin is invalid');
89
+ }
90
+ }
91
+ }
92
+ function requireUiSession(request, sessionToken) {
93
+ if (cookieValue(request, UI_SESSION_COOKIE) !== sessionToken) {
94
+ throw new KiokukoError('AUTHENTICATION_ERROR', 'Authorization is invalid');
95
+ }
96
+ }
97
+ function errorStatus(error) {
98
+ if (!(error instanceof KiokukoError))
99
+ return 500;
100
+ if (error.code === 'AUTHENTICATION_ERROR')
101
+ return 401;
102
+ if (error.code === 'VALIDATION_ERROR' || error.code === 'USAGE_ERROR')
103
+ return 400;
104
+ if (error.code === 'NOT_FOUND')
105
+ return 404;
106
+ if (error.code === 'CONFLICT')
107
+ return 409;
108
+ if (error.code === 'BACKPRESSURE')
109
+ return 429;
110
+ if (error.code === 'SECURITY_REJECTION')
111
+ return 422;
112
+ if (error.code === 'SERVICE_UNAVAILABLE' || error.code === 'DATABASE_ERROR')
113
+ return 503;
114
+ if (error.code === 'NOT_IMPLEMENTED')
115
+ return 501;
116
+ return 500;
117
+ }
118
+ function boundedRetryAfterSeconds(value) {
119
+ if (typeof value !== 'number' || !Number.isFinite(value))
120
+ return 1;
121
+ return Math.min(60, Math.max(1, Math.trunc(value)));
122
+ }
123
+ function errorBody(error) {
124
+ if (!(error instanceof KiokukoError)) {
125
+ return { error: { code: 'INTEGRITY_ERROR', message: 'Unexpected server error', details: {} } };
126
+ }
127
+ if (error.code === 'AUTHENTICATION_ERROR')
128
+ return { error: { code: error.code, message: 'Authorization is invalid', details: {} } };
129
+ if (error.code === 'VALIDATION_ERROR' || error.code === 'USAGE_ERROR')
130
+ return { error: { code: error.code, message: 'Request is invalid', details: {} } };
131
+ if (error.code === 'NOT_FOUND')
132
+ return { error: { code: error.code, message: 'Resource not found', details: {} } };
133
+ if (error.code === 'CONFLICT')
134
+ return { error: { code: error.code, message: 'Request conflicts with current state', details: {} } };
135
+ if (error.code === 'BACKPRESSURE')
136
+ return { error: { code: error.code, message: 'Service is busy', details: { retryAfterSeconds: boundedRetryAfterSeconds(error.details.retryAfterSeconds) } } };
137
+ if (error.code === 'DATABASE_ERROR')
138
+ return { error: { code: error.code, message: 'Database unavailable', details: {} } };
139
+ if (error.code === 'SERVICE_UNAVAILABLE')
140
+ return { error: { code: error.code, message: 'Service unavailable', details: {} } };
141
+ if (error.code === 'SECURITY_REJECTION')
142
+ return { error: { code: error.code, message: 'Request rejected', details: {} } };
143
+ if (error.code === 'INTEGRITY_ERROR')
144
+ return { error: { code: error.code, message: 'Internal integrity error', details: {} } };
145
+ if (error.code === 'PARTIAL_FAILURE')
146
+ return { error: { code: error.code, message: 'Operation partially failed', details: {} } };
147
+ if (error.code === 'NOT_IMPLEMENTED')
148
+ return { error: { code: error.code, message: 'Operation is not implemented', details: {} } };
149
+ return { error: { code: 'INTEGRITY_ERROR', message: 'Unexpected server error', details: {} } };
150
+ }
151
+ function asRecord(value, label) {
152
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
153
+ throw new KiokukoError('VALIDATION_ERROR', `${label} must be a JSON object`);
154
+ }
155
+ return value;
156
+ }
157
+ function enumQuery(value, allowed, field) {
158
+ if (value === null || value.length === 0)
159
+ return undefined;
160
+ if (!allowed.includes(value)) {
161
+ throw new KiokukoError('VALIDATION_ERROR', `${field} must be one of: ${allowed.join(', ')}`);
162
+ }
163
+ return value;
164
+ }
165
+ function booleanQuery(value, field) {
166
+ if (value === null || value.length === 0)
167
+ return undefined;
168
+ if (value !== 'true' && value !== 'false')
169
+ throw new KiokukoError('VALIDATION_ERROR', `${field} must be true or false`);
170
+ return value === 'true';
171
+ }
172
+ function limitQuery(value) {
173
+ if (value === null || value.length === 0)
174
+ return MAX_WEB_ENTRIES;
175
+ const limit = Number(value);
176
+ if (!Number.isInteger(limit) || limit < 1 || limit > MAX_WEB_ENTRIES) {
177
+ throw new KiokukoError('VALIDATION_ERROR', `limit must be an integer between 1 and ${MAX_WEB_ENTRIES}`);
178
+ }
179
+ return limit;
180
+ }
181
+ function invalidExternalSkillCursor() {
182
+ throw new KiokukoError('VALIDATION_ERROR', 'cursor is invalid');
183
+ }
184
+ function externalSkillCursor(record, listVersion, state) {
185
+ const value = [
186
+ 1,
187
+ listVersion,
188
+ state ?? null,
189
+ record.sourceLocator,
190
+ record.slug,
191
+ record.provider,
192
+ record.skillId,
193
+ ];
194
+ return Buffer.from(JSON.stringify(value), 'utf8').toString('base64url');
195
+ }
196
+ function externalSkillCursorQuery(url) {
197
+ const values = url.searchParams.getAll('cursor');
198
+ if (values.length === 0)
199
+ return undefined;
200
+ if (values.length !== 1 || !/^[A-Za-z0-9_-]{1,4096}$/u.test(values[0]))
201
+ invalidExternalSkillCursor();
202
+ let decoded;
203
+ let parsed;
204
+ try {
205
+ decoded = Buffer.from(values[0], 'base64url');
206
+ if (decoded.toString('base64url') !== values[0] || decoded.byteLength > 3_000 || hasUtf8Bom(decoded))
207
+ invalidExternalSkillCursor();
208
+ parsed = JSON.parse(new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(decoded));
209
+ }
210
+ catch (error) {
211
+ if (error instanceof KiokukoError)
212
+ throw error;
213
+ if (error instanceof SyntaxError || isInvalidUtf8EncodingError(error))
214
+ invalidExternalSkillCursor();
215
+ throw error;
216
+ }
217
+ if (!Array.isArray(parsed) || parsed.length !== 7 || parsed[0] !== 1
218
+ || typeof parsed[1] !== 'number' || !Number.isSafeInteger(parsed[1]) || parsed[1] < 0
219
+ || parsed[2] !== null && (typeof parsed[2] !== 'string'
220
+ || !['discovered', 'imported', 'blocked', 'stale', 'disabled'].includes(parsed[2]))
221
+ || parsed.slice(3).some((value) => typeof value !== 'string' || value.length < 1 || value.length > 2_000 || /\p{Cc}/u.test(value))) {
222
+ invalidExternalSkillCursor();
223
+ }
224
+ return parsed;
225
+ }
226
+ function externalSkillListItem(record) {
227
+ const metadata = record.metadata;
228
+ const documents = record.sourceCommit === null ? 0 : metadata.documents;
229
+ const technology = record.sourceCommit === null ? null : metadata.technology;
230
+ if (typeof documents !== 'number' || !Number.isSafeInteger(documents) || documents < 0 || documents > 64
231
+ || technology !== null && (typeof technology !== 'string' || technology.length < 1 || technology.length > 500)) {
232
+ throw new KiokukoError('INTEGRITY_ERROR', 'External skill list metadata is invalid');
233
+ }
234
+ return { ...record, metadata: { documents, technology } };
235
+ }
236
+ function listQuery(url, name, max = 50) {
237
+ const values = url.searchParams.getAll(name).map((value) => value.trim()).filter(Boolean);
238
+ if (values.length > max || values.some((value) => value.length > 300))
239
+ throw new KiokukoError('VALIDATION_ERROR', `${name} contains too many or too-large values`);
240
+ return [...new Set(values)];
241
+ }
242
+ function requireExactJsonMediaType(request) {
243
+ const contentTypes = [];
244
+ for (let index = 0; index < request.rawHeaders.length; index += 2) {
245
+ if (request.rawHeaders[index]?.toLowerCase() === 'content-type') {
246
+ contentTypes.push(request.rawHeaders[index + 1] ?? '');
247
+ }
248
+ }
249
+ if (contentTypes.length !== 1 || contentTypes[0].trim().toLowerCase() !== 'application/json') {
250
+ request.resume();
251
+ throw new KiokukoError('VALIDATION_ERROR', 'Content-Type must be exactly application/json');
252
+ }
253
+ }
254
+ function decodeJsonBody(bytes) {
255
+ if (hasUtf8Bom(bytes)) {
256
+ throw new KiokukoError('VALIDATION_ERROR', 'Request body must not contain a byte-order mark');
257
+ }
258
+ try {
259
+ return new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(bytes);
260
+ }
261
+ catch (error) {
262
+ if (isInvalidUtf8EncodingError(error)) {
263
+ throw new KiokukoError('VALIDATION_ERROR', 'Request body must be valid UTF-8');
264
+ }
265
+ throw error;
266
+ }
267
+ }
268
+ function requireOnlyJsonFields(payload, allowed, label) {
269
+ const allowedFields = new Set(allowed);
270
+ if (Object.keys(payload).some((field) => !allowedFields.has(field))) {
271
+ throw new KiokukoError('VALIDATION_ERROR', `${label} contains an unknown field`);
272
+ }
273
+ }
274
+ async function readJsonBody(request) {
275
+ requireExactJsonMediaType(request);
276
+ const chunks = [];
277
+ let size = 0;
278
+ const bytes = await new Promise((resolve, reject) => {
279
+ request.on('data', (chunk) => {
280
+ const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
281
+ size += buffer.byteLength;
282
+ if (size > MAX_BODY_BYTES) {
283
+ reject(new KiokukoError('VALIDATION_ERROR', 'Request body is too large'));
284
+ request.destroy();
285
+ return;
286
+ }
287
+ chunks.push(buffer);
288
+ });
289
+ request.on('end', () => resolve(Buffer.concat(chunks)));
290
+ request.on('error', reject);
291
+ request.on('aborted', () => reject(new KiokukoError('VALIDATION_ERROR', 'Request body is incomplete')));
292
+ });
293
+ const parsed = parseStrictJson(decodeJsonBody(bytes), { allowTrailingComma: false, disallowComments: true, allowEmptyContent: false }, 'Request body is not valid strict JSON');
294
+ return asRecord(parsed, 'Request body');
295
+ }
296
+ function requireNoQueryParameters(url) {
297
+ if (url.searchParams.entries().next().done !== true) {
298
+ throw new KiokukoError('VALIDATION_ERROR', 'This endpoint does not accept query parameters');
299
+ }
300
+ }
301
+ async function requireEmptyBody(request) {
302
+ await new Promise((resolve, reject) => {
303
+ request.once('data', () => {
304
+ request.resume();
305
+ reject(new KiokukoError('VALIDATION_ERROR', 'Request body must be empty'));
306
+ });
307
+ request.once('end', resolve);
308
+ request.once('error', reject);
309
+ request.once('aborted', () => reject(new KiokukoError('VALIDATION_ERROR', 'Request body is incomplete')));
310
+ });
311
+ }
312
+ function workspaceSummaries(database) {
313
+ database.exec('BEGIN DEFERRED');
314
+ try {
315
+ const externalWorkspaces = new Set(listExternalSkills(database).map((skill) => skill.sourceWorkspace));
316
+ const summaries = new Map();
317
+ for (const row of database.prepare('SELECT workspace, display_name FROM repositories ORDER BY workspace ASC').all()) {
318
+ if (!externalWorkspaces.has(row.workspace))
319
+ summaries.set(row.workspace, { workspace: row.workspace, displayName: row.display_name, count: 0 });
320
+ }
321
+ for (const row of database.prepare("SELECT workspace, COUNT(*) AS count FROM entries WHERE status <> 'superseded' GROUP BY workspace").all()) {
322
+ if (externalWorkspaces.has(row.workspace))
323
+ continue;
324
+ const existing = summaries.get(row.workspace);
325
+ if (existing)
326
+ existing.count = Number(row.count);
327
+ else
328
+ summaries.set(row.workspace, { workspace: row.workspace, displayName: '', count: Number(row.count) });
329
+ }
330
+ database.exec('COMMIT');
331
+ return [...summaries.values()].sort((left, right) => compareCanonicalStrings(left.workspace, right.workspace));
332
+ }
333
+ catch (error) {
334
+ rollbackFailedTransaction(database, error);
335
+ }
336
+ }
337
+ function workspaceTags(database, workspace) {
338
+ return database
339
+ .prepare("SELECT t.tag, COUNT(*) AS count FROM entry_revision_tags t JOIN entries e ON e.id = t.entry_id AND e.current_revision = t.revision WHERE e.workspace = ? AND e.status <> 'superseded' GROUP BY t.tag ORDER BY t.tag ASC")
340
+ .all(workspace)
341
+ .map((row) => ({ tag: row.tag, count: Number(row.count) }));
342
+ }
343
+ function workspaceProject(database, workspace) {
344
+ const row = database.prepare('SELECT r.repository_id, r.workspace, l.canonical_root FROM repository_locations AS l JOIN repositories AS r ON r.repository_id = l.repository_id WHERE r.workspace = ? ORDER BY l.last_seen_at DESC, l.canonical_root ASC LIMIT 1').get(workspace);
345
+ if (!row)
346
+ return undefined;
347
+ return { repositoryId: row.repository_id, workspace: row.workspace, repositoryRoot: row.canonical_root, source: 'location' };
348
+ }
349
+ function listEntries(database, workspace, query, kind, status, tag, includeSuperseded, limit) {
350
+ if (query.trim().length > 0) {
351
+ const searchInput = { workspace, query, limit, includeSuperseded };
352
+ if (kind !== undefined)
353
+ searchInput.kind = kind;
354
+ if (status !== undefined)
355
+ searchInput.status = status;
356
+ if (tag !== undefined)
357
+ searchInput.tag = tag;
358
+ const result = searchEntries(database, searchInput);
359
+ return { entries: result.items, count: result.count };
360
+ }
361
+ const parameters = [workspace];
362
+ const clauses = ['e.workspace = ?'];
363
+ if (!includeSuperseded)
364
+ clauses.push("e.status <> 'superseded'");
365
+ if (kind !== undefined) {
366
+ clauses.push('r.kind = ?');
367
+ parameters.push(kind);
368
+ }
369
+ if (status !== undefined) {
370
+ clauses.push('e.status = ?');
371
+ parameters.push(status);
372
+ }
373
+ if (tag !== undefined) {
374
+ clauses.push('EXISTS (SELECT 1 FROM entry_revision_tags filter_tags WHERE filter_tags.entry_id = e.id AND filter_tags.revision = e.current_revision AND filter_tags.tag = ?)');
375
+ parameters.push(tag);
376
+ }
377
+ parameters.push(limit);
378
+ const rows = database.prepare(`SELECT e.id FROM entries AS e JOIN entry_revisions AS r ON r.entry_id = e.id AND r.revision = e.current_revision WHERE ${clauses.join(' AND ')} ORDER BY e.updated_at DESC, e.id ASC LIMIT ?`).all(...parameters);
379
+ const entries = rows.map((row) => readEntry(database, { workspace, entryId: row.id }));
380
+ return { entries, count: entries.length };
381
+ }
382
+ function entryIdFromPath(pathname) {
383
+ const prefix = '/api/entries/';
384
+ if (!pathname.startsWith(prefix) || pathname.slice(prefix.length).includes('/')) {
385
+ throw new KiokukoError('NOT_FOUND', 'Endpoint not found');
386
+ }
387
+ try {
388
+ return decodeURIComponent(pathname.slice(prefix.length));
389
+ }
390
+ catch {
391
+ throw new KiokukoError('VALIDATION_ERROR', 'entry id is not valid URL encoding');
392
+ }
393
+ }
394
+ function externalSkillIdFromPath(pathname) {
395
+ const prefix = '/api/skills/';
396
+ if (!pathname.startsWith(prefix))
397
+ return undefined;
398
+ const encoded = pathname.slice(prefix.length);
399
+ if (encoded.length === 0 || encoded.includes('/'))
400
+ throw new KiokukoError('NOT_FOUND', 'Endpoint not found');
401
+ try {
402
+ const skillId = decodeURIComponent(encoded);
403
+ if (skillId.length === 0 || skillId.length > 500)
404
+ throw new Error('invalid');
405
+ return skillId;
406
+ }
407
+ catch {
408
+ throw new KiokukoError('VALIDATION_ERROR', 'skill id is not valid URL encoding');
409
+ }
410
+ }
411
+ function externalSkillSourceFailure(error, code, message) {
412
+ const failure = new KiokukoError(code, message, {
413
+ failureCode: error.code,
414
+ ...(error.retryAfterSeconds === null ? {} : { retryAfterSeconds: error.retryAfterSeconds }),
415
+ });
416
+ Object.defineProperty(failure, 'cause', {
417
+ value: error,
418
+ enumerable: false,
419
+ configurable: false,
420
+ writable: false,
421
+ });
422
+ return failure;
423
+ }
424
+ function refreshExternalSkill(context, skillId, flights) {
425
+ if (flights.database !== context.database) {
426
+ throw new KiokukoError('INTEGRITY_ERROR', 'External skill refresh coordinator is bound to another database');
427
+ }
428
+ const detail = readExternalSkill(context.database, skillId);
429
+ if (!detail)
430
+ throw new KiokukoError('NOT_FOUND', 'External skill not found');
431
+ if (detail.skill.sourceType !== 'github')
432
+ throw new KiokukoError('NOT_IMPLEMENTED', 'Only GitHub external skills can be refreshed automatically');
433
+ const candidate = {
434
+ id: detail.skill.skillId,
435
+ provider: detail.skill.provider,
436
+ name: detail.skill.name,
437
+ slug: detail.skill.slug,
438
+ source: detail.skill.sourceLocator,
439
+ sourceType: 'github',
440
+ installUrl: detail.skill.installUrl,
441
+ installs: detail.skill.installs,
442
+ duplicate: detail.skill.duplicate,
443
+ officialStatus: detail.skill.officialStatus,
444
+ auditStatus: detail.skill.auditStatus,
445
+ };
446
+ const expected = { generation: detail.skill.generation, sourceCommit: detail.skill.sourceCommit, snapshotHash: detail.skill.snapshotHash, state: detail.skill.state, lastCheckedAt: detail.skill.lastCheckedAt };
447
+ const flightKey = JSON.stringify([
448
+ skillId,
449
+ expected.generation,
450
+ expected.sourceCommit,
451
+ expected.snapshotHash,
452
+ expected.state,
453
+ expected.lastCheckedAt,
454
+ ]);
455
+ const existing = flights.operations.get(flightKey);
456
+ if (existing !== undefined)
457
+ return existing;
458
+ const operation = Promise.resolve().then(async () => {
459
+ try {
460
+ const materialized = await fetchMaterializableSkillSnapshot(context.database, candidate, {
461
+ provider: createSkillRegistryProvider(),
462
+ sourceFetcher: new GitHubSkillSourceFetcher({ token: readSkillDiscoveryConfig().githubToken }),
463
+ sourceRequest: externalSkillSourceFetchRequest(detail),
464
+ cacheWrite: (operation) => context.enqueueWrite(operation),
465
+ });
466
+ const snapshot = materialized.snapshot;
467
+ if (!snapshot.files.some((file) => file.primary))
468
+ throw new KiokukoError('VALIDATION_ERROR', 'Skill snapshot has no primary document');
469
+ const requirement = externalSkillRequirement(context.database, skillId);
470
+ return await context.enqueueWrite(() => refreshExternalSkillSnapshot(context.database, skillId, snapshot, documentsFromSkillSnapshot(snapshot), requirement, expected, undefined, materialized.authorization));
471
+ }
472
+ catch (error) {
473
+ if (!(error instanceof SkillSourceError))
474
+ throw error;
475
+ if (error.code === 'source_missing' || error.code === 'candidate_not_found_at_source') {
476
+ await context.enqueueWrite(() => markExternalSkillRefreshFailure(context.database, skillId, 'stale', expected));
477
+ throw externalSkillSourceFailure(error, 'CONFLICT', 'External skill source is stale');
478
+ }
479
+ if (error.code === 'skill_disabled_for_model_invocation' || error.code === 'skill_secret_detected' || error.code === 'skill_blocked') {
480
+ await context.enqueueWrite(() => markExternalSkillRefreshFailure(context.database, skillId, 'blocked', expected));
481
+ throw externalSkillSourceFailure(error, 'SECURITY_REJECTION', 'External skill snapshot was blocked');
482
+ }
483
+ if (error.code === 'source_rate_limited' || error.code === 'source_unavailable') {
484
+ throw externalSkillSourceFailure(error, 'SERVICE_UNAVAILABLE', 'External skill source is temporarily unavailable');
485
+ }
486
+ if (error.code === 'source_tree_truncated' || error.code === 'skill_too_large' || error.code === 'skill_validation_failed') {
487
+ throw externalSkillSourceFailure(error, 'SECURITY_REJECTION', 'External skill source failed validation');
488
+ }
489
+ throw error;
490
+ }
491
+ });
492
+ flights.operations.set(flightKey, operation);
493
+ const cleanup = () => {
494
+ if (flights.operations.get(flightKey) === operation)
495
+ flights.operations.delete(flightKey);
496
+ };
497
+ void operation.then(cleanup, cleanup);
498
+ return operation;
499
+ }
500
+ function operatorRunIdFromPath(pathname) {
501
+ const prefix = '/api/operator/runs/';
502
+ if (!pathname.startsWith(prefix) || pathname.slice(prefix.length).includes('/'))
503
+ return undefined;
504
+ try {
505
+ const runId = decodeURIComponent(pathname.slice(prefix.length));
506
+ if (runId.length === 0)
507
+ throw new Error('empty');
508
+ return runId;
509
+ }
510
+ catch {
511
+ throw new KiokukoError('VALIDATION_ERROR', 'run id is not valid URL encoding');
512
+ }
513
+ }
514
+ function operatorRunList(context, url) {
515
+ const workspace = requireWorkspace(url.searchParams.get('workspace') ?? '');
516
+ const service = new AgentGatewayService(context.database);
517
+ const input = { workspace };
518
+ for (const field of ['client', 'status', 'cursor']) {
519
+ const value = url.searchParams.get(field);
520
+ if (value !== null)
521
+ input[field] = value;
522
+ }
523
+ const limit = url.searchParams.get('limit');
524
+ if (limit !== null)
525
+ input.limit = Math.min(limitQuery(limit), 100);
526
+ return { workspace, ...service.listRuns(input) };
527
+ }
528
+ function operatorRunDetail(context, runId) {
529
+ const service = new AgentGatewayService(context.database);
530
+ const run = service.readRun({ runId });
531
+ const intake = service.readIntake({ runId });
532
+ const events = service.listEvents({ runId, limit: 100 });
533
+ const link = readRunIntakeLink(context.database, { workspace: run.workspace, runId });
534
+ const session = readAkinatorSession(context.database, { workspace: run.workspace, sessionId: link.sessionId });
535
+ const initialProfile = { ...session.profile };
536
+ const projection = projectLedger({
537
+ initialProfile,
538
+ intakeStatus: session.status,
539
+ coverage: run.coverage,
540
+ throughSequence: run.lastSequence,
541
+ events: events.items.map((event) => ({
542
+ eventId: event.eventId,
543
+ sequence: event.sequence,
544
+ eventType: event.eventType,
545
+ ...(event.outcome === null ? {} : { outcome: event.outcome }),
546
+ payload: event.payload,
547
+ })),
548
+ });
549
+ const deliveries = new ContextBroker(context.database).listDeliveries({ runId, limit: 100 });
550
+ const feedback = {
551
+ context: listContextFeedback(context.database, { workspace: run.workspace, runId, limit: 100 }),
552
+ run: listRunFeedback(context.database, { workspace: run.workspace, runId, limit: 100 }),
553
+ intake: listIntakeFeedback(context.database, { workspace: run.workspace, runId, limit: 100 }),
554
+ };
555
+ const evidence = context.database.prepare(`
556
+ SELECT evidence_id AS evidenceId, event_id AS eventId, kind, digest_algorithm AS digestAlgorithm,
557
+ digest, byte_size AS byteSize, summary, created_at AS createdAt
558
+ FROM ledger_evidence WHERE run_id = ? ORDER BY created_at ASC, evidence_id ASC LIMIT 100
559
+ `).all(runId);
560
+ const memoryLinks = context.database.prepare(`
561
+ SELECT link_id AS linkId, event_id AS eventId, delivery_id AS deliveryId, entry_id AS entryId, created_at AS createdAt
562
+ FROM ledger_memory_links WHERE run_id = ? ORDER BY created_at ASC, link_id ASC LIMIT 100
563
+ `).all(runId);
564
+ const warnings = [];
565
+ if (run.coverage.run !== 'complete')
566
+ warnings.push('coverage is partial');
567
+ if (projection.evidenceState !== 'fresh')
568
+ warnings.push(`evidence is ${projection.evidenceState}`);
569
+ if (session.status === 'active')
570
+ warnings.push('intake is incomplete');
571
+ return {
572
+ run,
573
+ intake,
574
+ profile: {
575
+ initial: initialProfile,
576
+ projected: projection.taskProfile,
577
+ source: link.profileSources,
578
+ policyVersion: link.policyVersion,
579
+ initialProfileHash: link.initialProfileHash,
580
+ },
581
+ timeline: events,
582
+ evidence,
583
+ coverage: run.coverage,
584
+ evidenceState: projection.evidenceState,
585
+ warnings,
586
+ deliveries,
587
+ feedback,
588
+ memoryLinks,
589
+ proposals: events.items.filter((event) => event.eventType === 'memory.proposed').map((event) => ({ eventId: event.eventId, sequence: event.sequence })),
590
+ untrusted: true,
591
+ };
592
+ }
593
+ async function handleRequest(request, response, context, sessionToken, externalSkillRefreshFlights) {
594
+ if (request.method === 'OPTIONS') {
595
+ response.writeHead(204, { 'cache-control': 'no-store' });
596
+ response.end();
597
+ return;
598
+ }
599
+ const url = new URL(request.url ?? '/', 'http://127.0.0.1');
600
+ if (request.method === 'GET' && url.pathname === '/') {
601
+ htmlResponse(response, sessionToken);
602
+ return;
603
+ }
604
+ if (request.method === 'GET' && url.pathname === '/api/health') {
605
+ jsonResponse(response, 200, { ok: true });
606
+ return;
607
+ }
608
+ requireUiSession(request, sessionToken);
609
+ if (request.method === 'GET' && url.pathname === '/api/skills') {
610
+ if ([...url.searchParams.keys()].some((key) => key !== 'state' && key !== 'limit' && key !== 'cursor')
611
+ || url.searchParams.getAll('state').length > 1 || url.searchParams.getAll('limit').length > 1) {
612
+ throw new KiokukoError('VALIDATION_ERROR', 'External skill list query is invalid');
613
+ }
614
+ const state = enumQuery(url.searchParams.get('state'), ['discovered', 'imported', 'blocked', 'stale', 'disabled'], 'state');
615
+ const limit = limitQuery(url.searchParams.get('limit'));
616
+ const cursor = externalSkillCursorQuery(url);
617
+ const normalizedState = state;
618
+ if (cursor !== undefined && cursor[2] !== (normalizedState ?? null)) {
619
+ throw new KiokukoError('CONFLICT', 'External skill list filter changed; restart pagination');
620
+ }
621
+ const page = listExternalSkillsPage(context.database, {
622
+ ...(normalizedState === undefined ? {} : { state: normalizedState }),
623
+ limit,
624
+ ...(cursor === undefined ? {} : {
625
+ expectedVersion: cursor[1],
626
+ after: { sourceLocator: cursor[3], slug: cursor[4], provider: cursor[5], skillId: cursor[6] },
627
+ }),
628
+ });
629
+ const skills = page.skills.map(externalSkillListItem);
630
+ jsonResponse(response, 200, {
631
+ skills,
632
+ count: skills.length,
633
+ truncated: page.truncated,
634
+ nextCursor: page.truncated ? externalSkillCursor(page.skills.at(-1), page.version, normalizedState) : null,
635
+ untrusted: true,
636
+ });
637
+ return;
638
+ }
639
+ const isExternalSkillAction = url.pathname.endsWith('/refresh') || url.pathname.endsWith('/disable') || url.pathname.endsWith('/enable');
640
+ const externalSkillId = isExternalSkillAction ? undefined : externalSkillIdFromPath(url.pathname);
641
+ if (externalSkillId !== undefined && request.method === 'GET') {
642
+ requireNoQueryParameters(url);
643
+ const detail = readExternalSkill(context.database, externalSkillId);
644
+ if (!detail)
645
+ throw new KiokukoError('NOT_FOUND', 'External skill not found');
646
+ jsonResponse(response, 200, {
647
+ skill: externalSkillListItem(detail.skill),
648
+ entries: detail.entries.slice(0, MAX_WEB_ENTRIES),
649
+ entriesTruncated: detail.entries.length > MAX_WEB_ENTRIES,
650
+ untrusted: true,
651
+ });
652
+ return;
653
+ }
654
+ if (request.method === 'POST' && url.pathname.startsWith('/api/skills/') && url.pathname.endsWith('/refresh')) {
655
+ const skillId = externalSkillIdFromPath(url.pathname.slice(0, -'/refresh'.length));
656
+ if (skillId === undefined)
657
+ throw new KiokukoError('NOT_FOUND', 'Endpoint not found');
658
+ requireNoQueryParameters(url);
659
+ await requireEmptyBody(request);
660
+ jsonResponse(response, 200, await refreshExternalSkill(context, skillId, externalSkillRefreshFlights));
661
+ return;
662
+ }
663
+ if (request.method === 'POST' && url.pathname.startsWith('/api/skills/') && (url.pathname.endsWith('/disable') || url.pathname.endsWith('/enable'))) {
664
+ const suffix = url.pathname.endsWith('/disable') ? '/disable' : '/enable';
665
+ const skillId = externalSkillIdFromPath(url.pathname.slice(0, -suffix.length));
666
+ if (skillId === undefined)
667
+ throw new KiokukoError('NOT_FOUND', 'Endpoint not found');
668
+ requireNoQueryParameters(url);
669
+ await requireEmptyBody(request);
670
+ const state = suffix === '/disable' ? 'disabled' : 'imported';
671
+ const skill = await context.enqueueWrite(() => setExternalSkillState(context.database, skillId, state));
672
+ jsonResponse(response, 200, { skill, untrusted: true });
673
+ return;
674
+ }
675
+ if (request.method === 'GET' && url.pathname === '/api/operator/runs') {
676
+ jsonResponse(response, 200, operatorRunList(context, url));
677
+ return;
678
+ }
679
+ if (request.method === 'GET' && operatorRunIdFromPath(url.pathname) !== undefined) {
680
+ jsonResponse(response, 200, operatorRunDetail(context, operatorRunIdFromPath(url.pathname)));
681
+ return;
682
+ }
683
+ if (request.method === 'GET' && url.pathname === '/api/workspaces') {
684
+ const workspaces = await workspaceSummaries(context.database);
685
+ jsonResponse(response, 200, { workspaces });
686
+ return;
687
+ }
688
+ if (request.method === 'GET' && url.pathname === '/api/tags') {
689
+ const workspace = requireWorkspace(url.searchParams.get('workspace') ?? '');
690
+ const tags = await workspaceTags(context.database, workspace);
691
+ jsonResponse(response, 200, { workspace, tags });
692
+ return;
693
+ }
694
+ if (request.method === 'GET' && url.pathname === '/api/memory/recall') {
695
+ const workspace = requireWorkspace(url.searchParams.get('workspace') ?? '');
696
+ const query = url.searchParams.get('q')?.trim() ?? '';
697
+ if (query.length === 0)
698
+ throw new KiokukoError('VALIDATION_ERROR', 'q must be a non-empty search query');
699
+ const scope = enumQuery(url.searchParams.get('scope'), ['auto', 'project', 'ecosystem', 'global'], 'scope') ?? 'auto';
700
+ const project = workspace === GLOBAL_WORKSPACE ? undefined : workspaceProject(context.database, workspace);
701
+ if (scope !== 'global' && workspace !== GLOBAL_WORKSPACE && project === undefined)
702
+ throw new KiokukoError('NOT_FOUND', 'The selected workspace has no repository root for scoped recall');
703
+ const result = await recallScopedMemory(context.database, {
704
+ query,
705
+ scope,
706
+ ...(project === undefined ? {} : { project }),
707
+ limit: Math.min(limitQuery(url.searchParams.get('limit')), 100),
708
+ maxChars: 50_000,
709
+ });
710
+ jsonResponse(response, 200, { workspace, ...result });
711
+ return;
712
+ }
713
+ if (request.method === 'GET' && url.pathname === '/api/curator/candidates') {
714
+ const workspaceParam = url.searchParams.get('workspace');
715
+ const skillReadyOnly = booleanQuery(url.searchParams.get('skillReadyOnly'), 'skillReadyOnly') ?? false;
716
+ const workspaces = listQuery(url, 'project');
717
+ const tags = listQuery(url, 'tag');
718
+ const frameworks = listQuery(url, 'framework');
719
+ const languages = listQuery(url, 'language');
720
+ const memoryClasses = listQuery(url, 'memoryClass').map((value) => enumQuery(value, MEMORY_CLASSES, 'memoryClass'));
721
+ const tiers = listQuery(url, 'tier').map((value) => enumQuery(value, ['unobserved', 'observed', 'repeated', 'portable'], 'tier'));
722
+ const tagMode = enumQuery(url.searchParams.get('tagMode'), ['any', 'all'], 'tagMode');
723
+ const includeGlobalized = booleanQuery(url.searchParams.get('includeGlobalized'), 'includeGlobalized') ?? false;
724
+ const cursor = url.searchParams.get('cursor');
725
+ const input = {
726
+ ...(workspaceParam !== null && workspaceParam !== 'all' ? { workspace: requireWorkspace(workspaceParam) } : {}),
727
+ ...(workspaces.length > 0 ? { workspaces } : {}),
728
+ ...(tags.length > 0 ? { tags } : {}),
729
+ ...(tagMode === undefined ? {} : { tagMode }),
730
+ ...(frameworks.length > 0 ? { frameworks } : {}),
731
+ ...(languages.length > 0 ? { languages } : {}),
732
+ ...(memoryClasses.length > 0 ? { memoryClasses } : {}),
733
+ ...(tiers.length > 0 ? { tiers } : {}),
734
+ ...(url.searchParams.get('search') === null ? {} : { search: url.searchParams.get('search') ?? '' }),
735
+ ...(cursor === null ? {} : { cursor }),
736
+ allWorkspaces: workspaceParam === null || workspaceParam === 'all' || workspaces.length > 0,
737
+ skillReadyOnly,
738
+ includeGlobalized,
739
+ limit: Math.min(limitQuery(url.searchParams.get('limit')), 50),
740
+ };
741
+ const result = await curateMemoryCandidates(context.database, input);
742
+ jsonResponse(response, 200, result);
743
+ return;
744
+ }
745
+ if (request.method === 'GET' && url.pathname === '/api/curator/facets') {
746
+ const workspaceParam = url.searchParams.get('workspace');
747
+ const projects = listQuery(url, 'project');
748
+ const includeGlobalized = booleanQuery(url.searchParams.get('includeGlobalized'), 'includeGlobalized') ?? false;
749
+ jsonResponse(response, 200, {
750
+ facets: curatorFacets(context.database, {
751
+ ...(workspaceParam !== null && workspaceParam !== 'all' ? { workspace: requireWorkspace(workspaceParam) } : {}),
752
+ ...(projects.length > 0 ? { workspaces: projects } : {}),
753
+ includeGlobalized,
754
+ })
755
+ });
756
+ return;
757
+ }
758
+ if (request.method === 'POST' && url.pathname === '/api/curator/globalize') {
759
+ const payload = await readJsonBody(request);
760
+ requireOnlyJsonFields(payload, ['workspace', 'entryId', 'expectedRevision', 'actor'], 'Curator globalize request');
761
+ const workspace = requireWorkspace(url.searchParams.get('workspace') ?? (typeof payload.workspace === 'string' ? payload.workspace : ''));
762
+ const result = await context.enqueueWrite(() => globalizeCuratorCandidate(context.database, {
763
+ workspace,
764
+ entryId: payload.entryId,
765
+ expectedRevision: payload.expectedRevision,
766
+ ...(typeof payload.actor === 'string' ? { actor: payload.actor } : {}),
767
+ }));
768
+ jsonResponse(response, 200, result);
769
+ return;
770
+ }
771
+ if (request.method === 'GET' && url.pathname === '/api/entries') {
772
+ const workspace = requireWorkspace(url.searchParams.get('workspace') ?? '');
773
+ const kind = enumQuery(url.searchParams.get('kind'), ENTRY_KINDS, 'kind');
774
+ const status = enumQuery(url.searchParams.get('status'), ENTRY_STATUSES, 'status');
775
+ const tagValue = url.searchParams.get('tag');
776
+ const tag = tagValue === null || tagValue.trim().length === 0 ? undefined : tagValue;
777
+ const includeSuperseded = booleanQuery(url.searchParams.get('includeSuperseded'), 'includeSuperseded') ?? false;
778
+ const result = await listEntries(context.database, workspace, url.searchParams.get('q') ?? '', kind, status, tag, includeSuperseded, limitQuery(url.searchParams.get('limit')));
779
+ jsonResponse(response, 200, { workspace, entries: result.entries, count: result.count });
780
+ return;
781
+ }
782
+ if ((request.method === 'GET' || request.method === 'PUT') && url.pathname.startsWith('/api/entries/')) {
783
+ const workspace = requireWorkspace(url.searchParams.get('workspace') ?? '');
784
+ const entryId = entryIdFromPath(url.pathname);
785
+ if (request.method === 'GET') {
786
+ const entry = await readEntry(context.database, { workspace, entryId });
787
+ jsonResponse(response, 200, { entry });
788
+ return;
789
+ }
790
+ const payload = await readJsonBody(request);
791
+ requireOnlyJsonFields(payload, ['expectedRevision', 'kind', 'title', 'body', 'summary', 'scope', 'provenance', 'tags', 'actor'], 'Entry update request');
792
+ const expectedRevision = payload.expectedRevision;
793
+ const input = {
794
+ workspace,
795
+ entryId,
796
+ expectedRevision: expectedRevision,
797
+ kind: payload.kind,
798
+ title: payload.title,
799
+ body: payload.body,
800
+ };
801
+ if ('summary' in payload)
802
+ input.summary = payload.summary;
803
+ if ('scope' in payload)
804
+ input.scope = payload.scope;
805
+ if ('provenance' in payload)
806
+ input.provenance = payload.provenance;
807
+ if ('tags' in payload)
808
+ input.tags = payload.tags;
809
+ if ('actor' in payload)
810
+ input.actor = payload.actor;
811
+ const entry = await context.enqueueWrite(() => updateCandidateEntry(context.database, input));
812
+ jsonResponse(response, 200, { entry });
813
+ return;
814
+ }
815
+ throw new KiokukoError('NOT_FOUND', 'Endpoint not found');
816
+ }
817
+ function isSharedServerPath(pathname) {
818
+ return pathname.startsWith('/health/') || pathname === '/api/v1' || pathname.startsWith('/api/v1/');
819
+ }
820
+ function createWebApplication(context, trustedOrigin) {
821
+ const sharedApplication = context.createAuthenticatedApp(createAgentV1Handler(context));
822
+ const sessionToken = randomBytes(32).toString('base64url');
823
+ const externalSkillRefreshFlights = {
824
+ database: context.database,
825
+ operations: new Map(),
826
+ };
827
+ return (request, response) => {
828
+ try {
829
+ requireTrustedWebOrigin(request, trustedOrigin());
830
+ }
831
+ catch (error) {
832
+ jsonResponse(response, errorStatus(error), errorBody(error));
833
+ return;
834
+ }
835
+ const pathname = new URL(request.url ?? '/', 'http://127.0.0.1').pathname;
836
+ if (isSharedServerPath(pathname)) {
837
+ sharedApplication(request, response);
838
+ return;
839
+ }
840
+ void handleRequest(request, response, context, sessionToken, externalSkillRefreshFlights).catch((error) => {
841
+ if (!response.headersSent)
842
+ jsonResponse(response, errorStatus(error), errorBody(error));
843
+ else
844
+ response.destroy();
845
+ });
846
+ };
847
+ }
848
+ export async function startWebServer(options = {}) {
849
+ let trustedOrigin;
850
+ const runtime = await startHttpServer({
851
+ ...(options.httpOptions ?? {}),
852
+ ...(options.databasePath === undefined ? {} : { databasePath: options.databasePath }),
853
+ host: options.host ?? DEFAULT_HOST,
854
+ port: options.port ?? DEFAULT_PORT,
855
+ applicationFactory: (context) => createWebApplication(context, () => trustedOrigin),
856
+ });
857
+ trustedOrigin = new URL(runtime.url).origin;
858
+ return {
859
+ server: runtime.server,
860
+ url: runtime.url,
861
+ close: () => runtime.close(),
862
+ };
863
+ }
864
+ //# sourceMappingURL=server.js.map