@bitseek/claw 1.1.0-beta.2 → 1.2.1
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/dist/{accounts-B3zSNWIv.js → accounts-2NNZ6Hbp.js} +1 -1
- package/dist/{accounts-CX1yOBOk.js → accounts-BTexwKe8.js} +1 -1
- package/dist/{accounts-DZqwa5NK.js → accounts-CFz9Jc5d.js} +1 -1
- package/dist/{accounts-BQHz8_1_.js → accounts-Cv5CUnT4.js} +7 -7
- package/dist/{accounts-DTfEeXyO.js → accounts-NHpMJ0aq.js} +1 -1
- package/dist/{accounts-CaiECgq3.js → accounts-ubG6irXZ.js} +16 -16
- package/dist/{acp-cli-DYu2k7v9.js → acp-cli-B0u6no4K.js} +8 -8
- package/dist/{active-listener-neKWQsOO.js → active-listener-Hd9sOu9T.js} +1 -1
- package/dist/{agent-scope-CTbRzU1C.js → agent-scope-C6hps0r3.js} +4 -4
- package/dist/{agent-scope-CJelRKYY.js → agent-scope-CY2-lUIY.js} +1 -1
- package/dist/{agents-B1UgGs6R.js → agents-Cweyfj22.js} +15 -15
- package/dist/{agents.config-CmUkQxtt.js → agents.config-DA3Y8w1t.js} +2 -2
- package/dist/{api-key-rotation-xfk-b2Sv.js → api-key-rotation-Cf7QM5M_.js} +1 -1
- package/dist/{api-key-rotation-BTSy5kZN.js → api-key-rotation-WzOC5dTW.js} +2 -2
- package/dist/{audio-preflight-DZWb0ozj.js → audio-preflight-BWOdDA2n.js} +39 -39
- package/dist/{audio-preflight-CHD1xVrt.js → audio-preflight-DdrORTn9.js} +4 -4
- package/dist/{audio-preflight-59K4nxSA.js → audio-preflight-SRgix4XS.js} +36 -36
- package/dist/{audio-transcription-runner-DwWOJBSn.js → audio-transcription-runner-CGsd7139.js} +1 -1
- package/dist/{audio-transcription-runner-2dp0SxL3.js → audio-transcription-runner-DaoqvWoi.js} +11 -11
- package/dist/{audio-transcription-runner-DGyS5H3K.js → audio-transcription-runner-DkibzFT2.js} +22 -22
- package/dist/{audit-DJfP7KjJ.js → audit-TSVXvoTa.js} +29 -29
- package/dist/{auth-B3HDYw4G.js → auth-anvTU0Sb.js} +1 -1
- package/dist/{auth-choice-Ko0_UPIV.js → auth-choice-Bhzlukg0.js} +12 -12
- package/dist/{auth-choice-f6C6bI9v.js → auth-choice-CR6bBvDU.js} +14 -14
- package/dist/{auth-choice.apply-helpers-DR-eUj_5.js → auth-choice.apply-helpers-Du585kvU.js} +1 -1
- package/dist/{auth-profiles-D_x1_5v_.js → auth-profiles-CyG9VwU_.js} +16 -16
- package/dist/{auth-token-BqjY9MGq.js → auth-token-BIEjzQiE.js} +1 -1
- package/dist/{banner-DB1rGYKC.js → banner-D-ha13Xs.js} +2 -2
- package/dist/{bindings-Daa-Etag.js → bindings-CsIiIjqN.js} +2 -2
- package/dist/{bindings-Hx6KNJeg.js → bindings-DGvp9FdD.js} +1 -1
- package/dist/{bonjour-discovery-t-SAPCsb.js → bonjour-discovery-B68dCYTY.js} +1 -1
- package/dist/{browser-cli-CTlLlDFe.js → browser-cli-DREC4EVl.js} +12 -12
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +65 -65
- package/dist/bundled/bootstrap-extra-files/handler.js +7 -7
- package/dist/bundled/command-logger/handler.js +2 -2
- package/dist/bundled/session-memory/handler.js +65 -65
- package/dist/{call-CzoM7hPS.js → call-CmAGfSJE.js} +10 -10
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-account-context-CiCkIxCu.js → channel-account-context-DNFdIaSr.js} +7 -6
- package/dist/{channel-account-context-D0zX-Gup.js → channel-account-context-etfgJrr_.js} +2 -1
- package/dist/{channel-activity-Btz1t5_1.js → channel-activity-D81g48kD.js} +3 -3
- package/dist/{channel-options-DLPoMi6B.js → channel-options-6JzQN9nt.js} +3 -3
- package/dist/{channel-selection-D8KYuWir.js → channel-selection-DGtYwfd7.js} +1 -1
- package/dist/{channel-web-BMZ_oZSK.js → channel-web-oQImOucb.js} +18 -18
- package/dist/{channels-cli-sNDA9BU2.js → channels-cli-CzLX8jUv.js} +95 -95
- package/dist/{channels-status-issues-5n9kobSz.js → channels-status-issues-BMNB2aMG.js} +1 -1
- package/dist/{chrome-DX1blHAJ.js → chrome-CjTE-vWv.js} +18 -18
- package/dist/{chrome-DuDCGdf-.js → chrome-DeZyLFsG.js} +4 -4
- package/dist/{chrome-CuMCXCQN.js → chrome-xatreDUO.js} +8 -8
- package/dist/{chunk-DEkdXze6.js → chunk-DtYb6TYl.js} +1 -1
- package/dist/{clawbot-cli-SIY_fH-I.js → clawbot-cli-H1Uj0ifV.js} +5 -5
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-Cjv-J_yg.js → cli-C2xvYknT.js} +76 -76
- package/dist/{client-BvL3EdiZ.js → client-vUKV2o6h.js} +2 -2
- package/dist/{command-registry-KfIoXPZE.js → command-registry-QcrBU_9X.js} +13 -13
- package/dist/{commands-C67IbXs7.js → commands-d8L0zY8O.js} +1 -1
- package/dist/{commands-registry-D0_D5hFV.js → commands-registry-C78O6aNi.js} +3 -3
- package/dist/{commands-registry-BQkQRhEo.js → commands-registry-NIsv9Z4R.js} +5 -5
- package/dist/{completion-cli-iCWrVHvc.js → completion-cli-BkWPjJyP.js} +13 -13
- package/dist/{completion-cli-SYxZGwWD.js → completion-cli-VWIJWtLM.js} +1 -1
- package/dist/{config-cli-5lP-lwj0.js → config-cli-B4WnAVfw.js} +7 -7
- package/dist/{config-guard-t_xLf16g.js → config-guard-RZw5NkPK.js} +3 -3
- package/dist/{config-validation-DkA3FBg8.js → config-validation-tb90Bzho.js} +3 -3
- package/dist/{configure-hI0hAw1W.js → configure-DuwIk56q.js} +17 -17
- package/dist/control-ui/assets/{index-DPyUb7lL.css → index-B5WC_0Be.css} +1 -1
- package/dist/control-ui/assets/{index-BlqD_sH7.js → index-DmJK8e2M.js} +2 -2
- package/dist/control-ui/assets/index-DmJK8e2M.js.map +1 -0
- package/dist/control-ui/index.html +2 -2
- package/dist/{control-ui-assets-M84PR-kz.js → control-ui-assets-Czpjuiah.js} +1 -1
- package/dist/{cron-cli-Bg88aQ8Y.js → cron-cli-D5MnhB5f.js} +12 -12
- package/dist/{daemon-cli-CFnqQB6M.js → daemon-cli-oCVkh3bg.js} +15 -15
- package/dist/{daemon-install-helpers-C1iBqd73.js → daemon-install-helpers-D5tste0V.js} +11 -11
- package/dist/{daemon-install-CdoMSH6S.js → daemon-install-vQ6KespE.js} +4 -4
- package/dist/{dashboard-CYa-ISxZ.js → dashboard-BstU6qkZ.js} +2 -2
- package/dist/{deliver-DTgCZWjU.js → deliver-H0xCFj4j.js} +7 -7
- package/dist/{deliver-Dyh8ZsLI.js → deliver-Z7543EnP.js} +1 -1
- package/dist/{deliver-C82Egs0W.js → deliver-xY3h9X6N.js} +22 -22
- package/dist/{devices-cli-9aOy3d7K.js → devices-cli-D6b6S-Iy.js} +8 -8
- package/dist/{diagnostic-DpOlXoSr.js → diagnostic-BO1GQJJf.js} +2 -2
- package/dist/{diagnostic-Bvatw1Xn.js → diagnostic-DjxUqpmL.js} +1 -1
- package/dist/{diagnostics-DooDWHeF.js → diagnostics-vLzdmcgg.js} +5 -5
- package/dist/{directory-cli-Rk2cBm0A.js → directory-cli-D3o7BGMd.js} +8 -8
- package/dist/{dns-cli-BXhJBWtC.js → dns-cli-B5kqVfFd.js} +5 -5
- package/dist/{dock-DT8sACcR.js → dock-CoclJnwp.js} +4 -4
- package/dist/{dock-DWqb4ufG.js → dock-Cr9V9V1V.js} +6 -6
- package/dist/{docs-cli-D606Eb-M.js → docs-cli-CyjlhZAj.js} +4 -4
- package/dist/{doctor-completion-C7FCLVKC.js → doctor-completion-DGNL86eP.js} +1 -1
- package/dist/{doctor-completion-DNAwhmlY.js → doctor-completion-SBDS3edN.js} +2 -2
- package/dist/{doctor-config-flow-ePZ7ejQj.js → doctor-config-flow-DclZbGUP.js} +15 -15
- package/dist/{enable-CnvIWic7.js → enable-CKAw_GCd.js} +1 -1
- package/dist/entry.js +2 -2
- package/dist/{env-Bn6pmvjK.js → env-DNMZEG57.js} +2 -2
- package/dist/{errors-azBrKJmF.js → errors-DEkWxItM.js} +1 -1
- package/dist/{exec-approvals-allowlist-B4DS6FIn.js → exec-approvals-allowlist-CFjPSbxI.js} +1 -1
- package/dist/{exec-approvals-cli-Czp8csm7.js → exec-approvals-cli-U46MdeMi.js} +16 -16
- package/dist/{exec-safe-bin-runtime-policy-BP6ImlkB.js → exec-safe-bin-runtime-policy-CpMj95vJ.js} +2 -2
- package/dist/extensionAPI.js +6 -6
- package/dist/{fetch-B82CeaHJ.js → fetch--iXu7oa7.js} +5 -5
- package/dist/{fetch-DC-NMnAU.js → fetch-DOjg912W.js} +3 -3
- package/dist/{fetch-guard-CCLWHwu7.js → fetch-guard-CNvY0vzQ.js} +2 -2
- package/dist/{fetch-guard-B62rgaSw.js → fetch-guard-Csbz9pui.js} +1 -1
- package/dist/{frontmatter-5U1LYLH9.js → frontmatter-DIRc-IR1.js} +2 -2
- package/dist/{fs-safe-CJDtl_QU.js → fs-safe-BqJ9egpm.js} +24 -24
- package/dist/{fs-safe-BDR6eQAw.js → fs-safe-D8x_nIIA.js} +4 -4
- package/dist/{gateway-cli-BKhQZ6rL.js → gateway-cli-ADJ8WFzB.js} +267 -93
- package/dist/{gateway-cli-Cb1IDsaH.js → gateway-cli-D5wMqxbT.js} +423 -249
- package/dist/{gateway-rpc-BgV_ZJ92.js → gateway-rpc-DFqEAyI_.js} +1 -1
- package/dist/{github-copilot-token-CPjAmbfr.js → github-copilot-token-DLGN-8YS.js} +7 -7
- package/dist/{health-DugDjq1f.js → health-Dzwp2cfK.js} +14 -14
- package/dist/{hooks-cli-VjmNvsLG.js → hooks-cli-DKAhHxZp.js} +84 -84
- package/dist/{hooks-status-DE20AAEu.js → hooks-status-6tcOdcYp.js} +1 -1
- package/dist/{image-BfqphdQM.js → image-BjuH1GKB.js} +5 -5
- package/dist/{image-BQ1JgwZu.js → image-DCyaYY2d.js} +6 -6
- package/dist/{image-DihIv8Eo.js → image-DQV2jl6F.js} +1 -1
- package/dist/{image-ops-jvmQoiyw.js → image-ops-B2L37gT8.js} +12 -12
- package/dist/{image-ops-BGTBZMuE.js → image-ops-DCpyia_K.js} +3 -3
- package/dist/index.js +1 -1
- package/dist/{inspect-DeP74OJO.js → inspect-DJUXn0vX.js} +4 -4
- package/dist/{install-safe-path-CWo3RPkH.js → install-safe-path-DVQh7rEs.js} +25 -25
- package/dist/{installs-BYqcA-ke.js → installs-jXfyPi74.js} +9 -9
- package/dist/{internal-hooks-oLQ2m8YT.js → internal-hooks-yQe6H47q.js} +1 -1
- package/dist/{ipv4-BB1Ro6so.js → ipv4-DQS0lTwQ.js} +1 -1
- package/dist/{ir-BODD8g-I.js → ir-BZUjdf-6.js} +6 -6
- package/dist/{ir-DziC-P4Z.js → ir-CEwBpxhC.js} +6 -6
- package/dist/{issue-format-CqVkT3gT.js → issue-format-NBMJ5xAP.js} +1 -1
- package/dist/{json-files-CuJjdF_0.js → json-files-rR19q30D.js} +8 -8
- package/dist/{lifecycle-core-DAWYYqJl.js → lifecycle-core-oTVOKNSW.js} +5 -5
- package/dist/llm-slug-generator.js +65 -65
- package/dist/{logger-DelEB7MK.js → logger-BlH5MJiV.js} +1 -1
- package/dist/{login-Cm2zDfEU.js → login-CgEHUE7h.js} +6 -6
- package/dist/{login-CYfV0FRr.js → login-I5RlwiJn.js} +3 -3
- package/dist/{login-qr-DUSyrCPW.js → login-qr-CRjZn3ix.js} +6 -6
- package/dist/{login-qr-iS1jPDpP.js → login-qr-DUJfhbUe.js} +13 -13
- package/dist/{logs-cli--IqfO6Fs.js → logs-cli-D2-73CiV.js} +9 -9
- package/dist/{manager-DdzkWOvc.js → manager-BNuB9clC.js} +15 -15
- package/dist/{manager-7hZXEYTj.js → manager-DWpiNvlg.js} +14 -14
- package/dist/{manifest-registry-Kbw8YPsZ.js → manifest-registry-CBF8Vfz8.js} +1 -1
- package/dist/{markdown-tables-pfs_NCNh.js → markdown-tables-BHONoo6S.js} +1 -1
- package/dist/{markdown-tables-BYHgyUjA.js → markdown-tables-DQlQMRGZ.js} +1 -1
- package/dist/{memory-cli-CuT-iG2F.js → memory-cli-BUrf60e_.js} +12 -12
- package/dist/{message-channel-POuk6EOq.js → message-channel-Dl8dSs0T.js} +1 -1
- package/dist/{model-DmBmzJI6.js → model-DMZUvZJo.js} +2 -2
- package/dist/{model-catalog-D1X8r3WJ.js → model-catalog-DFi9HgWu.js} +3 -3
- package/dist/{model-picker-CrYHvOZH.js → model-picker-DFyoaAce.js} +4 -4
- package/dist/{model-selection-DfZMxaX3.js → model-selection-D_Si2Ict.js} +44 -44
- package/dist/{models-BwUaRaeh.js → models-B-VHfTz-.js} +18 -18
- package/dist/{models-cli-DPvtAoJ-.js → models-cli-DQBbzn_p.js} +81 -81
- package/dist/{models-config-CmrBGsQs.js → models-config-AePb9RAo.js} +6 -6
- package/dist/{net-BXeYv7Iu.js → net-C75G4fup.js} +2 -2
- package/dist/{node-cli-Co4McDQy.js → node-cli-UnJ5obvj.js} +33 -33
- package/dist/{node-command-policy-D7hSN9B8.js → node-command-policy-DMwxqhrG.js} +1 -1
- package/dist/{node-service-CzRylWgI.js → node-service-83OYUi14.js} +1 -1
- package/dist/{nodes-cli-wABD1dZs.js → nodes-cli-U66EhW5E.js} +16 -16
- package/dist/{nodes-screen-DcxCMjOs.js → nodes-screen-BHwVUMr8.js} +7 -7
- package/dist/{npm-pack-install-BGN-e1vW.js → npm-pack-install-1gsZywqI.js} +18 -18
- package/dist/{npm-resolution-Dp9ywE7U.js → npm-resolution-ZwcMp-e1.js} +5 -5
- package/dist/{onboard-tlfs9gUN.js → onboard-1RaJpuJ4.js} +1 -1
- package/dist/{onboard-DfDL2v89.js → onboard-Ce_QcPvd.js} +6 -6
- package/dist/{onboard-channels-CjyJiI4i.js → onboard-channels-BLL6tVVk.js} +20 -20
- package/dist/{onboard-custom-WfZ3J4O7.js → onboard-custom-CltkNK3c.js} +3 -3
- package/dist/{onboard-custom.shared-D52ggtQF.js → onboard-custom.shared-CXzE62ZH.js} +2 -2
- package/dist/{onboard-helpers-CczYNQDJ.js → onboard-helpers-D8lLbK3A.js} +11 -11
- package/dist/{onboard-hooks-o0B0p8tR.js → onboard-hooks-DBif0Jq8.js} +4 -4
- package/dist/{onboard-remote-DTz_Z9Xl.js → onboard-remote-DpEjARZa.js} +3 -3
- package/dist/{onboard-skills-D70PenD-.js → onboard-skills-CL0tHf_N.js} +4 -4
- package/dist/{onboarding-H5cLNUFG.js → onboarding-Rub9MXWB.js} +1 -1
- package/dist/{onboarding-DNV-TKzA.js → onboarding-WDRpEgra.js} +13 -13
- package/dist/{onboarding.finalize-C6UdLnH3.js → onboarding.finalize-CWYrjSVx.js} +89 -89
- package/dist/{onboarding.finalize-DfZFzt37.js → onboarding.finalize-MTyP_Dr4.js} +3 -3
- package/dist/{onboarding.gateway-config-CnQR4xLI.js → onboarding.gateway-config-Ce8ndMkF.js} +18 -18
- package/dist/{openai-model-default-DqKKq57j.js → openai-model-default-XM-ZB1MD.js} +2 -2
- package/dist/{outbound-Dv-MM4iv.js → outbound-CHyBoNxD.js} +4 -4
- package/dist/{outbound-4q4mbU-Z.js → outbound-DOVV_R6m.js} +7 -7
- package/dist/{outbound-attachment-CBCp1oVQ.js → outbound-attachment-C7sJLSnv.js} +2 -2
- package/dist/{outbound-attachment-CXINK8df.js → outbound-attachment-DM-h2uQ1.js} +2 -2
- package/dist/{pairing-cli-BUHAN0R5.js → pairing-cli-DUMMuvWC.js} +9 -9
- package/dist/{pairing-labels-CFSUHOmk.js → pairing-labels-x4akYNb7.js} +1 -1
- package/dist/{pairing-store-BfzlN-z9.js → pairing-store-rFuiIoGM.js} +3 -3
- package/dist/{path-alias-guards-DfQIjfhB.js → path-alias-guards-CKjKIhQ3.js} +1 -1
- package/dist/{path-alias-guards-Cg9ZP1NN.js → path-alias-guards-laKq24fx.js} +3 -3
- package/dist/{path-safety-tZSbJG67.js → path-safety-BxYB92SS.js} +1 -1
- package/dist/{paths-BjoSX1aC.js → paths-B_L2Zoe-.js} +9 -9
- package/dist/{paths-BZO1jkK2.js → paths-Cpu0XgUj.js} +3 -3
- package/dist/{paths-DKuX7-1L.js → paths-aGRLvQx9.js} +5 -5
- package/dist/{pi-embedded-xCcmCTnf.js → pi-embedded-CZAvX74y.js} +22 -22
- package/dist/{pi-embedded-DiUmkZyz.js → pi-embedded-DE3hb87F.js} +178 -178
- package/dist/{pi-embedded-helpers-C3sJPGXn.js → pi-embedded-helpers-BB2whkUz.js} +6 -6
- package/dist/{pi-embedded-helpers-CuwhW4u9.js → pi-embedded-helpers-CMTVhLjq.js} +29 -29
- package/dist/{pi-embedded-helpers-Bmj18lhA.js → pi-embedded-helpers-DK1ft2pf.js} +3 -3
- package/dist/{pi-model-discovery-COjkql-U.js → pi-model-discovery-DCIw1y1c.js} +7 -7
- package/dist/{pi-model-discovery-BZ2RCD_u.js → pi-model-discovery-RrejIg26.js} +1 -1
- package/dist/{pi-tools.policy-BH0D2kX0.js → pi-tools.policy-DRW8ya1z.js} +5 -5
- package/dist/{plugin-auto-enable-DER6qA6X.js → plugin-auto-enable-S_lBQAKI.js} +3 -3
- package/dist/{plugin-registry-CmucB2C0.js → plugin-registry-C2g1aLrK.js} +3 -3
- package/dist/{plugins-vsjS_m58.js → plugins-C4cYqW07.js} +2 -2
- package/dist/{plugins-D63QYxW6.js → plugins-CJoaoIHc.js} +11 -11
- package/dist/{plugins-cli-DJFtia9f.js → plugins-cli-Cdug93Mi.js} +86 -86
- package/dist/{ports-sCOQUaAP.js → ports-DRaxdQmm.js} +2 -2
- package/dist/{ports-zWusnrvP.js → ports-tfS1haOJ.js} +1 -1
- package/dist/{program-BkK1YIQS.js → program-L4hhvW67.js} +84 -84
- package/dist/{program-context-CFNQpYpG.js → program-context-BEPxCThZ.js} +7 -7
- package/dist/{prompt-select-styled-DlC5a1xd.js → prompt-select-styled-CYmsrkR3.js} +39 -39
- package/dist/{prompt-select-styled-DGdjezC8.js → prompt-select-styled-DTqU-r5T.js} +3 -3
- package/dist/{provider-auth-helpers-CJ2_W1oy.js → provider-auth-helpers-CNkIHUuF.js} +5 -5
- package/dist/{proxy-jINniQBi.js → proxy-DfJJLvch.js} +1 -1
- package/dist/{proxy-env-vYAjKL5q.js → proxy-env-BnDt8j9F.js} +1 -1
- package/dist/{proxy-env-BQIJPH4j.js → proxy-env-BoopXu2J.js} +1 -1
- package/dist/{proxy-fetch-AvkSvetA.js → proxy-fetch-xlbVQYN_.js} +1 -1
- package/dist/{push-apns-BKjyYFyk.js → push-apns-DRX0c6-y.js} +5 -5
- package/dist/{pw-ai-pqeoAqm_.js → pw-ai-CMUrm_kS.js} +1 -1
- package/dist/{pw-ai-BLNiRUPI.js → pw-ai-DGwA7iCM.js} +17 -17
- package/dist/{pw-ai-ITbRRqVN.js → pw-ai-DyGZ1pXu.js} +15 -15
- package/dist/{qmd-manager-BNohLpRA.js → qmd-manager-Bo22w5wm.js} +20 -20
- package/dist/{qmd-manager-BBKfRzj-.js → qmd-manager-CeN3N992.js} +11 -11
- package/dist/{qr-cli-D-LqDNlm.js → qr-cli-EHSe4TmR.js} +1 -1
- package/dist/{query-expansion-BrM3X6-L.js → query-expansion-Ba9OpCm9.js} +12 -12
- package/dist/{query-expansion-2BrixCA2.js → query-expansion-CGnW4Mk_.js} +5 -5
- package/dist/{redact-uUggP88O.js → redact-ScShueoF.js} +1 -1
- package/dist/{redact-snapshot-D3QFNQl8.js → redact-snapshot-kY3aFpcF.js} +1 -1
- package/dist/{register.agent-C3K3DXul.js → register.agent-CaCz2lnX.js} +97 -97
- package/dist/register.configure-BHL2CNOY.js +174 -0
- package/dist/{register.init-ClMzXUKm.js → register.init-D4hlhvsq.js} +15 -15
- package/dist/{register.maintenance-Bb8amfJh.js → register.maintenance-DsxNo00b.js} +6 -6
- package/dist/{register.maintenance-zsZrRIaB.js → register.maintenance-MJR5bDWC.js} +99 -99
- package/dist/{register.message-CfRd6EM2.js → register.message-ChJGE4xV.js} +77 -77
- package/dist/{register.onboard-qFRFDsPK.js → register.onboard-4aB9FmjK.js} +2 -2
- package/dist/{register.onboard-BFM29BaY.js → register.onboard-CRCrMN8O.js} +18 -18
- package/dist/{register.setup-D0E9z_QW.js → register.setup-CCPeU8WO.js} +2 -2
- package/dist/{register.setup-Caqvvqmm.js → register.setup-DqRNRiXi.js} +21 -21
- package/dist/{register.start-CrwDVujg.js → register.start-D3IRihbV.js} +17 -17
- package/dist/{register.status-health-sessions-CWb4-Kgs.js → register.status-health-sessions-EhCB2a7v.js} +3 -3
- package/dist/{register.status-health-sessions-BBEF4th9.js → register.status-health-sessions-zD3z2YuT.js} +91 -91
- package/dist/{register.subclis-rB1Roe3w.js → register.subclis-D12iC4nF.js} +31 -31
- package/dist/{registry-C2GEGa2t.js → registry-CJCkqTms.js} +3 -3
- package/dist/{replies-Ckd7Lwt0.js → replies-BDnb0prE.js} +1 -1
- package/dist/{replies-yAf6dFeT.js → replies-BFYGUEKu.js} +3 -3
- package/dist/{reply-prefix-9mzt89Cf.js → reply-prefix-DK1i6bCJ.js} +1 -1
- package/dist/{reply-prefix-DpXMFuAa.js → reply-prefix-H_GSyyzN.js} +1 -1
- package/dist/{resolve-route-Cnto8LMw.js → resolve-route-ByAwAiq5.js} +2 -2
- package/dist/{resolve-route-BNElrVxR.js → resolve-route-C5hVstLo.js} +4 -4
- package/dist/{retry-Ayb7e4XG.js → retry-DTeP7C3h.js} +1 -1
- package/dist/{rpc-9G93KhBv.js → rpc-Bzb0JMJ_.js} +1 -1
- package/dist/{run-main-C02l3ZhV.js → run-main-C_fGUv-Y.js} +95 -95
- package/dist/{runtime-BI0xjrHi.js → runtime-Cx-7xFzl.js} +2 -2
- package/dist/{sandbox-CLIUxOtc.js → sandbox-BLqUWbp2.js} +18 -18
- package/dist/{sandbox-cli-MjHZjW2w.js → sandbox-cli-CEriRvUh.js} +26 -26
- package/dist/{secrets-cli-BFU9jh2A.js → secrets-cli-DG-NG8PH.js} +10 -10
- package/dist/{security-cli-DIfmEZrw.js → security-cli-C_Bc1U-7.js} +43 -43
- package/dist/{send-Bclgg0Ur.js → send-B4pSMBHk.js} +8 -8
- package/dist/{send-e1X1pfda.js → send-BCLu4NEE.js} +6 -6
- package/dist/{send-BpXRh0BM.js → send-BTswySBz.js} +11 -11
- package/dist/{send-Bjaa69Cy.js → send-BqKSZyIb.js} +27 -27
- package/dist/{send-DYY51FOR.js → send-CN0f1Yst.js} +6 -6
- package/dist/{send-CQJKPGw4.js → send-CZ2O-5pP.js} +6 -6
- package/dist/{send-sj8Hu26l.js → send-D0X-8aPh.js} +8 -8
- package/dist/{send-Cp0yQi_p.js → send-V3fEVmLq.js} +10 -10
- package/dist/{send-DQ7hIAIK.js → send-XAO1mk64.js} +7 -7
- package/dist/{send-Cpaj_bKB.js → send-ZyB64ntO.js} +5 -5
- package/dist/{server-DbB5aXZq.js → server-CzDsmd9g.js} +19 -19
- package/dist/{server-context-DnPsW_Mg.js → server-context-DRq_OT33.js} +12 -12
- package/dist/{server-lifecycle-B2y6Fg7R.js → server-lifecycle-CcYnyYPQ.js} +2 -2
- package/dist/{server-middleware-CKSnhiM2.js → server-middleware-DHxnFjIL.js} +1 -1
- package/dist/{server-node-events-BwnXBzS2.js → server-node-events-B5xSV7Kq.js} +77 -77
- package/dist/{service-Wk285d-R.js → service-CZORJG4z.js} +15 -15
- package/dist/{session-meta-DF1WT4cr.js → session-meta-Cew1QAYN.js} +1 -1
- package/dist/{session-meta-CyQWVUk4.js → session-meta-Cqv55kSk.js} +2 -2
- package/dist/{session-DNbfXbBi.js → session-nilNSQEL.js} +1 -1
- package/dist/{session-utils-BncMg1bn.js → session-utils-DxaIoRMp.js} +6 -6
- package/dist/{session-TVb8hgJP.js → session-xKPVUYQP.js} +9 -9
- package/dist/{sessions-B2mnwD21.js → sessions-BXz4gdq6.js} +15 -15
- package/dist/{sessions-3jroJwu7.js → sessions-CA_BydGA.js} +31 -31
- package/dist/{sessions-C2Xfck_9.js → sessions-DhD3eJDE.js} +4 -4
- package/dist/{shared-CJN2BLdi.js → shared-BZscafy-.js} +1 -1
- package/dist/{shared-BAdi_Ot7.js → shared-DvHQekWm.js} +3 -3
- package/dist/{skill-commands-CSr9_48V.js → skill-commands-CZFmIM-s.js} +9 -9
- package/dist/{skill-commands-CYucDd3C.js → skill-commands-Cpr3Poo2.js} +5 -5
- package/dist/{skill-scanner-BXOiOvI1.js → skill-scanner-0-AybMIe.js} +6 -6
- package/dist/{skills-BCgFAMj3.js → skills-D4S-gyVf.js} +3 -3
- package/dist/{skills-B82IjVxn.js → skills-DMmr25nW.js} +22 -22
- package/dist/{skills-cli-CwbRKLum.js → skills-cli-B0jFsoo4.js} +5 -5
- package/dist/{skills-install-BQyeS7wB.js → skills-install-C6-Zzqoi.js} +6 -6
- package/dist/{skills-status-DG-bH5mO.js → skills-status-DQzBD0Y7.js} +1 -1
- package/dist/{status-B4v5QI5X.js → status-BfWqYNJf.js} +2 -2
- package/dist/{status-XGYDzhkW.js → status-Dw7ag8qn.js} +26 -26
- package/dist/{status.update-n2QPQr8w.js → status.update-B6whKviL.js} +2 -2
- package/dist/{status.update-DIamQqHr.js → status.update-C8qgou8r.js} +1 -1
- package/dist/{store-DhC72KqW.js → store-C8KgeMt2.js} +2 -2
- package/dist/{store-U8cs0QvT.js → store-TdzSHRPN.js} +5 -5
- package/dist/{subagent-registry-WD5F6cBf.js → subagent-registry-D6OfBLNb.js} +156 -156
- package/dist/{subsystem-CAatx5oo.js → subsystem-BRjuJbbM.js} +14 -14
- package/dist/{system-cli-C_5YHHhF.js → system-cli-BoamUpxz.js} +9 -9
- package/dist/{system-run-command-GKGzGztn.js → system-run-command-XHAlbx5q.js} +1 -1
- package/dist/{systemd-Dbwmb4TX.js → systemd-C4JtDaKk.js} +9 -9
- package/dist/{systemd-hints-VM2JkQxw.js → systemd-hints-ZHrBbXDd.js} +6 -6
- package/dist/{systemd-linger-DoeP9Z3f.js → systemd-linger-CD4viBmg.js} +1 -1
- package/dist/{tables-Bfh_TnCf.js → tables-BKnPZssn.js} +1 -1
- package/dist/{tables-DVXe5x1J.js → tables-BOsRa7CS.js} +1 -1
- package/dist/{tailnet-C1XBcWue.js → tailnet-CfP3A6g2.js} +1 -1
- package/dist/{target-errors-CGYXYvSZ.js → target-errors-B9Jzop3d.js} +2 -2
- package/dist/{target-errors-C5LA-JI-.js → target-errors-DPJ9HFp9.js} +4 -4
- package/dist/{tokens-BvzZdrVJ.js → tokens-B9EDT4jv.js} +1 -1
- package/dist/{tool-images-CnpAosfi.js → tool-images-CmgHk8xk.js} +1 -1
- package/dist/{tool-images-CqsWnc1k.js → tool-images-ffdfBx0b.js} +2 -2
- package/dist/{tool-loop-detection-C4V990MS.js → tool-loop-detection-CLoYKYIq.js} +3 -3
- package/dist/{tui-kOoc7WBf.js → tui-GWJMI53u.js} +6 -6
- package/dist/{tui-cli-DeTfdnEG.js → tui-cli-CMrxH2Q_.js} +33 -33
- package/dist/{update-DFr19tQ1.js → update-CDWJ50iD.js} +3 -3
- package/dist/{update-cli-CUSnVFt4.js → update-cli-Dw_JHcRy.js} +22 -14
- package/dist/{update-cli-BlswPThb.js → update-cli-r3eyhSgp.js} +122 -114
- package/dist/{update-runner-CX6jOI_r.js → update-runner-CHxTFtW8.js} +34 -22
- package/dist/{update-runner-BA9B0S60.js → update-runner-CJua_LZ3.js} +19 -7
- package/dist/{utils-Bo1RFF0l.js → utils-BFZnl-5N.js} +6 -6
- package/dist/{web-DsAoa63g.js → web-B2_c07KN.js} +69 -69
- package/dist/web-B4yuhy9a.js +125 -0
- package/dist/{web-CvYmNThc.js → web-De45Xhd1.js} +6 -6
- package/dist/{webhooks-cli-DLgCJq4n.js → webhooks-cli-B09BdLSk.js} +6 -6
- package/dist/{whatsapp-actions-DXjy9m41.js → whatsapp-actions-CHt12z-f.js} +28 -28
- package/dist/{whatsapp-actions-B81EJMQI.js → whatsapp-actions-DUoWY7mE.js} +19 -19
- package/dist/{with-timeout-l0X_rwcb.js → with-timeout-B9qgOUui.js} +3 -3
- package/dist/{workspace-DWBFoy1G.js → workspace-A5CNJccm.js} +1 -1
- package/dist/{workspace-CswOYN9T.js → workspace-D6mrCnXi.js} +21 -21
- package/dist/{workspace-BHfqkuYN.js → workspace-DzeL98px.js} +23 -23
- package/dist/{workspace-dirs-BOgNOBjy.js → workspace-dirs-Bevk6X_8.js} +1 -1
- package/dist/{wsl-BDRu1-pk.js → wsl-DksyFTBT.js} +2 -2
- package/docs/install/index.md +12 -12
- package/docs/install/updating.md +32 -33
- package/docs/plans/2026-03-11-bitseek-update-package-design.md +25 -0
- package/package.json +1 -1
- package/dist/control-ui/assets/index-BlqD_sH7.js.map +0 -1
- package/dist/register.configure-aJItV_ZP.js +0 -174
- package/dist/web-DNL22pwf.js +0 -125
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { c as resolveStateDir } from "./paths-
|
|
2
|
-
import { c as danger, p as shouldLogVerbose } from "./subsystem-
|
|
1
|
+
import { c as resolveStateDir } from "./paths-aGRLvQx9.js";
|
|
2
|
+
import { c as danger, p as shouldLogVerbose } from "./subsystem-BRjuJbbM.js";
|
|
3
3
|
import { b as isCronSessionKey, x as isSubagentSessionKey } from "./session-key-a6av96Fj.js";
|
|
4
|
-
import { f as pathExists$1, h as resolveUserPath } from "./utils-
|
|
5
|
-
import { n as logError, t as logDebug } from "./logger-
|
|
4
|
+
import { f as pathExists$1, h as resolveUserPath } from "./utils-BFZnl-5N.js";
|
|
5
|
+
import { n as logError, t as logDebug } from "./logger-BlH5MJiV.js";
|
|
6
6
|
import fs from "node:fs/promises";
|
|
7
7
|
import os from "node:os";
|
|
8
8
|
import path from "node:path";
|
|
9
|
-
import
|
|
9
|
+
import syncFs from "node:fs";
|
|
10
10
|
import { promisify } from "node:util";
|
|
11
11
|
import { execFile, spawn } from "node:child_process";
|
|
12
12
|
import process$1 from "node:process";
|
|
@@ -314,7 +314,7 @@ function resolveBoundaryPathLexicalSync(params) {
|
|
|
314
314
|
rootCanonicalPath: params.rootCanonicalPath,
|
|
315
315
|
resolveParams: params.params,
|
|
316
316
|
absolutePath: params.absolutePath,
|
|
317
|
-
read: (cursor) =>
|
|
317
|
+
read: (cursor) => syncFs.lstatSync(cursor)
|
|
318
318
|
});
|
|
319
319
|
if (isPromiseLike(maybeStat)) throw new Error("Unexpected async lexical stat");
|
|
320
320
|
const stat = maybeStat;
|
|
@@ -460,15 +460,15 @@ function resolvePathViaExistingAncestorSync(targetPath) {
|
|
|
460
460
|
const normalized = path.resolve(targetPath);
|
|
461
461
|
let cursor = normalized;
|
|
462
462
|
const missingSuffix = [];
|
|
463
|
-
while (!isFilesystemRoot(cursor) && !
|
|
463
|
+
while (!isFilesystemRoot(cursor) && !syncFs.existsSync(cursor)) {
|
|
464
464
|
missingSuffix.unshift(path.basename(cursor));
|
|
465
465
|
const parent = path.dirname(cursor);
|
|
466
466
|
if (parent === cursor) break;
|
|
467
467
|
cursor = parent;
|
|
468
468
|
}
|
|
469
|
-
if (!
|
|
469
|
+
if (!syncFs.existsSync(cursor)) return normalized;
|
|
470
470
|
try {
|
|
471
|
-
const resolvedAncestor = path.resolve(
|
|
471
|
+
const resolvedAncestor = path.resolve(syncFs.realpathSync(cursor));
|
|
472
472
|
if (missingSuffix.length === 0) return resolvedAncestor;
|
|
473
473
|
return path.resolve(resolvedAncestor, ...missingSuffix);
|
|
474
474
|
} catch {
|
|
@@ -493,7 +493,7 @@ function getPathKindSync(absolutePath, preserveFinalSymlink) {
|
|
|
493
493
|
try {
|
|
494
494
|
return {
|
|
495
495
|
exists: true,
|
|
496
|
-
kind: toResolvedKind(preserveFinalSymlink ?
|
|
496
|
+
kind: toResolvedKind(preserveFinalSymlink ? syncFs.lstatSync(absolutePath) : syncFs.statSync(absolutePath))
|
|
497
497
|
};
|
|
498
498
|
} catch (error) {
|
|
499
499
|
if (isNotFoundPathError(error)) return {
|
|
@@ -553,10 +553,10 @@ async function resolveSymlinkHopPath(symlinkPath) {
|
|
|
553
553
|
}
|
|
554
554
|
function resolveSymlinkHopPathSync(symlinkPath) {
|
|
555
555
|
try {
|
|
556
|
-
return path.resolve(
|
|
556
|
+
return path.resolve(syncFs.realpathSync(symlinkPath));
|
|
557
557
|
} catch (error) {
|
|
558
558
|
if (!isNotFoundPathError(error)) throw error;
|
|
559
|
-
const linkTarget =
|
|
559
|
+
const linkTarget = syncFs.readlinkSync(symlinkPath);
|
|
560
560
|
return resolvePathViaExistingAncestorSync(path.resolve(path.dirname(symlinkPath), linkTarget));
|
|
561
561
|
}
|
|
562
562
|
}
|
|
@@ -582,7 +582,7 @@ function sameFileIdentity(left, right) {
|
|
|
582
582
|
return sameFileIdentity$1(left, right);
|
|
583
583
|
}
|
|
584
584
|
function openVerifiedFileSync(params) {
|
|
585
|
-
const ioFs = params.ioFs ??
|
|
585
|
+
const ioFs = params.ioFs ?? syncFs;
|
|
586
586
|
const allowedType = params.allowedType ?? "file";
|
|
587
587
|
const openReadFlags = ioFs.constants.O_RDONLY | (typeof ioFs.constants.O_NOFOLLOW === "number" ? ioFs.constants.O_NOFOLLOW : 0);
|
|
588
588
|
let fd = null;
|
|
@@ -659,7 +659,7 @@ function canUseBoundaryFileOpen(ioFs) {
|
|
|
659
659
|
return typeof ioFs.openSync === "function" && typeof ioFs.closeSync === "function" && typeof ioFs.fstatSync === "function" && typeof ioFs.lstatSync === "function" && typeof ioFs.realpathSync === "function" && typeof ioFs.readFileSync === "function" && typeof ioFs.constants === "object" && ioFs.constants !== null;
|
|
660
660
|
}
|
|
661
661
|
function openBoundaryFileSync(params) {
|
|
662
|
-
const ioFs = params.ioFs ??
|
|
662
|
+
const ioFs = params.ioFs ?? syncFs;
|
|
663
663
|
const resolved = resolveBoundaryFilePathGeneric({
|
|
664
664
|
absolutePath: params.absolutePath,
|
|
665
665
|
resolve: (absolutePath) => resolveBoundaryPathSync({
|
|
@@ -710,7 +710,7 @@ function finalizeBoundaryFileOpen(params) {
|
|
|
710
710
|
});
|
|
711
711
|
}
|
|
712
712
|
async function openBoundaryFile(params) {
|
|
713
|
-
const ioFs = params.ioFs ??
|
|
713
|
+
const ioFs = params.ioFs ?? syncFs;
|
|
714
714
|
const maybeResolved = resolveBoundaryFilePathGeneric({
|
|
715
715
|
absolutePath: params.absolutePath,
|
|
716
716
|
resolve: (absolutePath) => resolveBoundaryPath({
|
|
@@ -859,7 +859,7 @@ function resolveNpmArgvForWindows(argv) {
|
|
|
859
859
|
if (!cliName) return null;
|
|
860
860
|
const nodeDir = path.dirname(process$1.execPath);
|
|
861
861
|
const cliPath = path.join(nodeDir, "node_modules", "npm", "bin", cliName);
|
|
862
|
-
if (!
|
|
862
|
+
if (!syncFs.existsSync(cliPath)) return null;
|
|
863
863
|
return [
|
|
864
864
|
process$1.execPath,
|
|
865
865
|
cliPath,
|
|
@@ -1065,7 +1065,7 @@ async function readPackageName(dir) {
|
|
|
1065
1065
|
}
|
|
1066
1066
|
function readPackageNameSync(dir) {
|
|
1067
1067
|
try {
|
|
1068
|
-
const raw =
|
|
1068
|
+
const raw = syncFs.readFileSync(path.join(dir, "package.json"), "utf-8");
|
|
1069
1069
|
const parsed = JSON.parse(raw);
|
|
1070
1070
|
return typeof parsed.name === "string" ? parsed.name : null;
|
|
1071
1071
|
} catch {
|
|
@@ -1099,7 +1099,7 @@ function candidateDirsFromArgv1(argv1) {
|
|
|
1099
1099
|
const normalized = path.resolve(argv1);
|
|
1100
1100
|
const candidates = [path.dirname(normalized)];
|
|
1101
1101
|
try {
|
|
1102
|
-
const resolved =
|
|
1102
|
+
const resolved = syncFs.realpathSync(normalized);
|
|
1103
1103
|
if (resolved !== normalized) candidates.push(path.dirname(resolved));
|
|
1104
1104
|
} catch {}
|
|
1105
1105
|
const parts = normalized.split(path.sep);
|
|
@@ -1208,14 +1208,14 @@ async function readWorkspaceFileWithGuards(params) {
|
|
|
1208
1208
|
const identity = workspaceFileIdentity(opened.stat, opened.path);
|
|
1209
1209
|
const cached = workspaceFileCache.get(params.filePath);
|
|
1210
1210
|
if (cached && cached.identity === identity) {
|
|
1211
|
-
|
|
1211
|
+
syncFs.closeSync(opened.fd);
|
|
1212
1212
|
return {
|
|
1213
1213
|
ok: true,
|
|
1214
1214
|
content: cached.content
|
|
1215
1215
|
};
|
|
1216
1216
|
}
|
|
1217
1217
|
try {
|
|
1218
|
-
const content =
|
|
1218
|
+
const content = syncFs.readFileSync(opened.fd, "utf-8");
|
|
1219
1219
|
workspaceFileCache.set(params.filePath, {
|
|
1220
1220
|
content,
|
|
1221
1221
|
identity
|
|
@@ -1232,7 +1232,7 @@ async function readWorkspaceFileWithGuards(params) {
|
|
|
1232
1232
|
error
|
|
1233
1233
|
};
|
|
1234
1234
|
} finally {
|
|
1235
|
-
|
|
1235
|
+
syncFs.closeSync(opened.fd);
|
|
1236
1236
|
}
|
|
1237
1237
|
}
|
|
1238
1238
|
function stripFrontMatter(content) {
|
|
@@ -6,7 +6,7 @@ import { fileURLToPath } from "node:url";
|
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import os from "node:os";
|
|
8
8
|
import fs from "node:fs";
|
|
9
|
-
import
|
|
9
|
+
import fsPromises from "node:fs/promises";
|
|
10
10
|
|
|
11
11
|
//#region src/agents/skills/filter.ts
|
|
12
12
|
function normalizeSkillFilter(skillFilter) {
|
|
@@ -292,7 +292,7 @@ async function resolveBoundaryPathLexicalAsync(params) {
|
|
|
292
292
|
const stat = await readLexicalStat({
|
|
293
293
|
...sharedStepParams,
|
|
294
294
|
missingFromIndex: idx,
|
|
295
|
-
read: (cursor) =>
|
|
295
|
+
read: (cursor) => fsPromises.lstat(cursor)
|
|
296
296
|
});
|
|
297
297
|
if (!stat) break;
|
|
298
298
|
const disposition = handleLexicalStatDisposition({
|
|
@@ -464,7 +464,7 @@ async function resolvePathViaExistingAncestor(targetPath) {
|
|
|
464
464
|
}
|
|
465
465
|
if (!await pathExists(cursor)) return normalized;
|
|
466
466
|
try {
|
|
467
|
-
const resolvedAncestor = path.resolve(await
|
|
467
|
+
const resolvedAncestor = path.resolve(await fsPromises.realpath(cursor));
|
|
468
468
|
if (missingSuffix.length === 0) return resolvedAncestor;
|
|
469
469
|
return path.resolve(resolvedAncestor, ...missingSuffix);
|
|
470
470
|
} catch {
|
|
@@ -494,7 +494,7 @@ async function getPathKind(absolutePath, preserveFinalSymlink) {
|
|
|
494
494
|
try {
|
|
495
495
|
return {
|
|
496
496
|
exists: true,
|
|
497
|
-
kind: toResolvedKind(preserveFinalSymlink ? await
|
|
497
|
+
kind: toResolvedKind(preserveFinalSymlink ? await fsPromises.lstat(absolutePath) : await fsPromises.stat(absolutePath))
|
|
498
498
|
};
|
|
499
499
|
} catch (error) {
|
|
500
500
|
if (isNotFoundPathError(error)) return {
|
|
@@ -550,7 +550,7 @@ function isFilesystemRoot(candidate) {
|
|
|
550
550
|
}
|
|
551
551
|
async function pathExists(targetPath) {
|
|
552
552
|
try {
|
|
553
|
-
await
|
|
553
|
+
await fsPromises.lstat(targetPath);
|
|
554
554
|
return true;
|
|
555
555
|
} catch (error) {
|
|
556
556
|
if (isNotFoundPathError(error)) return false;
|
|
@@ -559,10 +559,10 @@ async function pathExists(targetPath) {
|
|
|
559
559
|
}
|
|
560
560
|
async function resolveSymlinkHopPath(symlinkPath) {
|
|
561
561
|
try {
|
|
562
|
-
return path.resolve(await
|
|
562
|
+
return path.resolve(await fsPromises.realpath(symlinkPath));
|
|
563
563
|
} catch (error) {
|
|
564
564
|
if (!isNotFoundPathError(error)) throw error;
|
|
565
|
-
const linkTarget = await
|
|
565
|
+
const linkTarget = await fsPromises.readlink(symlinkPath);
|
|
566
566
|
return resolvePathViaExistingAncestor(path.resolve(path.dirname(symlinkPath), linkTarget));
|
|
567
567
|
}
|
|
568
568
|
}
|
|
@@ -779,7 +779,7 @@ const CORE_PACKAGE_NAMES = new Set([
|
|
|
779
779
|
]);
|
|
780
780
|
async function readPackageName(dir) {
|
|
781
781
|
try {
|
|
782
|
-
const raw = await
|
|
782
|
+
const raw = await fsPromises.readFile(path.join(dir, "package.json"), "utf-8");
|
|
783
783
|
const parsed = JSON.parse(raw);
|
|
784
784
|
return typeof parsed.name === "string" ? parsed.name : null;
|
|
785
785
|
} catch {
|
|
@@ -974,7 +974,7 @@ async function loadTemplate(name) {
|
|
|
974
974
|
const templateDir = await resolveWorkspaceTemplateDir();
|
|
975
975
|
const templatePath = path.join(templateDir, name);
|
|
976
976
|
try {
|
|
977
|
-
return stripFrontMatter(await
|
|
977
|
+
return stripFrontMatter(await fsPromises.readFile(templatePath, "utf-8"));
|
|
978
978
|
} catch {
|
|
979
979
|
throw new Error(`Missing workspace template: ${name} (${templatePath}). Ensure docs/reference/templates are packaged.`);
|
|
980
980
|
}
|
|
@@ -989,7 +989,7 @@ async function loadTemplate(name) {
|
|
|
989
989
|
}
|
|
990
990
|
async function writeFileIfMissing(filePath, content) {
|
|
991
991
|
try {
|
|
992
|
-
await
|
|
992
|
+
await fsPromises.writeFile(filePath, content, {
|
|
993
993
|
encoding: "utf-8",
|
|
994
994
|
flag: "wx"
|
|
995
995
|
});
|
|
@@ -1001,7 +1001,7 @@ async function writeFileIfMissing(filePath, content) {
|
|
|
1001
1001
|
}
|
|
1002
1002
|
async function fileExists(filePath) {
|
|
1003
1003
|
try {
|
|
1004
|
-
await
|
|
1004
|
+
await fsPromises.access(filePath);
|
|
1005
1005
|
return true;
|
|
1006
1006
|
} catch {
|
|
1007
1007
|
return false;
|
|
@@ -1034,7 +1034,7 @@ function parseWorkspaceOnboardingState(raw) {
|
|
|
1034
1034
|
}
|
|
1035
1035
|
async function readWorkspaceOnboardingState(statePath) {
|
|
1036
1036
|
try {
|
|
1037
|
-
return parseWorkspaceOnboardingState(await
|
|
1037
|
+
return parseWorkspaceOnboardingState(await fsPromises.readFile(statePath, "utf-8")) ?? { version: WORKSPACE_STATE_VERSION };
|
|
1038
1038
|
} catch (err) {
|
|
1039
1039
|
if (err.code !== "ENOENT") throw err;
|
|
1040
1040
|
return { version: WORKSPACE_STATE_VERSION };
|
|
@@ -1048,20 +1048,20 @@ async function isWorkspaceOnboardingCompleted(dir) {
|
|
|
1048
1048
|
return typeof state.onboardingCompletedAt === "string" && state.onboardingCompletedAt.trim().length > 0;
|
|
1049
1049
|
}
|
|
1050
1050
|
async function writeWorkspaceOnboardingState(statePath, state) {
|
|
1051
|
-
await
|
|
1051
|
+
await fsPromises.mkdir(path.dirname(statePath), { recursive: true });
|
|
1052
1052
|
const payload = `${JSON.stringify(state, null, 2)}\n`;
|
|
1053
1053
|
const tmpPath = `${statePath}.tmp-${process.pid}-${Date.now().toString(36)}`;
|
|
1054
1054
|
try {
|
|
1055
|
-
await
|
|
1056
|
-
await
|
|
1055
|
+
await fsPromises.writeFile(tmpPath, payload, { encoding: "utf-8" });
|
|
1056
|
+
await fsPromises.rename(tmpPath, statePath);
|
|
1057
1057
|
} catch (err) {
|
|
1058
|
-
await
|
|
1058
|
+
await fsPromises.unlink(tmpPath).catch(() => {});
|
|
1059
1059
|
throw err;
|
|
1060
1060
|
}
|
|
1061
1061
|
}
|
|
1062
1062
|
async function hasGitRepo(dir) {
|
|
1063
1063
|
try {
|
|
1064
|
-
await
|
|
1064
|
+
await fsPromises.stat(path.join(dir, ".git"));
|
|
1065
1065
|
return true;
|
|
1066
1066
|
} catch {
|
|
1067
1067
|
return false;
|
|
@@ -1091,7 +1091,7 @@ async function ensureGitRepo(dir, isBrandNewWorkspace) {
|
|
|
1091
1091
|
}
|
|
1092
1092
|
async function ensureAgentWorkspace(params) {
|
|
1093
1093
|
const dir = resolveUserPath(params?.dir?.trim() ? params.dir.trim() : DEFAULT_AGENT_WORKSPACE_DIR);
|
|
1094
|
-
await
|
|
1094
|
+
await fsPromises.mkdir(dir, { recursive: true });
|
|
1095
1095
|
if (!params?.ensureBootstrapFiles) return { dir };
|
|
1096
1096
|
const agentsPath = path.join(dir, DEFAULT_AGENTS_FILENAME);
|
|
1097
1097
|
const soulPath = path.join(dir, DEFAULT_SOUL_FILENAME);
|
|
@@ -1118,7 +1118,7 @@ async function ensureAgentWorkspace(params) {
|
|
|
1118
1118
|
const paths = [...templatePaths, ...userContentPaths];
|
|
1119
1119
|
return (await Promise.all(paths.map(async (p) => {
|
|
1120
1120
|
try {
|
|
1121
|
-
await
|
|
1121
|
+
await fsPromises.access(p);
|
|
1122
1122
|
return true;
|
|
1123
1123
|
} catch {
|
|
1124
1124
|
return false;
|
|
@@ -1151,7 +1151,7 @@ async function ensureAgentWorkspace(params) {
|
|
|
1151
1151
|
if (!state.bootstrapSeededAt && bootstrapExists) markState({ bootstrapSeededAt: nowIso() });
|
|
1152
1152
|
if (!state.onboardingCompletedAt && state.bootstrapSeededAt && !bootstrapExists) markState({ onboardingCompletedAt: nowIso() });
|
|
1153
1153
|
if (!state.bootstrapSeededAt && !state.onboardingCompletedAt && !bootstrapExists) {
|
|
1154
|
-
const [identityContent, userContent] = await Promise.all([
|
|
1154
|
+
const [identityContent, userContent] = await Promise.all([fsPromises.readFile(identityPath, "utf-8"), fsPromises.readFile(userPath, "utf-8")]);
|
|
1155
1155
|
const hasUserContent = await (async () => {
|
|
1156
1156
|
const indicators = [
|
|
1157
1157
|
path.join(dir, "memory"),
|
|
@@ -1159,7 +1159,7 @@ async function ensureAgentWorkspace(params) {
|
|
|
1159
1159
|
path.join(dir, ".git")
|
|
1160
1160
|
];
|
|
1161
1161
|
for (const indicator of indicators) try {
|
|
1162
|
-
await
|
|
1162
|
+
await fsPromises.access(indicator);
|
|
1163
1163
|
return true;
|
|
1164
1164
|
} catch {}
|
|
1165
1165
|
return false;
|
|
@@ -1190,7 +1190,7 @@ async function resolveMemoryBootstrapEntries(resolvedDir) {
|
|
|
1190
1190
|
for (const name of candidates) {
|
|
1191
1191
|
const filePath = path.join(resolvedDir, name);
|
|
1192
1192
|
try {
|
|
1193
|
-
await
|
|
1193
|
+
await fsPromises.access(filePath);
|
|
1194
1194
|
entries.push({
|
|
1195
1195
|
name,
|
|
1196
1196
|
filePath
|
|
@@ -1203,7 +1203,7 @@ async function resolveMemoryBootstrapEntries(resolvedDir) {
|
|
|
1203
1203
|
for (const entry of entries) {
|
|
1204
1204
|
let key = entry.filePath;
|
|
1205
1205
|
try {
|
|
1206
|
-
key = await
|
|
1206
|
+
key = await fsPromises.realpath(entry.filePath);
|
|
1207
1207
|
} catch {}
|
|
1208
1208
|
if (seen.has(key)) continue;
|
|
1209
1209
|
seen.add(key);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as resolveDefaultAgentId, u as resolveAgentWorkspaceDir } from "./agent-scope-
|
|
1
|
+
import { d as resolveDefaultAgentId, u as resolveAgentWorkspaceDir } from "./agent-scope-CY2-lUIY.js";
|
|
2
2
|
|
|
3
3
|
//#region src/agents/workspace-dirs.ts
|
|
4
4
|
function listAgentWorkspaceDirs(cfg) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
|
-
import
|
|
2
|
+
import fsPromises from "node:fs/promises";
|
|
3
3
|
|
|
4
4
|
//#region src/infra/wsl.ts
|
|
5
5
|
let wslCached = null;
|
|
@@ -40,7 +40,7 @@ async function isWSL() {
|
|
|
40
40
|
return wslCached;
|
|
41
41
|
}
|
|
42
42
|
try {
|
|
43
|
-
const release = await
|
|
43
|
+
const release = await fsPromises.readFile("/proc/sys/kernel/osrelease", "utf8");
|
|
44
44
|
wslCached = release.toLowerCase().includes("microsoft") || release.toLowerCase().includes("wsl");
|
|
45
45
|
} catch {
|
|
46
46
|
wslCached = false;
|
package/docs/install/index.md
CHANGED
|
@@ -75,15 +75,15 @@ For VPS/cloud hosts, avoid third-party "1-click" marketplace images when possibl
|
|
|
75
75
|
<Tabs>
|
|
76
76
|
<Tab title="npm">
|
|
77
77
|
```bash
|
|
78
|
-
npm install -g
|
|
79
|
-
|
|
78
|
+
npm install -g @bitseek/claw@latest
|
|
79
|
+
bitseek-claw onboard --install-daemon
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
<Accordion title="sharp build errors?">
|
|
83
83
|
If you have libvips installed globally (common on macOS via Homebrew) and `sharp` fails, force prebuilt binaries:
|
|
84
84
|
|
|
85
85
|
```bash
|
|
86
|
-
SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm install -g
|
|
86
|
+
SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm install -g @bitseek/claw@latest
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
If you see `sharp: Please add node-gyp to your dependencies`, either install build tooling (macOS: Xcode CLT + `npm install -g node-gyp`) or use the env var above.
|
|
@@ -91,9 +91,9 @@ For VPS/cloud hosts, avoid third-party "1-click" marketplace images when possibl
|
|
|
91
91
|
</Tab>
|
|
92
92
|
<Tab title="pnpm">
|
|
93
93
|
```bash
|
|
94
|
-
pnpm add -g
|
|
95
|
-
pnpm approve-builds -g # approve
|
|
96
|
-
|
|
94
|
+
pnpm add -g @bitseek/claw@latest
|
|
95
|
+
pnpm approve-builds -g # approve @bitseek/claw, node-llama-cpp, sharp, etc.
|
|
96
|
+
bitseek-claw onboard --install-daemon
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
<Note>
|
|
@@ -130,7 +130,7 @@ For VPS/cloud hosts, avoid third-party "1-click" marketplace images when possibl
|
|
|
130
130
|
</Step>
|
|
131
131
|
<Step title="Run onboarding">
|
|
132
132
|
```bash
|
|
133
|
-
|
|
133
|
+
bitseek-claw onboard --install-daemon
|
|
134
134
|
```
|
|
135
135
|
</Step>
|
|
136
136
|
</Steps>
|
|
@@ -165,9 +165,9 @@ For VPS/cloud hosts, avoid third-party "1-click" marketplace images when possibl
|
|
|
165
165
|
Verify everything is working:
|
|
166
166
|
|
|
167
167
|
```bash
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
168
|
+
bitseek-claw doctor # check for config issues
|
|
169
|
+
bitseek-claw status # gateway status
|
|
170
|
+
bitseek-claw dashboard # open the browser UI
|
|
171
171
|
```
|
|
172
172
|
|
|
173
173
|
If you need custom runtime paths, use:
|
|
@@ -178,7 +178,7 @@ If you need custom runtime paths, use:
|
|
|
178
178
|
|
|
179
179
|
See [Environment vars](/help/environment) for precedence and full details.
|
|
180
180
|
|
|
181
|
-
## Troubleshooting: `
|
|
181
|
+
## Troubleshooting: `bitseek-claw` not found
|
|
182
182
|
|
|
183
183
|
<Accordion title="PATH diagnosis and fix">
|
|
184
184
|
Quick diagnosis:
|
|
@@ -190,7 +190,7 @@ npm prefix -g
|
|
|
190
190
|
echo "$PATH"
|
|
191
191
|
```
|
|
192
192
|
|
|
193
|
-
If `$(npm prefix -g)/bin` (macOS/Linux) or `$(npm prefix -g)` (Windows) is **not** in your `$PATH`, your shell can't find global npm binaries (including `
|
|
193
|
+
If `$(npm prefix -g)/bin` (macOS/Linux) or `$(npm prefix -g)` (Windows) is **not** in your `$PATH`, your shell can't find global npm binaries (including `bitseek-claw`).
|
|
194
194
|
|
|
195
195
|
Fix — add it to your shell startup file (`~/.zshrc` or `~/.bashrc`):
|
|
196
196
|
|
package/docs/install/updating.md
CHANGED
|
@@ -31,7 +31,6 @@ Notes:
|
|
|
31
31
|
|
|
32
32
|
The installer will `git pull --rebase` **only** if the repo is clean.
|
|
33
33
|
|
|
34
|
-
- For **global installs**, the script uses `npm install -g openclaw@latest` under the hood.
|
|
35
34
|
- Legacy note: `clawdbot` remains available as a compatibility shim.
|
|
36
35
|
|
|
37
36
|
## Before you update
|
|
@@ -48,11 +47,11 @@ Notes:
|
|
|
48
47
|
Global install (pick one):
|
|
49
48
|
|
|
50
49
|
```bash
|
|
51
|
-
npm i -g
|
|
50
|
+
npm i -g @bitseek/claw@latest
|
|
52
51
|
```
|
|
53
52
|
|
|
54
53
|
```bash
|
|
55
|
-
pnpm add -g
|
|
54
|
+
pnpm add -g @bitseek/claw@latest
|
|
56
55
|
```
|
|
57
56
|
|
|
58
57
|
We do **not** recommend Bun for the Gateway runtime (WhatsApp/Telegram bugs).
|
|
@@ -60,9 +59,9 @@ We do **not** recommend Bun for the Gateway runtime (WhatsApp/Telegram bugs).
|
|
|
60
59
|
To switch update channels (git + npm installs):
|
|
61
60
|
|
|
62
61
|
```bash
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
bitseek-claw update --channel beta
|
|
63
|
+
bitseek-claw update --channel dev
|
|
64
|
+
bitseek-claw update --channel stable
|
|
66
65
|
```
|
|
67
66
|
|
|
68
67
|
Use `--tag <dist-tag|version>` for a one-off install tag/version.
|
|
@@ -95,27 +94,27 @@ Behavior:
|
|
|
95
94
|
- `beta`: checks on `betaCheckIntervalHours` cadence (default: hourly) and applies when an update is available.
|
|
96
95
|
- `dev`: no automatic apply; use manual `openclaw update`.
|
|
97
96
|
|
|
98
|
-
Use `
|
|
97
|
+
Use `bitseek-claw update --dry-run` to preview update actions before enabling automation.
|
|
99
98
|
|
|
100
99
|
Then:
|
|
101
100
|
|
|
102
101
|
```bash
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
bitseek-claw doctor
|
|
103
|
+
bitseek-claw gateway restart
|
|
104
|
+
bitseek-claw health
|
|
106
105
|
```
|
|
107
106
|
|
|
108
107
|
Notes:
|
|
109
108
|
|
|
110
|
-
- If your Gateway runs as a service, `
|
|
109
|
+
- If your Gateway runs as a service, `bitseek-claw gateway restart` is preferred over killing PIDs.
|
|
111
110
|
- If you’re pinned to a specific version, see “Rollback / pinning” below.
|
|
112
111
|
|
|
113
|
-
## Update (`
|
|
112
|
+
## Update (`bitseek-claw update`)
|
|
114
113
|
|
|
115
114
|
For **source installs** (git checkout), prefer:
|
|
116
115
|
|
|
117
116
|
```bash
|
|
118
|
-
|
|
117
|
+
bitseek-claw update
|
|
119
118
|
```
|
|
120
119
|
|
|
121
120
|
It runs a safe-ish update flow:
|
|
@@ -123,16 +122,16 @@ It runs a safe-ish update flow:
|
|
|
123
122
|
- Requires a clean worktree.
|
|
124
123
|
- Switches to the selected channel (tag or branch).
|
|
125
124
|
- Fetches + rebases against the configured upstream (dev channel).
|
|
126
|
-
- Installs deps, builds, builds the Control UI, and runs `
|
|
125
|
+
- Installs deps, builds, builds the Control UI, and runs `bitseek-claw doctor`.
|
|
127
126
|
- Restarts the gateway by default (use `--no-restart` to skip).
|
|
128
127
|
|
|
129
|
-
If you installed via **npm/pnpm** (no git metadata), `
|
|
128
|
+
If you installed via **npm/pnpm** (no git metadata), `bitseek-claw update` will try to update via your package manager. If it can’t detect the install, use “Update (global install)” instead.
|
|
130
129
|
|
|
131
130
|
## Update (Control UI / RPC)
|
|
132
131
|
|
|
133
132
|
The Control UI has **Update & Restart** (RPC: `update.run`). It:
|
|
134
133
|
|
|
135
|
-
1. Runs the same source-update flow as `
|
|
134
|
+
1. Runs the same source-update flow as `bitseek-claw update` (git checkout only).
|
|
136
135
|
2. Writes a restart sentinel with a structured report (stdout/stderr tail).
|
|
137
136
|
3. Restarts the gateway and pings the last active session with the report.
|
|
138
137
|
|
|
@@ -145,7 +144,7 @@ From the repo checkout:
|
|
|
145
144
|
Preferred:
|
|
146
145
|
|
|
147
146
|
```bash
|
|
148
|
-
|
|
147
|
+
bitseek-claw update
|
|
149
148
|
```
|
|
150
149
|
|
|
151
150
|
Manual (equivalent-ish):
|
|
@@ -155,8 +154,8 @@ git pull
|
|
|
155
154
|
pnpm install
|
|
156
155
|
pnpm build
|
|
157
156
|
pnpm ui:build # auto-installs UI deps on first run
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
bitseek-claw doctor
|
|
158
|
+
bitseek-claw health
|
|
160
159
|
```
|
|
161
160
|
|
|
162
161
|
Notes:
|
|
@@ -164,13 +163,13 @@ Notes:
|
|
|
164
163
|
- `pnpm build` matters when you run the packaged `openclaw` binary ([`openclaw.mjs`](https://github.com/openclaw/openclaw/blob/main/openclaw.mjs)) or use Node to run `dist/`.
|
|
165
164
|
- If you run from a repo checkout without a global install, use `pnpm openclaw ...` for CLI commands.
|
|
166
165
|
- If you run directly from TypeScript (`pnpm openclaw ...`), a rebuild is usually unnecessary, but **config migrations still apply** → run doctor.
|
|
167
|
-
- Switching between global and git installs is easy: install the other flavor, then run `
|
|
166
|
+
- Switching between global and git installs is easy: install the other flavor, then run `bitseek-claw doctor` so the gateway service entrypoint is rewritten to the current install.
|
|
168
167
|
|
|
169
|
-
## Always Run: `
|
|
168
|
+
## Always Run: `bitseek-claw doctor`
|
|
170
169
|
|
|
171
170
|
Doctor is the “safe update” command. It’s intentionally boring: repair + migrate + warn.
|
|
172
171
|
|
|
173
|
-
Note: if you’re on a **source install** (git checkout), `
|
|
172
|
+
Note: if you’re on a **source install** (git checkout), `bitseek-claw doctor` will offer to run `bitseek-claw update` first.
|
|
174
173
|
|
|
175
174
|
Typical things it does:
|
|
176
175
|
|
|
@@ -187,11 +186,11 @@ Details: [Doctor](/gateway/doctor)
|
|
|
187
186
|
CLI (works regardless of OS):
|
|
188
187
|
|
|
189
188
|
```bash
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
189
|
+
bitseek-claw gateway status
|
|
190
|
+
bitseek-claw gateway stop
|
|
191
|
+
bitseek-claw gateway restart
|
|
192
|
+
bitseek-claw gateway --port 18789
|
|
193
|
+
bitseek-claw logs --follow
|
|
195
194
|
```
|
|
196
195
|
|
|
197
196
|
If you’re supervised:
|
|
@@ -199,7 +198,7 @@ If you’re supervised:
|
|
|
199
198
|
- macOS launchd (app-bundled LaunchAgent): `launchctl kickstart -k gui/$UID/ai.openclaw.gateway` (use `ai.openclaw.<profile>`; legacy `com.openclaw.*` still works)
|
|
200
199
|
- Linux systemd user service: `systemctl --user restart openclaw-gateway[-<profile>].service`
|
|
201
200
|
- Windows (WSL2): `systemctl --user restart openclaw-gateway[-<profile>].service`
|
|
202
|
-
- `launchctl`/`systemctl` only work if the service is installed; otherwise run `
|
|
201
|
+
- `launchctl`/`systemctl` only work if the service is installed; otherwise run `bitseek-claw gateway install`.
|
|
203
202
|
|
|
204
203
|
Runbook + exact service labels: [Gateway runbook](/gateway)
|
|
205
204
|
|
|
@@ -210,20 +209,20 @@ Runbook + exact service labels: [Gateway runbook](/gateway)
|
|
|
210
209
|
Install a known-good version (replace `<version>` with the last working one):
|
|
211
210
|
|
|
212
211
|
```bash
|
|
213
|
-
npm i -g
|
|
212
|
+
npm i -g @bitseek/claw@<version>
|
|
214
213
|
```
|
|
215
214
|
|
|
216
215
|
```bash
|
|
217
|
-
pnpm add -g
|
|
216
|
+
pnpm add -g @bitseek/claw@<version>
|
|
218
217
|
```
|
|
219
218
|
|
|
220
|
-
Tip: to see the current published version, run `npm view
|
|
219
|
+
Tip: to see the current published version, run `npm view @bitseek/claw version`.
|
|
221
220
|
|
|
222
221
|
Then restart + re-run doctor:
|
|
223
222
|
|
|
224
223
|
```bash
|
|
225
|
-
|
|
226
|
-
|
|
224
|
+
bitseek-claw doctor
|
|
225
|
+
bitseek-claw gateway restart
|
|
227
226
|
```
|
|
228
227
|
|
|
229
228
|
### Pin (source) by date
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# BitSeek Update Package Design
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
BitSeek Claw now publishes from the npm package `@bitseek/claw`, but the core
|
|
6
|
+
update flow and top-level installation docs still point users to `openclaw`.
|
|
7
|
+
That mismatch can make `bitseek-claw update` suggest or execute the wrong npm
|
|
8
|
+
package spec.
|
|
9
|
+
|
|
10
|
+
## Decisions
|
|
11
|
+
|
|
12
|
+
- Make `@bitseek/claw` the default npm package target for package-manager
|
|
13
|
+
updates.
|
|
14
|
+
- Preserve detection of legacy package roots such as `openclaw` so existing
|
|
15
|
+
installs can still be recognized safely.
|
|
16
|
+
- Update CLI dry-run output and failure hints to show the BitSeek package spec.
|
|
17
|
+
- Update the main English install and update docs to use `@bitseek/claw`.
|
|
18
|
+
|
|
19
|
+
## Guardrails
|
|
20
|
+
|
|
21
|
+
- Do not change the CLI binary name; it remains `bitseek-claw`.
|
|
22
|
+
- Do not touch generated `docs/zh-CN/**`.
|
|
23
|
+
- Do not modify the separate website installer repo in this change.
|
|
24
|
+
- Keep old package-name detection in update helpers so legacy installs do not
|
|
25
|
+
become invisible to the updater.
|
package/package.json
CHANGED