kenaz 0.3.3 → 0.3.6

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 (451) 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 +15 -2
  4. package/core/.claude/hooks/__tests__/task-2395-project-registration.test.js +84 -0
  5. package/core/.claude/hooks/handoff-staleness.js +2 -2
  6. package/core/.claude/hooks/session-init.ps1 +49 -49
  7. package/core/.claude/hooks/turn-context.js +50 -2
  8. package/core/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -26
  9. package/core/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -97
  10. package/core/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -101
  11. package/core/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -31
  12. package/core/.claude/skills/ui-ux-pro-max/data/products.csv +96 -96
  13. package/core/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  14. package/core/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  15. package/core/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  16. package/core/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  17. package/core/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  18. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  19. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  20. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  21. package/core/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  22. package/core/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  23. package/core/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  24. package/core/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  25. package/core/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  26. package/core/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  27. package/core/.claude/skills/ui-ux-pro-max/data/styles.csv +68 -68
  28. package/core/.claude/skills/ui-ux-pro-max/data/typography.csv +57 -57
  29. package/core/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
  30. package/core/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  31. package/core/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
  32. package/core/.claude/skills/ui-ux-pro-max/scripts/core.py +253 -253
  33. package/core/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
  34. package/core/.claude/skills/ui-ux-pro-max/scripts/search.py +106 -106
  35. package/core/.collaboration/core/task-api.js +1 -4
  36. package/core/.formation/README.md +21 -146
  37. package/core/.formation/bifrost/codex-doctor.js +37 -2
  38. package/core/.formation/bifrost/codex-doctor.test.js +18 -0
  39. package/core/.formation/bifrost/launch.js +1 -1
  40. package/core/.formation/bifrost/openai/codex-hook-shim.js +6 -0
  41. package/core/.formation/bifrost/openai/codex-hook-shim.test.js +11 -1
  42. package/core/.formation/bifrost/setup-codex.js +3 -0
  43. package/core/.formation/native/claude/README.md +1 -1
  44. package/core/.formation/role-map.yaml +3 -3
  45. package/core/.formation/spec/task_operations.parity.test.js +0 -1
  46. package/core/.formation/spec/task_operations.yaml +3 -3
  47. package/core/.formation/tests/hello.txt +2 -2
  48. package/core/.formation/tools/__tests__/subagent-bifrost-guard.test.js +4 -4
  49. package/core/.formation/tools/dashboard-models-chain.test.js +0 -6
  50. package/core/.formation/tools/dispatch-detail/cross-project-worktree.md +1 -9
  51. package/core/.formation/tools/dispatch-detail/worktree-subagent-mode.md +2 -2
  52. package/core/.formation/tools/dispatch.js +33 -554
  53. package/core/.formation/tools/mcp-allowlist.test.js +0 -1
  54. package/core/.formation/tools/post-complete/task2345.test.js +0 -5
  55. package/core/.formation/tools/pre-dispatch-snapshot.test.js +0 -100
  56. package/core/.formation/tools/prompt.js +33 -1623
  57. package/core/.formation/tools/prompt.test.js +26 -594
  58. package/core/.formation/unit/do.yaml +2 -4
  59. package/core/.kenaz/knowledge/ladybug_2c51da1e_shadow_file_frame_group.patch +163 -163
  60. package/core/.kenaz/knowledge/ladybug_30cf85690e_shadow_page_read_during_checkpoint.patch +393 -393
  61. package/core/.kenaz/knowledge/ladybug_7a17858d3a_node_group_delete_lock.patch +102 -102
  62. package/core/.kenaz/knowledge/ladybug_926a0ba1_column_checkpoint.patch +412 -412
  63. package/core/.kenaz/knowledge/ladybug_a346c4c4b6_pk_index_header_pages.patch +144 -144
  64. package/core/.kenaz/knowledge/ladybug_ba5f38815b_csr_node_group.patch +86 -86
  65. package/core/.kenaz/muninn_episode_write.ps1 +17 -17
  66. package/core/.kenaz/specialist/field_report_watermark.json +1 -1
  67. package/core/.kenaz/specialist/memory_guard_fired.json +1 -1
  68. package/core/.kenaz/specialist/memory_guard_trigger_cache.json +1 -1
  69. package/core/.kenaz/specialist/t1777_probe.txt +1 -1
  70. package/core/.matrix/index.matrix +5 -5
  71. package/core/.rule/general/agent-workflow.yaml +4 -4
  72. package/core/.rule/general/file-size-threshold.yaml +16 -4
  73. package/core/.rule/general/rust-verify-target.yaml +0 -1
  74. package/core/.rule/general/system-invariants.yaml +8 -25
  75. package/core/.specialist/Ansuz/SYSTEM_DOC.md +17 -42
  76. package/core/.specialist/Ansuz/capability.yaml +7 -14
  77. package/core/.specialist/Ansuz/concepts/formation_quick_ref.yaml +4 -11
  78. package/core/.specialist/Ansuz/elixir.yaml +3 -4
  79. package/core/.specialist/Ansuz/identity_contract.yaml +1 -1
  80. package/core/.specialist/Ansuz/knowledge.yaml +7 -10
  81. package/core/.specialist/Ansuz/rule.yaml +2 -2
  82. package/core/.specialist/Ansuz/tools/verify-and-land.js +22 -0
  83. package/core/.specialist/Ansuz/tools/verify-and-land.test.js +59 -5
  84. package/core/.specialist/Ansuz/workflow.yaml +7 -11
  85. package/core/.specialist/Forseti/core.yaml +1 -1
  86. package/core/.specialist/Heimdall/SKILL.md +1 -1
  87. package/core/.specialist/Heimdall/core.yaml +2 -2
  88. package/core/.specialist/Huginn/rule.yaml +1 -1
  89. package/core/.specialist/tools/README.md +2 -2
  90. package/core/.specialist/tools/__tests__/freya-cli-contract.test.js +0 -1
  91. package/core/.system/collaboration/README.md +1 -1
  92. package/core/.system/formation/LEGACY_SKILLS.md +2 -0
  93. package/core/.system/formation/POST_COMPLETE.md +2 -0
  94. package/core/.system/formation/README.md +2 -0
  95. package/core/KENAZ_CORE_VERSION +1 -1
  96. package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +355 -355
  97. package/core/dev/JEV_INTEGRATION_PLAN.md +189 -189
  98. package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +13 -13
  99. package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +9 -9
  100. package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +14 -14
  101. package/core/dev/design/matrix_v2_EXAMPLE.matrix +67 -67
  102. package/core/dev/jev-eval/ACTIVE_CORRECTION.md +52 -52
  103. package/core/dev/jev-eval/CONTEXT_REVIEW.md +31 -31
  104. package/core/dev/jev-eval/EVALUATION_STATUS.md +39 -39
  105. package/core/dev/jev-eval/HISTORICAL_CORPUS.md +33 -33
  106. package/core/dev/jev-eval/README.md +99 -99
  107. package/core/dev/jev-eval/THALAMUS_RANKING.md +58 -58
  108. package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +32 -32
  109. package/core/dev/jev-eval/reports/context-review-2026-09-20.json +48 -48
  110. package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +52 -52
  111. package/core/dev/pipeline/SELF_ENHANCEMENT_STATUS.json.bak +47 -47
  112. package/core/dev/pipeline/tasks/.gitkeep +1 -1
  113. package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +27 -27
  114. package/core/dev/scripts/check-file-size.js +44 -17
  115. package/core/dev/scripts/init_git.sh +0 -0
  116. package/core/dev/scripts/init_project.sh +0 -0
  117. package/core/dev/scripts/legacy/dev_agent_scheduler.ps1.bak +536 -536
  118. package/core/dev/scripts/legacy/multi_agent_scheduler.ps1.bak +1978 -1978
  119. package/core/dev/scripts/matrix/src/cli/commands/list-tags.ts.wip +140 -140
  120. package/core/dev/scripts/matrix/src/cli/commands/manage-tags.ts.wip +173 -173
  121. package/core/dev/scripts/matrix/src/cli/commands/stats.ts.wip +168 -168
  122. package/core/dev/scripts/matrix/src/cli/commands/tokens.ts.wip +126 -126
  123. package/core/dev/scripts/multi_agent_scheduler.sh +0 -0
  124. package/core/dev/scripts/run_once.sh +0 -0
  125. package/core/dev/scripts/setup_mcp.sh +0 -0
  126. package/core/dev/scripts/setup_rag.sh +0 -0
  127. package/core/dev/scripts/start_dev_agent.sh +0 -0
  128. package/core/dev/scripts/start_multi_agent.sh +0 -0
  129. package/core/dev/scripts/sync_task_queue.sh +0 -0
  130. package/core/k-cli/README.md +1 -94
  131. package/core/k-cli/test/TEST_SPEC.md +5 -22
  132. package/core/k-cli/test/run.sh +1 -67
  133. package/core/plugins/kenaz/commands/Amelia.md +1 -1
  134. package/core/plugins/kenaz/commands/Ansuz.md +16 -3
  135. package/core/plugins/kenaz/scripts/kenaz-mode.js +11 -1
  136. package/core/plugins/kenaz/scripts/sync.js +6 -2
  137. package/core/plugins/kenaz/scripts/ygg.js +13 -1
  138. package/core/plugins/kenaz/skills/product_manager/SKILL.md +12 -12
  139. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/charts.csv +26 -26
  140. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/colors.csv +97 -97
  141. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/icons.csv +101 -101
  142. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/landing.csv +31 -31
  143. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/products.csv +96 -96
  144. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  145. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  146. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  147. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  148. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  149. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  150. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  151. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  152. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  153. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  154. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  155. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  156. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  157. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  158. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/styles.csv +68 -68
  159. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/typography.csv +57 -57
  160. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
  161. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  162. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
  163. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/core.py +253 -253
  164. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
  165. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/search.py +106 -106
  166. package/lib/cli.js +11 -4
  167. package/package.json +11 -7
  168. package/vendor/install-kenaz-cli.js +18 -7
  169. package/core/.formation/legion/forge.yaml +0 -299
  170. package/core/.formation/legion/hive.yaml +0 -238
  171. package/core/.formation/squad/blitz.yaml +0 -192
  172. package/core/.formation/squad/strategy-tribunal.yaml +0 -354
  173. package/core/.formation/squad/strategy.yaml +0 -349
  174. package/core/.formation/squad/sweep.yaml +0 -208
  175. package/core/.formation/tools/broadcast.js +0 -103
  176. package/core/.formation/tools/dispatch-dryrun.test.js +0 -54
  177. package/core/.formation/tools/dispatch-notifier.js +0 -84
  178. package/core/.formation/tools/formations.js +0 -1203
  179. package/core/.formation/tools/headless-branch-recovery.test.js +0 -64
  180. package/core/.formation/tools/headless-dryrun.test.js +0 -79
  181. package/core/.formation/tools/headless-v2.js +0 -659
  182. package/core/.formation/tools/headless.js +0 -1071
  183. package/core/.formation/tools/legacy-scheduler.js +0 -1994
  184. package/core/.formation/tools/logger.js +0 -273
  185. package/core/.formation/tools/memory-loader.js +0 -422
  186. package/core/.formation/tools/process-state.js +0 -33
  187. package/core/.formation/tools/remote-conflict.js +0 -98
  188. package/core/.formation/tools/runner.js +0 -1332
  189. package/core/.formation/tools/task-utils.js +0 -344
  190. package/core/.formation/tools/task2028-headless-worktree.test.js +0 -112
  191. package/core/.formation/tools/tests/headless-mcp-args-plumbing.test.js +0 -123
  192. package/core/.formation/tools/worktree-leak.test.js +0 -162
  193. package/core/k-cli/dist/alaya/run.js +0 -91
  194. package/core/k-cli/dist/core/output.js +0 -24
  195. package/core/k-cli/dist/core/process.js +0 -38
  196. package/core/k-cli/dist/core/project.js +0 -80
  197. package/core/k-cli/dist/core/spawn.js +0 -268
  198. package/core/k-cli/dist/core/types.js +0 -2
  199. package/core/k-cli/dist/dashboard/update.js +0 -53
  200. package/core/k-cli/dist/dashboard/version.js +0 -20
  201. package/core/k-cli/dist/dispatch/run.js +0 -241
  202. package/core/k-cli/dist/dispatch/status.js +0 -103
  203. package/core/k-cli/dist/index.js +0 -283
  204. package/core/k-cli/dist/project/initialize.js +0 -301
  205. package/core/k-cli/dist/project/install.js +0 -89
  206. package/core/k-cli/dist/project/status.js +0 -138
  207. package/core/k-cli/dist/specialist/list.js +0 -100
  208. package/core/k-cli/dist/specialist/run.js +0 -93
  209. package/core/k-cli/dist/task/create.js +0 -194
  210. package/core/k-cli/dist/task/delete.js +0 -98
  211. package/core/k-cli/dist/task/get.js +0 -55
  212. package/core/k-cli/dist/task/list.js +0 -58
  213. package/core/k-cli/dist/task/submit.js +0 -156
  214. package/core/k-cli/dist/ygg/run.js +0 -51
  215. package/core/k-cli/node_modules/.bin/yaml +0 -16
  216. package/core/k-cli/node_modules/.bin/yaml.cmd +0 -17
  217. package/core/k-cli/node_modules/.bin/yaml.ps1 +0 -28
  218. package/core/k-cli/node_modules/.package-lock.json +0 -23
  219. package/core/k-cli/node_modules/yaml/LICENSE +0 -13
  220. package/core/k-cli/node_modules/yaml/README.md +0 -172
  221. package/core/k-cli/node_modules/yaml/bin.mjs +0 -11
  222. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-collection.js +0 -88
  223. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-doc.js +0 -43
  224. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-node.js +0 -109
  225. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-scalar.js +0 -86
  226. package/core/k-cli/node_modules/yaml/browser/dist/compose/composer.js +0 -217
  227. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-map.js +0 -115
  228. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +0 -198
  229. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +0 -49
  230. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-end.js +0 -37
  231. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +0 -207
  232. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +0 -223
  233. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-props.js +0 -146
  234. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-contains-newline.js +0 -34
  235. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +0 -26
  236. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +0 -15
  237. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-map-includes.js +0 -13
  238. package/core/k-cli/node_modules/yaml/browser/dist/doc/Document.js +0 -335
  239. package/core/k-cli/node_modules/yaml/browser/dist/doc/anchors.js +0 -71
  240. package/core/k-cli/node_modules/yaml/browser/dist/doc/applyReviver.js +0 -55
  241. package/core/k-cli/node_modules/yaml/browser/dist/doc/createNode.js +0 -88
  242. package/core/k-cli/node_modules/yaml/browser/dist/doc/directives.js +0 -176
  243. package/core/k-cli/node_modules/yaml/browser/dist/errors.js +0 -57
  244. package/core/k-cli/node_modules/yaml/browser/dist/index.js +0 -17
  245. package/core/k-cli/node_modules/yaml/browser/dist/log.js +0 -11
  246. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Alias.js +0 -114
  247. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Collection.js +0 -147
  248. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Node.js +0 -38
  249. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Pair.js +0 -36
  250. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Scalar.js +0 -24
  251. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLMap.js +0 -144
  252. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +0 -113
  253. package/core/k-cli/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +0 -63
  254. package/core/k-cli/node_modules/yaml/browser/dist/nodes/identity.js +0 -36
  255. package/core/k-cli/node_modules/yaml/browser/dist/nodes/toJS.js +0 -37
  256. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-scalar.js +0 -214
  257. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-stringify.js +0 -61
  258. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-visit.js +0 -97
  259. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst.js +0 -98
  260. package/core/k-cli/node_modules/yaml/browser/dist/parse/lexer.js +0 -717
  261. package/core/k-cli/node_modules/yaml/browser/dist/parse/line-counter.js +0 -39
  262. package/core/k-cli/node_modules/yaml/browser/dist/parse/parser.js +0 -967
  263. package/core/k-cli/node_modules/yaml/browser/dist/public-api.js +0 -102
  264. package/core/k-cli/node_modules/yaml/browser/dist/schema/Schema.js +0 -37
  265. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/map.js +0 -17
  266. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/null.js +0 -15
  267. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/seq.js +0 -17
  268. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/string.js +0 -14
  269. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/bool.js +0 -19
  270. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/float.js +0 -43
  271. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/int.js +0 -38
  272. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/schema.js +0 -23
  273. package/core/k-cli/node_modules/yaml/browser/dist/schema/json/schema.js +0 -62
  274. package/core/k-cli/node_modules/yaml/browser/dist/schema/tags.js +0 -96
  275. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +0 -58
  276. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +0 -26
  277. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +0 -46
  278. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +0 -71
  279. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +0 -64
  280. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +0 -74
  281. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +0 -78
  282. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +0 -39
  283. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +0 -93
  284. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +0 -101
  285. package/core/k-cli/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +0 -146
  286. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringify.js +0 -129
  287. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +0 -153
  288. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyComment.js +0 -20
  289. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +0 -85
  290. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +0 -24
  291. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyPair.js +0 -150
  292. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyString.js +0 -336
  293. package/core/k-cli/node_modules/yaml/browser/dist/util.js +0 -11
  294. package/core/k-cli/node_modules/yaml/browser/dist/visit.js +0 -233
  295. package/core/k-cli/node_modules/yaml/browser/index.js +0 -5
  296. package/core/k-cli/node_modules/yaml/browser/package.json +0 -3
  297. package/core/k-cli/node_modules/yaml/dist/cli.d.ts +0 -8
  298. package/core/k-cli/node_modules/yaml/dist/cli.mjs +0 -201
  299. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.d.ts +0 -11
  300. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.js +0 -90
  301. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.d.ts +0 -7
  302. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.js +0 -45
  303. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.d.ts +0 -29
  304. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.js +0 -112
  305. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.d.ts +0 -5
  306. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.js +0 -88
  307. package/core/k-cli/node_modules/yaml/dist/compose/composer.d.ts +0 -63
  308. package/core/k-cli/node_modules/yaml/dist/compose/composer.js +0 -222
  309. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.d.ts +0 -6
  310. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.js +0 -117
  311. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +0 -11
  312. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.js +0 -200
  313. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +0 -6
  314. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.js +0 -51
  315. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.d.ts +0 -6
  316. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.js +0 -39
  317. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +0 -7
  318. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.js +0 -209
  319. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +0 -10
  320. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.js +0 -225
  321. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.d.ts +0 -23
  322. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.js +0 -148
  323. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.d.ts +0 -2
  324. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.js +0 -36
  325. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +0 -2
  326. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.js +0 -28
  327. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +0 -3
  328. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.js +0 -17
  329. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.d.ts +0 -4
  330. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.js +0 -15
  331. package/core/k-cli/node_modules/yaml/dist/doc/Document.d.ts +0 -141
  332. package/core/k-cli/node_modules/yaml/dist/doc/Document.js +0 -337
  333. package/core/k-cli/node_modules/yaml/dist/doc/anchors.d.ts +0 -24
  334. package/core/k-cli/node_modules/yaml/dist/doc/anchors.js +0 -76
  335. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.d.ts +0 -9
  336. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.js +0 -57
  337. package/core/k-cli/node_modules/yaml/dist/doc/createNode.d.ts +0 -17
  338. package/core/k-cli/node_modules/yaml/dist/doc/createNode.js +0 -90
  339. package/core/k-cli/node_modules/yaml/dist/doc/directives.d.ts +0 -49
  340. package/core/k-cli/node_modules/yaml/dist/doc/directives.js +0 -178
  341. package/core/k-cli/node_modules/yaml/dist/errors.d.ts +0 -21
  342. package/core/k-cli/node_modules/yaml/dist/errors.js +0 -62
  343. package/core/k-cli/node_modules/yaml/dist/index.d.ts +0 -25
  344. package/core/k-cli/node_modules/yaml/dist/index.js +0 -50
  345. package/core/k-cli/node_modules/yaml/dist/log.d.ts +0 -3
  346. package/core/k-cli/node_modules/yaml/dist/log.js +0 -19
  347. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.d.ts +0 -29
  348. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.js +0 -116
  349. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.d.ts +0 -73
  350. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.js +0 -151
  351. package/core/k-cli/node_modules/yaml/dist/nodes/Node.d.ts +0 -53
  352. package/core/k-cli/node_modules/yaml/dist/nodes/Node.js +0 -40
  353. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.d.ts +0 -22
  354. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.js +0 -39
  355. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.d.ts +0 -43
  356. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.js +0 -27
  357. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.d.ts +0 -53
  358. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.js +0 -147
  359. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +0 -60
  360. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.js +0 -115
  361. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +0 -4
  362. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.js +0 -65
  363. package/core/k-cli/node_modules/yaml/dist/nodes/identity.d.ts +0 -23
  364. package/core/k-cli/node_modules/yaml/dist/nodes/identity.js +0 -53
  365. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.d.ts +0 -29
  366. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.js +0 -39
  367. package/core/k-cli/node_modules/yaml/dist/options.d.ts +0 -350
  368. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.d.ts +0 -64
  369. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.js +0 -218
  370. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.d.ts +0 -8
  371. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.js +0 -63
  372. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.d.ts +0 -39
  373. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.js +0 -99
  374. package/core/k-cli/node_modules/yaml/dist/parse/cst.d.ts +0 -109
  375. package/core/k-cli/node_modules/yaml/dist/parse/cst.js +0 -112
  376. package/core/k-cli/node_modules/yaml/dist/parse/lexer.d.ts +0 -87
  377. package/core/k-cli/node_modules/yaml/dist/parse/lexer.js +0 -719
  378. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.d.ts +0 -22
  379. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.js +0 -41
  380. package/core/k-cli/node_modules/yaml/dist/parse/parser.d.ts +0 -84
  381. package/core/k-cli/node_modules/yaml/dist/parse/parser.js +0 -972
  382. package/core/k-cli/node_modules/yaml/dist/public-api.d.ts +0 -44
  383. package/core/k-cli/node_modules/yaml/dist/public-api.js +0 -107
  384. package/core/k-cli/node_modules/yaml/dist/schema/Schema.d.ts +0 -17
  385. package/core/k-cli/node_modules/yaml/dist/schema/Schema.js +0 -39
  386. package/core/k-cli/node_modules/yaml/dist/schema/common/map.d.ts +0 -2
  387. package/core/k-cli/node_modules/yaml/dist/schema/common/map.js +0 -19
  388. package/core/k-cli/node_modules/yaml/dist/schema/common/null.d.ts +0 -4
  389. package/core/k-cli/node_modules/yaml/dist/schema/common/null.js +0 -17
  390. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.d.ts +0 -2
  391. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.js +0 -19
  392. package/core/k-cli/node_modules/yaml/dist/schema/common/string.d.ts +0 -2
  393. package/core/k-cli/node_modules/yaml/dist/schema/common/string.js +0 -16
  394. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.d.ts +0 -4
  395. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.js +0 -21
  396. package/core/k-cli/node_modules/yaml/dist/schema/core/float.d.ts +0 -4
  397. package/core/k-cli/node_modules/yaml/dist/schema/core/float.js +0 -47
  398. package/core/k-cli/node_modules/yaml/dist/schema/core/int.d.ts +0 -4
  399. package/core/k-cli/node_modules/yaml/dist/schema/core/int.js +0 -42
  400. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.d.ts +0 -1
  401. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.js +0 -25
  402. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.d.ts +0 -2
  403. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.js +0 -64
  404. package/core/k-cli/node_modules/yaml/dist/schema/json-schema.d.ts +0 -69
  405. package/core/k-cli/node_modules/yaml/dist/schema/tags.d.ts +0 -48
  406. package/core/k-cli/node_modules/yaml/dist/schema/tags.js +0 -99
  407. package/core/k-cli/node_modules/yaml/dist/schema/types.d.ts +0 -92
  408. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +0 -2
  409. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.js +0 -70
  410. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +0 -7
  411. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.js +0 -29
  412. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +0 -4
  413. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.js +0 -50
  414. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +0 -5
  415. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.js +0 -76
  416. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +0 -9
  417. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.js +0 -68
  418. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +0 -22
  419. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.js +0 -77
  420. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +0 -10
  421. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +0 -82
  422. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +0 -1
  423. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.js +0 -41
  424. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +0 -28
  425. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.js +0 -96
  426. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +0 -6
  427. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +0 -105
  428. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +0 -34
  429. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.js +0 -151
  430. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.d.ts +0 -21
  431. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.js +0 -132
  432. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +0 -17
  433. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.js +0 -155
  434. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.d.ts +0 -10
  435. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.js +0 -24
  436. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +0 -4
  437. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.js +0 -87
  438. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +0 -2
  439. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.js +0 -26
  440. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.d.ts +0 -3
  441. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.js +0 -152
  442. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.d.ts +0 -9
  443. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.js +0 -338
  444. package/core/k-cli/node_modules/yaml/dist/test-events.d.ts +0 -4
  445. package/core/k-cli/node_modules/yaml/dist/test-events.js +0 -134
  446. package/core/k-cli/node_modules/yaml/dist/util.d.ts +0 -16
  447. package/core/k-cli/node_modules/yaml/dist/util.js +0 -28
  448. package/core/k-cli/node_modules/yaml/dist/visit.d.ts +0 -102
  449. package/core/k-cli/node_modules/yaml/dist/visit.js +0 -236
  450. package/core/k-cli/node_modules/yaml/package.json +0 -97
  451. package/core/k-cli/node_modules/yaml/util.js +0 -2
