@askdkc/kiokuko 0.1.17 → 0.1.19

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 (534) hide show
  1. package/README.ja.md +91 -112
  2. package/README.ko.md +90 -102
  3. package/README.md +103 -262
  4. package/README.zh-CN.md +88 -102
  5. package/dist/agent-file/atomic-write.d.ts +90 -3
  6. package/dist/agent-file/atomic-write.d.ts.map +1 -1
  7. package/dist/agent-file/atomic-write.js +990 -14
  8. package/dist/agent-file/atomic-write.js.map +1 -1
  9. package/dist/agent-file/managed-block.d.ts +12 -1
  10. package/dist/agent-file/managed-block.d.ts.map +1 -1
  11. package/dist/agent-file/managed-block.js +49 -4
  12. package/dist/agent-file/managed-block.js.map +1 -1
  13. package/dist/agent-file/render.d.ts +1 -1
  14. package/dist/agent-file/render.d.ts.map +1 -1
  15. package/dist/agent-file/render.js +10 -7
  16. package/dist/agent-file/render.js.map +1 -1
  17. package/dist/akinator/agent-task.d.ts +11 -22
  18. package/dist/akinator/agent-task.d.ts.map +1 -1
  19. package/dist/akinator/agent-task.js +454 -99
  20. package/dist/akinator/agent-task.js.map +1 -1
  21. package/dist/akinator/capabilities.d.ts +18 -6
  22. package/dist/akinator/capabilities.d.ts.map +1 -1
  23. package/dist/akinator/capabilities.js +72 -35
  24. package/dist/akinator/capabilities.js.map +1 -1
  25. package/dist/akinator/capability-binding.d.ts +11 -0
  26. package/dist/akinator/capability-binding.d.ts.map +1 -0
  27. package/dist/akinator/capability-binding.js +56 -0
  28. package/dist/akinator/capability-binding.js.map +1 -0
  29. package/dist/akinator/domain.js +2 -2
  30. package/dist/akinator/domain.js.map +1 -1
  31. package/dist/akinator/knowledge-path.d.ts.map +1 -1
  32. package/dist/akinator/knowledge-path.js +409 -39
  33. package/dist/akinator/knowledge-path.js.map +1 -1
  34. package/dist/akinator/orchestrator.d.ts +3 -4
  35. package/dist/akinator/orchestrator.d.ts.map +1 -1
  36. package/dist/akinator/orchestrator.js +1 -4
  37. package/dist/akinator/orchestrator.js.map +1 -1
  38. package/dist/akinator/service.d.ts +0 -4
  39. package/dist/akinator/service.d.ts.map +1 -1
  40. package/dist/akinator/service.js +19 -35
  41. package/dist/akinator/service.js.map +1 -1
  42. package/dist/akinator/skill-discovery-attempt.d.ts +20 -0
  43. package/dist/akinator/skill-discovery-attempt.d.ts.map +1 -0
  44. package/dist/akinator/skill-discovery-attempt.js +390 -0
  45. package/dist/akinator/skill-discovery-attempt.js.map +1 -0
  46. package/dist/akinator/store.d.ts.map +1 -1
  47. package/dist/akinator/store.js +107 -52
  48. package/dist/akinator/store.js.map +1 -1
  49. package/dist/akinator/types.d.ts +0 -12
  50. package/dist/akinator/types.d.ts.map +1 -1
  51. package/dist/bin/kiokuko.js +0 -0
  52. package/dist/cli.d.ts +2 -0
  53. package/dist/cli.d.ts.map +1 -1
  54. package/dist/cli.js +534 -148
  55. package/dist/cli.js.map +1 -1
  56. package/dist/client/server-client.d.ts +5 -3
  57. package/dist/client/server-client.d.ts.map +1 -1
  58. package/dist/client/server-client.js +486 -181
  59. package/dist/client/server-client.js.map +1 -1
  60. package/dist/commands/agent.d.ts +2 -0
  61. package/dist/commands/agent.d.ts.map +1 -1
  62. package/dist/commands/agent.js +861 -86
  63. package/dist/commands/agent.js.map +1 -1
  64. package/dist/commands/backup.d.ts +2 -1
  65. package/dist/commands/backup.d.ts.map +1 -1
  66. package/dist/commands/backup.js +64 -8
  67. package/dist/commands/backup.js.map +1 -1
  68. package/dist/commands/doctor.d.ts +5 -1
  69. package/dist/commands/doctor.d.ts.map +1 -1
  70. package/dist/commands/doctor.js +70 -26
  71. package/dist/commands/doctor.js.map +1 -1
  72. package/dist/commands/export.d.ts +0 -4
  73. package/dist/commands/export.d.ts.map +1 -1
  74. package/dist/commands/export.js +191 -32
  75. package/dist/commands/export.js.map +1 -1
  76. package/dist/commands/import.d.ts +10 -1
  77. package/dist/commands/import.d.ts.map +1 -1
  78. package/dist/commands/import.js +592 -113
  79. package/dist/commands/import.js.map +1 -1
  80. package/dist/commands/init.d.ts +19 -1
  81. package/dist/commands/init.d.ts.map +1 -1
  82. package/dist/commands/init.js +569 -22
  83. package/dist/commands/init.js.map +1 -1
  84. package/dist/commands/purge.d.ts.map +1 -1
  85. package/dist/commands/purge.js +3 -0
  86. package/dist/commands/purge.js.map +1 -1
  87. package/dist/commands/setup.d.ts +34 -8
  88. package/dist/commands/setup.d.ts.map +1 -1
  89. package/dist/commands/setup.js +418 -86
  90. package/dist/commands/setup.js.map +1 -1
  91. package/dist/commands/skills.d.ts +9 -0
  92. package/dist/commands/skills.d.ts.map +1 -0
  93. package/dist/commands/skills.js +317 -0
  94. package/dist/commands/skills.js.map +1 -0
  95. package/dist/commands/use.d.ts +10 -2
  96. package/dist/commands/use.d.ts.map +1 -1
  97. package/dist/commands/use.js +851 -73
  98. package/dist/commands/use.js.map +1 -1
  99. package/dist/config/paths.d.ts +11 -1
  100. package/dist/config/paths.d.ts.map +1 -1
  101. package/dist/config/paths.js +64 -29
  102. package/dist/config/paths.js.map +1 -1
  103. package/dist/config/project-config.d.ts +1 -0
  104. package/dist/config/project-config.d.ts.map +1 -1
  105. package/dist/config/project-config.js +70 -32
  106. package/dist/config/project-config.js.map +1 -1
  107. package/dist/context/broker.d.ts +28 -14
  108. package/dist/context/broker.d.ts.map +1 -1
  109. package/dist/context/broker.js +604 -145
  110. package/dist/context/broker.js.map +1 -1
  111. package/dist/context/delivery.d.ts +6 -21
  112. package/dist/context/delivery.d.ts.map +1 -1
  113. package/dist/context/delivery.js +196 -147
  114. package/dist/context/delivery.js.map +1 -1
  115. package/dist/context/feedback.d.ts +11 -12
  116. package/dist/context/feedback.d.ts.map +1 -1
  117. package/dist/context/feedback.js +229 -261
  118. package/dist/context/feedback.js.map +1 -1
  119. package/dist/context/ranking.d.ts +1 -12
  120. package/dist/context/ranking.d.ts.map +1 -1
  121. package/dist/context/ranking.js +13 -4
  122. package/dist/context/ranking.js.map +1 -1
  123. package/dist/context/recommendations.d.ts +0 -5
  124. package/dist/context/recommendations.d.ts.map +1 -1
  125. package/dist/context/recommendations.js +0 -1
  126. package/dist/context/recommendations.js.map +1 -1
  127. package/dist/context/run-state.d.ts +26 -0
  128. package/dist/context/run-state.d.ts.map +1 -0
  129. package/dist/context/run-state.js +399 -0
  130. package/dist/context/run-state.js.map +1 -0
  131. package/dist/context/scoped-broker.d.ts +17 -5
  132. package/dist/context/scoped-broker.d.ts.map +1 -1
  133. package/dist/context/scoped-broker.js +512 -106
  134. package/dist/context/scoped-broker.js.map +1 -1
  135. package/dist/context/selection-state.d.ts +19 -0
  136. package/dist/context/selection-state.d.ts.map +1 -0
  137. package/dist/context/selection-state.js +250 -0
  138. package/dist/context/selection-state.js.map +1 -0
  139. package/dist/db/adapter.d.ts +5 -3
  140. package/dist/db/adapter.d.ts.map +1 -1
  141. package/dist/db/adapter.js +6 -3
  142. package/dist/db/adapter.js.map +1 -1
  143. package/dist/db/capabilities.d.ts.map +1 -1
  144. package/dist/db/capabilities.js +34 -16
  145. package/dist/db/capabilities.js.map +1 -1
  146. package/dist/db/connection.d.ts +8 -0
  147. package/dist/db/connection.d.ts.map +1 -1
  148. package/dist/db/connection.js +55 -26
  149. package/dist/db/connection.js.map +1 -1
  150. package/dist/db/migrate.d.ts +28 -7
  151. package/dist/db/migrate.d.ts.map +1 -1
  152. package/dist/db/migrate.js +106 -78
  153. package/dist/db/migrate.js.map +1 -1
  154. package/dist/db/sqlite-retry.d.ts +11 -0
  155. package/dist/db/sqlite-retry.d.ts.map +1 -0
  156. package/dist/db/sqlite-retry.js +66 -0
  157. package/dist/db/sqlite-retry.js.map +1 -0
  158. package/dist/db/transaction.d.ts +13 -0
  159. package/dist/db/transaction.d.ts.map +1 -1
  160. package/dist/db/transaction.js +53 -24
  161. package/dist/db/transaction.js.map +1 -1
  162. package/dist/db/upgrade-backup.d.ts +58 -2
  163. package/dist/db/upgrade-backup.d.ts.map +1 -1
  164. package/dist/db/upgrade-backup.js +757 -28
  165. package/dist/db/upgrade-backup.js.map +1 -1
  166. package/dist/errors.js +1 -1
  167. package/dist/errors.js.map +1 -1
  168. package/dist/gateway/agent-service.d.ts +4 -1
  169. package/dist/gateway/agent-service.d.ts.map +1 -1
  170. package/dist/gateway/agent-service.js +71 -58
  171. package/dist/gateway/agent-service.js.map +1 -1
  172. package/dist/gateway/checkpoint-service.d.ts +1 -0
  173. package/dist/gateway/checkpoint-service.d.ts.map +1 -1
  174. package/dist/gateway/checkpoint-service.js +47 -24
  175. package/dist/gateway/checkpoint-service.js.map +1 -1
  176. package/dist/ledger/archive.d.ts +1 -4
  177. package/dist/ledger/archive.d.ts.map +1 -1
  178. package/dist/ledger/archive.js +77 -39
  179. package/dist/ledger/archive.js.map +1 -1
  180. package/dist/ledger/maintenance.d.ts +0 -11
  181. package/dist/ledger/maintenance.d.ts.map +1 -1
  182. package/dist/ledger/maintenance.js +24 -40
  183. package/dist/ledger/maintenance.js.map +1 -1
  184. package/dist/ledger/projection.d.ts +0 -1
  185. package/dist/ledger/projection.d.ts.map +1 -1
  186. package/dist/ledger/projection.js.map +1 -1
  187. package/dist/ledger/promotion.d.ts +0 -9
  188. package/dist/ledger/promotion.d.ts.map +1 -1
  189. package/dist/ledger/promotion.js.map +1 -1
  190. package/dist/ledger/query.d.ts +1 -15
  191. package/dist/ledger/query.d.ts.map +1 -1
  192. package/dist/ledger/query.js.map +1 -1
  193. package/dist/ledger/store.d.ts +0 -1
  194. package/dist/ledger/store.d.ts.map +1 -1
  195. package/dist/ledger/store.js +11 -8
  196. package/dist/ledger/store.js.map +1 -1
  197. package/dist/ledger/types.d.ts +0 -4
  198. package/dist/ledger/types.d.ts.map +1 -1
  199. package/dist/ledger/types.js.map +1 -1
  200. package/dist/ledger/validate.d.ts.map +1 -1
  201. package/dist/ledger/validate.js +0 -5
  202. package/dist/ledger/validate.js.map +1 -1
  203. package/dist/mcp/server.d.ts +4 -0
  204. package/dist/mcp/server.d.ts.map +1 -1
  205. package/dist/mcp/server.js +105 -54
  206. package/dist/mcp/server.js.map +1 -1
  207. package/dist/memory/audit.d.ts +0 -1
  208. package/dist/memory/audit.d.ts.map +1 -1
  209. package/dist/memory/audit.js +0 -1
  210. package/dist/memory/audit.js.map +1 -1
  211. package/dist/memory/curator.d.ts.map +1 -1
  212. package/dist/memory/curator.js +172 -96
  213. package/dist/memory/curator.js.map +1 -1
  214. package/dist/memory/entries.d.ts +12 -2
  215. package/dist/memory/entries.d.ts.map +1 -1
  216. package/dist/memory/entries.js +198 -114
  217. package/dist/memory/entries.js.map +1 -1
  218. package/dist/memory/federated-retrieval.d.ts +12 -1
  219. package/dist/memory/federated-retrieval.d.ts.map +1 -1
  220. package/dist/memory/federated-retrieval.js +183 -70
  221. package/dist/memory/federated-retrieval.js.map +1 -1
  222. package/dist/memory/hybrid-retrieval.d.ts +5 -11
  223. package/dist/memory/hybrid-retrieval.d.ts.map +1 -1
  224. package/dist/memory/hybrid-retrieval.js +78 -58
  225. package/dist/memory/hybrid-retrieval.js.map +1 -1
  226. package/dist/memory/lifecycle.d.ts.map +1 -1
  227. package/dist/memory/lifecycle.js +17 -13
  228. package/dist/memory/lifecycle.js.map +1 -1
  229. package/dist/memory/rebuild-search.d.ts +5 -0
  230. package/dist/memory/rebuild-search.d.ts.map +1 -1
  231. package/dist/memory/rebuild-search.js +101 -76
  232. package/dist/memory/rebuild-search.js.map +1 -1
  233. package/dist/memory/retrieval-query.d.ts +0 -5
  234. package/dist/memory/retrieval-query.d.ts.map +1 -1
  235. package/dist/memory/retrieval-query.js +0 -5
  236. package/dist/memory/retrieval-query.js.map +1 -1
  237. package/dist/memory/retrieval.d.ts.map +1 -1
  238. package/dist/memory/retrieval.js +25 -131
  239. package/dist/memory/retrieval.js.map +1 -1
  240. package/dist/memory/revisions.d.ts +76 -1
  241. package/dist/memory/revisions.d.ts.map +1 -1
  242. package/dist/memory/revisions.js +539 -35
  243. package/dist/memory/revisions.js.map +1 -1
  244. package/dist/memory/scoped-memory.d.ts +16 -1
  245. package/dist/memory/scoped-memory.d.ts.map +1 -1
  246. package/dist/memory/scoped-memory.js +240 -107
  247. package/dist/memory/scoped-memory.js.map +1 -1
  248. package/dist/memory/secrets.d.ts +2 -0
  249. package/dist/memory/secrets.d.ts.map +1 -1
  250. package/dist/memory/secrets.js +36 -0
  251. package/dist/memory/secrets.js.map +1 -1
  252. package/dist/memory/structured-memory.d.ts +3 -2
  253. package/dist/memory/structured-memory.d.ts.map +1 -1
  254. package/dist/memory/structured-memory.js +54 -22
  255. package/dist/memory/structured-memory.js.map +1 -1
  256. package/dist/memory/workspaces.d.ts +9 -0
  257. package/dist/memory/workspaces.d.ts.map +1 -1
  258. package/dist/memory/workspaces.js +67 -0
  259. package/dist/memory/workspaces.js.map +1 -1
  260. package/dist/package-version.d.ts +2 -0
  261. package/dist/package-version.d.ts.map +1 -0
  262. package/dist/package-version.js +7 -0
  263. package/dist/package-version.js.map +1 -0
  264. package/dist/repository/binding.d.ts +5 -0
  265. package/dist/repository/binding.d.ts.map +1 -1
  266. package/dist/repository/binding.js +117 -17
  267. package/dist/repository/binding.js.map +1 -1
  268. package/dist/repository/framework-version.d.ts +8 -0
  269. package/dist/repository/framework-version.d.ts.map +1 -0
  270. package/dist/repository/framework-version.js +29 -0
  271. package/dist/repository/framework-version.js.map +1 -0
  272. package/dist/repository/identity-value.d.ts +4 -0
  273. package/dist/repository/identity-value.d.ts.map +1 -0
  274. package/dist/repository/identity-value.js +24 -0
  275. package/dist/repository/identity-value.js.map +1 -0
  276. package/dist/repository/identity.d.ts.map +1 -1
  277. package/dist/repository/identity.js +2 -0
  278. package/dist/repository/identity.js.map +1 -1
  279. package/dist/repository/project-fingerprint.d.ts +14 -2
  280. package/dist/repository/project-fingerprint.d.ts.map +1 -1
  281. package/dist/repository/project-fingerprint.js +312 -33
  282. package/dist/repository/project-fingerprint.js.map +1 -1
  283. package/dist/repository/remote-url.d.ts +0 -1
  284. package/dist/repository/remote-url.d.ts.map +1 -1
  285. package/dist/repository/remote-url.js +0 -1
  286. package/dist/repository/remote-url.js.map +1 -1
  287. package/dist/runtime-version.d.ts +2 -1
  288. package/dist/runtime-version.d.ts.map +1 -1
  289. package/dist/runtime-version.js +21 -4
  290. package/dist/runtime-version.js.map +1 -1
  291. package/dist/serialization/boundary-json.d.ts +20 -0
  292. package/dist/serialization/boundary-json.d.ts.map +1 -0
  293. package/dist/serialization/boundary-json.js +129 -0
  294. package/dist/serialization/boundary-json.js.map +1 -0
  295. package/dist/serialization/envelope.js +1 -1
  296. package/dist/serialization/envelope.js.map +1 -1
  297. package/dist/serialization/validate.d.ts +7 -0
  298. package/dist/serialization/validate.d.ts.map +1 -1
  299. package/dist/serialization/validate.js +53 -13
  300. package/dist/serialization/validate.js.map +1 -1
  301. package/dist/server/app.js +1 -1
  302. package/dist/server/app.js.map +1 -1
  303. package/dist/server/http.d.ts +4 -3
  304. package/dist/server/http.d.ts.map +1 -1
  305. package/dist/server/http.js +90 -50
  306. package/dist/server/http.js.map +1 -1
  307. package/dist/server/idempotency.d.ts +0 -6
  308. package/dist/server/idempotency.d.ts.map +1 -1
  309. package/dist/server/idempotency.js.map +1 -1
  310. package/dist/server/router.d.ts.map +1 -1
  311. package/dist/server/router.js +21 -4
  312. package/dist/server/router.js.map +1 -1
  313. package/dist/server/routes/agent-capability-gate.d.ts +40 -0
  314. package/dist/server/routes/agent-capability-gate.d.ts.map +1 -0
  315. package/dist/server/routes/agent-capability-gate.js +182 -0
  316. package/dist/server/routes/agent-capability-gate.js.map +1 -0
  317. package/dist/server/routes/agent-events.d.ts.map +1 -1
  318. package/dist/server/routes/agent-events.js +8 -1
  319. package/dist/server/routes/agent-events.js.map +1 -1
  320. package/dist/server/routes/agent-intake.d.ts.map +1 -1
  321. package/dist/server/routes/agent-intake.js +10 -2
  322. package/dist/server/routes/agent-intake.js.map +1 -1
  323. package/dist/server/routes/agent-promotions.d.ts.map +1 -1
  324. package/dist/server/routes/agent-promotions.js +5 -2
  325. package/dist/server/routes/agent-promotions.js.map +1 -1
  326. package/dist/server/routes/agent-runs.d.ts.map +1 -1
  327. package/dist/server/routes/agent-runs.js +18 -4
  328. package/dist/server/routes/agent-runs.js.map +1 -1
  329. package/dist/server/routes/request-binding.d.ts +5 -0
  330. package/dist/server/routes/request-binding.d.ts.map +1 -0
  331. package/dist/server/routes/request-binding.js +49 -0
  332. package/dist/server/routes/request-binding.js.map +1 -0
  333. package/dist/server/routes/task5-support.d.ts +1 -8
  334. package/dist/server/routes/task5-support.d.ts.map +1 -1
  335. package/dist/server/routes/task5-support.js +1 -17
  336. package/dist/server/routes/task5-support.js.map +1 -1
  337. package/dist/server/routes/task5.d.ts.map +1 -1
  338. package/dist/server/routes/task5.js +106 -36
  339. package/dist/server/routes/task5.js.map +1 -1
  340. package/dist/server/write-queue.js +2 -2
  341. package/dist/server/write-queue.js.map +1 -1
  342. package/dist/setup/claude-config.d.ts +2 -1
  343. package/dist/setup/claude-config.d.ts.map +1 -1
  344. package/dist/setup/claude-config.js +54 -4
  345. package/dist/setup/claude-config.js.map +1 -1
  346. package/dist/setup/client-detection.d.ts +7 -2
  347. package/dist/setup/client-detection.d.ts.map +1 -1
  348. package/dist/setup/client-detection.js +27 -9
  349. package/dist/setup/client-detection.js.map +1 -1
  350. package/dist/setup/hermes-config.d.ts +2 -1
  351. package/dist/setup/hermes-config.d.ts.map +1 -1
  352. package/dist/setup/hermes-config.js +53 -12
  353. package/dist/setup/hermes-config.js.map +1 -1
  354. package/dist/setup/legacy-client-cleanup.d.ts +6 -0
  355. package/dist/setup/legacy-client-cleanup.d.ts.map +1 -0
  356. package/dist/setup/legacy-client-cleanup.js +152 -0
  357. package/dist/setup/legacy-client-cleanup.js.map +1 -0
  358. package/dist/setup/managed-text.d.ts.map +1 -1
  359. package/dist/setup/managed-text.js +11 -1
  360. package/dist/setup/managed-text.js.map +1 -1
  361. package/dist/setup/opencode-config.d.ts +2 -1
  362. package/dist/setup/opencode-config.d.ts.map +1 -1
  363. package/dist/setup/opencode-config.js +57 -5
  364. package/dist/setup/opencode-config.js.map +1 -1
  365. package/dist/setup/render.d.ts +2 -1
  366. package/dist/setup/render.d.ts.map +1 -1
  367. package/dist/setup/render.js +91 -17
  368. package/dist/setup/render.js.map +1 -1
  369. package/dist/setup/standard-skills.d.ts +16 -2
  370. package/dist/setup/standard-skills.d.ts.map +1 -1
  371. package/dist/setup/standard-skills.js +37 -13
  372. package/dist/setup/standard-skills.js.map +1 -1
  373. package/dist/setup/strict-json.d.ts +7 -0
  374. package/dist/setup/strict-json.d.ts.map +1 -0
  375. package/dist/setup/strict-json.js +98 -0
  376. package/dist/setup/strict-json.js.map +1 -0
  377. package/dist/setup/strict-toml.d.ts +7 -0
  378. package/dist/setup/strict-toml.d.ts.map +1 -0
  379. package/dist/setup/strict-toml.js +470 -0
  380. package/dist/setup/strict-toml.js.map +1 -0
  381. package/dist/skills/cache.d.ts +15 -0
  382. package/dist/skills/cache.d.ts.map +1 -0
  383. package/dist/skills/cache.js +19 -0
  384. package/dist/skills/cache.js.map +1 -0
  385. package/dist/skills/candidate-ranking.d.ts +15 -0
  386. package/dist/skills/candidate-ranking.d.ts.map +1 -0
  387. package/dist/skills/candidate-ranking.js +52 -0
  388. package/dist/skills/candidate-ranking.js.map +1 -0
  389. package/dist/skills/chunking.d.ts +11 -0
  390. package/dist/skills/chunking.d.ts.map +1 -0
  391. package/dist/skills/chunking.js +291 -0
  392. package/dist/skills/chunking.js.map +1 -0
  393. package/dist/skills/config.d.ts +19 -0
  394. package/dist/skills/config.d.ts.map +1 -0
  395. package/dist/skills/config.js +103 -0
  396. package/dist/skills/config.js.map +1 -0
  397. package/dist/skills/discovery-service.d.ts +26 -0
  398. package/dist/skills/discovery-service.d.ts.map +1 -0
  399. package/dist/skills/discovery-service.js +921 -0
  400. package/dist/skills/discovery-service.js.map +1 -0
  401. package/dist/skills/external-transport.d.ts +2 -0
  402. package/dist/skills/external-transport.d.ts.map +1 -0
  403. package/dist/skills/external-transport.js +30 -0
  404. package/dist/skills/external-transport.js.map +1 -0
  405. package/dist/skills/find.d.ts +16 -0
  406. package/dist/skills/find.d.ts.map +1 -0
  407. package/dist/skills/find.js +58 -0
  408. package/dist/skills/find.js.map +1 -0
  409. package/dist/skills/gap-detection.d.ts +23 -0
  410. package/dist/skills/gap-detection.d.ts.map +1 -0
  411. package/dist/skills/gap-detection.js +62 -0
  412. package/dist/skills/gap-detection.js.map +1 -0
  413. package/dist/skills/import-preparation.d.ts +4 -0
  414. package/dist/skills/import-preparation.d.ts.map +1 -0
  415. package/dist/skills/import-preparation.js +20 -0
  416. package/dist/skills/import-preparation.js.map +1 -0
  417. package/dist/skills/materialization-authority.d.ts +11 -0
  418. package/dist/skills/materialization-authority.d.ts.map +1 -0
  419. package/dist/skills/materialization-authority.js +92 -0
  420. package/dist/skills/materialization-authority.js.map +1 -0
  421. package/dist/skills/materialization-service.d.ts +22 -0
  422. package/dist/skills/materialization-service.d.ts.map +1 -0
  423. package/dist/skills/materialization-service.js +101 -0
  424. package/dist/skills/materialization-service.js.map +1 -0
  425. package/dist/skills/official-catalog.d.ts +31 -0
  426. package/dist/skills/official-catalog.d.ts.map +1 -0
  427. package/dist/skills/official-catalog.js +110 -0
  428. package/dist/skills/official-catalog.js.map +1 -0
  429. package/dist/skills/providers/schema.d.ts +30 -0
  430. package/dist/skills/providers/schema.d.ts.map +1 -0
  431. package/dist/skills/providers/schema.js +354 -0
  432. package/dist/skills/providers/schema.js.map +1 -0
  433. package/dist/skills/providers/skills-sh-compat.d.ts +17 -0
  434. package/dist/skills/providers/skills-sh-compat.d.ts.map +1 -0
  435. package/dist/skills/providers/skills-sh-compat.js +71 -0
  436. package/dist/skills/providers/skills-sh-compat.js.map +1 -0
  437. package/dist/skills/providers/skills-sh-v1.d.ts +23 -0
  438. package/dist/skills/providers/skills-sh-v1.d.ts.map +1 -0
  439. package/dist/skills/providers/skills-sh-v1.js +134 -0
  440. package/dist/skills/providers/skills-sh-v1.js.map +1 -0
  441. package/dist/skills/query-builder.d.ts +18 -0
  442. package/dist/skills/query-builder.d.ts.map +1 -0
  443. package/dist/skills/query-builder.js +93 -0
  444. package/dist/skills/query-builder.js.map +1 -0
  445. package/dist/skills/source/errors.d.ts +9 -0
  446. package/dist/skills/source/errors.d.ts.map +1 -0
  447. package/dist/skills/source/errors.js +15 -0
  448. package/dist/skills/source/errors.js.map +1 -0
  449. package/dist/skills/source/frontmatter.d.ts +9 -0
  450. package/dist/skills/source/frontmatter.d.ts.map +1 -0
  451. package/dist/skills/source/frontmatter.js +77 -0
  452. package/dist/skills/source/frontmatter.js.map +1 -0
  453. package/dist/skills/source/github-fetcher.d.ts +20 -0
  454. package/dist/skills/source/github-fetcher.d.ts.map +1 -0
  455. package/dist/skills/source/github-fetcher.js +292 -0
  456. package/dist/skills/source/github-fetcher.js.map +1 -0
  457. package/dist/skills/source/snapshot-validator.d.ts +28 -0
  458. package/dist/skills/source/snapshot-validator.d.ts.map +1 -0
  459. package/dist/skills/source/snapshot-validator.js +186 -0
  460. package/dist/skills/source/snapshot-validator.js.map +1 -0
  461. package/dist/skills/store.d.ts +181 -0
  462. package/dist/skills/store.d.ts.map +1 -0
  463. package/dist/skills/store.js +1710 -0
  464. package/dist/skills/store.js.map +1 -0
  465. package/dist/skills/types.d.ts +169 -0
  466. package/dist/skills/types.d.ts.map +1 -0
  467. package/dist/skills/types.js +2 -0
  468. package/dist/skills/types.js.map +1 -0
  469. package/dist/web/i18n.d.ts +32 -0
  470. package/dist/web/i18n.d.ts.map +1 -1
  471. package/dist/web/i18n.js +128 -0
  472. package/dist/web/i18n.js.map +1 -1
  473. package/dist/web/server.d.ts.map +1 -1
  474. package/dist/web/server.js +386 -38
  475. package/dist/web/server.js.map +1 -1
  476. package/dist/web/ui.d.ts +4 -0
  477. package/dist/web/ui.d.ts.map +1 -1
  478. package/dist/web/ui.js +382 -6
  479. package/dist/web/ui.js.map +1 -1
  480. package/migrations/009_external_skill_discovery.sql +126 -0
  481. package/package.json +4 -3
  482. package/skills/kiokuko-single-purpose-functions/SKILL.md +288 -0
  483. package/skills/kiokuko-single-purpose-functions/references/kiokuko-patterns.md +344 -0
  484. package/skills/kiokuko-single-purpose-functions/references/review-checklist.md +97 -0
  485. package/skills/kiokuko-ui-design-soul/SKILL.md +1186 -28
  486. package/templates/AGENTS.md +8 -7
  487. package/dist/client/runtime-discovery.d.ts +0 -15
  488. package/dist/client/runtime-discovery.d.ts.map +0 -1
  489. package/dist/client/runtime-discovery.js +0 -45
  490. package/dist/client/runtime-discovery.js.map +0 -1
  491. package/dist/commands/call.d.ts +0 -7
  492. package/dist/commands/call.d.ts.map +0 -1
  493. package/dist/commands/call.js +0 -10
  494. package/dist/commands/call.js.map +0 -1
  495. package/dist/commands/link.d.ts +0 -6
  496. package/dist/commands/link.d.ts.map +0 -1
  497. package/dist/commands/link.js +0 -6
  498. package/dist/commands/link.js.map +0 -1
  499. package/dist/commands/promote.d.ts +0 -6
  500. package/dist/commands/promote.d.ts.map +0 -1
  501. package/dist/commands/promote.js +0 -6
  502. package/dist/commands/promote.js.map +0 -1
  503. package/dist/commands/read.d.ts +0 -6
  504. package/dist/commands/read.d.ts.map +0 -1
  505. package/dist/commands/read.js +0 -4
  506. package/dist/commands/read.js.map +0 -1
  507. package/dist/commands/recall.d.ts +0 -6
  508. package/dist/commands/recall.d.ts.map +0 -1
  509. package/dist/commands/recall.js +0 -4
  510. package/dist/commands/recall.js.map +0 -1
  511. package/dist/commands/record.d.ts +0 -6
  512. package/dist/commands/record.d.ts.map +0 -1
  513. package/dist/commands/record.js +0 -4
  514. package/dist/commands/record.js.map +0 -1
  515. package/dist/commands/search.d.ts +0 -6
  516. package/dist/commands/search.d.ts.map +0 -1
  517. package/dist/commands/search.js +0 -4
  518. package/dist/commands/search.js.map +0 -1
  519. package/dist/commands/supersede.d.ts +0 -6
  520. package/dist/commands/supersede.d.ts.map +0 -1
  521. package/dist/commands/supersede.js +0 -6
  522. package/dist/commands/supersede.js.map +0 -1
  523. package/dist/knowledge/sources.d.ts +0 -72
  524. package/dist/knowledge/sources.d.ts.map +0 -1
  525. package/dist/knowledge/sources.js +0 -388
  526. package/dist/knowledge/sources.js.map +0 -1
  527. package/dist/setup/opencode-evidence.d.ts +0 -37
  528. package/dist/setup/opencode-evidence.d.ts.map +0 -1
  529. package/dist/setup/opencode-evidence.js +0 -58
  530. package/dist/setup/opencode-evidence.js.map +0 -1
  531. package/dist/setup/opencode-loop-guard.d.ts +0 -9
  532. package/dist/setup/opencode-loop-guard.d.ts.map +0 -1
  533. package/dist/setup/opencode-loop-guard.js +0 -248
  534. package/dist/setup/opencode-loop-guard.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/web/i18n.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/web/i18n.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AACA,OAAO,EAA8C,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAWzG,OAAO,EAAgD,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAiBzG,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,iBAAiB,EACjB,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,oBAAoB,CACvE,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AA2dD,wBAAsB,cAAc,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAa7F"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AACA,OAAO,EAA8C,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAYzG,OAAO,EAAgD,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAkCzG,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,iBAAiB,EACjB,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,oBAAoB,CACvE,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AA2zBD,wBAAsB,cAAc,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAe7F"}
