@askdkc/kiokuko 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +112 -0
  3. package/README.ko.md +112 -0
  4. package/README.md +147 -0
  5. package/README.zh-CN.md +112 -0
  6. package/dist/agent-file/atomic-write.d.ts +6 -0
  7. package/dist/agent-file/atomic-write.d.ts.map +1 -0
  8. package/dist/agent-file/atomic-write.js +36 -0
  9. package/dist/agent-file/atomic-write.js.map +1 -0
  10. package/dist/agent-file/managed-block.d.ts +12 -0
  11. package/dist/agent-file/managed-block.d.ts.map +1 -0
  12. package/dist/agent-file/managed-block.js +56 -0
  13. package/dist/agent-file/managed-block.js.map +1 -0
  14. package/dist/agent-file/render.d.ts +14 -0
  15. package/dist/agent-file/render.d.ts.map +1 -0
  16. package/dist/agent-file/render.js +41 -0
  17. package/dist/agent-file/render.js.map +1 -0
  18. package/dist/akinator/domain.d.ts +25 -0
  19. package/dist/akinator/domain.d.ts.map +1 -0
  20. package/dist/akinator/domain.js +255 -0
  21. package/dist/akinator/domain.js.map +1 -0
  22. package/dist/akinator/orchestrator.d.ts +8 -0
  23. package/dist/akinator/orchestrator.d.ts.map +1 -0
  24. package/dist/akinator/orchestrator.js +11 -0
  25. package/dist/akinator/orchestrator.js.map +1 -0
  26. package/dist/akinator/service.d.ts +35 -0
  27. package/dist/akinator/service.d.ts.map +1 -0
  28. package/dist/akinator/service.js +296 -0
  29. package/dist/akinator/service.js.map +1 -0
  30. package/dist/akinator/store.d.ts +96 -0
  31. package/dist/akinator/store.d.ts.map +1 -0
  32. package/dist/akinator/store.js +583 -0
  33. package/dist/akinator/store.js.map +1 -0
  34. package/dist/akinator/types.d.ts +49 -0
  35. package/dist/akinator/types.d.ts.map +1 -0
  36. package/dist/akinator/types.js +2 -0
  37. package/dist/akinator/types.js.map +1 -0
  38. package/dist/bin/kiokuko.d.ts +3 -0
  39. package/dist/bin/kiokuko.d.ts.map +1 -0
  40. package/dist/bin/kiokuko.js +6 -0
  41. package/dist/bin/kiokuko.js.map +1 -0
  42. package/dist/cli.d.ts +10 -0
  43. package/dist/cli.d.ts.map +1 -0
  44. package/dist/cli.js +362 -0
  45. package/dist/cli.js.map +1 -0
  46. package/dist/client/runtime-discovery.d.ts +15 -0
  47. package/dist/client/runtime-discovery.d.ts.map +1 -0
  48. package/dist/client/runtime-discovery.js +45 -0
  49. package/dist/client/runtime-discovery.js.map +1 -0
  50. package/dist/client/server-client.d.ts +20 -0
  51. package/dist/client/server-client.d.ts.map +1 -0
  52. package/dist/client/server-client.js +424 -0
  53. package/dist/client/server-client.js.map +1 -0
  54. package/dist/commands/agent.d.ts +10 -0
  55. package/dist/commands/agent.d.ts.map +1 -0
  56. package/dist/commands/agent.js +283 -0
  57. package/dist/commands/agent.js.map +1 -0
  58. package/dist/commands/backup.d.ts +5 -0
  59. package/dist/commands/backup.d.ts.map +1 -0
  60. package/dist/commands/backup.js +14 -0
  61. package/dist/commands/backup.js.map +1 -0
  62. package/dist/commands/call.d.ts +7 -0
  63. package/dist/commands/call.d.ts.map +1 -0
  64. package/dist/commands/call.js +10 -0
  65. package/dist/commands/call.js.map +1 -0
  66. package/dist/commands/doctor.d.ts +31 -0
  67. package/dist/commands/doctor.d.ts.map +1 -0
  68. package/dist/commands/doctor.js +142 -0
  69. package/dist/commands/doctor.js.map +1 -0
  70. package/dist/commands/export.d.ts +21 -0
  71. package/dist/commands/export.d.ts.map +1 -0
  72. package/dist/commands/export.js +68 -0
  73. package/dist/commands/export.js.map +1 -0
  74. package/dist/commands/import.d.ts +15 -0
  75. package/dist/commands/import.d.ts.map +1 -0
  76. package/dist/commands/import.js +265 -0
  77. package/dist/commands/import.js.map +1 -0
  78. package/dist/commands/init.d.ts +14 -0
  79. package/dist/commands/init.d.ts.map +1 -0
  80. package/dist/commands/init.js +26 -0
  81. package/dist/commands/init.js.map +1 -0
  82. package/dist/commands/ledger.d.ts +7 -0
  83. package/dist/commands/ledger.d.ts.map +1 -0
  84. package/dist/commands/ledger.js +66 -0
  85. package/dist/commands/ledger.js.map +1 -0
  86. package/dist/commands/link.d.ts +6 -0
  87. package/dist/commands/link.d.ts.map +1 -0
  88. package/dist/commands/link.js +6 -0
  89. package/dist/commands/link.js.map +1 -0
  90. package/dist/commands/promote.d.ts +6 -0
  91. package/dist/commands/promote.d.ts.map +1 -0
  92. package/dist/commands/promote.js +6 -0
  93. package/dist/commands/promote.js.map +1 -0
  94. package/dist/commands/purge.d.ts +10 -0
  95. package/dist/commands/purge.d.ts.map +1 -0
  96. package/dist/commands/purge.js +26 -0
  97. package/dist/commands/purge.js.map +1 -0
  98. package/dist/commands/read.d.ts +6 -0
  99. package/dist/commands/read.d.ts.map +1 -0
  100. package/dist/commands/read.js +4 -0
  101. package/dist/commands/read.js.map +1 -0
  102. package/dist/commands/recall.d.ts +6 -0
  103. package/dist/commands/recall.d.ts.map +1 -0
  104. package/dist/commands/recall.js +4 -0
  105. package/dist/commands/recall.js.map +1 -0
  106. package/dist/commands/record.d.ts +6 -0
  107. package/dist/commands/record.d.ts.map +1 -0
  108. package/dist/commands/record.js +4 -0
  109. package/dist/commands/record.js.map +1 -0
  110. package/dist/commands/search.d.ts +6 -0
  111. package/dist/commands/search.d.ts.map +1 -0
  112. package/dist/commands/search.js +4 -0
  113. package/dist/commands/search.js.map +1 -0
  114. package/dist/commands/serve.d.ts +34 -0
  115. package/dist/commands/serve.d.ts.map +1 -0
  116. package/dist/commands/serve.js +120 -0
  117. package/dist/commands/serve.js.map +1 -0
  118. package/dist/commands/server-status.d.ts +20 -0
  119. package/dist/commands/server-status.d.ts.map +1 -0
  120. package/dist/commands/server-status.js +21 -0
  121. package/dist/commands/server-status.js.map +1 -0
  122. package/dist/commands/server.d.ts +13 -0
  123. package/dist/commands/server.d.ts.map +1 -0
  124. package/dist/commands/server.js +89 -0
  125. package/dist/commands/server.js.map +1 -0
  126. package/dist/commands/setup.d.ts +32 -0
  127. package/dist/commands/setup.d.ts.map +1 -0
  128. package/dist/commands/setup.js +121 -0
  129. package/dist/commands/setup.js.map +1 -0
  130. package/dist/commands/supersede.d.ts +6 -0
  131. package/dist/commands/supersede.d.ts.map +1 -0
  132. package/dist/commands/supersede.js +6 -0
  133. package/dist/commands/supersede.js.map +1 -0
  134. package/dist/commands/use.d.ts +28 -0
  135. package/dist/commands/use.d.ts.map +1 -0
  136. package/dist/commands/use.js +176 -0
  137. package/dist/commands/use.js.map +1 -0
  138. package/dist/config/paths.d.ts +18 -0
  139. package/dist/config/paths.d.ts.map +1 -0
  140. package/dist/config/paths.js +104 -0
  141. package/dist/config/paths.js.map +1 -0
  142. package/dist/config/project-config.d.ts +10 -0
  143. package/dist/config/project-config.d.ts.map +1 -0
  144. package/dist/config/project-config.js +59 -0
  145. package/dist/config/project-config.js.map +1 -0
  146. package/dist/context/broker.d.ts +80 -0
  147. package/dist/context/broker.d.ts.map +1 -0
  148. package/dist/context/broker.js +437 -0
  149. package/dist/context/broker.js.map +1 -0
  150. package/dist/context/delivery.d.ts +66 -0
  151. package/dist/context/delivery.d.ts.map +1 -0
  152. package/dist/context/delivery.js +758 -0
  153. package/dist/context/delivery.js.map +1 -0
  154. package/dist/context/feedback.d.ts +75 -0
  155. package/dist/context/feedback.d.ts.map +1 -0
  156. package/dist/context/feedback.js +997 -0
  157. package/dist/context/feedback.js.map +1 -0
  158. package/dist/context/ranking.d.ts +98 -0
  159. package/dist/context/ranking.d.ts.map +1 -0
  160. package/dist/context/ranking.js +513 -0
  161. package/dist/context/ranking.js.map +1 -0
  162. package/dist/context/recommendations.d.ts +85 -0
  163. package/dist/context/recommendations.d.ts.map +1 -0
  164. package/dist/context/recommendations.js +342 -0
  165. package/dist/context/recommendations.js.map +1 -0
  166. package/dist/db/adapter.d.ts +25 -0
  167. package/dist/db/adapter.d.ts.map +1 -0
  168. package/dist/db/adapter.js +37 -0
  169. package/dist/db/adapter.js.map +1 -0
  170. package/dist/db/capabilities.d.ts +13 -0
  171. package/dist/db/capabilities.d.ts.map +1 -0
  172. package/dist/db/capabilities.js +25 -0
  173. package/dist/db/capabilities.js.map +1 -0
  174. package/dist/db/connection.d.ts +6 -0
  175. package/dist/db/connection.d.ts.map +1 -0
  176. package/dist/db/connection.js +42 -0
  177. package/dist/db/connection.js.map +1 -0
  178. package/dist/db/migrate.d.ts +9 -0
  179. package/dist/db/migrate.d.ts.map +1 -0
  180. package/dist/db/migrate.js +102 -0
  181. package/dist/db/migrate.js.map +1 -0
  182. package/dist/db/transaction.d.ts +4 -0
  183. package/dist/db/transaction.d.ts.map +1 -0
  184. package/dist/db/transaction.js +39 -0
  185. package/dist/db/transaction.js.map +1 -0
  186. package/dist/errors.d.ts +9 -0
  187. package/dist/errors.d.ts.map +1 -0
  188. package/dist/errors.js +32 -0
  189. package/dist/errors.js.map +1 -0
  190. package/dist/gateway/agent-service.d.ts +69 -0
  191. package/dist/gateway/agent-service.d.ts.map +1 -0
  192. package/dist/gateway/agent-service.js +581 -0
  193. package/dist/gateway/agent-service.js.map +1 -0
  194. package/dist/gateway/checkpoint-service.d.ts +42 -0
  195. package/dist/gateway/checkpoint-service.d.ts.map +1 -0
  196. package/dist/gateway/checkpoint-service.js +295 -0
  197. package/dist/gateway/checkpoint-service.js.map +1 -0
  198. package/dist/knowledge/sources.d.ts +72 -0
  199. package/dist/knowledge/sources.d.ts.map +1 -0
  200. package/dist/knowledge/sources.js +406 -0
  201. package/dist/knowledge/sources.js.map +1 -0
  202. package/dist/ledger/archive.d.ts +50 -0
  203. package/dist/ledger/archive.d.ts.map +1 -0
  204. package/dist/ledger/archive.js +1072 -0
  205. package/dist/ledger/archive.js.map +1 -0
  206. package/dist/ledger/hash.d.ts +22 -0
  207. package/dist/ledger/hash.d.ts.map +1 -0
  208. package/dist/ledger/hash.js +25 -0
  209. package/dist/ledger/hash.js.map +1 -0
  210. package/dist/ledger/maintenance.d.ts +78 -0
  211. package/dist/ledger/maintenance.d.ts.map +1 -0
  212. package/dist/ledger/maintenance.js +683 -0
  213. package/dist/ledger/maintenance.js.map +1 -0
  214. package/dist/ledger/projection.d.ts +37 -0
  215. package/dist/ledger/projection.d.ts.map +1 -0
  216. package/dist/ledger/projection.js +307 -0
  217. package/dist/ledger/projection.js.map +1 -0
  218. package/dist/ledger/promotion.d.ts +28 -0
  219. package/dist/ledger/promotion.d.ts.map +1 -0
  220. package/dist/ledger/promotion.js +308 -0
  221. package/dist/ledger/promotion.js.map +1 -0
  222. package/dist/ledger/query.d.ts +55 -0
  223. package/dist/ledger/query.d.ts.map +1 -0
  224. package/dist/ledger/query.js +321 -0
  225. package/dist/ledger/query.js.map +1 -0
  226. package/dist/ledger/redaction.d.ts +8 -0
  227. package/dist/ledger/redaction.d.ts.map +1 -0
  228. package/dist/ledger/redaction.js +40 -0
  229. package/dist/ledger/redaction.js.map +1 -0
  230. package/dist/ledger/store.d.ts +46 -0
  231. package/dist/ledger/store.d.ts.map +1 -0
  232. package/dist/ledger/store.js +324 -0
  233. package/dist/ledger/store.js.map +1 -0
  234. package/dist/ledger/types.d.ts +119 -0
  235. package/dist/ledger/types.d.ts.map +1 -0
  236. package/dist/ledger/types.js +22 -0
  237. package/dist/ledger/types.js.map +1 -0
  238. package/dist/ledger/validate.d.ts +10 -0
  239. package/dist/ledger/validate.d.ts.map +1 -0
  240. package/dist/ledger/validate.js +183 -0
  241. package/dist/ledger/validate.js.map +1 -0
  242. package/dist/mcp/server.d.ts +9 -0
  243. package/dist/mcp/server.d.ts.map +1 -0
  244. package/dist/mcp/server.js +86 -0
  245. package/dist/mcp/server.js.map +1 -0
  246. package/dist/memory/audit.d.ts +14 -0
  247. package/dist/memory/audit.d.ts.map +1 -0
  248. package/dist/memory/audit.js +16 -0
  249. package/dist/memory/audit.js.map +1 -0
  250. package/dist/memory/entries.d.ts +65 -0
  251. package/dist/memory/entries.d.ts.map +1 -0
  252. package/dist/memory/entries.js +200 -0
  253. package/dist/memory/entries.js.map +1 -0
  254. package/dist/memory/lifecycle.d.ts +29 -0
  255. package/dist/memory/lifecycle.d.ts.map +1 -0
  256. package/dist/memory/lifecycle.js +61 -0
  257. package/dist/memory/lifecycle.js.map +1 -0
  258. package/dist/memory/retrieval.d.ts +44 -0
  259. package/dist/memory/retrieval.d.ts.map +1 -0
  260. package/dist/memory/retrieval.js +174 -0
  261. package/dist/memory/retrieval.js.map +1 -0
  262. package/dist/memory/scoped-memory.d.ts +41 -0
  263. package/dist/memory/scoped-memory.d.ts.map +1 -0
  264. package/dist/memory/scoped-memory.js +65 -0
  265. package/dist/memory/scoped-memory.js.map +1 -0
  266. package/dist/memory/secrets.d.ts +6 -0
  267. package/dist/memory/secrets.d.ts.map +1 -0
  268. package/dist/memory/secrets.js +17 -0
  269. package/dist/memory/secrets.js.map +1 -0
  270. package/dist/memory/workspaces.d.ts +17 -0
  271. package/dist/memory/workspaces.d.ts.map +1 -0
  272. package/dist/memory/workspaces.js +92 -0
  273. package/dist/memory/workspaces.js.map +1 -0
  274. package/dist/repository/binding.d.ts +19 -0
  275. package/dist/repository/binding.d.ts.map +1 -0
  276. package/dist/repository/binding.js +78 -0
  277. package/dist/repository/binding.js.map +1 -0
  278. package/dist/repository/detect-root.d.ts +12 -0
  279. package/dist/repository/detect-root.d.ts.map +1 -0
  280. package/dist/repository/detect-root.js +57 -0
  281. package/dist/repository/detect-root.js.map +1 -0
  282. package/dist/repository/git-origin.d.ts +2 -0
  283. package/dist/repository/git-origin.d.ts.map +1 -0
  284. package/dist/repository/git-origin.js +15 -0
  285. package/dist/repository/git-origin.js.map +1 -0
  286. package/dist/repository/identity.d.ts +19 -0
  287. package/dist/repository/identity.d.ts.map +1 -0
  288. package/dist/repository/identity.js +23 -0
  289. package/dist/repository/identity.js.map +1 -0
  290. package/dist/repository/remote-url.d.ts +4 -0
  291. package/dist/repository/remote-url.d.ts.map +1 -0
  292. package/dist/repository/remote-url.js +36 -0
  293. package/dist/repository/remote-url.js.map +1 -0
  294. package/dist/security/sanitize.d.ts +4 -0
  295. package/dist/security/sanitize.d.ts.map +1 -0
  296. package/dist/security/sanitize.js +174 -0
  297. package/dist/security/sanitize.js.map +1 -0
  298. package/dist/serialization/envelope.d.ts +20 -0
  299. package/dist/serialization/envelope.d.ts.map +1 -0
  300. package/dist/serialization/envelope.js +11 -0
  301. package/dist/serialization/envelope.js.map +1 -0
  302. package/dist/serialization/validate.d.ts +31 -0
  303. package/dist/serialization/validate.d.ts.map +1 -0
  304. package/dist/serialization/validate.js +168 -0
  305. package/dist/serialization/validate.js.map +1 -0
  306. package/dist/server/agent-application.d.ts +6 -0
  307. package/dist/server/agent-application.d.ts.map +1 -0
  308. package/dist/server/agent-application.js +60 -0
  309. package/dist/server/agent-application.js.map +1 -0
  310. package/dist/server/app.d.ts +5 -0
  311. package/dist/server/app.d.ts.map +1 -0
  312. package/dist/server/app.js +87 -0
  313. package/dist/server/app.js.map +1 -0
  314. package/dist/server/auth.d.ts +2 -0
  315. package/dist/server/auth.d.ts.map +1 -0
  316. package/dist/server/auth.js +22 -0
  317. package/dist/server/auth.js.map +1 -0
  318. package/dist/server/http.d.ts +69 -0
  319. package/dist/server/http.d.ts.map +1 -0
  320. package/dist/server/http.js +349 -0
  321. package/dist/server/http.js.map +1 -0
  322. package/dist/server/idempotency.d.ts +12 -0
  323. package/dist/server/idempotency.d.ts.map +1 -0
  324. package/dist/server/idempotency.js +210 -0
  325. package/dist/server/idempotency.js.map +1 -0
  326. package/dist/server/instance-lock.d.ts +17 -0
  327. package/dist/server/instance-lock.d.ts.map +1 -0
  328. package/dist/server/instance-lock.js +118 -0
  329. package/dist/server/instance-lock.js.map +1 -0
  330. package/dist/server/router.d.ts +29 -0
  331. package/dist/server/router.d.ts.map +1 -0
  332. package/dist/server/router.js +112 -0
  333. package/dist/server/router.js.map +1 -0
  334. package/dist/server/routes/agent-events.d.ts +5 -0
  335. package/dist/server/routes/agent-events.d.ts.map +1 -0
  336. package/dist/server/routes/agent-events.js +46 -0
  337. package/dist/server/routes/agent-events.js.map +1 -0
  338. package/dist/server/routes/agent-intake.d.ts +5 -0
  339. package/dist/server/routes/agent-intake.d.ts.map +1 -0
  340. package/dist/server/routes/agent-intake.js +42 -0
  341. package/dist/server/routes/agent-intake.js.map +1 -0
  342. package/dist/server/routes/agent-promotions.d.ts +5 -0
  343. package/dist/server/routes/agent-promotions.d.ts.map +1 -0
  344. package/dist/server/routes/agent-promotions.js +52 -0
  345. package/dist/server/routes/agent-promotions.js.map +1 -0
  346. package/dist/server/routes/agent-runs.d.ts +25 -0
  347. package/dist/server/routes/agent-runs.d.ts.map +1 -0
  348. package/dist/server/routes/agent-runs.js +151 -0
  349. package/dist/server/routes/agent-runs.js.map +1 -0
  350. package/dist/server/routes/task5-support.d.ts +11 -0
  351. package/dist/server/routes/task5-support.d.ts.map +1 -0
  352. package/dist/server/routes/task5-support.js +22 -0
  353. package/dist/server/routes/task5-support.js.map +1 -0
  354. package/dist/server/routes/task5.d.ts +5 -0
  355. package/dist/server/routes/task5.d.ts.map +1 -0
  356. package/dist/server/routes/task5.js +72 -0
  357. package/dist/server/routes/task5.js.map +1 -0
  358. package/dist/server/runtime-descriptor.d.ts +24 -0
  359. package/dist/server/runtime-descriptor.d.ts.map +1 -0
  360. package/dist/server/runtime-descriptor.js +156 -0
  361. package/dist/server/runtime-descriptor.js.map +1 -0
  362. package/dist/server/write-queue.d.ts +20 -0
  363. package/dist/server/write-queue.d.ts.map +1 -0
  364. package/dist/server/write-queue.js +83 -0
  365. package/dist/server/write-queue.js.map +1 -0
  366. package/dist/setup/managed-text.d.ts +6 -0
  367. package/dist/setup/managed-text.d.ts.map +1 -0
  368. package/dist/setup/managed-text.js +42 -0
  369. package/dist/setup/managed-text.js.map +1 -0
  370. package/dist/setup/opencode-config.d.ts +3 -0
  371. package/dist/setup/opencode-config.d.ts.map +1 -0
  372. package/dist/setup/opencode-config.js +26 -0
  373. package/dist/setup/opencode-config.js.map +1 -0
  374. package/dist/setup/render.d.ts +8 -0
  375. package/dist/setup/render.d.ts.map +1 -0
  376. package/dist/setup/render.js +45 -0
  377. package/dist/setup/render.js.map +1 -0
  378. package/dist/web/server.d.ts +16 -0
  379. package/dist/web/server.d.ts.map +1 -0
  380. package/dist/web/server.js +424 -0
  381. package/dist/web/server.js.map +1 -0
  382. package/dist/web/ui.d.ts +2 -0
  383. package/dist/web/ui.d.ts.map +1 -0
  384. package/dist/web/ui.js +271 -0
  385. package/dist/web/ui.js.map +1 -0
  386. package/migrations/001_initial.sql +89 -0
  387. package/migrations/002_fts.sql +66 -0
  388. package/migrations/003_akinator.sql +30 -0
  389. package/migrations/004_agent_gateway.sql +259 -0
  390. package/package.json +45 -0
  391. package/templates/AGENTS.md +29 -0
