@askdkc/kiokuko 0.1.16 → 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 (549) hide show
  1. package/README.ja.md +91 -112
  2. package/README.ko.md +90 -102
  3. package/README.md +103 -260
  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 +14 -24
  18. package/dist/akinator/agent-task.d.ts.map +1 -1
  19. package/dist/akinator/agent-task.js +460 -103
  20. package/dist/akinator/agent-task.js.map +1 -1
  21. package/dist/akinator/capabilities.d.ts +52 -7
  22. package/dist/akinator/capabilities.d.ts.map +1 -1
  23. package/dist/akinator/capabilities.js +226 -28
  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 +561 -144
  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 +30 -14
  108. package/dist/context/broker.d.ts.map +1 -1
  109. package/dist/context/broker.js +628 -150
  110. package/dist/context/broker.js.map +1 -1
  111. package/dist/context/delivery.d.ts +8 -22
  112. package/dist/context/delivery.d.ts.map +1 -1
  113. package/dist/context/delivery.js +204 -152
  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 +250 -268
  118. package/dist/context/feedback.js.map +1 -1
  119. package/dist/context/origin.d.ts +9 -0
  120. package/dist/context/origin.d.ts.map +1 -0
  121. package/dist/context/origin.js +15 -0
  122. package/dist/context/origin.js.map +1 -0
  123. package/dist/context/ranking.d.ts +4 -13
  124. package/dist/context/ranking.d.ts.map +1 -1
  125. package/dist/context/ranking.js +21 -5
  126. package/dist/context/ranking.js.map +1 -1
  127. package/dist/context/recommendations.d.ts +0 -5
  128. package/dist/context/recommendations.d.ts.map +1 -1
  129. package/dist/context/recommendations.js +0 -1
  130. package/dist/context/recommendations.js.map +1 -1
  131. package/dist/context/run-state.d.ts +26 -0
  132. package/dist/context/run-state.d.ts.map +1 -0
  133. package/dist/context/run-state.js +399 -0
  134. package/dist/context/run-state.js.map +1 -0
  135. package/dist/context/scoped-broker.d.ts +19 -6
  136. package/dist/context/scoped-broker.d.ts.map +1 -1
  137. package/dist/context/scoped-broker.js +530 -131
  138. package/dist/context/scoped-broker.js.map +1 -1
  139. package/dist/context/selection-state.d.ts +19 -0
  140. package/dist/context/selection-state.d.ts.map +1 -0
  141. package/dist/context/selection-state.js +250 -0
  142. package/dist/context/selection-state.js.map +1 -0
  143. package/dist/db/adapter.d.ts +5 -3
  144. package/dist/db/adapter.d.ts.map +1 -1
  145. package/dist/db/adapter.js +6 -3
  146. package/dist/db/adapter.js.map +1 -1
  147. package/dist/db/capabilities.d.ts.map +1 -1
  148. package/dist/db/capabilities.js +34 -16
  149. package/dist/db/capabilities.js.map +1 -1
  150. package/dist/db/connection.d.ts +8 -0
  151. package/dist/db/connection.d.ts.map +1 -1
  152. package/dist/db/connection.js +55 -26
  153. package/dist/db/connection.js.map +1 -1
  154. package/dist/db/migrate.d.ts +28 -7
  155. package/dist/db/migrate.d.ts.map +1 -1
  156. package/dist/db/migrate.js +106 -78
  157. package/dist/db/migrate.js.map +1 -1
  158. package/dist/db/sqlite-retry.d.ts +11 -0
  159. package/dist/db/sqlite-retry.d.ts.map +1 -0
  160. package/dist/db/sqlite-retry.js +66 -0
  161. package/dist/db/sqlite-retry.js.map +1 -0
  162. package/dist/db/transaction.d.ts +13 -0
  163. package/dist/db/transaction.d.ts.map +1 -1
  164. package/dist/db/transaction.js +53 -24
  165. package/dist/db/transaction.js.map +1 -1
  166. package/dist/db/upgrade-backup.d.ts +58 -2
  167. package/dist/db/upgrade-backup.d.ts.map +1 -1
  168. package/dist/db/upgrade-backup.js +757 -28
  169. package/dist/db/upgrade-backup.js.map +1 -1
  170. package/dist/errors.js +1 -1
  171. package/dist/errors.js.map +1 -1
  172. package/dist/gateway/agent-service.d.ts +4 -1
  173. package/dist/gateway/agent-service.d.ts.map +1 -1
  174. package/dist/gateway/agent-service.js +71 -58
  175. package/dist/gateway/agent-service.js.map +1 -1
  176. package/dist/gateway/checkpoint-service.d.ts +1 -0
  177. package/dist/gateway/checkpoint-service.d.ts.map +1 -1
  178. package/dist/gateway/checkpoint-service.js +47 -24
  179. package/dist/gateway/checkpoint-service.js.map +1 -1
  180. package/dist/ledger/archive.d.ts +1 -4
  181. package/dist/ledger/archive.d.ts.map +1 -1
  182. package/dist/ledger/archive.js +134 -54
  183. package/dist/ledger/archive.js.map +1 -1
  184. package/dist/ledger/maintenance.d.ts +0 -11
  185. package/dist/ledger/maintenance.d.ts.map +1 -1
  186. package/dist/ledger/maintenance.js +41 -44
  187. package/dist/ledger/maintenance.js.map +1 -1
  188. package/dist/ledger/projection.d.ts +0 -1
  189. package/dist/ledger/projection.d.ts.map +1 -1
  190. package/dist/ledger/projection.js.map +1 -1
  191. package/dist/ledger/promotion.d.ts +0 -9
  192. package/dist/ledger/promotion.d.ts.map +1 -1
  193. package/dist/ledger/promotion.js.map +1 -1
  194. package/dist/ledger/query.d.ts +1 -15
  195. package/dist/ledger/query.d.ts.map +1 -1
  196. package/dist/ledger/query.js.map +1 -1
  197. package/dist/ledger/store.d.ts +0 -1
  198. package/dist/ledger/store.d.ts.map +1 -1
  199. package/dist/ledger/store.js +11 -8
  200. package/dist/ledger/store.js.map +1 -1
  201. package/dist/ledger/types.d.ts +0 -4
  202. package/dist/ledger/types.d.ts.map +1 -1
  203. package/dist/ledger/types.js.map +1 -1
  204. package/dist/ledger/validate.d.ts.map +1 -1
  205. package/dist/ledger/validate.js +0 -5
  206. package/dist/ledger/validate.js.map +1 -1
  207. package/dist/mcp/bounded-stdio-transport.d.ts +23 -0
  208. package/dist/mcp/bounded-stdio-transport.d.ts.map +1 -0
  209. package/dist/mcp/bounded-stdio-transport.js +109 -0
  210. package/dist/mcp/bounded-stdio-transport.js.map +1 -0
  211. package/dist/mcp/server.d.ts +4 -0
  212. package/dist/mcp/server.d.ts.map +1 -1
  213. package/dist/mcp/server.js +111 -75
  214. package/dist/mcp/server.js.map +1 -1
  215. package/dist/memory/audit.d.ts +0 -1
  216. package/dist/memory/audit.d.ts.map +1 -1
  217. package/dist/memory/audit.js +0 -1
  218. package/dist/memory/audit.js.map +1 -1
  219. package/dist/memory/curator.d.ts +45 -1
  220. package/dist/memory/curator.d.ts.map +1 -1
  221. package/dist/memory/curator.js +290 -68
  222. package/dist/memory/curator.js.map +1 -1
  223. package/dist/memory/entries.d.ts +12 -2
  224. package/dist/memory/entries.d.ts.map +1 -1
  225. package/dist/memory/entries.js +198 -114
  226. package/dist/memory/entries.js.map +1 -1
  227. package/dist/memory/federated-retrieval.d.ts +78 -0
  228. package/dist/memory/federated-retrieval.d.ts.map +1 -0
  229. package/dist/memory/federated-retrieval.js +441 -0
  230. package/dist/memory/federated-retrieval.js.map +1 -0
  231. package/dist/memory/hybrid-retrieval.d.ts +5 -11
  232. package/dist/memory/hybrid-retrieval.d.ts.map +1 -1
  233. package/dist/memory/hybrid-retrieval.js +78 -58
  234. package/dist/memory/hybrid-retrieval.js.map +1 -1
  235. package/dist/memory/lifecycle.d.ts.map +1 -1
  236. package/dist/memory/lifecycle.js +17 -13
  237. package/dist/memory/lifecycle.js.map +1 -1
  238. package/dist/memory/portability.d.ts +10 -0
  239. package/dist/memory/portability.d.ts.map +1 -0
  240. package/dist/memory/portability.js +44 -0
  241. package/dist/memory/portability.js.map +1 -0
  242. package/dist/memory/rebuild-search.d.ts +5 -0
  243. package/dist/memory/rebuild-search.d.ts.map +1 -1
  244. package/dist/memory/rebuild-search.js +101 -76
  245. package/dist/memory/rebuild-search.js.map +1 -1
  246. package/dist/memory/retrieval-query.d.ts +0 -5
  247. package/dist/memory/retrieval-query.d.ts.map +1 -1
  248. package/dist/memory/retrieval-query.js +0 -5
  249. package/dist/memory/retrieval-query.js.map +1 -1
  250. package/dist/memory/retrieval.d.ts +11 -0
  251. package/dist/memory/retrieval.d.ts.map +1 -1
  252. package/dist/memory/retrieval.js +34 -120
  253. package/dist/memory/retrieval.js.map +1 -1
  254. package/dist/memory/revisions.d.ts +76 -1
  255. package/dist/memory/revisions.d.ts.map +1 -1
  256. package/dist/memory/revisions.js +539 -35
  257. package/dist/memory/revisions.js.map +1 -1
  258. package/dist/memory/scoped-memory.d.ts +22 -13
  259. package/dist/memory/scoped-memory.d.ts.map +1 -1
  260. package/dist/memory/scoped-memory.js +248 -139
  261. package/dist/memory/scoped-memory.js.map +1 -1
  262. package/dist/memory/secrets.d.ts +2 -0
  263. package/dist/memory/secrets.d.ts.map +1 -1
  264. package/dist/memory/secrets.js +36 -0
  265. package/dist/memory/secrets.js.map +1 -1
  266. package/dist/memory/structured-memory.d.ts +8 -1
  267. package/dist/memory/structured-memory.d.ts.map +1 -1
  268. package/dist/memory/structured-memory.js +74 -20
  269. package/dist/memory/structured-memory.js.map +1 -1
  270. package/dist/memory/workspaces.d.ts +9 -0
  271. package/dist/memory/workspaces.d.ts.map +1 -1
  272. package/dist/memory/workspaces.js +67 -0
  273. package/dist/memory/workspaces.js.map +1 -1
  274. package/dist/package-version.d.ts +2 -0
  275. package/dist/package-version.d.ts.map +1 -0
  276. package/dist/package-version.js +7 -0
  277. package/dist/package-version.js.map +1 -0
  278. package/dist/repository/binding.d.ts +5 -0
  279. package/dist/repository/binding.d.ts.map +1 -1
  280. package/dist/repository/binding.js +117 -17
  281. package/dist/repository/binding.js.map +1 -1
  282. package/dist/repository/framework-version.d.ts +8 -0
  283. package/dist/repository/framework-version.d.ts.map +1 -0
  284. package/dist/repository/framework-version.js +29 -0
  285. package/dist/repository/framework-version.js.map +1 -0
  286. package/dist/repository/identity-value.d.ts +4 -0
  287. package/dist/repository/identity-value.d.ts.map +1 -0
  288. package/dist/repository/identity-value.js +24 -0
  289. package/dist/repository/identity-value.js.map +1 -0
  290. package/dist/repository/identity.d.ts.map +1 -1
  291. package/dist/repository/identity.js +2 -0
  292. package/dist/repository/identity.js.map +1 -1
  293. package/dist/repository/project-fingerprint.d.ts +33 -0
  294. package/dist/repository/project-fingerprint.d.ts.map +1 -0
  295. package/dist/repository/project-fingerprint.js +429 -0
  296. package/dist/repository/project-fingerprint.js.map +1 -0
  297. package/dist/repository/remote-url.d.ts +0 -1
  298. package/dist/repository/remote-url.d.ts.map +1 -1
  299. package/dist/repository/remote-url.js +0 -1
  300. package/dist/repository/remote-url.js.map +1 -1
  301. package/dist/runtime-version.d.ts +2 -1
  302. package/dist/runtime-version.d.ts.map +1 -1
  303. package/dist/runtime-version.js +21 -4
  304. package/dist/runtime-version.js.map +1 -1
  305. package/dist/serialization/boundary-json.d.ts +20 -0
  306. package/dist/serialization/boundary-json.d.ts.map +1 -0
  307. package/dist/serialization/boundary-json.js +129 -0
  308. package/dist/serialization/boundary-json.js.map +1 -0
  309. package/dist/serialization/envelope.js +1 -1
  310. package/dist/serialization/envelope.js.map +1 -1
  311. package/dist/serialization/validate.d.ts +7 -0
  312. package/dist/serialization/validate.d.ts.map +1 -1
  313. package/dist/serialization/validate.js +53 -13
  314. package/dist/serialization/validate.js.map +1 -1
  315. package/dist/server/app.js +1 -1
  316. package/dist/server/app.js.map +1 -1
  317. package/dist/server/http.d.ts +4 -3
  318. package/dist/server/http.d.ts.map +1 -1
  319. package/dist/server/http.js +90 -50
  320. package/dist/server/http.js.map +1 -1
  321. package/dist/server/idempotency.d.ts +0 -6
  322. package/dist/server/idempotency.d.ts.map +1 -1
  323. package/dist/server/idempotency.js.map +1 -1
  324. package/dist/server/router.d.ts.map +1 -1
  325. package/dist/server/router.js +21 -4
  326. package/dist/server/router.js.map +1 -1
  327. package/dist/server/routes/agent-capability-gate.d.ts +40 -0
  328. package/dist/server/routes/agent-capability-gate.d.ts.map +1 -0
  329. package/dist/server/routes/agent-capability-gate.js +182 -0
  330. package/dist/server/routes/agent-capability-gate.js.map +1 -0
  331. package/dist/server/routes/agent-events.d.ts.map +1 -1
  332. package/dist/server/routes/agent-events.js +8 -1
  333. package/dist/server/routes/agent-events.js.map +1 -1
  334. package/dist/server/routes/agent-intake.d.ts.map +1 -1
  335. package/dist/server/routes/agent-intake.js +10 -2
  336. package/dist/server/routes/agent-intake.js.map +1 -1
  337. package/dist/server/routes/agent-promotions.d.ts.map +1 -1
  338. package/dist/server/routes/agent-promotions.js +5 -2
  339. package/dist/server/routes/agent-promotions.js.map +1 -1
  340. package/dist/server/routes/agent-runs.d.ts.map +1 -1
  341. package/dist/server/routes/agent-runs.js +18 -4
  342. package/dist/server/routes/agent-runs.js.map +1 -1
  343. package/dist/server/routes/request-binding.d.ts +5 -0
  344. package/dist/server/routes/request-binding.d.ts.map +1 -0
  345. package/dist/server/routes/request-binding.js +49 -0
  346. package/dist/server/routes/request-binding.js.map +1 -0
  347. package/dist/server/routes/task5-support.d.ts +1 -8
  348. package/dist/server/routes/task5-support.d.ts.map +1 -1
  349. package/dist/server/routes/task5-support.js +1 -17
  350. package/dist/server/routes/task5-support.js.map +1 -1
  351. package/dist/server/routes/task5.d.ts.map +1 -1
  352. package/dist/server/routes/task5.js +106 -36
  353. package/dist/server/routes/task5.js.map +1 -1
  354. package/dist/server/write-queue.js +2 -2
  355. package/dist/server/write-queue.js.map +1 -1
  356. package/dist/setup/claude-config.d.ts +2 -1
  357. package/dist/setup/claude-config.d.ts.map +1 -1
  358. package/dist/setup/claude-config.js +54 -4
  359. package/dist/setup/claude-config.js.map +1 -1
  360. package/dist/setup/client-detection.d.ts +7 -2
  361. package/dist/setup/client-detection.d.ts.map +1 -1
  362. package/dist/setup/client-detection.js +27 -9
  363. package/dist/setup/client-detection.js.map +1 -1
  364. package/dist/setup/hermes-config.d.ts +2 -1
  365. package/dist/setup/hermes-config.d.ts.map +1 -1
  366. package/dist/setup/hermes-config.js +53 -12
  367. package/dist/setup/hermes-config.js.map +1 -1
  368. package/dist/setup/legacy-client-cleanup.d.ts +6 -0
  369. package/dist/setup/legacy-client-cleanup.d.ts.map +1 -0
  370. package/dist/setup/legacy-client-cleanup.js +152 -0
  371. package/dist/setup/legacy-client-cleanup.js.map +1 -0
  372. package/dist/setup/managed-text.d.ts.map +1 -1
  373. package/dist/setup/managed-text.js +11 -1
  374. package/dist/setup/managed-text.js.map +1 -1
  375. package/dist/setup/opencode-config.d.ts +2 -1
  376. package/dist/setup/opencode-config.d.ts.map +1 -1
  377. package/dist/setup/opencode-config.js +57 -5
  378. package/dist/setup/opencode-config.js.map +1 -1
  379. package/dist/setup/render.d.ts +2 -1
  380. package/dist/setup/render.d.ts.map +1 -1
  381. package/dist/setup/render.js +91 -17
  382. package/dist/setup/render.js.map +1 -1
  383. package/dist/setup/standard-skills.d.ts +16 -2
  384. package/dist/setup/standard-skills.d.ts.map +1 -1
  385. package/dist/setup/standard-skills.js +37 -13
  386. package/dist/setup/standard-skills.js.map +1 -1
  387. package/dist/setup/strict-json.d.ts +7 -0
  388. package/dist/setup/strict-json.d.ts.map +1 -0
  389. package/dist/setup/strict-json.js +98 -0
  390. package/dist/setup/strict-json.js.map +1 -0
  391. package/dist/setup/strict-toml.d.ts +7 -0
  392. package/dist/setup/strict-toml.d.ts.map +1 -0
  393. package/dist/setup/strict-toml.js +470 -0
  394. package/dist/setup/strict-toml.js.map +1 -0
  395. package/dist/skills/cache.d.ts +15 -0
  396. package/dist/skills/cache.d.ts.map +1 -0
  397. package/dist/skills/cache.js +19 -0
  398. package/dist/skills/cache.js.map +1 -0
  399. package/dist/skills/candidate-ranking.d.ts +15 -0
  400. package/dist/skills/candidate-ranking.d.ts.map +1 -0
  401. package/dist/skills/candidate-ranking.js +52 -0
  402. package/dist/skills/candidate-ranking.js.map +1 -0
  403. package/dist/skills/chunking.d.ts +11 -0
  404. package/dist/skills/chunking.d.ts.map +1 -0
  405. package/dist/skills/chunking.js +291 -0
  406. package/dist/skills/chunking.js.map +1 -0
  407. package/dist/skills/config.d.ts +19 -0
  408. package/dist/skills/config.d.ts.map +1 -0
  409. package/dist/skills/config.js +103 -0
  410. package/dist/skills/config.js.map +1 -0
  411. package/dist/skills/discovery-service.d.ts +26 -0
  412. package/dist/skills/discovery-service.d.ts.map +1 -0
  413. package/dist/skills/discovery-service.js +921 -0
  414. package/dist/skills/discovery-service.js.map +1 -0
  415. package/dist/skills/external-transport.d.ts +2 -0
  416. package/dist/skills/external-transport.d.ts.map +1 -0
  417. package/dist/skills/external-transport.js +30 -0
  418. package/dist/skills/external-transport.js.map +1 -0
  419. package/dist/skills/find.d.ts +16 -0
  420. package/dist/skills/find.d.ts.map +1 -0
  421. package/dist/skills/find.js +58 -0
  422. package/dist/skills/find.js.map +1 -0
  423. package/dist/skills/gap-detection.d.ts +23 -0
  424. package/dist/skills/gap-detection.d.ts.map +1 -0
  425. package/dist/skills/gap-detection.js +62 -0
  426. package/dist/skills/gap-detection.js.map +1 -0
  427. package/dist/skills/import-preparation.d.ts +4 -0
  428. package/dist/skills/import-preparation.d.ts.map +1 -0
  429. package/dist/skills/import-preparation.js +20 -0
  430. package/dist/skills/import-preparation.js.map +1 -0
  431. package/dist/skills/materialization-authority.d.ts +11 -0
  432. package/dist/skills/materialization-authority.d.ts.map +1 -0
  433. package/dist/skills/materialization-authority.js +92 -0
  434. package/dist/skills/materialization-authority.js.map +1 -0
  435. package/dist/skills/materialization-service.d.ts +22 -0
  436. package/dist/skills/materialization-service.d.ts.map +1 -0
  437. package/dist/skills/materialization-service.js +101 -0
  438. package/dist/skills/materialization-service.js.map +1 -0
  439. package/dist/skills/official-catalog.d.ts +31 -0
  440. package/dist/skills/official-catalog.d.ts.map +1 -0
  441. package/dist/skills/official-catalog.js +110 -0
  442. package/dist/skills/official-catalog.js.map +1 -0
  443. package/dist/skills/providers/schema.d.ts +30 -0
  444. package/dist/skills/providers/schema.d.ts.map +1 -0
  445. package/dist/skills/providers/schema.js +354 -0
  446. package/dist/skills/providers/schema.js.map +1 -0
  447. package/dist/skills/providers/skills-sh-compat.d.ts +17 -0
  448. package/dist/skills/providers/skills-sh-compat.d.ts.map +1 -0
  449. package/dist/skills/providers/skills-sh-compat.js +71 -0
  450. package/dist/skills/providers/skills-sh-compat.js.map +1 -0
  451. package/dist/skills/providers/skills-sh-v1.d.ts +23 -0
  452. package/dist/skills/providers/skills-sh-v1.d.ts.map +1 -0
  453. package/dist/skills/providers/skills-sh-v1.js +134 -0
  454. package/dist/skills/providers/skills-sh-v1.js.map +1 -0
  455. package/dist/skills/query-builder.d.ts +18 -0
  456. package/dist/skills/query-builder.d.ts.map +1 -0
  457. package/dist/skills/query-builder.js +93 -0
  458. package/dist/skills/query-builder.js.map +1 -0
  459. package/dist/skills/source/errors.d.ts +9 -0
  460. package/dist/skills/source/errors.d.ts.map +1 -0
  461. package/dist/skills/source/errors.js +15 -0
  462. package/dist/skills/source/errors.js.map +1 -0
  463. package/dist/skills/source/frontmatter.d.ts +9 -0
  464. package/dist/skills/source/frontmatter.d.ts.map +1 -0
  465. package/dist/skills/source/frontmatter.js +77 -0
  466. package/dist/skills/source/frontmatter.js.map +1 -0
  467. package/dist/skills/source/github-fetcher.d.ts +20 -0
  468. package/dist/skills/source/github-fetcher.d.ts.map +1 -0
  469. package/dist/skills/source/github-fetcher.js +292 -0
  470. package/dist/skills/source/github-fetcher.js.map +1 -0
  471. package/dist/skills/source/snapshot-validator.d.ts +28 -0
  472. package/dist/skills/source/snapshot-validator.d.ts.map +1 -0
  473. package/dist/skills/source/snapshot-validator.js +186 -0
  474. package/dist/skills/source/snapshot-validator.js.map +1 -0
  475. package/dist/skills/store.d.ts +181 -0
  476. package/dist/skills/store.d.ts.map +1 -0
  477. package/dist/skills/store.js +1710 -0
  478. package/dist/skills/store.js.map +1 -0
  479. package/dist/skills/types.d.ts +169 -0
  480. package/dist/skills/types.d.ts.map +1 -0
  481. package/dist/skills/types.js +2 -0
  482. package/dist/skills/types.js.map +1 -0
  483. package/dist/web/i18n.d.ts +56 -8
  484. package/dist/web/i18n.d.ts.map +1 -1
  485. package/dist/web/i18n.js +224 -32
  486. package/dist/web/i18n.js.map +1 -1
  487. package/dist/web/server.d.ts.map +1 -1
  488. package/dist/web/server.js +458 -42
  489. package/dist/web/server.js.map +1 -1
  490. package/dist/web/ui.d.ts +4 -0
  491. package/dist/web/ui.d.ts.map +1 -1
  492. package/dist/web/ui.js +697 -61
  493. package/dist/web/ui.js.map +1 -1
  494. package/migrations/008_federated_memory.sql +46 -0
  495. package/migrations/009_external_skill_discovery.sql +126 -0
  496. package/package.json +6 -3
  497. package/skills/kiokuko-single-purpose-functions/SKILL.md +288 -0
  498. package/skills/kiokuko-single-purpose-functions/references/kiokuko-patterns.md +344 -0
  499. package/skills/kiokuko-single-purpose-functions/references/review-checklist.md +97 -0
  500. package/skills/kiokuko-ui-design-soul/SKILL.md +1186 -28
  501. package/templates/AGENTS.md +8 -7
  502. package/dist/client/runtime-discovery.d.ts +0 -15
  503. package/dist/client/runtime-discovery.d.ts.map +0 -1
  504. package/dist/client/runtime-discovery.js +0 -45
  505. package/dist/client/runtime-discovery.js.map +0 -1
  506. package/dist/commands/call.d.ts +0 -7
  507. package/dist/commands/call.d.ts.map +0 -1
  508. package/dist/commands/call.js +0 -10
  509. package/dist/commands/call.js.map +0 -1
  510. package/dist/commands/link.d.ts +0 -6
  511. package/dist/commands/link.d.ts.map +0 -1
  512. package/dist/commands/link.js +0 -6
  513. package/dist/commands/link.js.map +0 -1
  514. package/dist/commands/promote.d.ts +0 -6
  515. package/dist/commands/promote.d.ts.map +0 -1
  516. package/dist/commands/promote.js +0 -6
  517. package/dist/commands/promote.js.map +0 -1
  518. package/dist/commands/read.d.ts +0 -6
  519. package/dist/commands/read.d.ts.map +0 -1
  520. package/dist/commands/read.js +0 -4
  521. package/dist/commands/read.js.map +0 -1
  522. package/dist/commands/recall.d.ts +0 -6
  523. package/dist/commands/recall.d.ts.map +0 -1
  524. package/dist/commands/recall.js +0 -4
  525. package/dist/commands/recall.js.map +0 -1
  526. package/dist/commands/record.d.ts +0 -6
  527. package/dist/commands/record.d.ts.map +0 -1
  528. package/dist/commands/record.js +0 -4
  529. package/dist/commands/record.js.map +0 -1
  530. package/dist/commands/search.d.ts +0 -6
  531. package/dist/commands/search.d.ts.map +0 -1
  532. package/dist/commands/search.js +0 -4
  533. package/dist/commands/search.js.map +0 -1
  534. package/dist/commands/supersede.d.ts +0 -6
  535. package/dist/commands/supersede.d.ts.map +0 -1
  536. package/dist/commands/supersede.js +0 -6
  537. package/dist/commands/supersede.js.map +0 -1
  538. package/dist/knowledge/sources.d.ts +0 -72
  539. package/dist/knowledge/sources.d.ts.map +0 -1
  540. package/dist/knowledge/sources.js +0 -388
  541. package/dist/knowledge/sources.js.map +0 -1
  542. package/dist/setup/opencode-evidence.d.ts +0 -37
  543. package/dist/setup/opencode-evidence.d.ts.map +0 -1
  544. package/dist/setup/opencode-evidence.js +0 -58
  545. package/dist/setup/opencode-evidence.js.map +0 -1
  546. package/dist/setup/opencode-loop-guard.d.ts +0 -9
  547. package/dist/setup/opencode-loop-guard.d.ts.map +0 -1
  548. package/dist/setup/opencode-loop-guard.js +0 -248
  549. package/dist/setup/opencode-loop-guard.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE7F,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,aAAa,EAAE,kBAAkB;IACjC,YAAY,EAAE,iBAAiB;IAC/B,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,YAAY;CACvB,CAAC;KACC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;KAC1B,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;KAC1B,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;KAC1B,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC;KAC/B,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAyLf,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqa1B,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ -- Federated retrieval metadata. Existing structured scopes remain valid and
