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,93 @@
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(userPrompt, opts = {}) {
43
+ const project = (0, project_1.resolveProject)(opts.projectPath);
44
+ const corePath = project.core_path;
45
+ if (!opts.agent) {
46
+ console.error("Error: --agent <name> is required");
47
+ process.exit(1);
48
+ }
49
+ const sessionJs = path.join(corePath, ".specialist", "tools", "session.js");
50
+ // Assemble prompt
51
+ let prompt;
52
+ try {
53
+ prompt = await (0, process_1.nodeProcess)([sessionJs, "prompt", opts.agent, "--mode=assembled", "--no-muninn"], corePath, 15000);
54
+ }
55
+ catch (e) {
56
+ console.error(`Error: Failed to assemble prompt for ${opts.agent}:`, e.message);
57
+ process.exit(1);
58
+ }
59
+ const headlessNotice = "\n\n[k-cli headless 模式] 你正在被 k-cli 以非互動方式呼叫。不要詢問用戶問題、不要等待確認。直接執行任務,遇到錯誤直接輸出錯誤訊息並結束。";
60
+ const fullPrompt = userPrompt
61
+ ? `${prompt}${headlessNotice}\n\n${userPrompt}`
62
+ : `${prompt}${headlessNotice}`;
63
+ if (opts.dryRun) {
64
+ const dryResult = {
65
+ dryRun: true,
66
+ agent: opts.agent,
67
+ promptLength: fullPrompt.length,
68
+ promptPreview: fullPrompt.slice(0, 500).replace(/\n/g, " "),
69
+ projectPath: project.path,
70
+ };
71
+ if (opts.json) {
72
+ (0, output_1.output)(dryResult, { json: true });
73
+ }
74
+ else {
75
+ console.log(`\n[dry-run] specialist run --agent ${opts.agent}`);
76
+ console.log(` Prompt length: ${fullPrompt.length.toLocaleString()} chars`);
77
+ console.log(` User prompt: ${userPrompt || "(none)"}`);
78
+ console.log(" Would spawn Claude (not executed)");
79
+ }
80
+ return;
81
+ }
82
+ // Execute via spawnClaude
83
+ console.log(`Starting ${opts.agent}...`);
84
+ console.log(` Prompt: ${fullPrompt.length.toLocaleString()} chars`);
85
+ if (userPrompt)
86
+ console.log(` User prompt: ${userPrompt}`);
87
+ const child = (0, spawn_1.spawnClaude)({
88
+ prompt: fullPrompt,
89
+ cwd: corePath,
90
+ projectPath: project.mode === "sub-project" ? project.path : null,
91
+ });
92
+ return (0, spawn_1.streamClaudeOutput)(child);
93
+ }
@@ -0,0 +1,194 @@
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(prompt, opts = {}) {
43
+ if (!prompt) {
44
+ console.error("Usage: k-cli task create <描述你要建立的任務>");
45
+ console.error("Example: k-cli task create 幫我創建 hello_world.js 輸出 Hello World");
46
+ process.exit(1);
47
+ }
48
+ const project = (0, project_1.resolveProject)(opts.projectPath);
49
+ const corePath = project.core_path;
50
+ const sessionJs = path.join(corePath, ".specialist", "tools", "session.js");
51
+ const taskApiPath = path.join(corePath, ".collaboration", "core", "task-api.js");
52
+ const projectPathFlag = project.mode === "sub-project" ? ` --project-path "${project.path}"` : "";
53
+ // Assemble both prompts upfront (avoid nested CLI spawn)
54
+ let ansuzPrompt;
55
+ let ameliaPrompt;
56
+ try {
57
+ [ansuzPrompt, ameliaPrompt] = await Promise.all([
58
+ (0, process_1.nodeProcess)([sessionJs, "prompt", "Ansuz", "--mode=assembled", "--no-muninn"], corePath, 15000),
59
+ (0, process_1.nodeProcess)([sessionJs, "prompt", "Amelia", "--mode=assembled", "--no-muninn"], corePath, 15000),
60
+ ]);
61
+ }
62
+ catch (e) {
63
+ console.error("Error: Failed to assemble prompts:", e.message);
64
+ process.exit(1);
65
+ }
66
+ const taskCreateInstruction = `
67
+ [k-cli task create — 快速任務建立模式]
68
+
69
+ 你正在被 k-cli 以非互動方式呼叫。不要詢問用戶問題、不要等待確認。直接執行,遇到錯誤直接輸出錯誤訊息並結束。
70
+
71
+ ## 你的任務
72
+
73
+ 根據以下用戶描述,建立一個高品質任務:
74
+ 「${prompt}」
75
+
76
+ ## 執行步驟(必須依序完成)
77
+
78
+ ### Step 1: 分析需求
79
+ - 理解用戶描述的核心目標
80
+ - 確定需求類型(新功能/Bug/優化/重構)
81
+ - 搜尋相關代碼,確認影響範圍
82
+
83
+ ### Step 2: 整理任務內容
84
+ 將分析結果整理為結構化的任務草稿(尚不建立):
85
+ - title: 簡潔明確,一看就懂要做什麼
86
+ - description: 包含背景、目標、預期行為
87
+ - priority: P0/P1/P2/P3
88
+ - scope_paths: 必須具體到目錄層級(不可留空)
89
+ - requirements: 每條需求獨立、可執行(至少 3 條)
90
+ - acceptance_criteria: 每條可測試、可驗證(至少 3 條,不可寫模糊描述如「功能正常」)
91
+ - tags: code/doc/plan/fix/refactor/test/design/review
92
+ - complexity: simple/medium/complex
93
+ - rigor: high/medium/low
94
+ - estimated_hours: 預估工時
95
+
96
+ ### Step 3: 呼叫 Amelia 審查 + 取得 Role
97
+
98
+ **重要:不要用 Bash tool 呼叫 CLI。使用 Agent tool 開 subagent 來執行 Amelia 審查。**
99
+
100
+ 使用 Agent tool,prompt 內容如下(將任務草稿內容填入):
101
+
102
+ \`\`\`
103
+ ${ameliaPrompt}
104
+
105
+ [k-cli task create — 任務審查模式]
106
+
107
+ 你正在被 k-cli 以非互動方式呼叫。不要詢問用戶問題、不要等待確認。
108
+
109
+ 請審查以下任務草稿並提供建議,然後判斷最適合的 Formation role。
110
+
111
+ **重要:你必須根據你的 capability.yaml 中定義的 available_roles 來判斷 role。**
112
+ 先讀取 ${corePath}/.specialist/Amelia/capability.yaml 的 role_assignment.available_roles 段落,
113
+ 了解每個 role 的 identity、strengths、best_for、not_for,然後依據 decision_flow 做出判斷。
114
+
115
+ 任務草稿:
116
+ (將你的任務草稿 JSON 貼在這裡)
117
+
118
+ 審查要點:
119
+ 1. title 是否簡潔明確?
120
+ 2. requirements 是否每條獨立、可執行?(至少 3 條)
121
+ 3. acceptance_criteria 是否每條可測試、可驗證?(至少 3 條)
122
+ 4. scope_paths 是否具體到目錄層級?
123
+ 5. 根據 available_roles 判斷最適合的 Formation role(必須說明判斷理由)
124
+
125
+ 回覆格式:
126
+ ROLE: <role名稱>
127
+ ROLE_REASON: <為什麼選這個 role — 程式碼跑在哪裡、哪個 agent 的 strengths 最匹配>
128
+ SUGGESTIONS: <建議內容>
129
+ 如有修正建議,直接列出修正後的欄位值。
130
+ \`\`\`
131
+
132
+ 讀取 Amelia subagent 的回覆,採納合理的建議修正任務內容,並取得 role。
133
+ 如果 Amelia 無回覆或錯誤,禁止降級 — 直接報錯並結束。
134
+
135
+ ### Step 4: 建立高品質任務
136
+ 將 Amelia 審查後的最終版本寫入任務系統:
137
+
138
+ \`\`\`bash
139
+ node "${taskApiPath}"${projectPathFlag} create \\
140
+ --title "最終標題" \\
141
+ --description "最終描述" \\
142
+ --priority P1 \\
143
+ --role [Amelia判斷的role] \\
144
+ --rigor medium \\
145
+ --complexity medium \\
146
+ --tags code \\
147
+ --scope-paths "具體路徑" \\
148
+ --requirements "需求1" --requirements "需求2" --requirements "需求3" \\
149
+ --acceptance-criteria "驗收標準1" --acceptance-criteria "標準2" --acceptance-criteria "標準3" \\
150
+ --estimated-hours 4
151
+ \`\`\`
152
+
153
+ ### Step 5: 輸出結果
154
+ 輸出建立的任務摘要:任務 ID、標題、role(Amelia 判斷)、priority、scope_paths。
155
+ 如果 Amelia 有提出建議且已採納,簡要說明修正了什麼。
156
+
157
+ ## 專案資訊
158
+ - 專案路徑:${project.path}
159
+ - Core 路徑:${corePath}
160
+ - 模式:${project.mode}
161
+ `;
162
+ // Non-interactive override MUST come before Ansuz prompt to override mandatory stops
163
+ const fullPrompt = `${taskCreateInstruction}\n\n--- Ansuz Knowledge Base (reference only, do NOT follow its interactive workflow) ---\n${ansuzPrompt}`;
164
+ if (opts.dryRun) {
165
+ const dryResult = {
166
+ dryRun: true,
167
+ action: "task create",
168
+ prompt,
169
+ promptLength: fullPrompt.length,
170
+ projectPath: project.path,
171
+ };
172
+ if (opts.json) {
173
+ (0, output_1.output)(dryResult, { json: true });
174
+ }
175
+ else {
176
+ console.log("\n[dry-run] task create");
177
+ console.log(` Prompt: ${prompt}`);
178
+ console.log(` Ansuz prompt: ${ansuzPrompt.length.toLocaleString()} chars`);
179
+ console.log(` Amelia prompt (embedded): ${ameliaPrompt.length.toLocaleString()} chars`);
180
+ console.log(" Would spawn Ansuz with Agent tool (Amelia as subagent)");
181
+ }
182
+ return;
183
+ }
184
+ console.log(`Creating task via Ansuz...`);
185
+ console.log(` ${prompt} ${project.path}`);
186
+ const child = (0, spawn_1.spawnClaude)({
187
+ prompt: fullPrompt,
188
+ cwd: corePath,
189
+ allowedTools: "Bash,Read,Edit,Write,Glob,Grep,Agent",
190
+ disallowedTools: "AskUserQuestion,TodoWrite",
191
+ projectPath: project.mode === "sub-project" ? project.path : null,
192
+ });
193
+ return (0, spawn_1.streamClaudeOutput)(child);
194
+ }
@@ -0,0 +1,98 @@
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 output_1 = require("../core/output");
41
+ const TASK_STATUSES = ["backlog", "active", "done", "blocked", "cancel"];
42
+ function findTaskFile(tasksDir, taskId) {
43
+ for (const status of TASK_STATUSES) {
44
+ const dir = path.join(tasksDir, status);
45
+ if (!fs.existsSync(dir))
46
+ continue;
47
+ const files = fs.readdirSync(dir);
48
+ const match = files.find((f) => f.startsWith(taskId));
49
+ if (match) {
50
+ return { filePath: path.join(dir, match), statusDir: status };
51
+ }
52
+ }
53
+ return null;
54
+ }
55
+ async function run(taskId, opts = {}) {
56
+ if (!taskId) {
57
+ console.error("Error: task ID is required");
58
+ process.exit(1);
59
+ }
60
+ const project = (0, project_1.resolveProject)(opts.projectPath);
61
+ const tasksDir = project.mode === "sub-project"
62
+ ? path.join(project.path, ".kenaz", "tasks")
63
+ : path.join(project.core_path, ".collaboration", "tasks");
64
+ if (opts.dryRun) {
65
+ const found = findTaskFile(tasksDir, taskId);
66
+ const dryResult = {
67
+ dryRun: true,
68
+ action: "task delete",
69
+ taskId,
70
+ found: found ? found.statusDir : null,
71
+ projectPath: project.path,
72
+ };
73
+ if (opts.json) {
74
+ (0, output_1.output)(dryResult, { json: true });
75
+ }
76
+ else {
77
+ console.log("\n[dry-run] task delete");
78
+ console.log(` Task: ${taskId}`);
79
+ if (found) {
80
+ console.log(` Found in: ${found.statusDir}/`);
81
+ console.log(` File: ${found.filePath}`);
82
+ }
83
+ else {
84
+ console.log(" Task not found");
85
+ }
86
+ console.log(" Would delete task (not executed)");
87
+ }
88
+ return;
89
+ }
90
+ const found = findTaskFile(tasksDir, taskId);
91
+ if (!found) {
92
+ console.error(`Error: Task ${taskId} not found`);
93
+ process.exit(1);
94
+ }
95
+ console.log(`Deleting ${taskId} (${found.statusDir})...`);
96
+ fs.unlinkSync(found.filePath);
97
+ console.log(`Deleted: ${taskId}`);
98
+ }
@@ -0,0 +1,55 @@
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
+ async function run(taskId, opts = {}) {
41
+ if (!taskId) {
42
+ console.error("Error: task ID is required");
43
+ process.exit(1);
44
+ }
45
+ const project = (0, project_1.resolveProject)(opts.projectPath);
46
+ const taskApiJs = path.join(project.core_path, ".collaboration", "core", "task-api.js");
47
+ try {
48
+ const result = await (0, process_1.nodeProcess)([taskApiJs, "--project-path", project.path, "get", taskId], project.core_path, 10000, process.execPath, false);
49
+ console.log(result);
50
+ }
51
+ catch (e) {
52
+ console.error(`Error: ${e.message}`);
53
+ process.exit(1);
54
+ }
55
+ }
@@ -0,0 +1,58 @@
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
+ async function run(opts = {}) {
41
+ const project = (0, project_1.resolveProject)(opts.projectPath);
42
+ const taskApiJs = path.join(project.core_path, ".collaboration", "core", "task-api.js");
43
+ const args = [taskApiJs, "--project-path", project.path, "list"];
44
+ if (opts.status)
45
+ args.push("--status", opts.status);
46
+ if (opts.priority)
47
+ args.push("--priority", opts.priority);
48
+ if (opts.json)
49
+ args.push("--format", "json");
50
+ try {
51
+ const result = await (0, process_1.nodeProcess)(args, project.core_path, 10000, process.execPath, false);
52
+ console.log(result);
53
+ }
54
+ catch (e) {
55
+ console.error(`Error: ${e.message}`);
56
+ process.exit(1);
57
+ }
58
+ }
@@ -0,0 +1,156 @@
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 output_1 = require("../core/output");
41
+ /** Remove a flag (and its value token, if given as a separate argv entry) from argv. */
42
+ function stripFlag(argv, flag, takesValue) {
43
+ const out = [];
44
+ for (let i = 0; i < argv.length; i++) {
45
+ const a = argv[i];
46
+ if (a === flag) {
47
+ if (takesValue && argv[i + 1] !== undefined && !argv[i + 1].startsWith("--"))
48
+ i++;
49
+ continue;
50
+ }
51
+ if (a.startsWith(flag + "="))
52
+ continue;
53
+ out.push(a);
54
+ }
55
+ return out;
56
+ }
57
+ function hasFlag(argv, flag) {
58
+ return argv.some((a) => a === flag || a.startsWith(flag + "="));
59
+ }
60
+ /**
61
+ * k-cli task submit — minimal project-side task producer (TASK_2147).
62
+ *
63
+ * Problem: a sub-project's own process (e.g. an in-app agent) wants to turn
64
+ * something into a Kenaz task and later read back its outcome, without
65
+ * duplicating core-resolve.js's logic (core_path token, KENAZ_SOURCE_DIR,
66
+ * install-dir discovery) just to find task-api.js.
67
+ *
68
+ * `submit` is a thin, deterministic passthrough to `task-api.js create`:
69
+ * - Core resolution is handled by resolveProject() (reads .kenaz/project.yaml,
70
+ * written once by `k-cli project initialize`) — the caller never needs
71
+ * KENAZ_SOURCE_DIR or to know where KenazAI core lives.
72
+ * - No LLM call, no Claude CLI dependency, no role/quality analysis — unlike
73
+ * `task create`, which spawns a full Ansuz+Amelia session. That heavier
74
+ * path stays for human/interactive use; `submit` is for callers that
75
+ * already know their task fields and just need the plumbing.
76
+ * - Every task gets an origin tag (task.source) so it's auditable, and is
77
+ * always written to backlog via the normal createTask() quality gate —
78
+ * never auto-dispatched.
79
+ *
80
+ * Deliberately NOT an HTTP server: the caller is a local process that can
81
+ * already spawn `node`/`k-cli`; a server would add a port, a lifecycle and
82
+ * an auth surface for no new capability a single sub-project consumer needs.
83
+ */
84
+ async function run(rawArgs, opts = {}) {
85
+ const project = (0, project_1.resolveProject)(opts.projectPath);
86
+ const taskApiJs = path.join(project.core_path, ".collaboration", "core", "task-api.js");
87
+ // --project-path/--json/--dry-run are k-cli-level flags already consumed
88
+ // into `opts` by index.ts; don't forward them verbatim to task-api.js.
89
+ let forwarded = stripFlag(rawArgs, "--project-path", true);
90
+ forwarded = stripFlag(forwarded, "--json", false);
91
+ forwarded = stripFlag(forwarded, "--dry-run", false);
92
+ const hasOrigin = hasFlag(forwarded, "--source") || hasFlag(forwarded, "--origin");
93
+ const origin = project.mode === "sub-project" ? project.name : "core";
94
+ const sourceArgs = hasOrigin ? [] : ["--source", origin];
95
+ const args = [
96
+ taskApiJs,
97
+ "--project-path",
98
+ project.path,
99
+ "create",
100
+ ...sourceArgs,
101
+ ...forwarded,
102
+ ];
103
+ if (opts.dryRun) {
104
+ const dryResult = {
105
+ dryRun: true,
106
+ action: "task submit",
107
+ projectPath: project.path,
108
+ projectMode: project.mode,
109
+ corePath: project.core_path,
110
+ origin: hasOrigin ? "(explicit --source/--origin)" : origin,
111
+ command: `node ${args.join(" ")}`,
112
+ };
113
+ if (opts.json) {
114
+ (0, output_1.output)(dryResult, { json: true });
115
+ }
116
+ else {
117
+ console.log("\n[dry-run] task submit");
118
+ console.log(` Project: ${project.path} (${project.mode})`);
119
+ console.log(` Core: ${project.core_path}`);
120
+ console.log(` Origin: ${dryResult.origin}`);
121
+ console.log(` Would run: node ${args.join(" ")}`);
122
+ }
123
+ return;
124
+ }
125
+ let createOut;
126
+ try {
127
+ createOut = await (0, process_1.nodeProcess)(args, project.core_path, 20000, process.execPath, false);
128
+ }
129
+ catch (e) {
130
+ if (opts.json) {
131
+ (0, output_1.output)({ error: e.message }, { json: true });
132
+ }
133
+ else {
134
+ console.error(`Error: ${e.message}`);
135
+ }
136
+ process.exit(1);
137
+ }
138
+ if (!opts.json) {
139
+ console.log(createOut);
140
+ return;
141
+ }
142
+ // Anchor on the success line: earlier warnings may mention other task ids.
143
+ const match = createOut.match(/任務已建立:\s*(TASK_\d+)/);
144
+ const taskId = match ? match[1] : null;
145
+ if (!taskId) {
146
+ (0, output_1.output)({ error: "could not parse task id from task-api.js output", raw: createOut }, { json: true });
147
+ process.exit(1);
148
+ }
149
+ try {
150
+ const getOut = await (0, process_1.nodeProcess)([taskApiJs, "--project-path", project.path, "get", taskId], project.core_path, 10000, process.execPath, false);
151
+ (0, output_1.output)(JSON.parse(getOut), { json: true });
152
+ }
153
+ catch (e) {
154
+ (0, output_1.output)({ id: taskId, warning: `created but read-back failed: ${e.message}` }, { json: true });
155
+ }
156
+ }