kenaz 0.3.2 → 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 (390) 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/tests/hello.txt +2 -2
  39. package/core/.formation/tools/prompt.js +58 -5
  40. package/core/.formation/tools/prompt.test.js +29 -0
  41. package/core/.kenaz/claude-hooks-manifest.json +16 -16
  42. package/core/.kenaz/knowledge/ladybug_2c51da1e_shadow_file_frame_group.patch +163 -163
  43. package/core/.kenaz/knowledge/ladybug_30cf85690e_shadow_page_read_during_checkpoint.patch +393 -393
  44. package/core/.kenaz/knowledge/ladybug_7a17858d3a_node_group_delete_lock.patch +102 -102
  45. package/core/.kenaz/knowledge/ladybug_926a0ba1_column_checkpoint.patch +412 -412
  46. package/core/.kenaz/knowledge/ladybug_a346c4c4b6_pk_index_header_pages.patch +144 -144
  47. package/core/.kenaz/knowledge/ladybug_ba5f38815b_csr_node_group.patch +86 -86
  48. package/core/.kenaz/muninn_episode_write.ps1 +17 -17
  49. package/core/.kenaz/specialist/field_report_watermark.json +1 -1
  50. package/core/.kenaz/specialist/memory_guard_fired.json +1 -1
  51. package/core/.kenaz/specialist/memory_guard_trigger_cache.json +1 -1
  52. package/core/.kenaz/specialist/t1777_probe.txt +1 -1
  53. package/core/.matrix/index.matrix +5 -5
  54. package/core/.specialist/Ansuz/RULES.md +6 -10
  55. package/core/.specialist/tools/__tests__/task-2218-boot-session-id.test.js +17 -1
  56. package/core/.specialist/tools/__tests__/task-2222-session-identity-interleave.test.js +17 -1
  57. package/core/.specialist/tools/__tests__/task-2254-handoff-archive-contract.test.js +6 -5
  58. package/core/.specialist/tools/ansuz-boot-fast.js +44 -100
  59. package/core/.specialist/tools/ansuz-boot-fast.test.js +45 -1
  60. package/core/KENAZ_CORE_VERSION +1 -1
  61. package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +355 -355
  62. package/core/dev/JEV_INTEGRATION_PLAN.md +189 -189
  63. package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +13 -13
  64. package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +9 -9
  65. package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +14 -14
  66. package/core/dev/design/matrix_v2_EXAMPLE.matrix +67 -67
  67. package/core/dev/jev-eval/ACTIVE_CORRECTION.md +52 -52
  68. package/core/dev/jev-eval/CONTEXT_REVIEW.md +31 -31
  69. package/core/dev/jev-eval/EVALUATION_STATUS.md +39 -39
  70. package/core/dev/jev-eval/HISTORICAL_CORPUS.md +33 -33
  71. package/core/dev/jev-eval/README.md +99 -99
  72. package/core/dev/jev-eval/THALAMUS_RANKING.md +58 -58
  73. package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +32 -32
  74. package/core/dev/jev-eval/reports/context-review-2026-09-20.json +48 -48
  75. package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +52 -52
  76. package/core/dev/pipeline/SELF_ENHANCEMENT_STATUS.json.bak +47 -47
  77. package/core/dev/pipeline/tasks/.gitkeep +1 -1
  78. package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +27 -27
  79. package/core/dev/plans/ANSUZ_SLIM_PLAN.md +68 -0
  80. package/core/dev/scripts/init_git.sh +0 -0
  81. package/core/dev/scripts/init_project.sh +0 -0
  82. package/core/dev/scripts/legacy/dev_agent_scheduler.ps1.bak +536 -536
  83. package/core/dev/scripts/legacy/multi_agent_scheduler.ps1.bak +1978 -1978
  84. package/core/dev/scripts/matrix/src/cli/commands/list-tags.ts.wip +140 -140
  85. package/core/dev/scripts/matrix/src/cli/commands/manage-tags.ts.wip +173 -173
  86. package/core/dev/scripts/matrix/src/cli/commands/stats.ts.wip +168 -168
  87. package/core/dev/scripts/matrix/src/cli/commands/tokens.ts.wip +126 -126
  88. package/core/dev/scripts/multi_agent_scheduler.sh +0 -0
  89. package/core/dev/scripts/run_once.sh +0 -0
  90. package/core/dev/scripts/setup_mcp.sh +0 -0
  91. package/core/dev/scripts/setup_rag.sh +0 -0
  92. package/core/dev/scripts/start_dev_agent.sh +0 -0
  93. package/core/dev/scripts/start_multi_agent.sh +0 -0
  94. package/core/dev/scripts/sync_task_queue.sh +0 -0
  95. package/core/k-cli/dist/alaya/run.js +91 -0
  96. package/core/k-cli/dist/core/output.js +24 -0
  97. package/core/k-cli/dist/core/process.js +38 -0
  98. package/core/k-cli/dist/core/project.js +80 -0
  99. package/core/k-cli/dist/core/spawn.js +268 -0
  100. package/core/k-cli/dist/core/types.js +2 -0
  101. package/core/k-cli/dist/dashboard/update.js +53 -0
  102. package/core/k-cli/dist/dashboard/version.js +20 -0
  103. package/core/k-cli/dist/dispatch/run.js +241 -0
  104. package/core/k-cli/dist/dispatch/status.js +103 -0
  105. package/core/k-cli/dist/index.js +283 -0
  106. package/core/k-cli/dist/project/initialize.js +301 -0
  107. package/core/k-cli/dist/project/install.js +89 -0
  108. package/core/k-cli/dist/project/status.js +138 -0
  109. package/core/k-cli/dist/specialist/list.js +100 -0
  110. package/core/k-cli/dist/specialist/run.js +93 -0
  111. package/core/k-cli/dist/task/create.js +194 -0
  112. package/core/k-cli/dist/task/delete.js +98 -0
  113. package/core/k-cli/dist/task/get.js +55 -0
  114. package/core/k-cli/dist/task/list.js +58 -0
  115. package/core/k-cli/dist/task/submit.js +156 -0
  116. package/core/k-cli/dist/ygg/run.js +51 -0
  117. package/core/k-cli/node_modules/.bin/yaml +16 -0
  118. package/core/k-cli/node_modules/.bin/yaml.cmd +17 -0
  119. package/core/k-cli/node_modules/.bin/yaml.ps1 +28 -0
  120. package/core/k-cli/node_modules/.package-lock.json +23 -0
  121. package/core/k-cli/node_modules/yaml/LICENSE +13 -0
  122. package/core/k-cli/node_modules/yaml/README.md +172 -0
  123. package/core/k-cli/node_modules/yaml/bin.mjs +11 -0
  124. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
  125. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
  126. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
  127. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
  128. package/core/k-cli/node_modules/yaml/browser/dist/compose/composer.js +217 -0
  129. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
  130. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
  131. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
  132. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
  133. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
  134. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +223 -0
  135. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
  136. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
  137. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
  138. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
  139. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
  140. package/core/k-cli/node_modules/yaml/browser/dist/doc/Document.js +335 -0
  141. package/core/k-cli/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
  142. package/core/k-cli/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
  143. package/core/k-cli/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
  144. package/core/k-cli/node_modules/yaml/browser/dist/doc/directives.js +176 -0
  145. package/core/k-cli/node_modules/yaml/browser/dist/errors.js +57 -0
  146. package/core/k-cli/node_modules/yaml/browser/dist/index.js +17 -0
  147. package/core/k-cli/node_modules/yaml/browser/dist/log.js +11 -0
  148. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Alias.js +114 -0
  149. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
  150. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
  151. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
  152. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  153. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
  154. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
  155. package/core/k-cli/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
  156. package/core/k-cli/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  157. package/core/k-cli/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
  158. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
  159. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
  160. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
  161. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst.js +98 -0
  162. package/core/k-cli/node_modules/yaml/browser/dist/parse/lexer.js +717 -0
  163. package/core/k-cli/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
  164. package/core/k-cli/node_modules/yaml/browser/dist/parse/parser.js +967 -0
  165. package/core/k-cli/node_modules/yaml/browser/dist/public-api.js +102 -0
  166. package/core/k-cli/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
  167. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
  168. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
  169. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
  170. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  171. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
  172. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
  173. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
  174. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  175. package/core/k-cli/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
  176. package/core/k-cli/node_modules/yaml/browser/dist/schema/tags.js +96 -0
  177. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
  178. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
  179. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
  180. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
  181. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +64 -0
  182. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
  183. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
  184. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
  185. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
  186. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  187. package/core/k-cli/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
  188. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
  189. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
  190. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
  191. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
  192. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +24 -0
  193. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
  194. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
  195. package/core/k-cli/node_modules/yaml/browser/dist/util.js +11 -0
  196. package/core/k-cli/node_modules/yaml/browser/dist/visit.js +233 -0
  197. package/core/k-cli/node_modules/yaml/browser/index.js +5 -0
  198. package/core/k-cli/node_modules/yaml/browser/package.json +3 -0
  199. package/core/k-cli/node_modules/yaml/dist/cli.d.ts +8 -0
  200. package/core/k-cli/node_modules/yaml/dist/cli.mjs +201 -0
  201. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  202. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  203. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  204. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  205. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
  206. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.js +112 -0
  207. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  208. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  209. package/core/k-cli/node_modules/yaml/dist/compose/composer.d.ts +63 -0
  210. package/core/k-cli/node_modules/yaml/dist/compose/composer.js +222 -0
  211. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  212. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  213. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  214. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  215. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  216. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  217. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  218. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  219. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  220. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  221. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  222. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.js +225 -0
  223. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  224. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  225. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  226. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  227. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  228. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  229. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  230. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  231. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  232. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  233. package/core/k-cli/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  234. package/core/k-cli/node_modules/yaml/dist/doc/Document.js +337 -0
  235. package/core/k-cli/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  236. package/core/k-cli/node_modules/yaml/dist/doc/anchors.js +76 -0
  237. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  238. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  239. package/core/k-cli/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  240. package/core/k-cli/node_modules/yaml/dist/doc/createNode.js +90 -0
  241. package/core/k-cli/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  242. package/core/k-cli/node_modules/yaml/dist/doc/directives.js +178 -0
  243. package/core/k-cli/node_modules/yaml/dist/errors.d.ts +21 -0
  244. package/core/k-cli/node_modules/yaml/dist/errors.js +62 -0
  245. package/core/k-cli/node_modules/yaml/dist/index.d.ts +25 -0
  246. package/core/k-cli/node_modules/yaml/dist/index.js +50 -0
  247. package/core/k-cli/node_modules/yaml/dist/log.d.ts +3 -0
  248. package/core/k-cli/node_modules/yaml/dist/log.js +19 -0
  249. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
  250. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.js +116 -0
  251. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  252. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.js +151 -0
  253. package/core/k-cli/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
  254. package/core/k-cli/node_modules/yaml/dist/nodes/Node.js +40 -0
  255. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
  256. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.js +39 -0
  257. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.d.ts +43 -0
  258. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  259. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  260. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  261. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  262. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  263. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  264. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  265. package/core/k-cli/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  266. package/core/k-cli/node_modules/yaml/dist/nodes/identity.js +53 -0
  267. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
  268. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.js +39 -0
  269. package/core/k-cli/node_modules/yaml/dist/options.d.ts +350 -0
  270. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  271. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  272. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  273. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  274. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  275. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  276. package/core/k-cli/node_modules/yaml/dist/parse/cst.d.ts +109 -0
  277. package/core/k-cli/node_modules/yaml/dist/parse/cst.js +112 -0
  278. package/core/k-cli/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  279. package/core/k-cli/node_modules/yaml/dist/parse/lexer.js +719 -0
  280. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  281. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.js +41 -0
  282. package/core/k-cli/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  283. package/core/k-cli/node_modules/yaml/dist/parse/parser.js +972 -0
  284. package/core/k-cli/node_modules/yaml/dist/public-api.d.ts +44 -0
  285. package/core/k-cli/node_modules/yaml/dist/public-api.js +107 -0
  286. package/core/k-cli/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
  287. package/core/k-cli/node_modules/yaml/dist/schema/Schema.js +39 -0
  288. package/core/k-cli/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  289. package/core/k-cli/node_modules/yaml/dist/schema/common/map.js +19 -0
  290. package/core/k-cli/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  291. package/core/k-cli/node_modules/yaml/dist/schema/common/null.js +17 -0
  292. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  293. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.js +19 -0
  294. package/core/k-cli/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  295. package/core/k-cli/node_modules/yaml/dist/schema/common/string.js +16 -0
  296. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  297. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.js +21 -0
  298. package/core/k-cli/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  299. package/core/k-cli/node_modules/yaml/dist/schema/core/float.js +47 -0
  300. package/core/k-cli/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  301. package/core/k-cli/node_modules/yaml/dist/schema/core/int.js +42 -0
  302. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  303. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.js +25 -0
  304. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  305. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.js +64 -0
  306. package/core/k-cli/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  307. package/core/k-cli/node_modules/yaml/dist/schema/tags.d.ts +48 -0
  308. package/core/k-cli/node_modules/yaml/dist/schema/tags.js +99 -0
  309. package/core/k-cli/node_modules/yaml/dist/schema/types.d.ts +92 -0
  310. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  311. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  312. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  313. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  314. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  315. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  316. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  317. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  318. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
  319. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.js +68 -0
  320. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
  321. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  322. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  323. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  324. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  325. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  326. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  327. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  328. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  329. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  330. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  331. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  332. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  333. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.js +132 -0
  334. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  335. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  336. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  337. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  338. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  339. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  340. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  341. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.js +26 -0
  342. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  343. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  344. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  345. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  346. package/core/k-cli/node_modules/yaml/dist/test-events.d.ts +4 -0
  347. package/core/k-cli/node_modules/yaml/dist/test-events.js +134 -0
  348. package/core/k-cli/node_modules/yaml/dist/util.d.ts +16 -0
  349. package/core/k-cli/node_modules/yaml/dist/util.js +28 -0
  350. package/core/k-cli/node_modules/yaml/dist/visit.d.ts +102 -0
  351. package/core/k-cli/node_modules/yaml/dist/visit.js +236 -0
  352. package/core/k-cli/node_modules/yaml/package.json +97 -0
  353. package/core/k-cli/node_modules/yaml/util.js +2 -0
  354. package/core/plugins/kenaz/commands/Ansuz.md +19 -30
  355. package/core/plugins/kenaz/hooks/hooks.json +1 -5
  356. package/core/plugins/kenaz/hooks/kenaz-hook.js +0 -4
  357. package/core/plugins/kenaz/scripts/kenaz.test.js +1 -1
  358. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/charts.csv +26 -26
  359. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/colors.csv +97 -97
  360. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/icons.csv +101 -101
  361. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/landing.csv +31 -31
  362. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/products.csv +96 -96
  363. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  364. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  365. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  366. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  367. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  368. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  369. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  370. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  371. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  372. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  373. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  374. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  375. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  376. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  377. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/styles.csv +68 -68
  378. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/typography.csv +57 -57
  379. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
  380. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  381. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
  382. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/core.py +253 -253
  383. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
  384. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/search.py +106 -106
  385. package/lib/cli.js +36 -2
  386. package/lib/cli.test.js +24 -0
  387. package/lib/dashboard.js +10 -0
  388. package/package.json +6 -6
  389. package/core/.specialist/tools/__tests__/task-1863-boot-lease-reuse.test.js +0 -99
  390. package/core/.specialist/tools/__tests__/task-1977-banner-cap.test.js +0 -129