2
+ -- legacy project entries stay project-only unless explicit applicability is
3
+ -- present; no entry rows are rewritten by this migration.
4
+ CREATE TABLE repository_fingerprints (
5
+ repository_id TEXT PRIMARY KEY
6
+ REFERENCES repositories(repository_id)
7
+ ON DELETE CASCADE,
8
+ fingerprint_json TEXT NOT NULL,
9
+ manifest_digest TEXT NOT NULL,
10
+ updated_at TEXT NOT NULL
11
+ );
12
+
13
+ CREATE INDEX IF NOT EXISTS idx_entry_search_signals_type_value_entry
14
+ ON entry_search_signals(signal_type, normalized_value, entry_id);
15
+
16
+ CREATE INDEX IF NOT EXISTS idx_entries_workspace_status
17
+ ON entries(workspace, status);
18
+
19
+ -- Version 2 only allowed project/global delivery origins. Rebuild the small
20
+ -- projection table so context deliveries can retain ecosystem provenance.
21
+ CREATE TABLE context_delivery_entries_federated (
22
+ delivery_id TEXT NOT NULL REFERENCES context_deliveries(delivery_id) ON DELETE CASCADE,
23
+ entry_id TEXT NOT NULL,
24
+ entry_revision INTEGER NOT NULL CHECK (entry_revision > 0),
25
+ rank INTEGER NOT NULL CHECK (rank > 0),
26
+ score_components_json TEXT NOT NULL,
27
+ selection_reason_json TEXT NOT NULL,
28
+ origin_scope TEXT NOT NULL DEFAULT 'project' CHECK (origin_scope IN ('project', 'ecosystem', 'global')),
29
+ PRIMARY KEY (delivery_id, entry_id),
30
+ FOREIGN KEY (entry_id, entry_revision)
31
+ REFERENCES entry_revisions(entry_id, revision)
32
+ );
33
+
34
+ INSERT INTO context_delivery_entries_federated (
35
+ delivery_id, entry_id, entry_revision, rank,
36
+ score_components_json, selection_reason_json, origin_scope
37
+ )
38
+ SELECT delivery_id, entry_id, entry_revision, rank,
39
+ score_components_json, selection_reason_json, origin_scope
40
+ FROM context_delivery_entries;
41
+
42
+ DROP TABLE context_delivery_entries;
43
+ ALTER TABLE context_delivery_entries_federated RENAME TO context_delivery_entries;
44
+
45
+ CREATE INDEX idx_context_delivery_entries_entry
46
+ ON context_delivery_entries(entry_id, entry_revision);
@@ -0,0 +1,126 @@
1
+ CREATE TABLE external_skill_generation_clock (
2
+ singleton INTEGER PRIMARY KEY CHECK (singleton = 1),
3
+ value INTEGER NOT NULL CHECK (typeof(value) = 'integer' AND value BETWEEN 0 AND 9007199254740991)
4
+ );
5
+
6
+ INSERT INTO external_skill_generation_clock (singleton, value) VALUES (1, 0);
7
+
8
+ CREATE TABLE external_skill_generation_tokens (
9
+ generation INTEGER PRIMARY KEY AUTOINCREMENT
10
+ CHECK (typeof(generation) = 'integer' AND generation BETWEEN 1 AND 9007199254740991)
11
+ );
12
+
13
+ CREATE TABLE external_skills (
14
+ skill_id TEXT PRIMARY KEY,
15
+ generation INTEGER NOT NULL REFERENCES external_skill_generation_tokens(generation)
16
+ CHECK (typeof(generation) = 'integer' AND generation BETWEEN 1 AND 9007199254740991),
17
+ provider TEXT NOT NULL,
18
+ source_type TEXT NOT NULL CHECK (source_type = 'github'),
19
+ source_locator TEXT NOT NULL,
20
+ slug TEXT NOT NULL,
21
+ name TEXT NOT NULL,
22
+ install_url TEXT,
23
+ official_status TEXT NOT NULL CHECK (official_status IN ('curated', 'catalog-verified', 'owner-verified', 'registry-only', 'unknown')),
24
+ duplicate INTEGER NOT NULL DEFAULT 0 CHECK (duplicate IN (0, 1)),
25
+ installs INTEGER NOT NULL DEFAULT 0 CHECK (installs >= 0),
26
+ state TEXT NOT NULL CHECK (state IN ('discovered', 'imported', 'blocked', 'stale', 'disabled')),
27
+ source_workspace TEXT NOT NULL,
28
+ source_commit TEXT,
29
+ snapshot_hash TEXT,
30
+ metadata_json TEXT NOT NULL DEFAULT '{}',
31
+ first_seen_at TEXT NOT NULL,
32
+ last_seen_at TEXT NOT NULL,
33
+ last_checked_at TEXT NOT NULL,
34
+ disabled_at TEXT,
35
+ UNIQUE(generation),
36
+ UNIQUE(source_type, source_locator, slug)
37
+ );
38
+
39
+ CREATE INDEX idx_external_skills_state_checked ON external_skills(state, last_checked_at DESC);
40
+ CREATE INDEX idx_external_skills_source ON external_skills(source_locator, slug);
41
+
42
+ CREATE TABLE external_skill_entries (
43
+ skill_id TEXT NOT NULL REFERENCES external_skills(skill_id) ON DELETE CASCADE,
44
+ source_path TEXT NOT NULL,
45
+ chunk_index INTEGER NOT NULL CHECK (chunk_index >= 0),
46
+ entry_id TEXT NOT NULL REFERENCES entries(id),
47
+ entry_revision INTEGER NOT NULL CHECK (entry_revision > 0),
48
+ content_hash TEXT NOT NULL,
49
+ primary_document INTEGER NOT NULL DEFAULT 0 CHECK (primary_document IN (0, 1)),
50
+ active INTEGER NOT NULL DEFAULT 1 CHECK (active IN (0, 1)),
51
+ imported_at TEXT NOT NULL,
52
+ PRIMARY KEY(skill_id, source_path, chunk_index),
53
+ FOREIGN KEY(entry_id, entry_revision) REFERENCES entry_revisions(entry_id, revision)
54
+ );
55
+
56
+ CREATE INDEX idx_external_skill_entries_entry ON external_skill_entries(entry_id, entry_revision);
57
+
58
+ CREATE TABLE skill_discovery_cache (
59
+ cache_key TEXT PRIMARY KEY,
60
+ provider TEXT NOT NULL,
61
+ query_text TEXT NOT NULL,
62
+ owner TEXT,
63
+ mode TEXT NOT NULL CHECK (mode IN ('official', 'community')),
64
+ outcome TEXT NOT NULL CHECK (outcome IN ('success', 'empty', 'rate_limited', 'unavailable')),
65
+ response_json TEXT NOT NULL,
66
+ fetched_at TEXT NOT NULL,
67
+ expires_at TEXT NOT NULL
68
+ );
69
+
70
+ CREATE INDEX idx_skill_discovery_cache_expiry ON skill_discovery_cache(expires_at);
71
+
72
+ CREATE TABLE skill_source_failure_cache (
73
+ cache_key TEXT PRIMARY KEY,
74
+ source_type TEXT NOT NULL CHECK (source_type = 'github'),
75
+ source_locator TEXT NOT NULL,
76
+ slug TEXT NOT NULL,
77
+ outcome TEXT NOT NULL CHECK (outcome IN ('source_rate_limited', 'source_unavailable')),
78
+ fetched_at TEXT NOT NULL,
79
+ expires_at TEXT NOT NULL
80
+ );
81
+
82
+ CREATE INDEX idx_skill_source_failure_cache_expiry ON skill_source_failure_cache(expires_at);
83
+
84
+ CREATE TABLE skill_audit_failure_cache (
85
+ cache_key TEXT PRIMARY KEY,
86
+ provider TEXT NOT NULL,
87
+ source_type TEXT NOT NULL CHECK (source_type = 'github'),
88
+ source_locator TEXT NOT NULL,
89
+ slug TEXT NOT NULL,
90
+ outcome TEXT NOT NULL CHECK (outcome IN ('registry_rate_limited', 'registry_unavailable')),
91
+ fetched_at TEXT NOT NULL,
92
+ expires_at TEXT NOT NULL
93
+ );
94
+
95
+ CREATE INDEX idx_skill_audit_failure_cache_expiry ON skill_audit_failure_cache(expires_at);
96
+
97
+ CREATE TABLE agent_task_skill_discovery_attempts (
98
+ run_id TEXT PRIMARY KEY REFERENCES ledger_runs(run_id) ON DELETE CASCADE,
99
+ request_digest TEXT NOT NULL CHECK (
100
+ typeof(request_digest) = 'text'
101
+ AND length(request_digest) = 64
102
+ AND request_digest NOT GLOB '*[^0-9a-f]*'
103
+ ),
104
+ state TEXT NOT NULL CHECK (state IN ('started', 'completed', 'failed')),
105
+ summary_json TEXT,
106
+ failure_json TEXT,
107
+ started_at TEXT NOT NULL CHECK (typeof(started_at) = 'text' AND length(started_at) > 0),
108
+ finished_at TEXT,
109
+ CHECK (
110
+ finished_at IS NULL
111
+ OR (typeof(finished_at) = 'text' AND length(finished_at) > 0 AND finished_at >= started_at)
112
+ ),
113
+ CHECK (
114
+ (state = 'started' AND summary_json IS NULL AND failure_json IS NULL AND finished_at IS NULL)
115
+ OR (state = 'completed' AND typeof(summary_json) = 'text' AND failure_json IS NULL AND finished_at IS NOT NULL)
116
+ OR (state = 'failed' AND summary_json IS NULL AND typeof(failure_json) = 'text' AND finished_at IS NOT NULL)
117
+ )
118
+ );
119
+
120
+ -- The application migration operation rewrites every revision preimage and
121
+ -- hash to the single locale-independent canonical representation before it
122
+ -- inserts this singleton. Leaving the row absent is never a supported state.
123
+ CREATE TABLE entry_revision_hash_format (
124
+ singleton INTEGER PRIMARY KEY CHECK (singleton = 1),
125
+ algorithm TEXT NOT NULL CHECK (algorithm = 'canonical-json-utf16-tags-v1')
126
+ );
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@askdkc/kiokuko",
3
- "version": "0.1.16",
3
+ "version": "0.1.19",
4
4
  "description": "Model-agnostic external memory for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "kiokuko": "dist/bin/kiokuko.js"
