@weavecode/weave 0.1.3 → 0.1.4

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/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/.editorconfig +1 -1
  2. package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/CHANGELOG.md +45 -22
  3. package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/README.md +26 -1
  4. package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/dist/qs.js +27 -27
  5. package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/eslint.config.mjs +61 -50
  6. package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/lib/formats.js +7 -2
  7. package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/lib/parse.js +13 -6
  8. package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/lib/stringify.js +5 -3
  9. package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/lib/utils.js +15 -7
  10. package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/package.json +6 -6
  11. package/node_modules/@modelcontextprotocol/sdk/node_modules/express-rate-limit/node_modules/ip-address/dist/common.js +2 -2
  12. package/node_modules/@modelcontextprotocol/sdk/node_modules/express-rate-limit/node_modules/ip-address/package.json +2 -2
  13. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/README.md +2 -3
  14. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/helper/css/common.js +8 -3
  15. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/helper/css/index.js +1 -1
  16. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/helper/route/index.js +3 -1
  17. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/jsx/base.js +1 -1
  18. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/bearer-auth/index.js +8 -0
  19. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/serve-static/index.js +3 -1
  20. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/router/trie-router/node.js +2 -2
  21. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/utils/url.js +11 -6
  22. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/helper/css/common.js +8 -3
  23. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/helper/css/index.js +1 -1
  24. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/helper/route/index.js +3 -1
  25. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/jsx/base.js +1 -1
  26. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/bearer-auth/index.js +8 -0
  27. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/serve-static/index.js +3 -1
  28. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/router/trie-router/node.js +2 -2
  29. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/adapter/aws-lambda/conninfo.d.ts +1 -1
  30. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/adapter/bun/conninfo.d.ts +1 -1
  31. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/adapter/bun/ssg.d.ts +1 -1
  32. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/adapter/cloudflare-pages/conninfo.d.ts +1 -1
  33. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/adapter/cloudflare-workers/conninfo.d.ts +1 -1
  34. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/adapter/deno/conninfo.d.ts +1 -1
  35. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/adapter/deno/ssg.d.ts +1 -1
  36. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/adapter/lambda-edge/conninfo.d.ts +1 -1
  37. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/adapter/netlify/conninfo.d.ts +1 -1
  38. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/adapter/vercel/conninfo.d.ts +1 -1
  39. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/helper/testing/index.d.ts +2 -1
  40. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/hono-base.d.ts +21 -9
  41. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/index.d.ts +1 -1
  42. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/jsx/components.d.ts +2 -2
  43. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/jsx/context.d.ts +2 -2
  44. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/jsx/dom/components.d.ts +2 -2
  45. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/jsx/dom/css.d.ts +2 -2
  46. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/jsx/streaming.d.ts +4 -3
  47. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/middleware/bearer-auth/index.d.ts +2 -1
  48. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/middleware/ip-restriction/index.d.ts +3 -3
  49. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +3 -3
  50. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/utils/ipaddr.d.ts +1 -1
  51. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/utils/url.js +11 -6
  52. package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/package.json +1 -1
  53. package/node_modules/@weavecode/cli/dist/cli.js +4 -4
  54. package/node_modules/@weavecode/cli/dist/commands/chpass.js +1 -1
  55. package/node_modules/@weavecode/cli/dist/commands/daemon-auth.js +1 -1
  56. package/node_modules/@weavecode/cli/dist/commands/daemon.js +2 -2
  57. package/node_modules/@weavecode/cli/dist/commands/dashboard.js +2 -2
  58. package/node_modules/@weavecode/cli/dist/commands/doctor.js +1 -1
  59. package/node_modules/@weavecode/cli/dist/commands/init.js +1 -1
  60. package/node_modules/@weavecode/cli/dist/commands/scan.js +1 -1
  61. package/node_modules/@weavecode/cli/dist/commands/status.js +2 -2
  62. package/node_modules/@weavecode/cli/dist/commands/uninstall.js +1 -1
  63. package/node_modules/@weavecode/cli/dist/i18n/dict/en.js +2 -1
  64. package/node_modules/@weavecode/cli/dist/i18n/dict/zh.d.ts +14 -0
  65. package/node_modules/@weavecode/cli/dist/i18n/dict/zh.js +4 -3
  66. package/node_modules/@weavecode/cli/dist/i18n/index.js +1 -1
  67. package/node_modules/@weavecode/cli/dist/i18n/t.js +1 -1
  68. package/node_modules/@weavecode/cli/dist/init/claudemd-gen.js +3 -3
  69. package/node_modules/@weavecode/cli/dist/init/executor.d.ts +5 -4
  70. package/node_modules/@weavecode/cli/dist/init/executor.js +3 -3
  71. package/node_modules/@weavecode/cli/dist/init/git-commit.js +2 -2
  72. package/node_modules/@weavecode/cli/dist/init/harnesses/claude.js +7 -7
  73. package/node_modules/@weavecode/cli/dist/init/harnesses/codex.js +1 -1
  74. package/node_modules/@weavecode/cli/dist/init/instruction-link.js +1 -1
  75. package/node_modules/@weavecode/cli/dist/init/plugin-templates.js +1 -1
  76. package/node_modules/@weavecode/cli/dist/init/prompt.js +4 -4
  77. package/node_modules/@weavecode/cli/dist/init/provision.d.ts +25 -0
  78. package/node_modules/@weavecode/cli/dist/init/provision.js +1 -0
  79. package/node_modules/@weavecode/cli/dist/init/uninstall.js +6 -6
  80. package/node_modules/@weavecode/cli/dist/init/wiring.js +1 -1
  81. package/node_modules/@weavecode/cli/dist/parser.js +1 -1
  82. package/node_modules/@weavecode/cli/dist/statusline/ansi.js +1 -1
  83. package/node_modules/@weavecode/cli/dist/statusline/mock-input.js +1 -1
  84. package/node_modules/@weavecode/cli/dist/statusline/preview.js +2 -2
  85. package/node_modules/@weavecode/cli/package.json +5 -5
  86. package/node_modules/@weavecode/core/dist/harness-checks.js +1 -1
  87. package/node_modules/@weavecode/core/dist/harness.d.ts +13 -1
  88. package/node_modules/@weavecode/core/dist/harness.js +1 -1
  89. package/node_modules/@weavecode/core/dist/index.d.ts +1 -1
  90. package/node_modules/@weavecode/core/dist/index.js +1 -1
  91. package/node_modules/@weavecode/core/dist/platform.js +1 -1
  92. package/node_modules/@weavecode/core/dist/types.js +1 -1
  93. package/node_modules/@weavecode/core/dist/utils/fs.js +1 -1
  94. package/node_modules/@weavecode/core/dist/utils/logger.js +1 -1
  95. package/node_modules/@weavecode/core/package.json +1 -1
  96. package/node_modules/@weavecode/harness/dist/claude/assets.js +4 -4
  97. package/node_modules/@weavecode/harness/dist/claude/capture.js +9 -9
  98. package/node_modules/@weavecode/harness/dist/claude/commands.js +3 -3
  99. package/node_modules/@weavecode/harness/dist/claude/config.d.ts +9 -0
  100. package/node_modules/@weavecode/harness/dist/claude/config.js +2 -2
  101. package/node_modules/@weavecode/harness/dist/claude/detect.js +1 -1
  102. package/node_modules/@weavecode/harness/dist/claude/edits.js +1 -1
  103. package/node_modules/@weavecode/harness/dist/claude/event-source.d.ts +2 -0
  104. package/node_modules/@weavecode/harness/dist/claude/event-source.js +1 -1
  105. package/node_modules/@weavecode/harness/dist/claude/images.js +2 -2
  106. package/node_modules/@weavecode/harness/dist/claude/index.d.ts +4 -2
  107. package/node_modules/@weavecode/harness/dist/claude/index.js +1 -1
  108. package/node_modules/@weavecode/harness/dist/claude/liveness.d.ts +64 -0
  109. package/node_modules/@weavecode/harness/dist/claude/liveness.js +1 -0
  110. package/node_modules/@weavecode/harness/dist/claude/mcp-gen.js +1 -1
  111. package/node_modules/@weavecode/harness/dist/claude/messaging.js +2 -2
  112. package/node_modules/@weavecode/harness/dist/claude/model-aliases.d.ts +4 -0
  113. package/node_modules/@weavecode/harness/dist/claude/model-aliases.js +1 -1
  114. package/node_modules/@weavecode/harness/dist/claude/narration.d.ts +13 -0
  115. package/node_modules/@weavecode/harness/dist/claude/narration.js +1 -0
  116. package/node_modules/@weavecode/harness/dist/claude/peers.js +1 -1
  117. package/node_modules/@weavecode/harness/dist/claude/plan.js +1 -1
  118. package/node_modules/@weavecode/harness/dist/claude/plugins.js +4 -4
  119. package/node_modules/@weavecode/harness/dist/claude/prompt-inbox.js +1 -1
  120. package/node_modules/@weavecode/harness/dist/claude/prompt.js +3 -3
  121. package/node_modules/@weavecode/harness/dist/claude/questions.js +2 -2
  122. package/node_modules/@weavecode/harness/dist/claude/resume.js +1 -1
  123. package/node_modules/@weavecode/harness/dist/claude/settings-gen.js +1 -1
  124. package/node_modules/@weavecode/harness/dist/claude/side-question.js +2 -2
  125. package/node_modules/@weavecode/harness/dist/claude/statusline/generator.js +14 -14
  126. package/node_modules/@weavecode/harness/dist/claude/statusline/git-cache.js +1 -1
  127. package/node_modules/@weavecode/harness/dist/claude/statusline/surface.js +2 -2
  128. package/node_modules/@weavecode/harness/dist/claude/transcript.d.ts +13 -0
  129. package/node_modules/@weavecode/harness/dist/claude/transcript.js +7 -6
  130. package/node_modules/@weavecode/harness/dist/codex/assets.js +1 -1
  131. package/node_modules/@weavecode/harness/dist/codex/capture.d.ts +1 -2
  132. package/node_modules/@weavecode/harness/dist/codex/capture.js +2 -2
  133. package/node_modules/@weavecode/harness/dist/codex/commands.js +4 -4
  134. package/node_modules/@weavecode/harness/dist/codex/config.d.ts +10 -0
  135. package/node_modules/@weavecode/harness/dist/codex/config.js +2 -2
  136. package/node_modules/@weavecode/harness/dist/codex/detect.js +1 -1
  137. package/node_modules/@weavecode/harness/dist/codex/event-source.d.ts +1 -1
  138. package/node_modules/@weavecode/harness/dist/codex/event-source.js +2 -2
  139. package/node_modules/@weavecode/harness/dist/codex/images.d.ts +2 -0
  140. package/node_modules/@weavecode/harness/dist/codex/images.js +1 -0
  141. package/node_modules/@weavecode/harness/dist/codex/index.d.ts +13 -2
  142. package/node_modules/@weavecode/harness/dist/codex/index.js +1 -1
  143. package/node_modules/@weavecode/harness/dist/codex/liveness.d.ts +38 -0
  144. package/node_modules/@weavecode/harness/dist/codex/liveness.js +1 -0
  145. package/node_modules/@weavecode/harness/dist/codex/mcp.js +1 -1
  146. package/node_modules/@weavecode/harness/dist/codex/messaging.d.ts +7 -3
  147. package/node_modules/@weavecode/harness/dist/codex/messaging.js +3 -3
  148. package/node_modules/@weavecode/harness/dist/codex/narration.d.ts +10 -0
  149. package/node_modules/@weavecode/harness/dist/codex/narration.js +1 -0
  150. package/node_modules/@weavecode/harness/dist/codex/plugin-state.js +1 -1
  151. package/node_modules/@weavecode/harness/dist/codex/plugins.js +3 -3
  152. package/node_modules/@weavecode/harness/dist/codex/provision.d.ts +12 -0
  153. package/node_modules/@weavecode/harness/dist/codex/provision.js +1 -0
  154. package/node_modules/@weavecode/harness/dist/codex/questions.d.ts +9 -0
  155. package/node_modules/@weavecode/harness/dist/codex/questions.js +2 -0
  156. package/node_modules/@weavecode/harness/dist/codex/resume.js +1 -1
  157. package/node_modules/@weavecode/harness/dist/codex/rollout.d.ts +8 -5
  158. package/node_modules/@weavecode/harness/dist/codex/rollout.js +5 -5
  159. package/node_modules/@weavecode/harness/dist/codex/side-question.d.ts +12 -0
  160. package/node_modules/@weavecode/harness/dist/codex/side-question.js +4 -0
  161. package/node_modules/@weavecode/harness/dist/codex/titles.d.ts +8 -0
  162. package/node_modules/@weavecode/harness/dist/codex/titles.js +4 -0
  163. package/node_modules/@weavecode/harness/dist/codex/toml.js +13 -13
  164. package/node_modules/@weavecode/harness/dist/codex/transcript.js +2 -2
  165. package/node_modules/@weavecode/harness/dist/driver.d.ts +162 -8
  166. package/node_modules/@weavecode/harness/dist/driver.js +1 -1
  167. package/node_modules/@weavecode/harness/dist/index.d.ts +1 -0
  168. package/node_modules/@weavecode/harness/dist/index.js +1 -1
  169. package/node_modules/@weavecode/harness/dist/init/generated.js +2 -2
  170. package/node_modules/@weavecode/harness/dist/init/pipeline.js +1 -1
  171. package/node_modules/@weavecode/harness/dist/install.d.ts +9 -0
  172. package/node_modules/@weavecode/harness/dist/install.js +1 -0
  173. package/node_modules/@weavecode/harness/dist/registry-wiring.js +1 -1
  174. package/node_modules/@weavecode/harness/dist/shared/install-link.js +1 -1
  175. package/node_modules/@weavecode/harness/dist/shared/json-cap.js +1 -1
  176. package/node_modules/@weavecode/harness/dist/zcode/assets.js +1 -1
  177. package/node_modules/@weavecode/harness/dist/zcode/capture.js +3 -3
  178. package/node_modules/@weavecode/harness/dist/zcode/mcp.js +2 -2
  179. package/node_modules/@weavecode/harness/package.json +2 -2
  180. package/node_modules/@weavecode/server/dist/config/dotted.js +1 -1
  181. package/node_modules/@weavecode/server/dist/config/profiles.d.ts +10 -1
  182. package/node_modules/@weavecode/server/dist/config/profiles.js +2 -2
  183. package/node_modules/@weavecode/server/dist/daemon/ai-config.js +2 -2
  184. package/node_modules/@weavecode/server/dist/daemon/ai-context.js +6 -6
  185. package/node_modules/@weavecode/server/dist/daemon/ai-routes.js +4 -4
  186. package/node_modules/@weavecode/server/dist/daemon/api-log.js +3 -3
  187. package/node_modules/@weavecode/server/dist/daemon/auth-routes.js +1 -1
  188. package/node_modules/@weavecode/server/dist/daemon/auto-start.js +6 -6
  189. package/node_modules/@weavecode/server/dist/daemon/capture-routes.js +1 -1
  190. package/node_modules/@weavecode/server/dist/daemon/claude-liveness.d.ts +4 -55
  191. package/node_modules/@weavecode/server/dist/daemon/claude-liveness.js +1 -1
  192. package/node_modules/@weavecode/server/dist/daemon/config-routes.js +1 -1
  193. package/node_modules/@weavecode/server/dist/daemon/cron.js +1 -1
  194. package/node_modules/@weavecode/server/dist/daemon/dashboard-auth.js +2 -2
  195. package/node_modules/@weavecode/server/dist/daemon/dashboard-pusher.js +1 -1
  196. package/node_modules/@weavecode/server/dist/daemon/data-bus.js +1 -1
  197. package/node_modules/@weavecode/server/dist/daemon/decision-config.js +2 -2
  198. package/node_modules/@weavecode/server/dist/daemon/dev-entry.js +1 -1
  199. package/node_modules/@weavecode/server/dist/daemon/fs-browser.js +1 -1
  200. package/node_modules/@weavecode/server/dist/daemon/hook-pipeline.d.ts +2 -0
  201. package/node_modules/@weavecode/server/dist/daemon/hook-pipeline.js +1 -1
  202. package/node_modules/@weavecode/server/dist/daemon/hooks-routes.js +1 -1
  203. package/node_modules/@weavecode/server/dist/daemon/http.js +1 -1
  204. package/node_modules/@weavecode/server/dist/daemon/liveness.d.ts +7 -0
  205. package/node_modules/@weavecode/server/dist/daemon/liveness.js +1 -0
  206. package/node_modules/@weavecode/server/dist/daemon/mcp-orchestration.js +1 -1
  207. package/node_modules/@weavecode/server/dist/daemon/narration-watcher.d.ts +28 -0
  208. package/node_modules/@weavecode/server/dist/daemon/narration-watcher.js +2 -0
  209. package/node_modules/@weavecode/server/dist/daemon/opener/backend-ghostty.d.ts +16 -0
  210. package/node_modules/@weavecode/server/dist/daemon/opener/backend-ghostty.js +1 -0
  211. package/node_modules/@weavecode/server/dist/daemon/opener/backend-iterm.d.ts +20 -0
  212. package/node_modules/@weavecode/server/dist/daemon/opener/backend-iterm.js +12 -0
  213. package/node_modules/@weavecode/server/dist/daemon/opener/backend-konsole.d.ts +23 -0
  214. package/node_modules/@weavecode/server/dist/daemon/opener/backend-konsole.js +2 -0
  215. package/node_modules/@weavecode/server/dist/daemon/opener/backend-terminal-app.d.ts +19 -0
  216. package/node_modules/@weavecode/server/dist/daemon/opener/backend-terminal-app.js +1 -0
  217. package/node_modules/@weavecode/server/dist/daemon/opener/backend-wezterm.d.ts +87 -0
  218. package/node_modules/@weavecode/server/dist/daemon/opener/backend-wezterm.js +1 -0
  219. package/node_modules/@weavecode/server/dist/daemon/opener/backend-wt.d.ts +45 -0
  220. package/node_modules/@weavecode/server/dist/daemon/opener/backend-wt.js +1 -0
  221. package/node_modules/@weavecode/server/dist/daemon/opener/backend.d.ts +115 -0
  222. package/node_modules/@weavecode/server/dist/daemon/opener/backend.js +1 -0
  223. package/node_modules/@weavecode/server/dist/daemon/opener/launch.js +1 -1
  224. package/node_modules/@weavecode/server/dist/daemon/opener/pty-terminals.js +4 -4
  225. package/node_modules/@weavecode/server/dist/daemon/opener/shared.js +1 -1
  226. package/node_modules/@weavecode/server/dist/daemon/opener/wezterm-mux.d.ts +8 -5
  227. package/node_modules/@weavecode/server/dist/daemon/opener/wezterm-mux.js +1 -1
  228. package/node_modules/@weavecode/server/dist/daemon/opener/wt.js +3 -3
  229. package/node_modules/@weavecode/server/dist/daemon/opener.d.ts +23 -120
  230. package/node_modules/@weavecode/server/dist/daemon/opener.js +1 -13
  231. package/node_modules/@weavecode/server/dist/daemon/port.js +1 -1
  232. package/node_modules/@weavecode/server/dist/daemon/project-files.d.ts +17 -2
  233. package/node_modules/@weavecode/server/dist/daemon/project-files.js +2 -1
  234. package/node_modules/@weavecode/server/dist/daemon/project-harnesses.d.ts +2 -0
  235. package/node_modules/@weavecode/server/dist/daemon/project-harnesses.js +2 -2
  236. package/node_modules/@weavecode/server/dist/daemon/project-updates-refresher.js +1 -1
  237. package/node_modules/@weavecode/server/dist/daemon/prompt-images.js +1 -1
  238. package/node_modules/@weavecode/server/dist/daemon/routes/hooks-admin.js +1 -1
  239. package/node_modules/@weavecode/server/dist/daemon/routes/market.js +1 -1
  240. package/node_modules/@weavecode/server/dist/daemon/routes/orchestration.js +1 -1
  241. package/node_modules/@weavecode/server/dist/daemon/routes/path-refs.js +1 -1
  242. package/node_modules/@weavecode/server/dist/daemon/routes/project-files.d.ts +6 -0
  243. package/node_modules/@weavecode/server/dist/daemon/routes/project-files.js +1 -0
  244. package/node_modules/@weavecode/server/dist/daemon/routes/projects.js +1 -1
  245. package/node_modules/@weavecode/server/dist/daemon/routes/search.d.ts +38 -0
  246. package/node_modules/@weavecode/server/dist/daemon/routes/search.js +1 -0
  247. package/node_modules/@weavecode/server/dist/daemon/routes/session-control.js +1 -1
  248. package/node_modules/@weavecode/server/dist/daemon/routes/session-insights.js +1 -1
  249. package/node_modules/@weavecode/server/dist/daemon/routes/settings-statusline.js +1 -1
  250. package/node_modules/@weavecode/server/dist/daemon/routes/uploads.js +1 -1
  251. package/node_modules/@weavecode/server/dist/daemon/routes/watches.js +1 -1
  252. package/node_modules/@weavecode/server/dist/daemon/server.d.ts +8 -2
  253. package/node_modules/@weavecode/server/dist/daemon/server.js +8 -8
  254. package/node_modules/@weavecode/server/dist/daemon/session-open.d.ts +10 -1
  255. package/node_modules/@weavecode/server/dist/daemon/session-open.js +1 -1
  256. package/node_modules/@weavecode/server/dist/daemon/session-probe.js +1 -1
  257. package/node_modules/@weavecode/server/dist/daemon/settings.js +2 -2
  258. package/node_modules/@weavecode/server/dist/daemon/snapshot-refresher.js +1 -1
  259. package/node_modules/@weavecode/server/dist/daemon/sse-hub.js +1 -1
  260. package/node_modules/@weavecode/server/dist/daemon/start.js +1 -1
  261. package/node_modules/@weavecode/server/dist/daemon/state.js +2 -2
  262. package/node_modules/@weavecode/server/dist/daemon/static.js +1 -1
  263. package/node_modules/@weavecode/server/dist/daemon/terminal-topology-refresher.js +1 -1
  264. package/node_modules/@weavecode/server/dist/daemon/tls.js +1 -1
  265. package/node_modules/@weavecode/server/dist/daemon/toolkit-routes.js +1 -1
  266. package/node_modules/@weavecode/server/dist/daemon/upload-sessions.js +1 -1
  267. package/node_modules/@weavecode/server/dist/db/db.js +5 -2
  268. package/node_modules/@weavecode/server/dist/db/layout.js +1 -1
  269. package/node_modules/@weavecode/server/dist/hooks/answer-keys.js +1 -1
  270. package/node_modules/@weavecode/server/dist/hooks/bus.d.ts +10 -0
  271. package/node_modules/@weavecode/server/dist/hooks/bus.js +1 -1
  272. package/node_modules/@weavecode/server/dist/hooks/dashboard-rate.js +1 -1
  273. package/node_modules/@weavecode/server/dist/hooks/decision-judge.js +1 -1
  274. package/node_modules/@weavecode/server/dist/hooks/delivery/ack-gate.d.ts +20 -0
  275. package/node_modules/@weavecode/server/dist/hooks/delivery/ack-gate.js +1 -1
  276. package/node_modules/@weavecode/server/dist/hooks/delivery/channels.js +1 -1
  277. package/node_modules/@weavecode/server/dist/hooks/delivery/keys.d.ts +7 -1
  278. package/node_modules/@weavecode/server/dist/hooks/delivery/keys.js +1 -1
  279. package/node_modules/@weavecode/server/dist/hooks/delivery/queue.d.ts +4 -4
  280. package/node_modules/@weavecode/server/dist/hooks/delivery/queue.js +1 -1
  281. package/node_modules/@weavecode/server/dist/hooks/delivery/relay.js +1 -1
  282. package/node_modules/@weavecode/server/dist/hooks/delivery/send.js +2 -2
  283. package/node_modules/@weavecode/server/dist/hooks/delivery/views.d.ts +3 -1
  284. package/node_modules/@weavecode/server/dist/hooks/delivery/views.js +1 -1
  285. package/node_modules/@weavecode/server/dist/hooks/dispatcher.d.ts +5 -0
  286. package/node_modules/@weavecode/server/dist/hooks/dispatcher.js +6 -6
  287. package/node_modules/@weavecode/server/dist/hooks/edge-extract.js +1 -1
  288. package/node_modules/@weavecode/server/dist/hooks/handlers/webhook.js +1 -1
  289. package/node_modules/@weavecode/server/dist/hooks/headless-runner.js +2 -2
  290. package/node_modules/@weavecode/server/dist/hooks/inbox-socket.js +2 -2
  291. package/node_modules/@weavecode/server/dist/hooks/inbox-worker.d.ts +15 -0
  292. package/node_modules/@weavecode/server/dist/hooks/inbox-worker.js +3 -3
  293. package/node_modules/@weavecode/server/dist/hooks/match.js +1 -1
  294. package/node_modules/@weavecode/server/dist/hooks/message-deliverer.d.ts +64 -6
  295. package/node_modules/@weavecode/server/dist/hooks/message-deliverer.js +3 -2
  296. package/node_modules/@weavecode/server/dist/hooks/mirror.js +4 -4
  297. package/node_modules/@weavecode/server/dist/hooks/orchestration-engine.js +7 -7
  298. package/node_modules/@weavecode/server/dist/hooks/orchestration-graph.js +1 -1
  299. package/node_modules/@weavecode/server/dist/hooks/plugin-installer.d.ts +5 -0
  300. package/node_modules/@weavecode/server/dist/hooks/plugin-installer.js +3 -3
  301. package/node_modules/@weavecode/server/dist/hooks/plugin-loader.js +1 -1
  302. package/node_modules/@weavecode/server/dist/hooks/plugin-project-state.js +1 -1
  303. package/node_modules/@weavecode/server/dist/hooks/prompt-flusher.js +1 -1
  304. package/node_modules/@weavecode/server/dist/hooks/promptbox.js +8 -8
  305. package/node_modules/@weavecode/server/dist/hooks/push-notify.js +2 -2
  306. package/node_modules/@weavecode/server/dist/hooks/question-tracker.js +1 -1
  307. package/node_modules/@weavecode/server/dist/hooks/registry.js +1 -1
  308. package/node_modules/@weavecode/server/dist/hooks/resume-runner.js +1 -1
  309. package/node_modules/@weavecode/server/dist/hooks/session-purge.js +1 -1
  310. package/node_modules/@weavecode/server/dist/hooks/session-sweeper.d.ts +2 -0
  311. package/node_modules/@weavecode/server/dist/hooks/session-sweeper.js +1 -1
  312. package/node_modules/@weavecode/server/dist/hooks/side-questions.js +1 -1
  313. package/node_modules/@weavecode/server/dist/hooks/synthetic-sessions.js +1 -1
  314. package/node_modules/@weavecode/server/dist/hooks/toolkit-scan.js +1 -1
  315. package/node_modules/@weavecode/server/dist/hooks/toolkit.js +5 -5
  316. package/node_modules/@weavecode/server/dist/hooks/watch-engine.js +1 -1
  317. package/node_modules/@weavecode/server/dist/index.d.ts +1 -0
  318. package/node_modules/@weavecode/server/dist/index.js +1 -1
  319. package/node_modules/@weavecode/server/dist/install/apply-update.js +1 -1
  320. package/node_modules/@weavecode/server/dist/install/capabilities.js +1 -1
  321. package/node_modules/@weavecode/server/dist/install/codex-toml.js +1 -1
  322. package/node_modules/@weavecode/server/dist/install/file-assets.js +1 -1
  323. package/node_modules/@weavecode/server/dist/install/fingerprint.js +1 -1
  324. package/node_modules/@weavecode/server/dist/install/global-config.js +1 -1
  325. package/node_modules/@weavecode/server/dist/install/global-file-assets.js +1 -1
  326. package/node_modules/@weavecode/server/dist/install/init-files.js +2 -2
  327. package/node_modules/@weavecode/server/dist/install/install-ledger.js +1 -1
  328. package/node_modules/@weavecode/server/dist/install/installer.js +1 -1
  329. package/node_modules/@weavecode/server/dist/install/library-index.js +1 -1
  330. package/node_modules/@weavecode/server/dist/install/mcp-rows.js +1 -1
  331. package/node_modules/@weavecode/server/dist/install/plugin-install.js +1 -1
  332. package/node_modules/@weavecode/server/dist/install/plugin-rows.js +1 -1
  333. package/node_modules/@weavecode/server/dist/install/plugin-templates.js +1 -1
  334. package/node_modules/@weavecode/server/dist/install/project-config.js +1 -1
  335. package/node_modules/@weavecode/server/dist/install/reader.js +1 -1
  336. package/node_modules/@weavecode/server/dist/install/scan-cache.js +1 -1
  337. package/node_modules/@weavecode/server/dist/install/scanner.js +1 -1
  338. package/node_modules/@weavecode/server/dist/install/settings-mcp.js +2 -2
  339. package/node_modules/@weavecode/server/dist/install/updates.js +1 -1
  340. package/node_modules/@weavecode/server/dist/market/builtin.js +1 -1
  341. package/node_modules/@weavecode/server/dist/market/identity.js +1 -1
  342. package/node_modules/@weavecode/server/dist/market/import.js +2 -2
  343. package/node_modules/@weavecode/server/dist/market/refresh.js +1 -1
  344. package/node_modules/@weavecode/server/dist/market/resolve.js +1 -1
  345. package/node_modules/@weavecode/server/dist/market/updates.js +1 -1
  346. package/node_modules/@weavecode/server/dist/registry.js +2 -2
  347. package/node_modules/@weavecode/server/dist/repositories/hook-dispatches.js +5 -5
  348. package/node_modules/@weavecode/server/dist/repositories/hook-events.d.ts +19 -1
  349. package/node_modules/@weavecode/server/dist/repositories/hook-events.js +9 -3
  350. package/node_modules/@weavecode/server/dist/repositories/hook-rules.js +4 -4
  351. package/node_modules/@weavecode/server/dist/repositories/libraries.js +1 -1
  352. package/node_modules/@weavecode/server/dist/repositories/orchestrations.js +7 -7
  353. package/node_modules/@weavecode/server/dist/repositories/plugin-states.js +1 -1
  354. package/node_modules/@weavecode/server/dist/repositories/projects.js +2 -2
  355. package/node_modules/@weavecode/server/dist/repositories/push-subscriptions.js +2 -2
  356. package/node_modules/@weavecode/server/dist/repositories/session-watches.js +4 -4
  357. package/node_modules/@weavecode/server/dist/repositories/sessions.d.ts +12 -2
  358. package/node_modules/@weavecode/server/dist/repositories/sessions.js +2 -2
  359. package/node_modules/@weavecode/server/dist/repositories/side-questions.d.ts +7 -0
  360. package/node_modules/@weavecode/server/dist/repositories/side-questions.js +8 -5
  361. package/node_modules/@weavecode/server/dist/repositories/uploads.js +11 -11
  362. package/node_modules/@weavecode/server/dist/statusline/cache-sweeper.js +1 -1
  363. package/node_modules/@weavecode/server/dist/statusline/generator.js +1 -1
  364. package/node_modules/@weavecode/server/dist/statusline/manager.js +3 -3
  365. package/node_modules/@weavecode/server/dist/surfaces.d.ts +8 -1
  366. package/node_modules/@weavecode/server/dist/surfaces.js +1 -1
  367. package/node_modules/@weavecode/server/dist/version.d.ts +1 -11
  368. package/node_modules/@weavecode/server/dist/version.js +1 -1
  369. package/node_modules/@weavecode/server/dist/watch/cache.js +1 -1
  370. package/node_modules/@weavecode/server/dist/watch/classifier.js +1 -1
  371. package/node_modules/@weavecode/server/dist/watch/plugin-mods.js +1 -1
  372. package/node_modules/@weavecode/server/dist/watch/sync-scheduler.js +1 -1
  373. package/node_modules/@weavecode/server/dist/watch/watch-service.js +1 -1
  374. package/node_modules/@weavecode/server/package.json +4 -4
  375. package/node_modules/@weavecode/server/web/dist/assets/{abnfDiagram-WEYOIA3C-etRkSvQM.js → abnfDiagram-WEYOIA3C-DA-K085F.js} +1 -1
  376. package/node_modules/@weavecode/server/web/dist/assets/{arc-FxRZALAZ.js → arc-BI1jnmdZ.js} +1 -1
  377. package/node_modules/@weavecode/server/web/dist/assets/{architectureDiagram-ZHVYKT53-5OxZ-ffz.js → architectureDiagram-ZHVYKT53-DbdBgric.js} +1 -1
  378. package/node_modules/@weavecode/server/web/dist/assets/{blockDiagram-RJAE7QA3-C-CgMF0O.js → blockDiagram-RJAE7QA3-BPRBmzb-.js} +1 -1
  379. package/node_modules/@weavecode/server/web/dist/assets/{c4Diagram-XDPPPE54-B6TqN1Pw.js → c4Diagram-XDPPPE54-C4D5sRs1.js} +1 -1
  380. package/node_modules/@weavecode/server/web/dist/assets/channel-DcCJrvon.js +1 -0
  381. package/node_modules/@weavecode/server/web/dist/assets/{chunk-2E7WHVMD-Bdzr5RRj.js → chunk-2E7WHVMD-9ZSKiNU3.js} +1 -1
  382. package/node_modules/@weavecode/server/web/dist/assets/{chunk-2Q5K7J3B-gBZASjAC.js → chunk-2Q5K7J3B-i0AOjw_8.js} +1 -1
  383. package/node_modules/@weavecode/server/web/dist/assets/{chunk-4EMNKR2T-DSlUhKMw.js → chunk-4EMNKR2T-DTpLfX1H.js} +1 -1
  384. package/node_modules/@weavecode/server/web/dist/assets/{chunk-55XCU76K-BDQ6zpGR.js → chunk-55XCU76K-COQYRD4q.js} +1 -1
  385. package/node_modules/@weavecode/server/web/dist/assets/{chunk-5VM5RSS4-DPnewKbl.js → chunk-5VM5RSS4-VsftEbvo.js} +1 -1
  386. package/node_modules/@weavecode/server/web/dist/assets/{chunk-JWPE2WC7-DagmT8Cc.js → chunk-JWPE2WC7-DonektJN.js} +1 -1
  387. package/node_modules/@weavecode/server/web/dist/assets/{chunk-VQ5W62QI-Da_2PxfM.js → chunk-VQ5W62QI-CaKUwuul.js} +1 -1
  388. package/node_modules/@weavecode/server/web/dist/assets/{chunk-XXDRQBXY-Cdaysois.js → chunk-XXDRQBXY-DXH3D_MT.js} +1 -1
  389. package/node_modules/@weavecode/server/web/dist/assets/{chunk-ZCHMQSOR-CvgYfbjU.js → chunk-ZCHMQSOR-COwyAuGn.js} +2 -2
  390. package/node_modules/@weavecode/server/web/dist/assets/{classDiagram-v2-4MYWR3UA-ahplYD2h.js → classDiagram-v2-4MYWR3UA-DEvMZ6mX.js} +1 -1
  391. package/node_modules/@weavecode/server/web/dist/assets/{cose-bilkent-JH36ORCC-DFyUfgKj.js → cose-bilkent-JH36ORCC-6JBJHfH6.js} +1 -1
  392. package/node_modules/@weavecode/server/web/dist/assets/{cynefin-EF2NZ3EQ-mr2qRwod.js → cynefin-EF2NZ3EQ-C4GM4sjT.js} +1 -1
  393. package/node_modules/@weavecode/server/web/dist/assets/{cynefinDiagram-WF24UDRP-BC26VqNp.js → cynefinDiagram-WF24UDRP-Cqgi0MBP.js} +1 -1
  394. package/node_modules/@weavecode/server/web/dist/assets/{dagre-NK4GIZVX-DoKn_P1x.js → dagre-NK4GIZVX-CljrnkCY.js} +1 -1
  395. package/node_modules/@weavecode/server/web/dist/assets/{diagram-CBK3MWTC-C9WfEmt3.js → diagram-CBK3MWTC-C3PyOj5J.js} +1 -1
  396. package/node_modules/@weavecode/server/web/dist/assets/{diagram-I5XIIV2D-D4Ibieda.js → diagram-I5XIIV2D-I5brQlaZ.js} +1 -1
  397. package/node_modules/@weavecode/server/web/dist/assets/{diagram-ODIL2UCW-wsLbYLi0.js → diagram-ODIL2UCW-BX9uFNbU.js} +1 -1
  398. package/node_modules/@weavecode/server/web/dist/assets/{diagram-PFBEJUXE-DBioMmDk.js → diagram-PFBEJUXE-y7D-VmqJ.js} +1 -1
  399. package/node_modules/@weavecode/server/web/dist/assets/{diagram-RJA3I4VV-Cl5gKsWm.js → diagram-RJA3I4VV-DLUL8W42.js} +1 -1
  400. package/node_modules/@weavecode/server/web/dist/assets/{diagram-TYUNFSNR-BSXOaZic.js → diagram-TYUNFSNR-DLCC3ILi.js} +1 -1
  401. package/node_modules/@weavecode/server/web/dist/assets/{ebnfDiagram-V4P3TTPT-CJIGOag6.js → ebnfDiagram-V4P3TTPT-D7vALia7.js} +1 -1
  402. package/node_modules/@weavecode/server/web/dist/assets/{elk-QONTBCTQ-D6nd2OVX.js → elk-QONTBCTQ-Ct2_hatz.js} +1 -1
  403. package/node_modules/@weavecode/server/web/dist/assets/{erDiagram-KYQIGQAA-gmXjWsuF.js → erDiagram-KYQIGQAA-DxLai58T.js} +1 -1
  404. package/node_modules/@weavecode/server/web/dist/assets/{flowDiagram-IUGLLWBU-DWAiZ43K.js → flowDiagram-IUGLLWBU-AWn2IHrF.js} +1 -1
  405. package/node_modules/@weavecode/server/web/dist/assets/{ganttDiagram-R7GPNTJY-De4v6Wtt.js → ganttDiagram-R7GPNTJY-DmRHd4Wz.js} +1 -1
  406. package/node_modules/@weavecode/server/web/dist/assets/{gitGraphDiagram-PDYL7XHY-CouLBWOB.js → gitGraphDiagram-PDYL7XHY-Ccj-t3zg.js} +1 -1
  407. package/node_modules/@weavecode/server/web/dist/assets/index-BSxzia7U.js +1031 -0
  408. package/node_modules/@weavecode/server/web/dist/assets/index-CEpJpR7P.css +11 -0
  409. package/node_modules/@weavecode/server/web/dist/assets/{infoDiagram-MVDRKAX5-CeMCdduD.js → infoDiagram-MVDRKAX5-BHquFlQa.js} +1 -1
  410. package/node_modules/@weavecode/server/web/dist/assets/{ishikawaDiagram-HPEHV2GE-DK6hETwg.js → ishikawaDiagram-HPEHV2GE-CVogEbdm.js} +1 -1
  411. package/node_modules/@weavecode/server/web/dist/assets/{journeyDiagram-BOSHW7O7-BcgwTlST.js → journeyDiagram-BOSHW7O7-DC9XG9oh.js} +1 -1
  412. package/node_modules/@weavecode/server/web/dist/assets/{kanban-definition-FNSA4HC5-CTVMJNz2.js → kanban-definition-FNSA4HC5-C_eu7DC_.js} +1 -1
  413. package/node_modules/@weavecode/server/web/dist/assets/{linear-CqQf5eWO.js → linear-keTbWHJ-.js} +1 -1
  414. package/node_modules/@weavecode/server/web/dist/assets/{mermaid.core-B6KZaljU.js → mermaid.core-4sbg0MnY.js} +4 -4
  415. package/node_modules/@weavecode/server/web/dist/assets/{mindmap-definition-6OY57UG3-cpKvrQTI.js → mindmap-definition-6OY57UG3-kMQS0S2l.js} +1 -1
  416. package/node_modules/@weavecode/server/web/dist/assets/{pegDiagram-ECIUJNBX-Bv2bNqMZ.js → pegDiagram-ECIUJNBX-DcUFoEwP.js} +1 -1
  417. package/node_modules/@weavecode/server/web/dist/assets/{pieDiagram-GNMPY74T-CXOnA429.js → pieDiagram-GNMPY74T-BQJ7WDCx.js} +1 -1
  418. package/node_modules/@weavecode/server/web/dist/assets/{quadrantDiagram-D57K4MC3-BFDUpWZb.js → quadrantDiagram-D57K4MC3-C7Oi1-sq.js} +1 -1
  419. package/node_modules/@weavecode/server/web/dist/assets/{railroadDiagram-Y72NRBL7-BHoDSO0D.js → railroadDiagram-Y72NRBL7-CEF2QbOF.js} +1 -1
  420. package/node_modules/@weavecode/server/web/dist/assets/{requirementDiagram-EQYSW5RA-B8JGji7q.js → requirementDiagram-EQYSW5RA-CTjjFS7X.js} +1 -1
  421. package/node_modules/@weavecode/server/web/dist/assets/{sankeyDiagram-SY24JHO5-BbE2-6ZM.js → sankeyDiagram-SY24JHO5-j0S5kubS.js} +1 -1
  422. package/node_modules/@weavecode/server/web/dist/assets/{sequenceDiagram-BLEHNHQU-DwK4X2MT.js → sequenceDiagram-BLEHNHQU-B76EsZp4.js} +1 -1
  423. package/node_modules/@weavecode/server/web/dist/assets/{sizeCapture-INFHLROL-CY10zRMe.js → sizeCapture-INFHLROL-r0DZuqAy.js} +1 -1
  424. package/node_modules/@weavecode/server/web/dist/assets/{stateDiagram-v2-A6IESKWZ-32t4Zx8b.js → stateDiagram-v2-A6IESKWZ-B4DR9LHz.js} +1 -1
  425. package/node_modules/@weavecode/server/web/dist/assets/{swimlanes-B3ENRKFQ-CZlYQ8_g.js → swimlanes-B3ENRKFQ-Dbcl85ro.js} +1 -1
  426. package/node_modules/@weavecode/server/web/dist/assets/swimlanesDiagram-AYQRV4AK-CZ_6SSBd.js +8 -0
  427. package/node_modules/@weavecode/server/web/dist/assets/{timeline-definition-JXYKGLGB-8VsB-Jwg.js → timeline-definition-JXYKGLGB-BlBXXRNf.js} +1 -1
  428. package/node_modules/@weavecode/server/web/dist/assets/{usecaseDiagram-WPOLBNNX-CKOTONay.js → usecaseDiagram-WPOLBNNX-Ck1M0dpc.js} +1 -1
  429. package/node_modules/@weavecode/server/web/dist/assets/{vennDiagram-Q3Y3IDCW-BzrNjxtm.js → vennDiagram-Q3Y3IDCW-N8B-ohWk.js} +1 -1
  430. package/node_modules/@weavecode/server/web/dist/assets/{wardleyDiagram-IVAIDKWA-CrSd-v8I.js → wardleyDiagram-IVAIDKWA-DX-AMXq_.js} +1 -1
  431. package/node_modules/@weavecode/server/web/dist/assets/{xychartDiagram-4URNHDU4-t9cV9_9b.js → xychartDiagram-4URNHDU4-4fgL48Yl.js} +1 -1
  432. package/node_modules/@weavecode/server/web/dist/index.html +5 -4
  433. package/node_modules/@weavecode/templates/package.json +2 -2
  434. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-cms/node_modules/@peculiar/asn1-x509-attr/package.json +3 -3
  435. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-cms/package.json +4 -4
  436. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-csr/package.json +3 -3
  437. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-ecc/package.json +3 -3
  438. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-pkcs9/node_modules/@peculiar/asn1-pfx/package.json +5 -5
  439. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-pkcs9/node_modules/@peculiar/asn1-pkcs8/package.json +3 -3
  440. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-pkcs9/node_modules/@peculiar/asn1-x509-attr/package.json +3 -3
  441. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-pkcs9/package.json +7 -7
  442. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-rsa/package.json +3 -3
  443. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-schema/package.json +1 -1
  444. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-x509/build/cjs/time.js +1 -1
  445. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-x509/build/es2015/time.js +1 -1
  446. package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/@peculiar/asn1-x509/package.json +2 -2
  447. package/package.json +6 -6
  448. package/node_modules/@weavecode/server/web/dist/assets/channel-Dv4QUMOJ.js +0 -1
  449. package/node_modules/@weavecode/server/web/dist/assets/index-BXhLerZ4.js +0 -1008
  450. package/node_modules/@weavecode/server/web/dist/assets/index-BYRxC-Zz.css +0 -11
  451. package/node_modules/@weavecode/server/web/dist/assets/swimlanesDiagram-AYQRV4AK-BlIxQLON.js +0 -8
