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,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.status = status;
4
+ exports.register = register;
5
+ const output_1 = require("../core/output");
6
+ // TASK_2361: Alaya device registration without the Dashboard Google login.
7
+ //
8
+ // Flow (RFC 8628 style, relay contract documented in TASK_2361):
9
+ // POST {relay}/auth/device/start -> {device_code, user_code, verification_url, interval, expires_in}
10
+ // user opens verification_url in any browser and approves (Google login at the relay)
11
+ // POST {relay}/auth/device/poll {device_code} -> 202 pending | 200 {token} | 410 expired | 403 denied
12
+ // The JWT is handed to the local kenaz-server, which runs the one existing
13
+ // register-device implementation (hub_client::register_alaya_device).
14
+ // The JWT is held in memory only: never printed, never written.
15
+ const server = () => process.env.KENAZ_SERVER_URL || `http://127.0.0.1:${process.env.KENAZ_HTTP_PORT || "18080"}`;
16
+ const relay = () => (process.env.KENAZ_RELAY_URL || "https://app.kenazai.com").replace(/\/+$/, "");
17
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
18
+ const fail = (msg) => {
19
+ console.error(msg);
20
+ process.exit(1);
21
+ };
22
+ async function serverFetch(path, init) {
23
+ try {
24
+ return await fetch(`${server()}${path}`, init);
25
+ }
26
+ catch {
27
+ return fail(`Cannot reach kenaz-server at ${server()}. Start it first (kenaz-server or the Dashboard).`);
28
+ }
29
+ }
30
+ async function status(flags) {
31
+ const res = await serverFetch("/api/rust/alaya/status");
32
+ if (!res.ok)
33
+ fail(`kenaz-server returned ${res.status}`);
34
+ const s = (await res.json());
35
+ (0, output_1.output)(flags.json
36
+ ? s
37
+ : `Alaya: ${s.registered ? "registered" : "not registered"}; outbox depth: ${s.outbox_depth}` +
38
+ (s.registered ? "" : "\nRun: k-cli alaya register"), flags);
39
+ }
40
+ async function register(flags) {
41
+ const st = await serverFetch("/api/rust/alaya/status");
42
+ if (st.ok && (await st.json()).registered) {
43
+ (0, output_1.output)(flags.json ? { registered: true, already_registered: true } : "Alaya: already registered", flags);
44
+ return;
45
+ }
46
+ const start = await fetch(`${relay()}/auth/device/start`, {
47
+ method: "POST",
48
+ headers: { "content-type": "application/json" },
49
+ body: "{}",
50
+ }).catch((e) => fail(`Cannot reach relay ${relay()}: ${e.message}`));
51
+ if (start.status === 404) {
52
+ fail(`Relay ${relay()} has no device-code endpoint yet (POST /auth/device/start).\n` +
53
+ "Hub/relay change required; see TASK_2361 technical notes. Meanwhile, log in once via the Dashboard.");
54
+ }
55
+ if (!start.ok)
56
+ fail(`Relay device/start failed: HTTP ${start.status}`);
57
+ const d = (await start.json());
58
+ console.log(`Open ${d.verification_url} in any browser and enter code: ${d.user_code}`);
59
+ const deadline = Date.now() + (d.expires_in ?? 600) * 1000;
60
+ const intervalMs = Math.max(1, d.interval ?? 5) * 1000;
61
+ let token = "";
62
+ while (Date.now() < deadline) {
63
+ await sleep(intervalMs);
64
+ const p = await fetch(`${relay()}/auth/device/poll`, {
65
+ method: "POST",
66
+ headers: { "content-type": "application/json" },
67
+ body: JSON.stringify({ device_code: d.device_code }),
68
+ }).catch(() => null);
69
+ if (!p || p.status === 202 || p.status === 428)
70
+ continue;
71
+ if (p.status === 403)
72
+ fail("Approval denied.");
73
+ if (p.status === 410)
74
+ fail("Code expired. Run the command again.");
75
+ if (!p.ok)
76
+ fail(`Relay device/poll failed: HTTP ${p.status}`);
77
+ token = (await p.json()).token ?? "";
78
+ break;
79
+ }
80
+ if (!token)
81
+ fail("Timed out waiting for approval.");
82
+ const r = await serverFetch("/api/rust/alaya/register", {
83
+ method: "POST",
84
+ headers: { "content-type": "application/json" },
85
+ body: JSON.stringify({ token }),
86
+ });
87
+ const res = (await r.json().catch(() => ({})));
88
+ if (!r.ok || !res.registered)
89
+ fail(`Registration failed: ${res.error ?? `HTTP ${r.status}`}`);
90
+ (0, output_1.output)(flags.json ? res : "Alaya: registered (~/.kenaz/alaya.toml written); queued reports will drain", flags);
91
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatTable = formatTable;
4
+ exports.output = output;
5
+ function formatTable(headers, rows) {
6
+ const colWidths = headers.map((h, i) => {
7
+ const vals = [h, ...rows.map((r) => String(r[i] || ""))];
8
+ return Math.max(...vals.map((v) => v.length));
9
+ });
10
+ const sep = colWidths.map((w) => "-".repeat(w + 2)).join("+");
11
+ const line = (cells) => cells.map((c, i) => ` ${String(c).padEnd(colWidths[i])} `).join("|");
12
+ return [line(headers), sep, ...rows.map((r) => line(r))].join("\n");
13
+ }
14
+ function output(data, opts = {}) {
15
+ if (opts.json) {
16
+ console.log(JSON.stringify(data, null, 2));
17
+ }
18
+ else if (typeof data === "string") {
19
+ console.log(data);
20
+ }
21
+ else {
22
+ console.log(JSON.stringify(data, null, 2));
23
+ }
24
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nodeProcess = nodeProcess;
4
+ const child_process_1 = require("child_process");
5
+ /**
6
+ * Spawn a process and return stdout.
7
+ * cmd defaults to node (process.execPath).
8
+ * shell defaults to false to avoid Windows arg escaping issues.
9
+ */
10
+ function nodeProcess(args, cwd, timeout = 10000, cmd = process.execPath, shell = false) {
11
+ return new Promise((resolve, reject) => {
12
+ const child = (0, child_process_1.spawn)(cmd, args, {
13
+ cwd,
14
+ stdio: ["pipe", "pipe", "pipe"],
15
+ windowsHide: true,
16
+ shell,
17
+ });
18
+ let stdout = "";
19
+ let stderr = "";
20
+ child.stdout.on("data", (d) => (stdout += d));
21
+ child.stderr.on("data", (d) => (stderr += d));
22
+ const timer = setTimeout(() => {
23
+ child.kill();
24
+ reject(new Error("timeout"));
25
+ }, timeout);
26
+ child.on("close", (code) => {
27
+ clearTimeout(timer);
28
+ if (code !== 0)
29
+ reject(new Error(stderr || `exit code ${code}`));
30
+ else
31
+ resolve(stdout.trim());
32
+ });
33
+ child.on("error", (e) => {
34
+ clearTimeout(timer);
35
+ reject(e);
36
+ });
37
+ });
38
+ }
@@ -0,0 +1,80 @@
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.resolveProject = resolveProject;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const yaml = __importStar(require("yaml"));
40
+ function resolveProject(explicitPath) {
41
+ const cwd = path.resolve(explicitPath || process.cwd());
42
+ const isCore = fs.existsSync(path.join(cwd, ".collaboration", "tasks"));
43
+ const kenazYaml = path.join(cwd, ".kenaz", "project.yaml");
44
+ const hasKenaz = fs.existsSync(kenazYaml);
45
+ // Read .kenaz/project.yaml if it exists
46
+ let config = null;
47
+ if (hasKenaz) {
48
+ const raw = fs.readFileSync(kenazYaml, "utf-8");
49
+ config = yaml.parse(raw);
50
+ }
51
+ // Core project (has .collaboration/tasks)
52
+ if (isCore) {
53
+ return {
54
+ mode: "core",
55
+ name: config?.project_name || path.basename(cwd),
56
+ path: cwd,
57
+ core_path: cwd,
58
+ config,
59
+ };
60
+ }
61
+ // Sub-project (has .kenaz/project.yaml but no .collaboration/tasks)
62
+ if (hasKenaz && config) {
63
+ const corePath = path.resolve(config.core_path || cwd);
64
+ return {
65
+ mode: "sub-project",
66
+ name: config.project_name || path.basename(cwd),
67
+ path: cwd,
68
+ core_path: corePath,
69
+ config,
70
+ };
71
+ }
72
+ // Unknown — no detection, no guessing
73
+ return {
74
+ mode: "unknown",
75
+ name: path.basename(cwd),
76
+ path: cwd,
77
+ core_path: cwd,
78
+ config: null,
79
+ };
80
+ }
@@ -0,0 +1,268 @@
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.spawnClaude = spawnClaude;
37
+ exports.collectClaudeOutput = collectClaudeOutput;
38
+ exports.streamClaudeOutput = streamClaudeOutput;
39
+ const child_process_1 = require("child_process");
40
+ const path = __importStar(require("path"));
41
+ const fs = __importStar(require("fs"));
42
+ /**
43
+ * Detect git-bash path on Windows.
44
+ * Claude Code requires git-bash to run on Windows.
45
+ */
46
+ function detectGitBash() {
47
+ try {
48
+ const gitPaths = (0, child_process_1.execSync)("where git", { encoding: "utf8", timeout: 5000, windowsHide: true })
49
+ .split("\n").map((l) => l.trim()).filter(Boolean);
50
+ for (const gitPath of gitPaths) {
51
+ let dir = path.dirname(gitPath);
52
+ for (let i = 0; i < 4; i++) {
53
+ const bashPath = path.join(dir, "bin", "bash.exe");
54
+ if (fs.existsSync(bashPath))
55
+ return bashPath;
56
+ dir = path.dirname(dir);
57
+ }
58
+ }
59
+ }
60
+ catch { }
61
+ const fallbacks = [
62
+ "C:\\Program Files\\Git\\bin\\bash.exe",
63
+ "C:\\Program Files (x86)\\Git\\bin\\bash.exe",
64
+ "D:\\Program Files\\Git\\bin\\bash.exe",
65
+ ];
66
+ for (const p of fallbacks) {
67
+ if (fs.existsSync(p))
68
+ return p;
69
+ }
70
+ return null;
71
+ }
72
+ /**
73
+ * Detect the claude CLI command path.
74
+ */
75
+ function detectClaudeCmd() {
76
+ if (process.platform !== "win32")
77
+ return "claude";
78
+ try {
79
+ const result = (0, child_process_1.execSync)("where claude", { encoding: "utf8", timeout: 5000, windowsHide: true })
80
+ .split("\n").map((l) => l.trim()).filter(Boolean);
81
+ if (result.length > 0) {
82
+ return result.find((p) => p.endsWith(".cmd")) || result[0];
83
+ }
84
+ }
85
+ catch { }
86
+ const homedir = process.env.USERPROFILE || process.env.HOME || "";
87
+ const candidates = [
88
+ path.join(homedir, ".claude", "local", "claude.exe"),
89
+ path.join(homedir, ".claude", "bin", "claude.exe"),
90
+ ];
91
+ for (const p of candidates) {
92
+ if (fs.existsSync(p))
93
+ return p;
94
+ }
95
+ return "claude.cmd";
96
+ }
97
+ /**
98
+ * Build a clean env for Claude subprocesses.
99
+ * Mirrors .formation/tools/utils.js getClaudeEnv()
100
+ */
101
+ function getClaudeEnv() {
102
+ const env = { ...process.env };
103
+ // Remove CLAUDECODE to avoid nested session error
104
+ delete env.CLAUDECODE;
105
+ // Windows: ensure git-bash path is set
106
+ if (process.platform === "win32" && !env.CLAUDE_CODE_GIT_BASH_PATH) {
107
+ const gitBash = detectGitBash();
108
+ if (gitBash)
109
+ env.CLAUDE_CODE_GIT_BASH_PATH = gitBash;
110
+ }
111
+ return env;
112
+ }
113
+ /**
114
+ * Spawn a Claude CLI subprocess.
115
+ *
116
+ * Returns the ChildProcess. Caller is responsible for
117
+ * listening on stdout/stderr/close events.
118
+ */
119
+ function spawnClaude(opts) {
120
+ const { prompt, cwd, allowedTools = "Bash,Read,Edit,Write,Glob,Grep", disallowedTools, extraArgs = [], projectPath = null, } = opts;
121
+ const claudeCmd = detectClaudeCmd();
122
+ const args = [
123
+ "-p", "-",
124
+ "--dangerously-skip-permissions",
125
+ "--output-format", "stream-json",
126
+ "--verbose",
127
+ "--allowedTools", allowedTools,
128
+ ...(disallowedTools ? ["--disallowedTools", disallowedTools] : []),
129
+ ...extraArgs,
130
+ ];
131
+ const env = getClaudeEnv();
132
+ // Sub-project git isolation
133
+ if (projectPath && projectPath !== cwd) {
134
+ const parentDir = path.dirname(projectPath);
135
+ env.GIT_CEILING_DIRECTORIES = parentDir;
136
+ }
137
+ const child = (0, child_process_1.spawn)(claudeCmd, args, {
138
+ cwd: projectPath || cwd,
139
+ env,
140
+ stdio: ["pipe", "pipe", "pipe"],
141
+ windowsHide: true,
142
+ shell: true,
143
+ });
144
+ child.stdin.write(prompt, "utf8");
145
+ child.stdin.end();
146
+ return child;
147
+ }
148
+ /**
149
+ * Format a tool_use block into a concise one-liner.
150
+ */
151
+ function formatToolUse(block) {
152
+ const name = block.name || "unknown";
153
+ const input = block.input || {};
154
+ // Extract the most relevant field for each tool type
155
+ if (name === "Bash" && input.command) {
156
+ const cmd = String(input.command);
157
+ const short = cmd.length > 120 ? cmd.slice(0, 120) + "..." : cmd;
158
+ return `[${name}] ${short}`;
159
+ }
160
+ if ((name === "Read" || name === "Write") && input.file_path) {
161
+ return `[${name}] ${input.file_path}`;
162
+ }
163
+ if (name === "Edit" && input.file_path) {
164
+ return `[${name}] ${input.file_path}`;
165
+ }
166
+ if ((name === "Glob" || name === "Grep") && input.pattern) {
167
+ return `[${name}] ${input.pattern}`;
168
+ }
169
+ // Fallback: tool name + first string value
170
+ const firstVal = Object.values(input).find((v) => typeof v === "string");
171
+ return firstVal ? `[${name}] ${String(firstVal).slice(0, 80)}` : `[${name}]`;
172
+ }
173
+ /**
174
+ * Collect Claude stream-json stdout as a string (no console output).
175
+ * Used when the caller needs to parse the result programmatically.
176
+ */
177
+ function collectClaudeOutput(child) {
178
+ return new Promise((resolve, reject) => {
179
+ let stderr = "";
180
+ let result = "";
181
+ child.stdout.on("data", (d) => {
182
+ const lines = d.toString().split("\n").filter((l) => l.trim());
183
+ for (const line of lines) {
184
+ try {
185
+ const evt = JSON.parse(line);
186
+ if (evt.type === "assistant" && evt.message?.content) {
187
+ for (const block of evt.message.content) {
188
+ if (block.type === "text" && block.text) {
189
+ result += block.text;
190
+ }
191
+ }
192
+ }
193
+ else if (evt.type === "result" && typeof evt.result === "string") {
194
+ result += evt.result;
195
+ }
196
+ }
197
+ catch {
198
+ // not JSON — skip
199
+ }
200
+ }
201
+ });
202
+ child.stderr.on("data", (d) => (stderr += d));
203
+ child.on("close", (code) => {
204
+ if (code !== 0) {
205
+ reject(new Error(`Claude exited with code ${code}${stderr ? `: ${stderr.slice(0, 500)}` : ""}`));
206
+ return;
207
+ }
208
+ resolve(result);
209
+ });
210
+ child.on("error", (e) => reject(e));
211
+ });
212
+ }
213
+ /**
214
+ * Parse Claude stream-json stdout and output formatted content.
215
+ * - text blocks: output as-is
216
+ * - tool_use blocks: formatted one-liner showing what the agent is doing
217
+ * - thinking, raw JSON: filtered out
218
+ */
219
+ function streamClaudeOutput(child) {
220
+ return new Promise((resolve, reject) => {
221
+ let stderr = "";
222
+ let hasOutput = false;
223
+ child.stdout.on("data", (d) => {
224
+ const lines = d.toString().split("\n").filter((l) => l.trim());
225
+ for (const line of lines) {
226
+ try {
227
+ const evt = JSON.parse(line);
228
+ if (evt.type === "assistant" && evt.message?.content) {
229
+ for (const block of evt.message.content) {
230
+ if (block.type === "text" && block.text) {
231
+ hasOutput = true;
232
+ process.stdout.write(block.text);
233
+ }
234
+ else if (block.type === "tool_use") {
235
+ hasOutput = true;
236
+ console.log(formatToolUse(block));
237
+ }
238
+ }
239
+ }
240
+ else if (evt.type === "result" && evt.result) {
241
+ hasOutput = true;
242
+ console.log(evt.result);
243
+ }
244
+ }
245
+ catch {
246
+ // not JSON — skip
247
+ }
248
+ }
249
+ });
250
+ child.stderr.on("data", (d) => (stderr += d));
251
+ child.on("close", (code) => {
252
+ if (code !== 0) {
253
+ console.error(`\nError: Claude exited with code ${code}`);
254
+ if (stderr)
255
+ console.error(stderr);
256
+ process.exit(1);
257
+ }
258
+ if (!hasOutput) {
259
+ console.error("\nWarning: Claude exited successfully but produced no output.", "\nThis may indicate nested session detection.", stderr ? `\nStderr: ${stderr.slice(0, 500)}` : "");
260
+ }
261
+ resolve();
262
+ });
263
+ child.on("error", (e) => {
264
+ console.error(`Error spawning Claude: ${e.message}`);
265
+ reject(e);
266
+ });
267
+ });
268
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.run = run;
4
+ const output_1 = require("../core/output");
5
+ const DASHBOARD_BASE = `http://127.0.0.1:${process.env.KENAZ_HTTP_PORT || "18080"}`;
6
+ async function run(flags) {
7
+ try {
8
+ // Step 1: Check for updates
9
+ const checkRes = await fetch(`${DASHBOARD_BASE}/api/dashboard/update/check`, { method: "POST" });
10
+ if (!checkRes.ok) {
11
+ console.error(`Dashboard returned ${checkRes.status}`);
12
+ process.exit(1);
13
+ }
14
+ const result = (await checkRes.json());
15
+ if (result.status === "up_to_date") {
16
+ (0, output_1.output)(flags.json
17
+ ? result
18
+ : `Already up to date (v${result.current_version})`, flags);
19
+ return;
20
+ }
21
+ if (result.status === "error") {
22
+ console.error(`Update check failed: ${result.message}`);
23
+ process.exit(1);
24
+ }
25
+ // Update available
26
+ const info = result.update;
27
+ console.log(`Update available: v${info.current_version} → v${info.version}`);
28
+ if (info.body) {
29
+ console.log(`\nRelease notes:\n${info.body}\n`);
30
+ }
31
+ if (!flags.force) {
32
+ (0, output_1.output)(flags.json
33
+ ? result
34
+ : 'Run with --force to install, or use Dashboard UI.', flags);
35
+ return;
36
+ }
37
+ // Step 2: Install
38
+ console.log("Installing update...");
39
+ const installRes = await fetch(`${DASHBOARD_BASE}/api/dashboard/update/install`, { method: "POST" });
40
+ if (!installRes.ok) {
41
+ console.error(`Install request failed: ${installRes.status}`);
42
+ process.exit(1);
43
+ }
44
+ const installResult = (await installRes.json());
45
+ (0, output_1.output)(flags.json
46
+ ? installResult
47
+ : `${installResult.message}`, flags);
48
+ }
49
+ catch {
50
+ console.error("Cannot reach Dashboard. Is it running? (default port: 18080)");
51
+ process.exit(1);
52
+ }
53
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.run = run;
4
+ const output_1 = require("../core/output");
5
+ const DASHBOARD_BASE = `http://127.0.0.1:${process.env.KENAZ_HTTP_PORT || "18080"}`;
6
+ async function run(flags) {
7
+ try {
8
+ const res = await fetch(`${DASHBOARD_BASE}/api/dashboard/version`);
9
+ if (!res.ok) {
10
+ console.error(`Dashboard returned ${res.status}`);
11
+ process.exit(1);
12
+ }
13
+ const payload = (await res.json());
14
+ (0, output_1.output)(flags.json ? payload : `Dashboard v${payload.version}`, flags);
15
+ }
16
+ catch {
17
+ console.error("Cannot reach Dashboard. Is it running? (default port: 18080)");
18
+ process.exit(1);
19
+ }
20
+ }