8
8
  },
9
9
  "engines": {
10
- "node": ">=24.0.0"
10
+ "node": ">=24.16.0"
11
11
  },
12
12
  "publishConfig": {
13
13
  "access": "public"
@@ -24,7 +24,8 @@
24
24
  "LICENSE"
25
25
  ],
26
26
  "scripts": {
27
- "build": "tsc -p tsconfig.build.json",
27
+ "clean:dist": "node --input-type=module --eval \"import { rmSync } from 'node:fs'; rmSync('dist', { recursive: true, force: true });\"",
28
+ "build": "npm run clean:dist && tsc -p tsconfig.build.json",
28
29
  "typecheck": "tsc -p tsconfig.json --noEmit",
29
30
  "test": "node --import tsx --test tests/**/*.test.ts",
30
31
  "test:unit": "node --import tsx --test tests/unit/**/*.test.ts",
@@ -36,11 +37,13 @@
36
37
  "@modelcontextprotocol/sdk": "^1.30.0",
37
38
  "commander": "^14.0.1",
38
39
  "jsonc-parser": "^3.3.1",
40
+ "semver": "^7.8.5",
39
41
  "yaml": "^2.9.0",
40
42
  "zod": "^4.4.3"
41
43
  },
42
44
  "devDependencies": {
43
45
  "@types/node": "^24.0.0",
46
+ "@types/semver": "^7.8.0",
44
47
  "tsx": "^4.20.3",
45
48
  "typescript": "^5.9.2"
46
49
  }
