kenaz 0.3.3 → 0.3.5

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 (413) 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 +14 -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/spec/task_operations.parity.test.js +0 -1
  44. package/core/.formation/tests/hello.txt +2 -2
  45. package/core/.formation/tools/dashboard-models-chain.test.js +0 -6
  46. package/core/.formation/tools/dispatch-detail/cross-project-worktree.md +1 -9
  47. package/core/.formation/tools/dispatch-detail/worktree-subagent-mode.md +2 -2
  48. package/core/.formation/tools/dispatch.js +28 -549
  49. package/core/.formation/tools/mcp-allowlist.test.js +0 -1
  50. package/core/.formation/tools/post-complete/task2345.test.js +0 -5
  51. package/core/.formation/tools/pre-dispatch-snapshot.test.js +0 -100
  52. package/core/.formation/tools/prompt.js +29 -1623
  53. package/core/.formation/tools/prompt.test.js +26 -594
  54. package/core/.kenaz/knowledge/ladybug_2c51da1e_shadow_file_frame_group.patch +163 -163
  55. package/core/.kenaz/knowledge/ladybug_30cf85690e_shadow_page_read_during_checkpoint.patch +393 -393
  56. package/core/.kenaz/knowledge/ladybug_7a17858d3a_node_group_delete_lock.patch +102 -102
  57. package/core/.kenaz/knowledge/ladybug_926a0ba1_column_checkpoint.patch +412 -412
  58. package/core/.kenaz/knowledge/ladybug_a346c4c4b6_pk_index_header_pages.patch +144 -144
  59. package/core/.kenaz/knowledge/ladybug_ba5f38815b_csr_node_group.patch +86 -86
  60. package/core/.kenaz/muninn_episode_write.ps1 +17 -17
  61. package/core/.kenaz/specialist/field_report_watermark.json +1 -1
  62. package/core/.kenaz/specialist/memory_guard_fired.json +1 -1
  63. package/core/.kenaz/specialist/memory_guard_trigger_cache.json +1 -1
  64. package/core/.kenaz/specialist/t1777_probe.txt +1 -1
  65. package/core/.matrix/index.matrix +5 -5
  66. package/core/.specialist/tools/__tests__/freya-cli-contract.test.js +0 -1
  67. package/core/KENAZ_CORE_VERSION +1 -1
  68. package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +355 -355
  69. package/core/dev/JEV_INTEGRATION_PLAN.md +189 -189
  70. package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +13 -13
  71. package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +9 -9
  72. package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +14 -14
  73. package/core/dev/design/matrix_v2_EXAMPLE.matrix +67 -67
  74. package/core/dev/jev-eval/ACTIVE_CORRECTION.md +52 -52
  75. package/core/dev/jev-eval/CONTEXT_REVIEW.md +31 -31
  76. package/core/dev/jev-eval/EVALUATION_STATUS.md +39 -39
  77. package/core/dev/jev-eval/HISTORICAL_CORPUS.md +33 -33
  78. package/core/dev/jev-eval/README.md +99 -99
  79. package/core/dev/jev-eval/THALAMUS_RANKING.md +58 -58
  80. package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +32 -32
  81. package/core/dev/jev-eval/reports/context-review-2026-09-20.json +48 -48
  82. package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +52 -52
  83. package/core/dev/pipeline/SELF_ENHANCEMENT_STATUS.json.bak +47 -47
  84. package/core/dev/pipeline/tasks/.gitkeep +1 -1
  85. package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +27 -27
  86. package/core/dev/scripts/init_git.sh +0 -0
  87. package/core/dev/scripts/init_project.sh +0 -0
  88. package/core/dev/scripts/legacy/dev_agent_scheduler.ps1.bak +536 -536
  89. package/core/dev/scripts/legacy/multi_agent_scheduler.ps1.bak +1978 -1978
  90. package/core/dev/scripts/matrix/src/cli/commands/list-tags.ts.wip +140 -140
  91. package/core/dev/scripts/matrix/src/cli/commands/manage-tags.ts.wip +173 -173
  92. package/core/dev/scripts/matrix/src/cli/commands/stats.ts.wip +168 -168
  93. package/core/dev/scripts/matrix/src/cli/commands/tokens.ts.wip +126 -126
  94. package/core/dev/scripts/multi_agent_scheduler.sh +0 -0
  95. package/core/dev/scripts/run_once.sh +0 -0
  96. package/core/dev/scripts/setup_mcp.sh +0 -0
  97. package/core/dev/scripts/setup_rag.sh +0 -0
  98. package/core/dev/scripts/start_dev_agent.sh +0 -0
  99. package/core/dev/scripts/start_multi_agent.sh +0 -0
  100. package/core/dev/scripts/sync_task_queue.sh +0 -0
  101. package/core/plugins/kenaz/commands/Amelia.md +1 -1
  102. package/core/plugins/kenaz/commands/Ansuz.md +15 -3
  103. package/core/plugins/kenaz/scripts/kenaz-mode.js +11 -1
  104. package/core/plugins/kenaz/scripts/sync.js +6 -2
  105. package/core/plugins/kenaz/scripts/ygg.js +13 -1
  106. package/core/plugins/kenaz/skills/product_manager/SKILL.md +12 -12
  107. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/charts.csv +26 -26
  108. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/colors.csv +97 -97
  109. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/icons.csv +101 -101
  110. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/landing.csv +31 -31
  111. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/products.csv +96 -96
  112. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  113. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  114. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  115. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  116. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  117. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  118. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  119. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  120. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  121. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  122. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  123. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  124. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  125. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  126. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/styles.csv +68 -68
  127. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/typography.csv +57 -57
  128. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
  129. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  130. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
  131. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/core.py +253 -253
  132. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
  133. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/search.py +106 -106
  134. package/lib/cli.js +11 -4
  135. package/package.json +11 -7
  136. package/vendor/install-kenaz-cli.js +18 -7
  137. package/core/.formation/tools/broadcast.js +0 -103
  138. package/core/.formation/tools/dispatch-dryrun.test.js +0 -54
  139. package/core/.formation/tools/dispatch-notifier.js +0 -84
  140. package/core/.formation/tools/formations.js +0 -1203
  141. package/core/.formation/tools/headless-branch-recovery.test.js +0 -64
  142. package/core/.formation/tools/headless-dryrun.test.js +0 -79
  143. package/core/.formation/tools/headless-v2.js +0 -659
  144. package/core/.formation/tools/headless.js +0 -1071
  145. package/core/.formation/tools/legacy-scheduler.js +0 -1994
  146. package/core/.formation/tools/logger.js +0 -273
  147. package/core/.formation/tools/memory-loader.js +0 -422
  148. package/core/.formation/tools/process-state.js +0 -33
  149. package/core/.formation/tools/remote-conflict.js +0 -98
  150. package/core/.formation/tools/runner.js +0 -1332
  151. package/core/.formation/tools/task-utils.js +0 -344
  152. package/core/.formation/tools/task2028-headless-worktree.test.js +0 -112
  153. package/core/.formation/tools/tests/headless-mcp-args-plumbing.test.js +0 -123
  154. package/core/.formation/tools/worktree-leak.test.js +0 -162
  155. package/core/k-cli/dist/alaya/run.js +0 -91
  156. package/core/k-cli/dist/core/output.js +0 -24
  157. package/core/k-cli/dist/core/process.js +0 -38
  158. package/core/k-cli/dist/core/project.js +0 -80
  159. package/core/k-cli/dist/core/spawn.js +0 -268
  160. package/core/k-cli/dist/core/types.js +0 -2
  161. package/core/k-cli/dist/dashboard/update.js +0 -53
  162. package/core/k-cli/dist/dashboard/version.js +0 -20
  163. package/core/k-cli/dist/dispatch/run.js +0 -241
  164. package/core/k-cli/dist/dispatch/status.js +0 -103
  165. package/core/k-cli/dist/index.js +0 -283
  166. package/core/k-cli/dist/project/initialize.js +0 -301
  167. package/core/k-cli/dist/project/install.js +0 -89
  168. package/core/k-cli/dist/project/status.js +0 -138
  169. package/core/k-cli/dist/specialist/list.js +0 -100
  170. package/core/k-cli/dist/specialist/run.js +0 -93
  171. package/core/k-cli/dist/task/create.js +0 -194
  172. package/core/k-cli/dist/task/delete.js +0 -98
  173. package/core/k-cli/dist/task/get.js +0 -55
  174. package/core/k-cli/dist/task/list.js +0 -58
  175. package/core/k-cli/dist/task/submit.js +0 -156
  176. package/core/k-cli/dist/ygg/run.js +0 -51
  177. package/core/k-cli/node_modules/.bin/yaml +0 -16
  178. package/core/k-cli/node_modules/.bin/yaml.cmd +0 -17
  179. package/core/k-cli/node_modules/.bin/yaml.ps1 +0 -28
  180. package/core/k-cli/node_modules/.package-lock.json +0 -23
  181. package/core/k-cli/node_modules/yaml/LICENSE +0 -13
  182. package/core/k-cli/node_modules/yaml/README.md +0 -172
  183. package/core/k-cli/node_modules/yaml/bin.mjs +0 -11
  184. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-collection.js +0 -88
  185. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-doc.js +0 -43
  186. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-node.js +0 -109
  187. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-scalar.js +0 -86
  188. package/core/k-cli/node_modules/yaml/browser/dist/compose/composer.js +0 -217
  189. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-map.js +0 -115
  190. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +0 -198
  191. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +0 -49
  192. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-end.js +0 -37
  193. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +0 -207
  194. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +0 -223
  195. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-props.js +0 -146
  196. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-contains-newline.js +0 -34
  197. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +0 -26
  198. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +0 -15
  199. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-map-includes.js +0 -13
  200. package/core/k-cli/node_modules/yaml/browser/dist/doc/Document.js +0 -335
  201. package/core/k-cli/node_modules/yaml/browser/dist/doc/anchors.js +0 -71
  202. package/core/k-cli/node_modules/yaml/browser/dist/doc/applyReviver.js +0 -55
  203. package/core/k-cli/node_modules/yaml/browser/dist/doc/createNode.js +0 -88
  204. package/core/k-cli/node_modules/yaml/browser/dist/doc/directives.js +0 -176
  205. package/core/k-cli/node_modules/yaml/browser/dist/errors.js +0 -57
  206. package/core/k-cli/node_modules/yaml/browser/dist/index.js +0 -17
  207. package/core/k-cli/node_modules/yaml/browser/dist/log.js +0 -11
  208. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Alias.js +0 -114
  209. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Collection.js +0 -147
  210. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Node.js +0 -38
  211. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Pair.js +0 -36
  212. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Scalar.js +0 -24
  213. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLMap.js +0 -144
  214. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +0 -113
  215. package/core/k-cli/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +0 -63
  216. package/core/k-cli/node_modules/yaml/browser/dist/nodes/identity.js +0 -36
  217. package/core/k-cli/node_modules/yaml/browser/dist/nodes/toJS.js +0 -37
  218. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-scalar.js +0 -214
  219. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-stringify.js +0 -61
  220. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-visit.js +0 -97
  221. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst.js +0 -98
  222. package/core/k-cli/node_modules/yaml/browser/dist/parse/lexer.js +0 -717
  223. package/core/k-cli/node_modules/yaml/browser/dist/parse/line-counter.js +0 -39
  224. package/core/k-cli/node_modules/yaml/browser/dist/parse/parser.js +0 -967
  225. package/core/k-cli/node_modules/yaml/browser/dist/public-api.js +0 -102
  226. package/core/k-cli/node_modules/yaml/browser/dist/schema/Schema.js +0 -37
  227. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/map.js +0 -17
  228. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/null.js +0 -15
  229. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/seq.js +0 -17
  230. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/string.js +0 -14
  231. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/bool.js +0 -19
  232. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/float.js +0 -43
  233. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/int.js +0 -38
  234. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/schema.js +0 -23
  235. package/core/k-cli/node_modules/yaml/browser/dist/schema/json/schema.js +0 -62
  236. package/core/k-cli/node_modules/yaml/browser/dist/schema/tags.js +0 -96
  237. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +0 -58
  238. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +0 -26
  239. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +0 -46
  240. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +0 -71
  241. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +0 -64
  242. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +0 -74
  243. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +0 -78
  244. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +0 -39
  245. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +0 -93
  246. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +0 -101
  247. package/core/k-cli/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +0 -146
  248. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringify.js +0 -129
  249. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +0 -153
  250. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyComment.js +0 -20
  251. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +0 -85
  252. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +0 -24
  253. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyPair.js +0 -150
  254. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyString.js +0 -336
  255. package/core/k-cli/node_modules/yaml/browser/dist/util.js +0 -11
  256. package/core/k-cli/node_modules/yaml/browser/dist/visit.js +0 -233
  257. package/core/k-cli/node_modules/yaml/browser/index.js +0 -5
  258. package/core/k-cli/node_modules/yaml/browser/package.json +0 -3
  259. package/core/k-cli/node_modules/yaml/dist/cli.d.ts +0 -8
  260. package/core/k-cli/node_modules/yaml/dist/cli.mjs +0 -201
  261. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.d.ts +0 -11
  262. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.js +0 -90
  263. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.d.ts +0 -7
  264. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.js +0 -45
  265. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.d.ts +0 -29
  266. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.js +0 -112
  267. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.d.ts +0 -5
  268. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.js +0 -88
  269. package/core/k-cli/node_modules/yaml/dist/compose/composer.d.ts +0 -63
  270. package/core/k-cli/node_modules/yaml/dist/compose/composer.js +0 -222
  271. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.d.ts +0 -6
  272. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.js +0 -117
  273. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +0 -11
  274. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.js +0 -200
  275. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +0 -6
  276. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.js +0 -51
  277. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.d.ts +0 -6
  278. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.js +0 -39
  279. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +0 -7
  280. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.js +0 -209
  281. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +0 -10
  282. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.js +0 -225
  283. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.d.ts +0 -23
  284. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.js +0 -148
  285. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.d.ts +0 -2
  286. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.js +0 -36
  287. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +0 -2
  288. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.js +0 -28
  289. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +0 -3
  290. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.js +0 -17
  291. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.d.ts +0 -4
  292. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.js +0 -15
  293. package/core/k-cli/node_modules/yaml/dist/doc/Document.d.ts +0 -141
  294. package/core/k-cli/node_modules/yaml/dist/doc/Document.js +0 -337
  295. package/core/k-cli/node_modules/yaml/dist/doc/anchors.d.ts +0 -24
  296. package/core/k-cli/node_modules/yaml/dist/doc/anchors.js +0 -76
  297. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.d.ts +0 -9
  298. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.js +0 -57
  299. package/core/k-cli/node_modules/yaml/dist/doc/createNode.d.ts +0 -17
  300. package/core/k-cli/node_modules/yaml/dist/doc/createNode.js +0 -90
  301. package/core/k-cli/node_modules/yaml/dist/doc/directives.d.ts +0 -49
  302. package/core/k-cli/node_modules/yaml/dist/doc/directives.js +0 -178
  303. package/core/k-cli/node_modules/yaml/dist/errors.d.ts +0 -21
  304. package/core/k-cli/node_modules/yaml/dist/errors.js +0 -62
  305. package/core/k-cli/node_modules/yaml/dist/index.d.ts +0 -25
  306. package/core/k-cli/node_modules/yaml/dist/index.js +0 -50
  307. package/core/k-cli/node_modules/yaml/dist/log.d.ts +0 -3
  308. package/core/k-cli/node_modules/yaml/dist/log.js +0 -19
  309. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.d.ts +0 -29
  310. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.js +0 -116
  311. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.d.ts +0 -73
  312. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.js +0 -151
  313. package/core/k-cli/node_modules/yaml/dist/nodes/Node.d.ts +0 -53
  314. package/core/k-cli/node_modules/yaml/dist/nodes/Node.js +0 -40
  315. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.d.ts +0 -22
  316. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.js +0 -39
  317. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.d.ts +0 -43
  318. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.js +0 -27
  319. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.d.ts +0 -53
  320. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.js +0 -147
  321. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +0 -60
  322. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.js +0 -115
  323. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +0 -4
  324. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.js +0 -65
  325. package/core/k-cli/node_modules/yaml/dist/nodes/identity.d.ts +0 -23
  326. package/core/k-cli/node_modules/yaml/dist/nodes/identity.js +0 -53
  327. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.d.ts +0 -29
  328. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.js +0 -39
  329. package/core/k-cli/node_modules/yaml/dist/options.d.ts +0 -350
  330. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.d.ts +0 -64
  331. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.js +0 -218
  332. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.d.ts +0 -8
  333. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.js +0 -63
  334. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.d.ts +0 -39
  335. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.js +0 -99
  336. package/core/k-cli/node_modules/yaml/dist/parse/cst.d.ts +0 -109
  337. package/core/k-cli/node_modules/yaml/dist/parse/cst.js +0 -112
  338. package/core/k-cli/node_modules/yaml/dist/parse/lexer.d.ts +0 -87
  339. package/core/k-cli/node_modules/yaml/dist/parse/lexer.js +0 -719
  340. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.d.ts +0 -22
  341. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.js +0 -41
  342. package/core/k-cli/node_modules/yaml/dist/parse/parser.d.ts +0 -84
  343. package/core/k-cli/node_modules/yaml/dist/parse/parser.js +0 -972
  344. package/core/k-cli/node_modules/yaml/dist/public-api.d.ts +0 -44
  345. package/core/k-cli/node_modules/yaml/dist/public-api.js +0 -107
  346. package/core/k-cli/node_modules/yaml/dist/schema/Schema.d.ts +0 -17
  347. package/core/k-cli/node_modules/yaml/dist/schema/Schema.js +0 -39
  348. package/core/k-cli/node_modules/yaml/dist/schema/common/map.d.ts +0 -2
  349. package/core/k-cli/node_modules/yaml/dist/schema/common/map.js +0 -19
  350. package/core/k-cli/node_modules/yaml/dist/schema/common/null.d.ts +0 -4
  351. package/core/k-cli/node_modules/yaml/dist/schema/common/null.js +0 -17
  352. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.d.ts +0 -2
  353. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.js +0 -19
  354. package/core/k-cli/node_modules/yaml/dist/schema/common/string.d.ts +0 -2
  355. package/core/k-cli/node_modules/yaml/dist/schema/common/string.js +0 -16
  356. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.d.ts +0 -4
  357. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.js +0 -21
  358. package/core/k-cli/node_modules/yaml/dist/schema/core/float.d.ts +0 -4
  359. package/core/k-cli/node_modules/yaml/dist/schema/core/float.js +0 -47
  360. package/core/k-cli/node_modules/yaml/dist/schema/core/int.d.ts +0 -4
  361. package/core/k-cli/node_modules/yaml/dist/schema/core/int.js +0 -42
  362. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.d.ts +0 -1
  363. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.js +0 -25
  364. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.d.ts +0 -2
  365. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.js +0 -64
  366. package/core/k-cli/node_modules/yaml/dist/schema/json-schema.d.ts +0 -69
  367. package/core/k-cli/node_modules/yaml/dist/schema/tags.d.ts +0 -48
  368. package/core/k-cli/node_modules/yaml/dist/schema/tags.js +0 -99
  369. package/core/k-cli/node_modules/yaml/dist/schema/types.d.ts +0 -92
  370. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +0 -2
  371. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.js +0 -70
  372. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +0 -7
  373. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.js +0 -29
  374. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +0 -4
  375. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.js +0 -50
  376. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +0 -5
  377. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.js +0 -76
  378. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +0 -9
  379. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.js +0 -68
  380. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +0 -22
  381. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.js +0 -77
  382. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +0 -10
  383. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +0 -82
  384. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +0 -1
  385. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.js +0 -41
  386. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +0 -28
  387. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.js +0 -96
  388. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +0 -6
  389. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +0 -105
  390. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +0 -34
  391. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.js +0 -151
  392. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.d.ts +0 -21
  393. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.js +0 -132
  394. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +0 -17
  395. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.js +0 -155
  396. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.d.ts +0 -10
  397. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.js +0 -24
  398. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +0 -4
  399. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.js +0 -87
  400. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +0 -2
  401. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.js +0 -26
  402. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.d.ts +0 -3
  403. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.js +0 -152
  404. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.d.ts +0 -9
  405. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.js +0 -338
  406. package/core/k-cli/node_modules/yaml/dist/test-events.d.ts +0 -4
  407. package/core/k-cli/node_modules/yaml/dist/test-events.js +0 -134
  408. package/core/k-cli/node_modules/yaml/dist/util.d.ts +0 -16
  409. package/core/k-cli/node_modules/yaml/dist/util.js +0 -28
  410. package/core/k-cli/node_modules/yaml/dist/visit.d.ts +0 -102
  411. package/core/k-cli/node_modules/yaml/dist/visit.js +0 -236
  412. package/core/k-cli/node_modules/yaml/package.json +0 -97
  413. package/core/k-cli/node_modules/yaml/util.js +0 -2