@@ -1,6 +1,6 @@
1
1
  import { ClassNameSlug, CssClassName, CssVariableType, OnInvalidSlug, rawCssString } from "../../helper/css/common.js";
2
- import { PropsWithChildren } from "../types.js";
3
- import { FC } from "../base.js";
2
+ import { PropsWithChildren } from "../index.js";
3
+ import { FC } from "../index.js";
4
4
  //#region src/jsx/dom/css.d.ts
5
5
  interface CreateCssJsxDomObjectsType {
6
6
  (args: {
@@ -1,7 +1,8 @@
1
1
  import { HtmlEscapedString } from "../utils/html.js";
2
- import { PropsWithChildren } from "./types.js";
3
- import { Context } from "./context.js";
4
- import { FC, JSXNode } from "./base.js";
2
+ import { PropsWithChildren } from "./index.js";
3
+ import { Context } from "./index.js";
4
+ import { FC } from "./index.js";
5
+ import { JSXNode } from "./base.js";
5
6
  //#region src/jsx/streaming.d.ts
6
7
  /**
7
8
  * Used to specify nonce for scripts generated by `Suspense` and `ErrorBoundary`.
@@ -1,7 +1,8 @@
1
1
  import { Env, MiddlewareHandler } from "../../types.js";
2
2
  import { Context } from "../../context.js";
3
3
  //#region src/middleware/bearer-auth/index.d.ts
4
- type MessageFunction = (c: Context) => string | object | Promise<string | object>;
4
+ type MessageValue = string | object | Response;
5
+ type MessageFunction = (c: Context) => MessageValue | Promise<MessageValue>;
5
6
  type CustomizedErrorResponseOptions = {
6
7
  wwwAuthenticateHeader?: string | object | MessageFunction;
7
8
  message?: string | object | MessageFunction;
@@ -1,6 +1,6 @@
1
- import { MiddlewareHandler } from "../../types.js";
2
- import { Context } from "../../context.js";
3
- import { AddressType, GetConnInfo } from "../../helper/conninfo/types.js";
1
+ import { MiddlewareHandler } from "../../index.js";
2
+ import { Context } from "../../index.js";
3
+ import { AddressType, GetConnInfo } from "../../helper/conninfo/index.js";
4
4
  //#region src/middleware/ip-restriction/index.d.ts
5
5
  /**
6
6
  * Function to get IP Address
@@ -1,8 +1,8 @@
1
1
  import { Env, Input, MiddlewareHandler } from "../../types.js";
2
2
  import { Context, PropsForRenderer } from "../../context.js";
3
- import { PropsWithChildren } from "../../jsx/types.js";
4
- import { Context as Context$1 } from "../../jsx/context.js";
5
- import { FC } from "../../jsx/base.js";
3
+ import { PropsWithChildren } from "../../jsx/index.js";
4
+ import { Context as Context$1 } from "../../jsx/index.js";
5
+ import { FC } from "../../jsx/index.js";
6
6
  //#region src/middleware/jsx-renderer/index.d.ts
7
7
  export declare const RequestContext: Context$1<Context<any, any, {}> | null>;
8
8
  type RendererOptions = {
@@ -1,4 +1,4 @@
1
- import { AddressType } from "../helper/conninfo/types.js";
1
+ import { AddressType } from "../helper/conninfo/index.js";
2
2
  //#region src/utils/ipaddr.d.ts
3
3
  /**
4
4
  * Expand IPv6 Address
@@ -153,16 +153,21 @@ const _getQueryParam = (url, key, multiple) => {
153
153
  if (hashIndex !== -1) url = url.slice(0, hashIndex);
154
154
  let encoded;
155
155
  if (!multiple && key && key.indexOf("%") === -1 && key.indexOf("+") === -1) {
156
- let keyIndex = url.indexOf("?", 8);
156
+ const queryIndex = url.indexOf("?", 8);
157
+ let keyIndex = queryIndex;
157
158
  if (keyIndex === -1) return;
158
159
  if (!url.startsWith(key, keyIndex + 1)) keyIndex = url.indexOf(`&${key}`, keyIndex + 1);
159
160
  while (keyIndex !== -1) {
160
161
  const trailingKeyCode = url.charCodeAt(keyIndex + key.length + 1);
161
- if (trailingKeyCode === 61) {
162
- const valueIndex = keyIndex + key.length + 2;
163
- const endIndex = url.indexOf("&", valueIndex);
164
- return _decodeURI(url.slice(valueIndex, endIndex === -1 ? void 0 : endIndex));
165
- } else if (trailingKeyCode == 38 || isNaN(trailingKeyCode)) return "";
162
+ if (trailingKeyCode === 61 || trailingKeyCode === 38 || isNaN(trailingKeyCode)) {
163
+ if (keyIndex > queryIndex && /(?:^|&)[^=&]*[%+]/.test(url.slice(queryIndex + 1, keyIndex))) break;
164
+ if (trailingKeyCode === 61) {
165
+ const valueIndex = keyIndex + key.length + 2;
166
+ const endIndex = url.indexOf("&", valueIndex);
167
+ return _decodeURI(url.slice(valueIndex, endIndex === -1 ? void 0 : endIndex));
168
+ }
169
+ return "";
170
+ }
166
171
  keyIndex = url.indexOf(`&${key}`, keyIndex + 1);
167
172
  }
168
173
  encoded = /[%+]/.test(url);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hono",
3
- "version": "4.13.13",
3
+ "version": "4.13.14",
4
4
  "description": "Web framework built on Web Standards",
5
5
  "main": "dist/cjs/index.js",
6
6
  "type": "module",
@@ -1,4 +1,4 @@
1
- import{readFileSync as f}from"node:fs";import l from"node:path";import{fileURLToPath as g}from"node:url";import{CommandParser as h}from"./parser.js";import{initCommand as u}from"./commands/init.js";import{statusCommand as C}from"./commands/status.js";import{daemonCommand as $}from"./commands/daemon.js";import{dashboardCommand as b}from"./commands/dashboard.js";import{scanCommand as w}from"./commands/scan.js";import{chpassCommand as x}from"./commands/chpass.js";import{doctorCommand as E}from"./commands/doctor.js";import{uninstallCommand as S}from"./commands/uninstall.js";import{initCliLocale as j,t as r}from"./i18n/index.js";const v=l.dirname(g(import.meta.url));function d(){try{return JSON.parse(f(l.join(v,"..","package.json"),"utf-8")).version??"0.0.0"}catch{return"0.0.0"}}function P(a){if(a.description){console.log(` ${a.name.padEnd(12)}${r(a.description)}`);for(const n of a.subcommands??[]){const o=[n.name,...n.aliases??[]].join(", "),s=n.description?r(n.description):"";console.log(` ${o.padEnd(12)}${s}`)}}}function m(a){const n=d();console.log(`${r("help.tagline",{version:n})}
2
- `),console.log(`${r("help.usage")}
3
- `),console.log(r("help.commands"));for(const o of a.getAllCommands())P(o);console.log(`
4
- ${r("help.globalOptions")}`);for(const o of a.getGlobalOptions()){const s=o.short?`-${o.short}, --${o.name}`:` --${o.name}`;console.log(` ${s.padEnd(20)}${r(o.description)}`)}}function L(a){console.error(r("help.subcommands"));for(const n of a.subcommands??[]){const o=[n.name,...n.aliases??[]].join(", "),s=n.description?r(n.description):"";console.error(` ${o.padEnd(12)}${s}`)}}export class CLI{parser;constructor(){this.parser=new h,this.registerCommands()}registerCommands(){this.parser.registerCommand(u),this.parser.registerCommand(S),this.parser.registerCommand(C),this.parser.registerCommand($),this.parser.registerCommand(b),this.parser.registerCommand(w),this.parser.registerCommand(x),this.parser.registerCommand(E)}async run(n=process.argv.slice(2)){delete process.env.CLAUDE_CODE_CHILD_SESSION,await j();const o=this.parser.parse(n);if(o.flags.version){console.log(d());return}if(o.flags.help||o.command.length===0){m(this.parser);return}let s;for(const e of o.command)s=(s?s.subcommands?.find(c=>c.name===e||c.aliases?.includes(e)):this.parser.getCommand(e))??s;if(!s?.action){if(s?.subcommands?.length){const e=o.positional[0];console.error(e?r("cli.unknownSubcommand",{command:s.name,subcommand:e}):r("cli.missingSubcommand",{command:s.name})),L(s),process.exit(1)}console.error(r("cli.unknownCommand",{command:o.command.join(" ")})),m(this.parser),process.exit(1)}const i=s.maxPositionals??0;if(o.positional.length>i){const e=o.command.join(" ");console.error(r("cli.unexpectedPositional",{command:e,arg:o.positional[i]})),m(this.parser),process.exit(1)}const t=this.parser.validateFlags(o.flags,s);if(t.length>0){for(const e of t)console.error(r("cli.error",{error:e}));process.exit(1)}const p={commandPath:o.command,flags:o.flags,positional:o.positional,raw:o.raw};await s.action(p)}}
1
+ import{CommandParser as p}from"./parser.js";import{initCommand as f}from"./commands/init.js";import{statusCommand as g}from"./commands/status.js";import{daemonCommand as h}from"./commands/daemon.js";import{dashboardCommand as C}from"./commands/dashboard.js";import{scanCommand as u}from"./commands/scan.js";import{chpassCommand as b}from"./commands/chpass.js";import{doctorCommand as $}from"./commands/doctor.js";import{uninstallCommand as x}from"./commands/uninstall.js";import{initCliLocale as E,t as n}from"./i18n/index.js";import{WEAVE_VERSION as w}from"@weavecode/server";const l=()=>w;function S(e){if(e.description){console.log(` ${e.name.padEnd(12)}${n(e.description)}`);for(const r of e.subcommands??[]){const o=[r.name,...r.aliases??[]].join(", "),s=r.description?n(r.description):"";console.log(` ${o.padEnd(12)}${s}`)}}}function t(e){const r=l();console.log(`${n("help.tagline",{version:r})}
2
+ `),console.log(`${n("help.usage")}
3
+ `),console.log(n("help.commands"));for(const o of e.getAllCommands())S(o);console.log(`
4
+ ${n("help.globalOptions")}`);for(const o of e.getGlobalOptions()){const s=o.short?`-${o.short}, --${o.name}`:` --${o.name}`;console.log(` ${s.padEnd(20)}${n(o.description)}`)}}function v(e){console.error(n("help.subcommands"));for(const r of e.subcommands??[]){const o=[r.name,...r.aliases??[]].join(", "),s=r.description?n(r.description):"";console.error(` ${o.padEnd(12)}${s}`)}}export class CLI{parser;constructor(){this.parser=new p,this.registerCommands()}registerCommands(){this.parser.registerCommand(f),this.parser.registerCommand(x),this.parser.registerCommand(g),this.parser.registerCommand(h),this.parser.registerCommand(C),this.parser.registerCommand(u),this.parser.registerCommand(b),this.parser.registerCommand($)}async run(r=process.argv.slice(2)){delete process.env.CLAUDE_CODE_CHILD_SESSION,await E();const o=this.parser.parse(r);if(o.flags.version){console.log(l());return}if(o.flags.help||o.command.length===0){t(this.parser);return}let s;for(const a of o.command)s=(s?s.subcommands?.find(c=>c.name===a||c.aliases?.includes(a)):this.parser.getCommand(a))??s;if(!s?.action){if(s?.subcommands?.length){const a=o.positional[0];console.error(a?n("cli.unknownSubcommand",{command:s.name,subcommand:a}):n("cli.missingSubcommand",{command:s.name})),v(s),process.exit(1)}console.error(n("cli.unknownCommand",{command:o.command.join(" ")})),t(this.parser),process.exit(1)}const m=s.maxPositionals??0;if(o.positional.length>m){const a=o.command.join(" ");console.error(n("cli.unexpectedPositional",{command:a,arg:o.positional[m]})),t(this.parser),process.exit(1)}const i=this.parser.validateFlags(o.flags,s);if(i.length>0){for(const a of i)console.error(n("cli.error",{error:a}));process.exit(1)}const d={commandPath:o.command,flags:o.flags,positional:o.positional,raw:o.raw};await s.action(d)}}
@@ -1 +1 @@
1
- import{DAEMON_HOST as c}from"@weavecode/server";import{logger as s}from"@weavecode/core";import{t as r}from"../i18n/index.js";import{ensureDaemonRunning as i}from"./daemon.js";import{localTokenHeader as p}from"./daemon-auth.js";const m=6;async function h(e){const t=e.positional[0];if(typeof t!="string"||t.length<m){s.warn(r("out.chpass.usage")),process.exitCode=1;return}const n=await i();try{const o=await fetch(`http://${c}:${n.port}/auth/password`,{method:"PUT",headers:{"content-type":"application/json",...p()},body:JSON.stringify({next:t})}),a=await o.json().catch(()=>({}));if(!o.ok)throw new Error(typeof a.error=="string"?a.error:`HTTP ${o.status}`);s.success(r("out.chpass.ok"))}catch(o){s.warn(r("out.chpass.fail",{error:o instanceof Error?o.message:String(o)})),process.exitCode=1}}export const chpassCommand={name:"chpass",description:"cmd.chpass.desc",action:h,maxPositionals:1};
1
+ import{DAEMON_HOST as c}from"@weavecode/server";import{logger as s}from"@weavecode/core";import{t as r}from"../i18n/index.js";import{ensureDaemonRunning as i}from"./daemon.js";import{localTokenHeader as p}from"./daemon-auth.js";const m=6;async function h(n){const t=n.positional[0];if(typeof t!="string"||t.length<m){s.warn(r("out.chpass.usage")),process.exitCode=1;return}const a=await i();try{const o=await fetch(`http://${c}:${a.port}/auth/password`,{method:"PUT",headers:{"content-type":"application/json",...p()},body:JSON.stringify({next:t})}),e=await o.json().catch(()=>({}));if(!o.ok)throw new Error(typeof e.error=="string"?e.error:`HTTP ${o.status}`);s.success(r("out.chpass.ok"))}catch(o){s.warn(r("out.chpass.fail",{error:o instanceof Error?o.message:String(o)})),process.exitCode=1}}export const chpassCommand={name:"chpass",description:"cmd.chpass.desc",action:h,maxPositionals:1};
@@ -1 +1 @@
1
- import{existsSync as a,readFileSync as r,rmSync as e}from"node:fs";import{getAuthPath as n,getInitialPasswordPath as s}from"@weavecode/server";import{logger as i}from"@weavecode/core";import{t as c}from"../i18n/index.js";export function localTokenHeader(){try{const t=JSON.parse(r(n(),"utf8"));return typeof t.localToken=="string"&&t.localToken?{"x-weave-local":t.localToken}:{}}catch{return{}}}export function announceInitialPassword(){const t=s();if(!a(t))return;let o;try{o=r(t,"utf8").trim()}catch{return}e(t,{force:!0}),o&&i.info(c("out.dash.initialPassword",{password:o}))}
1
+ import{existsSync as e,readFileSync as o,rmSync as n}from"node:fs";import{getAuthPath as a,getInitialPasswordPath as i}from"@weavecode/server";import{logger as c}from"@weavecode/core";import{t as l}from"../i18n/index.js";export function localTokenHeader(){try{const t=JSON.parse(o(a(),"utf8"));return typeof t.localToken=="string"&&t.localToken?{"x-weave-local":t.localToken}:{}}catch{return{}}}export function announceInitialPassword(){const t=i();if(!e(t))return;let r;try{r=o(t,"utf8").trim()}catch{return}n(t,{force:!0}),r&&c.info(l("out.dash.initialPassword",{password:r}))}
@@ -1,2 +1,2 @@
1
- import{spawn as u}from"node:child_process";import{DEFAULT_PORT as i,DAEMON_HOST as d,isPortFree as h,findFreePort as g,readDaemonState as m,writeDaemonState as y,clearDaemonState as D,resolveDaemonEntry as $,accessUrls as P}from"@weavecode/server";import{logger as a}from"@weavecode/core";import{t as r}from"../i18n/index.js";export async function probeDaemon(t){try{const e=await fetch(`http://${d}:${t}/health`);return e.ok?(await e.json()).service==="weave-daemon":!1}catch{return!1}}export async function waitForDaemon(t,e=1e4){const o=Date.now()+e;for(;!await probeDaemon(t);){if(Date.now()>=o)return!1;await new Promise(n=>setTimeout(n,100))}return!0}async function x(t,e){if(process.platform!=="win32")return!1;const o=s=>/\s/.test(s)?`"${s}"`:s,n=s=>`'${s.replace(/'/g,"''")}'`,c=`$ErrorActionPreference='Stop';$r=Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine=${n([t,...e].map(o).join(" "))};CurrentDirectory=${n(process.cwd())}};if($r.ReturnValue -ne 0){exit 1}`,w=Buffer.from(c,"utf16le").toString("base64");return new Promise(s=>{const p=u("powershell.exe",["-NoProfile","-NonInteractive","-EncodedCommand",w],{windowsHide:!0,stdio:"ignore"});p.on("error",()=>s(!1)),p.on("exit",l=>s(l===0))})}export async function ensureDaemonRunning(){const t=m();if(t&&await probeDaemon(t.port))return{port:t.port,started:!1};if(await probeDaemon(i))return{port:i,started:!1};const e=await h(i)?i:await g(i+1);y({pid:0,port:e,startedAt:new Date().toISOString()});const o=$(),n=o.isTs?["--import","tsx",o.path]:[o.path];return await x(process.execPath,n)||u(process.execPath,n,{detached:!0,stdio:"ignore"}).unref(),await waitForDaemon(e),{port:e,started:!0}}async function S(){const t=await ensureDaemonRunning();if(!t.started){a.info(r("out.daemon.alreadyRunning",{port:t.port}));return}a.success(r("out.daemon.started",{host:d,port:t.port}))}async function f(t){return await(await fetch(`http://${d}:${t}/health`)).json()}async function C(){const t=m(),e=t?.port??i;let o=t?.pid;if(await probeDaemon(e))o=(await f(e)).pid;else if(!t){a.info(r("out.daemon.statusNotRunning"));return}let n;if(o)try{process.kill(o),n=o}catch{}D(),n!==void 0?a.success(r("out.daemon.stopped",{pid:n})):a.warn(r("out.daemon.statusStale",{pid:o??0,port:e}))}async function N(){const t=m(),e=t?.port??i;if(await probeDaemon(e)){const o=await f(e);a.info(r("out.daemon.statusRunning",{pid:o.pid,port:o.port,uptime:Math.round(o.uptimeMs/1e3)}));const n=P(e,t?.tlsPort??0);n.length>0&&(a.dim(r("out.daemon.urlsTitle")),a.dim(n.map(c=>` ${c.url}`).join(`
2
- `)))}else t?a.warn(r("out.daemon.statusStale",{pid:t.pid,port:t.port})):a.info(r("out.daemon.statusNotRunning"))}export const daemonCommand={name:"daemon",description:"cmd.daemon.desc",subcommands:[{name:"start",description:"cmd.daemon.start.desc",action:S},{name:"stop",description:"cmd.daemon.stop.desc",action:C},{name:"status",description:"cmd.daemon.status.desc",action:N}]};
1
+ import{spawn as m}from"node:child_process";import{DEFAULT_PORT as i,DAEMON_HOST as d,isPortFree as h,findFreePort as g,readDaemonState as u,writeDaemonState as y,clearDaemonState as D,resolveDaemonEntry as P,accessUrls as $}from"@weavecode/server";import{logger as a}from"@weavecode/core";import{t as r}from"../i18n/index.js";export async function probeDaemon(t){try{const e=await fetch(`http://${d}:${t}/health`);return e.ok?(await e.json()).service==="weave-daemon":!1}catch{return!1}}export async function waitForDaemon(t,e=1e4){const o=Date.now()+e;for(;!await probeDaemon(t);){if(Date.now()>=o)return!1;await new Promise(n=>setTimeout(n,100))}return!0}async function x(t,e){if(process.platform!=="win32")return!1;const o=s=>/\s/.test(s)?`"${s}"`:s,n=s=>`'${s.replace(/'/g,"''")}'`,c=`$ErrorActionPreference='Stop';$r=Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine=${n([t,...e].map(o).join(" "))};CurrentDirectory=${n(process.cwd())}};if($r.ReturnValue -ne 0){exit 1}`,l=Buffer.from(c,"utf16le").toString("base64");return new Promise(s=>{const p=m("powershell.exe",["-NoProfile","-NonInteractive","-EncodedCommand",l],{windowsHide:!0,stdio:"ignore"});p.on("error",()=>s(!1)),p.on("exit",w=>s(w===0))})}export async function ensureDaemonRunning(){const t=u();if(t&&await probeDaemon(t.port))return{port:t.port,started:!1};if(await probeDaemon(i))return{port:i,started:!1};const e=await h(i)?i:await g(i+1);y({pid:0,port:e,startedAt:new Date().toISOString()});const o=P(),n=o.isTs?["--import","tsx",o.path]:[o.path];return await x(process.execPath,n)||m(process.execPath,n,{detached:!0,stdio:"ignore"}).unref(),await waitForDaemon(e),{port:e,started:!0}}async function S(){const t=await ensureDaemonRunning();if(!t.started){a.info(r("out.daemon.alreadyRunning",{port:t.port}));return}a.success(r("out.daemon.started",{host:d,port:t.port}))}async function f(t){return await(await fetch(`http://${d}:${t}/health`)).json()}async function A(){const t=u(),e=t?.port??i;let o=t?.pid;if(await probeDaemon(e))o=(await f(e)).pid;else if(!t){a.info(r("out.daemon.statusNotRunning"));return}let n;if(o)try{process.kill(o),n=o}catch{}D(),n!==void 0?a.success(r("out.daemon.stopped",{pid:n})):a.warn(r("out.daemon.statusStale",{pid:o??0,port:e}))}async function C(){const t=u(),e=t?.port??i;if(await probeDaemon(e)){const o=await f(e);a.info(r("out.daemon.statusRunning",{pid:o.pid,port:o.port,uptime:Math.round(o.uptimeMs/1e3)}));const n=$(e,t?.tlsPort??0);n.length>0&&(a.dim(r("out.daemon.urlsTitle")),a.dim(n.map(c=>` ${c.url}`).join(`
2
+ `)))}else t?a.warn(r("out.daemon.statusStale",{pid:t.pid,port:t.port})):a.info(r("out.daemon.statusNotRunning"))}export const daemonCommand={name:"daemon",description:"cmd.daemon.desc",subcommands:[{name:"start",description:"cmd.daemon.start.desc",action:S},{name:"stop",description:"cmd.daemon.stop.desc",action:A},{name:"status",description:"cmd.daemon.status.desc",action:C}]};
@@ -1,2 +1,2 @@
1
- import{spawn as p}from"node:child_process";import{accessUrls as m,DAEMON_HOST as d,readDaemonState as u,resolveStaticDir as c}from"@weavecode/server";import{logger as o}from"@weavecode/core";import{t as a}from"../i18n/index.js";import{ensureDaemonRunning as l}from"./daemon.js";import{announceInitialPassword as f}from"./daemon-auth.js";export function openBrowser(r){const[s,n]=process.platform==="win32"?["cmd",["/c","start","",r]]:process.platform==="darwin"?["open",[r]]:["xdg-open",[r]],t=p(s,n,{detached:!0,stdio:"ignore"});t.on("error",()=>{o.dim(a("out.dash.browserFailed"))}),t.unref()}export function dashboardUrl(r){return`http://${d}:${r}/`}async function h(r){const s=!!r.flags.noOpen,n=await l();n.started?(o.success(a("out.daemon.started",{host:d,port:n.port})),o.dim(a("out.dash.stopHint"))):o.info(a("out.daemon.alreadyRunning",{port:n.port})),c()||(o.warn(a("out.dash.noBundle")),o.dim(a("out.dash.buildHint")));const t=dashboardUrl(n.port);o.info(a("out.dash.url",{url:t}));const e=m(n.port,u()?.tlsPort??0);if(e.length>0&&(o.dim(a("out.daemon.urlsTitle")),o.dim(e.map(i=>` ${i.url}`).join(`
2
- `))),f(),s){o.dim(a("out.dash.noOpen"));return}openBrowser(t)}export const dashboardCommand={name:"dashboard",aliases:["dash"],description:"cmd.dashboard.desc",options:[{name:"no-open",description:"flag.dashboard.noOpen",type:"boolean",default:!1}],action:h};
1
+ import{spawn as p}from"node:child_process";import{accessUrls as m,DAEMON_HOST as d,readDaemonState as c,resolveStaticDir as l}from"@weavecode/server";import{logger as o}from"@weavecode/core";import{t as n}from"../i18n/index.js";import{ensureDaemonRunning as u}from"./daemon.js";import{announceInitialPassword as f}from"./daemon-auth.js";export function openBrowser(t){const[e,r]=process.platform==="win32"?["cmd",["/c","start","",t]]:process.platform==="darwin"?["open",[t]]:["xdg-open",[t]],a=p(e,r,{detached:!0,stdio:"ignore"});a.on("error",()=>{o.dim(n("out.dash.browserFailed"))}),a.unref()}export function dashboardUrl(t){return`http://${d}:${t}/`}async function h(t){const e=!!t.flags.noOpen,r=await u();r.started?(o.success(n("out.daemon.started",{host:d,port:r.port})),o.dim(n("out.dash.stopHint"))):o.info(n("out.daemon.alreadyRunning",{port:r.port})),l()||(o.warn(n("out.dash.noBundle")),o.dim(n("out.dash.buildHint")));const a=dashboardUrl(r.port);o.info(n("out.dash.url",{url:a}));const s=m(r.port,c()?.tlsPort??0);if(s.length>0&&(o.dim(n("out.daemon.urlsTitle")),o.dim(s.map(i=>` ${i.url}`).join(`
2
+ `))),f(),e){o.dim(n("out.dash.noOpen"));return}openBrowser(a)}export const dashboardCommand={name:"dashboard",aliases:["dash"],description:"cmd.dashboard.desc",options:[{name:"no-open",description:"flag.dashboard.noOpen",type:"boolean",default:!1}],action:h};
@@ -1 +1 @@
1
- import{existsSync as m,readFileSync as w}from"node:fs";import u from"node:path";import{DAEMON_HOST as v,DEFAULT_PORT as S,getDbPath as x,ensureDataLayout as y,openDatabase as N,ProjectRepository as b,readDaemonState as T}from"@weavecode/server";import{formatTable as f,logger as r}from"@weavecode/core";import{checkHarness as P}from"../init/harness-checks.js";import{probeDaemon as q}from"./daemon.js";import{localTokenHeader as D}from"./daemon-auth.js";import{t as o}from"../i18n/index.js";const E={"no-mechanism":"out.doctor.reason.noMechanism","no-credentials":"out.doctor.reason.noCredentials","auth-token-required":"out.doctor.reason.authTokenRequired","no-peer-name":"out.doctor.reason.noPeerName","no-backend":"out.doctor.reason.noBackend","no-pane-env":"out.doctor.reason.noPaneEnv"},j={"no-hook-script":"out.doctor.hint.noHookScript","hook-script-not-weave":"out.doctor.hint.hookScriptNotWeave","hook-script-stale":"out.doctor.hint.hookScriptStale","no-events":"out.doctor.hint.noEvents","no-inbox-credentials":"out.doctor.hint.noInboxCredentials","inbox-token-required":"out.doctor.hint.inboxTokenRequired","no-peer-name":"out.doctor.hint.noPeerName","terminal-no-backend":"out.doctor.hint.terminalNoBackend","terminal-no-pane-env":"out.doctor.hint.terminalNoPaneEnv","not-running":"out.doctor.hint.notRunning",queued:"out.doctor.hint.queued",stalled:"out.doctor.hint.stalled"};function p(n,e){if(!e)return"";const i=n[e];return i?o(i):e}function C(n){if(!n||!n.present)return o("out.doctor.diagScriptNone");const e=n.source==="user"?o("out.doctor.diagSourceUser"):n.source==="project"?o("out.doctor.diagSourceProject"):o("out.doctor.diagSourceNone");if(!n.weaveOwned)return o("out.doctor.diagScriptNotOwned",{source:e});const i=o("out.doctor.diagYes");return o("out.doctor.diagScriptValue",{harness:n.harness,source:e,version:n.generatedVersion??o("out.doctor.diagMissing"),inbox:n.reportsInbox?i:o("out.doctor.diagNo"),pane:n.reportsPaneEnv?i:o("out.doctor.diagNo")})}function l(n){const e=p(E,n.reason);return n.status==="ready"?o("out.doctor.diagReady"):n.status==="unknown"?o("out.doctor.diagUnknown",{reason:e}):o("out.doctor.diagUnavailable",{reason:e})}async function H(n,e){let i;try{const t=await fetch(`http://${v}:${n}/messaging/diagnostics?project=${e}`,{headers:D()});if(!t.ok)throw new Error(`HTTP ${t.status}`);try{i=await t.json()}catch{throw new Error(`HTTP ${t.status}`)}}catch(t){r.warn(o("out.doctor.diagFailed",{error:t instanceof Error?t.message:String(t)}));return}const{daemon:d}=i,s=i.projects.find(t=>t.id===e)?.captures[0]??null;if(console.log(),r.info(o("out.doctor.diagHeader",{id:e})),console.log(f([[o("out.doctor.diagDaemon"),o("out.doctor.diagDaemonValue",{version:d.version,platform:d.platform,preset:d.terminalPreset,channel:o(d.terminalTextChannel?"out.doctor.diagChannelOn":"out.doctor.diagChannelOff")})],[o("out.doctor.diagScript"),C(s)]])),i.sessions.length===0){r.dim(o("out.doctor.diagNoSessions"));return}const a=t=>t===null?o("out.doctor.diagUnknownAlive"):o(t?"out.doctor.diagYes":"out.doctor.diagNo");for(const t of i.sessions)console.log(),console.log(" "+o("out.doctor.diagSession",{id:t.sessionId.slice(0,8),title:t.title??o("out.doctor.diagUntitled"),alive:a(t.alive),events:t.eventCount,last:t.lastEventType??o("out.doctor.diagMissing")})),console.log(" "+o("out.doctor.diagChannels",{inbox:l(t.channels.inbox),queue:l(t.channels.queue),relay:l(t.channels.relay),terminal:l(t.channels.terminal)})),console.log(" "+o("out.doctor.diagQueue",{pending:t.queue.pending,stalled:o(t.queue.stalled?"out.doctor.diagYes":"out.doctor.diagNo")})),t.hints.length>0&&r.dim(" "+o("out.doctor.diagHints",{hints:t.hints.map(c=>p(j,c)).join("\uFF1B")}))}const k=n=>{const e=u.resolve(n);return process.platform==="win32"?e.toLowerCase():e};function O(n){if(!m(x()))return null;const e=N();try{const i=new b(e),d=k(n),s=[...i.list(),...i.listArchived()].find(a=>k(a.path)===d);return s?{id:s.id,source:s.source,archived:s.archivedAt!==null,token:s.token}:null}finally{e.close()}}function R(n){const e=u.join(n,".weave","token");return m(e)?w(e,"utf-8").trim():null}export const doctorCommand={name:"doctor",description:"cmd.doctor.desc",options:[{name:"dir",short:"d",description:"flag.dir",type:"string",default:process.cwd()}],async action(n){y();const e=u.resolve(String(n.flags.dir??process.cwd())),i=m(u.join(e,".weave","config.yaml")),d=T()?.port??S,s=await q(d),a=O(e),t=R(e);let c;t===null?c=o("out.doctor.tokenMissing"):a?t===a.token?c=o("out.doctor.tokenOk"):c=o("out.doctor.tokenStale"):c=o("out.doctor.tokenUnregistered"),r.info(o("out.doctor.header")),console.log(f([[o("out.doctor.dir"),e],[o("out.doctor.initialized"),i?o("out.doctor.yes"):o("out.doctor.no")],[o("out.doctor.daemon"),s?o("out.doctor.daemonRunning",{port:d}):o("out.doctor.daemonStopped")],[o("out.doctor.registered"),a?o(a.archived?"out.doctor.registeredArchived":"out.doctor.registeredYes",{id:a.id,source:a.source}):o("out.doctor.registeredNo")],[o("out.doctor.token"),c]])),console.log();const g=await P(e);if(g.length>0){r.warn(o("out.status.issuesFound",{count:g.length}));for(const h of g)r.warn(o("out.status.issue",{message:h.message})),r.dim(o("out.status.fix",{fix:h.fix}));console.log()}if(s&&a&&!a.archived&&await H(d,a.id),!a){r.warn(o("out.doctor.warnNotRegistered")),r.dim(o("out.doctor.fixInit")),i||r.dim(o("out.doctor.fixScan",{dir:e}));return}if(a.archived){r.warn(o("out.doctor.warnArchived"));return}if(t===null){r.warn(o("out.doctor.warnTokenMissing")),r.dim(o("out.doctor.fixInit"));return}if(t!==a.token){r.warn(o("out.doctor.warnTokenStale")),r.dim(o("out.doctor.fixInit"));return}r.success(o("out.doctor.ok")),s||r.dim(o("out.doctor.fixDaemon"))}};
1
+ import{existsSync as f,readFileSync as v}from"node:fs";import l from"node:path";import{DAEMON_HOST as S,DEFAULT_PORT as x,getDbPath as y,ensureDataLayout as T,openDatabase as N,ProjectRepository as b,readDaemonState as P}from"@weavecode/server";import{formatTable as p,logger as r}from"@weavecode/core";import{checkHarness as D}from"../init/harness-checks.js";import{probeDaemon as E}from"./daemon.js";import{localTokenHeader as q}from"./daemon-auth.js";import{t as o}from"../i18n/index.js";const R={"no-mechanism":"out.doctor.reason.noMechanism","no-credentials":"out.doctor.reason.noCredentials","auth-token-required":"out.doctor.reason.authTokenRequired","no-peer-name":"out.doctor.reason.noPeerName","no-backend":"out.doctor.reason.noBackend","no-pane-env":"out.doctor.reason.noPaneEnv"},C={"no-hook-script":"out.doctor.hint.noHookScript","hook-script-not-weave":"out.doctor.hint.hookScriptNotWeave","hook-script-stale":"out.doctor.hint.hookScriptStale","no-events":"out.doctor.hint.noEvents","no-inbox-credentials":"out.doctor.hint.noInboxCredentials","inbox-token-required":"out.doctor.hint.inboxTokenRequired","no-peer-name":"out.doctor.hint.noPeerName","terminal-no-backend":"out.doctor.hint.terminalNoBackend","terminal-no-pane-env":"out.doctor.hint.terminalNoPaneEnv","not-running":"out.doctor.hint.notRunning",queued:"out.doctor.hint.queued",stalled:"out.doctor.hint.stalled"};function k(n,e){if(!e)return"";const i=n[e];return i?o(i):e}function H(n){if(!n||!n.present)return o("out.doctor.diagScriptNone");const e=n.source==="user"?o("out.doctor.diagSourceUser"):n.source==="project"?o("out.doctor.diagSourceProject"):o("out.doctor.diagSourceNone");if(!n.weaveOwned)return o("out.doctor.diagScriptNotOwned",{source:e});const i=o("out.doctor.diagYes");return o("out.doctor.diagScriptValue",{harness:n.harness,source:e,version:n.generatedVersion??o("out.doctor.diagMissing"),inbox:n.reportsInbox?i:o("out.doctor.diagNo"),pane:n.reportsPaneEnv?i:o("out.doctor.diagNo")})}function g(n){const e=k(R,n.reason);return n.status==="ready"?o("out.doctor.diagReady"):n.status==="unknown"?o("out.doctor.diagUnknown",{reason:e}):o("out.doctor.diagUnavailable",{reason:e})}async function O(n,e){let i;try{const t=await fetch(`http://${S}:${n}/messaging/diagnostics?project=${e}`,{headers:q()});if(!t.ok)throw new Error(`HTTP ${t.status}`);try{i=await t.json()}catch{throw new Error(`HTTP ${t.status}`)}}catch(t){r.warn(o("out.doctor.diagFailed",{error:t instanceof Error?t.message:String(t)}));return}const{daemon:d}=i,s=i.projects.find(t=>t.id===e)?.captures[0]??null;if(console.log(),r.info(o("out.doctor.diagHeader",{id:e})),console.log(p([[o("out.doctor.diagDaemon"),o("out.doctor.diagDaemonValue",{version:d.version,platform:d.platform,preset:d.terminalPreset,channel:o(d.terminalTextChannel?"out.doctor.diagChannelOn":"out.doctor.diagChannelOff")})],[o("out.doctor.diagScript"),H(s)]])),i.sessions.length===0){r.dim(o("out.doctor.diagNoSessions"));return}const a=t=>t===null?o("out.doctor.diagUnknownAlive"):o(t?"out.doctor.diagYes":"out.doctor.diagNo");for(const t of i.sessions)console.log(),console.log(" "+o("out.doctor.diagSession",{id:t.sessionId.slice(0,8),title:t.title??o("out.doctor.diagUntitled"),alive:a(t.alive),events:t.eventCount,last:t.lastEventType??o("out.doctor.diagMissing")})),console.log(" "+o("out.doctor.diagChannels",{inbox:g(t.channels.inbox),queue:g(t.channels.queue),relay:g(t.channels.relay),terminal:g(t.channels.terminal)})),console.log(" "+o("out.doctor.diagQueue",{pending:t.queue.pending,stalled:o(t.queue.stalled?"out.doctor.diagYes":"out.doctor.diagNo")})),t.hints.length>0&&r.dim(" "+o("out.doctor.diagHints",{hints:t.hints.map(c=>k(C,c)).join("\uFF1B")}))}const w=n=>{const e=l.resolve(n);return process.platform==="win32"?e.toLowerCase():e};function j(n){if(!f(y()))return null;const e=N();try{const i=new b(e),d=w(n),s=[...i.list(),...i.listArchived()].find(a=>w(a.path)===d);return s?{id:s.id,source:s.source,archived:s.archivedAt!==null,token:s.token}:null}finally{e.close()}}function A(n){const e=l.join(n,".weave","token");return f(e)?v(e,"utf-8").trim():null}export const doctorCommand={name:"doctor",description:"cmd.doctor.desc",options:[{name:"dir",short:"d",description:"flag.dir",type:"string",default:process.cwd()}],async action(n){T();const e=l.resolve(String(n.flags.dir??process.cwd())),i=f(l.join(e,".weave","config.yaml")),s=P()?.port??x,a=await E(s),t=j(e),c=A(e);let u;c===null?u=o("out.doctor.tokenMissing"):t?c===t.token?u=o("out.doctor.tokenOk"):u=o("out.doctor.tokenStale"):u=o("out.doctor.tokenUnregistered"),r.info(o("out.doctor.header")),console.log(p([[o("out.doctor.dir"),e],[o("out.doctor.initialized"),i?o("out.doctor.yes"):o("out.doctor.no")],[o("out.doctor.daemon"),a?o("out.doctor.daemonRunning",{port:s}):o("out.doctor.daemonStopped")],[o("out.doctor.registered"),t?o(t.archived?"out.doctor.registeredArchived":"out.doctor.registeredYes",{id:t.id,source:t.source}):o("out.doctor.registeredNo")],[o("out.doctor.token"),u]])),console.log();const m=await D(e);if(m.length>0){r.warn(o("out.status.issuesFound",{count:m.length}));for(const h of m)r.warn(o("out.status.issue",{message:h.message})),r.dim(o("out.status.fix",{fix:h.fix}));console.log()}if(a&&t&&!t.archived&&await O(s,t.id),!t){r.warn(o("out.doctor.warnNotRegistered")),r.dim(o("out.doctor.fixInit")),i||r.dim(o("out.doctor.fixScan",{dir:e}));return}if(t.archived){r.warn(o("out.doctor.warnArchived"));return}if(c===null){r.warn(o("out.doctor.warnTokenMissing")),r.dim(o("out.doctor.fixInit"));return}if(c!==t.token){r.warn(o("out.doctor.warnTokenStale")),r.dim(o("out.doctor.fixInit"));return}r.success(o("out.doctor.ok")),a||r.dim(o("out.doctor.fixDaemon"))}};
@@ -1 +1 @@
1
- import{PresetSchema as p,HARNESS_KEYS as m,logger as n,formatTable as g,resolveComponents as f}from"@weavecode/core";import{executeInit as u}from"../init/executor.js";import{registerProject as h}from"@weavecode/server";import{t as e}from"../i18n/index.js";const d=["preToolUse","postToolUse","userPromptSubmit","sessionStart","stop","stopFailure","subagentStop","subagentStart","notification","postToolUseFailure","permissionRequest","permissionDenied","preCompact","sessionEnd","preModelSwitch"];function S(r){const s=r.trim();if(!s)return{};const c=Object.fromEntries(d.map(i=>[i,!1]));if(s==="none")return c;const a=new Set(s.split(",").map(i=>i.trim()).filter(Boolean)),o=[...a].filter(i=>!d.includes(i));return o.length>0&&n.warn(e("init.hooksUnknownKeys",{keys:o.join(", ")})),Object.fromEntries(d.map(i=>[i,a.has(i)]))}export function parseHarnessFlag(r){const s=r.trim();if(!s)return;const c=s.split(",").map(i=>i.trim().toLowerCase()).filter(Boolean),a=[...new Set(c.filter(i=>m.includes(i)))],o=c.filter(i=>!m.includes(i));return o.length>0&&n.warn(e("init.harnessUnknownKeys",{keys:o.join(", ")})),a.length>0?a:["claude"]}export const initCommand={name:"init",description:"cmd.init.desc",options:[{name:"preset",short:"p",description:"flag.init.preset",type:"string",default:"default",choices:["minimal","default","full"]},{name:"force",short:"f",description:"flag.init.force",type:"boolean",default:!1},{name:"no-interactive",description:"flag.init.noInteractive",type:"boolean",default:!1},{name:"dir",short:"d",description:"flag.dir",type:"string",default:process.cwd()},{name:"hooks",description:"flag.init.hooks",type:"string",default:""},{name:"harness",description:"flag.init.harness",type:"string",default:""}],async action(r){const s=p.parse(r.flags.preset??"default"),c=!!r.flags.force,a=r.flags.noInteractive!==!0&&r.flags.interactive!==!1,o=String(r.flags.dir??process.cwd());n.info(e("init.banner")),n.dim(e("init.presetTarget",{preset:s,target:o}));const i=f(s);let t;try{t=await u({targetDir:o,force:c,interactive:a,preset:s,harnesses:parseHarnessFlag(String(r.flags.harness??"")),components:i,hooks:S(String(r.flags.hooks??"")),skills:{},commands:{},agents:{},mcp:{}})}catch(l){n.error(e("init.failed",{error:l instanceof Error?l.message:String(l)})),process.exit(1)}if(t.success){h(o,"init"),n.success(e("init.complete"));const l=[[e("init.table.directories"),String(t.created.directories.length)],[e("init.table.filesCreated"),String(t.created.files.length)],[e("init.table.filesMerged"),String(t.merged.length)],[e("init.table.weaveUpdated"),String(t.updated.length)],[e("init.table.skills"),String(t.summary.skillsCount)],[e("init.table.commands"),String(t.summary.commandsCount)],[e("init.table.agents"),String(t.summary.agentsCount)]];console.log(g(l)),console.log(),t.merged.length>0&&n.dim(e("init.merged",{count:t.merged.length})),t.updated.length>0&&n.dim(e("init.refreshed",{count:t.updated.length})),t.removed.length>0&&n.dim(e("init.removed",{count:t.removed.length})),t.skipped.length>0&&n.dim(e("init.skipped",{count:t.skipped.length}))}else{n.error(e("init.completedWithErrors"));for(const l of t.errors)n.error(e("init.errorLine",{error:l}))}}};
1
+ import{PresetSchema as f,HARNESS_KEYS as m,logger as i,formatTable as p,resolveComponents as g}from"@weavecode/core";import{executeInit as u}from"../init/executor.js";import{registerProject as h}from"@weavecode/server";import{t as e}from"../i18n/index.js";const d=["preToolUse","postToolUse","userPromptSubmit","sessionStart","stop","stopFailure","subagentStop","subagentStart","notification","postToolUseFailure","permissionRequest","permissionDenied","preCompact","sessionEnd","preModelSwitch"];function S(r){const s=r.trim();if(!s)return{};const c=Object.fromEntries(d.map(n=>[n,!1]));if(s==="none")return c;const a=new Set(s.split(",").map(n=>n.trim()).filter(Boolean)),o=[...a].filter(n=>!d.includes(n));return o.length>0&&i.warn(e("init.hooksUnknownKeys",{keys:o.join(", ")})),Object.fromEntries(d.map(n=>[n,a.has(n)]))}export function parseHarnessFlag(r){const s=r.trim();if(!s)return;const c=s.split(",").map(n=>n.trim().toLowerCase()).filter(Boolean),a=[...new Set(c.filter(n=>m.includes(n)))],o=c.filter(n=>!m.includes(n));return o.length>0&&i.warn(e("init.harnessUnknownKeys",{keys:o.join(", ")})),a.length>0?a:["claude"]}export const initCommand={name:"init",description:"cmd.init.desc",options:[{name:"preset",short:"p",description:"flag.init.preset",type:"string",default:"default",choices:["minimal","default","full"]},{name:"force",short:"f",description:"flag.init.force",type:"boolean",default:!1},{name:"no-interactive",description:"flag.init.noInteractive",type:"boolean",default:!1},{name:"dir",short:"d",description:"flag.dir",type:"string",default:process.cwd()},{name:"hooks",description:"flag.init.hooks",type:"string",default:""},{name:"harness",description:"flag.init.harness",type:"string",default:""}],async action(r){const s=f.parse(r.flags.preset??"default"),c=!!r.flags.force,a=r.flags.noInteractive!==!0&&r.flags.interactive!==!1,o=String(r.flags.dir??process.cwd());i.info(e("init.banner")),i.dim(e("init.presetTarget",{preset:s,target:o}));const n=g(s);let t;try{t=await u({targetDir:o,force:c,interactive:a,preset:s,harnesses:parseHarnessFlag(String(r.flags.harness??"")),components:n,hooks:S(String(r.flags.hooks??"")),skills:{},commands:{},agents:{},mcp:{}})}catch(l){i.error(e("init.failed",{error:l instanceof Error?l.message:String(l)})),process.exit(1)}if(t.success){h(o,"init"),i.success(e("init.complete"));const l=[[e("init.table.directories"),String(t.created.directories.length)],[e("init.table.filesCreated"),String(t.created.files.length)],[e("init.table.filesMerged"),String(t.merged.length)],[e("init.table.weaveUpdated"),String(t.updated.length)],[e("init.table.skills"),String(t.summary.skillsCount)],[e("init.table.commands"),String(t.summary.commandsCount)],[e("init.table.agents"),String(t.summary.agentsCount)]];console.log(p(l)),console.log(),t.merged.length>0&&i.dim(e("init.merged",{count:t.merged.length})),t.updated.length>0&&i.dim(e("init.refreshed",{count:t.updated.length})),t.removed.length>0&&i.dim(e("init.removed",{count:t.removed.length})),t.skipped.length>0&&i.dim(e("init.skipped",{count:t.skipped.length}))}else{i.error(e("init.completedWithErrors"));for(const l of t.errors)i.error(e("init.errorLine",{error:l}))}}};
@@ -1 +1 @@
1
- import{readdir as c}from"node:fs/promises";import{existsSync as m}from"node:fs";import{join as n}from"node:path";import{registerProject as d}from"@weavecode/server";import{logger as a}from"@weavecode/core";import{createRuntimeRegistry as f}from"@weavecode/harness";import{t as p}from"../i18n/index.js";const g=new Set(["node_modules",".git","dist","build",".next","coverage",".cache"]),u=f().byCapability("detect").map(t=>t.detect).filter(t=>t!==void 0);export async function findProjectDirs(t,s=0,r=6){if(s>r)return[];if(m(n(t,".weave"))||u.some(e=>e.present(t)))return[t];let o;try{o=await c(t,{withFileTypes:!0})}catch{return[]}const i=[];for(const e of o)e.isDirectory()&&(e.name.startsWith(".")||g.has(e.name)||i.push(...await findProjectDirs(n(t,e.name),s+1,r)));return i}export const scanCommand={name:"scan",description:"cmd.scan.desc",options:[{name:"dir",short:"d",description:"flag.scan.dir",type:"string",default:process.cwd()}],async action(t){const s=String(t.flags.dir??process.cwd()),r=await findProjectDirs(s);for(const o of r)d(o,"scan");if(a.success(p("out.scan.registered",{count:r.length,root:s})),r.length>0)for(const o of r)a.dim(` ${o}`)}};
1
+ import{readdir as a}from"node:fs/promises";import{existsSync as d}from"node:fs";import{join as o}from"node:path";import{registerProject as f}from"@weavecode/server";import{logger as c}from"@weavecode/core";import{createRuntimeRegistry as m}from"@weavecode/harness";import{t as u}from"../i18n/index.js";const p=new Set(["node_modules",".git","dist","build",".next","coverage",".cache"]),g=m().byCapability("detect").map(t=>t.detect).filter(t=>t!==void 0);export async function findProjectDirs(e,t=0,r=6){if(t>r)return[];if(d(o(e,".weave"))||g.some(i=>i.present(e)))return[e];let n;try{n=await a(e,{withFileTypes:!0})}catch{return[]}const s=[];for(const i of n)i.isDirectory()&&(i.name.startsWith(".")||p.has(i.name)||s.push(...await findProjectDirs(o(e,i.name),t+1,r)));return s}export const scanCommand={name:"scan",description:"cmd.scan.desc",options:[{name:"dir",short:"d",description:"flag.scan.dir",type:"string",default:process.cwd()}],async action(e){const t=String(e.flags.dir??process.cwd()),r=await findProjectDirs(t);for(const n of r)f(n,"scan");if(c.success(u("out.scan.registered",{count:r.length,root:t})),r.length>0)for(const n of r)c.dim(` ${n}`)}};
@@ -1,2 +1,2 @@
1
- import c from"node:path";import k from"node:os";import{readFile as R}from"node:fs/promises";import{fileExists as j,logger as l,formatTable as x,HARNESS_DIRS as S,HARNESS_INSTRUCTION_FILES as E,HARNESS_KEYS as $}from"@weavecode/core";import{createRuntimeRegistry as b}from"@weavecode/harness";import{checkHarness as I}from"../init/harness-checks.js";import{t as o}from"../i18n/index.js";async function N(e){const t=c.join(e,".weave","config.yaml");if(!await j(t))return null;try{const a=await R(t,"utf-8"),i={};for(const r of a.split(`
2
- `)){const n=r.indexOf(":");n>0&&(i[r.slice(0,n).trim()]=r.slice(n+1).trim())}return i}catch{return null}}async function D(e,t){return await j(c.join(t,e))?"out.status.present":"out.status.missing"}async function u(e,t,a){return[e,o(await D(t,a))]}function C(e,t,a){if(!e)return null;try{const i=e.targetDir(t,"project",a,k.homedir());return c.relative(a,i).split(c.sep).join("/")}catch{return null}}export const statusCommand={name:"status",description:"cmd.status.desc",options:[{name:"dir",short:"d",description:"flag.dir",type:"string",default:process.cwd()}],async action(e){const t=String(e.flags.dir??process.cwd()),a=await N(t);if(!a){l.warn(o("out.status.notInitialized"));return}l.info(o("out.status.header"));const i=b(),r=i.byCapability("detect").flatMap(s=>s.detect&&s.detect.detect(t).present?[s.id]:[]),n=[[o("out.status.col.version"),a.initVersion??o("out.status.unknown")],[o("out.status.col.initialized"),a.initTimestamp??o("out.status.unknown")],[o("out.status.col.preset"),a.preset??o("out.status.unknown")],[o("out.status.col.harness"),r.length>0?r.join(", "):o("out.status.unknown")]],p=$[0],m=S[p].projectDir,g=i.get(p)?.assets;for(const s of E[p])n.push(await u(s,s,t));n.push(await u("settings.json",`${m}/settings.json`,t)),n.push(await u(".mcp.json",".mcp.json",t)),n.push(await u("helpers",`${m}/helpers`,t));const w=g?.projectSkillsRoots()[0]??`${m}/skills`;n.push(await u(c.posix.basename(w),w,t));const y=[["commands","command"],["agents","agent"]];for(const[s,f]of y){const h=C(g,f,t)??`${m}/${s}`;n.push(await u(c.posix.basename(h),h,t))}for(const s of r){if(s===p)continue;const f=i.get(s)?.assets?.projectSkillsRoots()[0]??`${S[s].projectDir}/skills`;n.push(await u(f,f,t))}console.log(x(n)),console.log();const d=await I(t);if(d.length>0){l.warn(o("out.status.issuesFound",{count:d.length}));for(const s of d)l.warn(o("out.status.issue",{message:s.message})),l.dim(o("out.status.fix",{fix:s.fix}));console.log()}}};
1
+ import u from"node:path";import y from"node:os";import{readFile as R}from"node:fs/promises";import{fileExists as S,logger as l,formatTable as k,HARNESS_DIRS as j,HARNESS_INSTRUCTION_FILES as x,HARNESS_KEYS as E}from"@weavecode/core";import{createRuntimeRegistry as $}from"@weavecode/harness";import{checkHarness as C}from"../init/harness-checks.js";import{t as o}from"../i18n/index.js";async function D(i){const t=u.join(i,".weave","config.yaml");if(!await S(t))return null;try{const e=await R(t,"utf-8"),a={};for(const r of e.split(`
2
+ `)){const n=r.indexOf(":");n>0&&(a[r.slice(0,n).trim()]=r.slice(n+1).trim())}return a}catch{return null}}async function I(i,t){return await S(u.join(t,i))?"out.status.present":"out.status.missing"}async function c(i,t,e){return[i,o(await I(t,e))]}function N(i,t,e){if(!i)return null;try{const a=i.targetDir(t,"project",e,y.homedir());return u.relative(e,a).split(u.sep).join("/")}catch{return null}}export const statusCommand={name:"status",description:"cmd.status.desc",options:[{name:"dir",short:"d",description:"flag.dir",type:"string",default:process.cwd()}],async action(i){const t=String(i.flags.dir??process.cwd()),e=await D(t);if(!e){l.warn(o("out.status.notInitialized"));return}l.info(o("out.status.header"));const a=$(),r=a.byCapability("detect").flatMap(s=>s.detect&&s.detect.detect(t).present?[s.id]:[]),n=[[o("out.status.col.version"),e.initVersion??o("out.status.unknown")],[o("out.status.col.initialized"),e.initTimestamp??o("out.status.unknown")],[o("out.status.col.preset"),e.preset??o("out.status.unknown")],[o("out.status.col.harness"),r.length>0?r.join(", "):o("out.status.unknown")]],f=E[0],p=j[f].projectDir,d=a.get(f)?.assets;for(const s of x[f])n.push(await c(s,s,t));n.push(await c("settings.json",`${p}/settings.json`,t)),n.push(await c(".mcp.json",".mcp.json",t)),n.push(await c("helpers",`${p}/helpers`,t));const w=d?.projectSkillsRoots()[0]??`${p}/skills`;n.push(await c(u.posix.basename(w),w,t));const b=[["commands","command"],["agents","agent"]];for(const[s,m]of b){const h=N(d,m,t)??`${p}/${s}`;n.push(await c(u.posix.basename(h),h,t))}for(const s of r){if(s===f)continue;const m=a.get(s)?.assets?.projectSkillsRoots()[0]??`${j[s].projectDir}/skills`;n.push(await c(m,m,t))}console.log(k(n)),console.log();const g=await C(t);if(g.length>0){l.warn(o("out.status.issuesFound",{count:g.length}));for(const s of g)l.warn(o("out.status.issue",{message:s.message})),l.dim(o("out.status.fix",{fix:s.fix}));console.log()}}};
@@ -1 +1 @@
1
- import{logger as t}from"@weavecode/core";import{executeUninstall as a}from"../init/uninstall.js";import{t as i}from"../i18n/index.js";function r(s){s.outcome==="removed"?t.dim(i("out.uninstall.serverRemoved",{name:s.name??"",events:s.purged?.events??0,dispatches:s.purged?.dispatches??0,sessions:s.purged?.sessions??0})):s.outcome==="failed"&&t.warn(i("out.uninstall.serverFailed",{error:s.error??""}))}export const uninstallCommand={name:"uninstall",description:"cmd.uninstall.desc",options:[{name:"dir",short:"d",description:"flag.dir",type:"string",default:process.cwd()}],async action(s){const n=String(s.flags.dir??process.cwd());t.info(i("out.uninstall.banner",{target:n}));const e=await a({targetDir:n});if(e.status==="not-initialized"){t.warn(i("out.uninstall.notInitialized")),r(e.server);return}if(t.success(i("out.uninstall.done",{files:e.removedFiles.length,dirs:e.removedDirs.length})),e.modifiedFiles.length>0&&t.dim(i("out.uninstall.modified",{count:e.modifiedFiles.length})),e.keptUserFiles.length>0){t.dim(i("out.uninstall.keptUser",{count:e.keptUserFiles.length}));for(const o of e.keptUserFiles)t.dim(` ${o}`)}switch(e.restoredFromBackup&&t.dim(i("out.uninstall.restored",{path:e.restoredFromBackup})),r(e.server),e.git){case"reset":t.dim(i("out.uninstall.gitReset",{sha:e.gitSha??""}));break;case"committed":t.dim(i("out.uninstall.gitCommit",{sha:e.gitSha??"",count:e.removedFiles.length+e.modifiedFiles.length}));break;case"no-changes":t.dim(i("out.uninstall.gitNoChanges"));break;case"skipped-dirty-index":t.warn(i("out.uninstall.gitDirty"));break;case"skipped-not-repo":t.dim(i("out.uninstall.gitNotRepo"));break;case"failed":t.warn(i("out.uninstall.gitFailed",{error:e.gitError??""}));break}}};
1
+ import{logger as t}from"@weavecode/core";import{executeUninstall as a}from"../init/uninstall.js";import{t as i}from"../i18n/index.js";function o(n){n.outcome==="removed"?t.dim(i("out.uninstall.serverRemoved",{name:n.name??"",events:n.purged?.events??0,dispatches:n.purged?.dispatches??0,sessions:n.purged?.sessions??0})):n.outcome==="failed"&&t.warn(i("out.uninstall.serverFailed",{error:n.error??""}))}export const uninstallCommand={name:"uninstall",description:"cmd.uninstall.desc",options:[{name:"dir",short:"d",description:"flag.dir",type:"string",default:process.cwd()}],async action(n){const s=String(n.flags.dir??process.cwd());t.info(i("out.uninstall.banner",{target:s}));const e=await a({targetDir:s});if(e.status==="not-initialized"){t.warn(i("out.uninstall.notInitialized")),o(e.server);return}if(t.success(i("out.uninstall.done",{files:e.removedFiles.length,dirs:e.removedDirs.length})),e.modifiedFiles.length>0&&t.dim(i("out.uninstall.modified",{count:e.modifiedFiles.length})),e.keptUserFiles.length>0){t.dim(i("out.uninstall.keptUser",{count:e.keptUserFiles.length}));for(const r of e.keptUserFiles)t.dim(` ${r}`)}switch(e.restoredFromBackup&&t.dim(i("out.uninstall.restored",{path:e.restoredFromBackup})),o(e.server),e.git){case"reset":t.dim(i("out.uninstall.gitReset",{sha:e.gitSha??""}));break;case"committed":t.dim(i("out.uninstall.gitCommit",{sha:e.gitSha??"",count:e.removedFiles.length+e.modifiedFiles.length}));break;case"no-changes":t.dim(i("out.uninstall.gitNoChanges"));break;case"skipped-dirty-index":t.warn(i("out.uninstall.gitDirty"));break;case"skipped-not-repo":t.dim(i("out.uninstall.gitNotRepo"));break;case"failed":t.warn(i("out.uninstall.gitFailed",{error:e.gitError??""}));break}}};
@@ -22,7 +22,8 @@ import{HARNESS_DIRS as t,HARNESS_KEYS as e}from"@weavecode/core";export const en
22
22
  `,"init.skipped":` Skipped {count} existing file(s). Use --force to overwrite.
23
23
  `,"init.completedWithErrors":`
24
24
  Init completed with errors
25
- `,"init.errorLine":" - {error}","init.nonInteractive":"Running in non-interactive mode","init.userCaptureActive":"User-scope capture is installed \u2014 skipping project hooks (weave groups swept)","init.skippedInvalidJson":"Skipped {path}: not valid JSON. Fix or remove it, or use --force.","init.backedUp":"Backed up the previous AGENTS.md to {path}","init.copyTemplatesFailed":"Could not copy templates from {srcDir}: {error}","init.pluginMcpRenamed":"Plugin MCP server name conflict, prefixed: {renamed}","init.proceed":"Proceed? [Y/n]","init.commit.question":"Commit the outputs of this init as a single commit?","init.commit.detail":"Will commit: {paths}","init.commit.preStaged":"Staged changes already present \u2014 skipping the auto-commit (to avoid sweeping in unrelated edits).","init.commit.pathIgnored":"Ignored by .gitignore, not added: {paths}","init.commit.failed":"Commit failed: {error}","init.commit.done":"Created commit {sha} ({count} files)","init.hooksUnknownKeys":"Ignored unknown hook event names: {keys}","init.harnessUnknownKeys":"Ignored unknown harness name(s): {keys}","init.multiselect.title":"Select harnesses to initialize (multiple allowed):","init.multiselect.hint":"Enter numbers or names (comma-separated), or press Enter for {defaults}:","init.multiselect.invalid":"Ignored unrecognized selection(s): {keys}","init.noPeerFace":"no equivalent surface","init.stepSkipped":"Skipped {step}: {reason}","claudemd.rules":`## Behavioral Rules
25
+ `,"init.errorLine":" - {error}","init.nonInteractive":"Running in non-interactive mode","init.userCaptureActive":"User-scope capture is installed \u2014 skipping project hooks (weave groups swept)","init.skippedInvalidJson":"Skipped {path}: not valid JSON. Fix or remove it, or use --force.","init.backedUp":"Backed up the previous AGENTS.md to {path}","init.copyTemplatesFailed":"Could not copy templates from {srcDir}: {error}","init.pluginMcpRenamed":"Plugin MCP server name conflict, prefixed: {renamed}","init.proceed":"Proceed? [Y/n]","init.commit.question":"Commit the outputs of this init as a single commit?","init.commit.detail":"Will commit: {paths}","init.commit.preStaged":"Staged changes already present \u2014 skipping the auto-commit (to avoid sweeping in unrelated edits).","init.commit.pathIgnored":"Ignored by .gitignore, not added: {paths}","init.commit.failed":"Commit failed: {error}","init.commit.done":"Created commit {sha} ({count} files)","init.hooksUnknownKeys":"Ignored unknown hook event names: {keys}","init.harnessUnknownKeys":"Ignored unknown harness name(s): {keys}","init.multiselect.title":"Select harnesses to initialize (multiple allowed):","init.multiselect.hint":"Enter numbers or names (comma-separated), or press Enter for {defaults}:","init.multiselect.invalid":"Ignored unrecognized selection(s): {keys}","init.noPeerFace":"no equivalent surface","init.stepSkipped":"Skipped {step}: {reason}","init.install.installed":" {harness} installed ({version})","init.install.versionLow":" {harness} version {version} is below the suggested minimum {min} \u2014 run `{command}` to upgrade","init.install.notFound":" {harness} not detected","init.install.confirm":"Install {harness} now?","init.install.detail":"Will run: {command}","init.install.running":" Installing {harness}...","init.install.done":" {harness} installed ({version})","init.install.verifyFailed":" {harness} still not detected after install \u2014 run manually later: {command}","init.install.declined":" Skipped install. Run manually later: {command}","init.install.npmMissing":" npm not found \u2014 cannot auto-install. Run manually: {command}","init.trust.prewritten":" Prewrote {harness} folder trust (first open won't ask)","init.trust.failed":" Failed to prewrite {harness} trust state (init continues): {error}","init.provision.conflict":` \u26A0 {harness} install-shape conflict: {warning}
26
+ Official fix: {hint}`,"init.provision.checkFailed":" {harness} install-shape check failed (init continues): {error}","claudemd.rules":`## Behavioral Rules
26
27
 
27
28
  - Follow existing code conventions and patterns in this project
28
29
  - Prefer editing existing files over creating new ones
@@ -186,6 +186,20 @@ export declare const zh: {
186
186
  'init.noPeerFace': string;
187
187
  'init.stepSkipped': string;
188
188
  'init.removed': string;
189
+ 'init.install.installed': string;
190
+ 'init.install.versionLow': string;
191
+ 'init.install.notFound': string;
192
+ 'init.install.confirm': string;
193
+ 'init.install.detail': string;
194
+ 'init.install.running': string;
195
+ 'init.install.done': string;
196
+ 'init.install.verifyFailed': string;
197
+ 'init.install.declined': string;
198
+ 'init.install.npmMissing': string;
199
+ 'init.trust.prewritten': string;
200
+ 'init.trust.failed': string;
201
+ 'init.provision.conflict': string;
202
+ 'init.provision.checkFailed': string;
189
203
  'claudemd.rules': string;
190
204
  'claudemd.files': string;
191
205
  'claudemd.security': string;
@@ -1,4 +1,4 @@
1
- import{HARNESS_DIRS as F,HARNESS_KEYS as u}from"@weavecode/core";export const zh={"help.tagline":"weave v{version} \u2014 Harness \u5DE5\u5177","help.usage":"\u7528\u6CD5\uFF1Aweave <\u547D\u4EE4> [\u9009\u9879]","help.commands":"\u547D\u4EE4\uFF1A","help.globalOptions":"\u5168\u5C40\u9009\u9879\uFF1A","help.subcommands":"\u53EF\u7528\u5B50\u547D\u4EE4\uFF1A","cli.unknownCommand":"\u672A\u77E5\u547D\u4EE4\uFF1A{command}","cli.error":"\u9519\u8BEF\uFF1A{error}","cli.missingRequired":"\u7F3A\u5C11\u5FC5\u586B\u9009\u9879\uFF1A--{name}","cli.invalidChoice":'--{name} \u7684\u53D6\u503C "{value}" \u65E0\u6548\uFF0C\u53EF\u9009\u503C\uFF1A{choices}',"cli.missingSubcommand":"\u547D\u4EE4 {command} \u9700\u8981\u4E00\u4E2A\u5B50\u547D\u4EE4","cli.unknownSubcommand":"\u672A\u77E5\u5B50\u547D\u4EE4\uFF1A{command} {subcommand}","cli.unexpectedPositional":"\u547D\u4EE4 {command} \u4E0D\u63A5\u53D7\u53C2\u6570\u300C{arg}\u300D","flag.help":"\u663E\u793A\u5E2E\u52A9","flag.version":"\u663E\u793A\u7248\u672C","flag.verbose":"\u8BE6\u7EC6\u8F93\u51FA","flag.quiet":"\u6291\u5236\u975E\u5FC5\u8981\u8F93\u51FA","cmd.init.desc":"\u5728\u5F53\u524D\u9879\u76EE\u521D\u59CB\u5316 weave harness","cmd.uninstall.desc":"\u5378\u8F7D weave\uFF1A\u79FB\u9664 init \u751F\u6210\u7269\uFF08init \u63D0\u4EA4\u521A\u843D\u76D8\u65F6\u56DE\u6EDA\u6307\u9488\uFF0C\u5426\u5219\u751F\u6210\u5378\u8F7D\u63D0\u4EA4\uFF09","cmd.status.desc":"\u67E5\u770B\u5F53\u524D harness \u72B6\u6001","cmd.daemon.desc":"\u7BA1\u7406\u540E\u53F0\u5B88\u62A4\u8FDB\u7A0B\uFF08start\u3001stop\u3001status\uFF09","cmd.daemon.start.desc":"\u5728\u540E\u53F0\u542F\u52A8\u5B88\u62A4\u8FDB\u7A0B\uFF08\u4E0D\u5F00\u6D4F\u89C8\u5668\u2014\u2014\u89C1 `weave dashboard`\uFF09","cmd.daemon.stop.desc":"\u505C\u6B62\u8FD0\u884C\u4E2D\u7684\u5B88\u62A4\u8FDB\u7A0B","cmd.daemon.status.desc":"\u67E5\u770B\u5B88\u62A4\u8FDB\u7A0B\u72B6\u6001","cmd.dashboard.desc":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 web \u63A7\u5236\u53F0\uFF08\u5FC5\u8981\u65F6\u5148\u542F\u52A8\u5B88\u62A4\u8FDB\u7A0B\uFF09","cmd.chpass.desc":"\u4FEE\u6539 dashboard \u767B\u5F55\u5BC6\u7801\uFF08\u6307\u5B9A\u65B0\u5BC6\u7801\uFF1B\u672C\u673A\u6267\u884C\u4E0D\u9700\u8981\u65E7\u5BC6\u7801\uFF09","cmd.scan.desc":"\u626B\u63CF\u5DF2\u521D\u59CB\u5316 weave \u7684\u9879\u76EE\u5E76\u6CE8\u518C","cmd.doctor.desc":"\u8BCA\u65AD\u672C\u673A\u63A5\u7EBF\uFF1A\u8FD9\u6761\u68C0\u51FA\u662F\u5426\u5DF2\u6CE8\u518C\u8FDB\u672C\u673A weave server","flag.init.preset":"\u914D\u7F6E\u9884\u8BBE\uFF1Aminimal\u3001default \u6216 full","flag.init.force":"\u8986\u76D6\u5DF2\u5B58\u5728\u7684\u6587\u4EF6","flag.init.noInteractive":"\u7981\u7528\u4EA4\u4E92\u5F0F\u63D0\u793A","flag.init.hooks":"\u542F\u7528\u7684 hook \u4E8B\u4EF6\uFF0C\u9017\u53F7\u5206\u9694\uFF08preToolUse,postToolUse,userPromptSubmit,sessionStart,stop,stopFailure,subagentStop,subagentStart,notification,postToolUseFailure,permissionRequest,permissionDenied,preCompact,sessionEnd,preModelSwitch\uFF09\uFF1Bnone \u8868\u793A\u5168\u4E0D\u6CE8\u518C\uFF1B\u9ED8\u8BA4\u5168\u5F00","flag.init.harness":`\u8981\u521D\u59CB\u5316\u7684 harness \u9762\uFF0C\u9017\u53F7\u5206\u9694\uFF08${u.join("\u3001")}\uFF09\uFF1B\u7F3A\u7701\u65F6 TTY \u4E0B\u4EA4\u4E92\u591A\u9009\uFF0C\u9ED8\u8BA4 ${u[0]}`,"flag.dir":"\u76EE\u6807\u76EE\u5F55\uFF08\u9ED8\u8BA4\uFF1A\u5F53\u524D\u76EE\u5F55\uFF09","flag.scan.dir":"\u626B\u63CF\u7684\u6839\u76EE\u5F55\uFF08\u9ED8\u8BA4\uFF1A\u5F53\u524D\u76EE\u5F55\uFF09","flag.dashboard.noOpen":"\u53EA\u6253\u5370 dashboard URL\uFF0C\u4E0D\u6253\u5F00\u6D4F\u89C8\u5668","out.daemon.alreadyRunning":"\u5B88\u62A4\u8FDB\u7A0B\u5DF2\u5728 {port} \u7AEF\u53E3\u8FD0\u884C","out.daemon.started":"\u5B88\u62A4\u8FDB\u7A0B\u5DF2\u542F\u52A8\uFF1Ahttp://{host}:{port}","out.daemon.stopped":"\u5B88\u62A4\u8FDB\u7A0B\u5DF2\u505C\u6B62\uFF08pid {pid}\uFF09\u3002","out.daemon.statusNotRunning":"\u5B88\u62A4\u8FDB\u7A0B\uFF1A\u672A\u8FD0\u884C","out.daemon.statusRunning":"\u5B88\u62A4\u8FDB\u7A0B\uFF1A\u8FD0\u884C\u4E2D\uFF08pid {pid}\uFF0C\u7AEF\u53E3 {port}\uFF0C\u5DF2\u8FD0\u884C {uptime}s\uFF09","out.daemon.urlsTitle":"\u8BBF\u95EE\u5730\u5740\uFF1A","out.daemon.statusStale":"\u5B88\u62A4\u8FDB\u7A0B\uFF1A\u72B6\u6001\u8FC7\u671F\uFF08pid {pid}\uFF0C\u7AEF\u53E3 {port} \u65E0\u54CD\u5E94\uFF09","out.doctor.header":`
1
+ import{HARNESS_DIRS as t,HARNESS_KEYS as e}from"@weavecode/core";export const zh={"help.tagline":"weave v{version} \u2014 Harness \u5DE5\u5177","help.usage":"\u7528\u6CD5\uFF1Aweave <\u547D\u4EE4> [\u9009\u9879]","help.commands":"\u547D\u4EE4\uFF1A","help.globalOptions":"\u5168\u5C40\u9009\u9879\uFF1A","help.subcommands":"\u53EF\u7528\u5B50\u547D\u4EE4\uFF1A","cli.unknownCommand":"\u672A\u77E5\u547D\u4EE4\uFF1A{command}","cli.error":"\u9519\u8BEF\uFF1A{error}","cli.missingRequired":"\u7F3A\u5C11\u5FC5\u586B\u9009\u9879\uFF1A--{name}","cli.invalidChoice":'--{name} \u7684\u53D6\u503C "{value}" \u65E0\u6548\uFF0C\u53EF\u9009\u503C\uFF1A{choices}',"cli.missingSubcommand":"\u547D\u4EE4 {command} \u9700\u8981\u4E00\u4E2A\u5B50\u547D\u4EE4","cli.unknownSubcommand":"\u672A\u77E5\u5B50\u547D\u4EE4\uFF1A{command} {subcommand}","cli.unexpectedPositional":"\u547D\u4EE4 {command} \u4E0D\u63A5\u53D7\u53C2\u6570\u300C{arg}\u300D","flag.help":"\u663E\u793A\u5E2E\u52A9","flag.version":"\u663E\u793A\u7248\u672C","flag.verbose":"\u8BE6\u7EC6\u8F93\u51FA","flag.quiet":"\u6291\u5236\u975E\u5FC5\u8981\u8F93\u51FA","cmd.init.desc":"\u5728\u5F53\u524D\u9879\u76EE\u521D\u59CB\u5316 weave harness","cmd.uninstall.desc":"\u5378\u8F7D weave\uFF1A\u79FB\u9664 init \u751F\u6210\u7269\uFF08init \u63D0\u4EA4\u521A\u843D\u76D8\u65F6\u56DE\u6EDA\u6307\u9488\uFF0C\u5426\u5219\u751F\u6210\u5378\u8F7D\u63D0\u4EA4\uFF09","cmd.status.desc":"\u67E5\u770B\u5F53\u524D harness \u72B6\u6001","cmd.daemon.desc":"\u7BA1\u7406\u540E\u53F0\u5B88\u62A4\u8FDB\u7A0B\uFF08start\u3001stop\u3001status\uFF09","cmd.daemon.start.desc":"\u5728\u540E\u53F0\u542F\u52A8\u5B88\u62A4\u8FDB\u7A0B\uFF08\u4E0D\u5F00\u6D4F\u89C8\u5668\u2014\u2014\u89C1 `weave dashboard`\uFF09","cmd.daemon.stop.desc":"\u505C\u6B62\u8FD0\u884C\u4E2D\u7684\u5B88\u62A4\u8FDB\u7A0B","cmd.daemon.status.desc":"\u67E5\u770B\u5B88\u62A4\u8FDB\u7A0B\u72B6\u6001","cmd.dashboard.desc":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00 web \u63A7\u5236\u53F0\uFF08\u5FC5\u8981\u65F6\u5148\u542F\u52A8\u5B88\u62A4\u8FDB\u7A0B\uFF09","cmd.chpass.desc":"\u4FEE\u6539 dashboard \u767B\u5F55\u5BC6\u7801\uFF08\u6307\u5B9A\u65B0\u5BC6\u7801\uFF1B\u672C\u673A\u6267\u884C\u4E0D\u9700\u8981\u65E7\u5BC6\u7801\uFF09","cmd.scan.desc":"\u626B\u63CF\u5DF2\u521D\u59CB\u5316 weave \u7684\u9879\u76EE\u5E76\u6CE8\u518C","cmd.doctor.desc":"\u8BCA\u65AD\u672C\u673A\u63A5\u7EBF\uFF1A\u8FD9\u6761\u68C0\u51FA\u662F\u5426\u5DF2\u6CE8\u518C\u8FDB\u672C\u673A weave server","flag.init.preset":"\u914D\u7F6E\u9884\u8BBE\uFF1Aminimal\u3001default \u6216 full","flag.init.force":"\u8986\u76D6\u5DF2\u5B58\u5728\u7684\u6587\u4EF6","flag.init.noInteractive":"\u7981\u7528\u4EA4\u4E92\u5F0F\u63D0\u793A","flag.init.hooks":"\u542F\u7528\u7684 hook \u4E8B\u4EF6\uFF0C\u9017\u53F7\u5206\u9694\uFF08preToolUse,postToolUse,userPromptSubmit,sessionStart,stop,stopFailure,subagentStop,subagentStart,notification,postToolUseFailure,permissionRequest,permissionDenied,preCompact,sessionEnd,preModelSwitch\uFF09\uFF1Bnone \u8868\u793A\u5168\u4E0D\u6CE8\u518C\uFF1B\u9ED8\u8BA4\u5168\u5F00","flag.init.harness":`\u8981\u521D\u59CB\u5316\u7684 harness \u9762\uFF0C\u9017\u53F7\u5206\u9694\uFF08${e.join("\u3001")}\uFF09\uFF1B\u7F3A\u7701\u65F6 TTY \u4E0B\u4EA4\u4E92\u591A\u9009\uFF0C\u9ED8\u8BA4 ${e[0]}`,"flag.dir":"\u76EE\u6807\u76EE\u5F55\uFF08\u9ED8\u8BA4\uFF1A\u5F53\u524D\u76EE\u5F55\uFF09","flag.scan.dir":"\u626B\u63CF\u7684\u6839\u76EE\u5F55\uFF08\u9ED8\u8BA4\uFF1A\u5F53\u524D\u76EE\u5F55\uFF09","flag.dashboard.noOpen":"\u53EA\u6253\u5370 dashboard URL\uFF0C\u4E0D\u6253\u5F00\u6D4F\u89C8\u5668","out.daemon.alreadyRunning":"\u5B88\u62A4\u8FDB\u7A0B\u5DF2\u5728 {port} \u7AEF\u53E3\u8FD0\u884C","out.daemon.started":"\u5B88\u62A4\u8FDB\u7A0B\u5DF2\u542F\u52A8\uFF1Ahttp://{host}:{port}","out.daemon.stopped":"\u5B88\u62A4\u8FDB\u7A0B\u5DF2\u505C\u6B62\uFF08pid {pid}\uFF09\u3002","out.daemon.statusNotRunning":"\u5B88\u62A4\u8FDB\u7A0B\uFF1A\u672A\u8FD0\u884C","out.daemon.statusRunning":"\u5B88\u62A4\u8FDB\u7A0B\uFF1A\u8FD0\u884C\u4E2D\uFF08pid {pid}\uFF0C\u7AEF\u53E3 {port}\uFF0C\u5DF2\u8FD0\u884C {uptime}s\uFF09","out.daemon.urlsTitle":"\u8BBF\u95EE\u5730\u5740\uFF1A","out.daemon.statusStale":"\u5B88\u62A4\u8FDB\u7A0B\uFF1A\u72B6\u6001\u8FC7\u671F\uFF08pid {pid}\uFF0C\u7AEF\u53E3 {port} \u65E0\u54CD\u5E94\uFF09","out.doctor.header":`
2
2
  Weave Doctor \u2014\u2014 \u672C\u673A\u63A5\u7EBF
3
3
  `,"out.doctor.dir":"\u76EE\u5F55","out.doctor.initialized":"\u5DF2\u521D\u59CB\u5316","out.doctor.yes":"\u662F","out.doctor.no":"\u5426","out.doctor.daemon":"\u5B88\u62A4\u8FDB\u7A0B","out.doctor.daemonRunning":"\u8FD0\u884C\u4E2D\uFF08\u7AEF\u53E3 {port}\uFF09","out.doctor.daemonStopped":"\u672A\u8FD0\u884C","out.doctor.registered":"\u672C\u673A\u6CE8\u518C","out.doctor.registeredYes":"\u662F\uFF08id {id}\uFF0C\u6765\u6E90 {source}\uFF09","out.doctor.registeredNo":"\u5426\u2014\u2014\u8FD9\u6761\u68C0\u51FA\u4E0D\u5728\u672C\u673A\u6CE8\u518C\u8868\u91CC","out.doctor.registeredArchived":"\u5DF2\u5F52\u6863\uFF08id {id}\uFF09","out.doctor.token":"\u4EE4\u724C","out.doctor.tokenOk":"\u6B63\u5E38","out.doctor.tokenMissing":"\u7F3A\u5931\uFF08.weave/token \u4E0D\u5B58\u5728\uFF09","out.doctor.tokenUnregistered":"\u5B58\u5728\uFF0C\u4F46\u9879\u76EE\u672A\u6CE8\u518C","out.doctor.tokenStale":"\u8FC7\u671F\u2014\u2014\u4E0E\u672C\u673A\u6CE8\u518C\u8868\u7684\u4EE4\u724C\u4E0D\u4E00\u81F4","out.doctor.warnNotRegistered":"\u8FD9\u4E2A\u9879\u76EE\u5E26\u7740 weave \u6587\u4EF6\uFF0C\u5374\u6CA1\u6709\u6CE8\u518C\u8FDB\u672C\u673A weave server\u3002","out.doctor.fixInit":"\u8FD0\u884C `weave init` \u53EF\u91CD\u65B0\u6CE8\u518C\u8FD9\u6761\u68C0\u51FA\u3001\u5237\u65B0 harness \u6587\u4EF6\u5E76\u91CD\u5199\u672C\u5730\u8DEF\u5F84\u3002","out.doctor.fixScan":"\u6216\u7528 `weave scan -d <\u4E0A\u7EA7\u76EE\u5F55>` \u6279\u91CF\u53D1\u73B0\u5E76\u6CE8\u518C\u3002","out.doctor.warnArchived":"\u8FD9\u4E2A\u9879\u76EE\u5DF2\u6CE8\u518C\u4F46\u5904\u4E8E\u5F52\u6863\u6001\u2014\u2014\u5728 dashboard \u91CC\u6062\u590D\u540E\u624D\u80FD\u4F7F\u7528\u3002","out.doctor.warnTokenMissing":"\u5DF2\u6CE8\u518C\uFF0C\u4F46 `.weave/token` \u7F3A\u5931\u2014\u2014\u91CD\u65B0\u751F\u6210\u524D hook \u65E0\u6CD5\u901A\u8FC7\u9274\u6743\u3002","out.doctor.warnTokenStale":"\u5DF2\u6CE8\u518C\uFF0C\u4F46 `.weave/token` \u5C5E\u4E8E\u53E6\u4E00\u6B21\u68C0\u51FA\u2014\u2014\u9700\u8981\u91CD\u65B0\u751F\u6210\u3002","out.doctor.ok":"\u6B63\u5E38\u2014\u2014\u8FD9\u6761\u68C0\u51FA\u5DF2\u6CE8\u518C\uFF0C\u4EE4\u724C\u4E00\u81F4\u3002","out.doctor.fixDaemon":"\u5B88\u62A4\u8FDB\u7A0B\u672A\u8FD0\u884C\uFF1B\u9700\u8981\u91C7\u96C6\u65F6\u7528 `weave daemon start` \u542F\u52A8\u3002","out.doctor.diagHeader":`
4
4
  Weave Doctor \u2014\u2014 \u6D88\u606F\u6295\u9012\u8BCA\u65AD\uFF08\u9879\u76EE #{id}\uFF09
@@ -23,7 +23,8 @@ import{HARNESS_DIRS as F,HARNESS_KEYS as u}from"@weavecode/core";export const zh
23
23
  `,"init.completedWithErrors":`
24
24
  \u521D\u59CB\u5316\u5B8C\u6210\uFF0C\u4F46\u6709\u9519\u8BEF
25
25
  `,"init.errorLine":" - {error}","init.nonInteractive":"\u4EE5\u975E\u4EA4\u4E92\u6A21\u5F0F\u8FD0\u884C","init.userCaptureActive":"user \u6863\u91C7\u96C6\u5DF2\u5B89\u88C5\u2014\u2014\u8DF3\u8FC7\u9879\u76EE\u6863 hooks\uFF08\u6E05\u626B weave \u7EC4\uFF09","init.skippedInvalidJson":"\u5DF2\u8DF3\u8FC7 {path}\uFF1A\u4E0D\u662F\u5408\u6CD5 JSON\u3002\u8BF7\u4FEE\u590D\u6216\u5220\u9664\u5B83\uFF0C\u6216\u4F7F\u7528 --force\u3002","init.pluginMcpRenamed":"\u63D2\u4EF6 MCP server \u91CD\u540D\u5DF2\u52A0\u524D\u7F00\uFF1A{renamed}","init.backedUp":"\u5DF2\u5C06\u539F AGENTS.md \u5907\u4EFD\u5230 {path}","init.copyTemplatesFailed":"\u65E0\u6CD5\u4ECE {srcDir} \u590D\u5236\u6A21\u677F\uFF1A{error}","init.proceed":"\u662F\u5426\u7EE7\u7EED\uFF1F[Y/n]","init.commit.question":"\u5C06\u672C\u6B21 init \u7684\u751F\u6210\u7269\u63D0\u4EA4\u4E3A\u4E00\u4E2A commit\uFF1F","init.commit.detail":"\u5C06\u63D0\u4EA4\uFF1A{paths}","init.commit.preStaged":"\u5DE5\u4F5C\u533A\u5DF2\u6709\u6682\u5B58\u53D8\u66F4\uFF0C\u8DF3\u8FC7\u81EA\u52A8\u63D0\u4EA4\uFF08\u907F\u514D\u5E26\u5165\u65E0\u5173\u6539\u52A8\uFF09\u3002","init.commit.pathIgnored":"\u88AB .gitignore \u5FFD\u7565\uFF0C\u672A\u52A0\u5165\uFF1A{paths}","init.commit.failed":"\u521B\u5EFA commit \u5931\u8D25\uFF1A{error}","init.commit.done":"\u5DF2\u521B\u5EFA\u63D0\u4EA4 {sha}\uFF08{count} \u4E2A\u6587\u4EF6\uFF09","init.hooksUnknownKeys":"\u5DF2\u5FFD\u7565\u672A\u77E5\u7684 hooks \u4E8B\u4EF6\u540D\uFF1A{keys}","init.harnessUnknownKeys":"\u5DF2\u5FFD\u7565\u672A\u77E5\u7684 harness\uFF1A{keys}","init.multiselect.title":"\u9009\u62E9\u8981\u521D\u59CB\u5316\u7684 harness\uFF08\u53EF\u591A\u9009\uFF09\uFF1A","init.multiselect.hint":"\u8F93\u5165\u7F16\u53F7\u6216\u540D\u79F0\uFF08\u9017\u53F7\u5206\u9694\uFF09\uFF0C\u76F4\u63A5\u56DE\u8F66\u53D6\u9ED8\u8BA4 {defaults}\uFF1A","init.multiselect.invalid":"\u5DF2\u5FFD\u7565\u65E0\u6CD5\u8BC6\u522B\u7684\u9009\u62E9\uFF1A{keys}","init.noPeerFace":"\u65E0\u5BF9\u7B49\u9762","init.stepSkipped":"\u5DF2\u8DF3\u8FC7 {step}\uFF1A{reason}","init.removed":` \u5DF2\u6309\u6807\u8BB0\u6E05\u7406 {count} \u4E2A\u9057\u7559\u751F\u6210\u7269\u3002
26
- `,"claudemd.rules":`## \u884C\u4E3A\u51C6\u5219
26
+ `,"init.install.installed":" {harness} \u5DF2\u5B89\u88C5\uFF08{version}\uFF09","init.install.versionLow":" {harness} \u7248\u672C {version} \u4F4E\u4E8E\u5EFA\u8BAE\u4E0B\u9650 {min}\uFF0C\u53EF\u8FD0\u884C `{command}` \u5347\u7EA7","init.install.notFound":" \u672A\u68C0\u6D4B\u5230 {harness}","init.install.confirm":"\u662F\u5426\u73B0\u5728\u5B89\u88C5 {harness}\uFF1F","init.install.detail":"\u5C06\u6267\u884C\uFF1A{command}","init.install.running":" \u6B63\u5728\u5B89\u88C5 {harness}\u2026\u2026","init.install.done":" {harness} \u5B89\u88C5\u5B8C\u6210\uFF08{version}\uFF09","init.install.verifyFailed":" {harness} \u5B89\u88C5\u540E\u4ECD\u672A\u68C0\u6D4B\u5230\uFF0C\u53EF\u7A0D\u540E\u624B\u52A8\u8FD0\u884C\uFF1A{command}","init.install.declined":" \u5DF2\u8DF3\u8FC7\u5B89\u88C5\u3002\u7A0D\u540E\u53EF\u624B\u52A8\u8FD0\u884C\uFF1A{command}","init.install.npmMissing":" \u672A\u627E\u5230 npm\uFF0C\u65E0\u6CD5\u81EA\u52A8\u5B89\u88C5\u3002\u8BF7\u624B\u52A8\u6267\u884C\uFF1A{command}","init.trust.prewritten":" \u5DF2\u9884\u5199 {harness} \u7684\u6587\u4EF6\u5939\u4FE1\u4EFB\uFF08\u9996\u6B21\u6253\u5F00\u4E0D\u518D\u8BE2\u95EE\uFF09","init.trust.failed":" \u9884\u5199 {harness} \u4FE1\u4EFB\u72B6\u6001\u5931\u8D25\uFF08\u4E0D\u5F71\u54CD init\uFF09\uFF1A{error}","init.provision.conflict":` \u26A0 {harness} \u5B89\u88C5\u5F62\u6001\u51B2\u7A81\uFF1A{warning}
27
+ \u5B98\u65B9\u4FEE\u6CD5\uFF1A{hint}`,"init.provision.checkFailed":" {harness} \u5B89\u88C5\u5F62\u6001\u68C0\u67E5\u5931\u8D25\uFF08\u4E0D\u5F71\u54CD init\uFF09\uFF1A{error}","claudemd.rules":`## \u884C\u4E3A\u51C6\u5219
27
28
 
28
29
  - \u9075\u5FAA\u672C\u9879\u76EE\u65E2\u6709\u7684\u4EE3\u7801\u7EA6\u5B9A\u4E0E\u6A21\u5F0F
29
30
  - \u4F18\u5148\u6539\u65E2\u6709\u6587\u4EF6\uFF0C\u4E0D\u8981\u65B0\u5EFA
@@ -47,4 +48,4 @@ import{HARNESS_DIRS as F,HARNESS_KEYS as u}from"@weavecode/core";export const zh
47
48
  - \u4E0D\u5F15\u5165 XSS\u3001SQL \u6CE8\u5165\u3001\u547D\u4EE4\u6CE8\u5165\u9762
48
49
  - \u4F18\u5148\u53C2\u6570\u5316\u67E5\u8BE2\u4E0E\u5B89\u5168 API\uFF0C\u800C\u4E0D\u662F\u5B57\u7B26\u4E32\u62FC\u63A5
49
50
 
50
- `,"claudemd.skills":"## \u6280\u80FD\n\n\u53EF\u590D\u7528\u6280\u80FD\u653E harness \u81EA\u5DF1\u7684\u6280\u80FD\u76EE\u5F55\uFF08Claude Code \u4E3A `.claude/skills/`\uFF09\uFF1A\u4E00\u4E2A\u6280\u80FD\u4E00\u4E2A\u76EE\u5F55\u3001\u5185\u542B `SKILL.md`\uFF1B\u4EFB\u52A1\u547D\u4E2D\u67D0\u4E2A\u6280\u80FD\u65F6\u6309\u540D\u8C03\u7528\u3002\n\n","harness.instructionLinkNotMaterialised.message":'{agents} \u662F\u5185\u5BB9\u4E3A "{claude}" \u7684\u666E\u901A\u6587\u4EF6\u2014\u2014git \u628A\u8F6F\u94FE\u63A5\u68C0\u51FA\u6210\u4E86\u6587\u672C\u3002',"harness.instructionLinkNotMaterialised.fix":"\u542F\u7528\u5F00\u53D1\u8005\u6A21\u5F0F\uFF0C\u7136\u540E\u8FD0\u884C `git config core.symlinks true` \u5E76\u91CD\u65B0\u68C0\u51FA\u8BE5\u6587\u4EF6\u3002","harness.instructionFilesDuplicated.message":"{claude} \u4E0E {agents} \u90FD\u662F\u72EC\u7ACB\u6587\u4EF6\u2014\u2014\u4E24\u8005\u5185\u5BB9\u4F1A\u5404\u81EA\u6F02\u79FB\u3002","harness.instructionFilesDuplicated.fix":"\u8FD0\u884C `weave init` \u8BA9\u5176\u4E2D\u4E00\u4E2A\u94FE\u63A5\u5230\u53E6\u4E00\u4E2A\uFF08\u88AB\u66FF\u6362\u7684\u6587\u4EF6\u4F1A\u5148\u5907\u4EFD\uFF09\u3002","harness.instructionLinkDangling.message":"{name} \u662F\u76EE\u6807\u4E0D\u5B58\u5728\u7684\u8F6F\u94FE\u63A5\u3002","harness.instructionLinkDangling.fix":"\u8FD0\u884C `weave init` \u91CD\u5EFA\u94FE\u63A5\u4E0E\u6307\u4EE4\u6587\u4EF6\u3002","harness.statuslinePathUnresolved.message":"statusLine \u547D\u4EE4\u65E0\u6CD5\u89E3\u6790\u51FA\u811A\u672C\u8DEF\u5F84\uFF1A{command}","harness.statuslinePathUnresolved.fix":`\u8FD0\u884C \`weave init\` \u91CD\u65B0\u751F\u6210 \`${F[u[0]].projectDir}/settings.json\`\u3002`,"harness.statuslinePathForeign.message":"statusLine \u6307\u5411\u672C\u9879\u76EE\u4E4B\u5916\uFF08{path}\uFF09\u2014\u2014\u5B83\u662F\u4E3A\u53E6\u4E00\u4E2A\u68C0\u51FA\u751F\u6210\u7684\u3002","harness.statuslinePathForeign.fix":"\u5728\u672C\u9879\u76EE\u4E2D\u8FD0\u884C `weave init` \u91CD\u5199\u7EDD\u5BF9\u8DEF\u5F84\u3002","harness.statuslineScriptMissing.message":"statusLine \u811A\u672C\u7F3A\u5931\uFF1A{path}","harness.statuslineScriptMissing.fix":"\u8FD0\u884C `weave init` \u91CD\u65B0\u751F\u6210\u3002","ilink.bothHaveContent":"CLAUDE.md \u4E0E AGENTS.md \u90FD\u5305\u542B\u5185\u5BB9","ilink.replaceDetail":"\u5C06\u628A AGENTS.md \u66FF\u6362\u4E3A\u6307\u5411 CLAUDE.md \u7684\u8F6F\u8FDE\u63A5\uFF08\u539F\u6587\u4EF6\u4F1A\u5907\u4EFD\u5230 {backupDir}\uFF09\u3002","ilink.linkFailed":"\u65E0\u6CD5\u521B\u5EFA {link} -> {target}\uFF08{path}\uFF09\uFF1A{detail}","ilink.symlinkNotAllowed":"\u6B64\u7CFB\u7EDF\u4E0D\u5141\u8BB8\u672A\u63D0\u6743\u521B\u5EFA\u8F6F\u94FE\u63A5\u3002\u5728 Windows \u4E0A\u8BF7\u542F\u7528\u5F00\u53D1\u8005\u6A21\u5F0F\uFF08\u8BBE\u7F6E > \u7CFB\u7EDF > \u5F00\u53D1\u8005\u9009\u9879\uFF09\uFF0C\u6216\u4ECE\u63D0\u6743\u7EC8\u7AEF\u8FD0\u884C weave init\uFF0C\u7136\u540E\u91CD\u8BD5\u3002"};
51
+ `,"claudemd.skills":"## \u6280\u80FD\n\n\u53EF\u590D\u7528\u6280\u80FD\u653E harness \u81EA\u5DF1\u7684\u6280\u80FD\u76EE\u5F55\uFF08Claude Code \u4E3A `.claude/skills/`\uFF09\uFF1A\u4E00\u4E2A\u6280\u80FD\u4E00\u4E2A\u76EE\u5F55\u3001\u5185\u542B `SKILL.md`\uFF1B\u4EFB\u52A1\u547D\u4E2D\u67D0\u4E2A\u6280\u80FD\u65F6\u6309\u540D\u8C03\u7528\u3002\n\n","harness.instructionLinkNotMaterialised.message":'{agents} \u662F\u5185\u5BB9\u4E3A "{claude}" \u7684\u666E\u901A\u6587\u4EF6\u2014\u2014git \u628A\u8F6F\u94FE\u63A5\u68C0\u51FA\u6210\u4E86\u6587\u672C\u3002',"harness.instructionLinkNotMaterialised.fix":"\u542F\u7528\u5F00\u53D1\u8005\u6A21\u5F0F\uFF0C\u7136\u540E\u8FD0\u884C `git config core.symlinks true` \u5E76\u91CD\u65B0\u68C0\u51FA\u8BE5\u6587\u4EF6\u3002","harness.instructionFilesDuplicated.message":"{claude} \u4E0E {agents} \u90FD\u662F\u72EC\u7ACB\u6587\u4EF6\u2014\u2014\u4E24\u8005\u5185\u5BB9\u4F1A\u5404\u81EA\u6F02\u79FB\u3002","harness.instructionFilesDuplicated.fix":"\u8FD0\u884C `weave init` \u8BA9\u5176\u4E2D\u4E00\u4E2A\u94FE\u63A5\u5230\u53E6\u4E00\u4E2A\uFF08\u88AB\u66FF\u6362\u7684\u6587\u4EF6\u4F1A\u5148\u5907\u4EFD\uFF09\u3002","harness.instructionLinkDangling.message":"{name} \u662F\u76EE\u6807\u4E0D\u5B58\u5728\u7684\u8F6F\u94FE\u63A5\u3002","harness.instructionLinkDangling.fix":"\u8FD0\u884C `weave init` \u91CD\u5EFA\u94FE\u63A5\u4E0E\u6307\u4EE4\u6587\u4EF6\u3002","harness.statuslinePathUnresolved.message":"statusLine \u547D\u4EE4\u65E0\u6CD5\u89E3\u6790\u51FA\u811A\u672C\u8DEF\u5F84\uFF1A{command}","harness.statuslinePathUnresolved.fix":`\u8FD0\u884C \`weave init\` \u91CD\u65B0\u751F\u6210 \`${t[e[0]].projectDir}/settings.json\`\u3002`,"harness.statuslinePathForeign.message":"statusLine \u6307\u5411\u672C\u9879\u76EE\u4E4B\u5916\uFF08{path}\uFF09\u2014\u2014\u5B83\u662F\u4E3A\u53E6\u4E00\u4E2A\u68C0\u51FA\u751F\u6210\u7684\u3002","harness.statuslinePathForeign.fix":"\u5728\u672C\u9879\u76EE\u4E2D\u8FD0\u884C `weave init` \u91CD\u5199\u7EDD\u5BF9\u8DEF\u5F84\u3002","harness.statuslineScriptMissing.message":"statusLine \u811A\u672C\u7F3A\u5931\uFF1A{path}","harness.statuslineScriptMissing.fix":"\u8FD0\u884C `weave init` \u91CD\u65B0\u751F\u6210\u3002","ilink.bothHaveContent":"CLAUDE.md \u4E0E AGENTS.md \u90FD\u5305\u542B\u5185\u5BB9","ilink.replaceDetail":"\u5C06\u628A AGENTS.md \u66FF\u6362\u4E3A\u6307\u5411 CLAUDE.md \u7684\u8F6F\u8FDE\u63A5\uFF08\u539F\u6587\u4EF6\u4F1A\u5907\u4EFD\u5230 {backupDir}\uFF09\u3002","ilink.linkFailed":"\u65E0\u6CD5\u521B\u5EFA {link} -> {target}\uFF08{path}\uFF09\uFF1A{detail}","ilink.symlinkNotAllowed":"\u6B64\u7CFB\u7EDF\u4E0D\u5141\u8BB8\u672A\u63D0\u6743\u521B\u5EFA\u8F6F\u94FE\u63A5\u3002\u5728 Windows \u4E0A\u8BF7\u542F\u7528\u5F00\u53D1\u8005\u6A21\u5F0F\uFF08\u8BBE\u7F6E > \u7CFB\u7EDF > \u5F00\u53D1\u8005\u9009\u9879\uFF09\uFF0C\u6216\u4ECE\u63D0\u6743\u7EC8\u7AEF\u8FD0\u884C weave init\uFF0C\u7136\u540E\u91CD\u8BD5\u3002"};
@@ -1 +1 @@
1
- import{DEFAULT_LOCALE as e,SUPPORTED_LOCALES as L,readDaemonSettings as f}from"@weavecode/server";import{DICTS as n}from"./dict/index.js";import{makeT as a}from"./t.js";let c=e,i=a(n[e],n[e]);function r(o){c=o,i=a(n[o],n[e])}export async function initCliLocale(){const o=process.env.WEAVE_LOCALE;if(o&&L.includes(o)){r(o);return}try{r((await f()).locale)}catch{r(e)}}export function setLocale(o){r(o)}export function getLocale(){return c}export function t(o,s){return i(o,s)}
1
+ import{DEFAULT_LOCALE as o,SUPPORTED_LOCALES as L,readDaemonSettings as p}from"@weavecode/server";import{DICTS as n}from"./dict/index.js";import{makeT as c}from"./t.js";let a=o,i=c(n[o],n[o]);function r(e){a=e,i=c(n[e],n[o])}export async function initCliLocale(){const e=process.env.WEAVE_LOCALE;if(e&&L.includes(e)){r(e);return}try{r((await p()).locale)}catch{r(o)}}export function setLocale(e){r(e)}export function getLocale(){return a}export function t(e,l){return i(e,l)}
@@ -1 +1 @@
1
- export function interpolate(n,t){return t?n.replace(/\{(\w+)\}/g,(e,r)=>r in t?String(t[r]):e):n}export function makeT(n,t){return(e,r)=>interpolate(n[e]??t[e]??String(e),r)}
1
+ export function interpolate(t,r){return r?t.replace(/\{(\w+)\}/g,(n,e)=>e in r?String(r[e]):n):t}export function makeT(t,r){return(n,e)=>interpolate(t[n]??r[n]??String(n),e)}
@@ -1,11 +1,11 @@
1
- import{t as a}from"../i18n/index.js";export const WEAVE_BLOCK_START="<!-- weave:start -->",WEAVE_BLOCK_END="<!-- weave:end -->",WEAVE_MANAGED_HEADER="> This file is managed by [weave](https://github.com/zijing66/weave) \u2014 a coding-agent harness.";function r(e){return`# ${e}
1
+ import{t as r}from"../i18n/index.js";export const WEAVE_BLOCK_START="<!-- weave:start -->",WEAVE_BLOCK_END="<!-- weave:end -->",WEAVE_MANAGED_HEADER="> This file is managed by [weave](https://github.com/zijing66/weave) \u2014 a coding-agent harness.";function d(e){return`# ${e}
2
2
 
3
3
  > This file is managed by [weave](https://github.com/zijing66/weave) \u2014 a coding-agent harness.
4
4
  > Re-run \`weave init\` to regenerate.
5
5
 
6
6
  `}export function generateClaudeMdSection(e){const{template:n}=e;let t=`${WEAVE_BLOCK_START}
7
- `;return t+=a("claudemd.rules"),(n==="standard"||n==="full")&&(t+=a("claudemd.files")),n==="full"&&(t+=a("claudemd.security")),t+=a("claudemd.skills"),t+=`${WEAVE_BLOCK_END}
8
- `,t}export function generateClaudeMd(e){return r(e.projectName)+generateClaudeMdSection(e)}export function mergeClaudeMd(e,n){const t=e.indexOf(WEAVE_BLOCK_START),i=e.indexOf(WEAVE_BLOCK_END);return t!==-1&&i!==-1&&i>t?e.slice(0,t)+n.trimEnd()+e.slice(i+WEAVE_BLOCK_END.length):e.replace(/\s+$/,"")+`
7
+ `;return t+=r("claudemd.rules"),(n==="standard"||n==="full")&&(t+=r("claudemd.files")),n==="full"&&(t+=r("claudemd.security")),t+=r("claudemd.skills"),t+=`${WEAVE_BLOCK_END}
8
+ `,t}export function generateClaudeMd(e){return d(e.projectName)+generateClaudeMdSection(e)}export function mergeClaudeMd(e,n){const t=e.indexOf(WEAVE_BLOCK_START),a=e.indexOf(WEAVE_BLOCK_END);return t!==-1&&a!==-1&&a>t?e.slice(0,t)+n.trimEnd()+e.slice(a+WEAVE_BLOCK_END.length):e.replace(/\s+$/,"")+`
9
9
 
10
10
  `+n.trimEnd()+`
11
11
  `}
@@ -2,10 +2,11 @@ import { type InitOptions, type InitResult } from '@weavecode/core';
2
2
  import { type PromptPort } from './prompt.js';
3
3
  /**
4
4
  * init 编排器(图① InitOrchestrator,模板方法 executeInit):
5
- * 0 prepare(平台 / 组件 / PromptPort)→ 1 selected → 2 逐 harness runSurface
6
- * (InitPipeline final 骨架 1→2→3→4→5→6→6b→7)→ 8 指令文件 → 9 runtime config
7
- * → 10 嵌套 gitignore → 11 询问 commit init 生成物 → 12 汇总。表面步骤(1–7)
8
- * 的实现在 init/harnesses/ 下。`prompt` 可注入(测试用假实现驱动多选优先级)。
5
+ * 0 prepare(平台 / 组件 / PromptPort)→ 1 selected → 1.5/1.6 环境备置(安装
6
+ * 检测 + 信任预写)→ 2 逐 harness runSurface(InitPipeline final 骨架
7
+ * 1→2→3→4→5→6→6b→7)→ 8 指令文件 → 9 runtime config → 10 嵌套 gitignore
8
+ * → 11 询问 commit init 生成物 → 12 汇总。表面步骤(1–7)的实现在
9
+ * init/harnesses/ 下。`prompt` 可注入(测试用假实现驱动多选优先级)。
9
10
  */
10
11
  export declare function executeInit(options: InitOptions, promptOverride?: PromptPort): Promise<InitResult>;
11
12
  /**
@@ -1,6 +1,6 @@
1
- import m from"node:path";import{readFile as P,writeFile as f}from"node:fs/promises";import{detectPlatform as x,resolveComponents as B,DEFAULT_HOOKS as G,DEFAULT_MCP as H,HARNESS_DIRS as L,HARNESS_KEYS as V,ensureDir as D,fileExists as Y,logger as I}from"@weavecode/core";import{templateRegistry as b}from"@weavecode/templates";import{WEAVE_VERSION as K}from"@weavecode/server";import{generateClaudeMd as $,generateClaudeMdSection as q,mergeClaudeMd as J}from"./claudemd-gen.js";import{ensureInstructionLink as W}from"./instruction-link.js";import{buildInitRegistry as z}from"./wiring.js";import{createPromptPort as Q}from"./prompt.js";import{commitInitOutputs as X,findGitRepoRoot as Z}from"./git-commit.js";import{t as N}from"../i18n/index.js";const tt={minimal:"minimal",default:"standard",full:"full"},S=["claude"];async function et(t,r){if(t.harnesses&&t.harnesses.length>0)return[...t.harnesses];if(!t.interactive)return[...S];if(!process.stdin.isTTY||!process.stdout.isTTY)return[...S];const s=await r.multiselect(V,S);return s.length>0?[...s]:[...S]}export async function executeInit(t,r){const{targetDir:s,force:u,interactive:g,preset:y}=t,j=x(),a={directories:[],files:[]},C=[],E=[],T=[],v=[],M=[],n=B(y,t.components),e={...G,...t.hooks},U={...H,...t.mcp},k=r??Q(g);g||I.dim(N("init.nonInteractive"));const h=await et(t,k),F={...t,platform:j},_=z();for(const o of h){const p=new(_.initFor(o))(F);await p.runSurface();const i=p.records;a.directories.push(...i.created.directories),a.files.push(...i.created.files),C.push(...i.skipped),E.push(...i.merged),T.push(...i.updated),v.push(...i.removed)}if(n.claudeMd||n.agentsMd){const o=await W(s,{force:u,interactive:g,confirm:(d,l)=>k.confirm(d,l)});o.backedUpTo&&(I.dim(N("init.backedUp",{path:o.backedUpTo})),a.files.push(o.backedUpTo));const p=tt[y]??"standard",i=m.basename(s),c=m.join(s,o.realFile),w=$({template:p,projectName:i});if(u)await f(c,w,"utf-8"),a.files.push(c);else{const d=await O(c);if(d===null)await f(c,w,"utf-8"),a.files.push(c);else{const l=q({template:p,projectName:i});await f(c,J(d,l),"utf-8"),E.push(c)}}}{const o=m.join(s,".weave");await D(o),a.directories.push(o);const p={initVersion:K,initTimestamp:new Date().toISOString(),preset:y,harnesses:h,components:{settings:n.settings,skills:n.skills,commands:n.commands,agents:n.agents,helpers:n.helpers,mcp:n.mcp,claudeMd:n.claudeMd,agentsMd:n.agentsMd},hooks:e,mcp:U},i=m.join(o,"config.yaml"),c=Object.entries(p).map(([d,l])=>`${d}: ${typeof l=="object"?JSON.stringify(l):l}`).join(`
1
+ import u from"node:path";import{readFile as A,writeFile as g}from"node:fs/promises";import{detectPlatform as _,resolveComponents as H,DEFAULT_HOOKS as L,DEFAULT_MCP as B,HARNESS_DIRS as G,HARNESS_KEYS as V,ensureDir as D,fileExists as Y,logger as S}from"@weavecode/core";import{templateRegistry as b}from"@weavecode/templates";import{WEAVE_VERSION as K}from"@weavecode/server";import{generateClaudeMd as $,generateClaudeMdSection as q,mergeClaudeMd as J}from"./claudemd-gen.js";import{ensureInstructionLink as W}from"./instruction-link.js";import{buildInitRegistry as z}from"./wiring.js";import{createPromptPort as Q}from"./prompt.js";import{commitInitOutputs as X,findGitRepoRoot as Z}from"./git-commit.js";import{ensureHarnessInstalled as ee,prewriteTrust as te}from"./provision.js";import{t as N}from"../i18n/index.js";const se={minimal:"minimal",default:"standard",full:"full"},y=["claude"];async function ne(e,a){if(e.harnesses&&e.harnesses.length>0)return[...e.harnesses];if(!e.interactive)return[...y];if(!process.stdin.isTTY||!process.stdout.isTTY)return[...y];const n=await a.multiselect(V,y);return n.length>0?[...n]:[...y]}export async function executeInit(e,a){const{targetDir:n,force:p,interactive:h,preset:T}=e,M=_(),o={directories:[],files:[]},j=[],k=[],C=[],I=[],R=[],r=H(T,e.components),t={...L,...e.hooks},U={...B,...e.mcp},w=a??Q(h);h||S.dim(N("init.nonInteractive"));const f=await ne(e,w);try{await ee(f,w)}catch(s){S.warn(s.message)}try{await te(f,n)}catch(s){S.warn(s.message)}const O={...e,platform:M},v=z();for(const s of f){const l=new(v.initFor(s))(O);await l.runSurface();const i=l.records;o.directories.push(...i.created.directories),o.files.push(...i.created.files),j.push(...i.skipped),k.push(...i.merged),C.push(...i.updated),I.push(...i.removed)}if(r.claudeMd||r.agentsMd){const s=await W(n,{force:p,interactive:h,confirm:(d,m)=>w.confirm(d,m)});s.backedUpTo&&(S.dim(N("init.backedUp",{path:s.backedUpTo})),o.files.push(s.backedUpTo));const l=se[T]??"standard",i=u.basename(n),c=u.join(n,s.realFile),E=$({template:l,projectName:i});if(p)await g(c,E,"utf-8"),o.files.push(c);else{const d=await P(c);if(d===null)await g(c,E,"utf-8"),o.files.push(c);else{const m=q({template:l,projectName:i});await g(c,J(d,m),"utf-8"),k.push(c)}}}{const s=u.join(n,".weave");await D(s),o.directories.push(s);const l={initVersion:K,initTimestamp:new Date().toISOString(),preset:T,harnesses:f,components:{settings:r.settings,skills:r.skills,commands:r.commands,agents:r.agents,helpers:r.helpers,mcp:r.mcp,claudeMd:r.claudeMd,agentsMd:r.agentsMd},hooks:t,mcp:U},i=u.join(s,"config.yaml"),c=Object.entries(l).map(([d,m])=>`${d}: ${typeof m=="object"?JSON.stringify(m):m}`).join(`
2
2
  `)+`
3
- `,w=await Y(i);await f(i,c,"utf-8"),(w?T:a.files).push(i)}for(const o of h)await R(s,m.join(s,L[o].projectDir),a);await R(s,m.join(s,".weave"),a),await X({targetDir:s,interactive:g,selected:h,prompt:k});const A={skillsCount:b.getByCategory("skill").length,commandsCount:b.getByCategory("command").length,agentsCount:b.getByCategory("agent").length,hooksEnabled:[e.preToolUse,e.postToolUse,e.userPromptSubmit,e.sessionStart,e.stop,e.stopFailure,e.subagentStop,e.subagentStart,e.notification,e.postToolUseFailure,e.permissionRequest,e.permissionDenied,e.preCompact,e.sessionEnd,e.preModelSwitch].filter(Boolean).length};return{success:M.length===0,platform:j,created:a,skipped:C,merged:E,updated:T,removed:v,errors:M,summary:A}}export const NESTED_GITIGNORE=`# weave \u2014 generated; do not commit
3
+ `,E=await Y(i);await g(i,c,"utf-8"),(E?C:o.files).push(i)}for(const s of f)await F(n,u.join(n,G[s].projectDir),o);await F(n,u.join(n,".weave"),o),await X({targetDir:n,interactive:h,selected:f,prompt:w});const x={skillsCount:b.getByCategory("skill").length,commandsCount:b.getByCategory("command").length,agentsCount:b.getByCategory("agent").length,hooksEnabled:[t.preToolUse,t.postToolUse,t.userPromptSubmit,t.sessionStart,t.stop,t.stopFailure,t.subagentStop,t.subagentStart,t.notification,t.postToolUseFailure,t.permissionRequest,t.permissionDenied,t.preCompact,t.sessionEnd,t.preModelSwitch].filter(Boolean).length};return{success:R.length===0,platform:M,created:o,skipped:j,merged:k,updated:C,removed:I,errors:R,summary:x}}export const NESTED_GITIGNORE=`# weave \u2014 generated; do not commit
4
4
  *
5
5
  !.gitignore
6
- `;async function R(t,r,s){if(!await Z(t))return;const u=m.join(r,".gitignore");await O(u)===null&&(await D(r),await f(u,NESTED_GITIGNORE,"utf-8"),s.files.push(u))}async function O(t){try{return await P(t,"utf-8")}catch(r){if(st(r))return null;throw r}}function st(t){return typeof t=="object"&&t!==null&&t.code==="ENOENT"}
6
+ `;async function F(e,a,n){if(!await Z(e))return;const p=u.join(a,".gitignore");await P(p)===null&&(await D(a),await g(p,NESTED_GITIGNORE,"utf-8"),n.files.push(p))}async function P(e){try{return await A(e,"utf-8")}catch(a){if(ie(a))return null;throw a}}function ie(e){return typeof e=="object"&&e!==null&&e.code==="ENOENT"}
@@ -1,2 +1,2 @@
1
- import f from"node:path";import{execFile as y}from"node:child_process";import{promisify as S}from"node:util";import{lstat as E,stat as I}from"node:fs/promises";import{HARNESS_DIRS as T,INSTRUCTION_FILES as j,logger as c}from"@weavecode/core";import{t as s}from"../i18n/index.js";export async function findGitRepoRoot(i){let r=f.resolve(i);for(;;){try{return(await I(f.join(r,".git"))).isDirectory()?r:null}catch{}const o=f.dirname(r);if(o===r)return null;r=o}}const v=S(y);export const defaultGitExec=async(i,r,o)=>{try{const{stdout:e,stderr:t}=await v(i,r,{cwd:o.cwd,windowsHide:!0,timeout:1e4,maxBuffer:1048576});return{stdout:String(e),stderr:String(t),code:0}}catch(e){const t=e;if(typeof t.code=="number")return{stdout:String(t.stdout??""),stderr:String(t.stderr??""),code:t.code};throw e}};export async function collectCommitPaths(i,r){const o=[...j,".mcp.json",...r.map(t=>T[t].projectDir),".weave"],e=[];for(const t of o)try{await E(f.join(i,t)),e.includes(t)||e.push(t)}catch{}return e}export const COMMIT_MESSAGE="chore: weave init \u751F\u6210\u521D\u59CB\u5316\u4EA7\u7269";export async function commitInitOutputs(i){try{return await D(i)}catch(r){return c.warn(s("init.commit.failed",{error:r instanceof Error?r.message:String(r)})),{status:"failed"}}}async function D({targetDir:i,interactive:r,selected:o,prompt:e,execGit:t=defaultGitExec}){if(!await findGitRepoRoot(i))return{status:"not-repo"};if(!r||!process.stdin.isTTY||!process.stdout.isTTY)return{status:"skipped"};const n=await t("git",["diff","--cached","--quiet"],{cwd:i});if(n.code!==0){if(n.code===1)return c.dim(s("init.commit.preStaged")),{status:"skipped"};throw new Error(n.stderr.trim()||`git diff --cached exited ${n.code}`)}const a=await collectCommitPaths(i,o);if(a.length===0)return{status:"no-changes"};const d=await t("git",["status","--porcelain","--",...a],{cwd:i});if(d.code!==0)throw new Error(d.stderr.trim()||`git status exited ${d.code}`);if(!d.stdout.trim())return{status:"no-changes"};const x=s("init.commit.detail",{paths:a.join(", ")});if(!await e.confirm(s("init.commit.question"),x))return{status:"declined"};const w=[];for(const l of a)(await t("git",["add","--",l],{cwd:i})).code!==0&&w.push(l);w.length>0&&c.warn(s("init.commit.pathIgnored",{paths:w.join(", ")}));const u=await t("git",["diff","--cached","--quiet"],{cwd:i});if(u.code===0)return c.warn(s("init.commit.failed",{error:"nothing staged after git add"})),{status:"no-changes"};if(u.code!==1)throw new Error(u.stderr.trim()||`git diff --cached exited ${u.code}`);const p=(await t("git",["diff","--cached","--name-only"],{cwd:i})).stdout.split(`
2
- `).filter(Boolean).length,m=await t("git",["commit","-m",COMMIT_MESSAGE],{cwd:i});if(m.code!==0)throw new Error(m.stderr.trim()||m.stdout.trim()||`git commit exited ${m.code}`);const g=await t("git",["rev-parse","--short","HEAD"],{cwd:i}),h=g.code===0?g.stdout.trim():"";return c.success(s("init.commit.done",{sha:h,count:p})),{status:"committed",sha:h,count:p}}
1
+ import f from"node:path";import{execFile as S}from"node:child_process";import{promisify as E}from"node:util";import{lstat as x,stat as I}from"node:fs/promises";import{HARNESS_DIRS as T,INSTRUCTION_FILES as j,logger as n}from"@weavecode/core";import{t as s}from"../i18n/index.js";export async function findGitRepoRoot(o){let i=f.resolve(o);for(;;){try{return(await I(f.join(i,".git"))).isDirectory()?i:null}catch{}const e=f.dirname(i);if(e===i)return null;i=e}}const R=E(S);export const defaultGitExec=async(o,i,e)=>{try{const{stdout:r,stderr:t}=await R(o,i,{cwd:e.cwd,windowsHide:!0,timeout:1e4,maxBuffer:1048576});return{stdout:String(r),stderr:String(t),code:0}}catch(r){const t=r;if(typeof t.code=="number")return{stdout:String(t.stdout??""),stderr:String(t.stderr??""),code:t.code};throw r}};export async function collectCommitPaths(o,i){const e=[...j,".mcp.json",...i.map(t=>T[t].projectDir),".weave"],r=[];for(const t of e)try{await x(f.join(o,t)),r.includes(t)||r.push(t)}catch{}return r}export const COMMIT_MESSAGE="chore: weave init \u751F\u6210\u521D\u59CB\u5316\u4EA7\u7269";export async function commitInitOutputs(o){try{return await v(o)}catch(i){return n.warn(s("init.commit.failed",{error:i instanceof Error?i.message:String(i)})),{status:"failed"}}}async function v({targetDir:o,interactive:i,selected:e,prompt:r,execGit:t=defaultGitExec}){if(!await findGitRepoRoot(o))return{status:"not-repo"};if(!i||!process.stdin.isTTY||!process.stdout.isTTY)return{status:"skipped"};const c=await t("git",["diff","--cached","--quiet"],{cwd:o});if(c.code!==0){if(c.code===1)return n.dim(s("init.commit.preStaged")),{status:"skipped"};throw new Error(c.stderr.trim()||`git diff --cached exited ${c.code}`)}const d=await collectCommitPaths(o,e);if(d.length===0)return{status:"no-changes"};const a=await t("git",["status","--porcelain","--",...d],{cwd:o});if(a.code!==0)throw new Error(a.stderr.trim()||`git status exited ${a.code}`);if(!a.stdout.trim())return{status:"no-changes"};const y=s("init.commit.detail",{paths:d.join(", ")});if(!await r.confirm(s("init.commit.question"),y))return{status:"declined"};const p=[];for(const g of d)(await t("git",["add","--",g],{cwd:o})).code!==0&&p.push(g);p.length>0&&n.warn(s("init.commit.pathIgnored",{paths:p.join(", ")}));const m=await t("git",["diff","--cached","--quiet"],{cwd:o});if(m.code===0)return n.warn(s("init.commit.failed",{error:"nothing staged after git add"})),{status:"no-changes"};if(m.code!==1)throw new Error(m.stderr.trim()||`git diff --cached exited ${m.code}`);const w=(await t("git",["diff","--cached","--name-only"],{cwd:o})).stdout.split(`
2
+ `).filter(Boolean).length,u=await t("git",["commit","-m",COMMIT_MESSAGE],{cwd:o});if(u.code!==0)throw new Error(u.stderr.trim()||u.stdout.trim()||`git commit exited ${u.code}`);const h=await t("git",["rev-parse","--short","HEAD"],{cwd:o}),l=h.code===0?h.stdout.trim():"";return n.success(s("init.commit.done",{sha:l,count:w})),{status:"committed",sha:l,count:w}}