kenaz 0.3.1 → 0.3.3

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 (395) hide show
  1. package/core/.agents/skills/typesafe-ai/LICENSE +21 -21
  2. package/core/.agents/skills/typesafe-ai/SKILL.md +149 -149
  3. package/core/.claude/commands/Ansuz.md +19 -30
  4. package/core/.claude/hooks/_ansuz-conversation.js +1 -0
  5. package/core/.claude/hooks/_ansuz-conversation.test.js +6 -0
  6. package/core/.claude/hooks/_run-user-prompt.js +0 -4
  7. package/core/.claude/hooks/_run-user-prompt.test.js +2 -3
  8. package/core/.claude/hooks/session-init.ps1 +49 -49
  9. package/core/.claude/settings.json +0 -37
  10. package/core/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -26
  11. package/core/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -97
  12. package/core/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -101
  13. package/core/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -31
  14. package/core/.claude/skills/ui-ux-pro-max/data/products.csv +96 -96
  15. package/core/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  16. package/core/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  17. package/core/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  18. package/core/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  19. package/core/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  20. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  21. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  22. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  23. package/core/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  24. package/core/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  25. package/core/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  26. package/core/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  27. package/core/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  28. package/core/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  29. package/core/.claude/skills/ui-ux-pro-max/data/styles.csv +68 -68
  30. package/core/.claude/skills/ui-ux-pro-max/data/typography.csv +57 -57
  31. package/core/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
  32. package/core/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  33. package/core/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
  34. package/core/.claude/skills/ui-ux-pro-max/scripts/core.py +253 -253
  35. package/core/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
  36. package/core/.claude/skills/ui-ux-pro-max/scripts/search.py +106 -106
  37. package/core/.collaboration/core/task-api.js +3 -8
  38. package/core/.formation/bifrost/codex-doctor.js +1 -0
  39. package/core/.formation/bifrost/setup-codex.js +14 -5
  40. package/core/.formation/bifrost/setup-codex.test.js +20 -0
  41. package/core/.formation/tests/hello.txt +2 -2
  42. package/core/.formation/tools/prompt.js +58 -5
  43. package/core/.formation/tools/prompt.test.js +29 -0
  44. package/core/.kenaz/claude-hooks-manifest.json +16 -16
  45. package/core/.kenaz/knowledge/ladybug_2c51da1e_shadow_file_frame_group.patch +163 -163
  46. package/core/.kenaz/knowledge/ladybug_30cf85690e_shadow_page_read_during_checkpoint.patch +393 -393
  47. package/core/.kenaz/knowledge/ladybug_7a17858d3a_node_group_delete_lock.patch +102 -102
  48. package/core/.kenaz/knowledge/ladybug_926a0ba1_column_checkpoint.patch +412 -412
  49. package/core/.kenaz/knowledge/ladybug_a346c4c4b6_pk_index_header_pages.patch +144 -144
  50. package/core/.kenaz/knowledge/ladybug_ba5f38815b_csr_node_group.patch +86 -86
  51. package/core/.kenaz/muninn_episode_write.ps1 +17 -17
  52. package/core/.kenaz/specialist/field_report_watermark.json +1 -1
  53. package/core/.kenaz/specialist/memory_guard_fired.json +1 -1
  54. package/core/.kenaz/specialist/memory_guard_trigger_cache.json +1 -1
  55. package/core/.kenaz/specialist/t1777_probe.txt +1 -1
  56. package/core/.matrix/index.matrix +5 -5
  57. package/core/.specialist/Ansuz/RULES.md +6 -10
  58. package/core/.specialist/tools/__tests__/task-2218-boot-session-id.test.js +17 -1
  59. package/core/.specialist/tools/__tests__/task-2222-session-identity-interleave.test.js +17 -1
  60. package/core/.specialist/tools/__tests__/task-2254-handoff-archive-contract.test.js +6 -5
  61. package/core/.specialist/tools/ansuz-boot-fast.js +44 -100
  62. package/core/.specialist/tools/ansuz-boot-fast.test.js +45 -1
  63. package/core/KENAZ_CORE_VERSION +1 -1
  64. package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +355 -355
  65. package/core/dev/JEV_INTEGRATION_PLAN.md +189 -189
  66. package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +13 -13
  67. package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +9 -9
  68. package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +14 -14
  69. package/core/dev/design/matrix_v2_EXAMPLE.matrix +67 -67
  70. package/core/dev/jev-eval/ACTIVE_CORRECTION.md +52 -52
  71. package/core/dev/jev-eval/CONTEXT_REVIEW.md +31 -31
  72. package/core/dev/jev-eval/EVALUATION_STATUS.md +39 -39
  73. package/core/dev/jev-eval/HISTORICAL_CORPUS.md +33 -33
  74. package/core/dev/jev-eval/README.md +99 -99
  75. package/core/dev/jev-eval/THALAMUS_RANKING.md +58 -58
  76. package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +32 -32
  77. package/core/dev/jev-eval/reports/context-review-2026-09-20.json +48 -48
  78. package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +52 -52
  79. package/core/dev/pipeline/SELF_ENHANCEMENT_STATUS.json.bak +47 -47
  80. package/core/dev/pipeline/tasks/.gitkeep +1 -1
  81. package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +27 -27
  82. package/core/dev/plans/ANSUZ_SLIM_PLAN.md +68 -0
  83. package/core/dev/scripts/init_git.sh +0 -0
  84. package/core/dev/scripts/init_project.sh +0 -0
  85. package/core/dev/scripts/legacy/dev_agent_scheduler.ps1.bak +536 -536
  86. package/core/dev/scripts/legacy/multi_agent_scheduler.ps1.bak +1978 -1978
  87. package/core/dev/scripts/matrix/src/cli/commands/list-tags.ts.wip +140 -140
  88. package/core/dev/scripts/matrix/src/cli/commands/manage-tags.ts.wip +173 -173
  89. package/core/dev/scripts/matrix/src/cli/commands/stats.ts.wip +168 -168
  90. package/core/dev/scripts/matrix/src/cli/commands/tokens.ts.wip +126 -126
  91. package/core/dev/scripts/multi_agent_scheduler.sh +0 -0
  92. package/core/dev/scripts/run_once.sh +0 -0
  93. package/core/dev/scripts/setup_mcp.sh +0 -0
  94. package/core/dev/scripts/setup_rag.sh +0 -0
  95. package/core/dev/scripts/start_dev_agent.sh +0 -0
  96. package/core/dev/scripts/start_multi_agent.sh +0 -0
  97. package/core/dev/scripts/sync_task_queue.sh +0 -0
  98. package/core/k-cli/dist/alaya/run.js +91 -0
  99. package/core/k-cli/dist/core/output.js +24 -0
  100. package/core/k-cli/dist/core/process.js +38 -0
  101. package/core/k-cli/dist/core/project.js +80 -0
  102. package/core/k-cli/dist/core/spawn.js +268 -0
  103. package/core/k-cli/dist/core/types.js +2 -0
  104. package/core/k-cli/dist/dashboard/update.js +53 -0
  105. package/core/k-cli/dist/dashboard/version.js +20 -0
  106. package/core/k-cli/dist/dispatch/run.js +241 -0
  107. package/core/k-cli/dist/dispatch/status.js +103 -0
  108. package/core/k-cli/dist/index.js +283 -0
  109. package/core/k-cli/dist/project/initialize.js +301 -0
  110. package/core/k-cli/dist/project/install.js +89 -0
  111. package/core/k-cli/dist/project/status.js +138 -0
  112. package/core/k-cli/dist/specialist/list.js +100 -0
  113. package/core/k-cli/dist/specialist/run.js +93 -0
  114. package/core/k-cli/dist/task/create.js +194 -0
  115. package/core/k-cli/dist/task/delete.js +98 -0
  116. package/core/k-cli/dist/task/get.js +55 -0
  117. package/core/k-cli/dist/task/list.js +58 -0
  118. package/core/k-cli/dist/task/submit.js +156 -0
  119. package/core/k-cli/dist/ygg/run.js +51 -0
  120. package/core/k-cli/node_modules/.bin/yaml +16 -0
  121. package/core/k-cli/node_modules/.bin/yaml.cmd +17 -0
  122. package/core/k-cli/node_modules/.bin/yaml.ps1 +28 -0
  123. package/core/k-cli/node_modules/.package-lock.json +23 -0
  124. package/core/k-cli/node_modules/yaml/LICENSE +13 -0
  125. package/core/k-cli/node_modules/yaml/README.md +172 -0
  126. package/core/k-cli/node_modules/yaml/bin.mjs +11 -0
  127. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
  128. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
  129. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
  130. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
  131. package/core/k-cli/node_modules/yaml/browser/dist/compose/composer.js +217 -0
  132. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
  133. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
  134. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
  135. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
  136. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
  137. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +223 -0
  138. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
  139. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
  140. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
  141. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
  142. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
  143. package/core/k-cli/node_modules/yaml/browser/dist/doc/Document.js +335 -0
  144. package/core/k-cli/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
  145. package/core/k-cli/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
  146. package/core/k-cli/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
  147. package/core/k-cli/node_modules/yaml/browser/dist/doc/directives.js +176 -0
  148. package/core/k-cli/node_modules/yaml/browser/dist/errors.js +57 -0
  149. package/core/k-cli/node_modules/yaml/browser/dist/index.js +17 -0
  150. package/core/k-cli/node_modules/yaml/browser/dist/log.js +11 -0
  151. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Alias.js +114 -0
  152. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
  153. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
  154. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
  155. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  156. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
  157. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
  158. package/core/k-cli/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
  159. package/core/k-cli/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  160. package/core/k-cli/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
  161. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
  162. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
  163. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
  164. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst.js +98 -0
  165. package/core/k-cli/node_modules/yaml/browser/dist/parse/lexer.js +717 -0
  166. package/core/k-cli/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
  167. package/core/k-cli/node_modules/yaml/browser/dist/parse/parser.js +967 -0
  168. package/core/k-cli/node_modules/yaml/browser/dist/public-api.js +102 -0
  169. package/core/k-cli/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
  170. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
  171. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
  172. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
  173. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  174. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
  175. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
  176. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
  177. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  178. package/core/k-cli/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
  179. package/core/k-cli/node_modules/yaml/browser/dist/schema/tags.js +96 -0
  180. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
  181. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
  182. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
  183. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
  184. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +64 -0
  185. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
  186. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
  187. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
  188. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
  189. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  190. package/core/k-cli/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
  191. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
  192. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
  193. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
  194. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
  195. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +24 -0
  196. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
  197. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
  198. package/core/k-cli/node_modules/yaml/browser/dist/util.js +11 -0
  199. package/core/k-cli/node_modules/yaml/browser/dist/visit.js +233 -0
  200. package/core/k-cli/node_modules/yaml/browser/index.js +5 -0
  201. package/core/k-cli/node_modules/yaml/browser/package.json +3 -0
  202. package/core/k-cli/node_modules/yaml/dist/cli.d.ts +8 -0
  203. package/core/k-cli/node_modules/yaml/dist/cli.mjs +201 -0
  204. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  205. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  206. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  207. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  208. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
  209. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.js +112 -0
  210. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  211. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  212. package/core/k-cli/node_modules/yaml/dist/compose/composer.d.ts +63 -0
  213. package/core/k-cli/node_modules/yaml/dist/compose/composer.js +222 -0
  214. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  215. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  216. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  217. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  218. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  219. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  220. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  221. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  222. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  223. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  224. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  225. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.js +225 -0
  226. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  227. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  228. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  229. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  230. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  231. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  232. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  233. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  234. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  235. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  236. package/core/k-cli/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  237. package/core/k-cli/node_modules/yaml/dist/doc/Document.js +337 -0
  238. package/core/k-cli/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  239. package/core/k-cli/node_modules/yaml/dist/doc/anchors.js +76 -0
  240. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  241. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  242. package/core/k-cli/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  243. package/core/k-cli/node_modules/yaml/dist/doc/createNode.js +90 -0
  244. package/core/k-cli/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  245. package/core/k-cli/node_modules/yaml/dist/doc/directives.js +178 -0
  246. package/core/k-cli/node_modules/yaml/dist/errors.d.ts +21 -0
  247. package/core/k-cli/node_modules/yaml/dist/errors.js +62 -0
  248. package/core/k-cli/node_modules/yaml/dist/index.d.ts +25 -0
  249. package/core/k-cli/node_modules/yaml/dist/index.js +50 -0
  250. package/core/k-cli/node_modules/yaml/dist/log.d.ts +3 -0
  251. package/core/k-cli/node_modules/yaml/dist/log.js +19 -0
  252. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
  253. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.js +116 -0
  254. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  255. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.js +151 -0
  256. package/core/k-cli/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
  257. package/core/k-cli/node_modules/yaml/dist/nodes/Node.js +40 -0
  258. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
  259. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.js +39 -0
  260. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.d.ts +43 -0
  261. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  262. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  263. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  264. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  265. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  266. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  267. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  268. package/core/k-cli/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  269. package/core/k-cli/node_modules/yaml/dist/nodes/identity.js +53 -0
  270. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
  271. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.js +39 -0
  272. package/core/k-cli/node_modules/yaml/dist/options.d.ts +350 -0
  273. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  274. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  275. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  276. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  277. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  278. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  279. package/core/k-cli/node_modules/yaml/dist/parse/cst.d.ts +109 -0
  280. package/core/k-cli/node_modules/yaml/dist/parse/cst.js +112 -0
  281. package/core/k-cli/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  282. package/core/k-cli/node_modules/yaml/dist/parse/lexer.js +719 -0
  283. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  284. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.js +41 -0
  285. package/core/k-cli/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  286. package/core/k-cli/node_modules/yaml/dist/parse/parser.js +972 -0
  287. package/core/k-cli/node_modules/yaml/dist/public-api.d.ts +44 -0
  288. package/core/k-cli/node_modules/yaml/dist/public-api.js +107 -0
  289. package/core/k-cli/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
  290. package/core/k-cli/node_modules/yaml/dist/schema/Schema.js +39 -0
  291. package/core/k-cli/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  292. package/core/k-cli/node_modules/yaml/dist/schema/common/map.js +19 -0
  293. package/core/k-cli/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  294. package/core/k-cli/node_modules/yaml/dist/schema/common/null.js +17 -0
  295. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  296. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.js +19 -0
  297. package/core/k-cli/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  298. package/core/k-cli/node_modules/yaml/dist/schema/common/string.js +16 -0
  299. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  300. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.js +21 -0
  301. package/core/k-cli/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  302. package/core/k-cli/node_modules/yaml/dist/schema/core/float.js +47 -0
  303. package/core/k-cli/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  304. package/core/k-cli/node_modules/yaml/dist/schema/core/int.js +42 -0
  305. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  306. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.js +25 -0
  307. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  308. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.js +64 -0
  309. package/core/k-cli/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  310. package/core/k-cli/node_modules/yaml/dist/schema/tags.d.ts +48 -0
  311. package/core/k-cli/node_modules/yaml/dist/schema/tags.js +99 -0
  312. package/core/k-cli/node_modules/yaml/dist/schema/types.d.ts +92 -0
  313. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  314. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  315. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  316. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  317. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  318. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  319. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  320. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  321. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
  322. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.js +68 -0
  323. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
  324. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  325. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  326. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  327. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  328. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  329. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  330. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  331. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  332. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  333. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  334. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  335. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  336. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.js +132 -0
  337. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  338. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  339. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  340. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  341. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  342. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  343. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  344. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.js +26 -0
  345. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  346. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  347. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  348. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  349. package/core/k-cli/node_modules/yaml/dist/test-events.d.ts +4 -0
  350. package/core/k-cli/node_modules/yaml/dist/test-events.js +134 -0
  351. package/core/k-cli/node_modules/yaml/dist/util.d.ts +16 -0
  352. package/core/k-cli/node_modules/yaml/dist/util.js +28 -0
  353. package/core/k-cli/node_modules/yaml/dist/visit.d.ts +102 -0
  354. package/core/k-cli/node_modules/yaml/dist/visit.js +236 -0
  355. package/core/k-cli/node_modules/yaml/package.json +97 -0
  356. package/core/k-cli/node_modules/yaml/util.js +2 -0
  357. package/core/plugins/kenaz/commands/Ansuz.md +19 -30
  358. package/core/plugins/kenaz/commands/kenaz.md +1 -1
  359. package/core/plugins/kenaz/hooks/hooks.json +1 -5
  360. package/core/plugins/kenaz/hooks/kenaz-hook.js +0 -4
  361. package/core/plugins/kenaz/scripts/kenaz-mode.js +10 -4
  362. package/core/plugins/kenaz/scripts/kenaz.test.js +1 -1
  363. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/charts.csv +26 -26
  364. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/colors.csv +97 -97
  365. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/icons.csv +101 -101
  366. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/landing.csv +31 -31
  367. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/products.csv +96 -96
  368. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  369. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  370. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  371. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  372. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  373. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  374. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  375. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  376. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  377. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  378. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  379. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  380. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  381. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  382. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/styles.csv +68 -68
  383. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/typography.csv +57 -57
  384. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
  385. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  386. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
  387. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/core.py +253 -253
  388. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
  389. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/search.py +106 -106
  390. package/lib/cli.js +50 -3
  391. package/lib/cli.test.js +35 -0
  392. package/lib/dashboard.js +10 -0
  393. package/package.json +6 -6
  394. package/core/.specialist/tools/__tests__/task-1863-boot-lease-reuse.test.js +0 -99
  395. package/core/.specialist/tools/__tests__/task-1977-banner-cap.test.js +0 -129
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.run = run;
37
+ const path = __importStar(require("path"));
38
+ const project_1 = require("../core/project");
39
+ const process_1 = require("../core/process");
40
+ const spawn_1 = require("../core/spawn");
41
+ const output_1 = require("../core/output");
42
+ async function run(taskId, opts = {}) {
43
+ const isAuto = opts.auto === true;
44
+ const hasTaskId = taskId && taskId.startsWith("TASK_");
45
+ if (!isAuto && !hasTaskId) {
46
+ console.error("Usage:");
47
+ console.error(" k-cli dispatch run TASK_XXX # dispatch 指定任務");
48
+ console.error(" k-cli dispatch run --auto # 自動掃描待辦任務並 dispatch");
49
+ process.exit(1);
50
+ }
51
+ const project = (0, project_1.resolveProject)(opts.projectPath);
52
+ const corePath = project.core_path;
53
+ // Assemble Ansuz prompt
54
+ const sessionJs = path.join(corePath, ".specialist", "tools", "session.js");
55
+ let ansuzPrompt;
56
+ try {
57
+ ansuzPrompt = await (0, process_1.nodeProcess)([sessionJs, "prompt", "Ansuz", "--mode=assembled", "--no-muninn"], corePath, 15000);
58
+ }
59
+ catch (e) {
60
+ console.error("Error: Failed to assemble Ansuz prompt:", e.message);
61
+ process.exit(1);
62
+ }
63
+ const headlessV2Path = path.join(corePath, ".formation", "tools", "headless-v2.js");
64
+ const headlessV1Path = path.join(corePath, ".formation", "tools", "headless.js");
65
+ const taskApiPath = path.join(corePath, ".collaboration", "core", "task-api.js");
66
+ const roleMapPath = path.join(corePath, ".formation", "role-map.yaml");
67
+ const projectPathFlag = project.mode === "sub-project" ? ` --project-path "${project.path}"` : "";
68
+ // headless-v2.js 雙軸架構:
69
+ // --base = do|plan|think(行為模式,來自 unit/*.yaml)
70
+ // --role = developer|frontend|...(角色專業,來自 role-map.yaml 對照表)
71
+ // 已內建:Auto-claim、依賴預檢、Post-complete、Auto-select
72
+ //
73
+ // Ansuz 的職責:讀取任務 role → 決定 --base 和 --role
74
+ const formationReference = `
75
+ ## Formation Headless V2 參考
76
+
77
+ ### headless-v2.js 雙軸架構
78
+ - **--base**:行為模式(do=執行, plan=規劃, think=分析)
79
+ - **--role**:角色專業(從 role-map.yaml 查找,注入角色 identity 和 strengths)
80
+
81
+ ### headless-v2.js 已自動處理
82
+ - Auto-claim(backlog → active)
83
+ - 依賴預檢(dependencies 未滿足會擋住)
84
+ - Post-complete(archive + git)
85
+ 你不需要手動 claim 或 complete,只需正確組合參數。
86
+
87
+ ### Role 對照表
88
+ 先讀取 ${roleMapPath} 了解所有可用 role。
89
+ 每個 role 有 skill_path、identity、strengths、best_for、not_for。
90
+
91
+ 常見 role:
92
+ | role | 說明 | 適合 |
93
+ |------|------|------|
94
+ | developer | 泛用開發者(全棧) | 跨前後端、系統整合 |
95
+ | frontend | 前端開發 | React/TypeScript UI |
96
+ | backend | 後端工程 | API、DB、Python |
97
+ | designer | UI/UX 設計 | 設計規範產出 |
98
+ | qa | QA 工程師 | 測試、Bug 驗證 |
99
+ | sre | SRE | 基礎設施、部署 |
100
+
101
+ ### Base 選擇
102
+ | base | 用途 | 適合情境 |
103
+ |------|------|---------|
104
+ | do(預設) | 直接執行,交付成果 | 功能開發、Bug 修復 |
105
+ | plan | 拆解問題,交付行動方案 | 需求分析、任務拆解 |
106
+ | think | 深入分析,交付結論 | 根因調查、架構評估 |
107
+
108
+ ### 進階陣型(非 unit)
109
+ 如任務複雜度超出 unit 能力,改用 headless.js(V1):
110
+ | 陣型 | 條件 | headless.js 參數 |
111
+ |------|------|-----------------|
112
+ | solo | 需多角度分析 | --formation=solo --skill=strategy --task=TASK_XXX |
113
+ | squad | 多子任務可並行 | --formation=squad --skill=blitz --task=TASK_XXX |
114
+ | legion | 有順序依賴 | --formation=legion --skill=forge --task=TASK_XXX |
115
+ `;
116
+ let dispatchInstruction;
117
+ if (hasTaskId) {
118
+ // === 指定任務模式 ===
119
+ dispatchInstruction = `
120
+ [k-cli dispatch run — 指定任務模式]
121
+
122
+ 你正在被 k-cli 以非互動方式呼叫。不要詢問用戶問題、不要等待確認。直接執行,遇到錯誤直接輸出錯誤訊息並結束。
123
+
124
+ ## 你的任務
125
+
126
+ Dispatch 指定任務:${taskId}
127
+
128
+ ${formationReference}
129
+
130
+ ## 執行步驟(必須依序完成)
131
+
132
+ ### Step 1: 讀取任務詳情
133
+ \`\`\`bash
134
+ node "${taskApiPath}"${projectPathFlag} get ${taskId}
135
+ \`\`\`
136
+ 確認任務存在。記下 role 欄位。
137
+
138
+ ### Step 2: 判斷 --base 和 --role
139
+ 1. **讀取 ${roleMapPath}** 了解所有可用 role 及其 strengths
140
+ 2. 任務的 role 欄位 → 作為 --role 值
141
+ 3. 根據任務性質判斷 --base(do=執行, plan=規劃, think=分析),預設 do
142
+ 4. **輸出決策說明**:說明為什麼選了這個 base 和 role
143
+
144
+ ### Step 3: Dispatch
145
+ 使用 headless-v2.js(雙軸架構):
146
+ \`\`\`bash
147
+ # unit(最常用)— headless-v2.js
148
+ node "${headlessV2Path}" --base={base} --role={role} --task=${taskId}${projectPathFlag}
149
+
150
+ # 進階陣型 — 仍用 headless.js(V1)
151
+ node "${headlessV1Path}" --formation={formation} --skill={skill} --task=${taskId}${projectPathFlag}
152
+ \`\`\`
153
+ headless-v2.js 會自動處理 claim、依賴檢查、post-complete。
154
+
155
+ ### Step 4: 輸出結果
156
+ 輸出:
157
+ - 任務 ID、role、--base、--role、dispatch 狀態
158
+ - **決策理由**:為什麼選這個 base(任務性質)、為什麼選這個 role(role-map 的 strengths 匹配)
159
+
160
+ ## 專案資訊
161
+ - 專案路徑:${project.path}
162
+ - Core 路徑:${corePath}
163
+ - 模式:${project.mode}
164
+ `;
165
+ }
166
+ else {
167
+ // === Auto 模式(掃描全部待辦) ===
168
+ dispatchInstruction = `
169
+ [k-cli dispatch run --auto — 自動掃描模式]
170
+
171
+ 你正在被 k-cli 以非互動方式呼叫。不要詢問用戶問題、不要等待確認。直接執行,遇到錯誤直接輸出錯誤訊息並結束。
172
+
173
+ ## 你的任務
174
+
175
+ 掃描所有待辦任務,判斷陣型與 skill,依序 dispatch。
176
+
177
+ ${formationReference}
178
+
179
+ ## 執行步驟
180
+
181
+ ### Step 1: 查看待辦任務
182
+ \`\`\`bash
183
+ node "${taskApiPath}"${projectPathFlag} list --status backlog
184
+ \`\`\`
185
+ 如果沒有待辦任務,輸出「無待辦任務」並結束。
186
+
187
+ ### Step 2: 分析每個任務
188
+ 對每個待辦任務:
189
+ 1. 讀取詳情(task get)→ 記下 role
190
+ 2. **讀取 ${roleMapPath}** 確認 role 存在且了解其 strengths
191
+ 3. 判斷 --base(do/plan/think)和 --role
192
+ 4. 輸出每個任務的決策理由(base 選擇原因、role 匹配原因)
193
+
194
+ ### Step 3: 依序 Dispatch
195
+ 按優先級(P0 > P1 > P2 > P3)排序,逐個執行 headless-v2.js:
196
+ \`\`\`bash
197
+ node "${headlessV2Path}" --base={base} --role={role} --task=TASK_XXX${projectPathFlag}
198
+ \`\`\`
199
+ - headless-v2.js 自動處理 claim、依賴檢查、post-complete
200
+ - 無依賴的任務可並行 dispatch(上限 5)
201
+ - 有依賴的等前置完成再 dispatch
202
+
203
+ ### Step 4: 輸出結果
204
+ 輸出所有 dispatch 的任務摘要表格:任務 ID、標題、--base、--role、決策理由、狀態。
205
+
206
+ ## 專案資訊
207
+ - 專案路徑:${project.path}
208
+ - Core 路徑:${corePath}
209
+ - 模式:${project.mode}
210
+ `;
211
+ }
212
+ const fullPrompt = `${ansuzPrompt}\n\n${dispatchInstruction}`;
213
+ const mode = hasTaskId ? taskId : "--auto";
214
+ if (opts.dryRun) {
215
+ const dryResult = {
216
+ dryRun: true,
217
+ action: "dispatch run",
218
+ mode,
219
+ promptLength: fullPrompt.length,
220
+ projectPath: project.path,
221
+ };
222
+ if (opts.json) {
223
+ (0, output_1.output)(dryResult, { json: true });
224
+ }
225
+ else {
226
+ console.log(`\n[dry-run] dispatch run ${mode}`);
227
+ console.log(` Project: ${project.path}`);
228
+ console.log(` Prompt length: ${fullPrompt.length.toLocaleString()} chars`);
229
+ console.log(" Would spawn Ansuz (not executed)");
230
+ }
231
+ return;
232
+ }
233
+ console.log(`Dispatching via Ansuz (${mode})...`);
234
+ console.log(` Project: ${project.path}`);
235
+ const child = (0, spawn_1.spawnClaude)({
236
+ prompt: fullPrompt,
237
+ cwd: corePath,
238
+ projectPath: project.mode === "sub-project" ? project.path : null,
239
+ });
240
+ return (0, spawn_1.streamClaudeOutput)(child);
241
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.run = run;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const project_1 = require("../core/project");
40
+ const process_1 = require("../core/process");
41
+ async function run(taskId, opts = {}) {
42
+ if (!taskId) {
43
+ console.error("Error: task ID is required");
44
+ process.exit(1);
45
+ }
46
+ const project = (0, project_1.resolveProject)(opts.projectPath);
47
+ const corePath = project.core_path;
48
+ const logReaderJs = path.join(corePath, ".formation", "tools", "log-reader.js");
49
+ const tail = opts.tail || 50;
50
+ // Determine log directory: sub-project uses .kenaz/logs/, core uses .formation/logs/
51
+ const logsDir = project.mode === "sub-project"
52
+ ? path.join(project.path, ".kenaz", "logs")
53
+ : path.join(corePath, ".formation", "logs");
54
+ // Search for the latest log containing the taskId
55
+ let logFile = null;
56
+ if (fs.existsSync(logsDir)) {
57
+ const formations = ["unit", "solo", "squad", "legion", "misc", "legacy"];
58
+ let latestTime = 0;
59
+ for (const f of formations) {
60
+ const dir = path.join(logsDir, f);
61
+ if (!fs.existsSync(dir))
62
+ continue;
63
+ const files = fs.readdirSync(dir).filter((name) => name.endsWith(".log"));
64
+ for (const file of files) {
65
+ const filePath = path.join(dir, file);
66
+ const stat = fs.statSync(filePath);
67
+ // Check if log content mentions taskId (by filename pattern or content)
68
+ if (file.toLowerCase().includes(taskId.toLowerCase()) ||
69
+ stat.mtimeMs > latestTime) {
70
+ // Read first few lines to check if it mentions the task
71
+ const head = fs.readFileSync(filePath, "utf-8").slice(0, 2000);
72
+ if (head.includes(taskId)) {
73
+ if (stat.mtimeMs > latestTime) {
74
+ latestTime = stat.mtimeMs;
75
+ logFile = filePath;
76
+ }
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ if (!logFile) {
83
+ // Fallback: try log-reader.js --task (searches core logs)
84
+ try {
85
+ const result = await (0, process_1.nodeProcess)([logReaderJs, "--task", taskId, "--tail", String(tail)], corePath);
86
+ console.log(result);
87
+ return;
88
+ }
89
+ catch {
90
+ console.error(`No log found for ${taskId}`);
91
+ process.exit(1);
92
+ }
93
+ }
94
+ // Use log-reader.js --log <path> for the found log
95
+ try {
96
+ const result = await (0, process_1.nodeProcess)([logReaderJs, "--log", logFile, "--tail", String(tail)], corePath);
97
+ console.log(result);
98
+ }
99
+ catch (e) {
100
+ console.error(`Error: ${e.message}`);
101
+ process.exit(1);
102
+ }
103
+ }
@@ -0,0 +1,283 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ const project_1 = require("./core/project");
38
+ const args = process.argv.slice(2);
39
+ const command = args[0];
40
+ const subcommand = args[1];
41
+ // Positional arg after subcommand (e.g. task get TASK_123)
42
+ const positional = args[2] && !args[2].startsWith("--") ? args[2] : undefined;
43
+ // Collect all non-flag args after subcommand as free-text prompt
44
+ const positionalAll = args.slice(2).filter((a) => !a.startsWith("--")).join(" ") || undefined;
45
+ function parseFlags(argv) {
46
+ const flags = {};
47
+ for (let i = 0; i < argv.length; i++) {
48
+ const arg = argv[i];
49
+ if (arg === "--json")
50
+ flags.json = true;
51
+ else if (arg === "--dry-run")
52
+ flags.dryRun = true;
53
+ else if (arg === "--help" || arg === "-h")
54
+ flags.help = true;
55
+ else if (arg.startsWith("--project-path="))
56
+ flags.projectPath = arg.split("=")[1];
57
+ else if (arg === "--project-path" && argv[i + 1])
58
+ flags.projectPath = argv[++i];
59
+ else if (arg.startsWith("--agent="))
60
+ flags.agent = arg.split("=")[1];
61
+ else if (arg === "--agent" && argv[i + 1])
62
+ flags.agent = argv[++i];
63
+ else if (arg.startsWith("--prompt="))
64
+ flags.prompt = arg.split("=")[1];
65
+ else if (arg === "--prompt" && argv[i + 1])
66
+ flags.prompt = argv[++i];
67
+ else if (arg.startsWith("--max-length="))
68
+ flags.maxLength = parseInt(arg.split("=")[1], 10);
69
+ else if (arg === "--max-length" && argv[i + 1])
70
+ flags.maxLength = parseInt(argv[++i], 10);
71
+ else if (arg.startsWith("--status="))
72
+ flags.status = arg.split("=")[1];
73
+ else if (arg === "--status" && argv[i + 1])
74
+ flags.status = argv[++i];
75
+ else if (arg.startsWith("--title="))
76
+ flags.title = arg.split("=")[1];
77
+ else if (arg === "--title" && argv[i + 1])
78
+ flags.title = argv[++i];
79
+ else if (arg.startsWith("--priority="))
80
+ flags.priority = arg.split("=")[1];
81
+ else if (arg === "--priority" && argv[i + 1])
82
+ flags.priority = argv[++i];
83
+ else if (arg.startsWith("--formation="))
84
+ flags.formation = arg.split("=")[1];
85
+ else if (arg === "--formation" && argv[i + 1])
86
+ flags.formation = argv[++i];
87
+ else if (arg.startsWith("--skill="))
88
+ flags.skill = arg.split("=")[1];
89
+ else if (arg === "--skill" && argv[i + 1])
90
+ flags.skill = argv[++i];
91
+ else if (arg.startsWith("--tail="))
92
+ flags.tail = parseInt(arg.split("=")[1], 10);
93
+ else if (arg === "--tail" && argv[i + 1])
94
+ flags.tail = parseInt(argv[++i], 10);
95
+ else if (arg === "--no-git")
96
+ flags.initGit = false;
97
+ else if (arg.startsWith("--core-path="))
98
+ flags.corePath = arg.split("=")[1];
99
+ else if (arg === "--core-path" && argv[i + 1])
100
+ flags.corePath = argv[++i];
101
+ else if (arg === "--force")
102
+ flags.force = true;
103
+ else if (arg === "--auto")
104
+ flags.auto = true;
105
+ }
106
+ return flags;
107
+ }
108
+ const flags = parseFlags(args);
109
+ if (!command || flags.help) {
110
+ console.log(`
111
+ k-cli — KenazAI CLI
112
+
113
+ Usage: k-cli <command> [subcommand] [options]
114
+
115
+ Commands:
116
+ specialist list List all Specialists (name + prompt)
117
+ specialist run --agent <name> Run a Specialist
118
+ task list List tasks
119
+ task get <id> Get task details
120
+ task create --title <title> Create task (via Ansuz)
121
+ task submit --title <t> ... Create task directly (no Ansuz; for scripts/processes)
122
+ task delete <id> Delete task
123
+ dispatch run <taskId> Dispatch specific task (via Ansuz)
124
+ dispatch run --auto Auto-scan & dispatch all pending tasks
125
+ dispatch status <taskId> Check dispatch status
126
+ dashboard version Show current Dashboard version
127
+ dashboard update Check for update and install
128
+ dashboard update --force Auto-install without prompt
129
+ project status Project overview
130
+ project initialize Initialize sub-project (.kenaz/)
131
+ project install <target> Install template (e.g. k-cli)
132
+ ygg join <key> [--project|--global] Join Yggdrasil without the Dashboard
133
+ ygg status | ygg leave Room/relay/peers/mail; remove project key
134
+ alaya register Register this device with Alaya (device-code login, no Dashboard)
135
+ alaya status Alaya registered / not registered + outbox depth
136
+ ping Health check
137
+
138
+ Global Options:
139
+ --json Output JSON format
140
+ --dry-run Validate without executing
141
+ --project-path <path> Specify sub-project path
142
+ --help, -h Show help
143
+ `);
144
+ process.exit(0);
145
+ }
146
+ (async () => {
147
+ try {
148
+ switch (command) {
149
+ case "specialist": {
150
+ if (subcommand === "list") {
151
+ const { run } = await Promise.resolve().then(() => __importStar(require("./specialist/list")));
152
+ await run(flags);
153
+ }
154
+ else if (subcommand === "run") {
155
+ const { run } = await Promise.resolve().then(() => __importStar(require("./specialist/run")));
156
+ await run(positionalAll || "", flags);
157
+ }
158
+ else {
159
+ console.error(`Unknown subcommand: specialist ${subcommand}`);
160
+ process.exit(1);
161
+ }
162
+ break;
163
+ }
164
+ case "task": {
165
+ if (subcommand === "list") {
166
+ const { run } = await Promise.resolve().then(() => __importStar(require("./task/list")));
167
+ await run(flags);
168
+ }
169
+ else if (subcommand === "get") {
170
+ const { run } = await Promise.resolve().then(() => __importStar(require("./task/get")));
171
+ await run(positional || "", flags);
172
+ }
173
+ else if (subcommand === "create") {
174
+ const { run } = await Promise.resolve().then(() => __importStar(require("./task/create")));
175
+ await run(positionalAll || "", flags);
176
+ }
177
+ else if (subcommand === "submit") {
178
+ const { run } = await Promise.resolve().then(() => __importStar(require("./task/submit")));
179
+ await run(args.slice(2), flags);
180
+ }
181
+ else if (subcommand === "delete") {
182
+ const { run } = await Promise.resolve().then(() => __importStar(require("./task/delete")));
183
+ await run(positional || "", flags);
184
+ }
185
+ else {
186
+ console.error(`Unknown subcommand: task ${subcommand}`);
187
+ process.exit(1);
188
+ }
189
+ break;
190
+ }
191
+ case "dispatch": {
192
+ if (subcommand === "run") {
193
+ const { run } = await Promise.resolve().then(() => __importStar(require("./dispatch/run")));
194
+ await run(positional || "", flags);
195
+ }
196
+ else if (subcommand === "status") {
197
+ const { run } = await Promise.resolve().then(() => __importStar(require("./dispatch/status")));
198
+ await run(positional || "", flags);
199
+ }
200
+ else {
201
+ console.error(`Unknown subcommand: dispatch ${subcommand}`);
202
+ process.exit(1);
203
+ }
204
+ break;
205
+ }
206
+ case "dashboard": {
207
+ if (subcommand === "version") {
208
+ const { run } = await Promise.resolve().then(() => __importStar(require("./dashboard/version")));
209
+ await run(flags);
210
+ }
211
+ else if (subcommand === "update") {
212
+ const { run } = await Promise.resolve().then(() => __importStar(require("./dashboard/update")));
213
+ await run(flags);
214
+ }
215
+ else {
216
+ console.error(`Unknown subcommand: dashboard ${subcommand}`);
217
+ process.exit(1);
218
+ }
219
+ break;
220
+ }
221
+ case "project": {
222
+ if (subcommand === "status") {
223
+ const { run } = await Promise.resolve().then(() => __importStar(require("./project/status")));
224
+ await run(flags);
225
+ }
226
+ else if (subcommand === "initialize" || subcommand === "init") {
227
+ const { run } = await Promise.resolve().then(() => __importStar(require("./project/initialize")));
228
+ await run(flags);
229
+ }
230
+ else if (subcommand === "install") {
231
+ const { run } = await Promise.resolve().then(() => __importStar(require("./project/install")));
232
+ await run(positional || "", flags);
233
+ }
234
+ else {
235
+ console.error(`Unknown subcommand: project ${subcommand}`);
236
+ process.exit(1);
237
+ }
238
+ break;
239
+ }
240
+ case "ygg": {
241
+ const { run } = await Promise.resolve().then(() => __importStar(require("./ygg/run")));
242
+ run(args.slice(1));
243
+ break;
244
+ }
245
+ case "alaya": {
246
+ const mod = await Promise.resolve().then(() => __importStar(require("./alaya/run")));
247
+ if (subcommand === "register")
248
+ await mod.register(flags);
249
+ else if (subcommand === "status")
250
+ await mod.status(flags);
251
+ else {
252
+ console.error(`Unknown subcommand: alaya ${subcommand}`);
253
+ process.exit(1);
254
+ }
255
+ break;
256
+ }
257
+ case "ping": {
258
+ const project = (0, project_1.resolveProject)(flags.projectPath);
259
+ const result = {
260
+ status: "ok",
261
+ version: "0.1.0",
262
+ project: project.name,
263
+ mode: project.mode,
264
+ corePath: project.core_path,
265
+ };
266
+ if (flags.json) {
267
+ console.log(JSON.stringify(result, null, 2));
268
+ }
269
+ else {
270
+ console.log(`k-cli v0.1.0 — ${project.name} (${project.mode})`);
271
+ }
272
+ break;
273
+ }
274
+ default:
275
+ console.error(`Unknown command: ${command}`);
276
+ process.exit(1);
277
+ }
278
+ }
279
+ catch (e) {
280
+ console.error(`Error: ${e.message}`);
281
+ process.exit(1);
282
+ }
283
+ })();