@@ -1,8 +1,9 @@
1
1
  import { randomBytes } from 'node:crypto';
2
2
  import { KiokukoError } from '../errors.js';
3
+ import { rollbackFailedTransaction } from '../db/transaction.js';
3
4
  import { readEntry, updateCandidateEntry } from '../memory/entries.js';
4
5
  import { searchEntries } from '../memory/retrieval.js';
5
- import { ENTRY_KINDS, ENTRY_STATUSES, requireWorkspace } from '../serialization/validate.js';
6
+ import { compareCanonicalStrings, ENTRY_KINDS, ENTRY_STATUSES, requireWorkspace } from '../serialization/validate.js';
6
7
  import { AgentGatewayService } from '../gateway/agent-service.js';
7
8
  import { ContextBroker } from '../context/broker.js';
8
9
  import { listContextFeedback, listIntakeFeedback, listRunFeedback } from '../context/feedback.js';
@@ -15,10 +16,24 @@ import { curateMemoryCandidates, curatorFacets, globalizeCuratorCandidate } from
15
16
  import { MEMORY_CLASSES } from '../memory/structured-memory.js';
16
17
  import { GLOBAL_WORKSPACE } from '../memory/workspaces.js';
17
18
  import { recallScopedMemory } from '../memory/scoped-memory.js';