@@ -0,0 +1,288 @@
1
+ ---
2
+ name: kiokuko-single-purpose-functions
3
+ description: Use whenever writing, modifying, reviewing, debugging, or refactoring code in any language or repository. Enforce one cohesive contract per function, validation at hostile boundaries, caller-owned input immutability, narrow types, deterministic domain logic, explicit safe failures, separation of persistence and external effects, and focused runnable tests. Do not create meaningless micro-functions or rewrite unrelated code.
4
+ ---
5
+
6
+ <!-- KIOKUKO MANAGED STANDARD SKILL: kiokuko-single-purpose-functions -->
7
+
8
+ # Single-purpose function contracts
9
+
10
+ ## Objective
11
+
12
+ Build and change software by composing functions that each fulfill one explicit, testable contract.
13
+
14
+ Apply this guidance across languages, frameworks, and repositories. Typed examples are intentional: adapt their contracts to the project’s type system, validation tools, error model, persistence layer, and test framework instead of treating TypeScript syntax as a requirement.
15
+
16
+ Use it for the smallest coherent surface touched by the task. Do not turn an ordinary change into a repository-wide rewrite.
17
+
18
+ ## What “one thing” means
19
+
20
+ A function does one thing when it has:
21
+
22
+ - one cohesive externally observable responsibility;
23
+ - one primary reason to change;
24
+ - one defined success result;
25
+ - one explicit set of expected failures;
26
+ - one declared effect profile.
27
+
28
+ “One thing” does not mean one statement, one branch, or the shortest possible function.
29
+
30
+ Good examples include:
31
+
32
+ - parse one untrusted request;
33
+ - normalize one validated configuration value;
34
+ - calculate one price or ranking;
35
+ - load one record through a persistence interface;
36
+ - render one output representation;
37
+ - coordinate one atomic use case.
38
+
39
+ An orchestration function may call several functions. Its single responsibility is coordinating one use case. Keep detailed policy in domain functions and external mechanics in adapters or stores.
40
+
41
+ ## Project contracts outrank generic advice
42
+
43
+ Before changing code, inspect the relevant source, tests, documentation, types, error conventions, and adjacent helpers.
44
+
45
+ Preserve the repository’s established contracts unless the task explicitly changes them:
46
+
47
+ - public APIs and serialized formats;
48
+ - error types, codes, and messages;
49
+ - transaction and concurrency rules;
50
+ - ownership and mutation conventions;
51
+ - framework and dependency boundaries;
52
+ - security and privacy requirements;
53
+ - test and build commands.
54
+
55
+ Reuse a project helper when it already implements the required behavior. Do not introduce a parallel result type, validation library, database wrapper, dependency container, or architecture merely because it is familiar from another project.
56
+
57
+ ## Function layers
58
+
59
+ Classify every new or materially changed function before implementing it.
60
+
61
+ ### Boundary parser or validator
62
+
63
+ A boundary function receives data that is not yet trusted, including network requests, command-line input, environment variables, configuration files, database rows, files, messages, provider responses, and deserialized state.
64
+
65
+ It should:
66
+
67
+ 1. bound work before expensive processing;
68
+ 2. reject malformed shape, type, range, encoding, size, depth, count, or unknown fields when required;
69
+ 3. avoid invoking caller-controlled getters, proxies, hooks, or serialization behavior;
70
+ 4. create an owned normalized value;
71
+ 5. return that value or produce one narrow, safe expected failure.
72
+
73
+ After validation, delegate to typed or otherwise constrained internal code. Do not make every internal helper revalidate the same value.
74
+
75
+ ### Pure domain function
76
+
77
+ A pure domain function performs one decision, state transition, normalization, ranking, projection, or calculation over validated values.
78
+
79
+ It must not hide reads of time, randomness, environment, locale-sensitive state, mutable globals, filesystem, database, or network. Pass variable dependencies explicitly. The same explicit inputs should produce the same output.
80
+
81
+ ### Persistence function
82
+
83
+ A persistence function performs one storage capability.
84
+
85
+ It should:
86
+
87
+ - use the project’s established database or storage abstraction;
88
+ - parameterize queries where applicable;
89
+ - avoid transport and presentation concerns;
90
+ - avoid network and unrelated filesystem work;
91
+ - remain transaction-agnostic unless it explicitly owns the transaction;
92
+ - validate stored data before treating it as domain state;
93
+ - preserve revision, idempotency, ordering, and identity invariants.
94
+
95
+ ### Effect adapter
96
+
97
+ An adapter wraps one external capability, such as reading a file, calling a provider, obtaining time, generating an identifier, writing a response, or opening a database.
98
+
99
+ Expose the smallest capability required. Prefer a narrow function or interface over a broad service container.
100
+
101
+ ### Use-case orchestrator
102
+
103
+ An orchestrator coordinates one application operation. It may combine validation, pure decisions, persistence, and adapters, but it should not absorb their detailed policies.
104
+
105
+ ## Required contract
106
+
107
+ Before implementing a new function or materially changing an existing one, determine:
108
+
109
+ ```text
110
+ Function:
111
+ Layer: boundary | domain | persistence | adapter | orchestrator
112
+ Responsibility:
113
+ Inputs and trust level:
114
+ Input ownership:
115
+ Success output:
116
+ Expected failures:
117
+ Other propagated failures:
118
+ External effects:
119
+ Transaction or resource ownership:
120
+ Idempotency or replay behavior:
121
+ Security and privacy constraints:
122
+ Preconditions:
123
+ Postconditions:
124
+ ```
125
+
126
+ The contract may remain internal for a small change, but the implementation and tests must reflect it.
127
+
128
+ ## Non-negotiable rules
129
+
130
+ ### 1. Do not mutate caller-owned input
131
+
132
+ Treat parameters as immutable unless the contract explicitly transfers ownership.
133
+
134
+ - Do not modify caller-provided objects, arrays, maps, sets, buffers, collections, or records.
135
+ - Return a new value for transformations.
136
+ - Local mutation of newly allocated, unobservable data is allowed when it improves clarity or measured performance.
137
+ - Do not use shared mutable state for domain behavior.
138
+
139
+ Add an input-snapshot test when accidental mutation is plausible.
140
+
141
+ ### 2. Validate values at the real trust boundary
142
+
143
+ Static types, annotations, interfaces, and schemas known only to the compiler do not validate runtime data.
144
+
145
+ Use the repository’s established validation approach. Validate external JSON, database rows, configuration, files, provider responses, and messages before converting them into domain values. Reject or explicitly handle unknown fields when the contract is closed.
146
+
147
+ Use an unconstrained type such as `unknown`, a raw byte buffer, or a generic map only at a real boundary. Internal helpers should receive constrained values.
148
+
149
+ ### 3. Bound work before trust
150
+
151
+ Every externally influenced collection, string, nested object, retry loop, result set, or payload needs a justified bound.
152
+
153
+ Check limits before full traversal, expansion, hashing, serialization, proportional allocation, persistence, retrying, or returning data. Truncate only when the contract explicitly defines a preview or diagnostic field; otherwise reject oversized authoritative input.
154
+
155
+ ### 4. Produce an owned snapshot
156
+
157
+ Do not retain references to hostile or caller-controlled data after validation. Copy accepted values into owned structures before canonicalization, hashing, persistence, or asynchronous use.
158
+
159
+ Where the runtime permits hostile object behavior, account for accessors, proxies, cycles, malformed text, unsupported prototypes, and non-finite numbers.
160
+
161
+ ### 5. Use narrow types and exact states
162
+
163
+ - Prefer the strongest practical static analysis and type-checking mode supported by the project.
164
+ - Avoid escape hatches such as `any`, unchecked casts, suppressed diagnostics, or untyped dictionaries when a narrower representation is possible.
165
+ - Use enums, literal unions, sealed variants, value objects, or equivalent exact state models.
166
+ - Distinguish missing, null, unknown, empty, unavailable, and invalid when the protocol distinguishes them.
167
+ - Omit absent optional values rather than inventing ambiguous placeholders.
168
+ - Keep assertions adjacent to the runtime check that proves them.
169
+
170
+ ### 6. Make expected failures explicit and safe
171
+
172
+ Use the project’s established error taxonomy or result convention. Choose the narrowest existing failure category.
173
+
174
+ Do not use `false`, `null`, an empty string, or a swallowed exception to represent several unrelated failures. Do not catch an error merely to hide it or continue from uncertain state.
175
+
176
+ At public boundaries:
177
+
178
+ - map internal failures to stable public behavior;
179
+ - keep details bounded and allowlisted;
180
+ - never echo credentials, tokens, private data, raw request bodies, or unsafe provider responses;
181
+ - preserve both operation and cleanup failures when both occur.
182
+
183
+ ### 7. Keep domain decisions deterministic
184
+
185
+ Inject time, randomness, environment, current directory, locale, filesystem, database, network, and provider access. Use stable ordering and serialization when output participates in hashes, identities, manifests, caches, snapshots, or replay.
186
+
187
+ ### 8. Preserve transaction and resource discipline
188
+
189
+ - Let one use case own the transaction or resource lifecycle.
190
+ - Keep low-level storage functions composable inside that owner.
191
+ - Do not perform network calls, user prompts, or unrelated slow work while holding a write transaction or scarce lock.
192
+ - Do not add nested transaction ownership where an outer transaction already exists.
193
+ - Treat ambiguous commit or cleanup state explicitly; do not compensate as though rollback were proven.
194
+
195
+ ### 9. Preserve idempotency and compare-and-swap semantics
196
+
197
+ Bind every meaning-bearing input to request identities, expected revisions, generation tokens, content hashes, or cache keys.
198
+
199
+ - Exact replay may reuse the recorded acknowledgement.
200
+ - Reusing an identity with changed input is a conflict.
201
+ - Compare the exact observed version before mutation.
202
+ - Never silently overwrite newer or independently owned state.
203
+ - Never present partial or ambiguous cleanup as full success.
204
+
205
+ ### 10. Preserve external contracts
206
+
207
+ A refactor is not behavior-preserving if it accidentally changes a machine contract.
208
+
209
+ Preserve applicable command output, exit status, API schema, HTTP status, protocol envelope, database migration history, file format, line ending, file mode, ownership marker, event order, and backward-compatibility behavior.
210
+
211
+ ### 11. Keep security checks in the success path
212
+
213
+ Security validation is not optional logging. Apply required authorization, normalization, sanitization, size checks, secret detection, and path or URL restrictions before persistence or delivery.
214
+
215
+ A detected secret or invalid value must not reappear in errors, logs, hashes exposed to callers, temporary diagnostics, or responses.
216
+
217
+ ### 12. Test the contract independently
218
+
219
+ Use the repository’s existing test framework and style. Cover the applicable cases:
220
+
221
+ - normal success;
222
+ - empty, minimum, maximum, and exact boundary values;
223
+ - wrong primitive type or malformed structure;
224
+ - unknown fields for closed inputs;
225
+ - each expected failure category;
226
+ - no mutation of caller-owned input;
227
+ - no secret or raw invalid-value echo;
228
+ - deterministic ordering, hashing, or replay identity;
229
+ - exact replay and changed-input conflict;
230
+ - bounded retry and non-retryable failure;
231
+ - operation-plus-cleanup failure;
232
+ - integration with the real boundary when adapter behavior changes.
233
+
234
+ Assert observable behavior, not private call order, unless ordering itself is a documented invariant.
235
+
236
+ ## Required workflow
237
+
238
+ 1. Read the governing repository contracts and adjacent implementation.
239
+ 2. Define the smallest coherent behavior change.
240
+ 3. Classify each changed function’s layer.
241
+ 4. Determine its input, output, failure, effect, ownership, and replay contract.
242
+ 5. Validate once at the hostile boundary and create owned data.
243
+ 6. Implement deterministic policy in the pure core.
244
+ 7. Add only the narrow external capability required.
245
+ 8. Compose the use case without mixing detailed policies into orchestration.
246
+ 9. Add a regression test for the counterexample that would disprove the contract.
247
+ 10. Run the narrowest affected tests, then the repository’s documented static, type, test, build, and package checks as applicable.
248
+ 11. Report what changed, what was verified, what was skipped, and any residual risk.
249
+
250
+ Do not invent commands that are absent from the repository.
251
+
252
+ ## Decomposition tests
253
+
254
+ Split or redesign a function when one or more are true:
255
+
256
+ 1. Its responsibility requires “and then” to join unrelated observable outcomes.
257
+ 2. It validates transport data, decides policy, performs persistence, and formats a response in one body.
258
+ 3. It directly uses more than one unrelated external subsystem.
259
+ 4. It returns a value while mutating external state not required by its contract.
260
+ 5. It owns a transaction while performing network or unrelated slow work.
261
+ 6. Its pure decision can be tested only by booting unrelated infrastructure.
262
+ 7. A boolean flag switches between unrelated modes.
263
+ 8. Error mapping or validation policy is duplicated across layers.
264
+ 9. Security, replay, or cleanup state is implicit instead of represented.
265
+
266
+ Do not split when extraction would create a meaningless one-line wrapper, scatter one atomic state machine, or obscure resource ownership.
267
+
268
+ ## Prohibited shortcuts
269
+
270
+ Do not:
271
+
272
+ - claim static types prove external input is valid;
273
+ - cast external data directly into a domain type;
274
+ - weaken types merely to satisfy one inconvenient call site;
275
+ - mutate input because copying is inconvenient;
276
+ - swallow corruption, conflict, partial failure, or uncertain state;
277
+ - echo invalid or secret-like values in public failures;
278
+ - retry by matching error-message text when structured classification exists;
279
+ - run external work inside a write transaction without a documented reason;
280
+ - bypass revision, idempotency, identity, authorization, or ownership checks;
281
+ - overwrite independently owned state;
282
+ - create dozens of trivial wrappers to satisfy a function-count or line-count target;
283
+ - change public contracts as incidental cleanup;
284
+ - declare completion without naming the verification actually run.
285
+
286
+ ## Completion gate
287
+
288
+ Before declaring completion, use `references/review-checklist.md`. Read `references/kiokuko-patterns.md` when examples would help; despite the historical filename, its guidance applies across languages and repositories.