@@ -1,106 +1,106 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- """
4
- UI/UX Pro Max Search - BM25 search engine for UI/UX style guides
5
- Usage: python search.py "<query>" [--domain <domain>] [--stack <stack>] [--max-results 3]
6
- python search.py "<query>" --design-system [-p "Project Name"]
7
- python search.py "<query>" --design-system --persist [-p "Project Name"] [--page "dashboard"]
8
-
9
- Domains: style, prompt, color, chart, landing, product, ux, typography
10
- Stacks: html-tailwind, react, nextjs
11
-
12
- Persistence (Master + Overrides pattern):
13
- --persist Save design system to design-system/MASTER.md
14
- --page Also create a page-specific override file in design-system/pages/
15
- """
16
-
17
- import argparse
18
- from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
19
- from design_system import generate_design_system, persist_design_system
20
-
21
-
22
- def format_output(result):
23
- """Format results for Claude consumption (token-optimized)"""
24
- if "error" in result:
25
- return f"Error: {result['error']}"
26
-
27
- output = []
28
- if result.get("stack"):
29
- output.append(f"## UI Pro Max Stack Guidelines")
30
- output.append(f"**Stack:** {result['stack']} | **Query:** {result['query']}")
31
- else:
32
- output.append(f"## UI Pro Max Search Results")
33
- output.append(f"**Domain:** {result['domain']} | **Query:** {result['query']}")
34
- output.append(f"**Source:** {result['file']} | **Found:** {result['count']} results\n")
35
-
36
- for i, row in enumerate(result['results'], 1):
37
- output.append(f"### Result {i}")
38
- for key, value in row.items():
39
- value_str = str(value)
40
- if len(value_str) > 300:
41
- value_str = value_str[:300] + "..."
42
- output.append(f"- **{key}:** {value_str}")
43
- output.append("")
44
-
45
- return "\n".join(output)
46
-
47
-
48
- if __name__ == "__main__":
49
- parser = argparse.ArgumentParser(description="UI Pro Max Search")
50
- parser.add_argument("query", help="Search query")
51
- parser.add_argument("--domain", "-d", choices=list(CSV_CONFIG.keys()), help="Search domain")
52
- parser.add_argument("--stack", "-s", choices=AVAILABLE_STACKS, help="Stack-specific search (html-tailwind, react, nextjs)")
53
- parser.add_argument("--max-results", "-n", type=int, default=MAX_RESULTS, help="Max results (default: 3)")
54
- parser.add_argument("--json", action="store_true", help="Output as JSON")
55
- # Design system generation
56
- parser.add_argument("--design-system", "-ds", action="store_true", help="Generate complete design system recommendation")
57
- parser.add_argument("--project-name", "-p", type=str, default=None, help="Project name for design system output")
58
- parser.add_argument("--format", "-f", choices=["ascii", "markdown"], default="ascii", help="Output format for design system")
59
- # Persistence (Master + Overrides pattern)
60
- parser.add_argument("--persist", action="store_true", help="Save design system to design-system/MASTER.md (creates hierarchical structure)")
61
- parser.add_argument("--page", type=str, default=None, help="Create page-specific override file in design-system/pages/")
62
- parser.add_argument("--output-dir", "-o", type=str, default=None, help="Output directory for persisted files (default: current directory)")
63
-
64
- args = parser.parse_args()
65
-
66
- # Design system takes priority
67
- if args.design_system:
68
- result = generate_design_system(
69
- args.query,
70
- args.project_name,
71
- args.format,
72
- persist=args.persist,
73
- page=args.page,
74
- output_dir=args.output_dir
75
- )
76
- print(result)
77
-
78
- # Print persistence confirmation
79
- if args.persist:
80
- project_slug = args.project_name.lower().replace(' ', '-') if args.project_name else "default"
81
- print("\n" + "=" * 60)
82
- print(f"✅ Design system persisted to design-system/{project_slug}/")
83
- print(f" 📄 design-system/{project_slug}/MASTER.md (Global Source of Truth)")
84
- if args.page:
85
- page_filename = args.page.lower().replace(' ', '-')
86
- print(f" 📄 design-system/{project_slug}/pages/{page_filename}.md (Page Overrides)")
87
- print("")
88
- print(f"📖 Usage: When building a page, check design-system/{project_slug}/pages/[page].md first.")
89
- print(f" If exists, its rules override MASTER.md. Otherwise, use MASTER.md.")
90
- print("=" * 60)
91
- # Stack search
92
- elif args.stack:
93
- result = search_stack(args.query, args.stack, args.max_results)
94
- if args.json:
95
- import json
96
- print(json.dumps(result, indent=2, ensure_ascii=False))
97
- else:
98
- print(format_output(result))
99
- # Domain search
100
- else:
101
- result = search(args.query, args.domain, args.max_results)
102
- if args.json:
103
- import json
104
- print(json.dumps(result, indent=2, ensure_ascii=False))
105
- else:
106
- print(format_output(result))
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ UI/UX Pro Max Search - BM25 search engine for UI/UX style guides
5
+ Usage: python search.py "<query>" [--domain <domain>] [--stack <stack>] [--max-results 3]
6
+ python search.py "<query>" --design-system [-p "Project Name"]
7
+ python search.py "<query>" --design-system --persist [-p "Project Name"] [--page "dashboard"]
8
+
9
+ Domains: style, prompt, color, chart, landing, product, ux, typography
10
+ Stacks: html-tailwind, react, nextjs
11
+
12
+ Persistence (Master + Overrides pattern):
13
+ --persist Save design system to design-system/MASTER.md
14
+ --page Also create a page-specific override file in design-system/pages/
15
+ """
16
+
17
+ import argparse
18
+ from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
19
+ from design_system import generate_design_system, persist_design_system
20
+
21
+
22
+ def format_output(result):
23
+ """Format results for Claude consumption (token-optimized)"""
24
+ if "error" in result:
25
+ return f"Error: {result['error']}"
26
+
27
+ output = []
28
+ if result.get("stack"):
29
+ output.append(f"## UI Pro Max Stack Guidelines")
30
+ output.append(f"**Stack:** {result['stack']} | **Query:** {result['query']}")
31
+ else:
32
+ output.append(f"## UI Pro Max Search Results")
33
+ output.append(f"**Domain:** {result['domain']} | **Query:** {result['query']}")
34
+ output.append(f"**Source:** {result['file']} | **Found:** {result['count']} results\n")
35
+
36
+ for i, row in enumerate(result['results'], 1):
37
+ output.append(f"### Result {i}")
38
+ for key, value in row.items():
39
+ value_str = str(value)
40
+ if len(value_str) > 300:
41
+ value_str = value_str[:300] + "..."
42
+ output.append(f"- **{key}:** {value_str}")
43
+ output.append("")
44
+
45
+ return "\n".join(output)
46
+
47
+
48
+ if __name__ == "__main__":
49
+ parser = argparse.ArgumentParser(description="UI Pro Max Search")
50
+ parser.add_argument("query", help="Search query")
51
+ parser.add_argument("--domain", "-d", choices=list(CSV_CONFIG.keys()), help="Search domain")
52
+ parser.add_argument("--stack", "-s", choices=AVAILABLE_STACKS, help="Stack-specific search (html-tailwind, react, nextjs)")
53
+ parser.add_argument("--max-results", "-n", type=int, default=MAX_RESULTS, help="Max results (default: 3)")
54
+ parser.add_argument("--json", action="store_true", help="Output as JSON")
55
+ # Design system generation
56
+ parser.add_argument("--design-system", "-ds", action="store_true", help="Generate complete design system recommendation")
57
+ parser.add_argument("--project-name", "-p", type=str, default=None, help="Project name for design system output")
58
+ parser.add_argument("--format", "-f", choices=["ascii", "markdown"], default="ascii", help="Output format for design system")
59
+ # Persistence (Master + Overrides pattern)
60
+ parser.add_argument("--persist", action="store_true", help="Save design system to design-system/MASTER.md (creates hierarchical structure)")
61
+ parser.add_argument("--page", type=str, default=None, help="Create page-specific override file in design-system/pages/")
62
+ parser.add_argument("--output-dir", "-o", type=str, default=None, help="Output directory for persisted files (default: current directory)")
63
+
64
+ args = parser.parse_args()
65
+
66
+ # Design system takes priority
67
+ if args.design_system:
68
+ result = generate_design_system(
69
+ args.query,
70
+ args.project_name,
71
+ args.format,
72
+ persist=args.persist,
73
+ page=args.page,
74
+ output_dir=args.output_dir
75
+ )
76
+ print(result)
77
+
78
+ # Print persistence confirmation
79
+ if args.persist:
80
+ project_slug = args.project_name.lower().replace(' ', '-') if args.project_name else "default"
81
+ print("\n" + "=" * 60)
82
+ print(f"✅ Design system persisted to design-system/{project_slug}/")
83
+ print(f" 📄 design-system/{project_slug}/MASTER.md (Global Source of Truth)")
84
+ if args.page:
85
+ page_filename = args.page.lower().replace(' ', '-')
86
+ print(f" 📄 design-system/{project_slug}/pages/{page_filename}.md (Page Overrides)")
87
+ print("")
88
+ print(f"📖 Usage: When building a page, check design-system/{project_slug}/pages/[page].md first.")
89
+ print(f" If exists, its rules override MASTER.md. Otherwise, use MASTER.md.")
90
+ print("=" * 60)
91
+ # Stack search
92
+ elif args.stack:
93
+ result = search_stack(args.query, args.stack, args.max_results)
94
+ if args.json:
95
+ import json
96
+ print(json.dumps(result, indent=2, ensure_ascii=False))
97
+ else:
98
+ print(format_output(result))
99
+ # Domain search
100
+ else:
101
+ result = search(args.query, args.domain, args.max_results)
102
+ if args.json:
103
+ import json
104
+ print(json.dumps(result, indent=2, ensure_ascii=False))
105
+ else:
106
+ print(format_output(result))
package/lib/cli.js CHANGED
@@ -55,7 +55,10 @@ function platformServer() {
55
55
  }
56
56
 
57
57
  function onPath(cmd) {
58
- return spawnSync(cmd, ['--version'], { encoding: 'utf8', shell: process.platform === 'win32', timeout: 15000 }).status === 0;
58
+ const r = process.platform === 'win32' // one string with shell (.cmd shims); args + shell:true is deprecated (DEP0190)
59
+ ? spawnSync(cmd + ' --version', { encoding: 'utf8', shell: true, timeout: 15000 })
60
+ : spawnSync(cmd, ['--version'], { encoding: 'utf8', timeout: 15000 });
61
+ return r.status === 0;
59
62
  }
60
63
 
61
64
  /** setup-codex.js from the installed core (dry-run and doctor-before-install: from the package). */
@@ -197,9 +200,9 @@ function status(p, flags, out) {
197
200
  return 0;
198
201
  }
199
202
 
200
- function probe(port) {
203
+ function probe(port, urlPath = '/api/health') {
201
204
  return new Promise((resolve) => {
202
- const req = http.get({ host: '127.0.0.1', port, path: '/api/health', timeout: 2500 }, (res) => {
205
+ const req = http.get({ host: '127.0.0.1', port, path: urlPath, timeout: 2500 }, (res) => {
203
206
  let body = ''; res.on('data', (d) => { body += d; }); res.on('end', () => resolve({ ok: res.statusCode < 500, detail: `HTTP ${res.statusCode} on :${port}`, body }));
204
207
  });
205
208
  req.on('timeout', () => { req.destroy(); resolve({ ok: false, detail: `no answer on 127.0.0.1:${port}` }); });
@@ -229,7 +232,11 @@ async function doctor(p, flags, out, deps = {}) {
229
232
  const o = d.portOwner;
230
233
  add(`port ${d.port} owner`, o && d.ownerIsDashboard ? 'FAIL' : 'ok', o ? `PID ${o.pid} ${o.exe || o.name}${d.ownerIsDashboard ? ' (Dashboard)' : ''}` : 'nobody listening');
231
234
  }
232
- const upd = readJson(path.join(p.dir, 'update', 'status.json')); // TASK_2378, written by kenaz-server
235
+ // Ask the running server first: its answer carries its own version. The status file can still
236
+ // describe the previous binary right after an upgrade (field report: "[running 0.3.1]" on 0.3.3).
237
+ let upd = null;
238
+ if (r.ok) { const u = await probe(process.env.KENAZ_HTTP_PORT || '18080', '/api/update/status'); try { upd = JSON.parse(u.body); } catch (_) { /* older server */ } }
239
+ if (!upd || !upd.state) upd = readJson(path.join(p.dir, 'update', 'status.json')); // TASK_2378, written by kenaz-server
233
240
  if (!upd) add('self-update', 'skip', 'no status yet (kenaz-server has not run the updater)');
234
241
  else {
235
242
  const d = { disabled: `off: ${upd.reason}`, error: `last check failed: ${upd.last_error}`, staged: `${upd.staged_version} staged, applies when idle`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kenaz",
3
- "version": "0.3.3",
3
+ "version": "0.3.6",
4
4
  "description": "Install Kenaz (plugin, hooks, kenaz-server) for Claude Code and Codex: npx kenaz install",
5
5
  "bin": {
6
6
  "kenaz": "bin/kenaz.js"
@@ -20,11 +20,15 @@
20
20
  "test": "node --test lib/cli.test.js"
21
21
  },
22
22
  "optionalDependencies": {
23
- "@kenazai/server-win32-x64": "0.3.3",
24
- "@kenazai/server-darwin-arm64": "0.3.3",
25
- "@kenazai/server-darwin-x64": "0.3.3",
26
- "@kenazai/server-linux-x64": "0.3.3",
27
- "@kenazai/server-linux-arm64": "0.3.3"
23
+ "@kenazai/server-darwin-arm64": "0.3.6",
24
+ "@kenazai/server-darwin-x64": "0.3.6",
25
+ "@kenazai/server-linux-arm64": "0.3.6",
26
+ "@kenazai/server-linux-x64": "0.3.6",
27
+ "@kenazai/server-win32-x64": "0.3.6"
28
28
  },
29
- "license": "UNLICENSED"
29
+ "license": "UNLICENSED",
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "git+https://github.com/xyz9516/KenazAI.git"
33
+ }
30
34
  }
@@ -111,7 +111,9 @@ function retireDashboardHooks(file, dry) {
111
111
  }
112
112
 
113
113
  function claudeVersion() {
114
- const r = spawnSync('claude', ['--version'], { encoding: 'utf8', shell: process.platform === 'win32', timeout: 15000 });
114
+ const r = process.platform === 'win32' // one string with shell (.cmd shim): args + shell:true is deprecated (DEP0190)
115
+ ? spawnSync('claude --version', { encoding: 'utf8', shell: true, timeout: 15000 })
116
+ : spawnSync('claude', ['--version'], { encoding: 'utf8', timeout: 15000 });
115
117
  return r.status === 0 ? parseVersion(r.stdout) : null;
116
118
  }
117
119
 
@@ -125,14 +127,21 @@ function winVbs(bin, core) { // hidden window, env for task tools; server binds
125
127
  return 'Set sh = WScript.CreateObject("WScript.Shell")\r\nsh.Environment("Process")("KENAZ_SOURCE_DIR") = "' + core + '"\r\n' +
126
128
  'sh.Run """' + bin + '""", 0, False\r\n';
127
129
  }
128
- function launchdPlist(bin, core, log) {
130
+ // launchd and systemd start the server with a bare PATH (/usr/bin:/bin...), so `node` from Homebrew,
131
+ // nvm or /usr/local was not found and every MCP tool that runs a node script failed with
132
+ // "No such file or directory" (field report, macOS 0.3.1). Put the node running this install first.
133
+ function servicePath(nodeExe = process.execPath) {
134
+ return [path.dirname(nodeExe), '/opt/homebrew/bin', '/usr/local/bin', '/usr/bin', '/bin', '/usr/sbin', '/sbin']
135
+ .filter((d, i, a) => a.indexOf(d) === i).join(':');
136
+ }
137
+ function launchdPlist(bin, core, log, nodeExe) {
129
138
  return '<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0"><dict>\n' +
130
139
  ' <key>Label</key><string>' + LABEL + '</string>\n <key>ProgramArguments</key><array><string>' + bin + '</string></array>\n' +
131
- ' <key>EnvironmentVariables</key><dict><key>KENAZ_SOURCE_DIR</key><string>' + core + '</string></dict>\n' +
140
+ ' <key>EnvironmentVariables</key><dict><key>KENAZ_SOURCE_DIR</key><string>' + core + '</string><key>PATH</key><string>' + servicePath(nodeExe) + '</string></dict>\n' +
132
141
  ' <key>RunAtLoad</key><true/>\n <key>KeepAlive</key><true/>\n <key>StandardOutPath</key><string>' + log + '</string>\n <key>StandardErrorPath</key><string>' + log + '</string>\n</dict></plist>\n';
133
142
  }
134
- function systemdUnit(bin, core) {
135
- return '[Unit]\nDescription=Kenaz server (headless backend)\nAfter=network.target\n\n[Service]\nExecStart=' + bin + '\nEnvironment=KENAZ_SOURCE_DIR=' + core + '\nRestart=on-failure\n\n[Install]\nWantedBy=default.target\n';
143
+ function systemdUnit(bin, core, nodeExe) {
144
+ return '[Unit]\nDescription=Kenaz server (headless backend)\nAfter=network.target\n\n[Service]\nExecStart=' + bin + '\nEnvironment=KENAZ_SOURCE_DIR=' + core + '\nEnvironment=PATH=' + servicePath(nodeExe) + '\nRestart=on-failure\n\n[Install]\nWantedBy=default.target\n';
136
145
  }
137
146
 
138
147
  function servicePlan(home, bin, core, platform = process.platform) {
@@ -163,7 +172,9 @@ function serviceInstall(plan, dry, log) {
163
172
  fs.mkdirSync(path.dirname(plan.fallbackFile), { recursive: true });
164
173
  fs.copyFileSync(plan.files[0][0], plan.fallbackFile);
165
174
  sh('wscript.exe', [plan.files[0][0]]);
166
- log('schtasks refused (' + (r.stderr || '').trim() + '); installed Startup-folder launcher instead');
175
+ // schtasks' stderr is in the console's OEM code page (garbled when echoed); the usual cause is
176
+ // missing admin rights for /SC ONLOGON. The Startup-folder launcher starts at logon the same way.
177
+ log('schtasks needs administrator rights here (exit ' + r.status + '); installed the Startup-folder launcher instead (also starts at logon)');
167
178
  }
168
179
  } else if (plan.kind === 'launchd') {
169
180
  log('launchctl load -w ' + plan.unit); if (!dry) sh('launchctl', ['load', '-w', plan.unit]);
@@ -259,7 +270,7 @@ function main(argv, out = console.log, getVersion = claudeVersion) { // getVersi
259
270
  else if (!bin) { out('service: skipped, kenaz-server binary not found (pass --server-bin)'); rc = 1; }
260
271
  else serviceInstall(plan, dry, log);
261
272
  }
262
- if (cmd === 'install' && rc === 0) out('Next: cd <your project>; claude; /kenaz init; /Ansuz');
273
+ if (cmd === 'install' && rc === 0) out('Next: cd <your project>; claude; /kenaz:kenaz init; /kenaz:Ansuz (Codex: run /hooks once to trust the kenaz hooks, then $kenaz status)');
263
274
  if (cmd === 'uninstall') out('Project .kenaz/ data was left untouched.');
264
275
  return rc;
265
276
  }
@@ -1,299 +0,0 @@
1
- skill: forge
2
- formation: legion
3
- version: "1.0"
4
-
5
- name: Forge
6
- description: |
7
- 順序流水線:設計 → 打造 → 淬煉。
8
- 一個人設計藍圖,多個人照藍圖打造,一個人驗收淬煉。
9
- 每個階段的產出是下一階段的輸入。階段之間有回饋循環 — 打造時發現設計問題可以即時回報修正。
10
- 這是 Legion 最經典的模式:有序、有回饋、有品質把關。
11
-
12
- # ─────────────────────────────────────────
13
- # 溝通模式(核心設計)
14
- # ─────────────────────────────────────────
15
-
16
- topology: pipeline
17
- # designer → implementer(s) → reviewer
18
- # ↑ 回饋修正 ←─────────────↓
19
-
20
- communication:
21
- core_pattern: |
22
- 順序傳遞 + 回饋循環:
23
- 1. Designer 產出藍圖(介面契約、架構設計、遷移計劃)
24
- 2. Implementer(s) 按藍圖執行,遇到問題即時回報 Designer
25
- 3. Reviewer 驗收每個 Implementer 的產出,不通過則打回修正
26
- 4. 全部通過後,Reviewer 通知 Team Lead
27
-
28
- triggers:
29
- - name: 藍圖發布
30
- when: Designer 完成或更新設計
31
- who: designer → all implementers + reviewer
32
- content: 介面契約、架構設計、分工建議
33
-
34
- - name: 問題回報
35
- when: Implementer 發現藍圖有問題(設計不可行、漏洞、矛盾)
36
- who: implementer → designer
37
- content: 問題描述、影響範圍、建議修正
38
-
39
- - name: 跨邊界通知
40
- when: Implementer 修改了影響其他 Implementer 的介面
41
- who: implementer → implementer
42
- content: 修改的介面、舊 → 新、需要對方配合的變更
43
-
44
- - name: 完成通知
45
- when: Implementer 完成分配的工作
46
- who: implementer → reviewer
47
- content: 完成的模組、修改的檔案、風險點
48
-
49
- - name: 審查結果
50
- when: Reviewer 完成審查
51
- who: reviewer → implementer
52
- content: 通過 / 需修正(附具體問題和位置)
53
-
54
- - name: 全部通過
55
- when: 所有 Implementer 的產出都通過審查
56
- who: reviewer → team-lead
57
- content: 審查摘要、整體品質評估
58
-
59
- broadcast_policy: |
60
- 只在以下情況 broadcast:
61
- - 藍圖有破壞性變更(所有人都要更新認知)
62
- - Team Lead 調整分工
63
- 其他一律用 message 直接溝通。
64
-
65
- # ─────────────────────────────────────────
66
- # 成員定義(動態,由 Lead 根據任務決定)
67
- # ─────────────────────────────────────────
68
-
69
- members:
70
- roles:
71
- - id: designer
72
- name: Designer
73
- count: 1
74
- description: |
75
- 設計藍圖的人。可以是架構師、API 設計師、遷移規劃者 — 取決於任務。
76
- 核心產出:藍圖(介面契約、架構圖、遷移步驟、分工建議)。
77
- responsibilities:
78
- - 分析需求,設計解決方案
79
- - 定義介面契約(型別、函數簽名、模組邊界)
80
- - 規劃實作順序和分工建議
81
- - 回應 Implementer 的問題回報,必要時更新藍圖
82
- sends_to: [implementers, reviewer]
83
- receives_from: [implementers, reviewer]
84
-
85
- - id: implementer
86
- name: Implementer
87
- count: "1-3(由 Lead 根據任務規模決定)"
88
- description: |
89
- 按藍圖打造的人。拿到 Designer 的藍圖和分配的範圍,執行實作。
90
- 發現問題即時回報 Designer,不要自己猜。
91
- responsibilities:
92
- - 按藍圖和分配的範圍執行實作
93
- - 更新所有受影響的引用和依賴
94
- - 跨邊界變更時通知其他 Implementer
95
- - 完成後通知 Reviewer
96
- sends_to: [designer, other_implementers, reviewer]
97
- receives_from: [designer, other_implementers, reviewer]
98
-
99
- - id: reviewer
100
- name: Reviewer
101
- count: 1
102
- description: |
103
- 淬煉品質的人。驗收每個 Implementer 的產出,確保符合藍圖、無遺漏、品質達標。
104
- 發現問題直接打回對應 Implementer,架構層級問題升級給 Designer。
105
- responsibilities:
106
- - 審查每個 Implementer 的產出
107
- - 驗證介面一致性(新介面在所有消費端正確使用)
108
- - 檢查舊名稱/舊路徑殘留
109
- - 執行測試,確認不破壞現有功能
110
- sends_to: [implementers, designer, team-lead]
111
- receives_from: [implementers, designer]
112
-
113
- # ─────────────────────────────────────────
114
- # 生命週期
115
- # ─────────────────────────────────────────
116
-
117
- lifecycle:
118
- phases:
119
- - phase: design
120
- description: Designer 分析需求、產出藍圖
121
- lead_actions:
122
- - 建立團隊(TeamCreate)
123
- - 派出 Designer
124
- - 等待藍圖產出
125
- exit_criteria:
126
- - Designer 產出完整藍圖(介面契約 + 分工建議)
127
- - Lead 確認藍圖合理
128
-
129
- - phase: build
130
- description: Implementer(s) 按藍圖執行,Reviewer 同步就位
131
- lead_actions:
132
- - 根據藍圖的分工建議,派出 Implementer(s) 和 Reviewer
133
- - Broadcast 藍圖給所有成員
134
- - 監控跨邊界溝通,協調衝突
135
- member_actions:
136
- - Implementer(s) 按分配的範圍執行
137
- - 遇到問題 → SendMessage 給 Designer
138
- - 完成 → SendMessage 給 Reviewer
139
- - Reviewer 逐一審查
140
-
141
- - phase: temper
142
- description: 全面驗證、修正、淬煉品質
143
- lead_actions:
144
- - 確認所有 Implementer 的產出通過 Reviewer 審查
145
- - 處理未通過的修正循環(Reviewer → Implementer → Reviewer)
146
- - 全量測試
147
- exit_criteria:
148
- - 所有模組通過審查
149
- - 無編譯/型別錯誤
150
- - 測試通過
151
- - Grep 確認無舊名稱殘留
152
-
153
- - phase: teardown
154
- description: 收集成果、關閉團隊
155
- lead_actions:
156
- - 收集 Designer 的藍圖文件
157
- - 收集 Implementer 的變更清單
158
- - 收集 Reviewer 的審查結果
159
- - 整合為完成報告
160
- - shutdown_request 給所有成員
161
-
162
- # ─────────────────────────────────────────
163
- # 輸入輸出
164
- # ─────────────────────────────────────────
165
-
166
- input:
167
- required:
168
- - task: 任務 ID 或描述
169
- optional:
170
- - blueprint: 已有的設計藍圖(如有,跳過 design 階段)
171
- - scope: 限制範圍
172
- - preserve: 不可修改的檔案或介面
173
-
174
- output:
175
- primary: |
176
- 完成報告:
177
- - 藍圖摘要(Designer 產出)
178
- - 修改的檔案列表(按 Implementer 分組)
179
- - 審查結果(Reviewer 產出)
180
- - 測試結果
181
- secondary: |
182
- - 發現但未處理的技術債
183
- - 建議的後續任務
184
-
185
- # ─────────────────────────────────────────
186
- # 行為準則(Team Lead)
187
- # ─────────────────────────────────────────
188
-
189
- behavior:
190
- - 先 design 再 build — 不要跳過藍圖直接開工
191
- - Designer 的藍圖是唯一的真相來源(single source of truth)
192
- - Implementer 之間的分工要明確,避免改同一個檔案
193
- - Reviewer 說「需修正」時,必須修完才能進入 temper
194
- - 控制團隊規模:1 Designer + 1~3 Implementers + 1 Reviewer(最多 5 人)
195
- - 結束前用 Grep 掃描舊名稱殘留
196
-
197
- # ─────────────────────────────────────────
198
- # 成員 Prompt 模板
199
- # ─────────────────────────────────────────
200
-
201
- member_prompts:
202
- designer: |
203
- ## Role
204
- 你是 Forge 的 Designer — 鍛造的第一步,設計藍圖。
205
-
206
- ## 你的職責
207
- - 分析需求,設計解決方案
208
- - 產出藍圖:介面契約、架構設計、實作步驟、分工建議
209
- - 回應 Implementer 的問題回報
210
-
211
- ## 溝通
212
- - 藍圖完成 → broadcast 給所有成員
213
- - 收到問題回報 → 評估後更新藍圖並通知
214
- - 藍圖有破壞性變更 → broadcast
215
-
216
- ## 任務
217
- {designer_task_description}
218
-
219
- implementer: |
220
- ## Role
221
- 你是 Forge 的 Implementer — 鍛造的核心,按藍圖打造。
222
-
223
- ## 你的職責
224
- - 按 Designer 的藍圖執行你負責的部分
225
- - 更新所有受影響的引用和依賴
226
- - 發現問題即時回報 Designer,不要自己猜
227
-
228
- ## 溝通
229
- - 跨邊界變更 → SendMessage 給其他 Implementer
230
- - 發現藍圖問題 → SendMessage 給 Designer
231
- - 完成 → SendMessage 給 Reviewer
232
- - 收到審查意見 → 修正後回覆 Reviewer
233
-
234
- ## 你負責的範圍
235
- {implementer_scope}
236
-
237
- ## 藍圖
238
- {blueprint}
239
-
240
- reviewer: |
241
- ## Role
242
- 你是 Forge 的 Reviewer — 鍛造的最後一步,淬煉品質。
243
-
244
- ## 你的職責
245
- - 審查每個 Implementer 的產出
246
- - 驗證介面一致性
247
- - 檢查舊名稱/舊路徑殘留
248
- - 執行測試
249
-
250
- ## 溝通
251
- - 審查通過 → SendMessage 給對應 Implementer 確認
252
- - 需要修正 → SendMessage 給對應 Implementer(附問題詳情)
253
- - 架構問題 → SendMessage 給 Designer
254
- - 全部通過 → SendMessage 給 team-lead
255
-
256
- ## 藍圖
257
- {blueprint}
258
-
259
- # ─────────────────────────────────────────
260
- # 任務系統整合
261
- # ─────────────────────────────────────────
262
-
263
- collaboration:
264
- task_api: node .collaboration/core/task-api.js
265
-
266
- workflow:
267
- - step: 讀取任務
268
- run: node .collaboration/core/task-api.js get {task_id}
269
-
270
- - step: 認領任務
271
- run: node .collaboration/core/task-api.js claim {task_id}
272
-
273
- - step: design 階段
274
- actions:
275
- - 建立團隊(TeamCreate)
276
- - 派出 Designer 分析並設計
277
- - 等待藍圖產出
278
-
279
- - step: build 階段
280
- actions:
281
- - 根據藍圖分工,派出 Implementer(s) 和 Reviewer
282
- - Broadcast 藍圖
283
- - 監控溝通,協調衝突
284
-
285
- - step: temper 階段
286
- actions:
287
- - 確認所有產出通過審查
288
- - 處理修正循環
289
- - 全量測試
290
-
291
- - step: teardown
292
- actions:
293
- - 收集成果,關閉團隊
294
-
295
- - step: 完成任務
296
- run: node .collaboration/core/task-api.js complete {task_id}
297
-
298
- on_blocked:
299
- run: node .collaboration/core/task-api.js move {task_id} blocked