19
+ import { documentsFromSkillSnapshot } from '../skills/import-preparation.js';
20
+ import { readSkillDiscoveryConfig } from '../skills/config.js';
21
+ import { GitHubSkillSourceFetcher } from '../skills/source/github-fetcher.js';
22
+ import { SkillSourceError } from '../skills/source/errors.js';
23
+ import { externalSkillRequirement, externalSkillSourceFetchRequest, listExternalSkills, listExternalSkillsPage, markExternalSkillRefreshFailure, readExternalSkill, refreshExternalSkillSnapshot, setExternalSkillState } from '../skills/store.js';
24
+ import { createSkillRegistryProvider } from '../skills/find.js';
25
+ import { parseStrictJson } from '../setup/strict-json.js';
26
+ import { fetchMaterializableSkillSnapshot } from '../skills/materialization-service.js';
18
27
  const DEFAULT_HOST = '127.0.0.1';
19
28
  const DEFAULT_PORT = 4173;
20
29
  const MAX_BODY_BYTES = 2 * 1024 * 1024;
21
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
+ }
22
37
  function jsonResponse(response, status, value) {
23
38
  const body = JSON.stringify(value);
24
39
  response.writeHead(status, {
@@ -51,20 +66,22 @@ function cookieValue(request, name) {
51
66
  }
52
67
  return undefined;
53
68
  }
54
- function requireUiSession(request, sessionToken) {
55
- if (cookieValue(request, UI_SESSION_COOKIE) !== sessionToken) {
56
- throw new KiokukoError('AUTHENTICATION_ERROR', 'Authorization is invalid');
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');
57
76
  }
58
77
  const origin = request.headers.origin;
59
- const host = request.headers.host;
60
- const expectedOrigin = host === undefined ? undefined : `http://${host}`;
61
- if (origin !== undefined && (expectedOrigin === undefined || origin !== expectedOrigin)) {
78
+ if (origin !== undefined && origin !== trustedOrigin) {
62
79
  throw new KiokukoError('AUTHENTICATION_ERROR', 'Origin is invalid');
63
80
  }
64
81
  const referer = request.headers.referer;
65
82
  if (referer !== undefined) {
66
83
  try {
67
- if (expectedOrigin === undefined || new URL(referer).origin !== expectedOrigin)
84
+ if (new URL(referer).origin !== trustedOrigin)
68
85
  throw new Error('origin');
69
86
  }
70
87
  catch {
@@ -72,6 +89,11 @@ function requireUiSession(request, sessionToken) {
72
89
  }
73
90
  }
74
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
+ }
75
97
  function errorStatus(error) {
76
98
  if (!(error instanceof KiokukoError))
77
99
  return 500;
@@ -83,17 +105,48 @@ function errorStatus(error) {
83
105
  return 404;
84
106
  if (error.code === 'CONFLICT')
85
107
  return 409;
108
+ if (error.code === 'BACKPRESSURE')
109
+ return 429;
86
110
  if (error.code === 'SECURITY_REJECTION')
87
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;
88
116
  return 500;
89
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
+ }
90
123
  function errorBody(error) {
91
- if (error instanceof KiokukoError) {
92
- if (error.code === 'AUTHENTICATION_ERROR')
93
- return { error: { code: error.code, message: 'Authorization is invalid', details: {} } };
94
- return { error: { code: error.code, message: error.message, details: error.details } };
124
+ if (!(error instanceof KiokukoError)) {
125
+ return { error: { code: 'INTEGRITY_ERROR', message: 'Unexpected server error', details: {} } };
95
126
  }
96
- return { error: { code: 'DATABASE_ERROR', message: 'Unexpected server error', details: {} } };
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: {} } };
97
150
  }
98
151
  function asRecord(value, label) {
99
152
  if (typeof value !== 'object' || value === null || Array.isArray(value)) {
@@ -125,16 +178,104 @@ function limitQuery(value) {
125
178
  }
126
179
  return limit;
127
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
+ }
128
236
  function listQuery(url, name, max = 50) {
129
237
  const values = url.searchParams.getAll(name).map((value) => value.trim()).filter(Boolean);
130
238
  if (values.length > max || values.some((value) => value.length > 300))
131
239
  throw new KiokukoError('VALIDATION_ERROR', `${name} contains too many or too-large values`);
132
240
  return [...new Set(values)];
133
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
+ }
134
274
  async function readJsonBody(request) {
275
+ requireExactJsonMediaType(request);
135
276
  const chunks = [];
136
277
  let size = 0;
137
- const text = await new Promise((resolve, reject) => {
278
+ const bytes = await new Promise((resolve, reject) => {
138
279
  request.on('data', (chunk) => {
139
280
  const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
140
281
  size += buffer.byteLength;
@@ -145,33 +286,53 @@ async function readJsonBody(request) {
145
286
  }
146
287
  chunks.push(buffer);
147
288
  });
148
- request.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
289
+ request.on('end', () => resolve(Buffer.concat(chunks)));
149
290
  request.on('error', reject);
291
+ request.on('aborted', () => reject(new KiokukoError('VALIDATION_ERROR', 'Request body is incomplete')));
150
292
  });
151
- if (text.trim().length === 0)
152
- throw new KiokukoError('VALIDATION_ERROR', 'Request body must contain JSON');
153
- try {
154
- return asRecord(JSON.parse(text), 'Request body');
155
- }
156
- catch (error) {
157
- if (error instanceof KiokukoError)
158
- throw error;
159
- throw new KiokukoError('VALIDATION_ERROR', 'Request body is not valid JSON');
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');
160
299
  }
161
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
+ }
162
312
  function workspaceSummaries(database) {
163
- const summaries = new Map();
164
- for (const row of database.prepare('SELECT workspace, display_name FROM repositories ORDER BY workspace ASC').all()) {
165
- summaries.set(row.workspace, { workspace: row.workspace, displayName: row.display_name, count: 0 });
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));
166
332
  }
167
- for (const row of database.prepare("SELECT workspace, COUNT(*) AS count FROM entries WHERE status <> 'superseded' GROUP BY workspace").all()) {
168
- const existing = summaries.get(row.workspace);
169
- if (existing)
170
- existing.count = Number(row.count);
171
- else
172
- summaries.set(row.workspace, { workspace: row.workspace, displayName: '', count: Number(row.count) });
333
+ catch (error) {
334
+ rollbackFailedTransaction(database, error);
173
335
  }
174
- return [...summaries.values()].sort((left, right) => left.workspace.localeCompare(right.workspace));
175
336
  }
176
337
  function workspaceTags(database, workspace) {
177
338
  return database
@@ -230,6 +391,112 @@ function entryIdFromPath(pathname) {
230
391
  throw new KiokukoError('VALIDATION_ERROR', 'entry id is not valid URL encoding');
231
392
  }
232
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
+ }
233
500
  function operatorRunIdFromPath(pathname) {
234
501
  const prefix = '/api/operator/runs/';
235
502
  if (!pathname.startsWith(prefix) || pathname.slice(prefix.length).includes('/'))
@@ -323,7 +590,7 @@ function operatorRunDetail(context, runId) {
323
590
  untrusted: true,
324
591
  };
325
592
  }
326
- async function handleRequest(request, response, context, sessionToken) {
593
+ async function handleRequest(request, response, context, sessionToken, externalSkillRefreshFlights) {
327
594
  if (request.method === 'OPTIONS') {
328
595
  response.writeHead(204, { 'cache-control': 'no-store' });
329
596
  response.end();
@@ -339,6 +606,72 @@ async function handleRequest(request, response, context, sessionToken) {
339
606
  return;
340
607
  }
341
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
+ }
342
675
  if (request.method === 'GET' && url.pathname === '/api/operator/runs') {
343
676
  jsonResponse(response, 200, operatorRunList(context, url));
344
677
  return;
@@ -422,6 +755,7 @@ async function handleRequest(request, response, context, sessionToken) {
422
755
  }
423
756
  if (request.method === 'POST' && url.pathname === '/api/curator/globalize') {
424
757
  const payload = await readJsonBody(request);
758
+ requireOnlyJsonFields(payload, ['workspace', 'entryId', 'expectedRevision', 'actor'], 'Curator globalize request');
425
759
  const workspace = requireWorkspace(url.searchParams.get('workspace') ?? (typeof payload.workspace === 'string' ? payload.workspace : ''));
426
760
  const result = await context.enqueueWrite(() => globalizeCuratorCandidate(context.database, {
427
761
  workspace,
@@ -452,6 +786,7 @@ async function handleRequest(request, response, context, sessionToken) {
452
786
  return;
453
787
  }
454
788
  const payload = await readJsonBody(request);
789
+ requireOnlyJsonFields(payload, ['expectedRevision', 'kind', 'title', 'body', 'summary', 'scope', 'provenance', 'tags', 'actor'], 'Entry update request');
455
790
  const expectedRevision = payload.expectedRevision;
456
791
  const input = {
457
792
  workspace,
@@ -480,16 +815,27 @@ async function handleRequest(request, response, context, sessionToken) {
480
815
  function isSharedServerPath(pathname) {
481
816
  return pathname.startsWith('/health/') || pathname === '/api/v1' || pathname.startsWith('/api/v1/');
482
817
  }
483
- function createLegacyApplication(context) {
818
+ function createLegacyApplication(context, trustedOrigin) {
484
819
  const sharedApplication = context.createAuthenticatedApp(createAgentV1Handler(context));
485
820
  const sessionToken = randomBytes(32).toString('base64url');
821
+ const externalSkillRefreshFlights = {
822
+ database: context.database,
823
+ operations: new Map(),
824
+ };
486
825
  return (request, response) => {
826
+ try {
827
+ requireTrustedWebOrigin(request, trustedOrigin());
828
+ }
829
+ catch (error) {
830
+ jsonResponse(response, errorStatus(error), errorBody(error));
831
+ return;
832
+ }
487
833
  const pathname = new URL(request.url ?? '/', 'http://127.0.0.1').pathname;
488
834
  if (isSharedServerPath(pathname)) {
489
835
  sharedApplication(request, response);
490
836
  return;
491
837
  }
492
- void handleRequest(request, response, context, sessionToken).catch((error) => {
838
+ void handleRequest(request, response, context, sessionToken, externalSkillRefreshFlights).catch((error) => {
493
839
  if (!response.headersSent)
494
840
  jsonResponse(response, errorStatus(error), errorBody(error));
495
841
  else
@@ -498,13 +844,15 @@ function createLegacyApplication(context) {
498
844
  };
499
845
  }
500
846
  export async function startWebServer(options = {}) {
847
+ let trustedOrigin;
501
848
  const runtime = await startHttpServer({
502
849
  ...(options.httpOptions ?? {}),
503
850
  ...(options.databasePath === undefined ? {} : { databasePath: options.databasePath }),
504
851
  host: options.host ?? DEFAULT_HOST,
505
852
  port: options.port ?? DEFAULT_PORT,
506
- applicationFactory: createLegacyApplication,
853
+ applicationFactory: (context) => createLegacyApplication(context, () => trustedOrigin),
507
854
  });
855
+ trustedOrigin = new URL(runtime.url).origin;
508
856
  return {
509
857
  server: runtime.server,
510
858
  url: runtime.url,