@bitseek/claw 1.2.0 → 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-BQHz8_1_.js → accounts-Cv5CUnT4.js} +7 -7
- package/dist/{accounts-DTfEeXyO.js → accounts-NHpMJ0aq.js} +1 -1
- package/dist/{acp-cli-DYu2k7v9.js → acp-cli-B0u6no4K.js} +8 -8
- 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/{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-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-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/{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-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-DuDCGdf-.js → chrome-DeZyLFsG.js} +4 -4
- package/dist/{chrome-CuMCXCQN.js → chrome-xatreDUO.js} +8 -8
- 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/{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/{devices-cli-9aOy3d7K.js → devices-cli-D6b6S-Iy.js} +8 -8
- 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/{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/{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-DC-NMnAU.js → fetch-DOjg912W.js} +3 -3
- package/dist/{fetch-guard-B62rgaSw.js → fetch-guard-Csbz9pui.js} +1 -1
- package/dist/{fs-safe-CJDtl_QU.js → fs-safe-BqJ9egpm.js} +24 -24
- 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/{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-DihIv8Eo.js → image-DQV2jl6F.js} +1 -1
- package/dist/{image-ops-BGTBZMuE.js → image-ops-B2L37gT8.js} +10 -10
- 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/{ipv4-BB1Ro6so.js → ipv4-DQS0lTwQ.js} +1 -1
- 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/{login-CYfV0FRr.js → login-I5RlwiJn.js} +3 -3
- package/dist/{login-qr-DUSyrCPW.js → login-qr-CRjZn3ix.js} +6 -6
- package/dist/{logs-cli--IqfO6Fs.js → logs-cli-D2-73CiV.js} +9 -9
- 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-BYHgyUjA.js → markdown-tables-DQlQMRGZ.js} +1 -1
- package/dist/{memory-cli-CuT-iG2F.js → memory-cli-BUrf60e_.js} +12 -12
- 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/{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-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-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/{pi-embedded-xCcmCTnf.js → pi-embedded-CZAvX74y.js} +22 -22
- package/dist/{pi-embedded-helpers-C3sJPGXn.js → pi-embedded-helpers-BB2whkUz.js} +6 -6
- package/dist/{pi-embedded-helpers-Bmj18lhA.js → pi-embedded-helpers-DK1ft2pf.js} +3 -3
- 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-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-env-BQIJPH4j.js → proxy-env-BoopXu2J.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-ITbRRqVN.js → pw-ai-DyGZ1pXu.js} +15 -15
- package/dist/{qmd-manager-BNohLpRA.js → qmd-manager-Bo22w5wm.js} +20 -20
- 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/{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/{replies-Ckd7Lwt0.js → replies-BDnb0prE.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/{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-e1X1pfda.js → send-BCLu4NEE.js} +6 -6
- package/dist/{send-BpXRh0BM.js → send-BTswySBz.js} +11 -11
- 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-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-DNbfXbBi.js → session-nilNSQEL.js} +1 -1
- package/dist/{session-utils-BncMg1bn.js → session-utils-DxaIoRMp.js} +6 -6
- package/dist/{sessions-B2mnwD21.js → sessions-BXz4gdq6.js} +15 -15
- 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-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-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-U8cs0QvT.js → store-TdzSHRPN.js} +5 -5
- package/dist/{subagent-registry-WD5F6cBf.js → subagent-registry-D6OfBLNb.js} +156 -156
- 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-DVXe5x1J.js → tables-BOsRa7CS.js} +1 -1
- package/dist/{tailnet-C1XBcWue.js → tailnet-CfP3A6g2.js} +1 -1
- package/dist/{target-errors-C5LA-JI-.js → target-errors-DPJ9HFp9.js} +4 -4
- package/dist/{tool-images-CnpAosfi.js → tool-images-CmgHk8xk.js} +1 -1
- 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/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-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-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
|
@@ -3,12 +3,12 @@ import { g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as
|
|
|
3
3
|
import { a as setConsoleSubsystemFilter, d as defaultRuntime, n as runtimeForLogger, o as setConsoleTimestampPrefix, t as createSubsystemLogger } from "./subsystem-DjdBljTA.js";
|
|
4
4
|
import "./boolean-DtWR5bt3.js";
|
|
5
5
|
import { i as logAcceptedEnvOption, r as isTruthyEnvValue } from "./entry.js";
|
|
6
|
-
import { Ai as DEFAULT_MODEL, B as OpenClawSchema, Er as resolveThinkingDefault, F as readConfigFileSnapshotForWrite, Fn as resolveSubagentMaxConcurrent, I as resolveConfigSnapshotHash, Jn as loadAuthProfileStoreForRuntime, M as loadConfig, Mn as buildTalkConfigResponse, N as parseConfigJson5, P as readConfigFileSnapshot, Pn as resolveAgentMaxConcurrent, R as writeConfigFile, Si as normalizeSecretInput, St as AVATAR_MAX_BYTES, Tt as isAvatarImageDataUrl, Un as upsertAuthProfile, _r as resolveAllowedModelRef, ai as resolveApiKeyForProvider, ar as buildAllowedModelSet, at as parseDurationMs, bn as applyLegacyMigrations, br as resolveDefaultModelForAgent, dr as isCliProvider, ir as isPidAlive, j as createConfigIO, ji as DEFAULT_PROVIDER, k as migrateLegacyConfig, ki as DEFAULT_CONTEXT_TOKENS, kt as looksLikeAvatarPath, l as resolveApiKeyForProfile, lr as getModelRefStatus, mr as normalizeModelSelection, ot as parseByteSize, wr as resolveSubagentConfiguredModelSelection, wt as isAvatarHttpUrl, xi as normalizeOptionalSecretInput, xn as ensureControlUiAllowedOriginsForNonLoopbackBind, xr as resolveHooksGmailModel, yn as applyMergePatch, yr as resolveConfiguredModelRef, z as validateConfigObjectWithPlugins } from "./auth-profiles-
|
|
6
|
+
import { Ai as DEFAULT_MODEL, B as OpenClawSchema, Er as resolveThinkingDefault, F as readConfigFileSnapshotForWrite, Fn as resolveSubagentMaxConcurrent, I as resolveConfigSnapshotHash, Jn as loadAuthProfileStoreForRuntime, M as loadConfig, Mn as buildTalkConfigResponse, N as parseConfigJson5, P as readConfigFileSnapshot, Pn as resolveAgentMaxConcurrent, R as writeConfigFile, Si as normalizeSecretInput, St as AVATAR_MAX_BYTES, Tt as isAvatarImageDataUrl, Un as upsertAuthProfile, _r as resolveAllowedModelRef, ai as resolveApiKeyForProvider, ar as buildAllowedModelSet, at as parseDurationMs, bn as applyLegacyMigrations, br as resolveDefaultModelForAgent, dr as isCliProvider, ir as isPidAlive, j as createConfigIO, ji as DEFAULT_PROVIDER, k as migrateLegacyConfig, ki as DEFAULT_CONTEXT_TOKENS, kt as looksLikeAvatarPath, l as resolveApiKeyForProfile, lr as getModelRefStatus, mr as normalizeModelSelection, ot as parseByteSize, wr as resolveSubagentConfiguredModelSelection, wt as isAvatarHttpUrl, xi as normalizeOptionalSecretInput, xn as ensureControlUiAllowedOriginsForNonLoopbackBind, xr as resolveHooksGmailModel, yn as applyMergePatch, yr as resolveConfiguredModelRef, z as validateConfigObjectWithPlugins } from "./auth-profiles-CyG9VwU_.js";
|
|
7
7
|
import { t as formatCliCommand } from "./command-format-CVXyxgq3.js";
|
|
8
|
-
import { a as resolveAgentDir, c as resolveAgentModelFallbacksOverride, d as resolveDefaultAgentId, i as resolveAgentConfig, l as resolveAgentSkillsFilter, m as resolveSessionAgentId, n as listAgentEntries, r as listAgentIds, u as resolveAgentWorkspaceDir } from "./agent-scope-
|
|
8
|
+
import { a as resolveAgentDir, c as resolveAgentModelFallbacksOverride, d as resolveDefaultAgentId, i as resolveAgentConfig, l as resolveAgentSkillsFilter, m as resolveSessionAgentId, n as listAgentEntries, r as listAgentIds, u as resolveAgentWorkspaceDir } from "./agent-scope-CY2-lUIY.js";
|
|
9
9
|
import { S as isCronRunSessionKey, T as parseAgentSessionKey, c as normalizeAgentId, g as normalizeAccountId$1, h as DEFAULT_ACCOUNT_ID, l as normalizeMainKey, m as toAgentStoreSessionKey, o as classifySessionKeyShape, p as toAgentRequestSessionKey, r as buildAgentMainSessionKey, t as DEFAULT_AGENT_ID, u as resolveAgentIdFromSessionKey, w as isSubagentSessionKey } from "./session-key-BLprDJYq.js";
|
|
10
10
|
import { E as isPlainObject, T as truncateUtf16Safe, n as clamp, s as ensureDir, v as resolveUserPath, x as shortenHomePath } from "./utils-DIzy5B5o.js";
|
|
11
|
-
import { A as isNotFoundPathError, C as openBoundaryFileSync, P as matchesSkillFilter, S as openBoundaryFile, T as sameFileIdentity, a as DEFAULT_IDENTITY_FILENAME, c as DEFAULT_SOUL_FILENAME, d as ensureAgentWorkspace, h as resolveDefaultAgentWorkspaceDir, i as DEFAULT_HEARTBEAT_FILENAME, l as DEFAULT_TOOLS_FILENAME, o as DEFAULT_MEMORY_ALT_FILENAME, p as isWorkspaceOnboardingCompleted, r as DEFAULT_BOOTSTRAP_FILENAME, s as DEFAULT_MEMORY_FILENAME, t as DEFAULT_AGENTS_FILENAME, u as DEFAULT_USER_FILENAME, v as resolveWorkspaceTemplateDir, w as openVerifiedFileSync, y as resolveOpenClawPackageRoot } from "./workspace-
|
|
11
|
+
import { A as isNotFoundPathError, C as openBoundaryFileSync, P as matchesSkillFilter, S as openBoundaryFile, T as sameFileIdentity, a as DEFAULT_IDENTITY_FILENAME, c as DEFAULT_SOUL_FILENAME, d as ensureAgentWorkspace, h as resolveDefaultAgentWorkspaceDir, i as DEFAULT_HEARTBEAT_FILENAME, l as DEFAULT_TOOLS_FILENAME, o as DEFAULT_MEMORY_ALT_FILENAME, p as isWorkspaceOnboardingCompleted, r as DEFAULT_BOOTSTRAP_FILENAME, s as DEFAULT_MEMORY_FILENAME, t as DEFAULT_AGENTS_FILENAME, u as DEFAULT_USER_FILENAME, v as resolveWorkspaceTemplateDir, w as openVerifiedFileSync, y as resolveOpenClawPackageRoot } from "./workspace-DzeL98px.js";
|
|
12
12
|
import { i as logWarn, t as logDebug } from "./logger-BJMfryJd.js";
|
|
13
13
|
import { n as runExec, t as runCommandWithTimeout } from "./exec-CEAvKSx9.js";
|
|
14
14
|
import "./github-copilot-token-CulJ9J5l.js";
|
|
@@ -16,112 +16,112 @@ import "./host-env-security-CJMD0__Z.js";
|
|
|
16
16
|
import { n as resolveRuntimeServiceVersion, t as VERSION } from "./version-CGDNfh5C.js";
|
|
17
17
|
import "./env-vars-Dw0EwyGP.js";
|
|
18
18
|
import { C as clearInternalHooks, E as triggerInternalHook, T as registerInternalHook, h as createEmptyPluginRegistry, t as CHANNEL_IDS, u as getActivePluginRegistry, w as createInternalHookEvent } from "./registry-7fg1BnMw.js";
|
|
19
|
-
import { u as isTestDefaultMemorySlotDisabled } from "./manifest-registry-
|
|
20
|
-
import "./dock-
|
|
21
|
-
import "./model-
|
|
22
|
-
import "./pi-model-discovery-
|
|
19
|
+
import { u as isTestDefaultMemorySlotDisabled } from "./manifest-registry-CBF8Vfz8.js";
|
|
20
|
+
import "./dock-CoclJnwp.js";
|
|
21
|
+
import "./model-DMZUvZJo.js";
|
|
22
|
+
import "./pi-model-discovery-RrejIg26.js";
|
|
23
23
|
import { d as hasBinary } from "./frontmatter-C0E8mspC.js";
|
|
24
|
-
import { c as resolveBundledSkillsDir, i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-
|
|
25
|
-
import { n as assertNoPathAliasEscape } from "./path-alias-guards-
|
|
26
|
-
import { t as buildWorkspaceSkillStatus } from "./skills-status-
|
|
24
|
+
import { c as resolveBundledSkillsDir, i as loadWorkspaceSkillEntries, r as buildWorkspaceSkillSnapshot } from "./skills-D4S-gyVf.js";
|
|
25
|
+
import { n as assertNoPathAliasEscape } from "./path-alias-guards-laKq24fx.js";
|
|
26
|
+
import { t as buildWorkspaceSkillStatus } from "./skills-status-DQzBD0Y7.js";
|
|
27
27
|
import { _ as normalizeGatewayClientMode, f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, p as GATEWAY_CLIENT_IDS, r as isGatewayCliClient, s as isWebchatClient, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-0J6eKf3g.js";
|
|
28
|
-
import { $ as resolveAgentMainSessionKey, A as readSessionPreviewItemsFromTranscript, B as cleanStaleLockFiles, C as normalizeSessionDeliveryFields, D as capArrayByJsonBytes, E as archiveSessionTranscripts, G as resolveSessionResetPolicy, I as stripInlineDirectiveTagsForDisplay, L as stripInlineDirectiveTagsFromMessageForDisplay, M as resolveSessionTranscriptCandidates, N as stripEnvelopeFromMessage, O as cleanupArchivedSessionTranscripts, P as stripEnvelopeFromMessages, Q as canonicalizeMainSessionAlias, R as jsonUtf8Bytes, T as archiveFileOnDisk, U as evaluateSessionFreshness, Y as mergeSessionEntry, Z as setSessionRuntimeModel, d as updateSessionStore, et as resolveExplicitAgentSessionKey, it as snapshotSessionOrigin, k as readSessionMessages, n as parseSessionThreadInfo, nt as resolveMainSessionKeyFromConfig, o as loadSessionStore, t as extractDeliveryInfo, tt as resolveMainSessionKey, x as mergeDeliveryContext, y as deliveryContextFromSession } from "./sessions-
|
|
29
|
-
import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as normalizeWhatsAppTarget } from "./plugins-
|
|
30
|
-
import { i as resolveWhatsAppAccount } from "./accounts-
|
|
31
|
-
import "./accounts-
|
|
28
|
+
import { $ as resolveAgentMainSessionKey, A as readSessionPreviewItemsFromTranscript, B as cleanStaleLockFiles, C as normalizeSessionDeliveryFields, D as capArrayByJsonBytes, E as archiveSessionTranscripts, G as resolveSessionResetPolicy, I as stripInlineDirectiveTagsForDisplay, L as stripInlineDirectiveTagsFromMessageForDisplay, M as resolveSessionTranscriptCandidates, N as stripEnvelopeFromMessage, O as cleanupArchivedSessionTranscripts, P as stripEnvelopeFromMessages, Q as canonicalizeMainSessionAlias, R as jsonUtf8Bytes, T as archiveFileOnDisk, U as evaluateSessionFreshness, Y as mergeSessionEntry, Z as setSessionRuntimeModel, d as updateSessionStore, et as resolveExplicitAgentSessionKey, it as snapshotSessionOrigin, k as readSessionMessages, n as parseSessionThreadInfo, nt as resolveMainSessionKeyFromConfig, o as loadSessionStore, t as extractDeliveryInfo, tt as resolveMainSessionKey, x as mergeDeliveryContext, y as deliveryContextFromSession } from "./sessions-BXz4gdq6.js";
|
|
29
|
+
import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin, v as normalizeWhatsAppTarget } from "./plugins-C4cYqW07.js";
|
|
30
|
+
import { i as resolveWhatsAppAccount } from "./accounts-Cv5CUnT4.js";
|
|
31
|
+
import "./accounts-2NNZ6Hbp.js";
|
|
32
32
|
import "./logging-5MtSkLpb.js";
|
|
33
|
-
import "./accounts-
|
|
34
|
-
import { t as buildChannelAccountBindings } from "./bindings-
|
|
35
|
-
import "./send-
|
|
36
|
-
import "./send-
|
|
37
|
-
import { $n as normalizeSendPolicy, $t as isExternalHookSession, A as agentCommandFromIngress, Ar as waitForActiveTasks, At as formatRestartSentinelMessage, Br as onAgentEvent, Bt as normalizeOptionalSessionKey, C as readJsonBodyWithLimit, Cr as OPENAI_TTS_VOICES, D as sleepWithAbort, Dn as formatZonedTimestamp, Dr as markGatewayDraining, E as computeBackoff, Er as getTotalQueueSize, Et as runWithModelFallback, F as createDefaultDeps, Fn as isSystemEventContextChanged, Ft as normalizeHttpWebhookUrl, Gn as DEFAULT_INPUT_IMAGE_MIMES, Gt as buildDeliveryFromLegacyPayload, Ht as normalizePayloadToSystemText, I as createOutboundSendDeps$1, Ir as stripHeartbeatToken, It as normalizeCronJobCreate, Jn as extractFileContentFromSource, Kn as DEFAULT_INPUT_MAX_REDIRECTS, Kt as hasLegacyDeliveryHints, L as resolveAgentAvatar, Lr as clearAgentRunContext, Lt as normalizeCronJobPatch, M as resolveAgentDeliveryPlan, Mr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Mt as summarizeRestartSentinel, N as resolveAgentOutboundTarget, Or as resetAllLanes, Ot as consumeRestartSentinel, P as createOutboundSendDeps, Pn as enqueueSystemEvent, Pt as writeRestartSentinel, Qn as resolveAgentTimeoutMs, Qt as getHookType, Rn as requestHeartbeatNow, Rr as emitAgentEvent, Rt as inferLegacyName, S as handleSlackHttpRequest, Sn as loadProviderUsageSummary, Sr as OPENAI_TTS_MODELS, St as resolveOutboundChannelPlugin, Un as ACP_SESSION_IDENTITY_RENDERER_VERSION, Ut as normalizeRequiredName, Vr as registerAgentRunContext, Vt as normalizeOptionalText, W as buildHistoryContextFromEntries, Wn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Wt as migrateLegacyCronPayload, Xn as normalizeMimeList, Xt as buildSafeExternalPrompt, Yn as extractImageContentFromSource, Zn as resolveInputFileLimits, Zt as detectSuspiciousPatterns, _ as loadOpenClawPlugins, _n as setPreRestartDeferralCheck, _r as resolveTtsPrefsPath, _t as resolveOutboundSessionRoute, a as runSubagentAnnounceFlow, b as resolveAgentOutboundIdentity, bn as normalizeGroupActivation, br as setTtsProvider, bt as resolveOutboundTarget, c as abortEmbeddedPiRun, cn as parseVerboseOverride, cr as resolveAgentSessionDirs, ct as resolveCronStyleNow, d as applyToolPolicyPipeline, dn as deferGatewayRestartUntilIdle, dr as getTtsProvider, dt as runCliAgent, en as applyBrowserProxyPaths, er as resolveSendPolicy, f as buildDefaultToolPolicyPipelineSteps, fn as emitGatewayRestart, fr as isTtsEnabled, ft as createOpenClawTools, gn as setGatewaySigusr1RestartPolicy, gr as resolveTtsConfig, gt as ensureOutboundSessionEntry, h as resolvePluginTools, hn as scheduleGatewaySigusr1Restart, hr as resolveTtsAutoMode, ir as stopSubagentsForRequester, jr as CommandLane, kr as setCommandLaneConcurrency, kt as formatDoctorNonInteractiveHint, l as getActiveEmbeddedRunCount, ln as buildOutboundSessionContext, lr as resolveUserTimezone, lt as getCliSessionId, m as getPluginToolMeta, mn as markGatewaySigusr1RestartHandled, mr as resolveTtsApiKey, mt as resolveAnnounceTargetFromKey, n as initSubagentRegistry, nn as resolveSessionAuthProfileOverride, nt as createReplyDispatcher, o as clearSessionQueues, on as applyModelOverrideToSessionEntry, ot as BARE_SESSION_RESET_PROMPT, pn as isGatewaySigusr1RestartExternallyAllowed, pr as isTtsProviderConfigured, pt as readLatestAssistantReply, qn as DEFAULT_INPUT_TIMEOUT_MS, qt as stripLegacyDeliveryFields, r as listDescendantRunsForRequester, rr as isAbortRequestText, rt as getTotalPendingReplies, s as runEmbeddedPiAgent, sn as applyVerboseOverride, sr as getAcpSessionManager, t as countActiveDescendantRuns, tn as persistBrowserProxyFiles, tt as dispatchInboundMessage, u as waitForEmbeddedPiRunEnd, un as consumeGatewaySigusr1RestartAuthorization, ur as clearBootstrapSnapshot, ut as setCliSessionId, v as createPluginRuntime, vn as triggerOpenClawRestart, vr as resolveTtsProviderOrder, w as requestBodyErrorToText, wr as getActiveTaskCount, wt as resetDirectoryCache, xr as textToSpeech, xt as resolveSessionDeliveryTarget, yn as unbindThreadBindingsBySessionKey, yr as setTtsEnabled, zr as getAgentRunContext, zt as normalizeOptionalAgentId } from "./subagent-registry-
|
|
33
|
+
import "./accounts-NHpMJ0aq.js";
|
|
34
|
+
import { t as buildChannelAccountBindings } from "./bindings-DGvp9FdD.js";
|
|
35
|
+
import "./send-ZyB64ntO.js";
|
|
36
|
+
import "./send-BTswySBz.js";
|
|
37
|
+
import { $n as normalizeSendPolicy, $t as isExternalHookSession, A as agentCommandFromIngress, Ar as waitForActiveTasks, At as formatRestartSentinelMessage, Br as onAgentEvent, Bt as normalizeOptionalSessionKey, C as readJsonBodyWithLimit, Cr as OPENAI_TTS_VOICES, D as sleepWithAbort, Dn as formatZonedTimestamp, Dr as markGatewayDraining, E as computeBackoff, Er as getTotalQueueSize, Et as runWithModelFallback, F as createDefaultDeps, Fn as isSystemEventContextChanged, Ft as normalizeHttpWebhookUrl, Gn as DEFAULT_INPUT_IMAGE_MIMES, Gt as buildDeliveryFromLegacyPayload, Ht as normalizePayloadToSystemText, I as createOutboundSendDeps$1, Ir as stripHeartbeatToken, It as normalizeCronJobCreate, Jn as extractFileContentFromSource, Kn as DEFAULT_INPUT_MAX_REDIRECTS, Kt as hasLegacyDeliveryHints, L as resolveAgentAvatar, Lr as clearAgentRunContext, Lt as normalizeCronJobPatch, M as resolveAgentDeliveryPlan, Mr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Mt as summarizeRestartSentinel, N as resolveAgentOutboundTarget, Or as resetAllLanes, Ot as consumeRestartSentinel, P as createOutboundSendDeps, Pn as enqueueSystemEvent, Pt as writeRestartSentinel, Qn as resolveAgentTimeoutMs, Qt as getHookType, Rn as requestHeartbeatNow, Rr as emitAgentEvent, Rt as inferLegacyName, S as handleSlackHttpRequest, Sn as loadProviderUsageSummary, Sr as OPENAI_TTS_MODELS, St as resolveOutboundChannelPlugin, Un as ACP_SESSION_IDENTITY_RENDERER_VERSION, Ut as normalizeRequiredName, Vr as registerAgentRunContext, Vt as normalizeOptionalText, W as buildHistoryContextFromEntries, Wn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Wt as migrateLegacyCronPayload, Xn as normalizeMimeList, Xt as buildSafeExternalPrompt, Yn as extractImageContentFromSource, Zn as resolveInputFileLimits, Zt as detectSuspiciousPatterns, _ as loadOpenClawPlugins, _n as setPreRestartDeferralCheck, _r as resolveTtsPrefsPath, _t as resolveOutboundSessionRoute, a as runSubagentAnnounceFlow, b as resolveAgentOutboundIdentity, bn as normalizeGroupActivation, br as setTtsProvider, bt as resolveOutboundTarget, c as abortEmbeddedPiRun, cn as parseVerboseOverride, cr as resolveAgentSessionDirs, ct as resolveCronStyleNow, d as applyToolPolicyPipeline, dn as deferGatewayRestartUntilIdle, dr as getTtsProvider, dt as runCliAgent, en as applyBrowserProxyPaths, er as resolveSendPolicy, f as buildDefaultToolPolicyPipelineSteps, fn as emitGatewayRestart, fr as isTtsEnabled, ft as createOpenClawTools, gn as setGatewaySigusr1RestartPolicy, gr as resolveTtsConfig, gt as ensureOutboundSessionEntry, h as resolvePluginTools, hn as scheduleGatewaySigusr1Restart, hr as resolveTtsAutoMode, ir as stopSubagentsForRequester, jr as CommandLane, kr as setCommandLaneConcurrency, kt as formatDoctorNonInteractiveHint, l as getActiveEmbeddedRunCount, ln as buildOutboundSessionContext, lr as resolveUserTimezone, lt as getCliSessionId, m as getPluginToolMeta, mn as markGatewaySigusr1RestartHandled, mr as resolveTtsApiKey, mt as resolveAnnounceTargetFromKey, n as initSubagentRegistry, nn as resolveSessionAuthProfileOverride, nt as createReplyDispatcher, o as clearSessionQueues, on as applyModelOverrideToSessionEntry, ot as BARE_SESSION_RESET_PROMPT, pn as isGatewaySigusr1RestartExternallyAllowed, pr as isTtsProviderConfigured, pt as readLatestAssistantReply, qn as DEFAULT_INPUT_TIMEOUT_MS, qt as stripLegacyDeliveryFields, r as listDescendantRunsForRequester, rr as isAbortRequestText, rt as getTotalPendingReplies, s as runEmbeddedPiAgent, sn as applyVerboseOverride, sr as getAcpSessionManager, t as countActiveDescendantRuns, tn as persistBrowserProxyFiles, tt as dispatchInboundMessage, u as waitForEmbeddedPiRunEnd, un as consumeGatewaySigusr1RestartAuthorization, ur as clearBootstrapSnapshot, ut as setCliSessionId, v as createPluginRuntime, vn as triggerOpenClawRestart, vr as resolveTtsProviderOrder, w as requestBodyErrorToText, wr as getActiveTaskCount, wt as resetDirectoryCache, xr as textToSpeech, xt as resolveSessionDeliveryTarget, yn as unbindThreadBindingsBySessionKey, yr as setTtsEnabled, zr as getAgentRunContext, zt as normalizeOptionalAgentId } from "./subagent-registry-D6OfBLNb.js";
|
|
38
38
|
import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-CTtLmER4.js";
|
|
39
39
|
import { i as normalizeInputProvenance } from "./input-provenance-C8z9KgIz.js";
|
|
40
40
|
import "./chat-envelope-D3RSz140.js";
|
|
41
|
-
import { n as readJsonFile, r as writeJsonAtomic, t as createAsyncLock } from "./json-files-
|
|
42
|
-
import { $ as validateNodePairApproveParams, $t as roleScopesAllow, A as validateCronStatusParams, At as validateWizardStartParams, B as validateExecApprovalsGetParams, C as validateConfigSetParams, Ct as validateToolsCatalogParams, D as validateCronRemoveParams, Dt as validateWebLoginWaitParams, E as validateCronListParams, Et as validateWebLoginStartParams, F as validateDevicePairRemoveParams, G as validateModelsAuthSetParams, Gt as rejectDevicePairing, H as validateExecApprovalsNodeSetParams, Ht as ensureDeviceToken, I as validateDeviceTokenRevokeParams, It as parseSessionLabel, J as validateNodeDescribeParams, Jt as revokeDeviceToken, K as validateModelsListParams, Kt as removePairedDevice, L as validateDeviceTokenRotateParams, Lt as buildDeviceAuthPayload, M as validateDevicePairApproveParams, Mt as PROTOCOL_VERSION, N as validateDevicePairListParams, Nt as ErrorCodes, O as validateCronRunParams, Ot as validateWizardCancelParams, P as validateDevicePairRejectParams, Pt as errorShape, Q as validateNodeListParams, Qt as verifyDeviceToken, R as validateExecApprovalRequestParams, Rt as buildDeviceAuthPayloadV3, S as validateConfigSchemaParams, St as validateTalkModeParams, T as validateCronAddParams, Tt as validateWakeParams, U as validateExecApprovalsSetParams, Ut as getPairedDevice, V as validateExecApprovalsNodeGetParams, Vt as approveDevicePairing, W as validateLogsTailParams, Wt as listDevicePairing, X as validateNodeInvokeParams, Xt as summarizeDeviceTokens, Y as validateNodeEventParams, Yt as rotateDeviceToken, Z as validateNodeInvokeResultParams, Zt as updatePairedDeviceMetadata, _ as validateChatInjectParams, _t as validateSkillsBinsParams, a as validateAgentWaitParams, at as validatePollParams, b as validateConfigGetParams, bt as validateSkillsUpdateParams, c as validateAgentsFilesGetParams, ct as validateSendParams, d as validateAgentsListParams, dt as validateSessionsListParams, et as validateNodePairListParams, f as validateAgentsUpdateParams, ft as validateSessionsPatchParams, g as validateChatHistoryParams, gt as validateSessionsUsageParams, h as validateChatAbortParams, ht as validateSessionsResolveParams, i as validateAgentParams, in as verifyDeviceSignature, it as validateNodeRenameParams, j as validateCronUpdateParams, jt as validateWizardStatusParams, k as validateCronRunsParams, kt as validateWizardNextParams, l as validateAgentsFilesListParams, lt as validateSessionsCompactParams, m as validateChannelsStatusParams, mt as validateSessionsResetParams, n as formatValidationErrors, nt as validateNodePairRequestParams, o as validateAgentsCreateParams, ot as validatePushTestParams, p as validateChannelsLogoutParams, pt as validateSessionsPreviewParams, q as validateModelsVerifyParams, qt as requestDevicePairing, r as validateAgentIdentityParams, rn as normalizeDevicePublicKeyBase64Url, rt as validateNodePairVerifyParams, s as validateAgentsDeleteParams, st as validateRequestFrame, tn as deriveDeviceIdFromPublicKey, tt as validateNodePairRejectParams, u as validateAgentsFilesSetParams, ut as validateSessionsDeleteParams, v as validateChatSendParams, vt as validateSkillsInstallParams, w as validateConnectParams, wt as validateUpdateRunParams, x as validateConfigPatchParams, xt as validateTalkConfigParams, y as validateConfigApplyParams, yt as validateSkillsStatusParams, z as validateExecApprovalResolveParams, zt as normalizeDeviceMetadataForAuth } from "./client-
|
|
43
|
-
import { f as loadGatewayTlsRuntime$1, l as authorizeOperatorScopesForMethod, n as callGateway, s as ADMIN_SCOPE$3, u as isNodeRoleMethod } from "./call-
|
|
41
|
+
import { n as readJsonFile, r as writeJsonAtomic, t as createAsyncLock } from "./json-files-rR19q30D.js";
|
|
42
|
+
import { $ as validateNodePairApproveParams, $t as roleScopesAllow, A as validateCronStatusParams, At as validateWizardStartParams, B as validateExecApprovalsGetParams, C as validateConfigSetParams, Ct as validateToolsCatalogParams, D as validateCronRemoveParams, Dt as validateWebLoginWaitParams, E as validateCronListParams, Et as validateWebLoginStartParams, F as validateDevicePairRemoveParams, G as validateModelsAuthSetParams, Gt as rejectDevicePairing, H as validateExecApprovalsNodeSetParams, Ht as ensureDeviceToken, I as validateDeviceTokenRevokeParams, It as parseSessionLabel, J as validateNodeDescribeParams, Jt as revokeDeviceToken, K as validateModelsListParams, Kt as removePairedDevice, L as validateDeviceTokenRotateParams, Lt as buildDeviceAuthPayload, M as validateDevicePairApproveParams, Mt as PROTOCOL_VERSION, N as validateDevicePairListParams, Nt as ErrorCodes, O as validateCronRunParams, Ot as validateWizardCancelParams, P as validateDevicePairRejectParams, Pt as errorShape, Q as validateNodeListParams, Qt as verifyDeviceToken, R as validateExecApprovalRequestParams, Rt as buildDeviceAuthPayloadV3, S as validateConfigSchemaParams, St as validateTalkModeParams, T as validateCronAddParams, Tt as validateWakeParams, U as validateExecApprovalsSetParams, Ut as getPairedDevice, V as validateExecApprovalsNodeGetParams, Vt as approveDevicePairing, W as validateLogsTailParams, Wt as listDevicePairing, X as validateNodeInvokeParams, Xt as summarizeDeviceTokens, Y as validateNodeEventParams, Yt as rotateDeviceToken, Z as validateNodeInvokeResultParams, Zt as updatePairedDeviceMetadata, _ as validateChatInjectParams, _t as validateSkillsBinsParams, a as validateAgentWaitParams, at as validatePollParams, b as validateConfigGetParams, bt as validateSkillsUpdateParams, c as validateAgentsFilesGetParams, ct as validateSendParams, d as validateAgentsListParams, dt as validateSessionsListParams, et as validateNodePairListParams, f as validateAgentsUpdateParams, ft as validateSessionsPatchParams, g as validateChatHistoryParams, gt as validateSessionsUsageParams, h as validateChatAbortParams, ht as validateSessionsResolveParams, i as validateAgentParams, in as verifyDeviceSignature, it as validateNodeRenameParams, j as validateCronUpdateParams, jt as validateWizardStatusParams, k as validateCronRunsParams, kt as validateWizardNextParams, l as validateAgentsFilesListParams, lt as validateSessionsCompactParams, m as validateChannelsStatusParams, mt as validateSessionsResetParams, n as formatValidationErrors, nt as validateNodePairRequestParams, o as validateAgentsCreateParams, ot as validatePushTestParams, p as validateChannelsLogoutParams, pt as validateSessionsPreviewParams, q as validateModelsVerifyParams, qt as requestDevicePairing, r as validateAgentIdentityParams, rn as normalizeDevicePublicKeyBase64Url, rt as validateNodePairVerifyParams, s as validateAgentsDeleteParams, st as validateRequestFrame, tn as deriveDeviceIdFromPublicKey, tt as validateNodePairRejectParams, u as validateAgentsFilesSetParams, ut as validateSessionsDeleteParams, v as validateChatSendParams, vt as validateSkillsInstallParams, w as validateConnectParams, wt as validateUpdateRunParams, x as validateConfigPatchParams, xt as validateTalkConfigParams, y as validateConfigApplyParams, yt as validateSkillsStatusParams, z as validateExecApprovalResolveParams, zt as normalizeDeviceMetadataForAuth } from "./client-vUKV2o6h.js";
|
|
43
|
+
import { f as loadGatewayTlsRuntime$1, l as authorizeOperatorScopesForMethod, n as callGateway, s as ADMIN_SCOPE$3, u as isNodeRoleMethod } from "./call-CmAGfSJE.js";
|
|
44
44
|
import "./pairing-token-DoBZxQnC.js";
|
|
45
45
|
import { t as safeEqualSecret } from "./secret-equal-Gla36CGi.js";
|
|
46
|
-
import { a as isTrustedProxyAddress, c as pickPrimaryLanIPv4, d as resolveGatewayListenHosts, f as rawDataToString, l as resolveClientIp, n as isLoopbackAddress, o as isValidIPv4, r as isLoopbackHost, s as normalizeHostHeader, t as isLocalishHost, u as resolveGatewayBindHost } from "./net-
|
|
47
|
-
import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-
|
|
46
|
+
import { a as isTrustedProxyAddress, c as pickPrimaryLanIPv4, d as resolveGatewayListenHosts, f as rawDataToString, l as resolveClientIp, n as isLoopbackAddress, o as isValidIPv4, r as isLoopbackHost, s as normalizeHostHeader, t as isLocalishHost, u as resolveGatewayBindHost } from "./net-C75G4fup.js";
|
|
47
|
+
import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-CfP3A6g2.js";
|
|
48
48
|
import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-DyLBF_df.js";
|
|
49
|
-
import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext } from "./with-timeout-
|
|
50
|
-
import { j as runGlobalGatewayStopSafely, k as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-
|
|
51
|
-
import { d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, m as isDiagnosticsEnabled } from "./diagnostic-
|
|
49
|
+
import { a as getMachineDisplayName, i as startBrowserControlServiceFromConfig, n as createBrowserRouteDispatcher, r as createBrowserControlContext } from "./with-timeout-B9qgOUui.js";
|
|
50
|
+
import { j as runGlobalGatewayStopSafely, k as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-H0xCFj4j.js";
|
|
51
|
+
import { d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, m as isDiagnosticsEnabled } from "./diagnostic-DjxUqpmL.js";
|
|
52
52
|
import "./diagnostic-session-state-Dx-rJXBO.js";
|
|
53
|
-
import { S as saveCronStore, b as loadCronStore, x as resolveCronStorePath } from "./send-
|
|
54
|
-
import { c as detectMime } from "./image-ops-
|
|
55
|
-
import "./pi-embedded-helpers-
|
|
56
|
-
import { C as resolveToolProfilePolicy, _ as collectExplicitAllowlist, y as mergeAlsoAllowPolicy } from "./sandbox-
|
|
53
|
+
import { S as saveCronStore, b as loadCronStore, x as resolveCronStorePath } from "./send-D0X-8aPh.js";
|
|
54
|
+
import { c as detectMime } from "./image-ops-B2L37gT8.js";
|
|
55
|
+
import "./pi-embedded-helpers-BB2whkUz.js";
|
|
56
|
+
import { C as resolveToolProfilePolicy, _ as collectExplicitAllowlist, y as mergeAlsoAllowPolicy } from "./sandbox-BLqUWbp2.js";
|
|
57
57
|
import { i as listCoreToolSections, n as PROFILE_OPTIONS, o as resolveCoreToolProfiles } from "./tool-catalog-uQj_-Ahx.js";
|
|
58
|
-
import "./chrome-
|
|
58
|
+
import "./chrome-DeZyLFsG.js";
|
|
59
59
|
import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-D3xGoMdQ.js";
|
|
60
|
-
import { a as resolveGatewayAuth, c as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, i as isLocalDirectRequest, l as createAuthRateLimiter, n as authorizeHttpGatewayConnect, o as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, r as authorizeWsControlUiGatewayConnect, s as AUTH_RATE_LIMIT_SCOPE_HOOK_AUTH, t as assertGatewayAuthConfigured, u as normalizeRateLimitClientIp } from "./auth-
|
|
61
|
-
import { l as ensureGatewayStartupAuth, u as mergeGatewayTailscaleConfig } from "./server-context-
|
|
62
|
-
import "./paths-
|
|
60
|
+
import { a as resolveGatewayAuth, c as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, i as isLocalDirectRequest, l as createAuthRateLimiter, n as authorizeHttpGatewayConnect, o as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, r as authorizeWsControlUiGatewayConnect, s as AUTH_RATE_LIMIT_SCOPE_HOOK_AUTH, t as assertGatewayAuthConfigured, u as normalizeRateLimitClientIp } from "./auth-anvTU0Sb.js";
|
|
61
|
+
import { l as ensureGatewayStartupAuth, u as mergeGatewayTailscaleConfig } from "./server-context-DRq_OT33.js";
|
|
62
|
+
import "./paths-B_L2Zoe-.js";
|
|
63
63
|
import { a as testRegexWithBoundedInput, i as compileSafeRegex } from "./redact-Ck5U_y4i.js";
|
|
64
64
|
import { o as isErrno, r as formatErrorMessage } from "./errors-BJz45-qI.js";
|
|
65
|
-
import { i as openFileWithinRoot, l as writeFileWithinRoot, s as readLocalFileSafely, t as SafeOpenError } from "./fs-safe-
|
|
66
|
-
import { n as SsrFBlockedError } from "./proxy-env-
|
|
67
|
-
import "./store-
|
|
68
|
-
import { n as inspectPortUsage, o as formatPortDiagnostics, t as ensurePortAvailable } from "./ports-
|
|
65
|
+
import { i as openFileWithinRoot, l as writeFileWithinRoot, s as readLocalFileSafely, t as SafeOpenError } from "./fs-safe-BqJ9egpm.js";
|
|
66
|
+
import { n as SsrFBlockedError } from "./proxy-env-BoopXu2J.js";
|
|
67
|
+
import "./store-TdzSHRPN.js";
|
|
68
|
+
import { n as inspectPortUsage, o as formatPortDiagnostics, t as ensurePortAvailable } from "./ports-DRaxdQmm.js";
|
|
69
69
|
import { t as movePathToTrash } from "./trash-ClChDUTf.js";
|
|
70
|
-
import "./server-middleware-
|
|
71
|
-
import "./tool-images-
|
|
70
|
+
import "./server-middleware-DHxnFjIL.js";
|
|
71
|
+
import "./tool-images-CmgHk8xk.js";
|
|
72
72
|
import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-pYqswKJZ.js";
|
|
73
|
-
import "./models-config-
|
|
74
|
-
import "./exec-approvals-allowlist-
|
|
75
|
-
import "./exec-safe-bin-runtime-policy-
|
|
76
|
-
import { n as loadModelCatalog } from "./model-catalog-
|
|
77
|
-
import "./fetch-
|
|
78
|
-
import { g as registerUnhandledRejectionHandler } from "./audio-transcription-runner-
|
|
79
|
-
import { t as fetchWithSsrFGuard } from "./fetch-guard-
|
|
80
|
-
import { x as extractTextFromChatContent } from "./image-
|
|
73
|
+
import "./models-config-AePb9RAo.js";
|
|
74
|
+
import "./exec-approvals-allowlist-CFjPSbxI.js";
|
|
75
|
+
import "./exec-safe-bin-runtime-policy-CpMj95vJ.js";
|
|
76
|
+
import { n as loadModelCatalog } from "./model-catalog-DFi9HgWu.js";
|
|
77
|
+
import "./fetch-DOjg912W.js";
|
|
78
|
+
import { g as registerUnhandledRejectionHandler } from "./audio-transcription-runner-DkibzFT2.js";
|
|
79
|
+
import { t as fetchWithSsrFGuard } from "./fetch-guard-Csbz9pui.js";
|
|
80
|
+
import { x as extractTextFromChatContent } from "./image-BjuH1GKB.js";
|
|
81
81
|
import "./tool-display-0M664wep.js";
|
|
82
|
-
import "./api-key-rotation-
|
|
82
|
+
import "./api-key-rotation-Cf7QM5M_.js";
|
|
83
83
|
import "./proxy-fetch-DEHZt1Tx.js";
|
|
84
|
-
import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-
|
|
84
|
+
import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-H_GSyyzN.js";
|
|
85
85
|
import "./chunk-kLPohhLl.js";
|
|
86
|
-
import "./markdown-tables-
|
|
87
|
-
import "./ir-
|
|
86
|
+
import "./markdown-tables-DQlQMRGZ.js";
|
|
87
|
+
import "./ir-CEwBpxhC.js";
|
|
88
88
|
import "./render-CXDO_kgw.js";
|
|
89
|
-
import { a as ToolInputError } from "./target-errors-
|
|
90
|
-
import { r as isRestartEnabled } from "./commands-
|
|
91
|
-
import "./commands-registry-
|
|
89
|
+
import { a as ToolInputError } from "./target-errors-DPJ9HFp9.js";
|
|
90
|
+
import { r as isRestartEnabled } from "./commands-d8L0zY8O.js";
|
|
91
|
+
import "./commands-registry-C78O6aNi.js";
|
|
92
92
|
import "./fetch-BM2hI5N6.js";
|
|
93
93
|
import "./retry-DwXRBpwv.js";
|
|
94
|
-
import { a as readChannelAllowFromStoreSync } from "./pairing-store-
|
|
94
|
+
import { a as readChannelAllowFromStoreSync } from "./pairing-store-rFuiIoGM.js";
|
|
95
95
|
import { a as mergeExecApprovalsSocketDefaults, c as readExecApprovalsSnapshot, p as saveExecApprovals, r as ensureExecApprovals, s as normalizeExecApprovals, t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS } from "./exec-approvals-HRn5F9dF.js";
|
|
96
|
-
import { _ as matchSystemRunApprovalBinding, g as buildSystemRunApprovalBinding, h as resolveSystemRunApprovalRuntimeContext, m as resolveSystemRunApprovalRequestContext, v as missingSystemRunApprovalBinding, y as toSystemRunApprovalMismatchError } from "./nodes-screen-
|
|
97
|
-
import { n as resolveSystemRunCommand } from "./system-run-command-
|
|
98
|
-
import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, u as lookupContextTokens } from "./session-utils-
|
|
96
|
+
import { _ as matchSystemRunApprovalBinding, g as buildSystemRunApprovalBinding, h as resolveSystemRunApprovalRuntimeContext, m as resolveSystemRunApprovalRequestContext, v as missingSystemRunApprovalBinding, y as toSystemRunApprovalMismatchError } from "./nodes-screen-BHwVUMr8.js";
|
|
97
|
+
import { n as resolveSystemRunCommand } from "./system-run-command-XHAlbx5q.js";
|
|
98
|
+
import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, u as lookupContextTokens } from "./session-utils-DxaIoRMp.js";
|
|
99
99
|
import { c as hasNonzeroUsage, i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, s as deriveSessionTotalTokens, t as discoverAllSessions } from "./session-cost-usage-BCEcVVJ6.js";
|
|
100
100
|
import { n as formatTokenCount, r as formatUsd } from "./usage-format-JlIz56oG.js";
|
|
101
|
-
import { S as registerSkillsChangeListener, _ as requestNodePairing, c as recordRemoteNodeInfo, d as removeRemoteNodeInfo, f as setSkillsRemoteRegistry, g as renamePairedNode, h as rejectNodePairing, l as refreshRemoteBinsForConnectedNodes, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, s as primeRemoteSkillsCache, u as refreshRemoteNodeBins, v as updatePairedNodeMetadata, x as getSkillsSnapshotVersion, y as verifyNodeToken } from "./skill-commands-
|
|
102
|
-
import { t as listAgentWorkspaceDirs } from "./workspace-dirs-
|
|
101
|
+
import { S as registerSkillsChangeListener, _ as requestNodePairing, c as recordRemoteNodeInfo, d as removeRemoteNodeInfo, f as setSkillsRemoteRegistry, g as renamePairedNode, h as rejectNodePairing, l as refreshRemoteBinsForConnectedNodes, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, s as primeRemoteSkillsCache, u as refreshRemoteNodeBins, v as updatePairedNodeMetadata, x as getSkillsSnapshotVersion, y as verifyNodeToken } from "./skill-commands-Cpr3Poo2.js";
|
|
102
|
+
import { t as listAgentWorkspaceDirs } from "./workspace-dirs-Bevk6X_8.js";
|
|
103
103
|
import { t as getChannelActivity } from "./channel-activity-C-cvytUe.js";
|
|
104
104
|
import { n as normalizePollInput } from "./polls-CWOwBT3z.js";
|
|
105
|
-
import "./tables-
|
|
106
|
-
import "./server-lifecycle-
|
|
105
|
+
import "./tables-BOsRa7CS.js";
|
|
106
|
+
import "./server-lifecycle-CcYnyYPQ.js";
|
|
107
107
|
import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-Cek4Eizw.js";
|
|
108
|
-
import { n as resolveMessageChannelSelection } from "./channel-selection-
|
|
109
|
-
import { i as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-
|
|
110
|
-
import "./send-
|
|
111
|
-
import "./outbound-attachment-
|
|
108
|
+
import { n as resolveMessageChannelSelection } from "./channel-selection-DGtYwfd7.js";
|
|
109
|
+
import { i as buildChannelUiCatalog, t as applyPluginAutoEnable } from "./plugin-auto-enable-S_lBQAKI.js";
|
|
110
|
+
import "./send-CZ2O-5pP.js";
|
|
111
|
+
import "./outbound-attachment-DM-h2uQ1.js";
|
|
112
112
|
import "./delivery-queue-DhqwvOP8.js";
|
|
113
|
-
import "./send-
|
|
114
|
-
import "./resolve-route-
|
|
115
|
-
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-
|
|
113
|
+
import "./send-BCLu4NEE.js";
|
|
114
|
+
import "./resolve-route-ByAwAiq5.js";
|
|
115
|
+
import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-DRW8ya1z.js";
|
|
116
116
|
import "./proxy-Dz7xT2Z_.js";
|
|
117
|
-
import "./replies-
|
|
118
|
-
import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-
|
|
117
|
+
import "./replies-BDnb0prE.js";
|
|
118
|
+
import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-D8lLbK3A.js";
|
|
119
119
|
import "./prompt-style-CzS6Prvl.js";
|
|
120
|
-
import "./pairing-labels-
|
|
121
|
-
import "./session-meta-
|
|
122
|
-
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-
|
|
123
|
-
import { r as resolveMemorySearchConfig } from "./manager-
|
|
124
|
-
import "./query-expansion-
|
|
120
|
+
import "./pairing-labels-x4akYNb7.js";
|
|
121
|
+
import "./session-meta-Cew1QAYN.js";
|
|
122
|
+
import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-BUrf60e_.js";
|
|
123
|
+
import { r as resolveMemorySearchConfig } from "./manager-DWpiNvlg.js";
|
|
124
|
+
import "./query-expansion-Ba9OpCm9.js";
|
|
125
125
|
import { t as formatDocsLink } from "./links-BDNlbZvM.js";
|
|
126
126
|
import { n as runCommandWithRuntime } from "./cli-utils-k9A6CA1o.js";
|
|
127
127
|
import { t as formatHelpExamples } from "./help-format-B3bKmDqF.js";
|
|
@@ -132,46 +132,46 @@ import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-B9LIt3MU.
|
|
|
132
132
|
import { n as inheritOptionFromParent } from "./command-options-ZvhOayEd.js";
|
|
133
133
|
import { t as WizardCancelledError } from "./prompts-DomsZukd.js";
|
|
134
134
|
import { t as resolveChannelDefaultAccountId } from "./helpers-B7sHmVvT.js";
|
|
135
|
-
import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-
|
|
136
|
-
import { t as isWithinDir } from "./path-safety-
|
|
137
|
-
import { t as assertCanonicalPathWithinBase } from "./install-safe-path-
|
|
138
|
-
import "./skill-scanner-
|
|
139
|
-
import { n as formatConfigIssueLines } from "./issue-format-
|
|
135
|
+
import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DA3Y8w1t.js";
|
|
136
|
+
import { t as isWithinDir } from "./path-safety-BxYB92SS.js";
|
|
137
|
+
import { t as assertCanonicalPathWithinBase } from "./install-safe-path-DVQh7rEs.js";
|
|
138
|
+
import "./skill-scanner-0-AybMIe.js";
|
|
139
|
+
import { n as formatConfigIssueLines } from "./issue-format-NBMJ5xAP.js";
|
|
140
140
|
import { t as buildChannelAccountSnapshot } from "./status-BrwHRn2B.js";
|
|
141
|
-
import "./channels-status-issues-
|
|
142
|
-
import { a as buildBaseHints, i as applySensitiveHints, n as redactConfigSnapshot, o as mapSensitivePaths, r as restoreRedactedValues, s as applyDerivedTags, t as redactConfigObject } from "./redact-snapshot-
|
|
143
|
-
import "./daemon-install-helpers-
|
|
141
|
+
import "./channels-status-issues-BMNB2aMG.js";
|
|
142
|
+
import { a as buildBaseHints, i as applySensitiveHints, n as redactConfigSnapshot, o as mapSensitivePaths, r as restoreRedactedValues, s as applyDerivedTags, t as redactConfigObject } from "./redact-snapshot-kY3aFpcF.js";
|
|
143
|
+
import "./daemon-install-helpers-D5tste0V.js";
|
|
144
144
|
import "./runtime-guard-Ch9ZniVU.js";
|
|
145
|
-
import "./systemd-
|
|
146
|
-
import "./service-
|
|
147
|
-
import "./lifecycle-core-
|
|
148
|
-
import "./systemd-hints-
|
|
145
|
+
import "./systemd-C4JtDaKk.js";
|
|
146
|
+
import "./service-CZORJG4z.js";
|
|
147
|
+
import "./lifecycle-core-oTVOKNSW.js";
|
|
148
|
+
import "./systemd-hints-ZHrBbXDd.js";
|
|
149
149
|
import { t as parsePort$1 } from "./parse-port-DPUPC687.js";
|
|
150
|
-
import { n as addGatewayServiceCommands } from "./daemon-cli-
|
|
151
|
-
import "./diagnostics-
|
|
150
|
+
import { n as addGatewayServiceCommands } from "./daemon-cli-oCVkh3bg.js";
|
|
151
|
+
import "./diagnostics-vLzdmcgg.js";
|
|
152
152
|
import "./table-BHL_2Py1.js";
|
|
153
153
|
import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-Dnn3h3FI.js";
|
|
154
|
-
import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-
|
|
155
|
-
import { a as probeGateway, n as collectEnabledInsecureOrDangerousFlags } from "./audit-
|
|
156
|
-
import { t as discoverGatewayBeacons } from "./bonjour-discovery-
|
|
157
|
-
import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-
|
|
158
|
-
import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines, u as isCronSystemEvent } from "./health-
|
|
159
|
-
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-
|
|
160
|
-
import { o as isBitseekBuild } from "./status.update-
|
|
161
|
-
import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-
|
|
162
|
-
import { i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-
|
|
163
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
164
|
-
import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-
|
|
154
|
+
import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-BZscafy-.js";
|
|
155
|
+
import { a as probeGateway, n as collectEnabledInsecureOrDangerousFlags } from "./audit-TSVXvoTa.js";
|
|
156
|
+
import { t as discoverGatewayBeacons } from "./bonjour-discovery-B68dCYTY.js";
|
|
157
|
+
import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-Dw7ag8qn.js";
|
|
158
|
+
import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines, u as isCronSystemEvent } from "./health-Dzwp2cfK.js";
|
|
159
|
+
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Czpjuiah.js";
|
|
160
|
+
import { o as isBitseekBuild } from "./status.update-B6whKviL.js";
|
|
161
|
+
import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-DNFdIaSr.js";
|
|
162
|
+
import { i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-Cx-7xFzl.js";
|
|
163
|
+
import { t as runOnboardingWizard } from "./onboarding-WDRpEgra.js";
|
|
164
|
+
import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-DRX0c6-y.js";
|
|
165
165
|
import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-CIlkd6Jc.js";
|
|
166
|
-
import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-
|
|
167
|
-
import "./node-service-
|
|
166
|
+
import { n as isNodeCommandAllowed, r as resolveNodeCommandAllowlist } from "./node-command-policy-DMwxqhrG.js";
|
|
167
|
+
import "./node-service-83OYUi14.js";
|
|
168
168
|
import "./constants-Dpz-jwYQ.js";
|
|
169
|
-
import "./shared-
|
|
170
|
-
import { d as verifyOpenAiCompatibleModel } from "./onboard-custom.shared-
|
|
171
|
-
import { n as formatInstallFailureMessage, t as installSkill } from "./skills-install-
|
|
172
|
-
import { t as runGatewayUpdate } from "./update-runner-
|
|
173
|
-
import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-
|
|
174
|
-
import { n as forceFreePortAndWait } from "./ports-
|
|
169
|
+
import "./shared-DvHQekWm.js";
|
|
170
|
+
import { d as verifyOpenAiCompatibleModel } from "./onboard-custom.shared-CXzE62ZH.js";
|
|
171
|
+
import { n as formatInstallFailureMessage, t as installSkill } from "./skills-install-C6-Zzqoi.js";
|
|
172
|
+
import { t as runGatewayUpdate } from "./update-runner-CHxTFtW8.js";
|
|
173
|
+
import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-A5CNJccm.js";
|
|
174
|
+
import { n as forceFreePortAndWait } from "./ports-tfS1haOJ.js";
|
|
175
175
|
import { spawn, spawnSync } from "node:child_process";
|
|
176
176
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
177
177
|
import path from "node:path";
|
|
@@ -180,7 +180,7 @@ import * as fsSync from "node:fs";
|
|
|
180
180
|
import fs from "node:fs";
|
|
181
181
|
import chalk from "chalk";
|
|
182
182
|
import { isDeepStrictEqual } from "node:util";
|
|
183
|
-
import
|
|
183
|
+
import fsPromises from "node:fs/promises";
|
|
184
184
|
import crypto, { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
185
185
|
import { z } from "zod";
|
|
186
186
|
import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent";
|
|
@@ -1250,7 +1250,7 @@ function resolveCheckIntervalMs(cfg) {
|
|
|
1250
1250
|
}
|
|
1251
1251
|
async function readState(statePath) {
|
|
1252
1252
|
try {
|
|
1253
|
-
const raw = await
|
|
1253
|
+
const raw = await fsPromises.readFile(statePath, "utf-8");
|
|
1254
1254
|
const parsed = JSON.parse(raw);
|
|
1255
1255
|
return parsed && typeof parsed === "object" ? parsed : {};
|
|
1256
1256
|
} catch {
|
|
@@ -1331,7 +1331,7 @@ async function runAutoUpdateCommand(params) {
|
|
|
1331
1331
|
path.join(params.root, "dist", "index.mjs")
|
|
1332
1332
|
];
|
|
1333
1333
|
for (const candidate of candidates) try {
|
|
1334
|
-
await
|
|
1334
|
+
await fsPromises.access(candidate);
|
|
1335
1335
|
argv.push(execPath, candidate, ...baseArgs);
|
|
1336
1336
|
break;
|
|
1337
1337
|
} catch {}
|
|
@@ -4406,20 +4406,20 @@ async function drainPendingWrite(filePath) {
|
|
|
4406
4406
|
if (pending) await pending.catch(() => void 0);
|
|
4407
4407
|
}
|
|
4408
4408
|
async function pruneIfNeeded(filePath, opts) {
|
|
4409
|
-
const stat = await
|
|
4409
|
+
const stat = await fsPromises.stat(filePath).catch(() => null);
|
|
4410
4410
|
if (!stat || stat.size <= opts.maxBytes) return;
|
|
4411
|
-
const lines = (await
|
|
4411
|
+
const lines = (await fsPromises.readFile(filePath, "utf-8").catch(() => "")).split("\n").map((l) => l.trim()).filter(Boolean);
|
|
4412
4412
|
const kept = lines.slice(Math.max(0, lines.length - opts.keepLines));
|
|
4413
4413
|
const { randomBytes } = await import("node:crypto");
|
|
4414
4414
|
const tmp = `${filePath}.${process.pid}.${randomBytes(8).toString("hex")}.tmp`;
|
|
4415
|
-
await
|
|
4416
|
-
await
|
|
4415
|
+
await fsPromises.writeFile(tmp, `${kept.join("\n")}\n`, "utf-8");
|
|
4416
|
+
await fsPromises.rename(tmp, filePath);
|
|
4417
4417
|
}
|
|
4418
4418
|
async function appendCronRunLog(filePath, entry, opts) {
|
|
4419
4419
|
const resolved = path.resolve(filePath);
|
|
4420
4420
|
const next = (writesByPath.get(resolved) ?? Promise.resolve()).catch(() => void 0).then(async () => {
|
|
4421
|
-
await
|
|
4422
|
-
await
|
|
4421
|
+
await fsPromises.mkdir(path.dirname(resolved), { recursive: true });
|
|
4422
|
+
await fsPromises.appendFile(resolved, `${JSON.stringify(entry)}\n`, "utf-8");
|
|
4423
4423
|
await pruneIfNeeded(resolved, {
|
|
4424
4424
|
maxBytes: opts?.maxBytes ?? DEFAULT_CRON_RUN_LOG_MAX_BYTES,
|
|
4425
4425
|
keepLines: opts?.keepLines ?? DEFAULT_CRON_RUN_LOG_KEEP_LINES
|
|
@@ -4513,7 +4513,7 @@ function filterRunLogEntries(entries, opts) {
|
|
|
4513
4513
|
async function readCronRunLogEntriesPage(filePath, opts) {
|
|
4514
4514
|
await drainPendingWrite(filePath);
|
|
4515
4515
|
const limit = Math.max(1, Math.min(200, Math.floor(opts?.limit ?? 50)));
|
|
4516
|
-
const raw = await
|
|
4516
|
+
const raw = await fsPromises.readFile(path.resolve(filePath), "utf-8").catch(() => "");
|
|
4517
4517
|
const statuses = normalizeRunStatuses(opts);
|
|
4518
4518
|
const deliveryStatuses = normalizeDeliveryStatuses(opts);
|
|
4519
4519
|
const query = opts?.query?.trim().toLowerCase() ?? "";
|
|
@@ -4549,7 +4549,7 @@ async function readCronRunLogEntriesPageAll(opts) {
|
|
|
4549
4549
|
const query = opts.query?.trim().toLowerCase() ?? "";
|
|
4550
4550
|
const sortDir = opts.sortDir === "asc" ? "asc" : "desc";
|
|
4551
4551
|
const runsDir = path.resolve(path.dirname(path.resolve(opts.storePath)), "runs");
|
|
4552
|
-
const jsonlFiles = (await
|
|
4552
|
+
const jsonlFiles = (await fsPromises.readdir(runsDir, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl")).map((entry) => path.join(runsDir, entry.name));
|
|
4553
4553
|
if (jsonlFiles.length === 0) return {
|
|
4554
4554
|
entries: [],
|
|
4555
4555
|
total: 0,
|
|
@@ -4560,7 +4560,7 @@ async function readCronRunLogEntriesPageAll(opts) {
|
|
|
4560
4560
|
};
|
|
4561
4561
|
await Promise.all(jsonlFiles.map((f) => drainPendingWrite(f)));
|
|
4562
4562
|
const filtered = filterRunLogEntries((await Promise.all(jsonlFiles.map(async (filePath) => {
|
|
4563
|
-
return parseAllRunLogEntries(await
|
|
4563
|
+
return parseAllRunLogEntries(await fsPromises.readFile(filePath, "utf-8").catch(() => ""));
|
|
4564
4564
|
}))).flat(), {
|
|
4565
4565
|
statuses,
|
|
4566
4566
|
deliveryStatuses,
|
|
@@ -9768,7 +9768,7 @@ function resolveAgentWorkspaceFileOrRespondError(params, respond) {
|
|
|
9768
9768
|
}
|
|
9769
9769
|
async function resolveWorkspaceRealPath(workspaceDir) {
|
|
9770
9770
|
try {
|
|
9771
|
-
return await
|
|
9771
|
+
return await fsPromises.realpath(workspaceDir);
|
|
9772
9772
|
} catch {
|
|
9773
9773
|
return path.resolve(workspaceDir);
|
|
9774
9774
|
}
|
|
@@ -9792,7 +9792,7 @@ async function resolveAgentWorkspaceFilePath(params) {
|
|
|
9792
9792
|
}
|
|
9793
9793
|
let candidateLstat;
|
|
9794
9794
|
try {
|
|
9795
|
-
candidateLstat = await
|
|
9795
|
+
candidateLstat = await fsPromises.lstat(candidatePath);
|
|
9796
9796
|
} catch (err) {
|
|
9797
9797
|
if (isNotFoundPathError(err)) {
|
|
9798
9798
|
if (params.allowMissing) return {
|
|
@@ -9812,7 +9812,7 @@ async function resolveAgentWorkspaceFilePath(params) {
|
|
|
9812
9812
|
if (candidateLstat.isSymbolicLink()) {
|
|
9813
9813
|
let targetReal;
|
|
9814
9814
|
try {
|
|
9815
|
-
targetReal = await
|
|
9815
|
+
targetReal = await fsPromises.realpath(candidatePath);
|
|
9816
9816
|
} catch (err) {
|
|
9817
9817
|
if (isNotFoundPathError(err)) {
|
|
9818
9818
|
if (params.allowMissing) return {
|
|
@@ -9831,7 +9831,7 @@ async function resolveAgentWorkspaceFilePath(params) {
|
|
|
9831
9831
|
}
|
|
9832
9832
|
let targetStat;
|
|
9833
9833
|
try {
|
|
9834
|
-
targetStat = await
|
|
9834
|
+
targetStat = await fsPromises.stat(targetReal);
|
|
9835
9835
|
} catch (err) {
|
|
9836
9836
|
if (isNotFoundPathError(err)) {
|
|
9837
9837
|
if (params.allowMissing) return {
|
|
@@ -9878,13 +9878,13 @@ async function resolveAgentWorkspaceFilePath(params) {
|
|
|
9878
9878
|
return {
|
|
9879
9879
|
kind: "ready",
|
|
9880
9880
|
requestPath,
|
|
9881
|
-
ioPath: await
|
|
9881
|
+
ioPath: await fsPromises.realpath(candidatePath).catch(() => candidatePath),
|
|
9882
9882
|
workspaceReal
|
|
9883
9883
|
};
|
|
9884
9884
|
}
|
|
9885
9885
|
async function statFileSafely(filePath) {
|
|
9886
9886
|
try {
|
|
9887
|
-
const [stat, lstat] = await Promise.all([
|
|
9887
|
+
const [stat, lstat] = await Promise.all([fsPromises.stat(filePath), fsPromises.lstat(filePath)]);
|
|
9888
9888
|
if (lstat.isSymbolicLink() || !stat.isFile()) return null;
|
|
9889
9889
|
if (stat.nlink > 1) return null;
|
|
9890
9890
|
if (!sameFileIdentity(stat, lstat)) return null;
|
|
@@ -9969,7 +9969,7 @@ function resolveOptionalStringParam(value) {
|
|
|
9969
9969
|
async function moveToTrashBestEffort(pathname) {
|
|
9970
9970
|
if (!pathname) return;
|
|
9971
9971
|
try {
|
|
9972
|
-
await
|
|
9972
|
+
await fsPromises.access(pathname);
|
|
9973
9973
|
} catch {
|
|
9974
9974
|
return;
|
|
9975
9975
|
}
|
|
@@ -10045,7 +10045,7 @@ const agentsHandlers = {
|
|
|
10045
10045
|
dir: workspaceDir,
|
|
10046
10046
|
ensureBootstrapFiles: !Boolean(nextConfig.agents?.defaults?.skipBootstrap)
|
|
10047
10047
|
});
|
|
10048
|
-
await
|
|
10048
|
+
await fsPromises.mkdir(resolveSessionTranscriptsDirForAgent(agentId), { recursive: true });
|
|
10049
10049
|
await writeConfigFile(nextConfig);
|
|
10050
10050
|
const safeName = sanitizeIdentityLine(rawName);
|
|
10051
10051
|
const emoji = resolveOptionalStringParam(params.emoji);
|
|
@@ -10058,7 +10058,7 @@ const agentsHandlers = {
|
|
|
10058
10058
|
...avatar ? [`- Avatar: ${sanitizeIdentityLine(avatar)}`] : [],
|
|
10059
10059
|
""
|
|
10060
10060
|
];
|
|
10061
|
-
await
|
|
10061
|
+
await fsPromises.appendFile(identityPath, lines.join("\n"), "utf-8");
|
|
10062
10062
|
respond(true, {
|
|
10063
10063
|
ok: true,
|
|
10064
10064
|
agentId,
|
|
@@ -10093,9 +10093,9 @@ const agentsHandlers = {
|
|
|
10093
10093
|
});
|
|
10094
10094
|
if (avatar) {
|
|
10095
10095
|
const workspace = workspaceDir ?? resolveAgentWorkspaceDir(nextConfig, agentId);
|
|
10096
|
-
await
|
|
10096
|
+
await fsPromises.mkdir(workspace, { recursive: true });
|
|
10097
10097
|
const identityPath = path.join(workspace, DEFAULT_IDENTITY_FILENAME);
|
|
10098
|
-
await
|
|
10098
|
+
await fsPromises.appendFile(identityPath, `\n- Avatar: ${sanitizeIdentityLine(avatar)}\n`, "utf-8");
|
|
10099
10099
|
}
|
|
10100
10100
|
respond(true, {
|
|
10101
10101
|
ok: true,
|
|
@@ -10219,7 +10219,7 @@ const agentsHandlers = {
|
|
|
10219
10219
|
const resolved = resolveAgentWorkspaceFileOrRespondError(params, respond);
|
|
10220
10220
|
if (!resolved) return;
|
|
10221
10221
|
const { agentId, workspaceDir, name } = resolved;
|
|
10222
|
-
await
|
|
10222
|
+
await fsPromises.mkdir(workspaceDir, { recursive: true });
|
|
10223
10223
|
const filePath = path.join(workspaceDir, name);
|
|
10224
10224
|
const resolvedPath = await resolveWorkspaceFilePathOrRespond({
|
|
10225
10225
|
respond,
|
|
@@ -12512,14 +12512,14 @@ function isRollingLogFile(file) {
|
|
|
12512
12512
|
return ROLLING_LOG_RE.test(path.basename(file));
|
|
12513
12513
|
}
|
|
12514
12514
|
async function resolveLogFile(file) {
|
|
12515
|
-
if (await
|
|
12515
|
+
if (await fsPromises.stat(file).catch(() => null)) return file;
|
|
12516
12516
|
if (!isRollingLogFile(file)) return file;
|
|
12517
12517
|
const dir = path.dirname(file);
|
|
12518
|
-
const entries = await
|
|
12518
|
+
const entries = await fsPromises.readdir(dir, { withFileTypes: true }).catch(() => null);
|
|
12519
12519
|
if (!entries) return file;
|
|
12520
12520
|
return (await Promise.all(entries.filter((entry) => entry.isFile() && ROLLING_LOG_RE.test(entry.name)).map(async (entry) => {
|
|
12521
12521
|
const fullPath = path.join(dir, entry.name);
|
|
12522
|
-
const fileStat = await
|
|
12522
|
+
const fileStat = await fsPromises.stat(fullPath).catch(() => null);
|
|
12523
12523
|
return fileStat ? {
|
|
12524
12524
|
path: fullPath,
|
|
12525
12525
|
mtimeMs: fileStat.mtimeMs
|
|
@@ -12527,7 +12527,7 @@ async function resolveLogFile(file) {
|
|
|
12527
12527
|
}))).filter((entry) => Boolean(entry)).toSorted((a, b) => b.mtimeMs - a.mtimeMs)[0]?.path ?? file;
|
|
12528
12528
|
}
|
|
12529
12529
|
async function readLogSlice(params) {
|
|
12530
|
-
const stat = await
|
|
12530
|
+
const stat = await fsPromises.stat(params.file).catch(() => null);
|
|
12531
12531
|
if (!stat) return {
|
|
12532
12532
|
cursor: 0,
|
|
12533
12533
|
size: 0,
|
|
@@ -12565,7 +12565,7 @@ async function readLogSlice(params) {
|
|
|
12565
12565
|
truncated,
|
|
12566
12566
|
reset
|
|
12567
12567
|
};
|
|
12568
|
-
const handle = await
|
|
12568
|
+
const handle = await fsPromises.open(params.file, "r");
|
|
12569
12569
|
try {
|
|
12570
12570
|
let prefix = "";
|
|
12571
12571
|
if (start > 0) {
|
|
@@ -13612,7 +13612,7 @@ const nodeHandlers = {
|
|
|
13612
13612
|
const p = params;
|
|
13613
13613
|
const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
|
|
13614
13614
|
await respondUnavailableOnThrow(respond, async () => {
|
|
13615
|
-
const { handleNodeEvent } = await import("./server-node-events-
|
|
13615
|
+
const { handleNodeEvent } = await import("./server-node-events-B5xSV7Kq.js");
|
|
13616
13616
|
const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
|
|
13617
13617
|
await handleNodeEvent({
|
|
13618
13618
|
deps: context.deps,
|
|
@@ -14007,120 +14007,283 @@ const sendHandlers = {
|
|
|
14007
14007
|
//#region src/agents/skills-market-catalog.ts
|
|
14008
14008
|
const OFFICIAL_MARKET_CATALOG = [
|
|
14009
14009
|
{
|
|
14010
|
-
id: "
|
|
14011
|
-
skillKey: "
|
|
14012
|
-
name: "
|
|
14013
|
-
summary: "
|
|
14014
|
-
provider: "
|
|
14015
|
-
category: "
|
|
14010
|
+
id: "xiaohongshu-mcp",
|
|
14011
|
+
skillKey: "xiaohongshu-mcp",
|
|
14012
|
+
name: "Xiaohongshu Automation",
|
|
14013
|
+
summary: "Automate Xiaohongshu workflows for content operations and publishing tasks through a ClawHub skill.",
|
|
14014
|
+
provider: "Borye",
|
|
14015
|
+
category: "automation",
|
|
14016
14016
|
tags: [
|
|
14017
|
-
"
|
|
14018
|
-
"
|
|
14019
|
-
"
|
|
14020
|
-
"
|
|
14021
|
-
"mcp"
|
|
14022
|
-
"greenfield",
|
|
14023
|
-
"erc-8004"
|
|
14017
|
+
"xiaohongshu",
|
|
14018
|
+
"automation",
|
|
14019
|
+
"social",
|
|
14020
|
+
"publishing",
|
|
14021
|
+
"mcp"
|
|
14024
14022
|
],
|
|
14025
|
-
|
|
14026
|
-
|
|
14023
|
+
stars: 60,
|
|
14024
|
+
downloads: 15840,
|
|
14025
|
+
sourceType: "clawhub",
|
|
14026
|
+
slug: "xiaohongshu-mcp",
|
|
14027
14027
|
official: true
|
|
14028
14028
|
},
|
|
14029
14029
|
{
|
|
14030
|
-
id: "
|
|
14031
|
-
skillKey: "
|
|
14032
|
-
name: "
|
|
14033
|
-
summary: "
|
|
14034
|
-
provider: "
|
|
14035
|
-
category: "
|
|
14030
|
+
id: "github",
|
|
14031
|
+
skillKey: "github",
|
|
14032
|
+
name: "Github",
|
|
14033
|
+
summary: "Work with GitHub repositories, issues, pull requests, and other developer workflows from ClawHub.",
|
|
14034
|
+
provider: "steipete",
|
|
14035
|
+
category: "developer-tools",
|
|
14036
14036
|
tags: [
|
|
14037
|
-
"
|
|
14038
|
-
"
|
|
14039
|
-
"
|
|
14040
|
-
"
|
|
14041
|
-
"
|
|
14042
|
-
"market",
|
|
14043
|
-
"index"
|
|
14037
|
+
"github",
|
|
14038
|
+
"git",
|
|
14039
|
+
"developer",
|
|
14040
|
+
"issues",
|
|
14041
|
+
"pull-requests"
|
|
14044
14042
|
],
|
|
14045
|
-
|
|
14046
|
-
|
|
14043
|
+
stars: 323,
|
|
14044
|
+
downloads: 99937,
|
|
14045
|
+
sourceType: "clawhub",
|
|
14046
|
+
slug: "github",
|
|
14047
14047
|
official: true
|
|
14048
14048
|
},
|
|
14049
14049
|
{
|
|
14050
|
-
id: "
|
|
14051
|
-
skillKey: "
|
|
14052
|
-
name: "
|
|
14053
|
-
summary: "
|
|
14054
|
-
provider: "
|
|
14055
|
-
category: "
|
|
14050
|
+
id: "openai-whisper",
|
|
14051
|
+
skillKey: "openai-whisper",
|
|
14052
|
+
name: "Openai Whisper",
|
|
14053
|
+
summary: "Transcribe and process audio with Whisper via a ClawHub skill for speech-to-text workflows.",
|
|
14054
|
+
provider: "steipete",
|
|
14055
|
+
category: "audio-media",
|
|
14056
|
+
tags: [
|
|
14057
|
+
"audio",
|
|
14058
|
+
"transcription",
|
|
14059
|
+
"whisper",
|
|
14060
|
+
"speech-to-text",
|
|
14061
|
+
"media"
|
|
14062
|
+
],
|
|
14063
|
+
stars: 197,
|
|
14064
|
+
downloads: 42056,
|
|
14065
|
+
sourceType: "clawhub",
|
|
14066
|
+
slug: "openai-whisper",
|
|
14067
|
+
official: true
|
|
14068
|
+
},
|
|
14069
|
+
{
|
|
14070
|
+
id: "skill-vetter",
|
|
14071
|
+
skillKey: "skill-vetter",
|
|
14072
|
+
name: "Skill Vetter",
|
|
14073
|
+
summary: "Review and vet skills before adoption to help evaluate quality, fit, and readiness.",
|
|
14074
|
+
provider: "spclaudehome",
|
|
14075
|
+
category: "meta-security",
|
|
14076
|
+
tags: [
|
|
14077
|
+
"skills",
|
|
14078
|
+
"review",
|
|
14079
|
+
"vetting",
|
|
14080
|
+
"quality",
|
|
14081
|
+
"evaluation"
|
|
14082
|
+
],
|
|
14083
|
+
stars: 290,
|
|
14084
|
+
downloads: 73729,
|
|
14085
|
+
sourceType: "clawhub",
|
|
14086
|
+
slug: "skill-vetter",
|
|
14087
|
+
official: true
|
|
14088
|
+
},
|
|
14089
|
+
{
|
|
14090
|
+
id: "gog",
|
|
14091
|
+
skillKey: "gog",
|
|
14092
|
+
name: "Gog",
|
|
14093
|
+
summary: "Use Gog from ClawHub for developer and command-line workflows that benefit from fast utility tooling.",
|
|
14094
|
+
provider: "steipete",
|
|
14095
|
+
category: "developer-tools",
|
|
14096
|
+
tags: [
|
|
14097
|
+
"developer",
|
|
14098
|
+
"cli",
|
|
14099
|
+
"tooling",
|
|
14100
|
+
"workflow",
|
|
14101
|
+
"utility"
|
|
14102
|
+
],
|
|
14103
|
+
stars: 705,
|
|
14104
|
+
downloads: 106425,
|
|
14105
|
+
sourceType: "clawhub",
|
|
14106
|
+
slug: "gog",
|
|
14107
|
+
official: true
|
|
14108
|
+
},
|
|
14109
|
+
{
|
|
14110
|
+
id: "openclaw-tavily-search",
|
|
14111
|
+
skillKey: "openclaw-tavily-search",
|
|
14112
|
+
name: "Tavily Web Search",
|
|
14113
|
+
summary: "Search the web with Tavily through ClawHub for current information gathering and lightweight research.",
|
|
14114
|
+
provider: "Jacky1n7",
|
|
14115
|
+
category: "search-research",
|
|
14056
14116
|
tags: [
|
|
14057
|
-
"web3",
|
|
14058
|
-
"okx",
|
|
14059
|
-
"token",
|
|
14060
14117
|
"search",
|
|
14061
|
-
"
|
|
14062
|
-
"
|
|
14063
|
-
"
|
|
14118
|
+
"web",
|
|
14119
|
+
"research",
|
|
14120
|
+
"tavily",
|
|
14121
|
+
"current-events"
|
|
14122
|
+
],
|
|
14123
|
+
stars: 26,
|
|
14124
|
+
downloads: 17437,
|
|
14125
|
+
sourceType: "clawhub",
|
|
14126
|
+
slug: "openclaw-tavily-search",
|
|
14127
|
+
official: true
|
|
14128
|
+
},
|
|
14129
|
+
{
|
|
14130
|
+
id: "summarize",
|
|
14131
|
+
skillKey: "summarize",
|
|
14132
|
+
name: "Summarize",
|
|
14133
|
+
summary: "Summarize documents, pages, and other text content through a focused ClawHub skill.",
|
|
14134
|
+
provider: "steipete",
|
|
14135
|
+
category: "search-research",
|
|
14136
|
+
tags: [
|
|
14137
|
+
"summarization",
|
|
14138
|
+
"text",
|
|
14139
|
+
"research",
|
|
14140
|
+
"documents",
|
|
14141
|
+
"analysis"
|
|
14064
14142
|
],
|
|
14065
|
-
|
|
14066
|
-
|
|
14143
|
+
stars: 542,
|
|
14144
|
+
downloads: 139326,
|
|
14145
|
+
sourceType: "clawhub",
|
|
14146
|
+
slug: "summarize",
|
|
14067
14147
|
official: true
|
|
14068
14148
|
},
|
|
14069
14149
|
{
|
|
14070
|
-
id: "
|
|
14071
|
-
skillKey: "
|
|
14072
|
-
name: "
|
|
14073
|
-
summary: "
|
|
14074
|
-
provider: "
|
|
14075
|
-
category: "
|
|
14150
|
+
id: "skill-security-auditor",
|
|
14151
|
+
skillKey: "skill-security-auditor",
|
|
14152
|
+
name: "Skill Security Auditor",
|
|
14153
|
+
summary: "Audit skills for security concerns and suspicious patterns before enabling them in production workflows.",
|
|
14154
|
+
provider: "akhmittra",
|
|
14155
|
+
category: "meta-security",
|
|
14076
14156
|
tags: [
|
|
14077
|
-
"
|
|
14078
|
-
"
|
|
14079
|
-
"
|
|
14080
|
-
"
|
|
14081
|
-
"
|
|
14082
|
-
"holdings"
|
|
14157
|
+
"security",
|
|
14158
|
+
"audit",
|
|
14159
|
+
"skills",
|
|
14160
|
+
"review",
|
|
14161
|
+
"risk"
|
|
14083
14162
|
],
|
|
14084
|
-
|
|
14085
|
-
|
|
14163
|
+
stars: 2,
|
|
14164
|
+
downloads: 2547,
|
|
14165
|
+
sourceType: "clawhub",
|
|
14166
|
+
slug: "skill-security-auditor",
|
|
14086
14167
|
official: true
|
|
14087
14168
|
},
|
|
14088
14169
|
{
|
|
14089
|
-
id: "
|
|
14090
|
-
skillKey: "
|
|
14091
|
-
name: "
|
|
14092
|
-
summary: "
|
|
14093
|
-
provider: "
|
|
14094
|
-
category: "
|
|
14170
|
+
id: "self-improving-agent",
|
|
14171
|
+
skillKey: "self-improving-agent",
|
|
14172
|
+
name: "Self Improving Agent",
|
|
14173
|
+
summary: "Use a ClawHub agent focused on iterating on its own behavior and improving workflows over time.",
|
|
14174
|
+
provider: "pskoett",
|
|
14175
|
+
category: "meta-security",
|
|
14095
14176
|
tags: [
|
|
14096
|
-
"
|
|
14097
|
-
"
|
|
14098
|
-
"
|
|
14099
|
-
"
|
|
14100
|
-
"
|
|
14101
|
-
"liquidity"
|
|
14177
|
+
"agent",
|
|
14178
|
+
"self-improvement",
|
|
14179
|
+
"iteration",
|
|
14180
|
+
"optimization",
|
|
14181
|
+
"meta"
|
|
14102
14182
|
],
|
|
14103
|
-
|
|
14104
|
-
|
|
14183
|
+
stars: 1863,
|
|
14184
|
+
downloads: 185770,
|
|
14185
|
+
sourceType: "clawhub",
|
|
14186
|
+
slug: "self-improving-agent",
|
|
14105
14187
|
official: true
|
|
14106
14188
|
},
|
|
14107
14189
|
{
|
|
14108
|
-
id: "
|
|
14109
|
-
skillKey: "
|
|
14110
|
-
name: "
|
|
14111
|
-
summary: "
|
|
14112
|
-
provider: "
|
|
14113
|
-
category: "
|
|
14190
|
+
id: "find-skills",
|
|
14191
|
+
skillKey: "find-skills",
|
|
14192
|
+
name: "Find Skills",
|
|
14193
|
+
summary: "Discover relevant ClawHub skills for a task so agents can expand capabilities on demand.",
|
|
14194
|
+
provider: "JimLiuxinghai",
|
|
14195
|
+
category: "meta-security",
|
|
14114
14196
|
tags: [
|
|
14115
|
-
"
|
|
14116
|
-
"
|
|
14117
|
-
"
|
|
14118
|
-
"
|
|
14119
|
-
"
|
|
14120
|
-
"broadcast"
|
|
14197
|
+
"skills",
|
|
14198
|
+
"discovery",
|
|
14199
|
+
"registry",
|
|
14200
|
+
"clawhub",
|
|
14201
|
+
"meta"
|
|
14121
14202
|
],
|
|
14122
|
-
|
|
14123
|
-
|
|
14203
|
+
stars: 766,
|
|
14204
|
+
downloads: 181109,
|
|
14205
|
+
sourceType: "clawhub",
|
|
14206
|
+
slug: "find-skills",
|
|
14207
|
+
official: true
|
|
14208
|
+
},
|
|
14209
|
+
{
|
|
14210
|
+
id: "obsidian",
|
|
14211
|
+
skillKey: "obsidian",
|
|
14212
|
+
name: "Obsidian",
|
|
14213
|
+
summary: "Work with Obsidian notes and knowledge-base content through a ClawHub integration skill.",
|
|
14214
|
+
provider: "steipete",
|
|
14215
|
+
category: "developer-tools",
|
|
14216
|
+
tags: [
|
|
14217
|
+
"obsidian",
|
|
14218
|
+
"notes",
|
|
14219
|
+
"knowledge-base",
|
|
14220
|
+
"markdown",
|
|
14221
|
+
"productivity"
|
|
14222
|
+
],
|
|
14223
|
+
stars: 187,
|
|
14224
|
+
downloads: 47182,
|
|
14225
|
+
sourceType: "clawhub",
|
|
14226
|
+
slug: "obsidian",
|
|
14227
|
+
official: true
|
|
14228
|
+
},
|
|
14229
|
+
{
|
|
14230
|
+
id: "skill-creator-2",
|
|
14231
|
+
skillKey: "skill-creator-2",
|
|
14232
|
+
name: "Skill creator",
|
|
14233
|
+
summary: "Create new skills with a ClawHub-assisted builder aimed at packaging and publishing reusable capabilities.",
|
|
14234
|
+
provider: "yixinli867",
|
|
14235
|
+
category: "meta-security",
|
|
14236
|
+
tags: [
|
|
14237
|
+
"skills",
|
|
14238
|
+
"creator",
|
|
14239
|
+
"builder",
|
|
14240
|
+
"packaging",
|
|
14241
|
+
"clawhub"
|
|
14242
|
+
],
|
|
14243
|
+
stars: 26,
|
|
14244
|
+
downloads: 5116,
|
|
14245
|
+
sourceType: "clawhub",
|
|
14246
|
+
slug: "skill-creator-2",
|
|
14247
|
+
official: true
|
|
14248
|
+
},
|
|
14249
|
+
{
|
|
14250
|
+
id: "upload-post",
|
|
14251
|
+
skillKey: "upload-post",
|
|
14252
|
+
name: "Upload Post",
|
|
14253
|
+
summary: "Upload and publish posts through a ClawHub automation skill for social and content workflows.",
|
|
14254
|
+
provider: "victorcavero14",
|
|
14255
|
+
category: "automation",
|
|
14256
|
+
tags: [
|
|
14257
|
+
"upload",
|
|
14258
|
+
"post",
|
|
14259
|
+
"publishing",
|
|
14260
|
+
"social",
|
|
14261
|
+
"automation"
|
|
14262
|
+
],
|
|
14263
|
+
stars: 35,
|
|
14264
|
+
downloads: 6588,
|
|
14265
|
+
sourceType: "clawhub",
|
|
14266
|
+
slug: "upload-post",
|
|
14267
|
+
official: true
|
|
14268
|
+
},
|
|
14269
|
+
{
|
|
14270
|
+
id: "security-auditor",
|
|
14271
|
+
skillKey: "security-auditor",
|
|
14272
|
+
name: "Security Auditor",
|
|
14273
|
+
summary: "Run security-oriented reviews and checks with a general-purpose ClawHub security auditing skill.",
|
|
14274
|
+
provider: "jgarrison929",
|
|
14275
|
+
category: "meta-security",
|
|
14276
|
+
tags: [
|
|
14277
|
+
"security",
|
|
14278
|
+
"auditor",
|
|
14279
|
+
"review",
|
|
14280
|
+
"analysis",
|
|
14281
|
+
"checks"
|
|
14282
|
+
],
|
|
14283
|
+
stars: 14,
|
|
14284
|
+
downloads: 10926,
|
|
14285
|
+
sourceType: "clawhub",
|
|
14286
|
+
slug: "security-auditor",
|
|
14124
14287
|
official: true
|
|
14125
14288
|
}
|
|
14126
14289
|
];
|
|
@@ -14138,6 +14301,17 @@ function isCommandNotFoundResult(result) {
|
|
|
14138
14301
|
const output = `${result.stderr}\n${result.stdout}`.toLowerCase();
|
|
14139
14302
|
return output.includes("enoent") || output.includes("command not found") || output.includes("not recognized as an internal or external command");
|
|
14140
14303
|
}
|
|
14304
|
+
async function runMarketInstallCommand(runCommand, argv, options) {
|
|
14305
|
+
try {
|
|
14306
|
+
return await runCommand(argv, options);
|
|
14307
|
+
} catch (err) {
|
|
14308
|
+
return {
|
|
14309
|
+
code: null,
|
|
14310
|
+
stdout: "",
|
|
14311
|
+
stderr: err instanceof Error ? err.message : String(err)
|
|
14312
|
+
};
|
|
14313
|
+
}
|
|
14314
|
+
}
|
|
14141
14315
|
async function installLocalMarketSkill(params) {
|
|
14142
14316
|
const templateDir = params.templateDir.trim();
|
|
14143
14317
|
if (hasPathTraversal(templateDir)) return {
|
|
@@ -14158,11 +14332,11 @@ async function installLocalMarketSkill(params) {
|
|
|
14158
14332
|
candidatePath: sourceDir,
|
|
14159
14333
|
boundaryLabel: "market templates directory"
|
|
14160
14334
|
});
|
|
14161
|
-
if (!(await
|
|
14335
|
+
if (!(await fsPromises.stat(sourceDir)).isDirectory()) return {
|
|
14162
14336
|
ok: false,
|
|
14163
14337
|
message: `Local template "${templateDir}" is not a directory.`
|
|
14164
14338
|
};
|
|
14165
|
-
if (!(await
|
|
14339
|
+
if (!(await fsPromises.stat(sourceSkillPath)).isFile()) return {
|
|
14166
14340
|
ok: false,
|
|
14167
14341
|
message: `Local template "${templateDir}" is missing SKILL.md.`
|
|
14168
14342
|
};
|
|
@@ -14176,13 +14350,13 @@ async function installLocalMarketSkill(params) {
|
|
|
14176
14350
|
const workspaceSkillsDir = path.join(workspaceDir, "skills");
|
|
14177
14351
|
const targetDir = path.join(workspaceSkillsDir, templateDir);
|
|
14178
14352
|
try {
|
|
14179
|
-
await
|
|
14353
|
+
await fsPromises.mkdir(workspaceSkillsDir, { recursive: true });
|
|
14180
14354
|
await assertCanonicalPathWithinBase({
|
|
14181
14355
|
baseDir: workspaceSkillsDir,
|
|
14182
14356
|
candidatePath: targetDir,
|
|
14183
14357
|
boundaryLabel: "workspace skills directory"
|
|
14184
14358
|
});
|
|
14185
|
-
await
|
|
14359
|
+
await fsPromises.cp(sourceDir, targetDir, {
|
|
14186
14360
|
recursive: true,
|
|
14187
14361
|
force: true
|
|
14188
14362
|
});
|
|
@@ -14206,7 +14380,7 @@ async function installClawhubMarketSkill(params, deps) {
|
|
|
14206
14380
|
const workspaceDir = resolveUserPath(params.workspaceDir);
|
|
14207
14381
|
const timeoutMs = Math.min(Math.max(params.timeoutMs ?? 3e5, 1e3), 9e5);
|
|
14208
14382
|
const runCommand = deps?.runCommand ?? runCommandWithTimeout;
|
|
14209
|
-
const first = await runCommand
|
|
14383
|
+
const first = await runMarketInstallCommand(runCommand, [
|
|
14210
14384
|
"clawhub",
|
|
14211
14385
|
"install",
|
|
14212
14386
|
slug
|
|
@@ -14222,7 +14396,7 @@ async function installClawhubMarketSkill(params, deps) {
|
|
|
14222
14396
|
ok: false,
|
|
14223
14397
|
message: `ClawHub install failed: ${formatInstallFailureMessage(first)}`
|
|
14224
14398
|
};
|
|
14225
|
-
const fallback = await runCommand
|
|
14399
|
+
const fallback = await runMarketInstallCommand(runCommand, [
|
|
14226
14400
|
"npx",
|
|
14227
14401
|
"-y",
|
|
14228
14402
|
"clawhub",
|
|
@@ -16968,7 +17142,7 @@ function normalizeAgentPayload(payload) {
|
|
|
16968
17142
|
async function startBrowserControlServerIfEnabled() {
|
|
16969
17143
|
if (isTruthyEnvValue(process.env.OPENCLAW_SKIP_BROWSER_CONTROL_SERVER)) return null;
|
|
16970
17144
|
const override = process.env.OPENCLAW_BROWSER_CONTROL_MODULE?.trim();
|
|
16971
|
-
const mod = override ? await import(override) : await import("./server-
|
|
17145
|
+
const mod = override ? await import(override) : await import("./server-CzDsmd9g.js");
|
|
16972
17146
|
const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
|
|
16973
17147
|
const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
|
|
16974
17148
|
if (!start) return null;
|
|
@@ -17196,7 +17370,7 @@ async function resolveFileWithinRoot(rootReal, urlPath) {
|
|
|
17196
17370
|
if (normalized.endsWith("/")) return await tryOpen(path.posix.join(rel, "index.html"));
|
|
17197
17371
|
const candidate = path.join(rootReal, rel);
|
|
17198
17372
|
try {
|
|
17199
|
-
const st = await
|
|
17373
|
+
const st = await fsPromises.lstat(candidate);
|
|
17200
17374
|
if (st.isSymbolicLink()) return null;
|
|
17201
17375
|
if (st.isDirectory()) return await tryOpen(path.posix.join(rel, "index.html"));
|
|
17202
17376
|
} catch {}
|
|
@@ -17233,8 +17407,8 @@ async function resolveA2uiRoot() {
|
|
|
17233
17407
|
for (const dir of candidates) try {
|
|
17234
17408
|
const indexPath = path.join(dir, "index.html");
|
|
17235
17409
|
const bundlePath = path.join(dir, "a2ui.bundle.js");
|
|
17236
|
-
await
|
|
17237
|
-
await
|
|
17410
|
+
await fsPromises.stat(indexPath);
|
|
17411
|
+
await fsPromises.stat(bundlePath);
|
|
17238
17412
|
return dir;
|
|
17239
17413
|
} catch {}
|
|
17240
17414
|
return null;
|
|
@@ -17243,7 +17417,7 @@ async function resolveA2uiRootReal() {
|
|
|
17243
17417
|
if (cachedA2uiRootReal !== void 0 && (cachedA2uiRootReal !== null || Date.now() - cachedA2uiResolvedAtMs < A2UI_ROOT_RETRY_NULL_AFTER_MS)) return cachedA2uiRootReal;
|
|
17244
17418
|
if (!resolvingA2uiRoot) resolvingA2uiRoot = (async () => {
|
|
17245
17419
|
const root = await resolveA2uiRoot();
|
|
17246
|
-
cachedA2uiRootReal = root ? await
|
|
17420
|
+
cachedA2uiRootReal = root ? await fsPromises.realpath(root) : null;
|
|
17247
17421
|
cachedA2uiResolvedAtMs = Date.now();
|
|
17248
17422
|
resolvingA2uiRoot = null;
|
|
17249
17423
|
return cachedA2uiRootReal;
|
|
@@ -17464,13 +17638,13 @@ function normalizeBasePath(rawPath) {
|
|
|
17464
17638
|
}
|
|
17465
17639
|
async function prepareCanvasRoot(rootDir) {
|
|
17466
17640
|
await ensureDir(rootDir);
|
|
17467
|
-
const rootReal = await
|
|
17641
|
+
const rootReal = await fsPromises.realpath(rootDir);
|
|
17468
17642
|
try {
|
|
17469
17643
|
const indexPath = path.join(rootReal, "index.html");
|
|
17470
|
-
await
|
|
17644
|
+
await fsPromises.stat(indexPath);
|
|
17471
17645
|
} catch {
|
|
17472
17646
|
try {
|
|
17473
|
-
await
|
|
17647
|
+
await fsPromises.writeFile(path.join(rootReal, "index.html"), defaultIndexHTML(), "utf8");
|
|
17474
17648
|
} catch {}
|
|
17475
17649
|
}
|
|
17476
17650
|
return rootReal;
|
|
@@ -20477,7 +20651,7 @@ async function resolveGatewayOwnerStatus(pid, payload, platform, port) {
|
|
|
20477
20651
|
}
|
|
20478
20652
|
async function readLockPayload(lockPath) {
|
|
20479
20653
|
try {
|
|
20480
|
-
const raw = await
|
|
20654
|
+
const raw = await fsPromises.readFile(lockPath, "utf8");
|
|
20481
20655
|
const parsed = JSON.parse(raw);
|
|
20482
20656
|
if (typeof parsed.pid !== "number") return null;
|
|
20483
20657
|
if (typeof parsed.createdAt !== "string") return null;
|
|
@@ -20512,11 +20686,11 @@ async function acquireGatewayLock(opts = {}) {
|
|
|
20512
20686
|
const platform = opts.platform ?? process.platform;
|
|
20513
20687
|
const port = opts.port;
|
|
20514
20688
|
const { lockPath, configPath } = resolveGatewayLockPath(env);
|
|
20515
|
-
await
|
|
20689
|
+
await fsPromises.mkdir(path.dirname(lockPath), { recursive: true });
|
|
20516
20690
|
const startedAt = Date.now();
|
|
20517
20691
|
let lastPayload = null;
|
|
20518
20692
|
while (Date.now() - startedAt < timeoutMs) try {
|
|
20519
|
-
const handle = await
|
|
20693
|
+
const handle = await fsPromises.open(lockPath, "wx");
|
|
20520
20694
|
const startTime = platform === "linux" ? readLinuxStartTime(process.pid) : null;
|
|
20521
20695
|
const payload = {
|
|
20522
20696
|
pid: process.pid,
|
|
@@ -20530,7 +20704,7 @@ async function acquireGatewayLock(opts = {}) {
|
|
|
20530
20704
|
configPath,
|
|
20531
20705
|
release: async () => {
|
|
20532
20706
|
await handle.close().catch(() => void 0);
|
|
20533
|
-
await
|
|
20707
|
+
await fsPromises.rm(lockPath, { force: true });
|
|
20534
20708
|
}
|
|
20535
20709
|
};
|
|
20536
20710
|
} catch (err) {
|
|
@@ -20539,7 +20713,7 @@ async function acquireGatewayLock(opts = {}) {
|
|
|
20539
20713
|
const ownerPid = lastPayload?.pid;
|
|
20540
20714
|
const ownerStatus = ownerPid ? await resolveGatewayOwnerStatus(ownerPid, lastPayload, platform, port) : "unknown";
|
|
20541
20715
|
if (ownerStatus === "dead" && ownerPid) {
|
|
20542
|
-
await
|
|
20716
|
+
await fsPromises.rm(lockPath, { force: true });
|
|
20543
20717
|
continue;
|
|
20544
20718
|
}
|
|
20545
20719
|
if (ownerStatus !== "alive") {
|
|
@@ -20549,13 +20723,13 @@ async function acquireGatewayLock(opts = {}) {
|
|
|
20549
20723
|
stale = Number.isFinite(createdAt) ? Date.now() - createdAt > staleMs : false;
|
|
20550
20724
|
}
|
|
20551
20725
|
if (!stale) try {
|
|
20552
|
-
const st = await
|
|
20726
|
+
const st = await fsPromises.stat(lockPath);
|
|
20553
20727
|
stale = Date.now() - st.mtimeMs > staleMs;
|
|
20554
20728
|
} catch {
|
|
20555
20729
|
stale = false;
|
|
20556
20730
|
}
|
|
20557
20731
|
if (stale) {
|
|
20558
|
-
await
|
|
20732
|
+
await fsPromises.rm(lockPath, { force: true });
|
|
20559
20733
|
continue;
|
|
20560
20734
|
}
|
|
20561
20735
|
}
|
|
@@ -22865,7 +23039,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
|
|
|
22865
23039
|
if (!minimalTestGateway) cron.start().catch((err) => logCron.error(`failed to start: ${String(err)}`));
|
|
22866
23040
|
if (!minimalTestGateway) (async () => {
|
|
22867
23041
|
const { recoverPendingDeliveries } = await import("./delivery-queue-DhqwvOP8.js").then((n) => n.n);
|
|
22868
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
23042
|
+
const { deliverOutboundPayloads } = await import("./deliver-H0xCFj4j.js").then((n) => n.n);
|
|
22869
23043
|
await recoverPendingDeliveries({
|
|
22870
23044
|
deliver: deliverOutboundPayloads,
|
|
22871
23045
|
log: log.child("delivery-recovery"),
|