@@ -0,0 +1,406 @@
1
+ import { withImmediateTransaction } from '../db/transaction.js';
2
+ import { KiokukoError } from '../errors.js';
3
+ import { recordEntryInTransaction } from '../memory/entries.js';
4
+ import { canonicalContentHash } from '../serialization/validate.js';
5
+ export const OFFICIAL_SOURCES = [
6
+ {
7
+ id: 'hermes-agent',
8
+ name: 'Hermes Agent',
9
+ owner: 'NousResearch',
10
+ repository: 'hermes-agent',
11
+ ref: 'main',
12
+ roots: ['skills', 'optional-skills', 'docs'],
13
+ repositoryUrl: 'https://github.com/NousResearch/hermes-agent',
14
+ },
15
+ {
16
+ id: 'superpowers',
17
+ name: 'Superpowers',
18
+ owner: 'obra',
19
+ repository: 'superpowers',
20
+ ref: 'main',
21
+ roots: ['skills', 'docs'],
22
+ repositoryUrl: 'https://github.com/obra/superpowers',
23
+ },
24
+ ];
25
+ const MAX_TREE_ITEMS = 500;
26
+ const MAX_DOCUMENTS_PER_SOURCE = 8;
27
+ const MAX_DOCUMENT_BYTES = 100_000;
28
+ const MAX_SUMMARY_CHARACTERS = 500;
29
+ const MAX_TITLE_CHARACTERS = 2_000;
30
+ const MAX_COMMIT_CHARACTERS = 200;
31
+ const MAX_SOURCE_ERROR_CHARACTERS = 160;
32
+ const MAX_SOURCE_ID_CHARACTERS = 100;
33
+ const MAX_TASK_CHARACTERS = 16_384;
34
+ const ALLOWED_REVISION = /^[A-Za-z0-9._-]{1,200}$/u;
35
+ const ALLOWED_PATH = /^[A-Za-z0-9._/-]{1,2000}$/u;
36
+ function sourceApiUrl(source, endpoint) {
37
+ return `https://api.github.com/repos/${source.owner}/${source.repository}/${endpoint}`;
38
+ }
39
+ function rawDocumentUrl(source, commit, path) {
40
+ return `https://raw.githubusercontent.com/${source.owner}/${source.repository}/${commit}/${path}`;
41
+ }
42
+ function sourceForId(sourceId) {
43
+ const source = OFFICIAL_SOURCES.find((candidate) => candidate.id === sourceId);
44
+ if (!source)
45
+ throw new KiokukoError('VALIDATION_ERROR', 'Official source is not allowlisted');
46
+ return source;
47
+ }
48
+ function sourceFailure() {
49
+ return new KiokukoError('PARTIAL_FAILURE', 'Official source could not be prepared');
50
+ }
51
+ function safeError(error) {
52
+ if (error instanceof KiokukoError && error.code === 'SECURITY_REJECTION')
53
+ return 'document_rejected';
54
+ if (error instanceof KiokukoError && error.code === 'PARTIAL_FAILURE')
55
+ return 'source_unavailable';
56
+ return 'source_unavailable';
57
+ }
58
+ async function fetchBoundedText(fetchImpl, url, accept) {
59
+ const response = await fetchImpl(url, {
60
+ headers: {
61
+ accept,
62
+ 'user-agent': 'kiokuko-source-sync',
63
+ },
64
+ });
65
+ if (!response.ok)
66
+ throw sourceFailure();
67
+ const reader = response.body?.getReader();
68
+ if (!reader) {
69
+ const text = await response.text();
70
+ if (Buffer.byteLength(text, 'utf8') > 2_000_000)
71
+ throw sourceFailure();
72
+ return text;
73
+ }
74
+ const chunks = [];
75
+ let size = 0;
76
+ try {
77
+ for (;;) {
78
+ const next = await reader.read();
79
+ if (next.done)
80
+ break;
81
+ const chunk = Buffer.from(next.value);
82
+ size += chunk.byteLength;
83
+ if (size > 2_000_000) {
84
+ await reader.cancel();
85
+ throw sourceFailure();
86
+ }
87
+ chunks.push(chunk);
88
+ }
89
+ }
90
+ catch {
91
+ throw sourceFailure();
92
+ }
93
+ return Buffer.concat(chunks).toString('utf8');
94
+ }
95
+ async function fetchJson(fetchImpl, url) {
96
+ const text = await fetchBoundedText(fetchImpl, url, 'application/vnd.github+json');
97
+ try {
98
+ return JSON.parse(text);
99
+ }
100
+ catch {
101
+ throw sourceFailure();
102
+ }
103
+ }
104
+ async function fetchText(fetchImpl, url) {
105
+ const text = await fetchBoundedText(fetchImpl, url, 'text/plain');
106
+ if (Buffer.byteLength(text, 'utf8') > MAX_DOCUMENT_BYTES)
107
+ throw sourceFailure();
108
+ return text;
109
+ }
110
+ function asObject(value) {
111
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
112
+ throw sourceFailure();
113
+ return value;
114
+ }
115
+ function revision(value) {
116
+ if (typeof value !== 'string' || !ALLOWED_REVISION.test(value))
117
+ throw sourceFailure();
118
+ return value;
119
+ }
120
+ function parseFrontmatter(content) {
121
+ const name = /^name:\s*["']?(.+?)["']?\s*$/mu.exec(content)?.[1]?.trim() ?? null;
122
+ const description = /^description:\s*["']?(.+?)["']?\s*$/mu.exec(content)?.[1]?.trim() ?? null;
123
+ return {
124
+ name: name?.slice(0, MAX_TITLE_CHARACTERS) || null,
125
+ description: description?.slice(0, MAX_SUMMARY_CHARACTERS) || null,
126
+ };
127
+ }
128
+ function tokens(value) {
129
+ return new Set((value.toLocaleLowerCase().match(/[\p{L}\p{N}][\p{L}\p{N}-]*/gu) ?? []).filter((token) => token.length > 1));
130
+ }
131
+ function pathRoleTags(path, taskType) {
132
+ const normalized = path.toLocaleLowerCase();
133
+ const tags = new Set();
134
+ if (taskType === 'build' || normalized.includes('test-driven') || normalized.includes('software-development'))
135
+ tags.add('bot:builder');
136
+ if (taskType === 'debug' || normalized.includes('debug') || normalized.includes('review'))
137
+ tags.add('bot:reviewer');
138
+ if (taskType === 'research' || normalized.includes('research') || normalized.includes('citation'))
139
+ tags.add('bot:researcher');
140
+ if (taskType === 'devops' || normalized.includes('devops') || normalized.includes('infrastructure'))
141
+ tags.add('bot:devops');
142
+ if (taskType === 'writing' || normalized.includes('writing') || normalized.includes('document'))
143
+ tags.add('bot:writer');
144
+ if (taskType === 'analysis' || normalized.includes('analysis'))
145
+ tags.add('bot:analyst');
146
+ return [...tags].sort();
147
+ }
148
+ function scoreDocument(document, task, profile, recommendedTags) {
149
+ const query = tokens([task, profile.target ?? '', profile.expected ?? '', profile.constraints ?? ''].join(' '));
150
+ const searchable = tokens([document.path, document.title, document.summary ?? '', document.content.slice(0, 12_000)].join(' '));
151
+ let score = [...query].filter((token) => searchable.has(token)).length;
152
+ const normalizedPath = document.path.toLocaleLowerCase();
153
+ if (profile.taskType === 'build' && /test|implement|develop|software-development/u.test(normalizedPath))
154
+ score += 5;
155
+ if (profile.taskType === 'debug' && /debug|systematic/u.test(normalizedPath))
156
+ score += 5;
157
+ if (profile.taskType === 'research' && /research|citation|search/u.test(normalizedPath))
158
+ score += 5;
159
+ if (profile.taskType === 'review' && /review|verification/u.test(normalizedPath))
160
+ score += 5;
161
+ if (profile.taskType === 'devops' && /devops|infra|docker|server/u.test(normalizedPath))
162
+ score += 5;
163
+ if (profile.taskType === 'writing' && /writing|document/u.test(normalizedPath))
164
+ score += 5;
165
+ if (recommendedTags.some((tag) => pathRoleTags(document.path, profile.taskType).includes(tag)))
166
+ score += 3;
167
+ return score;
168
+ }
169
+ function documentTitle(source, path, content) {
170
+ const frontmatter = parseFrontmatter(content);
171
+ const basename = path.split('/').at(-2) ?? path.split('/').at(-1) ?? 'document';
172
+ return {
173
+ title: `${source.name}: ${frontmatter.name ?? basename}`.slice(0, MAX_TITLE_CHARACTERS),
174
+ summary: frontmatter.description
175
+ ?? content.replace(/^---[\s\S]*?---\s*/u, '').trim().slice(0, MAX_SUMMARY_CHARACTERS),
176
+ };
177
+ }
178
+ function isCandidatePath(source, path) {
179
+ if (!ALLOWED_PATH.test(path) || !path.endsWith('.md'))
180
+ return false;
181
+ if (path === 'README.md' && source.id === 'superpowers')
182
+ return true;
183
+ return source.roots.some((root) => path === root || path.startsWith(`${root}/`));
184
+ }
185
+ async function loadSourceDocuments(source, fetchImpl, task, profile, recommendedTags) {
186
+ const commitValue = revision(asObject(await fetchJson(fetchImpl, sourceApiUrl(source, `commits/${source.ref}`))).sha);
187
+ const treeValue = asObject(await fetchJson(fetchImpl, sourceApiUrl(source, `git/trees/${commitValue}?recursive=1`)));
188
+ if (treeValue.truncated === true || !Array.isArray(treeValue.tree))
189
+ throw sourceFailure();
190
+ const tree = treeValue.tree.flatMap((item) => {
191
+ if (typeof item !== 'object' || item === null || Array.isArray(item))
192
+ return [];
193
+ const object = item;
194
+ return typeof object.path === 'string' && typeof object.type === 'string' ? [{ path: object.path, type: object.type }] : [];
195
+ });
196
+ const paths = tree
197
+ .filter((item) => item.type === 'blob' && isCandidatePath(source, item.path))
198
+ .sort((left, right) => left.path.localeCompare(right.path))
199
+ .slice(0, MAX_TREE_ITEMS);
200
+ const documents = [];
201
+ for (const item of paths) {
202
+ const content = await fetchText(fetchImpl, rawDocumentUrl(source, commitValue, item.path));
203
+ const title = documentTitle(source, item.path, content);
204
+ const score = scoreDocument({ path: item.path, ...title, content }, task, profile, recommendedTags);
205
+ if (score > 0)
206
+ documents.push({
207
+ sourceId: source.id,
208
+ commit: commitValue,
209
+ path: item.path,
210
+ content,
211
+ ...title,
212
+ score,
213
+ tags: pathRoleTags(item.path, profile.taskType),
214
+ });
215
+ }
216
+ documents.sort((left, right) => right.score - left.score || left.path.localeCompare(right.path));
217
+ return { commit: commitValue, documents: documents.slice(0, MAX_DOCUMENTS_PER_SOURCE) };
218
+ }
219
+ function clonePrepared(prepared) {
220
+ const copy = structuredClone(prepared);
221
+ return deepFreeze(copy);
222
+ }
223
+ function deepFreeze(value) {
224
+ if (typeof value === 'object' && value !== null) {
225
+ Object.freeze(value);
226
+ for (const child of Object.values(value))
227
+ deepFreeze(child);
228
+ }
229
+ return value;
230
+ }
231
+ export async function prepareOfficialSourceSync(input) {
232
+ if (typeof input.workspace !== 'string' || input.workspace.length === 0)
233
+ throw new KiokukoError('VALIDATION_ERROR', 'Official source preparation input is invalid');
234
+ if (typeof input.task !== 'string' || input.task.length > MAX_TASK_CHARACTERS)
235
+ throw new KiokukoError('VALIDATION_ERROR', 'Official source preparation input is invalid');
236
+ const fetchImpl = input.fetchImpl ?? fetch;
237
+ const sources = await Promise.all(OFFICIAL_SOURCES.map(async (source) => {
238
+ try {
239
+ const loaded = await loadSourceDocuments(source, fetchImpl, input.task, input.profile, input.recommendedTags);
240
+ return { sourceId: source.id, commit: loaded.commit, documents: loaded.documents };
241
+ }
242
+ catch (error) {
243
+ return { sourceId: source.id, commit: null, documents: [], error: safeError(error).slice(0, MAX_SOURCE_ERROR_CHARACTERS) };
244
+ }
245
+ }));
246
+ return clonePrepared({ attempted: true, sources });
247
+ }
248
+ function sourceTags(document, profile) {
249
+ const source = sourceForId(document.sourceId);
250
+ const skillName = document.path.split('/').at(-2) ?? 'document';
251
+ const kindTag = document.path.endsWith('/SKILL.md') ? 'external:skill' : 'external:knowledge';
252
+ return [...new Set([
253
+ `source:${source.id}`,
254
+ kindTag,
255
+ `skill:${skillName}`,
256
+ ...pathRoleTags(document.path, profile.taskType),
257
+ ])].sort();
258
+ }
259
+ function validatePrepared(prepared) {
260
+ if (typeof prepared !== 'object' || prepared === null || Array.isArray(prepared))
261
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
262
+ const input = prepared;
263
+ if (input.attempted !== true || !Array.isArray(input.sources) || input.sources.length !== OFFICIAL_SOURCES.length)
264
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
265
+ const sources = [];
266
+ const seenSources = new Set();
267
+ for (const value of input.sources) {
268
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
269
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
270
+ const source = value;
271
+ if (typeof source.sourceId !== 'string' || source.sourceId.length > MAX_SOURCE_ID_CHARACTERS || seenSources.has(source.sourceId))
272
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
273
+ const official = sourceForId(source.sourceId);
274
+ seenSources.add(source.sourceId);
275
+ const commitValue = source.commit;
276
+ const commit = commitValue === null ? null : revision(commitValue);
277
+ if (!Array.isArray(source.documents) || source.documents.length > MAX_DOCUMENTS_PER_SOURCE)
278
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
279
+ const paths = new Set();
280
+ const documents = source.documents.map((value) => {
281
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
282
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
283
+ const document = value;
284
+ if (document.sourceId !== official.id || typeof document.commit !== 'string' || document.commit !== commit || !ALLOWED_REVISION.test(document.commit))
285
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
286
+ if (typeof document.path !== 'string' || !isCandidatePath(official, document.path) || paths.has(document.path))
287
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
288
+ paths.add(document.path);
289
+ if (typeof document.content !== 'string' || Buffer.byteLength(document.content, 'utf8') > MAX_DOCUMENT_BYTES)
290
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
291
+ if (typeof document.title !== 'string' || document.title.length === 0 || document.title.length > MAX_TITLE_CHARACTERS)
292
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
293
+ if (document.summary !== null && (typeof document.summary !== 'string' || document.summary.length > MAX_SUMMARY_CHARACTERS))
294
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
295
+ if (typeof document.score !== 'number' || !Number.isSafeInteger(document.score) || document.score < 1)
296
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
297
+ if (!Array.isArray(document.tags) || document.tags.length > 16 || document.tags.some((tag) => typeof tag !== 'string' || tag.length === 0 || tag.length > 200))
298
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
299
+ return {
300
+ sourceId: official.id,
301
+ commit: document.commit,
302
+ path: document.path,
303
+ content: document.content,
304
+ title: document.title,
305
+ summary: document.summary,
306
+ score: document.score,
307
+ tags: [...new Set(document.tags)].sort(),
308
+ };
309
+ }).sort((left, right) => right.score - left.score || left.path.localeCompare(right.path));
310
+ const safeSourceError = source.error === undefined
311
+ ? undefined
312
+ : source.error === 'source_unavailable' || source.error === 'document_rejected'
313
+ ? source.error
314
+ : 'source_unavailable';
315
+ sources.push({ sourceId: official.id, commit, documents, ...(safeSourceError === undefined ? {} : { error: safeSourceError.slice(0, MAX_SOURCE_ERROR_CHARACTERS) }) });
316
+ }
317
+ if (seenSources.size !== OFFICIAL_SOURCES.length)
318
+ throw new KiokukoError('VALIDATION_ERROR', 'Prepared official source data is invalid');
319
+ return { attempted: true, sources: sources.sort((left, right) => left.sourceId.localeCompare(right.sourceId)) };
320
+ }
321
+ function documentInput(workspace, document) {
322
+ const source = sourceForId(document.sourceId);
323
+ const provenance = {
324
+ type: 'github_repository',
325
+ reference: `https://github.com/${source.owner}/${source.repository}/blob/${document.commit}/${document.path}`,
326
+ };
327
+ const tags = [...new Set([
328
+ `source:${source.id}`,
329
+ document.path.endsWith('/SKILL.md') ? 'external:skill' : 'external:knowledge',
330
+ `skill:${document.path.split('/').at(-2) ?? 'document'}`,
331
+ ...document.tags,
332
+ ])].sort();
333
+ const input = {
334
+ workspace,
335
+ kind: 'reference',
336
+ title: document.title,
337
+ body: document.content,
338
+ summary: document.summary,
339
+ provenance,
340
+ trustLevel: 'untrusted',
341
+ confidence: 0.75,
342
+ tags,
343
+ createdBy: 'kiokuko-source-sync',
344
+ actor: 'kiokuko-source-sync',
345
+ };
346
+ return { input, contentHash: canonicalContentHash({ kind: input.kind, title: input.title, body: input.body, summary: input.summary, scope: {}, provenance, tags }) };
347
+ }
348
+ export function persistOfficialSourceSyncInTransaction(database, input) {
349
+ const workspace = input.workspace;
350
+ if (typeof workspace !== 'string' || workspace.length === 0)
351
+ throw new KiokukoError('VALIDATION_ERROR', 'Official source persistence input is invalid');
352
+ const prepared = validatePrepared(input.prepared);
353
+ const now = input.now ?? new Date().toISOString();
354
+ let imported = 0;
355
+ const sources = [];
356
+ for (const preparedSource of prepared.sources) {
357
+ if (preparedSource.commit === null) {
358
+ sources.push({ sourceId: preparedSource.sourceId, commit: null, documents: 0, imported: 0, ...(preparedSource.error === undefined ? {} : { error: preparedSource.error }) });
359
+ continue;
360
+ }
361
+ let sourceImported = 0;
362
+ for (const document of preparedSource.documents) {
363
+ const built = documentInput(workspace, document);
364
+ const existing = database.prepare('SELECT id FROM entries WHERE workspace = ? AND content_hash = ?').get(workspace, built.contentHash);
365
+ try {
366
+ recordEntryInTransaction(database, built.input, { now });
367
+ if (!existing)
368
+ sourceImported += 1;
369
+ }
370
+ catch (error) {
371
+ if (error instanceof KiokukoError && error.code === 'SECURITY_REJECTION')
372
+ continue;
373
+ throw error;
374
+ }
375
+ }
376
+ const source = sourceForId(preparedSource.sourceId);
377
+ database.prepare(`
378
+ INSERT INTO knowledge_sources (source_id, repository_url, ref_name, commit_sha, document_count, last_synced_at)
379
+ VALUES (?, ?, ?, ?, ?, ?)
380
+ ON CONFLICT(source_id) DO UPDATE SET repository_url = excluded.repository_url,
381
+ ref_name = excluded.ref_name, commit_sha = excluded.commit_sha,
382
+ document_count = excluded.document_count, last_synced_at = excluded.last_synced_at
383
+ `).run(source.id, source.repositoryUrl, source.ref, preparedSource.commit, preparedSource.documents.length, now);
384
+ imported += sourceImported;
385
+ sources.push({ sourceId: source.id, commit: preparedSource.commit, documents: preparedSource.documents.length, imported: sourceImported, ...(preparedSource.error === undefined ? {} : { error: preparedSource.error }) });
386
+ }
387
+ return { attempted: true, imported, sources };
388
+ }
389
+ export function persistOfficialSourceSync(database, input) {
390
+ return withImmediateTransaction(database, () => persistOfficialSourceSyncInTransaction(database, input));
391
+ }
392
+ export async function syncOfficialSources(input) {
393
+ const prepared = await prepareOfficialSourceSync({
394
+ workspace: input.workspace,
395
+ task: input.task,
396
+ profile: input.profile,
397
+ recommendedTags: input.recommendedTags,
398
+ ...(input.fetchImpl === undefined ? {} : { fetchImpl: input.fetchImpl }),
399
+ });
400
+ return persistOfficialSourceSync(input.database, {
401
+ workspace: input.workspace,
402
+ prepared,
403
+ ...(input.now === undefined ? {} : { now: input.now }),
404
+ });
405
+ }
406
+ //# sourceMappingURL=sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/knowledge/sources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { SqliteDatabase } from '../db/adapter.js';
2
+ export declare const LEDGER_ARCHIVE_FORMAT: "kiokuko-ledger-jsonl";
3
+ export declare const LEDGER_ARCHIVE_API_VERSION: "1";
4
+ export declare const LEDGER_ARCHIVE_VERSION: 1;
5
+ export declare const MAX_ARCHIVE_LINE_COUNT = 10000;
6
+ export declare const MAX_ARCHIVE_LINE_BYTES: number;
7
+ export declare const MAX_ARCHIVE_TOTAL_BYTES: number;
8
+ export declare const MAX_LEDGER_ARCHIVE_LINES = 10000;
9
+ export declare const MAX_LEDGER_ARCHIVE_LINE_BYTES: number;
10
+ export declare const MAX_LEDGER_ARCHIVE_BYTES: number;
11
+ export interface LedgerArchiveCounts {
12
+ runs: number;
13
+ sessions: number;
14
+ answers: number;
15
+ runIntakes: number;
16
+ intakeFeedback: number;
17
+ events: number;
18
+ evidence: number;
19
+ deliveries: number;
20
+ deliveryEntries: number;
21
+ contextFeedback: number;
22
+ runFeedback: number;
23
+ memoryLinks: number;
24
+ purgeAudit: number;
25
+ }
26
+ export interface ExportLedgerArchiveOptions {
27
+ workspace: string;
28
+ }
29
+ export interface LedgerArchiveExport {
30
+ workspace: string;
31
+ counts: LedgerArchiveCounts;
32
+ checksum: string;
33
+ content: string;
34
+ }
35
+ export interface ImportLedgerArchiveOptions {
36
+ content: string;
37
+ workspace?: string;
38
+ dryRun?: boolean;
39
+ }
40
+ export interface LedgerArchiveImportResult {
41
+ workspace: string;
42
+ dryRun: boolean;
43
+ counts: LedgerArchiveCounts;
44
+ imported: LedgerArchiveCounts;
45
+ duplicates: LedgerArchiveCounts;
46
+ conflicts: number;
47
+ }
48
+ export declare function exportLedgerArchive(database: SqliteDatabase, options: ExportLedgerArchiveOptions): LedgerArchiveExport;
49
+ export declare function importLedgerArchive(database: SqliteDatabase | undefined, options: ImportLedgerArchiveOptions): LedgerArchiveImportResult;
50
+ //# sourceMappingURL=archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/ledger/archive.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,kBAAkB,CAAC;AAgBpE,eAAO,MAAM,qBAAqB,EAAG,sBAA+B,CAAC;AACrE,eAAO,MAAM,0BAA0B,EAAG,GAAY,CAAC;AACvD,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAC;AAEjD,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAC7C,eAAO,MAAM,sBAAsB,QAAa,CAAC;AACjD,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,wBAAwB,QAAyB,CAAC;AAC/D,eAAO,MAAM,6BAA6B,QAAyB,CAAC;AACpE,eAAO,MAAM,wBAAwB,QAA0B,CAAC;AAkBhE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,UAAU,EAAE,mBAAmB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAkiBD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,0BAA0B,GAAG,mBAAmB,CAMtH;AA8UD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,EAAE,OAAO,EAAE,0BAA0B,GAAG,yBAAyB,CA2CxI"}