@weavecode/weave 0.1.5 → 0.1.7
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.
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/encodeurl/README.md +14 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/encodeurl/index.js +5 -10
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/encodeurl/package.json +10 -6
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/CHANGELOG.md +42 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/README.md +38 -10
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/dist/qs.js +18 -18
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/lib/parse.js +16 -4
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/lib/utils.js +13 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express/node_modules/qs/package.json +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express-rate-limit/dist/index.cjs +6 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express-rate-limit/dist/index.mjs +6 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/express-rate-limit/package.json +10 -10
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwt/decrypt.d.ts +3 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwt/unsecured.d.ts +2 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwt/verify.d.ts +3 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/types.d.ts +8 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/util/decode_jwt.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwks/remote.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/package.json +1 -1
- package/node_modules/@weavecode/cli/dist/cli.js +4 -4
- package/node_modules/@weavecode/cli/dist/commands/chpass.js +1 -1
- package/node_modules/@weavecode/cli/dist/commands/daemon-auth.js +1 -1
- package/node_modules/@weavecode/cli/dist/commands/daemon.d.ts +2 -0
- package/node_modules/@weavecode/cli/dist/commands/daemon.js +2 -2
- package/node_modules/@weavecode/cli/dist/commands/dashboard.js +2 -2
- package/node_modules/@weavecode/cli/dist/commands/doctor.js +1 -1
- package/node_modules/@weavecode/cli/dist/commands/init.js +1 -1
- package/node_modules/@weavecode/cli/dist/commands/msg.js +2 -2
- package/node_modules/@weavecode/cli/dist/commands/scan.js +1 -1
- package/node_modules/@weavecode/cli/dist/commands/status.js +2 -2
- package/node_modules/@weavecode/cli/dist/commands/uninstall.js +1 -1
- package/node_modules/@weavecode/cli/dist/i18n/dict/en.js +5 -5
- package/node_modules/@weavecode/cli/dist/i18n/dict/zh.d.ts +6 -1
- package/node_modules/@weavecode/cli/dist/i18n/dict/zh.js +5 -5
- package/node_modules/@weavecode/cli/dist/i18n/index.js +1 -1
- package/node_modules/@weavecode/cli/dist/i18n/t.js +1 -1
- package/node_modules/@weavecode/cli/dist/init/claudemd-gen.js +3 -3
- package/node_modules/@weavecode/cli/dist/init/executor.js +3 -3
- package/node_modules/@weavecode/cli/dist/init/git-commit.js +2 -2
- package/node_modules/@weavecode/cli/dist/init/harnesses/claude.js +7 -7
- package/node_modules/@weavecode/cli/dist/init/harnesses/codex.js +1 -1
- package/node_modules/@weavecode/cli/dist/init/instruction-link.js +1 -1
- package/node_modules/@weavecode/cli/dist/init/plugin-templates.js +1 -1
- package/node_modules/@weavecode/cli/dist/init/prompt.js +4 -4
- package/node_modules/@weavecode/cli/dist/init/provision.js +1 -1
- package/node_modules/@weavecode/cli/dist/init/uninstall.js +6 -6
- package/node_modules/@weavecode/cli/dist/init/wiring.js +1 -1
- package/node_modules/@weavecode/cli/dist/parser.js +1 -1
- package/node_modules/@weavecode/cli/dist/statusline/ansi.js +1 -1
- package/node_modules/@weavecode/cli/dist/statusline/mock-input.js +1 -1
- package/node_modules/@weavecode/cli/dist/statusline/preview.js +2 -2
- package/node_modules/@weavecode/cli/package.json +5 -5
- package/node_modules/@weavecode/core/dist/harness-checks.js +1 -1
- package/node_modules/@weavecode/core/dist/harness.d.ts +25 -0
- package/node_modules/@weavecode/core/dist/harness.js +1 -1
- package/node_modules/@weavecode/core/dist/index.d.ts +1 -1
- package/node_modules/@weavecode/core/dist/index.js +1 -1
- package/node_modules/@weavecode/core/dist/platform.js +1 -1
- package/node_modules/@weavecode/core/dist/types.js +1 -1
- package/node_modules/@weavecode/core/dist/utils/fs.js +1 -1
- package/node_modules/@weavecode/core/dist/utils/logger.js +1 -1
- package/node_modules/@weavecode/core/package.json +1 -1
- package/node_modules/@weavecode/harness/dist/claude/assets.js +4 -4
- package/node_modules/@weavecode/harness/dist/claude/capture.js +9 -9
- package/node_modules/@weavecode/harness/dist/claude/commands.d.ts +3 -0
- package/node_modules/@weavecode/harness/dist/claude/commands.js +2 -3
- package/node_modules/@weavecode/harness/dist/claude/config.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/detect.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/edits.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/event-source.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/images.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/index.d.ts +1 -0
- package/node_modules/@weavecode/harness/dist/claude/index.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/liveness.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/mcp-gen.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/messaging.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/model-aliases.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/narration.d.ts +0 -11
- package/node_modules/@weavecode/harness/dist/claude/narration.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/peers.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/plan.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/plugins.js +4 -4
- package/node_modules/@weavecode/harness/dist/claude/prompt-inbox.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/prompt.js +3 -3
- package/node_modules/@weavecode/harness/dist/claude/questions.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/resume.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/rewind.d.ts +8 -0
- package/node_modules/@weavecode/harness/dist/claude/rewind.js +1 -0
- package/node_modules/@weavecode/harness/dist/claude/settings-gen.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/side-question.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/statusline/generator.js +36 -15
- package/node_modules/@weavecode/harness/dist/claude/statusline/git-cache.js +1 -1
- package/node_modules/@weavecode/harness/dist/claude/statusline/surface.js +2 -2
- package/node_modules/@weavecode/harness/dist/claude/transcript-cursor.d.ts +26 -0
- package/node_modules/@weavecode/harness/dist/claude/transcript-cursor.js +2 -0
- package/node_modules/@weavecode/harness/dist/claude/transcript.js +7 -7
- package/node_modules/@weavecode/harness/dist/codex/assets.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/capture.js +2 -2
- package/node_modules/@weavecode/harness/dist/codex/commands.js +4 -4
- package/node_modules/@weavecode/harness/dist/codex/config.js +2 -2
- package/node_modules/@weavecode/harness/dist/codex/detect.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/event-source.js +2 -2
- package/node_modules/@weavecode/harness/dist/codex/images.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/index.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/liveness.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/mcp.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/messaging.js +2 -2
- package/node_modules/@weavecode/harness/dist/codex/narration.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/plugin-state.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/plugins.js +3 -3
- package/node_modules/@weavecode/harness/dist/codex/provision.js +1 -1
- package/node_modules/@weavecode/harness/dist/codex/questions.js +2 -2
- package/node_modules/@weavecode/harness/dist/codex/rollout.js +5 -5
- package/node_modules/@weavecode/harness/dist/codex/side-question.js +4 -4
- package/node_modules/@weavecode/harness/dist/codex/titles.js +4 -4
- package/node_modules/@weavecode/harness/dist/codex/toml.js +13 -13
- package/node_modules/@weavecode/harness/dist/codex/transcript.js +2 -2
- package/node_modules/@weavecode/harness/dist/driver.d.ts +56 -1
- package/node_modules/@weavecode/harness/dist/driver.js +1 -1
- package/node_modules/@weavecode/harness/dist/init/generated.js +2 -2
- package/node_modules/@weavecode/harness/dist/init/pipeline.js +1 -1
- package/node_modules/@weavecode/harness/dist/registry-wiring.js +1 -1
- package/node_modules/@weavecode/harness/dist/shared/install-link.js +1 -1
- package/node_modules/@weavecode/harness/dist/shared/json-cap.js +1 -1
- package/node_modules/@weavecode/harness/package.json +2 -2
- package/node_modules/@weavecode/server/dist/config/profiles.d.ts +19 -13
- package/node_modules/@weavecode/server/dist/config/profiles.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/config-routes.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/dev-entry.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/entry.js +7 -1
- package/node_modules/@weavecode/server/dist/daemon/hooks-routes.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/opener/launch.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/opener.d.ts +2 -0
- package/node_modules/@weavecode/server/dist/daemon/opener.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/session-control.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/session-insights.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/uploads.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/visualizations.d.ts +3 -0
- package/node_modules/@weavecode/server/dist/daemon/routes/visualizations.js +1 -0
- package/node_modules/@weavecode/server/dist/daemon/server.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/session-open.d.ts +17 -0
- package/node_modules/@weavecode/server/dist/daemon/session-open.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/session-probe.d.ts +5 -4
- package/node_modules/@weavecode/server/dist/daemon/start.js +1 -1
- package/node_modules/@weavecode/server/dist/db/db.js +6 -2
- package/node_modules/@weavecode/server/dist/hooks/bus.d.ts +3 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/ack-gate.d.ts +12 -6
- package/node_modules/@weavecode/server/dist/hooks/delivery/ack-gate.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/channels.d.ts +3 -3
- package/node_modules/@weavecode/server/dist/hooks/delivery/channels.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/keys.d.ts +19 -9
- package/node_modules/@weavecode/server/dist/hooks/delivery/keys.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/relay.d.ts +2 -2
- package/node_modules/@weavecode/server/dist/hooks/delivery/relay.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/views.d.ts +5 -1
- package/node_modules/@weavecode/server/dist/hooks/delivery/views.js +1 -1
- package/node_modules/@weavecode/server/dist/hooks/message-deliverer.d.ts +45 -38
- package/node_modules/@weavecode/server/dist/hooks/message-deliverer.js +5 -3
- package/node_modules/@weavecode/server/dist/repositories/hook-events.d.ts +1 -1
- package/node_modules/@weavecode/server/dist/repositories/hook-events.js +4 -4
- package/node_modules/@weavecode/server/dist/repositories/sessions.d.ts +11 -1
- package/node_modules/@weavecode/server/dist/repositories/sessions.js +4 -2
- package/node_modules/@weavecode/server/dist/repositories/uploads.d.ts +14 -4
- package/node_modules/@weavecode/server/dist/repositories/uploads.js +11 -11
- package/node_modules/@weavecode/server/dist/surfaces.d.ts +3 -1
- package/node_modules/@weavecode/server/dist/surfaces.js +1 -1
- package/node_modules/@weavecode/server/package.json +4 -4
- package/node_modules/@weavecode/server/web/dist/assets/{abnfDiagram-WEYOIA3C-C-f9WfD3.js → abnfDiagram-WEYOIA3C-DDeQkTf5.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{arc-D62qulAD.js → arc-CRZTRyjb.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{architectureDiagram-ZHVYKT53-B6ZJRpcL.js → architectureDiagram-ZHVYKT53-Dj54DE3O.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{blockDiagram-RJAE7QA3-DOtDFeiT.js → blockDiagram-RJAE7QA3-BIH8mSIZ.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{c4Diagram-XDPPPE54-DWn3ng8X.js → c4Diagram-XDPPPE54-5YoKWFOD.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/channel-5VM93AJ8.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-2E7WHVMD-B5IIc9cn.js → chunk-2E7WHVMD-B653kMXt.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-2Q5K7J3B-BUU9Zvt8.js → chunk-2Q5K7J3B-f_A4_eDz.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-4EMNKR2T-CqEGIghP.js → chunk-4EMNKR2T-v5j5qNGj.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-55XCU76K-D36o_E2b.js → chunk-55XCU76K-CgEqeP7j.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-5VM5RSS4-sxws8ERh.js → chunk-5VM5RSS4-BeROhLXN.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-JWPE2WC7-CJo_rEEb.js → chunk-JWPE2WC7-D6dXb_jr.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-VQ5W62QI-9UlLCpsb.js → chunk-VQ5W62QI-CnHdSEMi.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-XXDRQBXY-CX9CPbWb.js → chunk-XXDRQBXY-BkG_e6PE.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-ZCHMQSOR-DwEfdZcF.js → chunk-ZCHMQSOR-DxR-fxzs.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{classDiagram-v2-4MYWR3UA-CFCmIyt8.js → classDiagram-v2-4MYWR3UA-DQe1b_k8.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{cose-bilkent-JH36ORCC-qWXeXJTn.js → cose-bilkent-JH36ORCC-DThrA8S5.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{cynefin-EF2NZ3EQ-CXabWQxz.js → cynefin-EF2NZ3EQ-OZotFKUu.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{cynefinDiagram-WF24UDRP-Bzpj8Qbj.js → cynefinDiagram-WF24UDRP-DJjq2hfT.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{dagre-NK4GIZVX-CXsL8t30.js → dagre-NK4GIZVX-C2vH93HT.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-CBK3MWTC-xfR-zlAD.js → diagram-CBK3MWTC-DrF_ScM-.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-I5XIIV2D-BjMqEsXr.js → diagram-I5XIIV2D-D1qoUJ4t.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-ODIL2UCW-QZpf8KhT.js → diagram-ODIL2UCW-D9A6W8oB.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-PFBEJUXE-Cw1ESWft.js → diagram-PFBEJUXE-PeI-eyu2.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-RJA3I4VV-CAy2RYYZ.js → diagram-RJA3I4VV-DITY0Rd8.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-TYUNFSNR-B09WciWt.js → diagram-TYUNFSNR-D5KieEw5.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{ebnfDiagram-V4P3TTPT-DuLmHG0U.js → ebnfDiagram-V4P3TTPT-DDylK-gz.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{elk-QONTBCTQ--zzx0EVP.js → elk-QONTBCTQ-D3xrVg0U.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{erDiagram-KYQIGQAA-BPDjG5vB.js → erDiagram-KYQIGQAA-y_V1cor7.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{flowDiagram-IUGLLWBU-DtE2M9a_.js → flowDiagram-IUGLLWBU-BJ8Z0MkF.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{ganttDiagram-R7GPNTJY-B-4AaWVa.js → ganttDiagram-R7GPNTJY-C0q-CS1T.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{gitGraphDiagram-PDYL7XHY-CYj5FGYx.js → gitGraphDiagram-PDYL7XHY-BYTComiB.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/index-BKxAxaVG.js +1091 -0
- package/node_modules/@weavecode/server/web/dist/assets/index-C0Sd4MH7.css +11 -0
- package/node_modules/@weavecode/server/web/dist/assets/{infoDiagram-MVDRKAX5-DHYSDj-3.js → infoDiagram-MVDRKAX5-DtixgjLP.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{ishikawaDiagram-HPEHV2GE-CumAEBoU.js → ishikawaDiagram-HPEHV2GE-ChEnND76.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{journeyDiagram-BOSHW7O7-ES3O3X05.js → journeyDiagram-BOSHW7O7-DHcNtpYF.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{kanban-definition-FNSA4HC5-BMIrf0d9.js → kanban-definition-FNSA4HC5-Dft7qpW5.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{linear-DEZ5FO1r.js → linear-DEo11t-X.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{mermaid.core-D7gm2szA.js → mermaid.core-D_Dp_Kl2.js} +4 -4
- package/node_modules/@weavecode/server/web/dist/assets/{mindmap-definition-6OY57UG3-BBQP8lyN.js → mindmap-definition-6OY57UG3-CM6OAd_-.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{pegDiagram-ECIUJNBX-DzkKsqmg.js → pegDiagram-ECIUJNBX-_QkY0h8Q.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{pieDiagram-GNMPY74T-zR3q7Qs1.js → pieDiagram-GNMPY74T-ZGr5vtDj.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{quadrantDiagram-D57K4MC3-B4xuIsMW.js → quadrantDiagram-D57K4MC3-D8pQ_PU2.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{railroadDiagram-Y72NRBL7-D2I52m9D.js → railroadDiagram-Y72NRBL7-DUIo-WmA.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{requirementDiagram-EQYSW5RA-aJ1KfKj2.js → requirementDiagram-EQYSW5RA-C90DU5Ny.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{sankeyDiagram-SY24JHO5-CEq16Ecf.js → sankeyDiagram-SY24JHO5-B_poYGgJ.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{sequenceDiagram-BLEHNHQU-Bc66KG9f.js → sequenceDiagram-BLEHNHQU-DDW7b2Dn.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{sizeCapture-INFHLROL-Ddizw_UG.js → sizeCapture-INFHLROL-CmKoqX6K.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{stateDiagram-v2-A6IESKWZ-C1eVtEX9.js → stateDiagram-v2-A6IESKWZ-CkVMAyxG.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{swimlanes-B3ENRKFQ-CCd_KlpZ.js → swimlanes-B3ENRKFQ-Dm_Omzky.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/swimlanesDiagram-AYQRV4AK-Bjj8ZA4d.js +8 -0
- package/node_modules/@weavecode/server/web/dist/assets/{timeline-definition-JXYKGLGB-DqpBhIII.js → timeline-definition-JXYKGLGB-DnhkRGLb.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{usecaseDiagram-WPOLBNNX-bX_jNjSt.js → usecaseDiagram-WPOLBNNX-_TdIjC6Z.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{vennDiagram-Q3Y3IDCW-D07CUHl3.js → vennDiagram-Q3Y3IDCW-FzgsymXB.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{wardleyDiagram-IVAIDKWA-CZ5ovcWa.js → wardleyDiagram-IVAIDKWA-BwqimStC.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{xychartDiagram-4URNHDU4-CBTh52hU.js → xychartDiagram-4URNHDU4-CFjjVPIV.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/icons/apple-touch-icon.png +0 -0
- package/node_modules/@weavecode/server/web/dist/icons/icon-192.png +0 -0
- package/node_modules/@weavecode/server/web/dist/icons/icon-512.png +0 -0
- package/node_modules/@weavecode/server/web/dist/icons/icon-maskable-512.png +0 -0
- package/node_modules/@weavecode/server/web/dist/index.html +11 -2
- package/node_modules/@weavecode/server/web/dist/manifest.webmanifest +16 -0
- package/node_modules/@weavecode/server/web/dist/sw.js +14 -12
- package/node_modules/@weavecode/templates/package.json +2 -2
- package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/tslib/README.md +3 -8
- package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/tslib/package.json +1 -1
- package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/tslib/tslib.d.ts +4 -2
- package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/tslib/tslib.es6.js +10 -1
- package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/tslib/tslib.es6.mjs +10 -1
- package/node_modules/selfsigned/node_modules/@peculiar/x509/node_modules/tslib/tslib.js +10 -1
- package/node_modules/selfsigned/node_modules/pkijs/node_modules/tslib/README.md +3 -8
- package/node_modules/selfsigned/node_modules/pkijs/node_modules/tslib/package.json +1 -1
- package/node_modules/selfsigned/node_modules/pkijs/node_modules/tslib/tslib.d.ts +4 -2
- package/node_modules/selfsigned/node_modules/pkijs/node_modules/tslib/tslib.es6.js +10 -1
- package/node_modules/selfsigned/node_modules/pkijs/node_modules/tslib/tslib.es6.mjs +10 -1
- package/node_modules/selfsigned/node_modules/pkijs/node_modules/tslib/tslib.js +10 -1
- package/package.json +6 -6
- package/node_modules/@weavecode/server/web/dist/assets/channel-CjSr3Zfg.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/index-BGdTLG4q.js +0 -1031
- package/node_modules/@weavecode/server/web/dist/assets/index-CEpJpR7P.css +0 -11
- package/node_modules/@weavecode/server/web/dist/assets/swimlanesDiagram-AYQRV4AK-yIifcHaR.js +0 -8
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import{HARNESS_DIRS as
|
|
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.startUnconfirmed":"\u5B88\u62A4\u8FDB\u7A0B\u5728 {port} \u7AEF\u53E3\u8FDF\u8FDF\u672A\u5E94\u7B54\u2014\u2014\u53EF\u80FD\u542F\u52A8\u5931\u8D25\u4E86\uFF08\u8BE6\u89C1\u6570\u636E\u76EE\u5F55 cache/logs/daemon-boot.log\uFF09","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
|
|
5
|
-
`,"out.doctor.diagFailed":"\u6295\u9012\u8BCA\u65AD\u4E0D\u53EF\u7528\uFF08{error}\uFF09\u2014\u2014daemon \u62D2\u7B54\u3001\u4EE4\u724C\u4E0D\u5BF9\uFF0C\u6216 daemon \u7248\u672C\u8F83\u65E7\uFF08\u6CA1\u6709\u8FD9\u6761\u8DEF\u7531\uFF09\u3002","out.doctor.diagDaemon":"\u5B88\u62A4\u8FDB\u7A0B","out.doctor.diagDaemonValue":"v{version} \xB7 {platform} \xB7 \u7EC8\u7AEF preset {preset}{channel}","out.doctor.diagChannelOn":"\uFF08\u6709\u6587\u672C\u6CE8\u5165\u901A\u9053\uFF09","out.doctor.diagChannelOff":"\uFF08\u65E0\u6587\u672C\u6CE8\u5165\u901A\u9053\uFF09","out.doctor.diagScript":"\u91C7\u96C6\u811A\u672C","out.doctor.diagScriptNone":"\u672A\u5B89\u88C5\u2014\u2014\u6CA1\u6709 weave \u751F\u6210\u7684 hook \u811A\u672C\uFF08\u8DD1 `weave init`\uFF09","out.doctor.diagScriptNotOwned":"{source} \u6863\u811A\u672C\u4E0D\u662F weave \u751F\u6210\u7684\uFF08weave \u65E2\u4E0D\u5237\u65B0\u4E5F\u4E0D\u8BA4\uFF1B`weave init --force` \u53EF\u8986\u76D6\uFF09","out.doctor.diagScriptValue":"{harness} \xB7 {source} \u6863 \xB7 \u7248\u672C {version} \xB7 \u51ED\u636E\u4E0A\u62A5 {inbox} \xB7 pane \u4E0A\u62A5 {pane}","out.doctor.diagSourceUser":"user","out.doctor.diagSourceProject":"project","out.doctor.diagSourceNone":"\u65E0","out.doctor.diagYes":"\u662F","out.doctor.diagNo":"\u5426","out.doctor.diagMissing":"\u2014","out.doctor.diagUnknownAlive":"\u5224\u4E0D\u52A8","out.doctor.diagUntitled":"\u65E0\u9898","out.doctor.diagNoSessions":"\u6CA1\u6709\u9700\u8981\u8BCA\u65AD\u7684\u4F1A\u8BDD\uFF08\u5F53\u524D\u6CA1\u6709\u6D3B\u7740\u7684\u4F1A\u8BDD\uFF09\u3002","out.doctor.diagReady":"\u53EF\u7528","out.doctor.diagUnavailable":"\u4E0D\u53EF\u7528\uFF08{reason}\uFF09","out.doctor.diagUnknown":"\u5224\u4E0D\u52A8\uFF08{reason}\uFF09","out.doctor.diagSession":"{id}\u300C{title}\u300D \u5B58\u6D3B {alive} \xB7 \u4E8B\u4EF6 {events} \xB7 \u672B\u6B21 {last}","out.doctor.diagChannels":"\u76F4\u6295 {inbox} \u961F\u5217 {queue} \u4E2D\u7EE7 {relay} \u7EC8\u7AEF {terminal}","out.doctor.diagQueue":"\u961F\u5217 {pending} \u6761 \xB7 \u6682\u505C\u95F8 {stalled}","out.doctor.diagHints":"\u4FEE\u6CD5\uFF1A{hints}","out.doctor.reason.noMechanism":"\u8BE5 harness \u6CA1\u6709\u8FD9\u4E2A\u673A\u5236","out.doctor.reason.noCredentials":"\u6CA1\u6709\u51ED\u636E","out.doctor.reason.authTokenRequired":"\u672C\u5E73\u53F0\u9700\u8981\u51ED\u636E\u4F46\u5BBF\u4E3B\u6CA1\u7ED9","out.doctor.reason.noPeerName":"\u6CE8\u518C\u8868\u91CC\u6CA1\u6709 peer name","out.doctor.reason.noBackend":"\u8BE5\u7EC8\u7AEF preset \u6CA1\u6709\u6587\u672C\u6CE8\u5165\u540E\u7AEF","out.doctor.reason.noPaneEnv":"\u6CA1\u4E0A\u62A5 pane \u5B9A\u4F4D","out.doctor.hint.noHookScript":"\u6CA1\u88C5 weave \u751F\u6210\u7684 hook \u811A\u672C \u2192 \u8DD1 `weave init`","out.doctor.hint.hookScriptNotWeave":"hook \u811A\u672C\u4E0D\u662F weave \u751F\u6210\u7684\uFF08weave \u4E0D\u5237\u65B0\u4E5F\u4E0D\u8BA4\uFF09\u2192 \u79FB\u8D70\u5B83\uFF0C\u6216 `weave init --force` \u8986\u76D6","out.doctor.hint.hookScriptStale":"hook \u811A\u672C\u662F\u65E7\u7248 weave \u751F\u6210\u7684\u3001\u4E0D\u4E0A\u62A5\u76F4\u6295\u51ED\u636E \u2192 \u91CD\u8DD1 `weave init` \u5237\u65B0\u811A\u672C\uFF0C\u518D\u91CD\u542F\u4F1A\u8BDD","out.doctor.hint.noEvents":"\u8FD9\u6761\u4F1A\u8BDD\u4E00\u6761 hook \u4E8B\u4EF6\u90FD\u6CA1\u6709\uFF08\u4F1A\u8BDD\u65E9\u4E8E init\uFF1F\u811A\u672C\u6CA1\u8DD1\u8FC7\uFF1F\uFF09","out.doctor.hint.noInboxCredentials":"\u811A\u672C\u80FD\u4E0A\u62A5\u3001\u4F46\u8FD9\u6761\u4F1A\u8BDD\u4ECE\u6CA1\u62A5\u8FC7\u51ED\u636E\uFF08\u5BBF\u4E3B\u6CA1\u7ED9 messaging socket env\uFF0C\u6216\u4F1A\u8BDD\u65E9\u4E8E\u811A\u672C\u66F4\u65B0\uFF09\u2192 \u91CD\u542F\u4F1A\u8BDD","out.doctor.hint.inboxTokenRequired":"\u672C\u5E73\u53F0\u76F4\u6295\u9700\u8981 token\uFF0C\u5BBF\u4E3B\u6CA1\u7ED9 messaging token env","out.doctor.hint.noPeerName":"\u8FD9\u6761\u4F1A\u8BDD\u5728\u6CE8\u518C\u8868\u91CC\u6CA1\u6709 peer name\u2014\u2014\u4E2D\u7EE7\u6309\u540D\u5B57\u5BFB\u5740\uFF0C\u6CA1\u540D\u5B57\u76F4\u63A5\u8DF3\u8FC7","out.doctor.hint.terminalNoBackend":"\u7EC8\u7AEF preset \u4E0D\u652F\u6301\u6587\u672C\u6CE8\u5165 \u2192 \u6362 wezterm \u624D\u6709\u5C42\u2461 \u515C\u5E95","out.doctor.hint.terminalNoPaneEnv":"\u6CA1\u4E0A\u62A5 pane \u5B9A\u4F4D\uFF08\u8BE5\u7EC8\u7AEF\u4E0D\u5BFC\u51FA WEZTERM_*\uFF09\u2192 \u53EA\u5269\u6807\u9898+cwd \u56DE\u843D","out.doctor.hint.notRunning":"\u4F1A\u8BDD\u8FDB\u7A0B\u5DF2\u4E0D\u5728\u8DD1\uFF08\u6D88\u606F\u843D failed/offline\uFF0C\u8FDE\u961F\u5217\u90FD\u4E0D\u8FDB\uFF09","out.doctor.hint.queued":"\u961F\u5217\u91CC\u8FD8\u6709\u79EF\u538B","out.doctor.hint.stalled":"\u6682\u505C\u95F8\u5DF2\u7F6E\uFF08\u672A\u56DE\u6267\u8D85\u7A97\u6216\u6295\u9012\u5931\u8D25\uFF09\u2192 \u91CD\u53D1\u3001\u6216\u7B49\u56DE\u6267\u89E3\u9664","out.dash.browserFailed":"\uFF08\u65E0\u6CD5\u81EA\u52A8\u542F\u52A8\u6D4F\u89C8\u5668\u2014\u2014\u8BF7\u624B\u52A8\u6253\u5F00\uFF09","out.dash.stopHint":"\u7A0D\u540E\u53EF\u7528 `weave daemon stop` \u505C\u6B62\u5B83\u3002","out.dash.noBundle":"Web \u8D44\u6E90\u5305\u5C1A\u672A\u6784\u5EFA\uFF0C\u5B88\u62A4\u8FDB\u7A0B\u6CA1\u6709\u53EF\u63D0\u4F9B\u7684\u5185\u5BB9\u3002","out.dash.buildHint":" \u53EF\u7528 `pnpm build:web` \u6784\u5EFA\uFF0C\u6216\u8FD0\u884C Vite \u5F00\u53D1\u670D\u52A1\u5668\uFF1A`pnpm dev:web`\uFF08http://localhost:9527\uFF09\u3002","out.dash.url":`
|
|
5
|
+
`,"out.doctor.diagFailed":"\u6295\u9012\u8BCA\u65AD\u4E0D\u53EF\u7528\uFF08{error}\uFF09\u2014\u2014daemon \u62D2\u7B54\u3001\u4EE4\u724C\u4E0D\u5BF9\uFF0C\u6216 daemon \u7248\u672C\u8F83\u65E7\uFF08\u6CA1\u6709\u8FD9\u6761\u8DEF\u7531\uFF09\u3002","out.doctor.diagDaemon":"\u5B88\u62A4\u8FDB\u7A0B","out.doctor.diagDaemonValue":"v{version} \xB7 {platform} \xB7 \u7EC8\u7AEF preset {preset}{channel}","out.doctor.diagChannelOn":"\uFF08\u6709\u6587\u672C\u6CE8\u5165\u901A\u9053\uFF09","out.doctor.diagChannelOff":"\uFF08\u65E0\u6587\u672C\u6CE8\u5165\u901A\u9053\uFF09","out.doctor.diagScript":"\u91C7\u96C6\u811A\u672C","out.doctor.diagScriptNone":"\u672A\u5B89\u88C5\u2014\u2014\u6CA1\u6709 weave \u751F\u6210\u7684 hook \u811A\u672C\uFF08\u8DD1 `weave init`\uFF09","out.doctor.diagScriptNotOwned":"{source} \u6863\u811A\u672C\u4E0D\u662F weave \u751F\u6210\u7684\uFF08weave \u65E2\u4E0D\u5237\u65B0\u4E5F\u4E0D\u8BA4\uFF1B`weave init --force` \u53EF\u8986\u76D6\uFF09","out.doctor.diagScriptValue":"{harness} \xB7 {source} \u6863 \xB7 \u7248\u672C {version} \xB7 \u51ED\u636E\u4E0A\u62A5 {inbox} \xB7 pane \u4E0A\u62A5 {pane}","out.doctor.diagSourceUser":"user","out.doctor.diagSourceProject":"project","out.doctor.diagSourceNone":"\u65E0","out.doctor.diagYes":"\u662F","out.doctor.diagNo":"\u5426","out.doctor.diagMissing":"\u2014","out.doctor.diagUnknownAlive":"\u5224\u4E0D\u52A8","out.doctor.diagUntitled":"\u65E0\u9898","out.doctor.diagNoSessions":"\u6CA1\u6709\u9700\u8981\u8BCA\u65AD\u7684\u4F1A\u8BDD\uFF08\u5F53\u524D\u6CA1\u6709\u6D3B\u7740\u7684\u4F1A\u8BDD\uFF09\u3002","out.doctor.diagReady":"\u53EF\u7528","out.doctor.diagUnavailable":"\u4E0D\u53EF\u7528\uFF08{reason}\uFF09","out.doctor.diagUnknown":"\u5224\u4E0D\u52A8\uFF08{reason}\uFF09","out.doctor.diagSession":"{id}\u300C{title}\u300D \u5B58\u6D3B {alive} \xB7 \u4E8B\u4EF6 {events} \xB7 \u672B\u6B21 {last}","out.doctor.diagChannels":"\u76F4\u6295 {inbox} \u961F\u5217 {queue} \u4E2D\u7EE7 {relay} \u7EC8\u7AEF {terminal}","out.doctor.diagQueue":"\u961F\u5217 {pending} \u6761 \xB7 \u6682\u505C\u95F8 {stalled}","out.doctor.diagHints":"\u4FEE\u6CD5\uFF1A{hints}","out.doctor.reason.noMechanism":"\u8BE5 harness \u6CA1\u6709\u8FD9\u4E2A\u673A\u5236","out.doctor.reason.noCredentials":"\u6CA1\u6709\u51ED\u636E","out.doctor.reason.authTokenRequired":"\u672C\u5E73\u53F0\u9700\u8981\u51ED\u636E\u4F46\u5BBF\u4E3B\u6CA1\u7ED9","out.doctor.reason.noPeerName":"\u6CE8\u518C\u8868\u91CC\u6CA1\u6709 peer name","out.doctor.reason.noBackend":"\u8BE5\u7EC8\u7AEF preset \u6CA1\u6709\u6587\u672C\u6CE8\u5165\u540E\u7AEF","out.doctor.reason.noPaneEnv":"\u6CA1\u4E0A\u62A5 pane \u5B9A\u4F4D","out.doctor.reason.paneEnvConflict":"pane \u5B9A\u4F4D\u88AB\u53E6\u4E00\u4F1A\u8BDD\u5360\u7740\uFF08fork \u7EE7\u627F\u540C\u4E00\u7EC8\u7AEF\uFF09","out.doctor.hint.noHookScript":"\u6CA1\u88C5 weave \u751F\u6210\u7684 hook \u811A\u672C \u2192 \u8DD1 `weave init`","out.doctor.hint.hookScriptNotWeave":"hook \u811A\u672C\u4E0D\u662F weave \u751F\u6210\u7684\uFF08weave \u4E0D\u5237\u65B0\u4E5F\u4E0D\u8BA4\uFF09\u2192 \u79FB\u8D70\u5B83\uFF0C\u6216 `weave init --force` \u8986\u76D6","out.doctor.hint.hookScriptStale":"hook \u811A\u672C\u662F\u65E7\u7248 weave \u751F\u6210\u7684\u3001\u4E0D\u4E0A\u62A5\u76F4\u6295\u51ED\u636E \u2192 \u91CD\u8DD1 `weave init` \u5237\u65B0\u811A\u672C\uFF0C\u518D\u91CD\u542F\u4F1A\u8BDD","out.doctor.hint.noEvents":"\u8FD9\u6761\u4F1A\u8BDD\u4E00\u6761 hook \u4E8B\u4EF6\u90FD\u6CA1\u6709\uFF08\u4F1A\u8BDD\u65E9\u4E8E init\uFF1F\u811A\u672C\u6CA1\u8DD1\u8FC7\uFF1F\uFF09","out.doctor.hint.noInboxCredentials":"\u811A\u672C\u80FD\u4E0A\u62A5\u3001\u4F46\u8FD9\u6761\u4F1A\u8BDD\u4ECE\u6CA1\u62A5\u8FC7\u51ED\u636E\uFF08\u5BBF\u4E3B\u6CA1\u7ED9 messaging socket env\uFF0C\u6216\u4F1A\u8BDD\u65E9\u4E8E\u811A\u672C\u66F4\u65B0\uFF09\u2192 \u91CD\u542F\u4F1A\u8BDD","out.doctor.hint.inboxTokenRequired":"\u672C\u5E73\u53F0\u76F4\u6295\u9700\u8981 token\uFF0C\u5BBF\u4E3B\u6CA1\u7ED9 messaging token env","out.doctor.hint.noPeerName":"\u8FD9\u6761\u4F1A\u8BDD\u5728\u6CE8\u518C\u8868\u91CC\u6CA1\u6709 peer name\u2014\u2014\u4E2D\u7EE7\u6309\u540D\u5B57\u5BFB\u5740\uFF0C\u6CA1\u540D\u5B57\u76F4\u63A5\u8DF3\u8FC7","out.doctor.hint.terminalNoBackend":"\u7EC8\u7AEF preset \u4E0D\u652F\u6301\u6587\u672C\u6CE8\u5165 \u2192 \u6362 wezterm \u624D\u6709\u5C42\u2461 \u515C\u5E95","out.doctor.hint.terminalNoPaneEnv":"\u6CA1\u4E0A\u62A5 pane \u5B9A\u4F4D\uFF08\u8BE5\u7EC8\u7AEF\u4E0D\u5BFC\u51FA WEZTERM_*\uFF09\u2192 \u53EA\u5269\u6807\u9898+cwd \u56DE\u843D","out.doctor.hint.terminalPaneEnvConflict":"\u8FD9\u4E2A\u4F1A\u8BDD\u7684 pane \u5B9A\u4F4D\u4E0E\u53E6\u4E00\u4E2A\u4F1A\u8BDD\u91CD\u53E0\uFF08fork \u7EE7\u627F\u4E86\u540C\u4E00\u4E2A\u7EC8\u7AEF\uFF09\u2192 \u5DF2\u62D2\u7EDD\u6295\u9012\uFF0C\u907F\u514D\u6253\u8FDB\u522B\u4EBA\u7684\u7EC8\u7AEF\uFF1B\u5173\u6389\u5176\u4E2D\u4E00\u4E2A\u4F1A\u8BDD\u5373\u53EF\u6062\u590D","out.doctor.hint.notRunning":"\u4F1A\u8BDD\u8FDB\u7A0B\u5DF2\u4E0D\u5728\u8DD1\uFF08\u6D88\u606F\u843D failed/offline\uFF0C\u8FDE\u961F\u5217\u90FD\u4E0D\u8FDB\uFF09","out.doctor.hint.queued":"\u961F\u5217\u91CC\u8FD8\u6709\u79EF\u538B","out.doctor.hint.stalled":"\u6682\u505C\u95F8\u5DF2\u7F6E\uFF08\u672A\u56DE\u6267\u8D85\u7A97\u6216\u6295\u9012\u5931\u8D25\uFF09\u2192 \u91CD\u53D1\u3001\u6216\u7B49\u56DE\u6267\u89E3\u9664","out.dash.browserFailed":"\uFF08\u65E0\u6CD5\u81EA\u52A8\u542F\u52A8\u6D4F\u89C8\u5668\u2014\u2014\u8BF7\u624B\u52A8\u6253\u5F00\uFF09","out.dash.stopHint":"\u7A0D\u540E\u53EF\u7528 `weave daemon stop` \u505C\u6B62\u5B83\u3002","out.dash.noBundle":"Web \u8D44\u6E90\u5305\u5C1A\u672A\u6784\u5EFA\uFF0C\u5B88\u62A4\u8FDB\u7A0B\u6CA1\u6709\u53EF\u63D0\u4F9B\u7684\u5185\u5BB9\u3002","out.dash.buildHint":" \u53EF\u7528 `pnpm build:web` \u6784\u5EFA\uFF0C\u6216\u8FD0\u884C Vite \u5F00\u53D1\u670D\u52A1\u5668\uFF1A`pnpm dev:web`\uFF08http://localhost:9527\uFF09\u3002","out.dash.url":`
|
|
6
6
|
\u63A7\u5236\u53F0\uFF1A{url}
|
|
7
7
|
`,"out.dash.noOpen":" \uFF08--no-open\uFF1A\u4E0D\u542F\u52A8\u6D4F\u89C8\u5668\uFF09","out.dash.initialPassword":`
|
|
8
8
|
\u521D\u59CB\u767B\u5F55\u5BC6\u7801\uFF1A{password}
|
|
9
9
|
\uFF08\u53EA\u663E\u793A\u8FD9\u4E00\u6B21\uFF1B\u53EF\u7528 \`weave chpass <\u65B0\u5BC6\u7801>\` \u4FEE\u6539\uFF09
|
|
10
10
|
`,"out.chpass.ok":"\u5DF2\u66F4\u65B0 dashboard \u767B\u5F55\u5BC6\u7801\u2014\u2014\u6240\u6709\u5DF2\u767B\u5F55\u7684\u6D4F\u89C8\u5668\u9700\u91CD\u65B0\u767B\u5F55\u3002","out.chpass.fail":"\u4FEE\u6539\u5BC6\u7801\u5931\u8D25\uFF1A{error}","out.chpass.usage":"\u7528\u6CD5\uFF1Aweave chpass <\u65B0\u5BC6\u7801>\uFF08\u81F3\u5C11 6 \u4F4D\uFF09","out.scan.registered":"\u5DF2\u4ECE {root} \u6CE8\u518C {count} \u4E2A\u9879\u76EE","out.uninstall.banner":"\u5378\u8F7D weave\uFF1A{target}","out.uninstall.notInitialized":"\u672A\u627E\u5230 .weave/ \u2014\u2014 \u672C\u9879\u76EE\u672A\u521D\u59CB\u5316 weave\uFF0C\u65E0\u9700\u5378\u8F7D\u3002","out.uninstall.done":"\u5378\u8F7D\u5B8C\u6210\uFF1A\u5220\u9664 {files} \u4E2A\u6587\u4EF6\u3001{dirs} \u4E2A\u76EE\u5F55","out.uninstall.modified":"\u6539\u5199 {count} \u4E2A\u6587\u4EF6\uFF08\u5265\u9664 weave \u5199\u5165\u7684\u952E/\u6BB5\u843D\uFF09","out.uninstall.keptUser":"\u4FDD\u7559\u7591\u4F3C\u7528\u6237\u4FEE\u6539\u7684\u751F\u6210\u4F4D\u6587\u4EF6 {count} \u4E2A\uFF08\u5185\u5BB9\u4E0E weave \u6765\u6E90\u4E0D\u4E00\u81F4\uFF09\uFF1A","out.uninstall.restored":"\u5DF2\u8FD8\u539F\u88AB init \u9876\u66FF\u7684 AGENTS.md\uFF08\u6765\u81EA .weave/backup/\uFF09","out.uninstall.gitReset":"init \u63D0\u4EA4\u662F\u6700\u8FD1\u4E00\u6B21\u63D0\u4EA4\u2014\u2014\u6307\u9488\u5DF2\u56DE\u6EDA\u5230 {sha}\uFF0C\u5386\u53F2\u65E0\u75D5","out.uninstall.gitCommit":"\u5DF2\u751F\u6210\u5378\u8F7D\u63D0\u4EA4 {sha}\uFF08{count} \u4E2A\u6587\u4EF6\uFF09","out.uninstall.gitNoChanges":"\u6CA1\u6709\u5DF2\u8DDF\u8E2A\u7684 weave \u6587\u4EF6\u53D8\u5316\u2014\u2014\u672A\u4EA7\u751F\u63D0\u4EA4","out.uninstall.gitDirty":"\u6682\u5B58\u533A\u975E\u7A7A\u2014\u2014\u6587\u4EF6\u5DF2\u6E05\u7406\uFF0C\u4F46\u8DF3\u8FC7 git \u64CD\u4F5C\u4EE5\u514D\u6CE2\u53CA\u5DF2\u6682\u5B58\u5185\u5BB9","out.uninstall.gitNotRepo":"\u4E0D\u5728 git \u4ED3\u5E93\u5185\u2014\u2014\u4EC5\u6E05\u7406\u6587\u4EF6","out.uninstall.gitFailed":"git \u64CD\u4F5C\u5931\u8D25\uFF1A{error}\uFF08\u6587\u4EF6\u5DF2\u6E05\u7406\uFF09","out.uninstall.serverRemoved":"\u5DF2\u4ECE server \u6CE8\u9500\u9879\u76EE {name}\uFF08\u6E05\u7406 {events} \u4E8B\u4EF6 / {dispatches} \u6D3E\u53D1 / {sessions} \u4F1A\u8BDD\uFF09","out.uninstall.serverFailed":"server \u6CE8\u9500\u5931\u8D25\uFF1A{error}","uninstall.pluginScanFailed":"\u63D2\u4EF6\u6A21\u677F\u626B\u63CF\u5931\u8D25\uFF08\u8DF3\u8FC7\u8BE5\u90E8\u5206\uFF09\uFF1A{error}","out.status.notInitialized":"Weave \u5C1A\u672A\u521D\u59CB\u5316\u3002\u8BF7\u5148\u8FD0\u884C `weave init`\u3002","out.status.header":`
|
|
11
11
|
Weave Harness \u72B6\u6001
|
|
12
|
-
`,"out.status.col.
|
|
12
|
+
`,"out.status.col.cliVersion":"CLI \u7248\u672C","out.status.col.initVersion":"init \u7248\u672C","out.status.col.initialized":"\u521D\u59CB\u5316\u65F6\u95F4","out.status.col.preset":"\u9884\u8BBE","out.status.col.harness":"harness","out.status.unknown":"\u672A\u77E5","out.status.present":"\u5B58\u5728","out.status.missing":"\u7F3A\u5931","out.status.issuesFound":` \u53D1\u73B0 {count} \u4E2A\u95EE\u9898\uFF1A
|
|
13
13
|
`,"out.status.issue":" - {message}","out.status.fix":" \u4FEE\u590D\uFF1A{fix}","init.banner":`
|
|
14
|
-
Weave \u2014 coding-agent harness
|
|
14
|
+
Weave \u2014 coding-agent harness v{version}
|
|
15
15
|
`,"init.presetTarget":` \u9884\u8BBE\uFF1A{preset} | \u76EE\u6807\uFF1A{target}
|
|
16
16
|
`,"init.failed":`
|
|
17
17
|
\u521D\u59CB\u5316\u5931\u8D25\uFF1A{error}
|
|
@@ -48,4 +48,4 @@ import{HARNESS_DIRS as F,HARNESS_KEYS as u}from"@weavecode/core";export const zh
|
|
|
48
48
|
- \u4E0D\u5F15\u5165 XSS\u3001SQL \u6CE8\u5165\u3001\u547D\u4EE4\u6CE8\u5165\u9762
|
|
49
49
|
- \u4F18\u5148\u53C2\u6570\u5316\u67E5\u8BE2\u4E0E\u5B89\u5168 API\uFF0C\u800C\u4E0D\u662F\u5B57\u7B26\u4E32\u62FC\u63A5
|
|
50
50
|
|
|
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 \`${
|
|
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","claudemd.visualize":'## \u6E32\u67D3\u5757\n\n\u8981\u8BA9 weave \u5BF9\u8BDD\u91CC\u5185\u5D4C HTML \u5FEB\u7167\uFF1Afragment \u5199\u8FDB\u9879\u76EE\u5185\uFF08\u5982 `.weave/previews/<name>.html`\uFF1B\u4E0D\u60F3\u843D\u5DE5\u4F5C\u533A\u7684\u4E34\u65F6\u4EA7\u7269\u7528\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u4E0B\u7684 `weave/` \u5B50\u76EE\u5F55\uFF09\uFF0C\u5176\u5B83\u4F4D\u7F6E\u670D\u52A1\u7AEF\u4F1A\u62D2\uFF1B\u56DE\u590D\u91CC**\u5355\u72EC\u4E00\u884C**\u5199\u5F15\u7528\u884C\uFF1AU+E200 + `visualize` + U+E202 + `{"path":"<\u7EDD\u5BF9\u8DEF\u5F84>"}` + U+E201\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
|
|
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(
|
|
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
|
|
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 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
|
|
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+=a("claudemd.visualize"),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),r=e.indexOf(WEAVE_BLOCK_END);return t!==-1&&r!==-1&&r>t?e.slice(0,t)+n.trimEnd()+e.slice(r+WEAVE_BLOCK_END.length):e.replace(/\s+$/,"")+`
|
|
9
9
|
|
|
10
10
|
`+n.trimEnd()+`
|
|
11
11
|
`}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
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
|
-
`,
|
|
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
|
|
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
|
|
2
|
-
`).filter(Boolean).length,
|
|
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}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import a from"node:path";import{readFile as
|
|
2
|
-
`,"utf-8"),
|
|
3
|
-
`,"utf-8"),
|
|
4
|
-
`,"utf-8"),
|
|
5
|
-
`,"utf-8"),
|
|
6
|
-
`,"utf-8"),
|
|
7
|
-
`,"utf-8"),
|
|
1
|
+
import a from"node:path";import{readFile as d,writeFile as l,readdir as D,unlink as v}from"node:fs/promises";import{DEFAULT_AGENTS as F,DEFAULT_COMMANDS as A,DEFAULT_HOOKS as O,DEFAULT_MCP as C,DEFAULT_SKILLS as J,ensureDir as m,fileExists as w,logger as p,resolveComponents as M,writeFileIfAbsent as y}from"@weavecode/core";import{templateRegistry as g}from"@weavecode/templates";import{generateStatuslineScript as P,readStatuslineConfig as N,WEAVE_VERSION as b}from"@weavecode/server";import{InitPipeline as U,generateHookHandler as _,readUserCapture as R}from"@weavecode/harness";import{generateSettingsJson as I,mergeSettingsJson as L}from"../settings-gen.js";import{generateMcpJson as H,mergeMcpJson as K}from"../mcp-gen.js";import{generateAutoMemoryHook as V}from"../helpers-gen.js";import{registerPluginTemplates as W,collectPluginMcpServers as q}from"../plugin-templates.js";import{t as f}from"../../i18n/index.js";export const WEAVE_HELPER_MARKER="@version weave@";const G={preToolUse:!1,postToolUse:!1,userPromptSubmit:!1,sessionStart:!1,stop:!1,stopFailure:!1,subagentStop:!1,subagentStart:!1,notification:!1,postToolUseFailure:!1,permissionRequest:!1,permissionDenied:!1,preCompact:!1,sessionEnd:!1,preModelSwitch:!1,timeout:5e3,continueOnError:!0};export class ClaudeInitTemplate extends U{records={created:{directories:[],files:[]},skipped:[],merged:[],updated:[],removed:[]};st;constructor(i){super(i);const t=a.join(i.targetDir,".claude");this.st={targetDir:i.targetDir,force:i.force,platform:i.platform,components:M(i.preset,i.components),hooks:{...O,...i.hooks},skills:{...J,...i.skills},commands:{...A,...i.commands},agents:{...F,...i.agents},mcp:{...C,...i.mcp},claudeDir:t,skillsDir:a.join(t,"skills"),commandsDir:a.join(t,"commands"),agentsDir:a.join(t,"agents"),helpersDir:a.join(t,"helpers"),...this.records}}ensureDirs(){return z(this.st)}writeSettings(){return B(this.st)}writeMcp(){return Q(this.st)}copySkills(){return X(this.st)}copyCommands(){return Y(this.st)}copyAgents(){return Z(this.st)}injectPluginTemplates(){return $(this.st)}writeHelpers(){return x(this.st)}}async function z(e){await m(e.claudeDir),e.created.directories.push(e.claudeDir),e.components.skills&&(await m(e.skillsDir),e.created.directories.push(e.skillsDir)),e.components.commands&&(await m(e.commandsDir),e.created.directories.push(e.commandsDir)),e.components.agents&&(await m(e.agentsDir),e.created.directories.push(e.agentsDir)),e.components.helpers&&(await m(e.helpersDir),e.created.directories.push(e.helpersDir))}async function B(e){if(e.components.settings){const i=await R({home:e.platform.homeDir}),t=i.installed?G:e.hooks;i.installed&&p.dim(f("init.userCaptureActive"));const s=I({components:e.components,hooks:t,platform:e.platform,helpersDir:e.helpersDir}),n=a.join(e.claudeDir,"settings.json");if(e.force)await l(n,JSON.stringify(s,null,2)+`
|
|
2
|
+
`,"utf-8"),e.created.files.push(n);else{const o=await k(n);if(o===void 0)await w(n)?(e.skipped.push(n),p.warn(f("init.skippedInvalidJson",{path:n}))):(await l(n,JSON.stringify(s,null,2)+`
|
|
3
|
+
`,"utf-8"),e.created.files.push(n));else{const r=L(o,s);await l(n,JSON.stringify(r,null,2)+`
|
|
4
|
+
`,"utf-8"),e.merged.push(n)}}}}async function Q(e){if(e.components.mcp){const i=H({platform:e.platform,includeWeaveServer:e.mcp.weave}),t=Object.keys(i.mcpServers),s=await q(e.targetDir,void 0,t),n=i.mcpServers;for(const[r,c]of Object.entries(s.servers))n[r]=c;for(const r of s.renamed)p.warn(f("init.pluginMcpRenamed",{renamed:r}));if(Object.keys(n).length>0){const r=a.join(e.targetDir,".mcp.json");if(e.force)await l(r,JSON.stringify(i,null,2)+`
|
|
5
|
+
`,"utf-8"),e.created.files.push(r);else{const c=await k(r);if(c===void 0)await w(r)?(e.skipped.push(r),p.warn(f("init.skippedInvalidJson",{path:r}))):(await l(r,JSON.stringify(i,null,2)+`
|
|
6
|
+
`,"utf-8"),e.created.files.push(r));else{const u=K(c,i);await l(r,JSON.stringify(u,null,2)+`
|
|
7
|
+
`,"utf-8"),e.merged.push(r)}}}else await w(a.join(e.targetDir,".mcp.json"))&&e.skipped.push(a.join(e.targetDir,".mcp.json"))}}async function X(e){if(e.components.skills&&e.skills.core){const i=g.getSkillsSourceDir();await h(i,e.skillsDir,e.force,e.created,e.skipped)}}async function Y(e){if(e.components.commands&&e.commands.core){const i=g.getCommandsSourceDir();await h(i,e.commandsDir,e.force,e.created,e.skipped)}}async function Z(e){if(e.components.agents&&e.agents.core){const i=g.getAgentsSourceDir();await h(i,e.agentsDir,e.force,e.created,e.skipped)}}async function $(e){try{const{registered:i}=await W(e.targetDir);for(const t of i){const s=g.resolvePath(t);if(t.category==="skill"){await h(s,a.join(e.skillsDir,a.basename(s)),e.force,e.created,e.skipped);continue}const n=t.category==="command"?e.commandsDir:e.agentsDir,o=a.join(n,a.basename(s));try{const r=await d(s,"utf-8");await y(o,r,e.force)?e.created.files.push(o):e.skipped.push(o)}catch(r){p.warn(f("init.copyTemplatesFailed",{srcDir:s,error:String(r)}))}}}catch(i){p.warn(f("init.copyTemplatesFailed",{srcDir:"plugins",error:String(i)}))}}async function x(e){if(e.components.helpers){const i=await N(e.targetDir),t=[["hook-handler.cjs",_(b)],["statusline.cjs",P(i)],["auto-memory-hook.mjs",V()]];for(const[n,o]of t){const r=a.join(e.helpersDir,n);if(e.force){await l(r,o,"utf-8"),e.created.files.push(r);continue}const c=await S(r);c===null?(await l(r,o,"utf-8"),e.created.files.push(r)):c.includes(WEAVE_HELPER_MARKER)?(await l(r,o,"utf-8"),e.updated.push(r)):e.skipped.push(r)}const s=new Set(t.map(([n])=>n));try{for(const n of await D(e.helpersDir,{withFileTypes:!0})){if(!n.isFile()||s.has(n.name))continue;const o=a.join(e.helpersDir,n.name),r=await S(o);r!==null&&r.includes(WEAVE_HELPER_MARKER)&&(await v(o),e.removed.push(o))}}catch{}}}async function S(e){try{return await d(e,"utf-8")}catch(i){if(j(i))return null;throw i}}async function k(e){let i;try{i=await d(e,"utf-8")}catch(t){if(j(t))return;throw t}try{const t=JSON.parse(i);if(typeof t=="object"&&t!==null&&!Array.isArray(t))return t}catch{}}function j(e){return typeof e=="object"&&e!==null&&e.code==="ENOENT"}async function h(e,i,t,s,n){try{const o=await T(e);for(const r of o){const c=a.relative(e,r),u=a.join(i,c),E=await d(r,"utf-8");await y(u,E,t)?s.files.push(u):n.push(u)}}catch(o){p.warn(f("init.copyTemplatesFailed",{srcDir:e,error:String(o)}))}}async function T(e){const i=[];try{const t=await D(e,{withFileTypes:!0});for(const s of t){const n=a.join(e,s.name);s.isDirectory()?i.push(...await T(n)):i.push(n)}}catch{}return i}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import o from"node:path";import{readdir as
|
|
1
|
+
import o from"node:path";import{readdir as d,readFile as k}from"node:fs/promises";import{DEFAULT_SKILLS as f,HARNESS_DIRS as u,ensureDir as l,logger as p,resolveComponents as w,writeFileIfAbsent as D}from"@weavecode/core";import{templateRegistry as y}from"@weavecode/templates";import{InitPipeline as F}from"@weavecode/harness";import{t as n}from"../../i18n/index.js";export class CodexInitTemplate extends F{records={created:{directories:[],files:[]},skipped:[],merged:[],updated:[],removed:[]};force;components;skills;codexDir;skillsDir;constructor(e){super(e);const i=w(e.preset,e.components),s=o.join(e.targetDir,u.codex.projectDir);this.force=e.force,this.components=i,this.skills={...f,...e.skills},this.codexDir=s,this.skillsDir=o.join(s,"skills")}async ensureDirs(){await l(this.codexDir),this.records.created.directories.push(this.codexDir),this.components.skills&&(await l(this.skillsDir),this.records.created.directories.push(this.skillsDir))}writeSettings(){this.skipNoFace("writeSettings")}writeMcp(){this.skipNoFace("writeMcp")}async copySkills(){if(this.components.skills&&this.skills.core){const e=y.getSkillsSourceDir();await g(e,this.skillsDir,this.force,this.records)}}copyCommands(){this.skipNoFace("copyCommands")}copyAgents(){this.skipNoFace("copyAgents")}injectPluginTemplates(){this.skipNoFace("injectPluginTemplates")}writeHelpers(){this.skipNoFace("writeHelpers")}skipNoFace(e){const i=n("init.noPeerFace");this.skip(e,i),p.dim(n("init.stepSkipped",{step:e,reason:i}))}}async function g(t,e,i,s){try{for(const r of await a(t)){const h=o.relative(t,r),c=o.join(e,h),m=await k(r,"utf-8");await D(c,m,i)?s.created.files.push(c):s.skipped.push(c)}}catch(r){p.warn(n("init.copyTemplatesFailed",{srcDir:t,error:String(r)}))}}async function a(t){const e=[];try{const i=await d(t,{withFileTypes:!0});for(const s of i){const r=o.join(t,s.name);s.isDirectory()?e.push(...await a(r)):e.push(r)}}catch{return e}return e}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import c from"node:path";import{lstat as d,mkdir as h,readFile as k,readlink as b,symlink as g,unlink as f,writeFile as m}from"node:fs/promises";import{INSTRUCTION_FILES as y}from"@weavecode/core";import{t as l}from"../i18n/index.js";const[r,o]=y;async function w(t){try{if((await d(t)).isSymbolicLink()){const a=await b(t);try{return await k(c.resolve(c.dirname(t),a)),{state:"link",target:a}}catch{return{state:"broken-link",target:a}}}return{state:"file"}}catch{return{state:"absent"}}}async function u(t,i,a){const s=c.join(t,i);try{await g(a,s,"file")}catch(e){const n=e.code;throw new Error(l("ilink.linkFailed",{link:i,target:a,path:s,detail:n==="EPERM"||n==="EACCES"||n==="UNKNOWN"?l("ilink.symlinkNotAllowed"):String(e)}))}}async function F(t,i){const a=c.join(t,".weave","backup");await h(a,{recursive:!0});const s=new Date().toISOString().replace(/[:.]/g,"-"),e=c.join(a,`${i}.${s}`);return await m(e,await k(c.join(t,i),"utf-8"),"utf-8"),e}export async function ensureInstructionLink(t,i){const a=c.join(t,r),s=c.join(t,o),e=await w(a),n=await w(s);if(e.state==="link"&&e.target===o&&n.state==="file")return{action:"unchanged",realFile:o};if((n.state==="link"||n.state==="broken-link")&&n.target===r)return{action:"unchanged",realFile:r};if(e.state==="absent"&&n.state==="file")return await u(t,r,o),{action:"adopted",realFile:o};if(n.state==="absent")return(e.state==="link"||e.state==="broken-link")&&await f(a),await u(t,o,r),{action:"created",realFile:r};if(!(i.force?!0:await i.confirm(l("ilink.bothHaveContent"),l("ilink.replaceDetail",{backupDir:".weave/backup/"}))))return{action:"unchanged",realFile:r};const p=n.state==="file"?await F(t,o):void 0;return await f(s),await u(t,o,r),{action:"replaced",realFile:r,backedUpTo:p}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import o from"node:path";import{readdir as
|
|
1
|
+
import o from"node:path";import{readdir as v,readFile as w}from"node:fs/promises";import{detectPlatform as P,WEAVE_PLUGIN_MANIFEST as $,WeavePluginManifestSchema as S}from"@weavecode/core";import{templateRegistry as j}from"@weavecode/templates";async function*g(f,m){const i=[m??o.join(P().configDir,"weave","data","plugins"),o.join(f,".weave","plugins")];for(const e of i){let n;try{n=await v(e)}catch{continue}for(const r of n){const t=o.join(e,r);let s;try{s=JSON.parse(await w(o.join(t,$),"utf8"))}catch{continue}const c=S.safeParse(s);c.success&&(yield{dir:t,manifest:c.data})}}}export async function registerPluginTemplates(f,m){const i=[],e=[];for await(const{dir:n,manifest:r}of g(f,m)){if(!r.templates)continue;const{id:t,templates:s}=r,c={skills:"skill",commands:"command",agents:"agent"};for(const[a,h]of Object.entries(s)){const u=c[a];if(u)for(const d of h??[]){const p=o.resolve(n,d);if(!p.startsWith(o.resolve(n)+o.sep)){e.push(d);continue}const y=o.basename(p).replace(/\.md$/,""),l={name:`${t}:${y}`,category:u,sourcePath:p,description:`${t} \u63D2\u4EF6\u6A21\u677F`};j.register(l)?i.push(l):e.push(l.name)}}}return{registered:i,skipped:e}}export async function collectPluginMcpServers(f,m,i=[]){const e={},n=[],r=new Set(i);for await(const{manifest:t}of g(f,m))if(t.mcpServers)for(const[s,c]of Object.entries(t.mcpServers)){let a=s;r.has(a)&&(a=`${t.id}-${s}`,n.push(`${s} \u2192 ${a}`)),r.add(a),e[a]=c}return{servers:e,renamed:n}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{logger as m}from"@weavecode/core";import{t as
|
|
2
|
-
${
|
|
1
|
+
import{logger as m}from"@weavecode/core";import{t as c}from"../i18n/index.js";export async function confirmPrompt(o,l,t){if(!t||!process.stdin.isTTY||!process.stdout.isTTY)return!0;const{createInterface:e}=await import("node:readline/promises"),s=e({input:process.stdin,output:process.stdout});try{const i=await s.question(`
|
|
2
|
+
${o}
|
|
3
3
|
${l}
|
|
4
|
-
${
|
|
5
|
-
${
|
|
4
|
+
${c("init.proceed")} `);return!/^n(o)?$/i.test(i.trim())}finally{s.close()}}export function createPromptPort(o){const l=()=>o&&!!process.stdin.isTTY&&!!process.stdout.isTTY;return{confirm:(t,e="")=>confirmPrompt(t,e,o),async multiselect(t,e){if(!l())return[...e];if(t.length===0)return[];const{createInterface:s}=await import("node:readline/promises"),i=s({input:process.stdin,output:process.stdout});try{console.log(`
|
|
5
|
+
${c("init.multiselect.title")}`),t.forEach((n,f)=>console.log(` ${f+1}) ${n}`));const p=(await i.question(` ${c("init.multiselect.hint",{defaults:e.join(",")})} `)).trim();if(!p)return[...e];const r=[],u=[];for(const n of p.split(/[,\s]+/).filter(Boolean)){const a=(/^\d+$/.test(n)?t[Number(n)-1]:void 0)??t.find(d=>d.toLowerCase()===n.toLowerCase());a===void 0?u.push(n):r.includes(a)||r.push(a)}return u.length>0&&m.warn(c("init.multiselect.invalid",{keys:u.join(", ")})),r.length>0?r:[...e]}finally{i.close()}}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{spawn as
|
|
1
|
+
import{spawn as d}from"node:child_process";import{HARNESS_DRIVERS as m,HARNESS_INSTALL as p,ensureClaudeTrustAccepted as w,ensureCodexTrustAccepted as h}from"@weavecode/harness";import{probeBinVersion as v}from"@weavecode/server";import{logger as r}from"@weavecode/core";import{t}from"../i18n/index.js";const T={versionOf:e=>v(e),runInstall:e=>new Promise((a,i)=>{const s=d(e,{shell:!0,stdio:"inherit",windowsHide:!0});s.on("error",i),s.on("close",n=>n===0?a():i(new Error(`exit ${n}`)))})};export async function ensureHarnessInstalled(e,a,i=T){const s=!!process.stdin.isTTY&&!!process.stdout.isTTY;for(const n of e){const o=m[n].resume;if(!o?.bin)continue;const c=p[n].command,l=await i.versionOf(o.bin);if(l!==null){const u=o.minVersion;u&&!y(l,u)?r.warn(t("init.install.versionLow",{harness:n,version:l,min:u,command:c})):r.dim(t("init.install.installed",{harness:n,version:l})),await g(n,o.bin);continue}if(r.info(t("init.install.notFound",{harness:n})),!s){r.warn(t("init.install.declined",{command:c}));continue}if(await i.versionOf("npm")===null){r.warn(t("init.install.npmMissing",{command:c}));continue}if(!await a.confirm(t("init.install.confirm",{harness:n}),t("init.install.detail",{command:c}))){r.warn(t("init.install.declined",{command:c}));continue}r.dim(t("init.install.running",{harness:n}));try{await i.runInstall(c)}catch{r.warn(t("init.install.verifyFailed",{harness:n,command:c}));continue}const f=await i.versionOf(o.bin);f!==null?r.success(t("init.install.done",{harness:n,version:f})):r.warn(t("init.install.verifyFailed",{harness:n,command:c}))}}async function g(e,a){const i=m[e].provision;if(i)try{const s=await i.check(a);for(let n=0;n<s.warnings.length;n++){const o=s.hints[n];r.warn(t("init.provision.conflict",{harness:e,warning:s.warnings[n],hint:o??""}))}}catch(s){r.warn(t("init.provision.checkFailed",{harness:e,error:s.message}))}}const I={claude:w,codex:h};export async function prewriteTrust(e,a){for(const i of e){const s=I[i];if(s)try{await s(a),r.dim(t("init.trust.prewritten",{harness:i}))}catch(n){r.warn(t("init.trust.failed",{harness:i,error:n.message}))}}}function y(e,a){const i=e.split(".").map(n=>Number.parseInt(n,10)),s=a.split(".").map(n=>Number.parseInt(n,10));for(let n=0;n<3;n++){const o=(i[n]??0)-(s[n]??0);if(o!==0)return o>0}return!0}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import s from"node:path";import{lstat as
|
|
2
|
-
`,"utf-8"),this.result.modifiedFiles.push(c)):(await m(c),this.result.removedFiles.push(c))}const h=s.join(e,".gitignore");await
|
|
3
|
-
`,"utf-8"),this.result.modifiedFiles.push(t)):(await m(t),this.result.removedFiles.push(t))}async sweepInstructionFiles(t){for(const i of[...
|
|
4
|
-
`,"utf-8"),this.result.modifiedFiles.push(e))}}if(t&&!await
|
|
5
|
-
`).map(
|
|
6
|
-
`))
|
|
1
|
+
import s from"node:path";import{lstat as T,readdir as _,readFile as G,rm as O,rmdir as W,unlink as m,writeFile as v}from"node:fs/promises";import{HARNESS_DIRS as x,HARNESS_KEYS as N,INSTRUCTION_FILES as S,logger as H}from"@weavecode/core";import{hashFile as C,projectPackFiles as U,unregisterProject as B}from"@weavecode/server";import{templateRegistry as F}from"@weavecode/templates";import{stripWeaveSettings as L}from"./settings-gen.js";import{stripWeaveMcp as V}from"./mcp-gen.js";import{WEAVE_BLOCK_START as J,WEAVE_BLOCK_END as R,WEAVE_MANAGED_HEADER as K}from"./claudemd-gen.js";import{WEAVE_HELPER_MARKER as q}from"./harnesses/claude.js";import{registerPluginTemplates as z}from"./plugin-templates.js";import{NESTED_GITIGNORE as Y}from"./executor.js";import{COMMIT_MESSAGE as $,findGitRepoRoot as Q,defaultGitExec as X}from"./git-commit.js";import{t as Z}from"../i18n/index.js";const tt="chore: weave uninstall \u79FB\u9664 init \u751F\u6210\u7269",k=S[1],et=[...S,".mcp.json",...N.map(n=>x[n].projectDir),".weave"];async function D(n){try{return await T(n),!0}catch{return!1}}async function p(n){try{return await G(n,"utf-8")}catch{return null}}async function b(n){const t=await p(n);if(t!==null)try{const i=JSON.parse(t);if(i&&typeof i=="object"&&!Array.isArray(i))return i}catch{}}async function j(n){const t=[];let i;try{i=await _(n,{withFileTypes:!0})}catch{return t}for(const e of i){const a=s.join(n,e.name);e.isDirectory()?t.push(...await j(a)):t.push(a)}return t}async function it(n,t){const[i,e]=await Promise.all([p(n),p(t)]);return i!==null&&i===e}async function A(n,t,i){let e=n;const a=s.resolve(t);for(;;){if(s.resolve(e)===a||!e.startsWith(a+s.sep))return;try{await W(e),i.push(e)}catch{return}e=s.dirname(e)}}class st{targetDir;execGit;dbPath;hooksDir;result;constructor(t){this.targetDir=s.resolve(t.targetDir),this.execGit=t.execGit??X,this.dbPath=t.dbPath,this.hooksDir=t.hooksDir,this.result={status:"ok",removedFiles:[],removedDirs:[],modifiedFiles:[],keptUserFiles:[],git:"no-changes",server:{outcome:"absent"}}}async run(){const t=s.join(this.targetDir,".weave");if(!await D(t))return this.result.status="not-initialized",this.unregisterFromServer(),this.result;const i=await U(this.targetDir),e=await rt(t);let a=[];try{a=(await z(this.targetDir)).registered}catch(r){H.warn(Z("uninstall.pluginScanFailed",{error:String(r)}))}for(const r of N)await this.sweepHarness(r,a);return await this.sweepMcp(),await this.sweepInstructionFiles(e),await this.sweepPackFiles(i),await O(t,{recursive:!0,force:!0}),this.result.removedDirs.push(t),await this.runGit(),this.unregisterFromServer(),this.result}unregisterFromServer(){try{const t=B(this.targetDir,this.dbPath,this.hooksDir);t&&(this.result.server={outcome:"removed",name:t.name,purged:t.purged})}catch(t){this.result.server={outcome:"failed",error:t instanceof Error?t.message:String(t)}}}async sweepHarness(t,i){const e=s.join(this.targetDir,x[t].projectDir);if(!await D(e))return;const a=s.join(e,"helpers");for(const o of await j(a)){const u=await p(o);u!==null&&u.includes(q)?(await m(o),this.result.removedFiles.push(o)):this.result.keptUserFiles.push(o)}const r=[["skills",F.getSkillsSourceDir()],["commands",F.getCommandsSourceDir()],["agents",F.getAgentsSourceDir()]];for(const[o,u]of r)u&&await this.removeTemplateMirrors(s.join(e,o),u);for(const o of i){const u=o.sourcePath;if(o.category==="skill")await this.removeTemplateMirrors(s.join(e,"skills",s.basename(u)),u);else{const y=o.category==="command"?"commands":"agents",l=s.join(e,y,s.basename(u));await this.removeIfSame(l,u)}}const c=s.join(e,"settings.json"),f=await b(c);if(f){const o=L(f);Object.keys(o).length>0?(await v(c,JSON.stringify(o,null,2)+`
|
|
2
|
+
`,"utf-8"),this.result.modifiedFiles.push(c)):(await m(c),this.result.removedFiles.push(c))}const h=s.join(e,".gitignore");await p(h)===Y&&(await m(h),this.result.removedFiles.push(h));for(const o of["helpers","skills","commands","agents"])await A(s.join(e,o),this.targetDir,this.result.removedDirs);await A(e,this.targetDir,this.result.removedDirs)}async removeTemplateMirrors(t,i){for(const e of await j(i)){const a=s.relative(i,e);await this.removeIfSame(s.join(t,a),e)}}async removeIfSame(t,i){await D(t)&&(await it(t,i)?(await m(t),this.result.removedFiles.push(t)):this.result.keptUserFiles.push(t))}async sweepMcp(){const t=s.join(this.targetDir,".mcp.json"),i=await b(t);if(!i)return;const e=V(i);Object.keys(e).length>0?(await v(t,JSON.stringify(e,null,2)+`
|
|
3
|
+
`,"utf-8"),this.result.modifiedFiles.push(t)):(await m(t),this.result.removedFiles.push(t))}async sweepInstructionFiles(t){for(const i of[...S].reverse()){const e=s.join(this.targetDir,i);let a;try{a=await T(e)}catch{continue}if(a.isSymbolicLink()){await m(e),this.result.removedFiles.push(e);continue}if(!a.isFile())continue;const r=await p(e);if(r===null)continue;if(r.includes(K)){await m(e),this.result.removedFiles.push(e);continue}const c=r.indexOf(J),f=r.indexOf(R);if(c!==-1&&f!==-1&&f>c){const h=(r.slice(0,c)+r.slice(f+R.length)).replace(/\s+$/,"");h===""?(await m(e),this.result.removedFiles.push(e)):(await v(e,h+`
|
|
4
|
+
`,"utf-8"),this.result.modifiedFiles.push(e))}}if(t&&!await D(s.join(this.targetDir,k))){const i=await p(t);i!==null&&(await v(s.join(this.targetDir,k),i,"utf-8"),this.result.restoredFromBackup=s.join(this.targetDir,k))}}async sweepPackFiles(t){for(const[e,a]of t){const r=s.resolve(this.targetDir,e);r!==this.targetDir&&!r.startsWith(this.targetDir+s.sep)||(await C(r)===a?(await m(r).catch(()=>{}),this.result.removedFiles.push(r)):await D(r)&&this.result.keptUserFiles.push(r))}const i=[...new Set([...t.keys()].map(e=>s.dirname(s.resolve(this.targetDir,e))))];for(const e of i)await A(e,this.targetDir,this.result.removedDirs)}async git(t){return this.execGit("git",t,{cwd:this.targetDir})}async runGit(){if(!await Q(this.targetDir)){this.result.git="skipped-not-repo";return}try{if((await this.git(["diff","--cached","--quiet"])).code!==0){this.result.git="skipped-dirty-index";return}const e=await this.git(["log","-1","--format=%s %H %P"]);if(e.code===0){const[l,d,w]=e.stdout.trimEnd().split(" ");if(l===$&&w){const I=await this.git(["diff-tree","--no-commit-id","--name-only","-r",d]),P=I.code===0?I.stdout.split(`
|
|
5
|
+
`).map(g=>g.trim()).filter(Boolean):[],M=g=>et.some(E=>g===E||g===E+"/"||g.startsWith(E+"/"));if(P.length>0&&P.every(M)){const g=await this.git(["reset","--mixed","HEAD~1"]);if(g.code===0){this.result.git="reset",this.result.gitSha=w.slice(0,7);return}this.result.git="failed",this.result.gitError=g.stderr.trim()||"git reset failed";return}}}const a=[...this.result.removedFiles,...this.result.modifiedFiles,...this.result.restoredFromBackup?[this.result.restoredFromBackup]:[],s.join(this.targetDir,".weave")],r=[...new Set(a.map(l=>s.relative(this.targetDir,l).replace(/\\/g,"/")))],c=50,f=new Set;for(let l=0;l<r.length;l+=c){const d=await this.git(["ls-files","--",...r.slice(l,l+c)]);if(d.code!==0){this.result.git="failed",this.result.gitError=d.stderr.trim()||"git ls-files failed";return}for(const w of d.stdout.split(`
|
|
6
|
+
`))w.trim()&&f.add(w.trim().replace(/\\/g,"/"))}const h=[...f];if(h.length>0)for(let l=0;l<h.length;l+=c){const d=await this.git(["add","--",...h.slice(l,l+c)]);if(d.code!==0){this.result.git="failed",this.result.gitError=d.stderr.trim()||"git add failed";return}}if((await this.git(["diff","--cached","--quiet"])).code===0){this.result.git="no-changes";return}const u=await this.git(["commit","-m",tt]);if(u.code!==0){this.result.git="failed",this.result.gitError=u.stderr.trim()||"git commit failed";return}const y=await this.git(["rev-parse","--short","HEAD"]);this.result.git="committed",this.result.gitSha=y.code===0?y.stdout.trim():void 0}catch(i){this.result.git="failed",this.result.gitError=i instanceof Error?i.message:String(i)}}}async function rt(n){const t=s.join(n,"backup");let i;try{i=await _(t)}catch{return null}const e=i.filter(a=>S.some(r=>a.startsWith(r+"."))).sort();return e.length>0?s.join(t,e[e.length-1]):null}export async function executeUninstall(n){return new st(n).run()}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{HARNESS_DRIVERS as
|
|
1
|
+
import{HARNESS_DRIVERS as o,createRuntimeRegistry as s}from"@weavecode/harness";import{ClaudeInitTemplate as c}from"./harnesses/claude.js";import{CodexInitTemplate as a}from"./harnesses/codex.js";const r={claude:c,codex:a};export function buildInitRegistry(){const t=s();for(const e of Object.keys(r)){const i=o[e],n={...i,capabilities:i.capabilities.includes("init")?i.capabilities:[...i.capabilities,"init"],init:r[e]};t.unregister(e),t.register(n)}return t}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as
|
|
1
|
+
import{t as c}from"./i18n/index.js";export class CommandParser{commands=new Map;globalOptions=[];constructor(){this.initGlobalOptions()}initGlobalOptions(){this.globalOptions=[{name:"help",short:"h",description:"flag.help",type:"boolean",default:!1},{name:"version",short:"V",description:"flag.version",type:"boolean",default:!1},{name:"verbose",short:"v",description:"flag.verbose",type:"boolean",default:!1},{name:"quiet",short:"q",description:"flag.quiet",type:"boolean",default:!1}]}registerCommand(e){if(this.commands.set(e.name,e),e.aliases)for(const t of e.aliases)this.commands.set(t,e)}getCommand(e){return this.commands.get(e)}getAllCommands(){const e=new Set;return Array.from(this.commands.values()).filter(t=>e.has(t)?!1:(e.add(t),!0))}parse(e){const t={command:[],flags:{_:[]},positional:[],raw:[...e]};let s;for(let r=0;r<e.length;r++){const i=e[r];if(i.startsWith("-"))break;if(t.command.length===0&&this.commands.has(i)){s=this.commands.get(i),t.command.push(i);continue}if(t.command.length===1&&s?.subcommands){const l=s.subcommands.find(u=>u.name===i||u.aliases?.includes(i));if(l){s=l,t.command.push(i);continue}}if(t.command.length===2&&s?.subcommands){const l=s.subcommands.find(u=>u.name===i||u.aliases?.includes(i));if(l){s=l,t.command.push(i);continue}}break}const f=this.buildAliases(s),n=this.booleanFlags(s);let a=!0,o=t.command.length;for(;o<e.length;){const r=e[o];if(r==="--"){a=!1,o++;continue}if(a&&r.startsWith("-")){const i=this.parseFlag(e,o,f,n);Object.assign(t.flags,i.flags),o=i.nextIndex;continue}t.positional.push(r),t.flags._.push(r),o++}return this.applyDefaults(t.flags,s),t}validateFlags(e,t){const s=[],f=[...this.globalOptions,...t?.options??[]];for(const n of f){const a=this.normalizeKey(n.name);if(n.required&&e[a]===void 0&&s.push(c("cli.missingRequired",{name:n.name})),n.choices&&e[a]!==void 0){const o=String(e[a]);n.choices.includes(o)||s.push(c("cli.invalidChoice",{name:n.name,value:o,choices:n.choices.join(", ")}))}if(n.validate&&e[a]!==void 0){const o=n.validate(e[a]);o!==!0&&s.push(o)}}return s}getGlobalOptions(){return[...this.globalOptions]}parseFlag(e,t,s,f){const n={},a=e[t];let o=t+1;if(a.startsWith("--")){const r=a.indexOf("=");if(r!==-1){const i=a.slice(2,r);n[this.normalizeKey(i)]=this.parseValue(a.slice(r+1))}else if(a.startsWith("--no-")){const i=a.slice(5);n[this.normalizeKey(i)]=!1}else{const i=a.slice(2),l=this.normalizeKey(i);f.has(l)?o<e.length&&this.isBooleanLiteral(e[o])?(n[l]=e[o].toLowerCase()==="true",o++):n[l]=!0:o<e.length&&this.isFlagValue(e[o])?(n[l]=this.parseValue(e[o]),o++):n[l]=!0}}else if(a.startsWith("-")){const r=a.slice(1);if(r.length===1){const i=s[r]||r,l=this.normalizeKey(i);f.has(l)?o<e.length&&this.isBooleanLiteral(e[o])?(n[l]=e[o].toLowerCase()==="true",o++):n[l]=!0:o<e.length&&this.isFlagValue(e[o])?(n[l]=this.parseValue(e[o]),o++):n[l]=!0}else for(const i of r){const l=s[i]||i;n[this.normalizeKey(l)]=!0}}return{flags:n,nextIndex:o}}isFlagValue(e){return e.startsWith("-")?/^-\d*\.?\d+(?:[eE][+-]?\d+)?$/.test(e):!0}isBooleanLiteral(e){const t=e.toLowerCase();return t==="true"||t==="false"}parseValue(e){if(e.toLowerCase()==="true")return!0;if(e.toLowerCase()==="false")return!1;const t=Number(e);return!isNaN(t)&&e.trim()!==""?t:e}normalizeKey(e){return e.replace(/-([a-z])/g,(t,s)=>s.toUpperCase())}buildAliases(e){const t={};for(const s of this.globalOptions)s.short&&(t[s.short]=s.name);if(e?.options)for(const s of e.options)s.short&&(t[s.short]=s.name);return t}booleanFlags(e){const t=new Set;for(const s of this.globalOptions)s.type==="boolean"&&t.add(this.normalizeKey(s.name));if(e?.options)for(const s of e.options)s.type==="boolean"?t.add(this.normalizeKey(s.name)):s.type&&t.delete(this.normalizeKey(s.name));return t}applyDefaults(e,t){const s=[];t?.options&&s.push(t.options),s.push(this.globalOptions);for(const f of s)for(const n of f){const a=this.normalizeKey(n.name);e[a]===void 0&&n.default!==void 0&&(e[a]=n.default)}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const m={31:"red",32:"green",33:"yellow",34:"blue",35:"magenta",36:"cyan",90:"gray"},p={41:"red",42:"green",43:"yellow",44:"blue",45:"magenta",46:"cyan",100:"gray"};function h(t,
|
|
1
|
+
const m={31:"red",32:"green",33:"yellow",34:"blue",35:"magenta",36:"cyan",90:"gray"},p={41:"red",42:"green",43:"yellow",44:"blue",45:"magenta",46:"cyan",100:"gray"};function h(t,e,o){const n=i=>Math.max(0,Math.min(255,Math.round(i))).toString(16).padStart(2,"0");return`#${n(t)}${n(e)}${n(o)}`}export function toInkColor(t){const e="ansi256:";return t.startsWith(e)?`ansi256(${t.slice(e.length)})`:t}function b(t,e,o){if(t[e]!==o)return null;if(t[e+1]==="5"&&t[e+2]!==void 0){const n=Number(t[e+2]);return Number.isInteger(n)&&n>=0&&n<=255?{value:`ansi256:${n}`,next:e+3}:null}if(t[e+1]==="2"&&t[e+4]!==void 0){const[n,i,s]=[t[e+2],t[e+3],t[e+4]].map(Number);return[n,i,s].every(u=>Number.isFinite(u))?{value:h(n,i,s),next:e+5}:null}return null}export function parseAnsiSpans(t){const e=[];let o,n="";const i=()=>{o&&o.text&&e.push(o),o=void 0},s=()=>{n&&(e.push({text:n}),n="")},u=()=>(o||(s(),o={text:""}),o),d=t.split(/(\x1b\[[0-9;]*m)/);for(const c of d){const g=/^\x1b\[([0-9;]*)m$/.exec(c);if(!g){c&&(o?o.text+=c:n+=c);continue}const a=g[1].split(";").filter(r=>r!=="");for(let r=0;r<a.length;){const x=b(a,r,"38");if(x){u().color=x.value,r=x.next;continue}const f=b(a,r,"48");if(f){u().backgroundColor=f.value,r=f.next;continue}const l=a[r];l==="0"?i():l==="1"?u().bold=!0:l==="2"?u().dim=!0:m[l]?u().color=m[l]:p[l]&&(u().backgroundColor=p[l]),r++}}return i(),s(),e}export function stripAnsi(t){return t.replace(/\x1b\[[0-9;]*m/g,"")}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{mkdtempSync as _,writeFileSync as r}from"node:fs";import{tmpdir as a}from"node:os";import{join as
|
|
1
|
+
import{mkdtempSync as _,writeFileSync as r}from"node:fs";import{tmpdir as a}from"node:os";import{join as s}from"node:path";export function writeFixtureTranscript(){const o=_(s(a(),"weave-sl-mock-")),t=s(o,"session.jsonl"),e=(n,i)=>`${JSON.stringify({type:"assistant",uuid:n,message:{id:n,usage:i}})}
|
|
2
2
|
`;return r(t,e("msg_mock_1",{input_tokens:3e5,output_tokens:2e4,cache_read_input_tokens:1e5})+e("msg_mock_1",{input_tokens:3e5,output_tokens:2e4,cache_read_input_tokens:1e5})+e("msg_mock_2",{input_tokens:4e5,output_tokens:3e4,cache_read_input_tokens:110900})),t}export function buildMockInput(o,t=100,e=""){return{session_id:"mock-session",transcript_path:e,model:{display_name:"Fable 5",id:"claude-fable-5"},workspace:{current_dir:o},effort:{level:"high"},context_window:{used_percentage:42,remaining_percentage:58,context_window_size:1e6,total_input_tokens:42e4,total_output_tokens:0},cost:{total_cost_usd:1.234},rate_limits:{five_hour:{used_percentage:33,resets_at:0}},terminal:{columns:t}}}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{jsx as i,jsxs as w}from"react/jsx-runtime";import{spawnSync as Y}from"node:child_process";import _ from"node:path";import{useEffect as q,useState as b}from"react";import{render as
|
|
1
|
+
import{jsx as i,jsxs as w}from"react/jsx-runtime";import{spawnSync as Y}from"node:child_process";import _ from"node:path";import{useEffect as q,useState as b}from"react";import{render as N,Box as S,Text as a,useInput as U,useApp as X,useStdout as z}from"ink";import{applyStatuslineConfig as Q,generateStatuslineScript as W,readStatuslineConfig as Z,writeGlobalStatuslineConfig as ee}from"@weavecode/server";import{parseAnsiSpans as re,toInkColor as $}from"./ansi.js";import{buildMockInput as ne,writeFixtureTranscript as te}from"./mock-input.js";import{t as c}from"../i18n/index.js";const oe=["gray","red","green","yellow","blue","magenta","cyan"],le=["ansi256:196","ansi256:208","ansi256:39","#f7768e","#7aa2f7","#9ece6a"],x=[...oe,...le];export const COLOR_CYCLE=x;const I=[" \u2502 "," \xB7 "," \u2014 "," ",""],L=["left","center","right"],ie=["percent","bar","both"],A=[{fill:"\u2588",empty:"\u2591"},{fill:"\u25B0",empty:"\u25B1"},{fill:"=",empty:"\xB7"},{fill:"#",empty:"-"}],P=[": "," ",": "," \xBB "],ae={project:["","\u{1F4C1}"],git:["","\u{1F33F}"],git_user:["","\u{1F464}"],changes:["","\u270F\uFE0F"],model:["","\u{1F916}"],thinking:["","\u{1F9E9}"],context:["","\u{1F9E0}"],tokens:["","\u{1F522}"],cost:["","\u{1F4B8}"],rate:["","\u26A1"],time:["","\u{1F552}"]};let j;function ce(){return j===void 0&&(j=te()),j}export function runPreviewLines(e,r,t){const l=W(e).replace(/^#!.*\n/,""),h=JSON.stringify(ne(r,t,ce()));try{const n=Y(process.execPath,["-e",l],{input:h,encoding:"utf8",timeout:15e3,windowsHide:!0});return n.status!==0?{lines:[],error:(n.stderr||c("preview.scriptExit",{status:String(n.status)})).trim()}:{lines:(n.stdout??"").replace(/\r\n/g,`
|
|
2
2
|
`).split(`
|
|
3
|
-
`).filter(v=>v!=="")}}catch(n){return{lines:[],error:String(n)}}}function y(e,r,t){return{...e,segments:{...e.segments,[r]:{...e.segments[r],...t}}}}export function toggleSegment(e,r){return y(e,r,{enabled:!e.segments[r].enabled})}export function cycleSegmentColor(e,r){const t=x.indexOf(e.segments[r].color);return y(e,r,{color:x[(t+1)%x.length]})}export function toggleSegmentBold(e,r){return y(e,r,{bold:!e.segments[r].bold})}export function toggleSegmentMerge(e,r){return y(e,r,{merge:!e.segments[r].merge})}export function cycleSegmentIcon(e,r){const t=ae[r]??[""],l=t.indexOf(e.segments[r].icon);return y(e,r,{icon:t[(l+1)%t.length]})}export function cycleContextStyle(e,r){if(r!=="context")return e;const t=ie,l=t.indexOf(e.segments[r].style??"both");return y(e,r,{style:t[(l+1)%t.length]})}export function cycleAlign(e){const r=L.indexOf(e.align);return{...e,align:L[(r+1)%L.length]}}export function togglePowerline(e){return{...e,powerline:{...e.powerline,enabled:!e.powerline.enabled}}}const k=["\uE0B0","\uE0B2","\uE0B4","\uE0B6"];export function cyclePowerlineGlyph(e){const r=e.powerline.separator??k[0],t=k.indexOf(r),l=k[(t+1)%k.length];return{...e,powerline:{...e.powerline,separator:l}}}export function cycleLogoColor(e){const r=x.indexOf(e.logoColor);return{...e,logoColor:x[(r+1)%x.length]}}export function cycleSeparator(e){const r=I.indexOf(e.separator);return{...e,separator:I[(r+1)%I.length]}}export function bumpRefreshInterval(e,r){return{...e,refreshInterval:Math.max(1,e.refreshInterval+r)}}export function setSegmentField(e,r,t,l){const h=l===""?{[t]:void 0}:{[t]:l};return y(e,r,h)}export function bumpBarCells(e,r){const t=Math.max(1,Math.min(40,e.bar.cells+r));return{...e,bar:{...e.bar,cells:t}}}export function cycleBarGlyph(e){const r=A.findIndex(l=>l.fill===e.bar.fill&&l.empty===e.bar.empty),t=A[(r+1)%A.length];return{...e,bar:{...e.bar,...t}}}export function cycleLabelSeparator(e){const r=P.indexOf(e.labelSeparator);return{...e,labelSeparator:P[(r+1)%P.length]}}export function clampCursor(e,r){const t=e.lines.length,l=Math.min(Math.max(r.row,0),t-1),h=e.lines[l]?.length??0,n=Math.min(Math.max(r.col,0),Math.max(0,h-1));return{row:l,col:n}}export function moveCursor(e,r,t,l){const h=e.lines.length;let n=Math.min(Math.max(r.row+t,0),h-1);for(;n!==r.row&&(e.lines[n]?.length??0)===0;)n-=Math.sign(n-r.row)||1;if((e.lines[n]?.length??0)===0)return r;const v=e.lines[n].length;let g=r.col+l;return g>=v&&(g=v-1),g<0&&(g=0),{row:n,col:g}}function se({line:e}){const r=re(e);return i(a,{children:r.map((t,l)=>i(a,{color:t.color?$(t.color):void 0,backgroundColor:t.backgroundColor?$(t.backgroundColor):void 0,bold:t.bold,dimColor:t.dim,children:t.text},l))})}function ue({segmentKey:e,seg:r,focused:t}){const l=`${r.enabled?"\u25CF":"\u25CB"}${r.icon?r.icon:""}${e}`;return i(a,{color:$(r.enabled?r.color:"gray"),bold:t,inverse:t,dimColor:!r.enabled,children:l})}function fe({initialConfig:e,projectPath:r,initialCursor:t}){const{exit:l}=X(),{stdout:h}=z(),[n,v]=b(e),[g,B]=b(t),[F,D]=b({lines:[]}),[J,T]=b(!1),[G,M]=b(null),[H,R]=b(!1),[m,C]=b(null),O=Math.max(60,h?.columns??100),f=n.lines[g.row]?.[g.col],p=s=>{v(s),T(!0),M(null)};q(()=>{const s=setTimeout(()=>{D(runPreviewLines(n,r,O))},60);return()=>clearTimeout(s)},[n,O,r]),
|
|
3
|
+
`).filter(v=>v!=="")}}catch(n){return{lines:[],error:String(n)}}}function y(e,r,t){return{...e,segments:{...e.segments,[r]:{...e.segments[r],...t}}}}export function toggleSegment(e,r){return y(e,r,{enabled:!e.segments[r].enabled})}export function cycleSegmentColor(e,r){const t=x.indexOf(e.segments[r].color);return y(e,r,{color:x[(t+1)%x.length]})}export function toggleSegmentBold(e,r){return y(e,r,{bold:!e.segments[r].bold})}export function toggleSegmentMerge(e,r){return y(e,r,{merge:!e.segments[r].merge})}export function cycleSegmentIcon(e,r){const t=ae[r]??[""],l=t.indexOf(e.segments[r].icon);return y(e,r,{icon:t[(l+1)%t.length]})}export function cycleContextStyle(e,r){if(r!=="context")return e;const t=ie,l=t.indexOf(e.segments[r].style??"both");return y(e,r,{style:t[(l+1)%t.length]})}export function cycleAlign(e){const r=L.indexOf(e.align);return{...e,align:L[(r+1)%L.length]}}export function togglePowerline(e){return{...e,powerline:{...e.powerline,enabled:!e.powerline.enabled}}}const k=["\uE0B0","\uE0B2","\uE0B4","\uE0B6"];export function cyclePowerlineGlyph(e){const r=e.powerline.separator??k[0],t=k.indexOf(r),l=k[(t+1)%k.length];return{...e,powerline:{...e.powerline,separator:l}}}export function cycleLogoColor(e){const r=x.indexOf(e.logoColor);return{...e,logoColor:x[(r+1)%x.length]}}export function cycleSeparator(e){const r=I.indexOf(e.separator);return{...e,separator:I[(r+1)%I.length]}}export function bumpRefreshInterval(e,r){return{...e,refreshInterval:Math.max(1,e.refreshInterval+r)}}export function setSegmentField(e,r,t,l){const h=l===""?{[t]:void 0}:{[t]:l};return y(e,r,h)}export function bumpBarCells(e,r){const t=Math.max(1,Math.min(40,e.bar.cells+r));return{...e,bar:{...e.bar,cells:t}}}export function cycleBarGlyph(e){const r=A.findIndex(l=>l.fill===e.bar.fill&&l.empty===e.bar.empty),t=A[(r+1)%A.length];return{...e,bar:{...e.bar,...t}}}export function cycleLabelSeparator(e){const r=P.indexOf(e.labelSeparator);return{...e,labelSeparator:P[(r+1)%P.length]}}export function clampCursor(e,r){const t=e.lines.length,l=Math.min(Math.max(r.row,0),t-1),h=e.lines[l]?.length??0,n=Math.min(Math.max(r.col,0),Math.max(0,h-1));return{row:l,col:n}}export function moveCursor(e,r,t,l){const h=e.lines.length;let n=Math.min(Math.max(r.row+t,0),h-1);for(;n!==r.row&&(e.lines[n]?.length??0)===0;)n-=Math.sign(n-r.row)||1;if((e.lines[n]?.length??0)===0)return r;const v=e.lines[n].length;let g=r.col+l;return g>=v&&(g=v-1),g<0&&(g=0),{row:n,col:g}}function se({line:e}){const r=re(e);return i(a,{children:r.map((t,l)=>i(a,{color:t.color?$(t.color):void 0,backgroundColor:t.backgroundColor?$(t.backgroundColor):void 0,bold:t.bold,dimColor:t.dim,children:t.text},l))})}function ue({segmentKey:e,seg:r,focused:t}){const l=`${r.enabled?"\u25CF":"\u25CB"}${r.icon?r.icon:""}${e}`;return i(a,{color:$(r.enabled?r.color:"gray"),bold:t,inverse:t,dimColor:!r.enabled,children:l})}function fe({initialConfig:e,projectPath:r,initialCursor:t}){const{exit:l}=X(),{stdout:h}=z(),[n,v]=b(e),[g,B]=b(t),[F,D]=b({lines:[]}),[J,T]=b(!1),[G,M]=b(null),[H,R]=b(!1),[m,C]=b(null),O=Math.max(60,h?.columns??100),f=n.lines[g.row]?.[g.col],p=s=>{v(s),T(!0),M(null)};q(()=>{const s=setTimeout(()=>{D(runPreviewLines(n,r,O))},60);return()=>clearTimeout(s)},[n,O,r]),U((s,u)=>{if(!H){if(m){if(u.escape){C(null);return}if(u.return){const{key:o,field:E,buf:K}=m;p(V=>setSegmentField(V,o,E,K)),C(null);return}if(u.backspace||u.delete){C({...m,buf:m.buf.slice(0,-1)});return}s&&!u.ctrl&&!u.meta&&C({...m,buf:m.buf+s});return}if(s==="q"){l();return}if(u.escape){l();return}if(u.upArrow){B(o=>moveCursor(n,o,-1,0));return}if(u.downArrow){B(o=>moveCursor(n,o,1,0));return}if(u.leftArrow){B(o=>moveCursor(n,o,0,-1));return}if(u.rightArrow){B(o=>moveCursor(n,o,0,1));return}if(!u.return){if(s==="B"){p(cycleBarGlyph);return}if(s==="L"){p(cycleLabelSeparator);return}if(s==="["){p(o=>bumpBarCells(o,-1));return}if(s==="]"){p(o=>bumpBarCells(o,1));return}if(f){if(s==="n"){C({key:f,field:"label",buf:n.segments[f].label??""});return}if(s==="f"){C({key:f,field:"format",buf:n.segments[f].format??""});return}switch(s.toLowerCase()){case" ":p(o=>toggleSegment(o,f));return;case"c":p(o=>cycleSegmentColor(o,f));return;case"b":p(o=>toggleSegmentBold(o,f));return;case"m":p(o=>toggleSegmentMerge(o,f));return;case"i":p(o=>cycleSegmentIcon(o,f));return;case"v":p(o=>cycleContextStyle(o,f));return;case"a":p(o=>cycleAlign(o));return;case"p":p(o=>togglePowerline(o));return;case"g":p(o=>cyclePowerlineGlyph(o));return;case"l":p(o=>cycleLogoColor(o));return;case"s":p(o=>cycleSeparator(o));return;case"r":D(runPreviewLines(n,r,O)),M(c("preview.reRendered"));return;case"w":(async()=>{R(!0);try{(n.source??"global")==="global"&&await ee(n),await Q(r,n),T(!1),M(c("preview.saved"))}catch(o){M(c("preview.writeFailed",{error:String(o)}))}finally{R(!1)}})();return;default:break}}}}});const d=f?n.segments[f]:void 0;return w(S,{flexDirection:"column",gap:0,children:[w(S,{children:[i(a,{bold:!0,color:"cyan",children:"weave statusline preview"}),w(a,{dimColor:!0,children:[" \u2014 ",_.basename(r)," "]}),i(a,{dimColor:!0,children:c("preview.headerMeta",{source:n.source??"global",refresh:n.refreshInterval,align:n.align,powerline:n.powerline.enabled?c("preview.on"):c("preview.off")})}),J&&i(a,{color:"yellow",children:c("preview.unsaved")})]}),i(S,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,marginY:0,children:F.error?i(a,{color:"red",children:c("preview.scriptError",{error:F.error})}):F.lines.length?F.lines.map((s,u)=>i(se,{line:s},u)):i(a,{dimColor:!0,children:c("preview.rendering")})}),w(S,{flexDirection:"column",children:[i(a,{dimColor:!0,children:c("preview.layoutHelp")}),n.lines.map((s,u)=>w(S,{gap:1,children:[i(a,{dimColor:!0,children:c("preview.rowLabel",{row:u+1})}),s.map((o,E)=>i(ue,{segmentKey:o,seg:n.segments[o],focused:g.row===u&&g.col===E},o))]},u))]}),w(S,{flexDirection:"column",gap:0,marginTop:1,children:[m?w(a,{children:[i(a,{bold:!0,color:"yellow",children:` ${m.key}.${m.field} `})," ",i(a,{children:m.buf}),i(a,{inverse:!0,children:" "}),i(a,{dimColor:!0,children:c("preview.editConfirm")})]}):d&&f?w(a,{children:[i(a,{bold:!0,inverse:!0,children:` ${f} `})," ",i(a,{dimColor:!0,children:c("preview.segDetail",{color:d.color,bold:d.bold?c("preview.on"):c("preview.off"),merge:d.merge?c("preview.on"):c("preview.off"),icon:d.icon||"\u2014",style:f==="context"?c("preview.styleSuffix",{style:d.style??"both"}):""})})]}):null,!m&&d&&f&&(d.label||d.format)?w(a,{dimColor:!0,children:[d.label?c("preview.labelValue",{value:`${d.label}${n.labelSeparator}`}):"",d.format?c("preview.formatValue",{value:d.format}):""]}):null,i(a,{dimColor:!0,children:c("preview.barLine",{cells:n.bar.cells,glyphs:`${n.bar.fill}${n.bar.empty}`,labelSep:JSON.stringify(n.labelSeparator)})}),i(a,{dimColor:!0,children:c("preview.keysHelp")}),G&&i(a,{color:"green",children:G}),H&&i(a,{color:"yellow",children:c("preview.writing")})]})]})}export async function runStatuslinePreview(e){const r=await Z(e),t=clampCursor(r,{row:0,col:0});await N(i(fe,{initialConfig:r,projectPath:e,initialCursor:t}),{exitOnCtrlC:!0}).waitUntilExit?.()}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weavecode/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "CLI entry point for weave — parser, commands, and init executor",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"node": ">=22.5.0"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@weavecode/core": "^0.1.
|
|
26
|
-
"@weavecode/harness": "^0.1.
|
|
27
|
-
"@weavecode/server": "^0.1.
|
|
28
|
-
"@weavecode/templates": "^0.1.
|
|
25
|
+
"@weavecode/core": "^0.1.7",
|
|
26
|
+
"@weavecode/harness": "^0.1.7",
|
|
27
|
+
"@weavecode/server": "^0.1.7",
|
|
28
|
+
"@weavecode/templates": "^0.1.7"
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import a from"node:path";import{lstat as g,readFile as f,readlink as m,access as y}from"node:fs/promises";const o="CLAUDE.md",u="AGENTS.md",p=".claude/helpers/statusline.cjs",w=".claude/settings.json";async function h(t){try{return await y(t),!0}catch{return!1}}async function l(t){try{if(!(await g(t)).isSymbolicLink())return"file";const n=a.resolve(a.dirname(t),await m(t));return await h(n)?"link":"dangling"}catch{return"absent"}}async function S(t){const s=a.join(t,u);if(await l(s)!=="file")return null;const n=(await f(s,"utf-8").catch(()=>"")).trim();return{id:"instruction-link-not-materialised",params:{agents:u,claude:o},ok:n!==o}}async function j(t){const s=await l(a.join(t,o)),n=await l(a.join(t,u));return s==="absent"||n==="absent"?null:{id:"instruction-files-duplicated",params:{claude:o,agents:u},ok:!(s==="file"&&n==="file")}}async function E(t){const s=[];for(const n of[o,u]){const e=await l(a.join(t,n));if(e==="dangling"){s.push({id:"instruction-link-dangling",params:{name:n},ok:!1});break}e==="link"&&s.push({id:"instruction-link-dangling",params:{name:n},ok:!0})}return s}function L(t){const s=/"([^"]+)"/.exec(t);if(s)return s[1];const n=t.trim().split(/\s+/),e=n[n.length-1];return e&&d(e).includes(p)?e:null}function d(t){return t.replace(/\\/g,"/")}async function b(t){const s=a.join(t,w);let n;try{n=JSON.parse(await f(s,"utf-8"))}catch{return[]}const e=n.statusLine;if(!e||typeof e!="object")return[];const r=e.command;if(typeof r!="string"||!d(r).includes(p))return[];const i=L(r);if(!i)return[{id:"statusline-path-unresolved",params:{command:r},ok:!1}];const c=[{id:"statusline-path-unresolved",params:{command:r},ok:!0}],k=a.resolve(t)+a.sep;return a.resolve(i).startsWith(k)?(c.push({id:"statusline-path-foreign",params:{path:i},ok:!0}),c.push({id:"statusline-script-missing",params:{path:i},ok:await h(i)}),c):(c.push({id:"statusline-path-foreign",params:{path:i},ok:!1}),c)}export async function checkHarness(t){const[s,n,e,r]=await Promise.all([S(t),j(t),E(t),b(t)]);return[s,n,...e,...r].filter(i=>i!==null)}
|