cli-jaw 2.0.6 โ 2.0.13
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/README.ja.md +24 -11
- package/README.ko.md +24 -11
- package/README.md +95 -11
- package/README.zh-CN.md +24 -11
- package/dist/bin/cli-jaw.js +4 -1
- package/dist/bin/cli-jaw.js.map +1 -1
- package/dist/bin/commands/browser-web-ai.js +2 -2
- package/dist/bin/commands/browser-web-ai.js.map +1 -1
- package/dist/bin/commands/doctor.js +12 -2
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/init.js +4 -2
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/project.js +167 -0
- package/dist/bin/commands/project.js.map +1 -0
- package/dist/bin/commands/tui/types.js +20 -4
- package/dist/bin/commands/tui/types.js.map +1 -1
- package/dist/bin/postinstall.js +226 -24
- package/dist/bin/postinstall.js.map +1 -1
- package/dist/lib/mime-detect.js +5 -0
- package/dist/lib/mime-detect.js.map +1 -1
- package/dist/scripts/fresh-install-smoke.js +78 -6
- package/dist/scripts/fresh-install-smoke.js.map +1 -1
- package/dist/src/agent/agy-runtime.js +15 -0
- package/dist/src/agent/agy-runtime.js.map +1 -0
- package/dist/src/agent/args.js +44 -5
- package/dist/src/agent/args.js.map +1 -1
- package/dist/src/agent/cli-helpers.js +1 -1
- package/dist/src/agent/cli-helpers.js.map +1 -1
- package/dist/src/agent/lifecycle-handler.js +6 -3
- package/dist/src/agent/lifecycle-handler.js.map +1 -1
- package/dist/src/agent/session-persistence.js +1 -1
- package/dist/src/agent/session-persistence.js.map +1 -1
- package/dist/src/agent/smoke-detector.js +3 -0
- package/dist/src/agent/smoke-detector.js.map +1 -1
- package/dist/src/agent/spawn/resume.js +2 -0
- package/dist/src/agent/spawn/resume.js.map +1 -1
- package/dist/src/agent/spawn-env.js +6 -0
- package/dist/src/agent/spawn-env.js.map +1 -1
- package/dist/src/agent/spawn.js +120 -15
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/browser/web-ai/capability-observation-presets.js +1 -1
- package/dist/src/browser/web-ai/capability-observation-presets.js.map +1 -1
- package/dist/src/browser/web-ai/capability-registry.js +6 -5
- package/dist/src/browser/web-ai/capability-registry.js.map +1 -1
- package/dist/src/browser/web-ai/chatgpt-attachments.js +7 -0
- package/dist/src/browser/web-ai/chatgpt-attachments.js.map +1 -1
- package/dist/src/browser/web-ai/context-pack/builder.js +19 -4
- package/dist/src/browser/web-ai/context-pack/builder.js.map +1 -1
- package/dist/src/browser/web-ai/context-pack/zip-writer.js +116 -0
- package/dist/src/browser/web-ai/context-pack/zip-writer.js.map +1 -0
- package/dist/src/browser/web-ai/gemini-live.js +21 -3
- package/dist/src/browser/web-ai/gemini-live.js.map +1 -1
- package/dist/src/browser/web-ai/gemini-model.js +26 -8
- package/dist/src/browser/web-ai/gemini-model.js.map +1 -1
- package/dist/src/cli/commands.js +2 -0
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/handlers-project.js +55 -0
- package/dist/src/cli/handlers-project.js.map +1 -0
- package/dist/src/cli/readiness.js +6 -1
- package/dist/src/cli/readiness.js.map +1 -1
- package/dist/src/cli/registry.js +11 -0
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/core/claude-install.js +10 -1
- package/dist/src/core/claude-install.js.map +1 -1
- package/dist/src/core/config.js +63 -7
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/db.js +11 -4
- package/dist/src/core/db.js.map +1 -1
- package/dist/src/core/runtime-settings.js +4 -1
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/manager/metadata.js +7 -2
- package/dist/src/manager/metadata.js.map +1 -1
- package/dist/src/manager/notes/routes.js +7 -0
- package/dist/src/manager/notes/routes.js.map +1 -1
- package/dist/src/manager/notes/store.js +72 -0
- package/dist/src/manager/notes/store.js.map +1 -1
- package/dist/src/manager/registry.js +1 -1
- package/dist/src/manager/registry.js.map +1 -1
- package/dist/src/manager/scan.js +2 -0
- package/dist/src/manager/scan.js.map +1 -1
- package/dist/src/messaging/send.js +1 -1
- package/dist/src/messaging/send.js.map +1 -1
- package/dist/src/orchestrator/distribute.js +25 -4
- package/dist/src/orchestrator/distribute.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +21 -5
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/state-machine.js +7 -1
- package/dist/src/orchestrator/state-machine.js.map +1 -1
- package/dist/src/orchestrator/workspace-context.js +49 -14
- package/dist/src/orchestrator/workspace-context.js.map +1 -1
- package/dist/src/routes/messaging.js +1 -1
- package/dist/src/routes/messaging.js.map +1 -1
- package/dist/src/routes/orchestrate.js +11 -4
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/routes/settings.js +73 -8
- package/dist/src/routes/settings.js.map +1 -1
- package/dist/src/security/path-guards.js +35 -14
- package/dist/src/security/path-guards.js.map +1 -1
- package/dist/src/types/cli-engine.js +1 -0
- package/dist/src/types/cli-engine.js.map +1 -1
- package/package.json +19 -4
- package/public/css/chat.css +6 -2
- package/public/dist/assets/{AdvancedExport-CBvz4_IZ.js โ AdvancedExport-CZEVPqHb.js} +1 -1
- package/public/dist/assets/{Agent-DlUqCMXJ.js โ Agent-BBrJGd5m.js} +1 -1
- package/public/dist/assets/{Browser-66BpLQck.js โ Browser-dBaU9G9D.js} +1 -1
- package/public/dist/assets/{ChannelsDiscord-BifT2Dum.js โ ChannelsDiscord-CbmWms9-.js} +1 -1
- package/public/dist/assets/{ChannelsTelegram-CK6tYQ8k.js โ ChannelsTelegram-BD4Eyztg.js} +1 -1
- package/public/dist/assets/{DashboardMeta-Cc03HT5R.js โ DashboardMeta-LVAL7TtE.js} +1 -1
- package/public/dist/assets/{Display-arOjcMQZ.js โ Display-CFm1UmEo.js} +1 -1
- package/public/dist/assets/{Employees-YbW-mI67.js โ Employees-DcMChleU.js} +1 -1
- package/public/dist/assets/{Heartbeat-CW4eIhtJ.js โ Heartbeat-BoobN35p.js} +1 -1
- package/public/dist/assets/{Mcp-ZQ6ARQb6.js โ Mcp-9NU4YkKO.js} +1 -1
- package/public/dist/assets/{Memory-BAUWJMqc.js โ Memory-uZT30fww.js} +1 -1
- package/public/dist/assets/{MilkdownWysiwygEditor-IAqFtXvM.js โ MilkdownWysiwygEditor-Otw40DDF.js} +1 -1
- package/public/dist/assets/{ModelProvider-DUtmFh0J.js โ ModelProvider-CsIOyoZP.js} +1 -1
- package/public/dist/assets/{Network-B_4E82zQ.js โ Network-D7hGwnyG.js} +1 -1
- package/public/dist/assets/NotesGraphView-CJuk9lKn.js +1 -0
- package/public/dist/assets/Permissions-CcIBptg3.js +1 -0
- package/public/dist/assets/{Permissions-BkADXjQ4.js โ Permissions-DwdU3wi8.js} +1 -1
- package/public/dist/assets/{Profile-BcnTCSYM.js โ Profile-BNTKD_Ex.js} +1 -1
- package/public/dist/assets/{Prompts-CUs_RoRE.js โ Prompts-D_mCfYiu.js} +1 -1
- package/public/dist/assets/{SpeechKeys-qxc-ROWN.js โ SpeechKeys-BTXCM-Fs.js} +1 -1
- package/public/dist/assets/agent-meta-BC7mLqo6.js +1 -0
- package/public/dist/assets/{app-CGqTcIeF.js โ app-C7MAcAMu.js} +5 -5
- package/public/dist/assets/app-CkFBKUf8.css +1 -0
- package/public/dist/assets/{architectureDiagram-3BPJPVTR-kYIVzmWe.js โ architectureDiagram-3BPJPVTR-CJCPEsxo.js} +1 -1
- package/public/dist/assets/{blockDiagram-GPEHLZMM-B204CPhe.js โ blockDiagram-GPEHLZMM-CO1bkn0E.js} +2 -2
- package/public/dist/assets/{c4Diagram-AAUBKEIU-DAv6TAjg.js โ c4Diagram-AAUBKEIU-D2R36Xu6.js} +1 -1
- package/public/dist/assets/{chunk-3OPIFGDE-DOAvk9x8.js โ chunk-3OPIFGDE-DixnEkZw.js} +1 -1
- package/public/dist/assets/chunk-55IACEB6-DhWWzzdj.js +1 -0
- package/public/dist/assets/{chunk-5ZQYHXKU-Bd-RFO5i.js โ chunk-5ZQYHXKU-Bli4k6GI.js} +2 -2
- package/public/dist/assets/{chunk-727SXJPM-BrsRzj8z.js โ chunk-727SXJPM-sp4W8bhf.js} +1 -1
- package/public/dist/assets/{chunk-AQP2D5EJ-Di6Gstk-.js โ chunk-AQP2D5EJ-Co6ucdGq.js} +1 -1
- package/public/dist/assets/{chunk-KSCS5N6A-D9a4ZkOy.js โ chunk-KSCS5N6A-Beq1s5eO.js} +2 -2
- package/public/dist/assets/{chunk-L5ZTLDWV-D208QbfC.js โ chunk-L5ZTLDWV-DfUlBdXN.js} +1 -1
- package/public/dist/assets/{chunk-LZXEDZCA-CE2KFduj.js โ chunk-LZXEDZCA-B_yP4UKw.js} +1 -1
- package/public/dist/assets/{chunk-ND2GUHAM-zZ7h1CPf.js โ chunk-ND2GUHAM-3qbNb7I9.js} +1 -1
- package/public/dist/assets/{chunk-O5CBEL6O-BTuvXKFi.js โ chunk-O5CBEL6O-D-jDqsN2.js} +1 -1
- package/public/dist/assets/{chunk-WU5MYG2G-C3fKlSvP.js โ chunk-WU5MYG2G-DlBJtD7-.js} +1 -1
- package/public/dist/assets/classDiagram-4FO5ZUOK-DmPJvqRM.js +1 -0
- package/public/dist/assets/classDiagram-v2-Q7XG4LA2-ECmTUt7U.js +1 -0
- package/public/dist/assets/constants-BXWl7LTi.js +1 -0
- package/public/dist/assets/{cose-bilkent-S5V4N54A-D1zmarou.js โ cose-bilkent-S5V4N54A-Bt9AAJCx.js} +1 -1
- package/public/dist/assets/{dagre-BM42HDAG-BVkBttzA.js โ dagre-BM42HDAG-CXEA1wvZ.js} +1 -1
- package/public/dist/assets/{dagre-DnoxfNXr.js โ dagre-Ve-IAfyz.js} +1 -1
- package/public/dist/assets/{diagram-2AECGRRQ-Bs32KPnT.js โ diagram-2AECGRRQ-CCB0OKc2.js} +1 -1
- package/public/dist/assets/{diagram-5GNKFQAL-YDYgPOQj.js โ diagram-5GNKFQAL-Cki9HABy.js} +1 -1
- package/public/dist/assets/{diagram-KO2AKTUF-1tIdFl26.js โ diagram-KO2AKTUF-DNBDjE2o.js} +1 -1
- package/public/dist/assets/{diagram-LMA3HP47-B1y15kav.js โ diagram-LMA3HP47-Cy23RDPa.js} +1 -1
- package/public/dist/assets/{diagram-OG6HWLK6-C25j1jGg.js โ diagram-OG6HWLK6-CT_YF8cA.js} +1 -1
- package/public/dist/assets/dist-3R3GxjCf.js +13 -0
- package/public/dist/assets/{dist-D0PYXGt2.js โ dist-BLd7xdyq.js} +1 -1
- package/public/dist/assets/{dist-fJAyK82z.js โ dist-BaRrwDy3.js} +1 -1
- package/public/dist/assets/{dist-Rs_Khtjb.js โ dist-Bbsp4OF7.js} +1 -1
- package/public/dist/assets/{dist-Cv8S3FhF.js โ dist-BkBGlG70.js} +1 -1
- package/public/dist/assets/{dist-0v1UKkQ3.js โ dist-BkJ_1mj9.js} +1 -1
- package/public/dist/assets/{dist-BQNQk-1M.js โ dist-BxCRVW5D.js} +1 -1
- package/public/dist/assets/{dist-DDDFJ8jG.js โ dist-C-v7Rm67.js} +1 -1
- package/public/dist/assets/dist-CNgDEAy8.js +1 -0
- package/public/dist/assets/dist-CO_W5rr2.js +1 -0
- package/public/dist/assets/{dist-vQskrHxt.js โ dist-ChAUfTbO.js} +1 -1
- package/public/dist/assets/{dist-CjPin7Mr.js โ dist-D-k-lzQT.js} +1 -1
- package/public/dist/assets/dist-D1hPukqY.js +1 -0
- package/public/dist/assets/{dist-C1VqWrYZ.js โ dist-D5Qx-jQQ.js} +1 -1
- package/public/dist/assets/{dist-DTQW91xt.js โ dist-D7VNzYBv.js} +1 -1
- package/public/dist/assets/{dist-DHQI31dn.js โ dist-DAxnodoa.js} +1 -1
- package/public/dist/assets/{dist-CnIrGAPx.js โ dist-DHSyODkR.js} +1 -1
- package/public/dist/assets/{dist-CE4s7vg82.js โ dist-DaYTPjbb2.js} +1 -1
- package/public/dist/assets/{dist-jcptfm_T.js โ dist-DlWi9tVO.js} +1 -1
- package/public/dist/assets/{dist-D66X8iAn.js โ dist-DuuoJfRB.js} +1 -1
- package/public/dist/assets/{dist-DzT7frM2.js โ dist-Dv36UUXz.js} +1 -1
- package/public/dist/assets/{dist-BVpa_e6W.js โ dist-F4CVhitP.js} +1 -1
- package/public/dist/assets/{dist-Qs7HHNCC.js โ dist-LHbJYy3N.js} +1 -1
- package/public/dist/assets/{dist-Ck6PnIlo.js โ dist-VIlx7JdU.js} +1 -1
- package/public/dist/assets/{dist-D5GUqT-6.js โ dist-cgDt2PmY.js} +1 -1
- package/public/dist/assets/dist-eW2LjRIK.js +1 -0
- package/public/dist/assets/{dist-Dm7RAaUo.js โ dist-vGn3_sWA.js} +1 -1
- package/public/dist/assets/{employees-DRmX2RDd.js โ employees-BmxY8Mw3.js} +1 -1
- package/public/dist/assets/{erDiagram-TEJ5UH35-CRvCbztR.js โ erDiagram-TEJ5UH35-Cq7oHdXg.js} +1 -1
- package/public/dist/assets/{flowDiagram-I6XJVG4X-CzvVnib_.js โ flowDiagram-I6XJVG4X-D8CdEnfM.js} +1 -1
- package/public/dist/assets/ganttDiagram-6RSMTGT7-B1rzKXi_.js +292 -0
- package/public/dist/assets/{gitGraphDiagram-PVQCEYII-CbKdM7nW.js โ gitGraphDiagram-PVQCEYII-CqLh-joi.js} +1 -1
- package/public/dist/assets/{graphlib-BLOO0H5r.js โ graphlib-W5bESv3F.js} +1 -1
- package/public/dist/assets/{infoDiagram-5YYISTIA-BrZmg1At.js โ infoDiagram-5YYISTIA-C1zVxumj.js} +1 -1
- package/public/dist/assets/{ishikawaDiagram-YF4QCWOH-BDWXqJi5.js โ ishikawaDiagram-YF4QCWOH-x-9J6xPM.js} +1 -1
- package/public/dist/assets/{journeyDiagram-JHISSGLW-CPFRd_M3.js โ journeyDiagram-JHISSGLW-BDYzHrtn.js} +1 -1
- package/public/dist/assets/{kanban-definition-UN3LZRKU-BcQbBplS.js โ kanban-definition-UN3LZRKU-BJ-06i6Z.js} +1 -1
- package/public/dist/assets/manager-B2NWzG7j.css +1 -0
- package/public/dist/assets/manager-C5e1IxEN.js +25 -0
- package/public/dist/assets/memory-BqqibBIE.js +1 -0
- package/public/dist/assets/{memory-BA-ki3gn.js โ memory-CRL72HB-.js} +1 -1
- package/public/dist/assets/mermaid-loader-Dqb4ZUz6.js +1 -0
- package/public/dist/assets/{mermaid.core-ArqR5iFa.js โ mermaid.core-D8VnfThU.js} +2 -2
- package/public/dist/assets/mermaid.core-DYHvk6Pd.js +1 -0
- package/public/dist/assets/{mindmap-definition-RKZ34NQL-C35cGkNU.js โ mindmap-definition-RKZ34NQL-D8NDuIhn.js} +1 -1
- package/public/dist/assets/{pieDiagram-4H26LBE5-B8C_hoqJ.js โ pieDiagram-4H26LBE5-CpBePil_.js} +3 -3
- package/public/dist/assets/{quadrantDiagram-W4KKPZXB-BEPrine5.js โ quadrantDiagram-W4KKPZXB-C1WWpn88.js} +1 -1
- package/public/dist/assets/{render-C7_e0J_X.js โ render-o_YEiCEO.js} +2 -2
- package/public/dist/assets/{requirementDiagram-4Y6WPE33-ClDDon9c.js โ requirementDiagram-4Y6WPE33-C_D5VbNk.js} +1 -1
- package/public/dist/assets/{sankeyDiagram-5OEKKPKP-Bjs3OE-1.js โ sankeyDiagram-5OEKKPKP--RH3Es8R.js} +3 -3
- package/public/dist/assets/{sequenceDiagram-3UESZ5HK-BM8IAaEe.js โ sequenceDiagram-3UESZ5HK-CVI4AjhN.js} +1 -1
- package/public/dist/assets/settings-B0RlyAkI.js +1 -0
- package/public/dist/assets/settings-CCXRL5Ar.js +46 -0
- package/public/dist/assets/sidebar-DRJffqO1.js +14 -0
- package/public/dist/assets/skills-CFdzXbtK.js +1 -0
- package/public/dist/assets/{skills-Dq7fD8I3.js โ skills-DbRVI-zf.js} +1 -1
- package/public/dist/assets/slash-commands-BUM6u-Ex.js +1 -0
- package/public/dist/assets/{slash-commands-DRsKtuGT.js โ slash-commands-C2YBMaQV.js} +1 -1
- package/public/dist/assets/{stateDiagram-AJRCARHV-BvNABuXE.js โ stateDiagram-AJRCARHV-4bx1rPZ3.js} +1 -1
- package/public/dist/assets/stateDiagram-v2-BHNVJYJU-CrfGPzHb.js +1 -0
- package/public/dist/assets/{timeline-definition-PNZ67QCA-CIvTvac3.js โ timeline-definition-PNZ67QCA-DeQoGRE2.js} +1 -1
- package/public/dist/assets/{trace-drawer-DDFdU07_.js โ trace-drawer-CIVBXyRH.js} +1 -1
- package/public/dist/assets/ui-C3ArwMhv.js +140 -0
- package/public/dist/assets/ui-CboUuc_E.js +1 -0
- package/public/dist/assets/vendor-utils-rVejrfMR.js +1 -0
- package/public/dist/assets/{vennDiagram-CIIHVFJN-C5cbS2KC.js โ vennDiagram-CIIHVFJN-CejyJK0L.js} +1 -1
- package/public/dist/assets/{wardleyDiagram-YWT4CUSO-BsRBBGFP.js โ wardleyDiagram-YWT4CUSO-DqXV0sa1.js} +1 -1
- package/public/dist/assets/wiki-link-suggestions-e5BzJAZH.js +23 -0
- package/public/dist/assets/{xychartDiagram-2RQKCTM6-B6rqui6F.js โ xychartDiagram-2RQKCTM6-CWLoVl2b.js} +2 -2
- package/public/dist/index.html +20 -2
- package/public/dist/manager/index.html +2 -2
- package/public/index.html +18 -0
- package/public/js/constants.ts +12 -1
- package/public/js/features/settings-cli-status.ts +27 -4
- package/public/js/features/settings-core.ts +28 -15
- package/public/js/features/settings-types.ts +1 -0
- package/public/js/features/ui-status.ts +3 -0
- package/public/js/ws.ts +5 -1
- package/public/manager/src/SidebarRailRouter.tsx +5 -2
- package/public/manager/src/api.ts +13 -0
- package/public/manager/src/components/WorkbenchHeader.tsx +10 -0
- package/public/manager/src/manager-notes.css +228 -0
- package/public/manager/src/notes/NotesBacklinksPanel.tsx +91 -0
- package/public/manager/src/notes/NotesCommandPalette.tsx +212 -0
- package/public/manager/src/notes/NotesGraphView.tsx +145 -0
- package/public/manager/src/notes/NotesSidebar.tsx +183 -5
- package/public/manager/src/notes/NotesToolbar.tsx +9 -3
- package/public/manager/src/notes/NotesWorkspace.tsx +140 -4
- package/public/manager/src/notes/notes-api.ts +2 -0
- package/public/manager/src/notes/notes-command-registry.tsx +79 -0
- package/public/manager/src/notes/notes-quick-switcher.css +151 -0
- package/public/manager/src/notes/notes-shortcuts.ts +23 -0
- package/public/manager/src/notes/notes-types.ts +1 -1
- package/public/manager/src/notes/template-engine.ts +27 -0
- package/public/manager/src/settings/pages/components/agent/agent-meta.ts +7 -1
- package/public/manager/src/types.ts +2 -1
- package/scripts/audit-fresh-install-evidence.mjs +278 -0
- package/scripts/collect-fresh-install-evidence.sh +459 -0
- package/scripts/fresh-install-smoke.ts +85 -6
- package/scripts/install-officecli.ps1 +14 -1
- package/scripts/install-risk-gate.mjs +161 -0
- package/scripts/install-wsl.sh +78 -16
- package/scripts/install.sh +272 -72
- package/scripts/postinstall-guard.cjs +2 -2
- package/scripts/release-preview.sh +25 -3
- package/scripts/release.sh +37 -8
- package/scripts/require-release-evidence.mjs +236 -0
- package/scripts/verify-fresh-install.sh +120 -0
- package/scripts/verify-release-evidence.mjs +158 -0
- package/public/dist/assets/Permissions-DvUCB8wA.js +0 -1
- package/public/dist/assets/agent-meta-Du8y6mSM.js +0 -1
- package/public/dist/assets/app-Dpk6cE6C.css +0 -1
- package/public/dist/assets/chunk-55IACEB6-Dx2JkQLw.js +0 -1
- package/public/dist/assets/classDiagram-4FO5ZUOK-Cb-qL5u3.js +0 -1
- package/public/dist/assets/classDiagram-v2-Q7XG4LA2-BPhGdj15.js +0 -1
- package/public/dist/assets/constants-BxG09J6S.js +0 -1
- package/public/dist/assets/dist-BMi_buEb.js +0 -1
- package/public/dist/assets/dist-BkrbW_LS.js +0 -1
- package/public/dist/assets/dist-C3vh7d65.js +0 -13
- package/public/dist/assets/dist-D815C1Fv.js +0 -1
- package/public/dist/assets/dist-sOV2kBhQ.js +0 -1
- package/public/dist/assets/ganttDiagram-6RSMTGT7-BbUYP6iv.js +0 -292
- package/public/dist/assets/manager-B5OmizBL.css +0 -1
- package/public/dist/assets/manager-Cs3eMBcx.js +0 -25
- package/public/dist/assets/memory-DLQbyBA3.js +0 -1
- package/public/dist/assets/mermaid-loader-BVPsKrpr.js +0 -1
- package/public/dist/assets/mermaid.core-BAwu4U2Y.js +0 -1
- package/public/dist/assets/settings-DjyKdqev.js +0 -1
- package/public/dist/assets/settings-pUJzyeX2.js +0 -42
- package/public/dist/assets/sidebar-CO9Qjj6v.js +0 -14
- package/public/dist/assets/skills-CX3qJ77s.js +0 -1
- package/public/dist/assets/slash-commands-UbS8w9ij.js +0 -1
- package/public/dist/assets/stateDiagram-v2-BHNVJYJU-CCIo81qy.js +0 -1
- package/public/dist/assets/ui-CeBmBBZM.js +0 -140
- package/public/dist/assets/ui-TMXjvH0r.js +0 -1
- package/public/dist/assets/vendor-utils-BnxL60_-.js +0 -1
- package/public/dist/assets/wiki-link-suggestions-BHwNQXT_.js +0 -23
- /package/public/dist/assets/{HealthBadge-DEPFkcA0.js โ HealthBadge-CfLTPTPW.js} +0 -0
- /package/public/dist/assets/{InlineWarn-DoJS7AgM.js โ InlineWarn-C7ISyzDI.js} +0 -0
- /package/public/dist/assets/{fields-DUawAHWZ.js โ fields-BwD_NGxe.js} +0 -0
- /package/public/dist/assets/{locale-BHMJIzyw.js โ locale-DT1WRaeJ.js} +0 -0
- /package/public/dist/assets/{page-shell-CVAobxbP.js โ page-shell-uNOxwdbr.js} +0 -0
- /package/public/dist/assets/{path-utils-r2bJIu28.js โ path-utils-h2GAj3hH.js} +0 -0
- /package/public/dist/assets/{provider-icons-dxT69zGg.js โ provider-icons-ClVd2suJ.js} +0 -0
package/scripts/install.sh
CHANGED
|
@@ -19,17 +19,19 @@ ok() { echo -e "${GREEN}โ${NC} $*"; }
|
|
|
19
19
|
warn() { echo -e "${YELLOW}โ ${NC} $*"; }
|
|
20
20
|
fail() { echo -e "${RED}โ${NC} $*"; exit 1; }
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
echo
|
|
24
|
-
echo
|
|
25
|
-
echo "
|
|
26
|
-
echo "
|
|
27
|
-
echo " โโโ โโโ
|
|
28
|
-
echo "
|
|
29
|
-
echo "
|
|
30
|
-
echo
|
|
31
|
-
echo -e "${
|
|
32
|
-
echo ""
|
|
22
|
+
print_banner() {
|
|
23
|
+
echo ""
|
|
24
|
+
echo -e "${CYAN}${BOLD}"
|
|
25
|
+
echo " โโโโโโโโโโ โโโ โโโ โโโโโโ โโโ โโโ"
|
|
26
|
+
echo " โโโโโโโโโโโ โโโ โโโโโโโโโโโโโโ โโโ"
|
|
27
|
+
echo " โโโ โโโ โโโโโโโโโโโโโโโโโโโโโโโ โโ โโโ"
|
|
28
|
+
echo " โโโ โโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
|
|
29
|
+
echo " โโโโโโโโโโโโโโโโโโโ โโโโโโ โโโโโโโโโโโโโ"
|
|
30
|
+
echo " โโโโโโโโโโโโโโโโโโ โโโโโโ โโโ โโโโโโโโ"
|
|
31
|
+
echo -e "${NC}"
|
|
32
|
+
echo -e "${DIM} One-Click Installer${NC}"
|
|
33
|
+
echo ""
|
|
34
|
+
}
|
|
33
35
|
|
|
34
36
|
NODE_MAJOR=22
|
|
35
37
|
|
|
@@ -41,21 +43,43 @@ resolve_cmd() {
|
|
|
41
43
|
command -v "$1" 2>/dev/null || true
|
|
42
44
|
}
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
local
|
|
46
|
-
|
|
47
|
-
if [ -
|
|
48
|
-
printf '%s\n' "$jaw_bin"
|
|
46
|
+
list_path_cmd_candidates() {
|
|
47
|
+
local name="${1:-}"
|
|
48
|
+
local dir candidate seen=":"
|
|
49
|
+
if [ -z "$name" ]; then
|
|
49
50
|
return 0
|
|
50
51
|
fi
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
IFS=':' read -r -a path_parts <<< "${PATH:-}"
|
|
54
|
+
for dir in "${path_parts[@]}"; do
|
|
55
|
+
if [ -z "$dir" ]; then
|
|
56
|
+
dir="."
|
|
57
|
+
fi
|
|
58
|
+
candidate="${dir%/}/$name"
|
|
59
|
+
case "$seen" in
|
|
60
|
+
*":$candidate:"*) continue ;;
|
|
61
|
+
esac
|
|
62
|
+
seen="${seen}${candidate}:"
|
|
63
|
+
if [ -x "$candidate" ] && [ ! -d "$candidate" ]; then
|
|
64
|
+
printf '%s\n' "$candidate"
|
|
65
|
+
fi
|
|
66
|
+
done
|
|
67
|
+
}
|
|
58
68
|
|
|
69
|
+
get_installed_jaw_binary() {
|
|
70
|
+
local name candidate
|
|
71
|
+
for name in jaw cli-jaw; do
|
|
72
|
+
while IFS= read -r candidate; do
|
|
73
|
+
if [ -z "$candidate" ]; then
|
|
74
|
+
continue
|
|
75
|
+
fi
|
|
76
|
+
if [ -n "$(get_binary_version "$candidate")" ]; then
|
|
77
|
+
printf '%s\n' "$candidate"
|
|
78
|
+
return 0
|
|
79
|
+
fi
|
|
80
|
+
warn "$name exists but failed --version: $candidate"
|
|
81
|
+
done < <(list_path_cmd_candidates "$name")
|
|
82
|
+
done
|
|
59
83
|
return 1
|
|
60
84
|
}
|
|
61
85
|
|
|
@@ -71,6 +95,18 @@ get_latest_cli_jaw_version() {
|
|
|
71
95
|
extract_semver "$(npm view cli-jaw version 2>/dev/null || true)"
|
|
72
96
|
}
|
|
73
97
|
|
|
98
|
+
ensure_macos_developer_tools() {
|
|
99
|
+
if [ "$(uname -s)" != "Darwin" ]; then
|
|
100
|
+
return 0
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
if xcode-select -p >/dev/null 2>&1 && git --version >/dev/null 2>&1; then
|
|
104
|
+
return 0
|
|
105
|
+
fi
|
|
106
|
+
|
|
107
|
+
fail "Xcode Command Line Tools are required before installing Node via nvm. Run: xcode-select --install Then rerun this installer after it completes."
|
|
108
|
+
}
|
|
109
|
+
|
|
74
110
|
realpath_fallback() {
|
|
75
111
|
local target="${1:-}"
|
|
76
112
|
if [ -z "$target" ]; then
|
|
@@ -79,6 +115,120 @@ realpath_fallback() {
|
|
|
79
115
|
node -e "const fs=require('fs');const p=process.argv[1];try{console.log(fs.realpathSync(p));}catch{console.log(p)}" "$target" 2>/dev/null || printf '%s\n' "$target"
|
|
80
116
|
}
|
|
81
117
|
|
|
118
|
+
zsh_config_dir() {
|
|
119
|
+
printf '%s\n' "${ZDOTDIR:-$HOME}"
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
is_zsh_shell() {
|
|
123
|
+
case "${SHELL:-/bin/bash}" in
|
|
124
|
+
*/zsh) return 0 ;;
|
|
125
|
+
*) return 1 ;;
|
|
126
|
+
esac
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
npm_is_usable() {
|
|
130
|
+
command -v npm &>/dev/null && npm --version &>/dev/null
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
ensure_nvm_shell_profile() {
|
|
134
|
+
local profile="${1:-}"
|
|
135
|
+
if [ -z "$profile" ] || [ "$profile" = "your shell config" ]; then
|
|
136
|
+
return 0
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
case "$profile" in
|
|
140
|
+
"~/"*) profile="${HOME}/${profile#~/}" ;;
|
|
141
|
+
esac
|
|
142
|
+
|
|
143
|
+
mkdir -p "$(dirname "$profile")"
|
|
144
|
+
touch "$profile"
|
|
145
|
+
|
|
146
|
+
if ! grep -Fq 'NVM_DIR="$HOME/.nvm"' "$profile" 2>/dev/null; then
|
|
147
|
+
{
|
|
148
|
+
echo ''
|
|
149
|
+
echo 'export NVM_DIR="$HOME/.nvm"'
|
|
150
|
+
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"'
|
|
151
|
+
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"'
|
|
152
|
+
} >> "$profile"
|
|
153
|
+
fi
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
ensure_path_shell_profile() {
|
|
157
|
+
local profile="${1:-}"
|
|
158
|
+
local path_line="${2:-}"
|
|
159
|
+
if [ -z "$profile" ] || [ -z "$path_line" ] || [ "$profile" = "your shell config" ]; then
|
|
160
|
+
return 0
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
case "$profile" in
|
|
164
|
+
"~/"*) profile="${HOME}/${profile#~/}" ;;
|
|
165
|
+
esac
|
|
166
|
+
|
|
167
|
+
mkdir -p "$(dirname "$profile")"
|
|
168
|
+
touch "$profile"
|
|
169
|
+
|
|
170
|
+
if ! grep -Fq "$path_line" "$profile" 2>/dev/null; then
|
|
171
|
+
{
|
|
172
|
+
echo ''
|
|
173
|
+
echo "$path_line"
|
|
174
|
+
} >> "$profile"
|
|
175
|
+
fi
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
ensure_local_bin_path() {
|
|
179
|
+
local path_line='export PATH="$HOME/.local/bin:$PATH"'
|
|
180
|
+
case ":${PATH:-}:" in
|
|
181
|
+
*":$HOME/.local/bin:"*) ;;
|
|
182
|
+
*) export PATH="$HOME/.local/bin:${PATH:-}" ;;
|
|
183
|
+
esac
|
|
184
|
+
|
|
185
|
+
case "${SHELL:-/bin/bash}" in
|
|
186
|
+
*/zsh)
|
|
187
|
+
local zdir
|
|
188
|
+
zdir="$(zsh_config_dir)"
|
|
189
|
+
ensure_path_shell_profile "$zdir/.zshrc" "$path_line"
|
|
190
|
+
ensure_path_shell_profile "$zdir/.zprofile" "$path_line"
|
|
191
|
+
;;
|
|
192
|
+
*/bash)
|
|
193
|
+
ensure_path_shell_profile "~/.bashrc" "$path_line"
|
|
194
|
+
ensure_path_shell_profile "~/.bash_profile" "$path_line"
|
|
195
|
+
;;
|
|
196
|
+
*)
|
|
197
|
+
ensure_path_shell_profile "~/.profile" "$path_line"
|
|
198
|
+
;;
|
|
199
|
+
esac
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
is_runnable_cli_tool() {
|
|
203
|
+
local bin="${1:-}"
|
|
204
|
+
if [ -z "$bin" ]; then
|
|
205
|
+
return 1
|
|
206
|
+
fi
|
|
207
|
+
command -v "$bin" &>/dev/null && "$bin" --version &>/dev/null
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
unavailable_required_cli_tools() {
|
|
211
|
+
local missing=()
|
|
212
|
+
local bin
|
|
213
|
+
for bin in claude codex gemini grok copilot opencode; do
|
|
214
|
+
if ! is_runnable_cli_tool "$bin"; then
|
|
215
|
+
missing+=("$bin")
|
|
216
|
+
fi
|
|
217
|
+
done
|
|
218
|
+
|
|
219
|
+
local joined=""
|
|
220
|
+
if [ "${#missing[@]}" -gt 0 ]; then
|
|
221
|
+
for bin in "${missing[@]}"; do
|
|
222
|
+
if [ -n "$joined" ]; then
|
|
223
|
+
joined="${joined}, ${bin}"
|
|
224
|
+
else
|
|
225
|
+
joined="$bin"
|
|
226
|
+
fi
|
|
227
|
+
done
|
|
228
|
+
fi
|
|
229
|
+
printf '%s\n' "$joined"
|
|
230
|
+
}
|
|
231
|
+
|
|
82
232
|
# Shell-level Claude install classifier โ mirrors src/core/claude-install.ts
|
|
83
233
|
# Returns: native | node-managed | unknown
|
|
84
234
|
classify_claude_install_sh() {
|
|
@@ -164,18 +314,26 @@ print_cli_dependency_guidance() {
|
|
|
164
314
|
# Step 1: Ensure Node.js โฅ 22
|
|
165
315
|
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
166
316
|
ensure_node() {
|
|
317
|
+
local install_reason="Node.js โฅ ${NODE_MAJOR} not found"
|
|
318
|
+
|
|
167
319
|
# Already have Node.js โฅ 22?
|
|
168
320
|
if command -v node &>/dev/null; then
|
|
169
321
|
local ver
|
|
170
322
|
ver=$(node -v | sed 's/v//' | cut -d. -f1)
|
|
171
323
|
if [ "$ver" -ge "$NODE_MAJOR" ] 2>/dev/null; then
|
|
172
|
-
|
|
173
|
-
|
|
324
|
+
if npm_is_usable; then
|
|
325
|
+
ok "Node.js $(node -v) with npm $(npm --version) detected โ good to go"
|
|
326
|
+
return 0
|
|
327
|
+
fi
|
|
328
|
+
warn "Node.js $(node -v) found but npm is missing or not runnable โ repairing Node.js install..."
|
|
329
|
+
install_reason="Node.js $(node -v) found without runnable npm"
|
|
330
|
+
else
|
|
331
|
+
warn "Node.js $(node -v) found but need โฅ ${NODE_MAJOR}"
|
|
332
|
+
install_reason="Node.js $(node -v) is below ${NODE_MAJOR}"
|
|
174
333
|
fi
|
|
175
|
-
warn "Node.js $(node -v) found but need โฅ ${NODE_MAJOR}"
|
|
176
334
|
fi
|
|
177
335
|
|
|
178
|
-
info "
|
|
336
|
+
info "${install_reason} โ installing..."
|
|
179
337
|
|
|
180
338
|
# Strategy: brew โ nvm โ fail
|
|
181
339
|
if command -v brew &>/dev/null; then
|
|
@@ -187,12 +345,12 @@ ensure_node() {
|
|
|
187
345
|
if command -v node &>/dev/null; then
|
|
188
346
|
local brew_ver
|
|
189
347
|
brew_ver=$(node -v | sed 's/v//' | cut -d. -f1)
|
|
190
|
-
if [ "$brew_ver" -ge "$NODE_MAJOR" ] 2>/dev/null; then
|
|
191
|
-
ok "Node.js $(node -v) installed via Homebrew"
|
|
348
|
+
if [ "$brew_ver" -ge "$NODE_MAJOR" ] 2>/dev/null && npm_is_usable; then
|
|
349
|
+
ok "Node.js $(node -v) with npm $(npm --version) installed via Homebrew"
|
|
192
350
|
return 0
|
|
193
351
|
fi
|
|
194
352
|
fi
|
|
195
|
-
warn "Homebrew installed but Node.js โฅ ${NODE_MAJOR} not working โ falling through to nvm"
|
|
353
|
+
warn "Homebrew installed but Node.js โฅ ${NODE_MAJOR} with npm is not working โ falling through to nvm"
|
|
196
354
|
else
|
|
197
355
|
warn "Homebrew install failed โ falling through to nvm"
|
|
198
356
|
fi
|
|
@@ -200,10 +358,22 @@ ensure_node() {
|
|
|
200
358
|
|
|
201
359
|
# brew unavailable or failed โ install nvm + Node.js
|
|
202
360
|
info "Installing via nvm"
|
|
361
|
+
ensure_macos_developer_tools
|
|
203
362
|
export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
|
|
204
363
|
|
|
364
|
+
local shell_rc
|
|
365
|
+
case "${SHELL:-/bin/bash}" in
|
|
366
|
+
*/zsh) shell_rc="$(zsh_config_dir)/.zshrc" ;;
|
|
367
|
+
*/bash) shell_rc="$HOME/.bashrc" ;;
|
|
368
|
+
*) shell_rc="your shell config" ;;
|
|
369
|
+
esac
|
|
370
|
+
ensure_nvm_shell_profile "$shell_rc"
|
|
371
|
+
if is_zsh_shell; then
|
|
372
|
+
ensure_nvm_shell_profile "$(zsh_config_dir)/.zprofile"
|
|
373
|
+
fi
|
|
374
|
+
|
|
205
375
|
if [ ! -s "$NVM_DIR/nvm.sh" ]; then
|
|
206
|
-
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
|
|
376
|
+
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | PROFILE="$shell_rc" bash
|
|
207
377
|
fi
|
|
208
378
|
|
|
209
379
|
# Source nvm
|
|
@@ -217,15 +387,16 @@ ensure_node() {
|
|
|
217
387
|
nvm install "$NODE_MAJOR"
|
|
218
388
|
nvm use "$NODE_MAJOR"
|
|
219
389
|
nvm alias default "$NODE_MAJOR"
|
|
220
|
-
|
|
390
|
+
if ! npm_is_usable; then
|
|
391
|
+
fail "Node.js installed but npm is not runnable. Please reinstall Node.js โฅ ${NODE_MAJOR} from https://nodejs.org"
|
|
392
|
+
fi
|
|
393
|
+
ok "Node.js $(node -v) with npm $(npm --version) installed via nvm"
|
|
221
394
|
|
|
222
395
|
# Remind user to add nvm to their shell
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
*) shell_rc="your shell config" ;;
|
|
228
|
-
esac
|
|
396
|
+
ensure_nvm_shell_profile "$shell_rc"
|
|
397
|
+
if is_zsh_shell; then
|
|
398
|
+
ensure_nvm_shell_profile "$(zsh_config_dir)/.zprofile"
|
|
399
|
+
fi
|
|
229
400
|
echo ""
|
|
230
401
|
warn "For future sessions, nvm is auto-added to ${shell_rc}"
|
|
231
402
|
echo -e "${DIM} If 'node' is not found after restarting terminal, run: source ${shell_rc}${NC}"
|
|
@@ -235,21 +406,30 @@ ensure_node() {
|
|
|
235
406
|
# Step 2: Install CLI-JAW
|
|
236
407
|
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
237
408
|
install_cli_jaw() {
|
|
238
|
-
local installed_bin installed_version latest_version
|
|
409
|
+
local installed_bin installed_version latest_version missing_cli_tools
|
|
239
410
|
installed_bin="$(get_installed_jaw_binary || true)"
|
|
240
411
|
installed_version="$(get_binary_version "$installed_bin")"
|
|
241
412
|
latest_version="$(get_latest_cli_jaw_version)"
|
|
413
|
+
missing_cli_tools="$(unavailable_required_cli_tools)"
|
|
242
414
|
|
|
243
415
|
# If npm view failed (network issue) and we already have a working install, skip
|
|
244
416
|
if [ -z "$latest_version" ] && [ -n "$installed_bin" ] && [ -n "$installed_version" ]; then
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
417
|
+
if [ -z "$missing_cli_tools" ]; then
|
|
418
|
+
warn "Could not fetch latest version (network issue?) โ keeping existing ${installed_version}"
|
|
419
|
+
ok "CLI-JAW ${installed_version} at ${installed_bin} โ skipping update"
|
|
420
|
+
return 0
|
|
421
|
+
fi
|
|
422
|
+
warn "Could not fetch latest version, but bundled CLI tools are missing: ${missing_cli_tools}"
|
|
423
|
+
warn "Attempting npm repair install anyway"
|
|
248
424
|
fi
|
|
249
425
|
|
|
250
426
|
if [ -n "$installed_bin" ] && [ -n "$installed_version" ] && [ -n "$latest_version" ] && [ "$installed_version" = "$latest_version" ]; then
|
|
251
|
-
|
|
252
|
-
|
|
427
|
+
if [ -z "$missing_cli_tools" ]; then
|
|
428
|
+
ok "CLI-JAW ${installed_version} already installed at ${installed_bin} โ skipping npm install"
|
|
429
|
+
return 0
|
|
430
|
+
fi
|
|
431
|
+
warn "CLI-JAW ${installed_version} already installed, but bundled CLI tools are missing: ${missing_cli_tools}"
|
|
432
|
+
warn "Re-running npm install to repair the partial install"
|
|
253
433
|
fi
|
|
254
434
|
|
|
255
435
|
# Detect package manager from existing install path to avoid shared-path contamination
|
|
@@ -272,7 +452,22 @@ install_cli_jaw() {
|
|
|
272
452
|
info "Installing CLI-JAW..."
|
|
273
453
|
fi
|
|
274
454
|
export CLI_JAW_INSTALL_CLI_TOOLS=1
|
|
275
|
-
|
|
455
|
+
if [ "${CLI_JAW_STRICT_ONE_CLICK:-0}" = "1" ] \
|
|
456
|
+
|| [ "${CLI_JAW_STRICT_ONE_CLICK:-}" = "true" ] \
|
|
457
|
+
|| [ "${CLI_JAW_REQUIRE_CLI_TOOLS:-0}" = "1" ] \
|
|
458
|
+
|| [ "${CLI_JAW_REQUIRE_CLI_TOOLS:-}" = "true" ] \
|
|
459
|
+
|| [ "${npm_config_jaw_require_cli_tools:-0}" = "1" ] \
|
|
460
|
+
|| [ "${npm_config_jaw_require_cli_tools:-}" = "true" ]; then
|
|
461
|
+
export CLI_JAW_REQUIRE_CLI_TOOLS=1
|
|
462
|
+
else
|
|
463
|
+
unset CLI_JAW_REQUIRE_CLI_TOOLS 2>/dev/null || true
|
|
464
|
+
unset npm_config_jaw_require_cli_tools 2>/dev/null || true
|
|
465
|
+
fi
|
|
466
|
+
if ! command -v cargo &>/dev/null; then
|
|
467
|
+
export CLAUDE_E_SKIP_BUILD="${CLAUDE_E_SKIP_BUILD:-1}"
|
|
468
|
+
warn "Rust Cargo not found โ skipping optional claude-e native helper build"
|
|
469
|
+
warn "Install Rust later and reinstall claude-e if you need the Claude E runtime"
|
|
470
|
+
fi
|
|
276
471
|
eval "$pkg_cmd"
|
|
277
472
|
|
|
278
473
|
hash -r 2>/dev/null || true
|
|
@@ -413,31 +608,36 @@ run_doctor() {
|
|
|
413
608
|
fi
|
|
414
609
|
}
|
|
415
610
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
echo ""
|
|
421
|
-
install_cli_jaw
|
|
422
|
-
echo ""
|
|
423
|
-
install_browser_deps
|
|
424
|
-
echo ""
|
|
425
|
-
|
|
426
|
-
echo ""
|
|
427
|
-
|
|
428
|
-
echo ""
|
|
429
|
-
print_cli_dependency_guidance
|
|
430
|
-
|
|
431
|
-
echo ""
|
|
432
|
-
echo -e "${GREEN}${BOLD}โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ${NC}"
|
|
433
|
-
echo -e "${GREEN}${BOLD} ๐ฆ CLI-JAW is ready!${NC}"
|
|
434
|
-
echo -e "${GREEN}${BOLD}โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ${NC}"
|
|
435
|
-
echo ""
|
|
436
|
-
echo -e " Run: ${CYAN}jaw dashboard${NC}"
|
|
437
|
-
echo -e " Also: ${CYAN}jaw serve${NC} ${DIM}# classic server mode${NC}"
|
|
438
|
-
echo ""
|
|
439
|
-
echo -e "${DIM} Tip: Authenticate at least one AI engine:${NC}"
|
|
440
|
-
echo -e "${DIM} gh auth login # GitHub Copilot (free)${NC}"
|
|
441
|
-
echo -e "${DIM} claude auth login # Anthropic Claude${NC}"
|
|
442
|
-
echo -e "${DIM} codex login # OpenAI Codex${NC}"
|
|
443
|
-
echo ""
|
|
611
|
+
main() {
|
|
612
|
+
print_banner
|
|
613
|
+
ensure_node
|
|
614
|
+
ensure_local_bin_path
|
|
615
|
+
echo ""
|
|
616
|
+
install_cli_jaw
|
|
617
|
+
echo ""
|
|
618
|
+
install_browser_deps
|
|
619
|
+
echo ""
|
|
620
|
+
install_officecli
|
|
621
|
+
echo ""
|
|
622
|
+
run_doctor
|
|
623
|
+
echo ""
|
|
624
|
+
print_cli_dependency_guidance
|
|
625
|
+
|
|
626
|
+
echo ""
|
|
627
|
+
echo -e "${GREEN}${BOLD}โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ${NC}"
|
|
628
|
+
echo -e "${GREEN}${BOLD} ๐ฆ CLI-JAW is ready!${NC}"
|
|
629
|
+
echo -e "${GREEN}${BOLD}โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ${NC}"
|
|
630
|
+
echo ""
|
|
631
|
+
echo -e " Run: ${CYAN}jaw dashboard${NC}"
|
|
632
|
+
echo -e " Also: ${CYAN}jaw serve${NC} ${DIM}# classic server mode${NC}"
|
|
633
|
+
echo ""
|
|
634
|
+
echo -e "${DIM} Tip: Authenticate at least one AI engine:${NC}"
|
|
635
|
+
echo -e "${DIM} gh auth login # GitHub Copilot (free)${NC}"
|
|
636
|
+
echo -e "${DIM} claude auth login # Anthropic Claude${NC}"
|
|
637
|
+
echo -e "${DIM} codex login # OpenAI Codex${NC}"
|
|
638
|
+
echo ""
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
if [ "${CLI_JAW_SOURCE_ONLY:-0}" != "1" ]; then
|
|
642
|
+
main "$@"
|
|
643
|
+
fi
|
|
@@ -89,7 +89,7 @@ if (!fs.existsSync(target)) {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
runCompiledPostinstall().catch((error) => {
|
|
92
|
-
console.error('[jaw:init]
|
|
92
|
+
console.error('[jaw:init] โ ๏ธ postinstall error (non-fatal):');
|
|
93
93
|
console.error(error instanceof Error ? error.message : String(error));
|
|
94
|
-
process.exit(
|
|
94
|
+
process.exit(0);
|
|
95
95
|
});
|
|
@@ -71,9 +71,29 @@ ELECTRON_RELEASE_NOTES="$ELECTRON_RELEASE_NOTES_BASE$ELECTRON_RELEASE_NOTES_UNSI
|
|
|
71
71
|
NPM_LATEST=$(npm view cli-jaw dist-tags.latest 2>/dev/null || echo "")
|
|
72
72
|
PKG_VERSION=$(node -p "require('./package.json').version")
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
max_stable_version() {
|
|
75
|
+
node - "$1" "$2" <<'NODE'
|
|
76
|
+
const values = process.argv.slice(2).map((value) => String(value || '0.0.0').replace(/-.*/, ''));
|
|
77
|
+
function parts(value) {
|
|
78
|
+
const match = value.match(/^(\d+)\.(\d+)\.(\d+)$/);
|
|
79
|
+
if (!match) return [0, 0, 0];
|
|
80
|
+
return match.slice(1).map(Number);
|
|
81
|
+
}
|
|
82
|
+
values.sort((a, b) => {
|
|
83
|
+
const pa = parts(a);
|
|
84
|
+
const pb = parts(b);
|
|
85
|
+
for (let i = 0; i < 3; i += 1) {
|
|
86
|
+
if (pa[i] !== pb[i]) return pb[i] - pa[i];
|
|
87
|
+
}
|
|
88
|
+
return 0;
|
|
89
|
+
});
|
|
90
|
+
console.log(values[0]);
|
|
91
|
+
NODE
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
# Use the higher stable version from npm latest and package.json. This keeps
|
|
95
|
+
# preview releases ahead of npm without moving an ahead checkout backwards.
|
|
96
|
+
RAW_VERSION=$(max_stable_version "${NPM_LATEST:-0.0.0}" "$PKG_VERSION")
|
|
77
97
|
|
|
78
98
|
# Bump per BUMP_KIND so preview > latest in semver
|
|
79
99
|
IFS='.' read -r MAJOR MINOR PATCH <<< "$RAW_VERSION"
|
|
@@ -141,6 +161,8 @@ run_electron_release_checks
|
|
|
141
161
|
echo "๐ก๏ธ Running release gates (gate:all)..."
|
|
142
162
|
npm run gate:all
|
|
143
163
|
|
|
164
|
+
node scripts/require-release-evidence.mjs
|
|
165
|
+
|
|
144
166
|
echo "๐งช Verifying npm package contents..."
|
|
145
167
|
npm pack --dry-run >/dev/null
|
|
146
168
|
|
package/scripts/release.sh
CHANGED
|
@@ -66,12 +66,40 @@ PKG_VERSION=$(node -p "require('./package.json').version")
|
|
|
66
66
|
echo "๐ก npm latest: $NPM_LATEST"
|
|
67
67
|
echo "๐ฆ package.json: $PKG_VERSION"
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
PREV_TAG=$(git tag --sort=-v:refname | grep -E '^v[0-9]' | head -1)
|
|
70
|
+
|
|
71
|
+
semver_cmp() {
|
|
72
|
+
node - "$1" "$2" <<'NODE'
|
|
73
|
+
const [a, b] = process.argv.slice(2).map((value) => String(value || '0.0.0').replace(/-.*/, ''));
|
|
74
|
+
function parts(value) {
|
|
75
|
+
const match = value.match(/^(\d+)\.(\d+)\.(\d+)$/);
|
|
76
|
+
if (!match) return [0, 0, 0];
|
|
77
|
+
return match.slice(1).map(Number);
|
|
78
|
+
}
|
|
79
|
+
const pa = parts(a);
|
|
80
|
+
const pb = parts(b);
|
|
81
|
+
for (let i = 0; i < 3; i += 1) {
|
|
82
|
+
if (pa[i] > pb[i]) process.exit(1);
|
|
83
|
+
if (pa[i] < pb[i]) process.exit(2);
|
|
84
|
+
}
|
|
85
|
+
process.exit(0);
|
|
86
|
+
NODE
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
# Sync package.json to npm latest only if this checkout is behind npm.
|
|
90
|
+
# Never move a release checkout backwards just because npm latest has not
|
|
91
|
+
# caught up yet; failed OTP publishes commonly leave local tags ahead.
|
|
70
92
|
CLEAN_NPM=$(echo "$NPM_LATEST" | sed 's/-.*//')
|
|
71
93
|
CLEAN_PKG=$(echo "$PKG_VERSION" | sed 's/-.*//')
|
|
72
94
|
if [ "$CLEAN_PKG" != "$CLEAN_NPM" ] && [ "$CLEAN_NPM" != "0.0.0" ]; then
|
|
73
|
-
|
|
74
|
-
|
|
95
|
+
CMP=0
|
|
96
|
+
semver_cmp "$CLEAN_PKG" "$CLEAN_NPM" || CMP=$?
|
|
97
|
+
if [ "$CMP" -eq 2 ]; then
|
|
98
|
+
echo "โ ๏ธ package.json ($CLEAN_PKG) is behind npm ($CLEAN_NPM). Syncing forward..."
|
|
99
|
+
npm version "$CLEAN_NPM" --no-git-tag-version --allow-same-version
|
|
100
|
+
else
|
|
101
|
+
echo "โน๏ธ package.json ($CLEAN_PKG) is ahead of npm ($CLEAN_NPM); keeping checkout version."
|
|
102
|
+
fi
|
|
75
103
|
fi
|
|
76
104
|
|
|
77
105
|
# โโโ Build โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
@@ -98,7 +126,6 @@ VERSION=$(node -p "require('./package.json').version")
|
|
|
98
126
|
echo "๐ New version: $VERSION"
|
|
99
127
|
|
|
100
128
|
# โโโ Collect changelog โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
101
|
-
PREV_TAG=$(git tag --sort=-v:refname | grep -E '^v[0-9]' | head -1)
|
|
102
129
|
if [ -n "$PREV_TAG" ]; then
|
|
103
130
|
CHANGELOG=$(git log "$PREV_TAG"..HEAD --pretty=format:"- %s" --no-merges | head -50)
|
|
104
131
|
COMMIT_COUNT=$(git rev-list "$PREV_TAG"..HEAD --count)
|
|
@@ -112,6 +139,12 @@ echo "๐ Changes since ${PREV_TAG:-'(none)'} ($COMMIT_COUNT commits):"
|
|
|
112
139
|
echo "$CHANGELOG" | head -15
|
|
113
140
|
echo ""
|
|
114
141
|
|
|
142
|
+
# โโโ Release gates โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
143
|
+
echo "๐ก๏ธ Running release gates (gate:all)..."
|
|
144
|
+
npm run gate:all
|
|
145
|
+
|
|
146
|
+
node scripts/require-release-evidence.mjs
|
|
147
|
+
|
|
115
148
|
# โโโ Commit + Tag + Push โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
116
149
|
echo "๐ท๏ธ Creating git tag v$VERSION..."
|
|
117
150
|
git add package.json package-lock.json
|
|
@@ -120,10 +153,6 @@ git tag "v$VERSION"
|
|
|
120
153
|
git push origin master
|
|
121
154
|
git push origin "v$VERSION"
|
|
122
155
|
|
|
123
|
-
# โโโ Release gates โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
124
|
-
echo "๐ก๏ธ Running release gates (gate:all)..."
|
|
125
|
-
npm run gate:all
|
|
126
|
-
|
|
127
156
|
# โโโ npm publish โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
128
157
|
echo "๐ Publishing to npm..."
|
|
129
158
|
npm publish --access public
|