@@ -0,0 +1,301 @@
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 yaml = __importStar(require("yaml"));
40
+ const project_1 = require("../core/project");
41
+ const process_1 = require("../core/process");
42
+ const output_1 = require("../core/output");
43
+ const TASK_STATUSES = ["backlog", "active", "done", "blocked", "cancel"];
44
+ const LOG_FORMATIONS = ["unit", "solo", "squad", "legion", "misc", "legacy"];
45
+ /** Normalize path separators to forward slashes (cross-platform YAML output) */
46
+ function normalizePath(p) {
47
+ return p.replace(/\\/g, "/");
48
+ }
49
+ const GITIGNORE_CONTENT = `# Kenaz AI Project .gitignore
50
+
51
+ # Python
52
+ __pycache__/
53
+ *.py[cod]
54
+ venv/
55
+ .venv/
56
+
57
+ # Node.js
58
+ node_modules/
59
+ npm-debug.log*
60
+
61
+ # IDE
62
+ .idea/
63
+ .vscode/
64
+ *.swp
65
+ *~
66
+
67
+ # OS
68
+ .DS_Store
69
+ Thumbs.db
70
+
71
+ # Environment
72
+ .env
73
+ .env.local
74
+ .env.*.local
75
+
76
+ # Logs
77
+ *.log
78
+
79
+ # Build outputs
80
+ dist/
81
+ build/
82
+ out/
83
+ .next/
84
+
85
+ # Kenaz AI specific
86
+ kenaz-cortex/.chroma/
87
+ kenaz-cortex/.cortex_cache/
88
+ *.db
89
+ *.sqlite
90
+ dev/pipeline/logs/*.log
91
+ dev/pipeline/archive/
92
+
93
+ # Secrets
94
+ *.pem
95
+ *.key
96
+ credentials.json
97
+ service-account.json
98
+ `;
99
+ const GITATTRIBUTES_CONTENT = `* text=auto
100
+ *.bat text eol=crlf
101
+ *.cmd text eol=crlf
102
+ *.sh text eol=lf
103
+ *.ps1 text eol=crlf
104
+ *.png binary
105
+ *.jpg binary
106
+ *.jpeg binary
107
+ *.gif binary
108
+ *.ico binary
109
+ *.pdf binary
110
+ `;
111
+ async function run(opts = {}) {
112
+ const project = (0, project_1.resolveProject)(opts.projectPath);
113
+ const absoluteTarget = project.path;
114
+ // core_path 優先級:--core-path flag > CLI 位置上一層(k-cli/../)
115
+ const cliRoot = path.resolve(__dirname, "..", ".."); // dist/project/ → dist/ → k-cli/
116
+ const defaultCorePath = path.resolve(cliRoot, ".."); // k-cli/ → KenazAI/
117
+ const corePath = opts.corePath || defaultCorePath;
118
+ const initGit = opts.initGit !== false; // default true
119
+ const result = {
120
+ initialized: false,
121
+ projectPath: absoluteTarget,
122
+ corePath,
123
+ gitInitialized: false,
124
+ gitAlreadyExisted: false,
125
+ created: [],
126
+ skipped: [],
127
+ };
128
+ const kenazDir = path.join(absoluteTarget, ".kenaz");
129
+ // Check if already initialized
130
+ if (fs.existsSync(path.join(kenazDir, "project.yaml"))) {
131
+ if (!opts.dryRun) {
132
+ console.log("Project already initialized at", kenazDir);
133
+ console.log("Use `k-cli project status` to view details.");
134
+ }
135
+ result.skipped.push(".kenaz/project.yaml (exists)");
136
+ if (opts.json) {
137
+ (0, output_1.output)(result, { json: true });
138
+ }
139
+ return;
140
+ }
141
+ // Dry-run
142
+ if (opts.dryRun) {
143
+ const planned = [
144
+ ".kenaz/project.yaml",
145
+ ...TASK_STATUSES.map((s) => `.kenaz/tasks/${s}/`),
146
+ ...LOG_FORMATIONS.map((f) => `.kenaz/logs/${f}/`),
147
+ "k-cli.md",
148
+ ];
149
+ if (initGit) {
150
+ planned.push(".gitignore", ".gitattributes", "git init + initial commit");
151
+ }
152
+ const dryResult = {
153
+ dryRun: true,
154
+ projectPath: absoluteTarget,
155
+ corePath,
156
+ projectName: project.name,
157
+ initGit,
158
+ willCreate: planned,
159
+ };
160
+ if (opts.json) {
161
+ (0, output_1.output)(dryResult, { json: true });
162
+ }
163
+ else {
164
+ console.log("\n[dry-run] Would initialize project at:", absoluteTarget);
165
+ console.log("[dry-run] Core path:", corePath);
166
+ console.log("[dry-run] Will create:");
167
+ for (const item of planned) {
168
+ console.log(` + ${item}`);
169
+ }
170
+ }
171
+ return;
172
+ }
173
+ // Step 1: Create .kenaz/ directories
174
+ for (const status of TASK_STATUSES) {
175
+ const dir = path.join(kenazDir, "tasks", status);
176
+ if (!fs.existsSync(dir)) {
177
+ fs.mkdirSync(dir, { recursive: true });
178
+ result.created.push(`.kenaz/tasks/${status}/`);
179
+ }
180
+ else {
181
+ result.skipped.push(`.kenaz/tasks/${status}/ (exists)`);
182
+ }
183
+ }
184
+ for (const formation of LOG_FORMATIONS) {
185
+ const dir = path.join(kenazDir, "logs", formation);
186
+ if (!fs.existsSync(dir)) {
187
+ fs.mkdirSync(dir, { recursive: true });
188
+ result.created.push(`.kenaz/logs/${formation}/`);
189
+ }
190
+ else {
191
+ result.skipped.push(`.kenaz/logs/${formation}/ (exists)`);
192
+ }
193
+ }
194
+ // Step 2: Create project.yaml (paths normalized to forward slashes)
195
+ const projectYaml = {
196
+ schema_version: "1.0",
197
+ project_name: project.name,
198
+ project_path: normalizePath(absoluteTarget),
199
+ core_path: normalizePath(corePath),
200
+ created_at: new Date().toISOString(),
201
+ tasks: {
202
+ dir: ".kenaz/tasks",
203
+ statuses: TASK_STATUSES,
204
+ },
205
+ logs: {
206
+ dir: ".kenaz/logs",
207
+ formations: LOG_FORMATIONS,
208
+ },
209
+ };
210
+ const yamlContent = "# Kenaz AI Sub-Project Configuration\n" +
211
+ `# Generated by k-cli on ${new Date().toISOString().split("T")[0]}\n\n` +
212
+ yaml.stringify(projectYaml);
213
+ fs.writeFileSync(path.join(kenazDir, "project.yaml"), yamlContent, "utf-8");
214
+ result.created.push(".kenaz/project.yaml");
215
+ result.initialized = true;
216
+ // Step 3: Copy k-cli.md
217
+ const kcliMdSrc = path.join(__dirname, "..", "..", "templates", "k-cli.md");
218
+ const kcliMdDest = path.join(absoluteTarget, "k-cli.md");
219
+ if (fs.existsSync(kcliMdSrc) && !fs.existsSync(kcliMdDest)) {
220
+ fs.copyFileSync(kcliMdSrc, kcliMdDest);
221
+ result.created.push("k-cli.md");
222
+ }
223
+ else if (fs.existsSync(kcliMdDest)) {
224
+ result.skipped.push("k-cli.md (exists)");
225
+ }
226
+ // Step 4: Git initialization
227
+ if (initGit) {
228
+ const gitDir = path.join(absoluteTarget, ".git");
229
+ if (fs.existsSync(gitDir)) {
230
+ result.gitAlreadyExisted = true;
231
+ result.gitInitialized = true;
232
+ result.skipped.push(".git (exists)");
233
+ }
234
+ else {
235
+ await (0, process_1.nodeProcess)(["init", "--initial-branch=main"], absoluteTarget, 10000, "git", false);
236
+ result.gitInitialized = true;
237
+ result.created.push("git init (branch: main)");
238
+ }
239
+ // .gitignore
240
+ const gitignorePath = path.join(absoluteTarget, ".gitignore");
241
+ if (!fs.existsSync(gitignorePath)) {
242
+ fs.writeFileSync(gitignorePath, GITIGNORE_CONTENT, "utf-8");
243
+ result.created.push(".gitignore");
244
+ }
245
+ else {
246
+ result.skipped.push(".gitignore (exists)");
247
+ }
248
+ // .gitattributes
249
+ const gitattrsPath = path.join(absoluteTarget, ".gitattributes");
250
+ if (!fs.existsSync(gitattrsPath)) {
251
+ fs.writeFileSync(gitattrsPath, GITATTRIBUTES_CONTENT, "utf-8");
252
+ result.created.push(".gitattributes");
253
+ }
254
+ else {
255
+ result.skipped.push(".gitattributes (exists)");
256
+ }
257
+ // Git aliases + initial commit (only for new repos)
258
+ if (result.gitInitialized && !result.gitAlreadyExisted) {
259
+ const aliases = [
260
+ ["config", "--local", "alias.st", "status"],
261
+ ["config", "--local", "alias.co", "checkout"],
262
+ ["config", "--local", "alias.br", "branch"],
263
+ ["config", "--local", "alias.ci", "commit"],
264
+ ["config", "--local", "alias.lg", "log --oneline --graph --decorate"],
265
+ ];
266
+ for (const a of aliases) {
267
+ await (0, process_1.nodeProcess)(a, absoluteTarget, 5000, "git", false);
268
+ }
269
+ result.created.push("git aliases");
270
+ await (0, process_1.nodeProcess)(["add", "."], absoluteTarget, 10000, "git", false);
271
+ await (0, process_1.nodeProcess)(["commit", "-m", "Initial commit: Kenaz AI project setup"], absoluteTarget, 10000, "git", false);
272
+ result.created.push("initial commit");
273
+ }
274
+ }
275
+ // Output
276
+ if (opts.json) {
277
+ (0, output_1.output)(result, { json: true });
278
+ return;
279
+ }
280
+ console.log("\nProject Initialized");
281
+ console.log("=".repeat(60));
282
+ console.log(` Name: ${project.name}`);
283
+ console.log(` Path: ${absoluteTarget}`);
284
+ console.log(` Core Path: ${corePath}`);
285
+ console.log(` Git: ${result.gitInitialized ? (result.gitAlreadyExisted ? "exists" : "initialized") : "skipped"}`);
286
+ console.log("");
287
+ if (result.created.length > 0) {
288
+ console.log("Created:");
289
+ for (const item of result.created) {
290
+ console.log(` + ${item}`);
291
+ }
292
+ }
293
+ if (result.skipped.length > 0) {
294
+ console.log("Skipped:");
295
+ for (const item of result.skipped) {
296
+ console.log(` - ${item}`);
297
+ }
298
+ }
299
+ console.log("\nNext: k-cli project status");
300
+ console.log("");
301
+ }
@@ -0,0 +1,89 @@
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 TEMPLATES_DIR = path.resolve(__dirname, "..", "..", "templates");
42
+ const INSTALLABLE = {
43
+ "k-cli": {
44
+ src: path.join(TEMPLATES_DIR, "k-cli.md"),
45
+ dest: "k-cli.md",
46
+ description: "k-cli 使用指南",
47
+ },
48
+ };
49
+ async function run(target, opts = {}) {
50
+ const project = (0, project_1.resolveProject)(opts.projectPath);
51
+ if (!target || !(target in INSTALLABLE)) {
52
+ const available = Object.entries(INSTALLABLE)
53
+ .map(([key, val]) => ` ${key} — ${val.description}`)
54
+ .join("\n");
55
+ console.error(`Usage: k-cli project install <target>\n\nAvailable:\n${available}`);
56
+ process.exit(1);
57
+ }
58
+ const item = INSTALLABLE[target];
59
+ const destPath = path.join(project.path, item.dest);
60
+ if (opts.dryRun) {
61
+ const result = {
62
+ dryRun: true,
63
+ target,
64
+ source: item.src,
65
+ destination: destPath,
66
+ exists: fs.existsSync(destPath),
67
+ };
68
+ if (opts.json) {
69
+ (0, output_1.output)(result, { json: true });
70
+ }
71
+ else {
72
+ console.log(`[dry-run] Would install ${target} → ${destPath}`);
73
+ if (result.exists)
74
+ console.log("[dry-run] File already exists, will overwrite");
75
+ }
76
+ return;
77
+ }
78
+ if (!fs.existsSync(item.src)) {
79
+ console.error(`Template not found: ${item.src}`);
80
+ process.exit(1);
81
+ }
82
+ fs.copyFileSync(item.src, destPath);
83
+ if (opts.json) {
84
+ (0, output_1.output)({ installed: target, path: destPath }, { json: true });
85
+ }
86
+ else {
87
+ console.log(`Installed ${target} → ${item.dest}`);
88
+ }
89
+ }
@@ -0,0 +1,138 @@
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
+ const output_1 = require("../core/output");
42
+ async function run(opts = {}) {
43
+ const project = (0, project_1.resolveProject)(opts.projectPath);
44
+ const status = {
45
+ project: {
46
+ name: project.name,
47
+ mode: project.mode,
48
+ path: project.path,
49
+ core_path: project.core_path,
50
+ },
51
+ git: null,
52
+ tasks: null,
53
+ };
54
+ // Enrich with project.yaml details
55
+ if (project.config) {
56
+ status.project.schema_version =
57
+ project.config.schema_version || undefined;
58
+ status.project.created_at =
59
+ project.config.created_at || undefined;
60
+ const tasksConfig = project.config.tasks;
61
+ const logsConfig = project.config.logs;
62
+ status.project.tasks_dir = tasksConfig?.dir || ".kenaz/tasks";
63
+ status.project.logs_dir = logsConfig?.dir || ".kenaz/logs";
64
+ }
65
+ // Git status
66
+ try {
67
+ const branch = await (0, process_1.nodeProcess)(["rev-parse", "--abbrev-ref", "HEAD"], project.path, 5000, "git", false).catch(() => "unknown");
68
+ const lastCommit = await (0, process_1.nodeProcess)(["log", "-1", "--oneline"], project.path, 5000, "git", false).catch(() => "unknown");
69
+ const dirtyRaw = await (0, process_1.nodeProcess)(["status", "--porcelain"], project.path, 5000, "git", false).catch(() => "");
70
+ const dirtyFiles = dirtyRaw
71
+ ? dirtyRaw.split("\n").filter((l) => l.trim()).length
72
+ : 0;
73
+ status.git = { branch, lastCommit, dirtyFiles };
74
+ }
75
+ catch {
76
+ // git not available
77
+ }
78
+ // Task stats
79
+ try {
80
+ const taskApiJs = path.join(project.core_path, ".collaboration", "core", "task-api.js");
81
+ if (fs.existsSync(taskApiJs)) {
82
+ const statsRaw = await (0, process_1.nodeProcess)([taskApiJs, "--project-path", project.path, "stats", "--format", "json"], project.core_path, 10000, process.execPath, false);
83
+ const statsJson = JSON.parse(statsRaw);
84
+ status.tasks = {
85
+ backlog: statsJson.backlog || 0,
86
+ active: statsJson.active || 0,
87
+ done: statsJson.done || 0,
88
+ blocked: statsJson.blocked || 0,
89
+ };
90
+ }
91
+ }
92
+ catch {
93
+ // task-api not available
94
+ }
95
+ // Output
96
+ if (opts.json) {
97
+ (0, output_1.output)(status, { json: true });
98
+ return;
99
+ }
100
+ console.log("\nProject Status");
101
+ console.log("=".repeat(60));
102
+ // Project info table
103
+ const projectRows = [
104
+ ["Name", status.project.name],
105
+ ["Mode", status.project.mode],
106
+ ["Path", status.project.path],
107
+ ["Core Path", status.project.core_path],
108
+ ];
109
+ if (status.project.schema_version)
110
+ projectRows.push(["Schema Version", status.project.schema_version]);
111
+ if (status.project.created_at)
112
+ projectRows.push(["Created", status.project.created_at]);
113
+ if (status.project.tasks_dir)
114
+ projectRows.push(["Tasks Dir", status.project.tasks_dir]);
115
+ if (status.project.logs_dir)
116
+ projectRows.push(["Logs Dir", status.project.logs_dir]);
117
+ console.log((0, output_1.formatTable)(["Field", "Value"], projectRows));
118
+ // Git info
119
+ if (status.git) {
120
+ console.log("\nGit");
121
+ console.log("-".repeat(40));
122
+ console.log(` Branch: ${status.git.branch}`);
123
+ console.log(` Last Commit: ${status.git.lastCommit}`);
124
+ console.log(` Dirty Files: ${status.git.dirtyFiles}`);
125
+ }
126
+ // Task stats
127
+ if (status.tasks) {
128
+ console.log("\nTasks");
129
+ console.log("-".repeat(40));
130
+ console.log((0, output_1.formatTable)(["Status", "Count"], [
131
+ ["Backlog", String(status.tasks.backlog)],
132
+ ["Active", String(status.tasks.active)],
133
+ ["Done", String(status.tasks.done)],
134
+ ["Blocked", String(status.tasks.blocked)],
135
+ ]));
136
+ }
137
+ console.log("");
138
+ }
@@ -0,0 +1,100 @@
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
+ async function run(opts = {}) {
42
+ const project = (0, project_1.resolveProject)(opts.projectPath);
43
+ const corePath = project.core_path;
44
+ const sessionJs = path.join(corePath, ".specialist", "tools", "session.js");
45
+ // Step 1: Get specialist list
46
+ let listRaw;
47
+ try {
48
+ listRaw = await (0, process_1.nodeProcess)([sessionJs, "list"], corePath, 10000, process.execPath, false);
49
+ }
50
+ catch (e) {
51
+ console.error("Error: Failed to list specialists:", e.message);
52
+ process.exit(1);
53
+ }
54
+ // Parse list output: " Ansuz (v1.0.0) — purpose"
55
+ const specialists = listRaw
56
+ .split("\n")
57
+ .filter((l) => l.trim())
58
+ .map((line) => {
59
+ const match = line.match(/^\s*(\S+)\s+\(v([\d.]+)\)\s+—\s+(.+)$/);
60
+ if (!match)
61
+ return { name: line.trim(), version: "?", purpose: "" };
62
+ return { name: match[1], version: match[2], purpose: match[3] };
63
+ });
64
+ // Step 2: Get prompt for each specialist
65
+ const results = [];
66
+ for (const s of specialists) {
67
+ let promptLength = 0;
68
+ let promptPreview = "";
69
+ try {
70
+ const prompt = await (0, process_1.nodeProcess)([sessionJs, "prompt", s.name, "--mode=assembled", "--no-muninn"], corePath, 15000, process.execPath, false);
71
+ promptLength = prompt.length;
72
+ promptPreview = prompt.slice(0, 200).replace(/\n/g, " ");
73
+ }
74
+ catch {
75
+ promptPreview = "(error assembling prompt)";
76
+ }
77
+ results.push({ ...s, promptLength, promptPreview });
78
+ }
79
+ // Step 3: Output
80
+ if (opts.json) {
81
+ (0, output_1.output)(results, { json: true });
82
+ return;
83
+ }
84
+ const headers = ["Name", "Version", "Purpose", "Prompt Length"];
85
+ const rows = results.map((r) => [
86
+ r.name,
87
+ `v${r.version}`,
88
+ r.purpose,
89
+ `${r.promptLength.toLocaleString()} chars`,
90
+ ]);
91
+ console.log("\nSpecialist List");
92
+ console.log("═".repeat(60));
93
+ console.log((0, output_1.formatTable)(headers, rows));
94
+ console.log("");
95
+ for (const r of results) {
96
+ console.log(`📄 ${r.name} prompt preview:`);
97
+ console.log(` ${r.promptPreview}...`);
98
+ console.log("");
99
+ }
100
+ }