@@ -1,162 +0,0 @@
1
- /**
2
- * TASK_1530 — regression test for the Bifrost/Codex worktree WRITE-LEAK class.
3
- *
4
- * Confirmed external-user incident: a Codex (OpenAI adapter) dispatch wrote a
5
- * modified tracked file to the MAIN repo instead of the isolated worktree, then:
6
- * 1. spawnBifrost never set CLAUDE_PROJECT_DIR / never captured
7
- * originalWorktreeHead → detectWorktreeLeak NEVER fired for Bifrost.
8
- * 2. detectWorktreeLeak was WARN-ONLY: it wrote a marker + console.error but
9
- * did NOT salvage the leaked content nor block the dispatch, so the file
10
- * sat in the main working tree where a later force-checkout could discard
11
- * it, and the dispatch was still reported as a clean success.
12
- *
13
- * This test drives the REAL detectWorktreeLeak (exported from runner.js) against
14
- * a synthetic temp repo + worktree (no external repo needed), simulating a
15
- * dispatch that produced ZERO task-branch commits while the main repo has an
16
- * uncommitted TRACKED modification. It asserts:
17
- * • the leak is SALVAGED — recoverable on a branch, and
18
- * • the dispatch is BLOCKED — child._formationExitCode flips to 1.
19
- *
20
- * Revert-proof: if the runner.js change (salvage + block) is reverted, this test
21
- * fails (no salvage branch / exit code stays 0).
22
- *
23
- * Scaffolding mirrors ./post-complete/worktree-rescue.test.js (TASK_1529).
24
- */
25
-
26
- const test = require('node:test');
27
- const assert = require('node:assert/strict');
28
- const fs = require('fs');
29
- const os = require('os');
30
- const path = require('path');
31
- const { execSync } = require('child_process');
32
-
33
- const { detectWorktreeLeak } = require('./runner');
34
-
35
- function git(cmd, cwd) {
36
- return execSync(cmd, { cwd, encoding: 'utf8', timeout: 20000, stdio: ['pipe', 'pipe', 'pipe'] }).trim();
37
- }
38
- function gitSafe(cmd, cwd) {
39
- try { return git(cmd, cwd); } catch { return null; }
40
- }
41
-
42
- function makeGitRepo(dir) {
43
- git('git init', dir);
44
- git('git config user.email "test@test.com"', dir);
45
- git('git config user.name "Test"', dir);
46
- git('git config commit.gpgsign false', dir);
47
- gitSafe('git checkout -b userwork', dir);
48
- fs.writeFileSync(path.join(dir, 'README.md'), 'init\n');
49
- git('git add README.md', dir);
50
- git('git commit --no-verify -m "init"', dir);
51
- const cur = git('git rev-parse --abbrev-ref HEAD', dir);
52
- if (cur !== 'userwork') git(`git branch -m ${cur} userwork`, dir);
53
- }
54
-
55
- function setup() {
56
- const tmpRoot = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), 'tn1530-')));
57
- const repo = path.join(tmpRoot, 'repo');
58
- fs.mkdirSync(repo, { recursive: true });
59
- makeGitRepo(repo);
60
- return { tmpRoot, repo };
61
- }
62
-
63
- function teardown(tmpRoot, repo) {
64
- try {
65
- const wt = git('git worktree list --porcelain', repo);
66
- for (const line of wt.split('\n')) {
67
- if (line.startsWith('worktree ')) {
68
- const p = line.slice('worktree '.length).trim();
69
- if (p && path.resolve(p) !== path.resolve(repo)) {
70
- gitSafe(`git worktree remove --force "${p}"`, repo);
71
- }
72
- }
73
- }
74
- } catch { /* best effort */ }
75
- fs.rmSync(tmpRoot, { recursive: true, force: true });
76
- }
77
-
78
- // ─────────────────────────────────────────────────────────────────────────────
79
- // LEAK: zero task-branch commits + main repo has an uncommitted tracked change.
80
- // detectWorktreeLeak must SALVAGE the leaked change AND BLOCK the dispatch.
81
- // ─────────────────────────────────────────────────────────────────────────────
82
-
83
- test('TASK_1530: Bifrost write-leak (zero task commits + dirty main) is salvaged AND blocks dispatch', () => {
84
- const { tmpRoot, repo } = setup();
85
- try {
86
- // Baseline tracked file the user cares about.
87
- const lostContent = 'module.exports = { version: 2, critical: true };\n';
88
- fs.writeFileSync(path.join(repo, 'kb.js'), 'module.exports = { version: 1 };\n');
89
- git('git add kb.js', repo);
90
- git('git commit --no-verify -m "seed kb.js baseline"', repo);
91
-
92
- // Agent worktree on a task branch — snapshot HEAD BEFORE any agent work
93
- // (exactly what spawnBifrost now captures as originalWorktreeHead).
94
- const worktree = path.join(tmpRoot, 'wt');
95
- git(`git worktree add -b task/task_repro1530 "${worktree}" HEAD`, repo);
96
- const originalWorktreeHead = git('git rev-parse HEAD', worktree);
97
-
98
- // THE BUG: the Codex agent produced ZERO commits on the task branch, and its
99
- // modified tracked file landed in the MAIN repo (CLAUDE_PROJECT_DIR misroute).
100
- fs.writeFileSync(path.join(repo, 'kb.js'), lostContent);
101
-
102
- // Simulate runner.js's child object so the function can flip the exit code.
103
- const child = { _formation: { sessionId: 'sess1530', skill: 'feature_agent' } };
104
-
105
- // Drive the REAL detector against the synthetic repo (mainRoot = temp repo).
106
- const res = detectWorktreeLeak(worktree, originalWorktreeHead, child, repo);
107
-
108
- // 1) A leak must be reported.
109
- assert.ok(res && res.leaked === true, `expected leak to be detected, got ${JSON.stringify(res)}`);
110
-
111
- // 2) The dispatch must be BLOCKED: exit code flipped to 1.
112
- assert.equal(child._formationExitCode, 1,
113
- `expected child._formationExitCode=1 (blocked), got ${child._formationExitCode}`);
114
- assert.ok(child._formationLeak, 'expected child._formationLeak to be set');
115
-
116
- // 3) The leaked modification must be SALVAGED onto a recoverable branch.
117
- assert.ok(res.salvageBranch, `expected a salvage branch, got ${res.salvageBranch}`);
118
- const salvaged = gitSafe(`git show ${res.salvageBranch}:kb.js`, repo);
119
- assert.equal(salvaged, lostContent.trim(),
120
- `salvage branch must contain the leaked kb.js content. Got: ${JSON.stringify(salvaged)}`);
121
-
122
- // 4) A LEAK_DETECTED marker is persisted in the worktree.
123
- assert.ok(fs.existsSync(path.join(worktree, 'LEAK_DETECTED')), 'expected LEAK_DETECTED marker');
124
- } finally {
125
- teardown(tmpRoot, repo);
126
- }
127
- });
128
-
129
- // ─────────────────────────────────────────────────────────────────────────────
130
- // REGRESSION GUARD: a healthy dispatch (>=1 task-branch commit) must NOT be
131
- // flagged as a leak even if the main repo happens to be dirty.
132
- // ─────────────────────────────────────────────────────────────────────────────
133
-
134
- test('TASK_1530 regression: dispatch WITH task-branch commits is NOT flagged as leak', () => {
135
- const { tmpRoot, repo } = setup();
136
- try {
137
- fs.writeFileSync(path.join(repo, 'kb.js'), 'v1\n');
138
- git('git add kb.js', repo);
139
- git('git commit --no-verify -m "seed"', repo);
140
-
141
- const worktree = path.join(tmpRoot, 'wt');
142
- git(`git worktree add -b task/task_ok1530 "${worktree}" HEAD`, repo);
143
- const originalWorktreeHead = git('git rev-parse HEAD', worktree);
144
-
145
- // Agent committed real work on the task branch (the healthy path).
146
- fs.writeFileSync(path.join(worktree, 'feature.js'), 'export const x = 1;\n');
147
- git('git add feature.js', worktree);
148
- git('git commit --no-verify -m "[TASK_OK1530] add feature"', worktree);
149
-
150
- // Main repo is incidentally dirty (e.g. unrelated state files).
151
- fs.writeFileSync(path.join(repo, 'kb.js'), 'v1\nincidental\n');
152
-
153
- const child = { _formation: { sessionId: 'sessok', skill: 'feature_agent' } };
154
- const res = detectWorktreeLeak(worktree, originalWorktreeHead, child, repo);
155
-
156
- assert.equal(res, null, `healthy dispatch must not be flagged as leak, got ${JSON.stringify(res)}`);
157
- assert.equal(child._formationExitCode, undefined, 'exit code must remain unset for healthy dispatch');
158
- assert.ok(!child._formationLeak, 'no leak record for healthy dispatch');
159
- } finally {
160
- teardown(tmpRoot, repo);
161
- }
162
- });
@@ -1,91 +0,0 @@
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
- }
@@ -1,24 +0,0 @@
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
- }
@@ -1,38 +0,0 @@
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
- }
@@ -1,80 +0,0 @@
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
- }
@@ -1,268 +0,0 @@
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
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });