@weavecode/weave 0.1.7 → 0.1.8
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/hono/dist/cjs/adapter/bun/serve-static.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/adapter/bun/websocket.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/context.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/helper/css/common.js +3 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/hono-base.js +4 -10
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/hono.js +0 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/basic-auth/index.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/bearer-auth/index.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/csrf/index.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/middleware/mount/index.js +4 -4
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +13 -11
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/router/reg-exp-router/prepared-router.js +4 -4
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +39 -51
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +15 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/utils/jwt/jwt.js +2 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/utils/mount.js +35 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/utils/url.js +10 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/cjs/validator/validator.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/context.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/helper/css/common.js +3 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/hono-base.js +4 -10
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/hono.js +0 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/basic-auth/index.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/bearer-auth/index.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/csrf/index.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/jwk/jwk.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/jwt/jwt.js +2 -2
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/language/language.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/middleware/mount/index.js +4 -4
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/router/reg-exp-router/node.js +13 -11
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/router/reg-exp-router/prepared-router.js +5 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/router/reg-exp-router/router.js +40 -52
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/router/reg-exp-router/trie.js +15 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/middleware/mount/index.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +3 -3
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/utils/mount.d.ts +4 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/types/utils/url.d.ts +1 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/utils/jwt/jwt.js +2 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/utils/mount.js +34 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/utils/url.js +10 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/dist/validator/validator.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/hono/package.json +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwks/remote.js +3 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/deflate.js +2 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +2 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/package.json +1 -1
- package/node_modules/@weavecode/cli/dist/commands/msg.js +2 -2
- package/node_modules/@weavecode/cli/dist/i18n/dict/en.js +1 -1
- package/node_modules/@weavecode/cli/dist/i18n/dict/zh.js +1 -1
- package/node_modules/@weavecode/cli/dist/init/claudemd-gen.js +3 -3
- 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.d.ts +78 -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/package.json +1 -1
- package/node_modules/@weavecode/harness/dist/claude/commands.d.ts +2 -0
- package/node_modules/@weavecode/harness/dist/claude/commands.js +3 -2
- package/node_modules/@weavecode/harness/dist/driver.d.ts +6 -0
- package/node_modules/@weavecode/harness/dist/zcode/assets.js +1 -1
- package/node_modules/@weavecode/harness/dist/zcode/capture.js +3 -3
- package/node_modules/@weavecode/harness/dist/zcode/mcp.js +2 -2
- package/node_modules/@weavecode/harness/package.json +2 -2
- package/node_modules/@weavecode/server/dist/daemon/dev-entry.js +1 -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/pet-seed.d.ts +6 -0
- package/node_modules/@weavecode/server/dist/daemon/pet-seed.js +1 -0
- package/node_modules/@weavecode/server/dist/daemon/pet-window.d.ts +17 -0
- package/node_modules/@weavecode/server/dist/daemon/pet-window.js +2 -0
- package/node_modules/@weavecode/server/dist/daemon/project-files.d.ts +1 -1
- package/node_modules/@weavecode/server/dist/daemon/project-files.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/routes/pets.d.ts +3 -0
- package/node_modules/@weavecode/server/dist/daemon/routes/pets.js +1 -0
- package/node_modules/@weavecode/server/dist/daemon/routes/settings-statusline.js +1 -1
- package/node_modules/@weavecode/server/dist/daemon/routes/visualizations.js +2 -1
- package/node_modules/@weavecode/server/dist/daemon/server.d.ts +2 -0
- package/node_modules/@weavecode/server/dist/daemon/settings.d.ts +21 -0
- package/node_modules/@weavecode/server/dist/daemon/settings.js +2 -2
- package/node_modules/@weavecode/server/dist/daemon/start.js +1 -1
- package/node_modules/@weavecode/server/dist/db/db.d.ts +4 -1
- package/node_modules/@weavecode/server/dist/db/db.js +2 -2
- package/node_modules/@weavecode/server/dist/db/paths.d.ts +4 -0
- package/node_modules/@weavecode/server/dist/db/paths.js +1 -1
- package/node_modules/@weavecode/server/dist/index.d.ts +1 -1
- package/node_modules/@weavecode/server/dist/index.js +1 -1
- package/node_modules/@weavecode/server/dist/repositories/hook-events.d.ts +6 -0
- package/node_modules/@weavecode/server/dist/repositories/hook-events.js +8 -5
- package/node_modules/@weavecode/server/dist/repositories/sessions.js +2 -2
- package/node_modules/@weavecode/server/package.json +4 -4
- package/node_modules/@weavecode/server/web/dist/assets/abnfDiagram-WEYOIA3C-t5OQjhuS.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{arc-CRZTRyjb.js → arc-De-uH_Q9.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/architectureDiagram-ZHVYKT53-ImPclD43.js +36 -0
- package/node_modules/@weavecode/server/web/dist/assets/{blockDiagram-RJAE7QA3-BIH8mSIZ.js → blockDiagram-RJAE7QA3-B5xEQs6X.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{c4Diagram-XDPPPE54-5YoKWFOD.js → c4Diagram-XDPPPE54-DP8MjIgJ.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/channel-C0RGiobt.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-2E7WHVMD-B653kMXt.js → chunk-2E7WHVMD-C3UFIDyj.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-2Q5K7J3B-f_A4_eDz.js → chunk-2Q5K7J3B-Bgw-3YfG.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-4EMNKR2T-v5j5qNGj.js → chunk-4EMNKR2T-Dy_Wq9qn.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/chunk-55XCU76K-D32C0DXX.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-5VM5RSS4-BeROhLXN.js → chunk-5VM5RSS4-Dpmi-9Gi.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-JWPE2WC7-D6dXb_jr.js → chunk-JWPE2WC7-CEYXaZDX.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/{chunk-VQ5W62QI-CnHdSEMi.js → chunk-VQ5W62QI-A616Pgzo.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/chunk-XXDRQBXY-CnxFMLWV.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/chunk-ZCHMQSOR-BhjCTig8.js +2 -0
- package/node_modules/@weavecode/server/web/dist/assets/{classDiagram-v2-4MYWR3UA-DQe1b_k8.js → classDiagram-v2-4MYWR3UA-rzlq5tPv.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/cose-bilkent-JH36ORCC-CxWQXzj8.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{cynefin-EF2NZ3EQ-OZotFKUu.js → cynefin-EF2NZ3EQ-AFHjx2wU.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/cynefinDiagram-WF24UDRP-Bp_Oaf9U.js +62 -0
- package/node_modules/@weavecode/server/web/dist/assets/dagre-NK4GIZVX-7oUPIU35.js +4 -0
- package/node_modules/@weavecode/server/web/dist/assets/diagram-CBK3MWTC-D_rS_rSY.js +24 -0
- package/node_modules/@weavecode/server/web/dist/assets/diagram-I5XIIV2D-Duc_cKMb.js +24 -0
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-ODIL2UCW-D9A6W8oB.js → diagram-ODIL2UCW-DA0XFVXm.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-PFBEJUXE-PeI-eyu2.js → diagram-PFBEJUXE-D1U0Xhtt.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/diagram-RJA3I4VV-CbDFY871.js +41 -0
- package/node_modules/@weavecode/server/web/dist/assets/{diagram-TYUNFSNR-D5KieEw5.js → diagram-TYUNFSNR-jPg9AxQv.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/ebnfDiagram-V4P3TTPT-ZHfGTB0N.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{elk-QONTBCTQ-D3xrVg0U.js → elk-QONTBCTQ-C-ESJrUi.js} +3 -3
- package/node_modules/@weavecode/server/web/dist/assets/{erDiagram-KYQIGQAA-y_V1cor7.js → erDiagram-KYQIGQAA-DGK7TeHj.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{flowDiagram-IUGLLWBU-BJ8Z0MkF.js → flowDiagram-IUGLLWBU-CVV4rL8v.js} +1 -1
- package/node_modules/@weavecode/server/web/dist/assets/ganttDiagram-R7GPNTJY-CuAwNvbm.js +292 -0
- package/node_modules/@weavecode/server/web/dist/assets/gitGraphDiagram-PDYL7XHY-D_15Wtf-.js +106 -0
- package/node_modules/@weavecode/server/web/dist/assets/infoDiagram-MVDRKAX5-ClqhbrCa.js +2 -0
- package/node_modules/@weavecode/server/web/dist/assets/{ishikawaDiagram-HPEHV2GE-ChEnND76.js → ishikawaDiagram-HPEHV2GE-CUJ891JX.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{journeyDiagram-BOSHW7O7-DHcNtpYF.js → journeyDiagram-BOSHW7O7-B4skiMu-.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{kanban-definition-FNSA4HC5-Dft7qpW5.js → kanban-definition-FNSA4HC5-UNGJR_y_.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/linear-BEB-UwbR.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/main-B_0jS_Gz.js +1096 -0
- package/node_modules/@weavecode/server/web/dist/assets/main-Czzlavi4.css +11 -0
- package/node_modules/@weavecode/server/web/dist/assets/{mermaid.core-D_Dp_Kl2.js → mermaid.core-knGXJfjz.js} +4 -4
- package/node_modules/@weavecode/server/web/dist/assets/{mindmap-definition-6OY57UG3-CM6OAd_-.js → mindmap-definition-6OY57UG3-CEldbr3a.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/modulepreload-polyfill-B5Qt9EMX.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/pegDiagram-ECIUJNBX-cNCkGLx3.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/pet-DJCpIDM5.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/pieDiagram-GNMPY74T-CfMEFiQD.js +39 -0
- package/node_modules/@weavecode/server/web/dist/assets/{quadrantDiagram-D57K4MC3-D8pQ_PU2.js → quadrantDiagram-D57K4MC3-knmi2rwP.js} +4 -4
- package/node_modules/@weavecode/server/web/dist/assets/railroadDiagram-Y72NRBL7-BJ7AzhEo.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{requirementDiagram-EQYSW5RA-C90DU5Ny.js → requirementDiagram-EQYSW5RA-Dte2LGQM.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{sankeyDiagram-SY24JHO5-B_poYGgJ.js → sankeyDiagram-SY24JHO5-3noLaWgd.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{sequenceDiagram-BLEHNHQU-DDW7b2Dn.js → sequenceDiagram-BLEHNHQU-CclOWTTc.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/sizeCapture-INFHLROL-B82sbLhA.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/{stateDiagram-v2-A6IESKWZ-CkVMAyxG.js → stateDiagram-v2-A6IESKWZ-BXfVDwSN.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/swimlanes-B3ENRKFQ-D4lKZaeV.js +1 -0
- package/node_modules/@weavecode/server/web/dist/assets/swimlanesDiagram-AYQRV4AK-DbdFh_d6.js +8 -0
- package/node_modules/@weavecode/server/web/dist/assets/{timeline-definition-JXYKGLGB-DnhkRGLb.js → timeline-definition-JXYKGLGB-D6H6zP5b.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{usecaseDiagram-WPOLBNNX-_TdIjC6Z.js → usecaseDiagram-WPOLBNNX-D2J2bKo_.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{vennDiagram-Q3Y3IDCW-FzgsymXB.js → vennDiagram-Q3Y3IDCW-pdRbIkpB.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{wardleyDiagram-IVAIDKWA-BwqimStC.js → wardleyDiagram-IVAIDKWA-Cyd2QPMf.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/assets/{xychartDiagram-4URNHDU4-CFjjVPIV.js → xychartDiagram-4URNHDU4-Bd4BkwVM.js} +2 -2
- package/node_modules/@weavecode/server/web/dist/index.html +3 -2
- package/node_modules/@weavecode/server/web/dist/pet.html +60 -0
- package/node_modules/@weavecode/templates/dist/index.d.ts +2 -0
- package/node_modules/@weavecode/templates/dist/index.js +1 -1
- package/node_modules/@weavecode/templates/dist/resources/pets/weave-spider/pet.json +7 -0
- package/node_modules/@weavecode/templates/dist/resources/pets/weave-spider/spritesheet.png +0 -0
- package/node_modules/@weavecode/templates/dist/resources/weave-market/.claude-plugin/marketplace.json +6 -0
- package/node_modules/@weavecode/templates/dist/resources/weave-market/plugins/core-skills/weave-pet-hatcher/.claude-plugin/plugin.json +8 -0
- package/node_modules/@weavecode/templates/dist/resources/weave-market/plugins/core-skills/weave-pet-hatcher/skills/weave-pet-hatcher/SKILL.md +121 -0
- package/node_modules/@weavecode/templates/dist/resources/weave-market/plugins/core-skills/weave-pet-hatcher/skills/weave-pet-hatcher/scripts/assemble-pet.mjs +308 -0
- package/node_modules/@weavecode/templates/dist/resources/weave-market/plugins/core-skills/weave-pet-hatcher/weave.json +4 -0
- package/node_modules/@weavecode/templates/package.json +2 -2
- package/package.json +11 -7
- package/scripts/preinstall.mjs +70 -0
- package/node_modules/@weavecode/server/web/dist/assets/abnfDiagram-WEYOIA3C-DDeQkTf5.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/architectureDiagram-ZHVYKT53-Dj54DE3O.js +0 -36
- package/node_modules/@weavecode/server/web/dist/assets/channel-5VM93AJ8.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/chunk-55XCU76K-CgEqeP7j.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/chunk-XXDRQBXY-BkG_e6PE.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/chunk-ZCHMQSOR-DxR-fxzs.js +0 -2
- package/node_modules/@weavecode/server/web/dist/assets/cose-bilkent-JH36ORCC-DThrA8S5.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/cynefinDiagram-WF24UDRP-DJjq2hfT.js +0 -62
- package/node_modules/@weavecode/server/web/dist/assets/dagre-NK4GIZVX-C2vH93HT.js +0 -4
- package/node_modules/@weavecode/server/web/dist/assets/diagram-CBK3MWTC-DrF_ScM-.js +0 -24
- package/node_modules/@weavecode/server/web/dist/assets/diagram-I5XIIV2D-D1qoUJ4t.js +0 -24
- package/node_modules/@weavecode/server/web/dist/assets/diagram-RJA3I4VV-DITY0Rd8.js +0 -41
- package/node_modules/@weavecode/server/web/dist/assets/ebnfDiagram-V4P3TTPT-DDylK-gz.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/ganttDiagram-R7GPNTJY-C0q-CS1T.js +0 -292
- package/node_modules/@weavecode/server/web/dist/assets/gitGraphDiagram-PDYL7XHY-BYTComiB.js +0 -106
- package/node_modules/@weavecode/server/web/dist/assets/index-BKxAxaVG.js +0 -1091
- package/node_modules/@weavecode/server/web/dist/assets/index-C0Sd4MH7.css +0 -11
- package/node_modules/@weavecode/server/web/dist/assets/infoDiagram-MVDRKAX5-DtixgjLP.js +0 -2
- package/node_modules/@weavecode/server/web/dist/assets/linear-DEo11t-X.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/pegDiagram-ECIUJNBX-_QkY0h8Q.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/pieDiagram-GNMPY74T-ZGr5vtDj.js +0 -39
- package/node_modules/@weavecode/server/web/dist/assets/railroadDiagram-Y72NRBL7-DUIo-WmA.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/sizeCapture-INFHLROL-CmKoqX6K.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/swimlanes-B3ENRKFQ-Dm_Omzky.js +0 -1
- package/node_modules/@weavecode/server/web/dist/assets/swimlanesDiagram-AYQRV4AK-Bjj8ZA4d.js +0 -8
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// weave-pet-hatcher 拼装校验脚本:行条带 → 切格校验 → 整图 + pet.json + contact sheet。
|
|
3
|
+
// 纯 node 零依赖(PNG 解码/编码手写,zlib 走内置)。只认 8-bit PNG
|
|
4
|
+
// (RGBA / RGB / 调色色);其他格式让用户先转 PNG。
|
|
5
|
+
// 用法见 SKILL.md §3。
|
|
6
|
+
import { deflateSync, inflateSync } from 'node:zlib';
|
|
7
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
|
|
10
|
+
const CELL_W = 192;
|
|
11
|
+
const CELL_H = 208;
|
|
12
|
+
const COLS = 8;
|
|
13
|
+
const ROW_FRAMES = [6, 8, 8, 4, 5, 8, 6, 6, 6, 8, 8];
|
|
14
|
+
const ROW_NAMES = [
|
|
15
|
+
'idle', 'running-right', 'running-left', 'waving', 'jumping',
|
|
16
|
+
'failed', 'waiting', 'running', 'review', 'look-a', 'look-b',
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
function parseArgs(argv) {
|
|
20
|
+
const out = {};
|
|
21
|
+
for (let i = 2; i < argv.length; i += 2) {
|
|
22
|
+
const key = argv[i]?.replace(/^--/, '');
|
|
23
|
+
if (!key || argv[i + 1] === undefined) usage(`missing value for --${key ?? '?'}`);
|
|
24
|
+
out[key] = argv[i + 1];
|
|
25
|
+
}
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function usage(msg) {
|
|
30
|
+
console.error(`assemble-pet: ${msg}
|
|
31
|
+
usage: node assemble-pet.mjs --rows-dir <dir> --out-dir <dir> --pet-id <id> \\
|
|
32
|
+
--display-name "<Name>" --description "<text>" [--version 1|2]`);
|
|
33
|
+
process.exit(2);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const args = parseArgs(process.argv);
|
|
37
|
+
const rowsDir = args['rows-dir'];
|
|
38
|
+
const outDir = args['out-dir'];
|
|
39
|
+
const petId = args['pet-id'];
|
|
40
|
+
const displayName = args['display-name'] ?? petId;
|
|
41
|
+
const description = args['description'] ?? '';
|
|
42
|
+
const version = Number(args['version'] ?? 2);
|
|
43
|
+
if (!rowsDir || !outDir || !petId) usage('rows-dir / out-dir / pet-id are required');
|
|
44
|
+
if (![1, 2].includes(version)) usage('--version must be 1 or 2');
|
|
45
|
+
if (!/^[a-z0-9][a-z0-9-]{0,63}$/.test(petId)) {
|
|
46
|
+
usage('pet-id must match [a-z0-9][a-z0-9-]{0,63}');
|
|
47
|
+
}
|
|
48
|
+
const rowCount = version === 2 ? 11 : 9;
|
|
49
|
+
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
// PNG decode(8-bit,color type 2/3/6,filter 0-4)
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
|
|
54
|
+
function decodePng(bytes) {
|
|
55
|
+
if (bytes.readUInt32BE(0) !== 0x89504e47) throw new Error('not a PNG file');
|
|
56
|
+
let pos = 8;
|
|
57
|
+
let width = 0;
|
|
58
|
+
let height = 0;
|
|
59
|
+
let colorType = 0;
|
|
60
|
+
const idat = [];
|
|
61
|
+
let palette = null;
|
|
62
|
+
let trns = null;
|
|
63
|
+
while (pos < bytes.length) {
|
|
64
|
+
const len = bytes.readUInt32BE(pos);
|
|
65
|
+
const type = bytes.toString('ascii', pos + 4, pos + 8);
|
|
66
|
+
const data = bytes.subarray(pos + 8, pos + 8 + len);
|
|
67
|
+
if (type === 'IHDR') {
|
|
68
|
+
width = data.readUInt32BE(0);
|
|
69
|
+
height = data.readUInt32BE(4);
|
|
70
|
+
const bitDepth = data[8];
|
|
71
|
+
colorType = data[9];
|
|
72
|
+
if (bitDepth !== 8) throw new Error(`unsupported bit depth ${bitDepth} (need 8)`);
|
|
73
|
+
if (![2, 3, 6].includes(colorType)) {
|
|
74
|
+
throw new Error(`unsupported color type ${colorType} (need 2/3/6)`);
|
|
75
|
+
}
|
|
76
|
+
} else if (type === 'PLTE') {
|
|
77
|
+
palette = Buffer.from(data);
|
|
78
|
+
} else if (type === 'tRNS') {
|
|
79
|
+
trns = Buffer.from(data);
|
|
80
|
+
} else if (type === 'IDAT') {
|
|
81
|
+
idat.push(data);
|
|
82
|
+
} else if (type === 'IEND') {
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
pos += 12 + len;
|
|
86
|
+
}
|
|
87
|
+
const channels = colorType === 6 ? 4 : colorType === 2 ? 3 : 1;
|
|
88
|
+
const stride = width * channels;
|
|
89
|
+
const raw = inflateSync(Buffer.concat(idat));
|
|
90
|
+
const bpp = channels;
|
|
91
|
+
const out = Buffer.alloc(width * height * 4);
|
|
92
|
+
const prev = Buffer.alloc(stride);
|
|
93
|
+
const line = Buffer.alloc(stride);
|
|
94
|
+
for (let y = 0; y < height; y++) {
|
|
95
|
+
const off = y * (stride + 1);
|
|
96
|
+
const filter = raw[off];
|
|
97
|
+
raw.copy(line, 0, off + 1, off + 1 + stride);
|
|
98
|
+
for (let x = 0; x < stride; x++) {
|
|
99
|
+
const a = x >= bpp ? line[x - bpp] : 0;
|
|
100
|
+
const b = prev[x];
|
|
101
|
+
const c = x >= bpp ? prev[x - bpp] : 0;
|
|
102
|
+
let v = line[x];
|
|
103
|
+
if (filter === 1) v += a;
|
|
104
|
+
else if (filter === 2) v += b;
|
|
105
|
+
else if (filter === 3) v += (a + b) >> 1;
|
|
106
|
+
else if (filter === 4) {
|
|
107
|
+
const p = a + b - c;
|
|
108
|
+
const pa = Math.abs(p - a);
|
|
109
|
+
const pb = Math.abs(p - b);
|
|
110
|
+
const pc = Math.abs(p - c);
|
|
111
|
+
v += pa <= pb && pa <= pc ? a : pb <= pc ? b : c;
|
|
112
|
+
}
|
|
113
|
+
line[x] = v & 0xff;
|
|
114
|
+
}
|
|
115
|
+
prev.set(line);
|
|
116
|
+
for (let x = 0; x < width; x++) {
|
|
117
|
+
const di = (y * width + x) * 4;
|
|
118
|
+
if (colorType === 6) {
|
|
119
|
+
out[di] = line[x * 4];
|
|
120
|
+
out[di + 1] = line[x * 4 + 1];
|
|
121
|
+
out[di + 2] = line[x * 4 + 2];
|
|
122
|
+
out[di + 3] = line[x * 4 + 3];
|
|
123
|
+
} else if (colorType === 2) {
|
|
124
|
+
out[di] = line[x * 3];
|
|
125
|
+
out[di + 1] = line[x * 3 + 1];
|
|
126
|
+
out[di + 2] = line[x * 3 + 2];
|
|
127
|
+
out[di + 3] = 255;
|
|
128
|
+
} else {
|
|
129
|
+
const idx = line[x];
|
|
130
|
+
out[di] = palette[idx * 3];
|
|
131
|
+
out[di + 1] = palette[idx * 3 + 1];
|
|
132
|
+
out[di + 2] = palette[idx * 3 + 2];
|
|
133
|
+
out[di + 3] = trns && idx < trns.length ? trns[idx] : 255;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return { width, height, rgba: out };
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
// PNG encode(RGBA8,filter 全 0)
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
|
|
144
|
+
const CRC_TABLE = (() => {
|
|
145
|
+
const t = new Int32Array(256);
|
|
146
|
+
for (let n = 0; n < 256; n++) {
|
|
147
|
+
let c = n;
|
|
148
|
+
for (let k = 0; k < 8; k++) c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
|
|
149
|
+
t[n] = c;
|
|
150
|
+
}
|
|
151
|
+
return t;
|
|
152
|
+
})();
|
|
153
|
+
|
|
154
|
+
function crc32(bytes) {
|
|
155
|
+
let c = -1;
|
|
156
|
+
for (const b of bytes) c = CRC_TABLE[(c ^ b) & 0xff] ^ (c >>> 8);
|
|
157
|
+
return (c ^ -1) >>> 0;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function chunk(type, data) {
|
|
161
|
+
const len = Buffer.alloc(4);
|
|
162
|
+
len.writeUInt32BE(data.length);
|
|
163
|
+
const body = Buffer.concat([Buffer.from(type, 'ascii'), data]);
|
|
164
|
+
const crc = Buffer.alloc(4);
|
|
165
|
+
crc.writeUInt32BE(crc32(body));
|
|
166
|
+
return Buffer.concat([len, body, crc]);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function encodePng(rgba, width, height) {
|
|
170
|
+
const ihdr = Buffer.alloc(13);
|
|
171
|
+
ihdr.writeUInt32BE(width, 0);
|
|
172
|
+
ihdr.writeUInt32BE(height, 4);
|
|
173
|
+
ihdr[8] = 8;
|
|
174
|
+
ihdr[9] = 6;
|
|
175
|
+
const raw = Buffer.alloc((width * 4 + 1) * height);
|
|
176
|
+
for (let y = 0; y < height; y++) {
|
|
177
|
+
raw[y * (width * 4 + 1)] = 0;
|
|
178
|
+
rgba.copy(raw, y * (width * 4 + 1) + 1, y * width * 4, (y + 1) * width * 4);
|
|
179
|
+
}
|
|
180
|
+
return Buffer.concat([
|
|
181
|
+
Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]),
|
|
182
|
+
chunk('IHDR', ihdr),
|
|
183
|
+
chunk('IDAT', deflateSync(raw, { level: 9 })),
|
|
184
|
+
chunk('IEND', Buffer.alloc(0)),
|
|
185
|
+
]);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// ---------------------------------------------------------------------------
|
|
189
|
+
// 抠像底 → alpha:四角取底色,与底色距离 < HARD 的像素按距离转透明
|
|
190
|
+
// (四角颜色不一致 >40 视为无抠像底,原样保留)
|
|
191
|
+
// ---------------------------------------------------------------------------
|
|
192
|
+
|
|
193
|
+
function chromaToAlpha(rgba, width, height) {
|
|
194
|
+
const cornerIdx = [0, (width - 1) * 4, (height - 1) * width * 4, ((height - 1) * width + width - 1) * 4];
|
|
195
|
+
const key = cornerIdx.map((i) => [rgba[i], rgba[i + 1], rgba[i + 2]]);
|
|
196
|
+
for (const c of key.slice(1)) {
|
|
197
|
+
if (Math.hypot(c[0] - key[0][0], c[1] - key[0][1], c[2] - key[0][2]) > 40) return false;
|
|
198
|
+
}
|
|
199
|
+
const HARD = 90;
|
|
200
|
+
for (let p = 0; p < width * height; p++) {
|
|
201
|
+
const i = p * 4;
|
|
202
|
+
const d = Math.hypot(rgba[i] - key[0][0], rgba[i + 1] - key[0][1], rgba[i + 2] - key[0][2]);
|
|
203
|
+
if (d < HARD) rgba[i + 3] = Math.min(rgba[i + 3], Math.round((d / HARD) * rgba[i + 3]));
|
|
204
|
+
if (rgba[i + 3] === 0) {
|
|
205
|
+
rgba[i] = key[0][0];
|
|
206
|
+
rgba[i + 1] = key[0][1];
|
|
207
|
+
rgba[i + 2] = key[0][2];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// ---------------------------------------------------------------------------
|
|
214
|
+
// main:逐行校验 → 拼整图 → pet.json → contact sheet(一格宽缩略竖排)
|
|
215
|
+
// ---------------------------------------------------------------------------
|
|
216
|
+
|
|
217
|
+
mkdirSync(outDir, { recursive: true });
|
|
218
|
+
const sheetW = COLS * CELL_W;
|
|
219
|
+
const sheetH = rowCount * CELL_H;
|
|
220
|
+
const sheet = Buffer.alloc(sheetW * sheetH * 4);
|
|
221
|
+
|
|
222
|
+
for (let rowIdx = 0; rowIdx < rowCount; rowIdx++) {
|
|
223
|
+
const framesExpected = ROW_FRAMES[rowIdx];
|
|
224
|
+
const file = path.join(rowsDir, `row-${rowIdx}.png`);
|
|
225
|
+
let img;
|
|
226
|
+
try {
|
|
227
|
+
img = decodePng(readFileSync(file));
|
|
228
|
+
} catch (e) {
|
|
229
|
+
console.error(`row-${rowIdx}: cannot read ${file} — ${e.message}`);
|
|
230
|
+
process.exit(1);
|
|
231
|
+
}
|
|
232
|
+
if (img.height !== CELL_H) {
|
|
233
|
+
console.error(`row-${rowIdx}: strip height ${img.height} != ${CELL_H} — regenerate this row`);
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
if (img.width !== framesExpected * CELL_W) {
|
|
237
|
+
console.error(
|
|
238
|
+
`row-${rowIdx}: strip width ${img.width} != ${framesExpected} cells x ${CELL_W} — regenerate this row`,
|
|
239
|
+
);
|
|
240
|
+
process.exit(1);
|
|
241
|
+
}
|
|
242
|
+
const despilled = chromaToAlpha(img.rgba, img.width, img.height);
|
|
243
|
+
for (let y = 0; y < CELL_H; y++) {
|
|
244
|
+
for (let x = 0; x < img.width; x++) {
|
|
245
|
+
const si = (y * img.width + x) * 4;
|
|
246
|
+
const di = ((rowIdx * CELL_H + y) * sheetW + x) * 4;
|
|
247
|
+
sheet[di] = img.rgba[si];
|
|
248
|
+
sheet[di + 1] = img.rgba[si + 1];
|
|
249
|
+
sheet[di + 2] = img.rgba[si + 2];
|
|
250
|
+
sheet[di + 3] = img.rgba[si + 3];
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
console.log(`row-${rowIdx} (${ROW_NAMES[rowIdx]}): ok (${framesExpected} frames${despilled ? ', chroma keyed' : ''})`);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
writeFileSync(path.join(outDir, 'spritesheet.png'), encodePng(sheet, sheetW, sheetH));
|
|
257
|
+
writeFileSync(
|
|
258
|
+
path.join(outDir, 'pet.json'),
|
|
259
|
+
`${JSON.stringify(
|
|
260
|
+
{
|
|
261
|
+
id: petId,
|
|
262
|
+
displayName,
|
|
263
|
+
description,
|
|
264
|
+
spriteVersionNumber: version,
|
|
265
|
+
spritesheetPath: 'spritesheet.png',
|
|
266
|
+
},
|
|
267
|
+
null,
|
|
268
|
+
2,
|
|
269
|
+
)}\n`,
|
|
270
|
+
);
|
|
271
|
+
|
|
272
|
+
// contact sheet:每行缩略(一格宽)竖排,行号标注在左侧留白
|
|
273
|
+
const csCell = Math.round(CELL_W / 2); // 缩略格宽 96
|
|
274
|
+
const csCellH = Math.round((CELL_H / CELL_W) * csCell);
|
|
275
|
+
const csPad = 28;
|
|
276
|
+
const csW = csPad + COLS * csCell + 8;
|
|
277
|
+
const csH = rowCount * (csCellH + 6) + 8;
|
|
278
|
+
const cs = Buffer.alloc(csW * csH * 4);
|
|
279
|
+
// 白底
|
|
280
|
+
for (let p = 0; p < csW * csH; p++) {
|
|
281
|
+
cs[p * 4] = 250;
|
|
282
|
+
cs[p * 4 + 1] = 250;
|
|
283
|
+
cs[p * 4 + 2] = 250;
|
|
284
|
+
cs[p * 4 + 3] = 255;
|
|
285
|
+
}
|
|
286
|
+
for (let rowIdx = 0; rowIdx < rowCount; rowIdx++) {
|
|
287
|
+
const oy = rowIdx * (csCellH + 6) + 4;
|
|
288
|
+
for (let cy = 0; cy < csCellH; cy++) {
|
|
289
|
+
for (let cx = 0; cx < COLS * csCell; cx++) {
|
|
290
|
+
// 最近邻取样回整图
|
|
291
|
+
const sx = Math.floor((cx / csCell)) * CELL_W + Math.floor(((cx % csCell) / csCell) * CELL_W);
|
|
292
|
+
const sy = Math.floor((cy / csCellH) * CELL_H);
|
|
293
|
+
const si = ((rowIdx * CELL_H + sy) * sheetW + sx) * 4;
|
|
294
|
+
const di = ((oy + cy) * csW + csPad + cx) * 4;
|
|
295
|
+
const a = sheet[si + 3] / 255;
|
|
296
|
+
if (a === 0) continue;
|
|
297
|
+
cs[di] = Math.round(sheet[si] * a + cs[di] * (1 - a));
|
|
298
|
+
cs[di + 1] = Math.round(sheet[si + 1] * a + cs[di + 1] * (1 - a));
|
|
299
|
+
cs[di + 2] = Math.round(sheet[si + 2] * a + cs[di + 2] * (1 - a));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
writeFileSync(path.join(outDir, 'contact-sheet.png'), encodePng(cs, csW, csH));
|
|
304
|
+
|
|
305
|
+
console.log(`\nassembled: ${path.join(outDir, 'spritesheet.png')} (${sheetW}x${sheetH})`);
|
|
306
|
+
console.log(`manifest: ${path.join(outDir, 'pet.json')} (v${version})`);
|
|
307
|
+
console.log(`contact sheet: ${path.join(outDir, 'contact-sheet.png')} — inspect it row by row`);
|
|
308
|
+
console.log('next: copy pet.json + spritesheet.png into <pets-root>/<pet-id>/');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weavecode/templates",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Weave built-in resource repository (marketplace-shaped): packs, rule packs, and init assets",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,6 +20,6 @@
|
|
|
20
20
|
"node": ">=22.5.0"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@weavecode/core": "^0.1.
|
|
23
|
+
"@weavecode/core": "^0.1.8"
|
|
24
24
|
}
|
|
25
25
|
}
|
package/package.json
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weavecode/weave",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "All-in-one install for weave — CLI, daemon + dashboard, harness drivers, and the built-in resource repo in a single npm package (self-contained bundle)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"weave": "./bin/weave.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
|
-
"bin"
|
|
10
|
+
"bin",
|
|
11
|
+
"scripts"
|
|
11
12
|
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"preinstall": "node ./scripts/preinstall.mjs"
|
|
15
|
+
},
|
|
12
16
|
"sideEffects": false,
|
|
13
17
|
"author": "zijing66",
|
|
14
18
|
"license": "Apache-2.0",
|
|
@@ -32,11 +36,11 @@
|
|
|
32
36
|
"registry": "https://registry.npmjs.org/"
|
|
33
37
|
},
|
|
34
38
|
"dependencies": {
|
|
35
|
-
"@weavecode/core": "^0.1.
|
|
36
|
-
"@weavecode/harness": "^0.1.
|
|
37
|
-
"@weavecode/templates": "^0.1.
|
|
38
|
-
"@weavecode/server": "^0.1.
|
|
39
|
-
"@weavecode/cli": "^0.1.
|
|
39
|
+
"@weavecode/core": "^0.1.8",
|
|
40
|
+
"@weavecode/harness": "^0.1.8",
|
|
41
|
+
"@weavecode/templates": "^0.1.8",
|
|
42
|
+
"@weavecode/server": "^0.1.8",
|
|
43
|
+
"@weavecode/cli": "^0.1.8",
|
|
40
44
|
"zod": "^3.25.76",
|
|
41
45
|
"smol-toml": "^1.3.0",
|
|
42
46
|
"@modelcontextprotocol/sdk": "1.32.1",
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 全局安装/升级前的尽力停机:旧 daemon 还跑着时,新版本一启动就会和它抢同一个
|
|
3
|
+
* 库(WAL 写锁、迁移 DDL),升级期最容易出岔子的就是这一段。
|
|
4
|
+
*
|
|
5
|
+
* 停不掉也继续装——安装失败比留着一个旧进程更糟,所以这里吞掉所有错误、恒
|
|
6
|
+
* exit 0。Windows 上没有 SIGTERM 语义,process.kill 就是强制终止;daemon 的
|
|
7
|
+
* 优雅收尾(WAL checkpoint)由它自己的 shutdown 负责,这里只保证它先退场。
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
10
|
+
import { homedir } from 'node:os';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
|
|
13
|
+
function configDir() {
|
|
14
|
+
if (process.platform === 'win32') {
|
|
15
|
+
return process.env.APPDATA ?? path.join(homedir(), 'AppData', 'Roaming');
|
|
16
|
+
}
|
|
17
|
+
if (process.platform === 'darwin') {
|
|
18
|
+
return path.join(homedir(), 'Library', 'Application Support');
|
|
19
|
+
}
|
|
20
|
+
return process.env.XDG_CONFIG_HOME ?? path.join(homedir(), '.config');
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** daemon 状态文件:0.1.7 起在 `cache/` 下,更早的版本放在数据目录根部。 */
|
|
24
|
+
function readDaemonState() {
|
|
25
|
+
const root = path.join(configDir(), 'weave');
|
|
26
|
+
for (const candidate of [path.join(root, 'cache', 'daemon.json'), path.join(root, 'daemon.json')]) {
|
|
27
|
+
try {
|
|
28
|
+
if (!existsSync(candidate)) continue;
|
|
29
|
+
const parsed = JSON.parse(readFileSync(candidate, 'utf8'));
|
|
30
|
+
if (parsed && typeof parsed === 'object') return parsed;
|
|
31
|
+
} catch {
|
|
32
|
+
/* 坏文件/读不到:当作没有 daemon */
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function pidAlive(pid) {
|
|
39
|
+
try {
|
|
40
|
+
process.kill(pid, 0);
|
|
41
|
+
return true;
|
|
42
|
+
} catch (e) {
|
|
43
|
+
// EPERM = 进程在但没权限:仍算活着(不去碰它)
|
|
44
|
+
return e && e.code !== 'ESRCH';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// 只在**全局安装**时动手:workspace 里跑 `pnpm install` 会连开发者本机的
|
|
49
|
+
// daemon 一起杀掉,那是灾难。npm 分别在两者上设这个环境变量。
|
|
50
|
+
if (process.env.npm_config_global !== 'true') process.exit(0);
|
|
51
|
+
|
|
52
|
+
const state = readDaemonState();
|
|
53
|
+
const pid = state && typeof state.pid === 'number' ? state.pid : null;
|
|
54
|
+
if (!pid || pid <= 0 || !pidAlive(pid)) process.exit(0);
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
process.kill(pid);
|
|
58
|
+
} catch {
|
|
59
|
+
process.exit(0); // 没权限/已经退了:都不该挡住安装
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// 等它真退:shutdown 链(inbox worker 的 DB 连接、WAL 锁释放)在 kill 之后还在收尾,
|
|
63
|
+
// 立刻返回会让紧跟的新进程撞上垂死锁。5s 上限,超时也继续装。
|
|
64
|
+
const deadline = Date.now() + 5_000;
|
|
65
|
+
const timer = setInterval(() => {
|
|
66
|
+
if (!pidAlive(pid) || Date.now() > deadline) {
|
|
67
|
+
clearInterval(timer);
|
|
68
|
+
process.exit(0);
|
|
69
|
+
}
|
|
70
|
+
}, 100);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as p,r as u,d as a}from"./chunk-2E7WHVMD-B653kMXt.js";import{p as f}from"./chunk-JWPE2WC7-D6dXb_jr.js";import{_ as n,l as o}from"./mermaid.core-D_Dp_Kl2.js";import"./index-BKxAxaVG.js";import{M as c,b as d}from"./cynefin-EF2NZ3EQ-OZotFKUu.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
|