@organizaone/o1-code 0.6.0 → 0.9.0
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/bundled/qc-helper/docs/configuration/settings.md +10 -0
- package/bundled/qc-helper/docs/quickstart.md +1 -1
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +42 -36
- package/chunks/{MaxSizedBox-5EOREWNX.js → MaxSizedBox-YRO4IP7D.js} +23 -23
- package/chunks/{StandaloneSessionPicker-3OCB32JD.js → StandaloneSessionPicker-HM6FRRNB.js} +39 -39
- package/chunks/{acp-subagent-executor-JTNA5F4Q.js → acp-subagent-executor-GKUWPZ3X.js} +24 -24
- package/chunks/{acpAgent-IS2JKYZV.js → acpAgent-NM2GJZPA.js} +65 -65
- package/chunks/{agent-U5KE7R4X.js → agent-VI6IBJKP.js} +11 -11
- package/chunks/{agent-headless-VL764VUV.js → agent-headless-RG2RANBY.js} +11 -11
- package/chunks/{anthropicContentGenerator-I7B3ZJTH.js → anthropicContentGenerator-OUXKGYR3.js} +5 -5
- package/chunks/{bridge-4GFWUTJN.js → bridge-ASDRIBGU.js} +24 -24
- package/chunks/{build-RFEU7TIS.js → build-HLEIVF4Y.js} +1 -1
- package/chunks/{chunk-WVEKU4MO.js → chunk-2R42INUX.js} +2 -2
- package/chunks/{chunk-KCIKBXEW.js → chunk-2S3QOYP4.js} +4 -4
- package/chunks/{chunk-SHDHN4UM.js → chunk-2TURUYOS.js} +1 -1
- package/chunks/{chunk-XNOIGECT.js → chunk-33RS64W5.js} +10 -10
- package/chunks/{chunk-4ZTCFNSU.js → chunk-3HBUBIMD.js} +1 -1
- package/chunks/{chunk-IF22E34Z.js → chunk-3LIB2FAU.js} +3 -3
- package/chunks/{chunk-GKX63AXY.js → chunk-3ODGANQH.js} +2 -2
- package/chunks/{chunk-7UG5NBEG.js → chunk-3T5ZVERP.js} +1 -1
- package/chunks/{chunk-IFJUYGAZ.js → chunk-4FEIAOCC.js} +1 -1
- package/chunks/{chunk-X2RYRNAP.js → chunk-4IDJJ4KI.js} +2 -2
- package/chunks/{chunk-JY65SH65.js → chunk-5W2RZUTF.js} +3 -3
- package/chunks/{chunk-TUQWDNKR.js → chunk-656G544G.js} +2 -2
- package/chunks/{chunk-A6R5ERJF.js → chunk-6CNTKWVU.js} +4 -4
- package/chunks/{chunk-NEG6TBRH.js → chunk-7QFVAEBE.js} +1 -1
- package/chunks/{chunk-KQRLWGYH.js → chunk-7UK4SIHI.js} +1 -1
- package/chunks/{chunk-C2RMEAXF.js → chunk-AC75ZC3R.js} +1 -1
- package/chunks/{chunk-SJLUEEH6.js → chunk-BMWNSOKM.js} +2 -2
- package/chunks/{chunk-VEFKFFT5.js → chunk-CK53F45C.js} +1 -1
- package/chunks/{chunk-DD5QAE42.js → chunk-CLYICZHJ.js} +4 -4
- package/chunks/{chunk-KPGPUSJ4.js → chunk-CPQGFFDW.js} +5 -5
- package/chunks/{chunk-4YYRPA6G.js → chunk-CS7C2L7J.js} +5 -5
- package/chunks/{chunk-XMR45LXQ.js → chunk-CVAGYXMP.js} +1 -1
- package/chunks/{chunk-3VVXMGS2.js → chunk-CWSGGQLH.js} +91 -26
- package/chunks/{chunk-L2OTZN7G.js → chunk-D4GF3Z3J.js} +1 -1
- package/chunks/{chunk-35XZ5JAH.js → chunk-DEULKIEJ.js} +1 -1
- package/chunks/{chunk-HFBSP3VC.js → chunk-EIPBVTYB.js} +1 -1
- package/chunks/{chunk-3RRITSOA.js → chunk-EQQUC6HX.js} +2 -2
- package/chunks/{chunk-73JQWXED.js → chunk-F477I5JN.js} +2 -2
- package/chunks/{chunk-DIVWC7JL.js → chunk-FIIOIJX6.js} +5 -5
- package/chunks/{chunk-VL3VAUJC.js → chunk-FRRKENS6.js} +3 -3
- package/chunks/{chunk-G7HMFP3U.js → chunk-GKCZEQC7.js} +270 -581
- package/chunks/{chunk-PVQB3PSU.js → chunk-GLKPKVRO.js} +1 -1
- package/chunks/{chunk-NWQPYJVP.js → chunk-GTNYSOQ2.js} +3 -3
- package/chunks/{chunk-LKTMEG3O.js → chunk-HFW4YMBT.js} +2 -2
- package/chunks/{chunk-WFUXHQZO.js → chunk-IBPY5AJI.js} +31 -9
- package/chunks/{chunk-Y2DKG24P.js → chunk-IPTVBAQ5.js} +1 -1
- package/chunks/{chunk-2TR3LXCO.js → chunk-IUHFMWMV.js} +4 -4
- package/chunks/{chunk-HWHXSAP6.js → chunk-J2OKRT7N.js} +10 -10
- package/chunks/{chunk-LDZQTXZL.js → chunk-JGEPZYTM.js} +4 -4
- package/chunks/{chunk-FNOLXMFM.js → chunk-JVFO6PPS.js} +1 -1
- package/chunks/{chunk-OCUQJADH.js → chunk-KAF4RHGK.js} +1 -1
- package/chunks/{chunk-XPFD45HB.js → chunk-KAW6TQNC.js} +6 -6
- package/chunks/{chunk-25B3YO64.js → chunk-KDS2IANW.js} +1 -1
- package/chunks/{chunk-ZCCCPNWD.js → chunk-KM2K4ERE.js} +1 -1
- package/chunks/{chunk-J5XJUCP6.js → chunk-L66MHJW7.js} +3 -3
- package/chunks/{chunk-NCYMEGY4.js → chunk-L6HTWOTF.js} +5 -5
- package/chunks/{chunk-SNSYYPUE.js → chunk-LBT6PT4Z.js} +7 -7
- package/chunks/{chunk-ZJYMX7GI.js → chunk-LIM5RBA5.js} +3 -3
- package/chunks/{chunk-FVXJFEVA.js → chunk-LQELD265.js} +1 -1
- package/chunks/{chunk-4D3AFN6X.js → chunk-LQWYK66V.js} +3 -3
- package/chunks/{chunk-OUANBR2O.js → chunk-LTQLCF23.js} +1 -1
- package/chunks/{chunk-ADSXYGOQ.js → chunk-LU2Z7WRX.js} +1 -1
- package/chunks/{chunk-KWUNXWMZ.js → chunk-MFSMNYXY.js} +8 -8
- package/chunks/{chunk-SRM5ACHK.js → chunk-MUX4EKXE.js} +1 -1
- package/chunks/{chunk-NIIG7L3H.js → chunk-N335XRGH.js} +1 -1
- package/chunks/{chunk-PIMJCQZQ.js → chunk-OOLEXGWB.js} +1 -1
- package/chunks/{chunk-ZOZJOC2D.js → chunk-OU5QAYET.js} +2 -2
- package/chunks/{chunk-5OZ6R5FD.js → chunk-OZ2OT5BC.js} +3 -3
- package/chunks/{chunk-YPHLY3RQ.js → chunk-PCCUFQHX.js} +5 -5
- package/chunks/{chunk-2XWTDVCK.js → chunk-PL7VG3H5.js} +2 -2
- package/chunks/{chunk-YNYV52Z4.js → chunk-Q2SEZDMU.js} +14 -3
- package/chunks/{chunk-PZG6YNNW.js → chunk-Q7ZF32SN.js} +1 -1
- package/chunks/{chunk-DGB4GDUC.js → chunk-QBCC6DDB.js} +15 -15
- package/chunks/{chunk-SRUCOHM3.js → chunk-QG6AA2EE.js} +6 -6
- package/chunks/{chunk-SD4FTFLM.js → chunk-QLXCD56R.js} +2 -2
- package/chunks/{chunk-OYF5BLWF.js → chunk-QP3UCTAH.js} +1 -1
- package/chunks/{chunk-B5RUUS5Z.js → chunk-R4FAETL7.js} +1 -1
- package/chunks/{chunk-TA5SQUCP.js → chunk-R5ILEKY4.js} +1 -1
- package/chunks/{chunk-2ZZOVOXT.js → chunk-RCVRWBNS.js} +2 -2
- package/chunks/{chunk-DFHGNP5W.js → chunk-RQ2LQ5RB.js} +17 -17
- package/chunks/{chunk-CXL3KGXN.js → chunk-RZQASTZP.js} +7 -7
- package/chunks/{chunk-MRDWUFJ3.js → chunk-SB7HLYND.js} +3 -3
- package/chunks/{chunk-NHVJTPZA.js → chunk-SRJTWTB2.js} +33 -33
- package/chunks/{chunk-B74GMYXF.js → chunk-SVMEPMAZ.js} +30 -30
- package/chunks/{chunk-YK4BICUN.js → chunk-SX5AXFZV.js} +3 -3
- package/chunks/{chunk-WI4BVBZO.js → chunk-SYR2YWGQ.js} +1 -1
- package/chunks/{chunk-SALGNBVH.js → chunk-U2A23HJU.js} +3 -3
- package/chunks/{chunk-V2WRTFQU.js → chunk-UFUFCLDL.js} +5 -5
- package/chunks/{chunk-QKJBBOEM.js → chunk-UKUAUI76.js} +2 -2
- package/chunks/{chunk-ZTD5FNCI.js → chunk-UUPZUWG5.js} +1 -1
- package/chunks/{chunk-UDJURQZ6.js → chunk-VCKGH2UF.js} +3 -3
- package/chunks/{chunk-BXRUYSL6.js → chunk-W3T7KUBS.js} +1 -1
- package/chunks/{chunk-AT74D3S6.js → chunk-WWRYYBOB.js} +12 -3
- package/chunks/{chunk-NHRNNWWS.js → chunk-XAVVXBNC.js} +1 -1
- package/chunks/{chunk-BBH77V6I.js → chunk-XCO4NKA5.js} +1 -1
- package/chunks/{chunk-N2PY5BWY.js → chunk-XJPQ7YBB.js} +1 -1
- package/chunks/{chunk-UQ6BHHFA.js → chunk-XLMO7VIH.js} +4 -4
- package/chunks/{chunk-IKDFLXTG.js → chunk-YB735VNN.js} +4 -4
- package/chunks/{chunk-CLRPG355.js → chunk-YBIK7JBH.js} +3 -3
- package/chunks/{chunk-GT5QP7HM.js → chunk-YLMKYLNH.js} +2 -2
- package/chunks/{chunk-HXLT4YHM.js → chunk-YNFJLMGL.js} +9 -9
- package/chunks/{chunk-KFOL4KHG.js → chunk-YQP3ETMA.js} +8 -8
- package/chunks/{chunk-5KLD2C2A.js → chunk-Z32ZO4N2.js} +1 -1
- package/chunks/{chunk-BO53R5FT.js → chunk-ZEVIKHNQ.js} +3 -3
- package/chunks/{chunk-XQGFM4KU.js → chunk-ZT4BSBY4.js} +5 -5
- package/chunks/{codex-subagent-executor-H23KDM2L.js → codex-subagent-executor-RHTAEFXD.js} +24 -24
- package/chunks/{contextCommand-FTM7H7IU.js → contextCommand-CQFH75BZ.js} +23 -23
- package/chunks/{core-runtime-EOPJ5NTV.js → core-runtime-5SGS3SVD.js} +21 -21
- package/chunks/{create-sub-session-TYQLJBIC.js → create-sub-session-G7VWSOXC.js} +22 -22
- package/chunks/{daemon-git-worktree-guard-XYJOCQD4.js → daemon-git-worktree-guard-IUFLX2O4.js} +21 -21
- package/chunks/{daemon-status-provider-WSERMTQ3.js → daemon-status-provider-6ZTLYNNK.js} +29 -29
- package/chunks/{daemon-trust-policy-2TLIJCGQ.js → daemon-trust-policy-254OGOCS.js} +27 -27
- package/chunks/{daemon-trust-policy-monitor-5WZ6JDKZ.js → daemon-trust-policy-monitor-LGXXCQEP.js} +27 -27
- package/chunks/{deferred-core-runtime-55WMDAXO.js → deferred-core-runtime-7OORZHNH.js} +21 -21
- package/chunks/{edit-UPV3RDKW.js → edit-V46XHSY7.js} +13 -13
- package/chunks/{en-S424EGDF.js → en-VJBVNTY4.js} +13 -0
- package/chunks/{enterPlanMode-IFHOH44O.js → enterPlanMode-ZPTXYQMB.js} +11 -11
- package/chunks/{environment-YEQIXHG6.js → environment-4JNOLQYX.js} +23 -23
- package/chunks/{errors-X2UJSPQL.js → errors-XFCASXKU.js} +23 -23
- package/chunks/{execution-tool-EXIGBLTL.js → execution-tool-45FRLDNU.js} +13 -13
- package/chunks/{execution-worker-6PKEW2P6.js → execution-worker-YUQGSB2E.js} +16 -16
- package/chunks/{exitPlanMode-7NRDPCOW.js → exitPlanMode-IVJH3OXX.js} +11 -11
- package/chunks/{fast-path-I65CU5I2.js → fast-path-XN7NK4CH.js} +2 -2
- package/chunks/{glob-XTHACKUG.js → glob-NHZYR52J.js} +11 -11
- package/chunks/{goal-tools-KL2MBM6T.js → goal-tools-GKFYH6GK.js} +11 -11
- package/chunks/{handleAutoUpdate-AN36IGA3.js → handleAutoUpdate-SLCHZHWT.js} +24 -24
- package/chunks/{i18n-ZOWYH5SP.js → i18n-4AFHUMG2.js} +22 -22
- package/chunks/{initializer-7VQKSVVS.js → initializer-CDFNNZPN.js} +27 -27
- package/chunks/{installationInfo-L6JLTT7O.js → installationInfo-WUQTTZHB.js} +21 -21
- package/chunks/{list-HZEUOA3H.js → list-K2EIWBPE.js} +29 -29
- package/chunks/{llm-VIAH4AFT.js → llm-TLNZYLXJ.js} +53 -53
- package/chunks/{llm-content-generator-AE3URFE7.js → llm-content-generator-OXL4S7KY.js} +3 -3
- package/chunks/{loadedSettingsAdapter-LLENP2KA.js → loadedSettingsAdapter-AUILEI5N.js} +27 -27
- package/chunks/{local-execution-environment-B2UY3HMI.js → local-execution-environment-OSK4IEYP.js} +16 -16
- package/chunks/{loggingContentGenerator-5I5NLC6I.js → loggingContentGenerator-FINQP2Y4.js} +12 -12
- package/chunks/{managed-npm-update-6XAPVQBT.js → managed-npm-update-5DFVQ475.js} +21 -21
- package/chunks/{mcp-PIYFXVT4.js → mcp-ZFQGAZRK.js} +27 -27
- package/chunks/{model-call-collection-7DIS7C2G.js → model-call-collection-3WVMJQ5M.js} +1 -1
- package/chunks/{model-configuration-J7N3CHD5.js → model-configuration-TCLVVCJS.js} +28 -28
- package/chunks/{modelConfigUtils-6YYQJIHD.js → modelConfigUtils-LNDNXLJV.js} +23 -23
- package/chunks/{monitor-5GBFRXN7.js → monitor-DVKR4R64.js} +11 -11
- package/chunks/{nonInteractiveCli-YFE2ILFH.js → nonInteractiveCli-JNH7PLWY.js} +56 -56
- package/chunks/{nonInteractiveToolExecutor-BRFDL2BK.js → nonInteractiveToolExecutor-L2K4LU2P.js} +12 -12
- package/chunks/{notebook-edit-ORYWDEMK.js → notebook-edit-LLJZI52V.js} +12 -12
- package/chunks/{omni-ANTNX2XB.js → omni-4T23JD65.js} +9 -9
- package/chunks/{openaiContentGenerator-AIWBAUPV.js → openaiContentGenerator-Y5AW2S3K.js} +7 -7
- package/chunks/{openaiResponsesContentGenerator-SABJHG34.js → openaiResponsesContentGenerator-VHLQZH36.js} +3 -3
- package/chunks/{processUtils-UAADVXTD.js → processUtils-OGQTTYVO.js} +2 -2
- package/chunks/{prompt-terminal-ledger-I7POO7OK.js → prompt-terminal-ledger-M23SMYZS.js} +22 -22
- package/chunks/{pt-OHD6RIUC.js → pt-7ZZUXID3.js} +13 -0
- package/chunks/{reactive-degrade-VHPS7U44.js → reactive-degrade-CQ7ALF7Z.js} +8 -8
- package/chunks/{read-file-SERUEXAP.js → read-file-TGXV7LRJ.js} +2 -2
- package/chunks/{resumeHistoryUtils-B6GT4AOO.js → resumeHistoryUtils-5UTZ2RZE.js} +26 -26
- package/chunks/{ripGrep-2NTNXBII.js → ripGrep-MJXCIT62.js} +3 -3
- package/chunks/{run-o1-code-serve-WROVR5TA.js → run-o1-code-serve-NFPIVOYJ.js} +32 -32
- package/chunks/{sandboxConfig-UVIRIBNM.js → sandboxConfig-UOAIYSNY.js} +21 -21
- package/chunks/{scheduled-tasks-ILH3HQXS.js → scheduled-tasks-4MX5JTOU.js} +27 -27
- package/chunks/{scheduler-Y2TYB53M.js → scheduler-ZZCLKFWM.js} +23 -23
- package/chunks/{serve-YUVXMXLS.js → serve-DGO6JMBA.js} +27 -27
- package/chunks/{server-K75VXRXS.js → server-N6BPWDPD.js} +57 -57
- package/chunks/{session-KZSKLSES.js → session-4YPHCRFC.js} +57 -57
- package/chunks/{session-attachments-root-MYYIOBTM.js → session-attachments-root-RSL2YSFZ.js} +21 -21
- package/chunks/{session-pr-refresh-33KB2JND.js → session-pr-refresh-RPM3VLUQ.js} +26 -26
- package/chunks/{settings-HVF3IJ2I.js → settings-GSPRMMOT.js} +26 -26
- package/chunks/{shell-PN27CAHY.js → shell-HWIE3YJY.js} +11 -11
- package/chunks/{skill-L6CRUQRR.js → skill-PAU4TRSD.js} +3 -3
- package/chunks/{skill-settings-3Y3SG5O5.js → skill-settings-UFOTSN37.js} +27 -27
- package/chunks/{spawnChannel-XSDXM46P.js → spawnChannel-7IQPYOPP.js} +23 -23
- package/chunks/{standalone-update-3LDGOGBF.js → standalone-update-U7HGJB2O.js} +23 -23
- package/chunks/{startInteractiveUI-GIDY23D3.js → startInteractiveUI-N7XQZNFX.js} +2780 -2438
- package/chunks/{team-create-LFN7HQGC.js → team-create-4QRHJTSV.js} +11 -11
- package/chunks/{team-plan-approval-EFVOZVSP.js → team-plan-approval-U6QCZ3I7.js} +11 -11
- package/chunks/{terminal-image-renderer-GOF6SZEL.js → terminal-image-renderer-QRYTSBBI.js} +21 -21
- package/chunks/{theme-manager-MQ7UIBL2.js → theme-manager-VFNWDS5X.js} +21 -21
- package/chunks/{tool-result-media-NQAPMXYD.js → tool-result-media-NLHN7JZU.js} +9 -9
- package/chunks/{tool-search-JJ7KQQ5S.js → tool-search-QGTV2ON5.js} +2 -2
- package/chunks/{total-session-admission-GTFQVE5J.js → total-session-admission-PUJHR6FR.js} +24 -24
- package/chunks/{trustedFolders-W3AE6S4D.js → trustedFolders-CLVE6DRI.js} +22 -22
- package/chunks/{update-relaunch-VIWAZWCG.js → update-relaunch-IPSN33OR.js} +5 -5
- package/chunks/{updateCheck-EHHLVFT3.js → updateCheck-REWSU2AC.js} +23 -23
- package/chunks/{upload-config-6Z3CPQTV.js → upload-config-W3AEV3WP.js} +6 -6
- package/chunks/{useAutoAcceptIndicator-2BDM2ZLG.js → useAutoAcceptIndicator-2JODXT2R.js} +30 -30
- package/chunks/{validateNonInterActiveAuth-SBUIY7JB.js → validateNonInterActiveAuth-P5P5SI6T.js} +53 -53
- package/chunks/{version-LJX5EMFD.js → version-KCTVVQ6T.js} +1 -1
- package/chunks/{web-fetch-NMKFGF5A.js → web-fetch-3Z32TKL7.js} +2 -2
- package/chunks/{web-search-FT3NC3MF.js → web-search-T7R5BOOJ.js} +7 -7
- package/chunks/{workflow-5WQJENZ6.js → workflow-XFMT6MFA.js} +12 -12
- package/chunks/{workspace-providers-status-U3G2IL7D.js → workspace-providers-status-E2DKABEG.js} +33 -33
- package/chunks/{workspace-registration-store-XGN5KM7D.js → workspace-registration-store-FWU3W65M.js} +1 -1
- package/chunks/{workspace-registry-V7Z7GRVC.js → workspace-registry-EX6Q35BY.js} +24 -24
- package/chunks/{workspace-runtime-coordinator-TEWHWJZI.js → workspace-runtime-coordinator-RIA3VIAY.js} +25 -25
- package/chunks/{workspace-service-JM6TECMD.js → workspace-service-DDCBDEWZ.js} +31 -31
- package/chunks/{workspace-skills-status-ESUOVYAN.js → workspace-skills-status-B4J7CHRJ.js} +30 -30
- package/chunks/{workspace-trust-reconciler-PGZAZMT3.js → workspace-trust-reconciler-HMJYGYMS.js} +30 -30
- package/chunks/{write-file-AHGK3PK4.js → write-file-HVNSGPXF.js} +13 -13
- package/chunks/{zoom-image-IU5DRM6D.js → zoom-image-WLBUTVWK.js} +2 -2
- package/cli.js +12 -12
- package/execution-worker.js +1 -1
- package/export-transcript-document.js +1 -1
- package/locales/en.js +19 -0
- package/locales/pt.js +19 -0
- package/package.json +2 -2
- package/release-notes.json +21 -0
- package/vendor/o1-connect/.lintstagedrc.mjs +7 -0
- package/vendor/o1-connect/README.md +15 -7
- package/vendor/o1-connect/VENDOR.json +4 -4
- package/vendor/o1-connect/lib.d.mts +9 -1
- package/vendor/o1-connect/lib.mjs +444 -861
- package/web-shell/assets/{abnfDiagram-VCTEODGH-PVbSspuv.js → abnfDiagram-VCTEODGH-x0S71JE3.js} +1 -1
- package/web-shell/assets/{arc-VsWasC21.js → arc-Cz75q_IV.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-CQGJih80.js → architectureDiagram-5GKGNRK7-C_dL06R0.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-Df9FTUp0.js → blockDiagram-NRAW4CY4-Vs4QVgsM.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-Cq2wSg56.js → c4Diagram-UCG6FXSJ-CgRK6Jz0.js} +1 -1
- package/web-shell/assets/channel-pE79vspw.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-Chp7JPzQ.js → chunk-2Q5K7J3B-6wq4aY1J.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-gml5kfyF.js → chunk-5VM5RSS4-Bo9m0SiQ.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-By_hW2gT.js → chunk-F27PBJKO-C4L0MjFe.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-8NLL7TjL.js → chunk-G27WJ6UU-BDQDTWF7.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-Bz8c6lcT.js → chunk-JWPE2WC7-DT5_JHb_.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-ZkGZaXXw.js → chunk-LCL6LL3I-1yVri9gU.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-B8iYNlKK.js → chunk-POPQ4Y6H-CryAaWS9.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-DwVdGXs4.js → chunk-SVP7TREG-D0mJDzI7.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-CsCbtvRS.js → chunk-XXDRQBXY-C5ffwsCM.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-0QITOU6l.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-0QITOU6l.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-DwnxQIaV.js → cose-bilkent-JH36ORCC-DHE8Zr-F.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-BvGw520V.js → cynefin-OW5HDTMX-BnL4xySG.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DErV7NUm.js → cynefinDiagram-5FMLGOSQ-C_Vfdoz6.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-DUKJascy.js → dagre-3AP2YEHR-DYpnUd3X.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-DC2A1fK2.js → diagram-S7CK7UJ4-Oar04chd.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-Dv3eUqcO.js → diagram-UQ7AKVKN-CdWEMvLi.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-B_k7qlTN.js → diagram-VSXAHHWV-Bir5CZNv.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-DH7Bx528.js → diagram-VX7I27RA-Bm1O69Id.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-CtOVvMVx.js → diagram-Z3DM3KII-r1AOVQ0e.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-DrkkLJdI.js → ebnfDiagram-PWID7BFC-DevtH3i5.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-C0uNwMNd.js → erDiagram-SSCWMZ5O-SFNjhQIj.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-B3sbye5k.js → flowDiagram-A5DVABFB-DgJ1KxI-.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-D3Ms91Ay.js → ganttDiagram-EL5Y4UJY-oAT0EGwX.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-BHrKQ3iH.js → gitGraphDiagram-WWUBYQGX-vCX1mSs_.js} +1 -1
- package/web-shell/assets/{index-DvuDn2OC.js → index-BEFE9XEw.js} +1 -1
- package/web-shell/assets/{index-BL5DGwqU.js → index-Cqj9WNLr.js} +3 -3
- package/web-shell/assets/{infoDiagram-RXCK75RN-DWyT73_I.js → infoDiagram-RXCK75RN-_NepfAGI.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DybYyMJT.js → ishikawaDiagram-5VMMS53U-Bk3wYLfy.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-D-v8PiYH.js → journeyDiagram-EYS64GPL-DUUHuAKD.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-BUWrNJxx.js → kanban-definition-3QL26DDD-BYaNwMqV.js} +1 -1
- package/web-shell/assets/{layout-DTXwh-A4.js → layout-CH_OWxT7.js} +1 -1
- package/web-shell/assets/{linear-C8iFKFtJ.js → linear-BEpGEQC7.js} +1 -1
- package/web-shell/assets/{mermaid.core-DZcsifbF.js → mermaid.core-DhaXOJnx.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-D1OyJM6T.js → mindmap-definition-FBJOCRG2-Ci7nWQV9.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-b2dM3687.js → pegDiagram-XKGWAZYB-CgNvWMe-.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-n-qlKbdF.js → pieDiagram-E7YTZNPT-4V5XLQqW.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-DbiRHm_L.js → quadrantDiagram-AXDQQJYC-DPdypjO1.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-CAUM_6wo.js → railroadDiagram-O6MQD6OU-BjXTf6pU.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-D_YoabOy.js → requirementDiagram-EFPCY7ZU-DJss5V5T.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C17c2F-F.js → sankeyDiagram-P5KCCOFB-D75QSw7n.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DtEF8IM9.js → sequenceDiagram-WJ2MYXX4-BDhXaEt_.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-CEayyeYf.js → sizeCapture-X5ZJPWSS-fFMG4DvB.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-D34ANpKU.js → stateDiagram-HBIQ2CUA-B1p5bjb3.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-CSbHD2Wn.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-CxuDoZvW.js → swimlanes-XN3QIQJK-bPx7cEqz.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DTnMbaNo.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-ewm8t6bY.js → timeline-definition-24CTP7MA-B3LCneiU.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-J5Luz0Pz.js → vennDiagram-4TSXK5OY-CFmjd4GT.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-g9-5UNQz.js → wardleyDiagram-VM6X3IG4-DXyVTjgN.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-Dy0uNlVX.js → xychartDiagram-S5SC5T6Z-y2w_UoEl.js} +1 -1
- package/web-shell/index.html +1 -1
- package/web-shell/sw.js +1 -1
- package/web-shell/assets/channel-8zIIJdbY.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-BZiDhVAk.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-BZiDhVAk.js +0 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-BkgMHPaH.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-B_dlOslo.js +0 -8
|
@@ -121,7 +121,7 @@ import {
|
|
|
121
121
|
stringify,
|
|
122
122
|
validateGoalProposalReason,
|
|
123
123
|
validateSkillName
|
|
124
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-R5ILEKY4.js";
|
|
125
125
|
import {
|
|
126
126
|
canUseRipgrep
|
|
127
127
|
} from "./chunk-35RKSP4A.js";
|
|
@@ -168,7 +168,7 @@ import {
|
|
|
168
168
|
import {
|
|
169
169
|
buildModelIdContext,
|
|
170
170
|
resolveModelId
|
|
171
|
-
} from "./chunk-
|
|
171
|
+
} from "./chunk-GLKPKVRO.js";
|
|
172
172
|
import {
|
|
173
173
|
glob,
|
|
174
174
|
globSync
|
|
@@ -246,7 +246,7 @@ import {
|
|
|
246
246
|
} from "./chunk-SQX3PXHY.js";
|
|
247
247
|
import {
|
|
248
248
|
isOmniDeliveryActive
|
|
249
|
-
} from "./chunk-
|
|
249
|
+
} from "./chunk-N335XRGH.js";
|
|
250
250
|
import {
|
|
251
251
|
MediaResourceRegistry,
|
|
252
252
|
evaluateMediaPolicyToolCall,
|
|
@@ -336,7 +336,7 @@ import {
|
|
|
336
336
|
import {
|
|
337
337
|
DashScopeOpenAICompatibleProvider,
|
|
338
338
|
selectDashScopeThinkingKnob
|
|
339
|
-
} from "./chunk-
|
|
339
|
+
} from "./chunk-6CNTKWVU.js";
|
|
340
340
|
import {
|
|
341
341
|
childLaunchDepth,
|
|
342
342
|
getCurrentAgentConfiguredToolAllowlist,
|
|
@@ -408,7 +408,7 @@ import {
|
|
|
408
408
|
resolveSavedModelApiKey,
|
|
409
409
|
stripRuntimeSnapshotPrefix,
|
|
410
410
|
validateReasoningCapabilities
|
|
411
|
-
} from "./chunk-
|
|
411
|
+
} from "./chunk-2TURUYOS.js";
|
|
412
412
|
import {
|
|
413
413
|
BaseTokenStorage,
|
|
414
414
|
KeychainTokenStorage
|
|
@@ -508,7 +508,7 @@ import {
|
|
|
508
508
|
updateMCPServerStatus,
|
|
509
509
|
writeLine,
|
|
510
510
|
writeLineSync
|
|
511
|
-
} from "./chunk-
|
|
511
|
+
} from "./chunk-EIPBVTYB.js";
|
|
512
512
|
import {
|
|
513
513
|
Mutex
|
|
514
514
|
} from "./chunk-242JUBPM.js";
|
|
@@ -599,7 +599,7 @@ import {
|
|
|
599
599
|
resolveContentGeneratorConfigWithSources,
|
|
600
600
|
setGeneratorReasoningEffort,
|
|
601
601
|
tokenLimit
|
|
602
|
-
} from "./chunk-
|
|
602
|
+
} from "./chunk-CS7C2L7J.js";
|
|
603
603
|
import {
|
|
604
604
|
getOrCreateMcpDispatcher,
|
|
605
605
|
loadUndici,
|
|
@@ -9933,11 +9933,7 @@ import https from "node:https";
|
|
|
9933
9933
|
import { isIP } from "node:net";
|
|
9934
9934
|
import { Duplex } from "node:stream";
|
|
9935
9935
|
import tls from "node:tls";
|
|
9936
|
-
import {
|
|
9937
|
-
createHash as createHash3,
|
|
9938
|
-
randomBytes as randomBytes3,
|
|
9939
|
-
timingSafeEqual
|
|
9940
|
-
} from "node:crypto";
|
|
9936
|
+
import { createHash as createHash3, randomBytes as randomBytes3, timingSafeEqual } from "node:crypto";
|
|
9941
9937
|
import http5 from "node:http";
|
|
9942
9938
|
import http4 from "node:http";
|
|
9943
9939
|
import http6 from "node:http";
|
|
@@ -9951,6 +9947,7 @@ var PIN = /^sha256\/[A-Za-z0-9+/]{43}=$/;
|
|
|
9951
9947
|
var TOKEN = /^[0-9a-f]{64}$/;
|
|
9952
9948
|
var DEVICE = /^[a-z0-9][a-z0-9_-]{0,31}$/i;
|
|
9953
9949
|
var MAX_PINS = 4;
|
|
9950
|
+
var MAX_HOSTS = 4;
|
|
9954
9951
|
var ConnectionCodeError = class extends Error {
|
|
9955
9952
|
static {
|
|
9956
9953
|
__name(this, "ConnectionCodeError");
|
|
@@ -9979,52 +9976,50 @@ function isLoopbackHost(hostname4) {
|
|
|
9979
9976
|
return hostname4 === "127.0.0.1" || hostname4 === "localhost" || hostname4 === "[::1]";
|
|
9980
9977
|
}
|
|
9981
9978
|
__name(isLoopbackHost, "isLoopbackHost");
|
|
9982
|
-
function
|
|
9983
|
-
if (!c || typeof c !== "object")
|
|
9984
|
-
throw new ConnectionCodeError("the code does not hold a connection");
|
|
9985
|
-
const o = c;
|
|
9979
|
+
function originOf(value, what) {
|
|
9986
9980
|
let url4;
|
|
9987
9981
|
try {
|
|
9988
|
-
url4 = new URL(
|
|
9982
|
+
url4 = new URL(value);
|
|
9989
9983
|
} catch {
|
|
9990
|
-
throw new ConnectionCodeError(
|
|
9984
|
+
throw new ConnectionCodeError(`the proxy ${what} is not a URL`);
|
|
9991
9985
|
}
|
|
9992
9986
|
if (!(url4.protocol === "https:" || url4.protocol === "http:" && isLoopbackHost(url4.hostname))) {
|
|
9993
|
-
throw new ConnectionCodeError(
|
|
9987
|
+
throw new ConnectionCodeError(`the proxy ${what} must be https`);
|
|
9994
9988
|
}
|
|
9995
9989
|
if (url4.pathname !== "/" || url4.search || url4.hash || url4.username || url4.password) {
|
|
9996
|
-
throw new ConnectionCodeError(
|
|
9990
|
+
throw new ConnectionCodeError(`the proxy ${what} must be the proxy's base URL`);
|
|
9997
9991
|
}
|
|
9998
|
-
|
|
9999
|
-
|
|
9992
|
+
return url4.origin;
|
|
9993
|
+
}
|
|
9994
|
+
__name(originOf, "originOf");
|
|
9995
|
+
function validateCode(c) {
|
|
9996
|
+
if (!c || typeof c !== "object") throw new ConnectionCodeError("the code does not hold a connection");
|
|
9997
|
+
const o = c;
|
|
9998
|
+
const url4 = originOf(String(o.url), "URL");
|
|
9999
|
+
if (typeof o.device !== "string" || !DEVICE.test(o.device)) throw new ConnectionCodeError("the device name is not valid");
|
|
10000
10000
|
if (!Array.isArray(o.pins) || o.pins.length === 0 || o.pins.length > MAX_PINS || !o.pins.every((p2) => typeof p2 === "string" && isPin(p2))) {
|
|
10001
10001
|
throw new ConnectionCodeError("the pin list is not valid");
|
|
10002
10002
|
}
|
|
10003
|
-
if (typeof o.token !== "string" || !TOKEN.test(o.token))
|
|
10004
|
-
|
|
10005
|
-
|
|
10006
|
-
|
|
10007
|
-
|
|
10008
|
-
|
|
10009
|
-
|
|
10010
|
-
|
|
10003
|
+
if (typeof o.token !== "string" || !TOKEN.test(o.token)) throw new ConnectionCodeError("the device token is not valid");
|
|
10004
|
+
let urls;
|
|
10005
|
+
if (o.urls !== void 0) {
|
|
10006
|
+
if (!Array.isArray(o.urls) || o.urls.length === 0 || o.urls.some((u2) => typeof u2 !== "string")) throw new ConnectionCodeError("the failover host list is not valid");
|
|
10007
|
+
urls = o.urls.map((u2, i) => originOf(u2, `failover host ${i + 1}`));
|
|
10008
|
+
const all = [url4, ...urls];
|
|
10009
|
+
if (new Set(all).size !== all.length) throw new ConnectionCodeError("the failover host list repeats a host");
|
|
10010
|
+
if (all.length > MAX_HOSTS) throw new ConnectionCodeError(`the code names more than ${MAX_HOSTS} hosts`);
|
|
10011
|
+
}
|
|
10012
|
+
return { url: url4, ...urls === void 0 ? {} : { urls }, device: o.device, pins: [...o.pins], token: o.token };
|
|
10011
10013
|
}
|
|
10012
10014
|
__name(validateCode, "validateCode");
|
|
10013
10015
|
function decodeConnectionCode(s3) {
|
|
10014
10016
|
const text = s3.trim();
|
|
10015
|
-
if (!text.startsWith(CODE_PREFIX))
|
|
10016
|
-
throw new ConnectionCodeError(
|
|
10017
|
-
"this is not an o1-connect code (it starts with o1gw1.)"
|
|
10018
|
-
);
|
|
10017
|
+
if (!text.startsWith(CODE_PREFIX)) throw new ConnectionCodeError("this is not an o1-connect code (it starts with o1gw1.)");
|
|
10019
10018
|
let parsed;
|
|
10020
10019
|
try {
|
|
10021
|
-
parsed = JSON.parse(
|
|
10022
|
-
Buffer.from(text.slice(CODE_PREFIX.length), "base64url").toString("utf8")
|
|
10023
|
-
);
|
|
10020
|
+
parsed = JSON.parse(Buffer.from(text.slice(CODE_PREFIX.length), "base64url").toString("utf8"));
|
|
10024
10021
|
} catch {
|
|
10025
|
-
throw new ConnectionCodeError(
|
|
10026
|
-
"the code is damaged: copy it again from the console"
|
|
10027
|
-
);
|
|
10022
|
+
throw new ConnectionCodeError("the code is damaged: copy it again from the console");
|
|
10028
10023
|
}
|
|
10029
10024
|
return validateCode(parsed);
|
|
10030
10025
|
}
|
|
@@ -10058,33 +10053,28 @@ var PollFormatError = class extends Error {
|
|
|
10058
10053
|
};
|
|
10059
10054
|
var ZERO_SESSION = Buffer.alloc(SESSION_BYTES);
|
|
10060
10055
|
function sessionOf(id) {
|
|
10061
|
-
if (id.length !== SESSION_BYTES)
|
|
10062
|
-
throw new PollFormatError("the session id must be 32 bytes");
|
|
10056
|
+
if (id.length !== SESSION_BYTES) throw new PollFormatError("the session id must be 32 bytes");
|
|
10063
10057
|
return id;
|
|
10064
10058
|
}
|
|
10065
10059
|
__name(sessionOf, "sessionOf");
|
|
10066
10060
|
function requestSession(id) {
|
|
10067
|
-
if (sessionOf(id).equals(ZERO_SESSION))
|
|
10068
|
-
throw new PollFormatError("the session id must not be all zero");
|
|
10061
|
+
if (sessionOf(id).equals(ZERO_SESSION)) throw new PollFormatError("the session id must not be all zero");
|
|
10069
10062
|
return id;
|
|
10070
10063
|
}
|
|
10071
10064
|
__name(requestSession, "requestSession");
|
|
10072
10065
|
function toU64(n, what) {
|
|
10073
|
-
if (!Number.isSafeInteger(n) || n < 0)
|
|
10074
|
-
throw new PollFormatError(`${what} is out of range`);
|
|
10066
|
+
if (!Number.isSafeInteger(n) || n < 0) throw new PollFormatError(`${what} is out of range`);
|
|
10075
10067
|
return BigInt(n);
|
|
10076
10068
|
}
|
|
10077
10069
|
__name(toU64, "toU64");
|
|
10078
10070
|
function fromU64(b2, at2, what) {
|
|
10079
10071
|
const v2 = b2.readBigUInt64BE(at2);
|
|
10080
|
-
if (v2 > BigInt(Number.MAX_SAFE_INTEGER))
|
|
10081
|
-
throw new PollFormatError(`${what} is out of range`);
|
|
10072
|
+
if (v2 > BigInt(Number.MAX_SAFE_INTEGER)) throw new PollFormatError(`${what} is out of range`);
|
|
10082
10073
|
return Number(v2);
|
|
10083
10074
|
}
|
|
10084
10075
|
__name(fromU64, "fromU64");
|
|
10085
10076
|
function encodeRequest(r) {
|
|
10086
|
-
if (r.data.length > MAX_UP)
|
|
10087
|
-
throw new PollFormatError("the request carries too much data");
|
|
10077
|
+
if (r.data.length > MAX_UP) throw new PollFormatError("the request carries too much data");
|
|
10088
10078
|
const head = Buffer.alloc(REQUEST_HEAD);
|
|
10089
10079
|
head[0] = POLL_VERSION;
|
|
10090
10080
|
requestSession(r.session).copy(head, 1);
|
|
@@ -10095,12 +10085,9 @@ function encodeRequest(r) {
|
|
|
10095
10085
|
}
|
|
10096
10086
|
__name(encodeRequest, "encodeRequest");
|
|
10097
10087
|
function decodeResponse(b2) {
|
|
10098
|
-
if (b2.length < RESPONSE_HEAD)
|
|
10099
|
-
|
|
10100
|
-
if (b2
|
|
10101
|
-
throw new PollFormatError("the answer is not a tunnel's");
|
|
10102
|
-
if (b2.length - RESPONSE_HEAD > MAX_DOWN)
|
|
10103
|
-
throw new PollFormatError("the answer carries too much data");
|
|
10088
|
+
if (b2.length < RESPONSE_HEAD) throw new PollFormatError("the answer is too short");
|
|
10089
|
+
if (b2[0] !== POLL_VERSION) throw new PollFormatError("the answer is not a tunnel's");
|
|
10090
|
+
if (b2.length - RESPONSE_HEAD > MAX_DOWN) throw new PollFormatError("the answer carries too much data");
|
|
10104
10091
|
return {
|
|
10105
10092
|
session: Buffer.from(b2.subarray(1, 33)),
|
|
10106
10093
|
downOffset: fromU64(b2, 33, "downOffset"),
|
|
@@ -10111,9 +10098,7 @@ function decodeResponse(b2) {
|
|
|
10111
10098
|
__name(decodeResponse, "decodeResponse");
|
|
10112
10099
|
var LOOPBACK = /^(localhost|127(?:\.\d{1,3}){3}|::1)$/i;
|
|
10113
10100
|
function bypassed(host, list2) {
|
|
10114
|
-
return list2.split(",").map((s3) => s3.trim().toLowerCase()).filter(Boolean).some(
|
|
10115
|
-
(entry) => entry === "*" || entry === host || entry.startsWith(".") && host.endsWith(entry)
|
|
10116
|
-
);
|
|
10101
|
+
return list2.split(",").map((s3) => s3.trim().toLowerCase()).filter(Boolean).some((entry) => entry === "*" || entry === host || entry.startsWith(".") && host.endsWith(entry));
|
|
10117
10102
|
}
|
|
10118
10103
|
__name(bypassed, "bypassed");
|
|
10119
10104
|
function proxyFor(target, env = process.env) {
|
|
@@ -10128,16 +10113,13 @@ function proxyFor(target, env = process.env) {
|
|
|
10128
10113
|
} catch {
|
|
10129
10114
|
throw new Error("HTTPS_PROXY is not a valid URL");
|
|
10130
10115
|
}
|
|
10131
|
-
if (url4.protocol !== "http:")
|
|
10132
|
-
throw new Error("HTTPS_PROXY must be an http:// proxy URL");
|
|
10116
|
+
if (url4.protocol !== "http:") throw new Error("HTTPS_PROXY must be an http:// proxy URL");
|
|
10133
10117
|
const user = decodeURIComponent(url4.username);
|
|
10134
10118
|
const pass = decodeURIComponent(url4.password);
|
|
10135
10119
|
return {
|
|
10136
10120
|
host: url4.hostname.replace(/^\[|\]$/g, ""),
|
|
10137
10121
|
port: Number(url4.port || 80),
|
|
10138
|
-
...user || pass ? {
|
|
10139
|
-
authorization: `Basic ${Buffer.from(`${user}:${pass}`).toString("base64")}`
|
|
10140
|
-
} : {}
|
|
10122
|
+
...user || pass ? { authorization: `Basic ${Buffer.from(`${user}:${pass}`).toString("base64")}` } : {}
|
|
10141
10123
|
};
|
|
10142
10124
|
}
|
|
10143
10125
|
__name(proxyFor, "proxyFor");
|
|
@@ -10146,9 +10128,7 @@ var ProxyRefusedError = class extends Error {
|
|
|
10146
10128
|
__name(this, "ProxyRefusedError");
|
|
10147
10129
|
}
|
|
10148
10130
|
constructor(status) {
|
|
10149
|
-
super(
|
|
10150
|
-
status === 407 ? "the network's proxy needs credentials (HTTP 407): put them in HTTPS_PROXY as http://user:password@host:port" : `the network's proxy refused the connection (HTTP ${status})`
|
|
10151
|
-
);
|
|
10131
|
+
super(status === 407 ? "the network's proxy needs credentials (HTTP 407): put them in HTTPS_PROXY as http://user:password@host:port" : `the network's proxy refused the connection (HTTP ${status})`);
|
|
10152
10132
|
this.status = status;
|
|
10153
10133
|
}
|
|
10154
10134
|
status;
|
|
@@ -10161,10 +10141,7 @@ function connectVia(route, host, port) {
|
|
|
10161
10141
|
method: "CONNECT",
|
|
10162
10142
|
path: authority,
|
|
10163
10143
|
agent: false,
|
|
10164
|
-
headers: {
|
|
10165
|
-
Host: authority,
|
|
10166
|
-
...route.authorization ? { "Proxy-Authorization": route.authorization } : {}
|
|
10167
|
-
}
|
|
10144
|
+
headers: { Host: authority, ...route.authorization ? { "Proxy-Authorization": route.authorization } : {} }
|
|
10168
10145
|
});
|
|
10169
10146
|
const socket = new Promise((resolve34, reject) => {
|
|
10170
10147
|
req.on("connect", (res, sock, head) => {
|
|
@@ -10228,8 +10205,7 @@ var FrameParser = class {
|
|
|
10228
10205
|
const b0 = this.buf[0];
|
|
10229
10206
|
const b1 = this.buf[1];
|
|
10230
10207
|
if (b0 & 112) throw new WsProtocolError("reserved bits set");
|
|
10231
|
-
if (b1 & 128)
|
|
10232
|
-
throw new WsProtocolError("a server frame must not be masked");
|
|
10208
|
+
if (b1 & 128) throw new WsProtocolError("a server frame must not be masked");
|
|
10233
10209
|
const opcode = b0 & 15;
|
|
10234
10210
|
const fin = (b0 & 128) !== 0;
|
|
10235
10211
|
let n = b1 & 127;
|
|
@@ -10241,14 +10217,12 @@ var FrameParser = class {
|
|
|
10241
10217
|
} else if (n === 127) {
|
|
10242
10218
|
if (this.buf.length < 10) return out;
|
|
10243
10219
|
const big = this.buf.readBigUInt64BE(2);
|
|
10244
|
-
if (big > BigInt(this.maxPayload))
|
|
10245
|
-
throw new WsProtocolError("frame too large");
|
|
10220
|
+
if (big > BigInt(this.maxPayload)) throw new WsProtocolError("frame too large");
|
|
10246
10221
|
n = Number(big);
|
|
10247
10222
|
off = 10;
|
|
10248
10223
|
}
|
|
10249
10224
|
if (n > this.maxPayload) throw new WsProtocolError("frame too large");
|
|
10250
|
-
if (opcode >= 8 && (n > 125 || !fin))
|
|
10251
|
-
throw new WsProtocolError("bad control frame");
|
|
10225
|
+
if (opcode >= 8 && (n > 125 || !fin)) throw new WsProtocolError("bad control frame");
|
|
10252
10226
|
if (this.buf.length < off + n) return out;
|
|
10253
10227
|
out.push({ fin, opcode, payload: this.buf.subarray(off, off + n) });
|
|
10254
10228
|
this.buf = this.buf.subarray(off + n);
|
|
@@ -10260,9 +10234,7 @@ var TunnelBlockedError = class extends Error {
|
|
|
10260
10234
|
__name(this, "TunnelBlockedError");
|
|
10261
10235
|
}
|
|
10262
10236
|
constructor(status, detail) {
|
|
10263
|
-
super(
|
|
10264
|
-
detail ? `tunnel blocked: ${detail}` : `tunnel blocked (HTTP ${status})`
|
|
10265
|
-
);
|
|
10237
|
+
super(detail ? `tunnel blocked: ${detail}` : `tunnel blocked (HTTP ${status})`);
|
|
10266
10238
|
this.status = status;
|
|
10267
10239
|
}
|
|
10268
10240
|
status;
|
|
@@ -10315,20 +10287,13 @@ function openWebSocket(url4, opts) {
|
|
|
10315
10287
|
...opts.userAgent ? { "User-Agent": opts.userAgent } : {}
|
|
10316
10288
|
}
|
|
10317
10289
|
};
|
|
10318
|
-
const outerTls = {
|
|
10319
|
-
...isIP(hostname4) ? {} : { servername: hostname4 },
|
|
10320
|
-
rejectUnauthorized: false,
|
|
10321
|
-
ca: opts.ca ?? defaultCa()
|
|
10322
|
-
};
|
|
10290
|
+
const outerTls = { ...isIP(hostname4) ? {} : { servername: hostname4 }, rejectUnauthorized: false, ca: opts.ca ?? defaultCa() };
|
|
10323
10291
|
const upgrade = /* @__PURE__ */ __name((tunnelled) => {
|
|
10324
10292
|
if (done) {
|
|
10325
10293
|
tunnelled?.destroy();
|
|
10326
10294
|
return;
|
|
10327
10295
|
}
|
|
10328
|
-
const r = tunnelled ? http2.request({
|
|
10329
|
-
...common,
|
|
10330
|
-
createConnection: /* @__PURE__ */ __name(() => secure ? tls.connect({ ...outerTls, socket: tunnelled }) : tunnelled, "createConnection")
|
|
10331
|
-
}) : secure ? https.request({ ...common, ...outerTls, agent: false }) : http2.request({ ...common, agent: false });
|
|
10296
|
+
const r = tunnelled ? http2.request({ ...common, createConnection: /* @__PURE__ */ __name(() => secure ? tls.connect({ ...outerTls, socket: tunnelled }) : tunnelled, "createConnection") }) : secure ? https.request({ ...common, ...outerTls, agent: false }) : http2.request({ ...common, agent: false });
|
|
10332
10297
|
req = r;
|
|
10333
10298
|
r.on("response", (res) => {
|
|
10334
10299
|
res.resume();
|
|
@@ -10345,11 +10310,7 @@ function openWebSocket(url4, opts) {
|
|
|
10345
10310
|
const tlsSock = sock;
|
|
10346
10311
|
const outer = !secure ? "plain" : tlsSock.authorized ? "verified" : "intercepted";
|
|
10347
10312
|
const outerError = secure && !tlsSock.authorized && tlsSock.authorizationError ? String(tlsSock.authorizationError) : void 0;
|
|
10348
|
-
settle(null, {
|
|
10349
|
-
stream: wrap(sock, head, opts.pingMs ?? 3e4),
|
|
10350
|
-
outer,
|
|
10351
|
-
...outerError ? { outerError } : {}
|
|
10352
|
-
});
|
|
10313
|
+
settle(null, { stream: wrap(sock, head, opts.pingMs ?? 3e4), outer, ...outerError ? { outerError } : {} });
|
|
10353
10314
|
});
|
|
10354
10315
|
r.end();
|
|
10355
10316
|
}, "upgrade");
|
|
@@ -10366,12 +10327,7 @@ function openWebSocket(url4, opts) {
|
|
|
10366
10327
|
}
|
|
10367
10328
|
const via = connectVia(route, hostname4, port);
|
|
10368
10329
|
connecting.abort = via.abort;
|
|
10369
|
-
via.socket.then(
|
|
10370
|
-
upgrade,
|
|
10371
|
-
(err) => settle(
|
|
10372
|
-
err instanceof ProxyRefusedError ? new TunnelBlockedError(err.status, err.message) : err
|
|
10373
|
-
)
|
|
10374
|
-
);
|
|
10330
|
+
via.socket.then(upgrade, (err) => settle(err instanceof ProxyRefusedError ? new TunnelBlockedError(err.status, err.message) : err));
|
|
10375
10331
|
});
|
|
10376
10332
|
}
|
|
10377
10333
|
__name(openWebSocket, "openWebSocket");
|
|
@@ -10410,9 +10366,7 @@ function wrap(sock, head, pingMs) {
|
|
|
10410
10366
|
try {
|
|
10411
10367
|
frames = parser2.push(chunk);
|
|
10412
10368
|
} catch (err) {
|
|
10413
|
-
failFrame(
|
|
10414
|
-
err instanceof WsProtocolError ? err : new WsProtocolError(String(err))
|
|
10415
|
-
);
|
|
10369
|
+
failFrame(err instanceof WsProtocolError ? err : new WsProtocolError(String(err)));
|
|
10416
10370
|
return;
|
|
10417
10371
|
}
|
|
10418
10372
|
for (const f2 of frames) {
|
|
@@ -10467,24 +10421,14 @@ function isBusy(r) {
|
|
|
10467
10421
|
}
|
|
10468
10422
|
__name(isBusy, "isBusy");
|
|
10469
10423
|
function settings(o) {
|
|
10470
|
-
return {
|
|
10471
|
-
timeoutMs: o.timeoutMs ?? 15e3,
|
|
10472
|
-
waitMs: o.waitMs ?? POLL_WAIT_MS,
|
|
10473
|
-
retryForMs: o.retryForMs ?? 3e4,
|
|
10474
|
-
busyForMs: o.busyForMs ?? 3e5,
|
|
10475
|
-
coalesceMs: o.coalesceMs ?? 5
|
|
10476
|
-
};
|
|
10424
|
+
return { timeoutMs: o.timeoutMs ?? 15e3, waitMs: o.waitMs ?? POLL_WAIT_MS, retryForMs: o.retryForMs ?? 3e4, busyForMs: o.busyForMs ?? 3e5, coalesceMs: o.coalesceMs ?? 5 };
|
|
10477
10425
|
}
|
|
10478
10426
|
__name(settings, "settings");
|
|
10479
10427
|
function makeExchanger(base, o) {
|
|
10480
10428
|
const secure = base.protocol === "https:";
|
|
10481
10429
|
const hostname4 = base.hostname.replace(/^\[|\]$/g, "");
|
|
10482
10430
|
const port = Number(base.port || (secure ? 443 : 80));
|
|
10483
|
-
const outerTls = {
|
|
10484
|
-
...isIP2(hostname4) ? {} : { servername: hostname4 },
|
|
10485
|
-
rejectUnauthorized: false,
|
|
10486
|
-
ca: o.ca ?? defaultCa()
|
|
10487
|
-
};
|
|
10431
|
+
const outerTls = { ...isIP2(hostname4) ? {} : { servername: hostname4 }, rejectUnauthorized: false, ca: o.ca ?? defaultCa() };
|
|
10488
10432
|
const route = proxyFor(base, o.env ?? process.env);
|
|
10489
10433
|
const connectMs = o.timeoutMs ?? 15e3;
|
|
10490
10434
|
const agent = secure ? new https2.Agent({ keepAlive: true, maxSockets: 2, ...outerTls }) : new http3.Agent({ keepAlive: true, maxSockets: 2 });
|
|
@@ -10506,63 +10450,44 @@ function makeExchanger(base, o) {
|
|
|
10506
10450
|
via.abort();
|
|
10507
10451
|
}, connectMs);
|
|
10508
10452
|
via.socket.then(
|
|
10509
|
-
(sock) => once(
|
|
10510
|
-
|
|
10511
|
-
secure ? tls2.connect({ ...outerTls, socket: sock }) : sock
|
|
10512
|
-
),
|
|
10513
|
-
(err) => once(
|
|
10514
|
-
err instanceof ProxyRefusedError ? new TunnelBlockedError(err.status, err.message) : err
|
|
10515
|
-
)
|
|
10453
|
+
(sock) => once(null, secure ? tls2.connect({ ...outerTls, socket: sock }) : sock),
|
|
10454
|
+
(err) => once(err instanceof ProxyRefusedError ? new TunnelBlockedError(err.status, err.message) : err)
|
|
10516
10455
|
);
|
|
10517
10456
|
return void 0;
|
|
10518
10457
|
};
|
|
10519
10458
|
}
|
|
10520
10459
|
const post = /* @__PURE__ */ __name((body, timeoutMs) => new Promise((resolve34, reject) => {
|
|
10521
|
-
const req = (secure ? https2 : http3).request(
|
|
10522
|
-
|
|
10523
|
-
|
|
10524
|
-
|
|
10525
|
-
|
|
10526
|
-
|
|
10527
|
-
|
|
10528
|
-
|
|
10529
|
-
|
|
10530
|
-
|
|
10531
|
-
|
|
10532
|
-
|
|
10533
|
-
|
|
10460
|
+
const req = (secure ? https2 : http3).request({
|
|
10461
|
+
host: hostname4,
|
|
10462
|
+
port,
|
|
10463
|
+
path: POLL_PATH,
|
|
10464
|
+
method: "POST",
|
|
10465
|
+
agent,
|
|
10466
|
+
...secure ? outerTls : {},
|
|
10467
|
+
headers: {
|
|
10468
|
+
Host: base.host,
|
|
10469
|
+
"Content-Type": "application/octet-stream",
|
|
10470
|
+
"Content-Length": String(body.length),
|
|
10471
|
+
...o.userAgent ? { "User-Agent": o.userAgent } : {}
|
|
10472
|
+
}
|
|
10473
|
+
}, (res) => {
|
|
10474
|
+
const sock = res.socket;
|
|
10475
|
+
const outer = !secure ? "plain" : sock?.authorized ? "verified" : "intercepted";
|
|
10476
|
+
const outerError = secure && !sock?.authorized && sock?.authorizationError ? String(sock.authorizationError) : void 0;
|
|
10477
|
+
const chunks = [];
|
|
10478
|
+
let size = 0;
|
|
10479
|
+
res.on("data", (c) => {
|
|
10480
|
+
size += c.length;
|
|
10481
|
+
if (size > MAX_ANSWER) {
|
|
10482
|
+
req.destroy(new Error("tunnel answer too large"));
|
|
10483
|
+
return;
|
|
10534
10484
|
}
|
|
10535
|
-
|
|
10536
|
-
|
|
10537
|
-
|
|
10538
|
-
|
|
10539
|
-
|
|
10540
|
-
|
|
10541
|
-
let size = 0;
|
|
10542
|
-
res.on("data", (c) => {
|
|
10543
|
-
size += c.length;
|
|
10544
|
-
if (size > MAX_ANSWER) {
|
|
10545
|
-
req.destroy(new Error("tunnel answer too large"));
|
|
10546
|
-
return;
|
|
10547
|
-
}
|
|
10548
|
-
chunks.push(c);
|
|
10549
|
-
});
|
|
10550
|
-
res.on(
|
|
10551
|
-
"end",
|
|
10552
|
-
() => resolve34({
|
|
10553
|
-
status: res.statusCode ?? 0,
|
|
10554
|
-
body: Buffer.concat(chunks),
|
|
10555
|
-
outer,
|
|
10556
|
-
...outerError ? { outerError } : {}
|
|
10557
|
-
})
|
|
10558
|
-
);
|
|
10559
|
-
res.on("error", reject);
|
|
10560
|
-
}
|
|
10561
|
-
);
|
|
10562
|
-
req.setTimeout(
|
|
10563
|
-
timeoutMs,
|
|
10564
|
-
() => req.destroy(new Error("tunnel exchange timeout"))
|
|
10565
|
-
);
|
|
10485
|
+
chunks.push(c);
|
|
10486
|
+
});
|
|
10487
|
+
res.on("end", () => resolve34({ status: res.statusCode ?? 0, body: Buffer.concat(chunks), outer, ...outerError ? { outerError } : {} }));
|
|
10488
|
+
res.on("error", reject);
|
|
10489
|
+
});
|
|
10490
|
+
req.setTimeout(timeoutMs, () => req.destroy(new Error("tunnel exchange timeout")));
|
|
10566
10491
|
req.on("error", reject);
|
|
10567
10492
|
req.end(body);
|
|
10568
10493
|
}), "post");
|
|
@@ -10621,24 +10546,11 @@ var PollStream = class {
|
|
|
10621
10546
|
await delay2(this.o.coalesceMs);
|
|
10622
10547
|
while (!this.closed && this.pendingSize > 0) {
|
|
10623
10548
|
const data = this.takePending();
|
|
10624
|
-
await this.exchange(
|
|
10625
|
-
{
|
|
10626
|
-
session: this.session,
|
|
10627
|
-
upOffset: this.sent,
|
|
10628
|
-
ack: this.received,
|
|
10629
|
-
close: false,
|
|
10630
|
-
poll: false,
|
|
10631
|
-
open: false,
|
|
10632
|
-
data
|
|
10633
|
-
},
|
|
10634
|
-
this.o.timeoutMs
|
|
10635
|
-
);
|
|
10549
|
+
await this.exchange({ session: this.session, upOffset: this.sent, ack: this.received, close: false, poll: false, open: false, data }, this.o.timeoutMs);
|
|
10636
10550
|
this.sent += data.length;
|
|
10637
|
-
while (this.held.length > 0 && this.pendingSize <= MAX_UP)
|
|
10638
|
-
this.held.shift()();
|
|
10551
|
+
while (this.held.length > 0 && this.pendingSize <= MAX_UP) this.held.shift()();
|
|
10639
10552
|
}
|
|
10640
|
-
if (this.finishing && !this.closed && this.pendingSize === 0)
|
|
10641
|
-
this.shutdown(true);
|
|
10553
|
+
if (this.finishing && !this.closed && this.pendingSize === 0) this.shutdown(true);
|
|
10642
10554
|
} catch (err) {
|
|
10643
10555
|
this.fail(err);
|
|
10644
10556
|
} finally {
|
|
@@ -10657,21 +10569,9 @@ var PollStream = class {
|
|
|
10657
10569
|
async downLoop() {
|
|
10658
10570
|
try {
|
|
10659
10571
|
while (!this.closed) {
|
|
10660
|
-
const r = await this.exchange(
|
|
10661
|
-
{
|
|
10662
|
-
session: this.session,
|
|
10663
|
-
upOffset: this.sent,
|
|
10664
|
-
ack: this.received,
|
|
10665
|
-
close: false,
|
|
10666
|
-
poll: true,
|
|
10667
|
-
open: false,
|
|
10668
|
-
data: EMPTY
|
|
10669
|
-
},
|
|
10670
|
-
this.o.waitMs + this.o.timeoutMs
|
|
10671
|
-
);
|
|
10572
|
+
const r = await this.exchange({ session: this.session, upOffset: this.sent, ack: this.received, close: false, poll: true, open: false, data: EMPTY }, this.o.waitMs + this.o.timeoutMs);
|
|
10672
10573
|
if (this.closed) return;
|
|
10673
|
-
if (r.downOffset > this.received)
|
|
10674
|
-
throw new Error("tunnel stream out of order");
|
|
10574
|
+
if (r.downOffset > this.received) throw new Error("tunnel stream out of order");
|
|
10675
10575
|
const skip = this.received - r.downOffset;
|
|
10676
10576
|
if (skip < r.data.length) {
|
|
10677
10577
|
const fresh = Buffer.from(r.data.subarray(skip));
|
|
@@ -10705,10 +10605,8 @@ var PollStream = class {
|
|
|
10705
10605
|
if (FATAL_STATUS.has(r.status)) throw failure;
|
|
10706
10606
|
busy = isBusy(r);
|
|
10707
10607
|
} catch (err) {
|
|
10708
|
-
if (err instanceof SessionGoneError || err instanceof PollFormatError)
|
|
10709
|
-
|
|
10710
|
-
if (err instanceof TunnelBlockedError && FATAL_STATUS.has(err.status))
|
|
10711
|
-
throw err;
|
|
10608
|
+
if (err instanceof SessionGoneError || err instanceof PollFormatError) throw err;
|
|
10609
|
+
if (err instanceof TunnelBlockedError && FATAL_STATUS.has(err.status)) throw err;
|
|
10712
10610
|
failure = err;
|
|
10713
10611
|
}
|
|
10714
10612
|
if (busy) {
|
|
@@ -10737,15 +10635,7 @@ var PollStream = class {
|
|
|
10737
10635
|
if (this.closed) return;
|
|
10738
10636
|
this.closed = true;
|
|
10739
10637
|
if (sendClose) {
|
|
10740
|
-
const bye = encodeRequest({
|
|
10741
|
-
session: this.session,
|
|
10742
|
-
upOffset: this.sent,
|
|
10743
|
-
ack: this.received,
|
|
10744
|
-
close: true,
|
|
10745
|
-
poll: false,
|
|
10746
|
-
open: false,
|
|
10747
|
-
data: EMPTY
|
|
10748
|
-
});
|
|
10638
|
+
const bye = encodeRequest({ session: this.session, upOffset: this.sent, ack: this.received, close: true, poll: false, open: false, data: EMPTY });
|
|
10749
10639
|
this.ex.post(bye, 5e3).catch(() => void 0).finally(() => this.ex.destroy());
|
|
10750
10640
|
} else {
|
|
10751
10641
|
this.ex.destroy();
|
|
@@ -10756,15 +10646,7 @@ var PollStream = class {
|
|
|
10756
10646
|
async function openPollStream(base, opts = {}) {
|
|
10757
10647
|
const ex = makeExchanger(base, opts);
|
|
10758
10648
|
const session = randomBytes2(SESSION_BYTES);
|
|
10759
|
-
const open22 = encodeRequest({
|
|
10760
|
-
session,
|
|
10761
|
-
upOffset: 0,
|
|
10762
|
-
ack: 0,
|
|
10763
|
-
close: false,
|
|
10764
|
-
poll: false,
|
|
10765
|
-
open: true,
|
|
10766
|
-
data: EMPTY
|
|
10767
|
-
});
|
|
10649
|
+
const open22 = encodeRequest({ session, upOffset: 0, ack: 0, close: false, poll: false, open: true, data: EMPTY });
|
|
10768
10650
|
const o = settings(opts);
|
|
10769
10651
|
let first;
|
|
10770
10652
|
let firstFailure = 0;
|
|
@@ -10794,17 +10676,10 @@ async function openPollStream(base, opts = {}) {
|
|
|
10794
10676
|
}
|
|
10795
10677
|
if (!answered?.equals(session)) {
|
|
10796
10678
|
ex.destroy();
|
|
10797
|
-
throw new TunnelBlockedError(
|
|
10798
|
-
200,
|
|
10799
|
-
"the answer is not the tunnel's (a filter's page?)"
|
|
10800
|
-
);
|
|
10679
|
+
throw new TunnelBlockedError(200, "the answer is not the tunnel's (a filter's page?)");
|
|
10801
10680
|
}
|
|
10802
10681
|
const stream = new PollStream(ex, session, opts).duplex;
|
|
10803
|
-
return {
|
|
10804
|
-
stream,
|
|
10805
|
-
outer: first.outer,
|
|
10806
|
-
...first.outerError ? { outerError: first.outerError } : {}
|
|
10807
|
-
};
|
|
10682
|
+
return { stream, outer: first.outer, ...first.outerError ? { outerError: first.outerError } : {} };
|
|
10808
10683
|
}
|
|
10809
10684
|
__name(openPollStream, "openPollStream");
|
|
10810
10685
|
var IdentityMismatchError = class extends Error {
|
|
@@ -10818,29 +10693,12 @@ var IdentityMismatchError = class extends Error {
|
|
|
10818
10693
|
received;
|
|
10819
10694
|
};
|
|
10820
10695
|
async function connectInner(base, pins, opts = {}) {
|
|
10821
|
-
const outerOpts = {
|
|
10822
|
-
|
|
10823
|
-
|
|
10824
|
-
userAgent: opts.userAgent,
|
|
10825
|
-
env: opts.env
|
|
10826
|
-
};
|
|
10827
|
-
const ws2 = opts.transport === "post" ? await openPollStream(base, outerOpts) : await openWebSocket(new URL(TUNNEL_PATH, base), {
|
|
10828
|
-
protocol: TUNNEL_PROTOCOL,
|
|
10829
|
-
...outerOpts
|
|
10830
|
-
});
|
|
10831
|
-
opts.onOuter?.({
|
|
10832
|
-
outer: ws2.outer,
|
|
10833
|
-
...ws2.outerError ? { outerError: ws2.outerError } : {}
|
|
10834
|
-
});
|
|
10696
|
+
const outerOpts = { timeoutMs: opts.timeoutMs, ca: opts.ca, userAgent: opts.userAgent, env: opts.env };
|
|
10697
|
+
const ws2 = opts.transport === "post" ? await openPollStream(base, outerOpts) : await openWebSocket(new URL(TUNNEL_PATH, base), { protocol: TUNNEL_PROTOCOL, ...outerOpts });
|
|
10698
|
+
opts.onOuter?.({ outer: ws2.outer, ...ws2.outerError ? { outerError: ws2.outerError } : {} });
|
|
10835
10699
|
const preferred = pins.at(-1);
|
|
10836
10700
|
const servername = preferred && isPin(preferred) ? sniOfPin(preferred) : TUNNEL_SERVERNAME;
|
|
10837
|
-
const socket = tls3.connect({
|
|
10838
|
-
socket: ws2.stream,
|
|
10839
|
-
servername,
|
|
10840
|
-
minVersion: "TLSv1.3",
|
|
10841
|
-
rejectUnauthorized: false,
|
|
10842
|
-
ALPNProtocols: ["http/1.1"]
|
|
10843
|
-
});
|
|
10701
|
+
const socket = tls3.connect({ socket: ws2.stream, servername, minVersion: "TLSv1.3", rejectUnauthorized: false, ALPNProtocols: ["http/1.1"] });
|
|
10844
10702
|
ws2.stream.on("close", () => socket.destroy());
|
|
10845
10703
|
ws2.stream.on("end", () => socket.destroy());
|
|
10846
10704
|
ws2.stream.on("error", () => socket.destroy());
|
|
@@ -10865,10 +10723,7 @@ async function connectInner(base, pins, opts = {}) {
|
|
|
10865
10723
|
const onError = /* @__PURE__ */ __name((err) => finish(err), "onError");
|
|
10866
10724
|
const onClose = /* @__PURE__ */ __name(() => finish(new Error("tunnel closed during handshake")), "onClose");
|
|
10867
10725
|
const onSecure = /* @__PURE__ */ __name(() => finish(null), "onSecure");
|
|
10868
|
-
const timer = setTimeout(
|
|
10869
|
-
() => finish(new Error("tunnel handshake timeout")),
|
|
10870
|
-
opts.timeoutMs ?? 15e3
|
|
10871
|
-
);
|
|
10726
|
+
const timer = setTimeout(() => finish(new Error("tunnel handshake timeout")), opts.timeoutMs ?? 15e3);
|
|
10872
10727
|
timer.unref();
|
|
10873
10728
|
socket.on("error", onError);
|
|
10874
10729
|
socket.on("close", onClose);
|
|
@@ -10890,16 +10745,13 @@ async function connectInner(base, pins, opts = {}) {
|
|
|
10890
10745
|
__name(connectInner, "connectInner");
|
|
10891
10746
|
var TUNNEL_AGENT_MAX_SOCKETS = 4;
|
|
10892
10747
|
function canSwitch(err) {
|
|
10893
|
-
if (err instanceof IdentityMismatchError || err instanceof BackoffError)
|
|
10894
|
-
|
|
10895
|
-
if (err instanceof TunnelBlockedError && (err.status === 429 || err.status === 503))
|
|
10896
|
-
return false;
|
|
10748
|
+
if (err instanceof IdentityMismatchError || err instanceof BackoffError) return false;
|
|
10749
|
+
if (err instanceof TunnelBlockedError && (err.status === 429 || err.status === 503)) return false;
|
|
10897
10750
|
return true;
|
|
10898
10751
|
}
|
|
10899
10752
|
__name(canSwitch, "canSwitch");
|
|
10900
10753
|
function reasonOf(err) {
|
|
10901
|
-
if (err instanceof TunnelBlockedError)
|
|
10902
|
-
return err.status === 101 || err.status === 200 ? err.message : `HTTP ${err.status}`;
|
|
10754
|
+
if (err instanceof TunnelBlockedError) return err.status === 101 || err.status === 200 ? err.message : `HTTP ${err.status}`;
|
|
10903
10755
|
return err instanceof Error ? err.message : String(err);
|
|
10904
10756
|
}
|
|
10905
10757
|
__name(reasonOf, "reasonOf");
|
|
@@ -10919,11 +10771,7 @@ var TunnelAgent = class extends http4.Agent {
|
|
|
10919
10771
|
__name(this, "TunnelAgent");
|
|
10920
10772
|
}
|
|
10921
10773
|
constructor(target, backoff, events = {}) {
|
|
10922
|
-
super({
|
|
10923
|
-
keepAlive: true,
|
|
10924
|
-
maxSockets: TUNNEL_AGENT_MAX_SOCKETS,
|
|
10925
|
-
maxFreeSockets: TUNNEL_AGENT_MAX_SOCKETS
|
|
10926
|
-
});
|
|
10774
|
+
super({ keepAlive: true, maxSockets: TUNNEL_AGENT_MAX_SOCKETS, maxFreeSockets: TUNNEL_AGENT_MAX_SOCKETS });
|
|
10927
10775
|
this.target = target;
|
|
10928
10776
|
this.backoff = backoff;
|
|
10929
10777
|
this.events = events;
|
|
@@ -10931,6 +10779,7 @@ var TunnelAgent = class extends http4.Agent {
|
|
|
10931
10779
|
this.using = this.mode === "post" ? "post" : "ws";
|
|
10932
10780
|
this.connect = target.connect ?? connectInner;
|
|
10933
10781
|
this.pins = [...target.pins];
|
|
10782
|
+
this.targets = [target.url, ...target.urls ?? []];
|
|
10934
10783
|
this.on("free", () => this.drain());
|
|
10935
10784
|
}
|
|
10936
10785
|
target;
|
|
@@ -10944,6 +10793,9 @@ var TunnelAgent = class extends http4.Agent {
|
|
|
10944
10793
|
mode;
|
|
10945
10794
|
connect;
|
|
10946
10795
|
pins;
|
|
10796
|
+
/** Every host the code names, first one first; `preferred` indexes it. */
|
|
10797
|
+
targets;
|
|
10798
|
+
preferred = 0;
|
|
10947
10799
|
/** Destroyed: no tunnel is opened any more, and one still opening is closed when it arrives. */
|
|
10948
10800
|
closed = false;
|
|
10949
10801
|
/**
|
|
@@ -10964,9 +10816,7 @@ var TunnelAgent = class extends http4.Agent {
|
|
|
10964
10816
|
return n;
|
|
10965
10817
|
}
|
|
10966
10818
|
hasFree() {
|
|
10967
|
-
return Object.values(this.freeSockets).some(
|
|
10968
|
-
(list2) => list2?.some((s3) => !s3.destroyed)
|
|
10969
|
-
);
|
|
10819
|
+
return Object.values(this.freeSockets).some((list2) => list2?.some((s3) => !s3.destroyed));
|
|
10970
10820
|
}
|
|
10971
10821
|
canServe() {
|
|
10972
10822
|
return this.hasFree() || this.live() < TUNNEL_AGENT_MAX_SOCKETS;
|
|
@@ -11017,33 +10867,31 @@ var TunnelAgent = class extends http4.Agent {
|
|
|
11017
10867
|
return void 0;
|
|
11018
10868
|
}
|
|
11019
10869
|
this.opening += 1;
|
|
11020
|
-
const
|
|
11021
|
-
|
|
11022
|
-
|
|
11023
|
-
|
|
11024
|
-
|
|
11025
|
-
|
|
11026
|
-
|
|
11027
|
-
|
|
11028
|
-
attempt(first).catch((err) => {
|
|
11029
|
-
if (this.mode !== "auto" || first !== "ws" || !canSwitch(err))
|
|
11030
|
-
throw err;
|
|
11031
|
-
return attempt("post").then(
|
|
10870
|
+
const dial = /* @__PURE__ */ __name((host, transport) => this.connect(this.targets[host], this.pins, { ca: this.target.ca, userAgent: this.target.userAgent, env: this.target.env, transport, onOuter: /* @__PURE__ */ __name((i) => this.events.onOuter?.(i), "onOuter") }), "dial");
|
|
10871
|
+
const hosts = this.targets.map((_2, i) => (this.preferred + i) % this.targets.length);
|
|
10872
|
+
const transports = this.mode === "auto" ? this.using === "ws" ? ["ws", "post"] : ["post"] : [this.using === "post" ? "post" : "ws"];
|
|
10873
|
+
const chain = transports.flatMap((transport) => hosts.map((host) => ({ host, transport })));
|
|
10874
|
+
let firstErr = null;
|
|
10875
|
+
const run = /* @__PURE__ */ __name((i) => {
|
|
10876
|
+
const at2 = chain[i];
|
|
10877
|
+
return dial(at2.host, at2.transport).then(
|
|
11032
10878
|
(socket) => {
|
|
11033
|
-
if (this.
|
|
10879
|
+
if (this.preferred !== at2.host) this.preferred = at2.host;
|
|
10880
|
+
if (this.mode === "auto" && this.using !== "post" && at2.transport === "post") {
|
|
11034
10881
|
this.using = "post";
|
|
11035
|
-
this.events.onTransport?.(
|
|
11036
|
-
"post",
|
|
11037
|
-
`websocket blocked: ${reasonOf(err)}`
|
|
11038
|
-
);
|
|
10882
|
+
this.events.onTransport?.("post", firstErr === null ? null : `websocket blocked: ${reasonOf(firstErr)}`);
|
|
11039
10883
|
}
|
|
11040
10884
|
return socket;
|
|
11041
10885
|
},
|
|
11042
|
-
(
|
|
11043
|
-
|
|
10886
|
+
(err) => {
|
|
10887
|
+
if (!(err instanceof Error)) throw err;
|
|
10888
|
+
if (firstErr === null) firstErr = err;
|
|
10889
|
+
if (i + 1 < chain.length && canSwitch(err)) return run(i + 1);
|
|
10890
|
+
throw err instanceof IdentityMismatchError ? err : firstErr;
|
|
11044
10891
|
}
|
|
11045
10892
|
);
|
|
11046
|
-
})
|
|
10893
|
+
}, "run");
|
|
10894
|
+
run(0).then(
|
|
11047
10895
|
(socket) => {
|
|
11048
10896
|
this.opening -= 1;
|
|
11049
10897
|
if (this.closed) {
|
|
@@ -11077,35 +10925,15 @@ function hashLocalKey(key) {
|
|
|
11077
10925
|
return createHash3("sha256").update(key, "utf8").digest("hex");
|
|
11078
10926
|
}
|
|
11079
10927
|
__name(hashLocalKey, "hashLocalKey");
|
|
11080
|
-
var HOP = /* @__PURE__ */ new Set([
|
|
11081
|
-
"connection",
|
|
11082
|
-
"keep-alive",
|
|
11083
|
-
"proxy-authorization",
|
|
11084
|
-
"proxy-connection",
|
|
11085
|
-
"te",
|
|
11086
|
-
"trailer",
|
|
11087
|
-
"transfer-encoding",
|
|
11088
|
-
"upgrade",
|
|
11089
|
-
"host",
|
|
11090
|
-
"authorization",
|
|
11091
|
-
"x-api-key"
|
|
11092
|
-
]);
|
|
10928
|
+
var HOP = /* @__PURE__ */ new Set(["connection", "keep-alive", "proxy-authorization", "proxy-connection", "te", "trailer", "transfer-encoding", "upgrade", "host", "authorization", "x-api-key"]);
|
|
11093
10929
|
var LOOPBACK2 = /* @__PURE__ */ new Set(["127.0.0.1", "localhost", "[::1]"]);
|
|
11094
10930
|
function send(res, status, message) {
|
|
11095
|
-
const body = JSON.stringify({
|
|
11096
|
-
|
|
11097
|
-
error: { type: "tunnel_error", message }
|
|
11098
|
-
});
|
|
11099
|
-
res.writeHead(status, {
|
|
11100
|
-
"content-type": "application/json",
|
|
11101
|
-
"content-length": Buffer.byteLength(body)
|
|
11102
|
-
}).end(body);
|
|
10931
|
+
const body = JSON.stringify({ type: "error", error: { type: "tunnel_error", message } });
|
|
10932
|
+
res.writeHead(status, { "content-type": "application/json", "content-length": Buffer.byteLength(body) }).end(body);
|
|
11103
10933
|
}
|
|
11104
10934
|
__name(send, "send");
|
|
11105
10935
|
function keyOf(req) {
|
|
11106
|
-
const bearer = /^Bearer\s+(.+)$/i.exec(
|
|
11107
|
-
String(req.headers.authorization ?? "").trim()
|
|
11108
|
-
);
|
|
10936
|
+
const bearer = /^Bearer\s+(.+)$/i.exec(String(req.headers.authorization ?? "").trim());
|
|
11109
10937
|
if (bearer) return bearer[1].trim();
|
|
11110
10938
|
const k2 = req.headers["x-api-key"];
|
|
11111
10939
|
return typeof k2 === "string" && k2.trim() ? k2.trim() : void 0;
|
|
@@ -11125,8 +10953,7 @@ function deadTunnel(err, reusedSocket) {
|
|
|
11125
10953
|
}
|
|
11126
10954
|
__name(deadTunnel, "deadTunnel");
|
|
11127
10955
|
function describeError(err) {
|
|
11128
|
-
if (err instanceof BackoffError)
|
|
11129
|
-
return `tunnel identity mismatch - waiting before retry (${Math.ceil(err.waitMs / 6e4)} min)`;
|
|
10956
|
+
if (err instanceof BackoffError) return `tunnel identity mismatch - waiting before retry (${Math.ceil(err.waitMs / 6e4)} min)`;
|
|
11130
10957
|
if (err instanceof IdentityMismatchError) return "tunnel identity mismatch";
|
|
11131
10958
|
if (err instanceof TunnelBlockedError) return err.message;
|
|
11132
10959
|
return "tunnel unavailable";
|
|
@@ -11137,16 +10964,12 @@ function startLocalServer(o) {
|
|
|
11137
10964
|
const started = Date.now();
|
|
11138
10965
|
const route = (req.url ?? "/").split("?")[0].slice(0, 200);
|
|
11139
10966
|
const hostname4 = String(req.headers.host ?? "").toLowerCase().replace(/:\d+$/, "");
|
|
11140
|
-
if (!LOOPBACK2.has(hostname4))
|
|
11141
|
-
|
|
11142
|
-
if (req.headers.origin !== void 0)
|
|
11143
|
-
return send(res, 403, "browser requests are not accepted");
|
|
10967
|
+
if (!LOOPBACK2.has(hostname4)) return send(res, 403, "this endpoint answers on 127.0.0.1 only");
|
|
10968
|
+
if (req.headers.origin !== void 0) return send(res, 403, "browser requests are not accepted");
|
|
11144
10969
|
const key = keyOf(req);
|
|
11145
|
-
if (!key || !sameHash(hashLocalKey(key), o.localKeyHash))
|
|
11146
|
-
return send(res, 401, "invalid or missing local key");
|
|
10970
|
+
if (!key || !sameHash(hashLocalKey(key), o.localKeyHash)) return send(res, 401, "invalid or missing local key");
|
|
11147
10971
|
const headers = {};
|
|
11148
|
-
for (const [name, value] of Object.entries(req.headers))
|
|
11149
|
-
if (!HOP.has(name) && value !== void 0) headers[name] = value;
|
|
10972
|
+
for (const [name, value] of Object.entries(req.headers)) if (!HOP.has(name) && value !== void 0) headers[name] = value;
|
|
11150
10973
|
headers.host = o.target.host;
|
|
11151
10974
|
headers.authorization = `Bearer ${o.deviceToken}`;
|
|
11152
10975
|
let kept = [];
|
|
@@ -11160,23 +10983,14 @@ function startLocalServer(o) {
|
|
|
11160
10983
|
let upstream;
|
|
11161
10984
|
const forward = /* @__PURE__ */ __name((replay) => {
|
|
11162
10985
|
const via = replay ? { createConnection: /* @__PURE__ */ __name((opts, cb) => o.agent.createConnection(opts, cb), "createConnection") } : { agent: o.agent };
|
|
11163
|
-
const current = http5.request(
|
|
11164
|
-
|
|
11165
|
-
(up)
|
|
11166
|
-
|
|
11167
|
-
|
|
11168
|
-
|
|
11169
|
-
|
|
11170
|
-
|
|
11171
|
-
up.on("error", () => res.destroy());
|
|
11172
|
-
up.on(
|
|
11173
|
-
"end",
|
|
11174
|
-
() => o.log?.(
|
|
11175
|
-
`${req.method} ${route} status=${up.statusCode} total=${Date.now() - started}ms`
|
|
11176
|
-
)
|
|
11177
|
-
);
|
|
11178
|
-
}
|
|
11179
|
-
);
|
|
10986
|
+
const current = http5.request({ ...via, method: req.method, path: req.url, headers, setHost: false }, (up) => {
|
|
10987
|
+
const out = {};
|
|
10988
|
+
for (const [name, value] of Object.entries(up.headers)) if (!HOP.has(name) && value !== void 0) out[name] = value;
|
|
10989
|
+
res.writeHead(up.statusCode ?? 502, out);
|
|
10990
|
+
up.pipe(res);
|
|
10991
|
+
up.on("error", () => res.destroy());
|
|
10992
|
+
up.on("end", () => o.log?.(`${req.method} ${route} status=${up.statusCode} total=${Date.now() - started}ms`));
|
|
10993
|
+
});
|
|
11180
10994
|
upstream = current;
|
|
11181
10995
|
current.on("error", (err) => {
|
|
11182
10996
|
if (!replay && !res.headersSent && kept && deadTunnel(err, current.reusedSocket)) {
|
|
@@ -11194,8 +11008,7 @@ function startLocalServer(o) {
|
|
|
11194
11008
|
}
|
|
11195
11009
|
o.log?.(`${req.method} ${route} failed: ${describeError(err)}`);
|
|
11196
11010
|
if (res.headersSent) res.destroy();
|
|
11197
|
-
else if (err instanceof TunnelBlockedError && err.status === 429)
|
|
11198
|
-
send(res, 429, "Too many attempts");
|
|
11011
|
+
else if (err instanceof TunnelBlockedError && err.status === 429) send(res, 429, "Too many attempts");
|
|
11199
11012
|
else send(res, 502, describeError(err));
|
|
11200
11013
|
});
|
|
11201
11014
|
if (replay) current.end(Buffer.concat(kept ?? []));
|
|
@@ -11249,18 +11062,13 @@ var IdentityBackoff = class {
|
|
|
11249
11062
|
this.since = null;
|
|
11250
11063
|
}
|
|
11251
11064
|
snapshot() {
|
|
11252
|
-
return {
|
|
11253
|
-
mismatches: this.count,
|
|
11254
|
-
since: this.since,
|
|
11255
|
-
waitMs: this.blockedMs()
|
|
11256
|
-
};
|
|
11065
|
+
return { mismatches: this.count, since: this.since, waitMs: this.blockedMs() };
|
|
11257
11066
|
}
|
|
11258
11067
|
};
|
|
11259
11068
|
function mergePins(own, listed, via) {
|
|
11260
11069
|
const unchanged = { pins: [...own], added: [], dropped: [] };
|
|
11261
11070
|
if (via === null || !own.includes(via)) return unchanged;
|
|
11262
|
-
if (!Array.isArray(listed) || listed.length === 0 || listed.length > MAX_PINS || !listed.every((p2) => typeof p2 === "string" && isPin(p2)))
|
|
11263
|
-
return unchanged;
|
|
11071
|
+
if (!Array.isArray(listed) || listed.length === 0 || listed.length > MAX_PINS || !listed.every((p2) => typeof p2 === "string" && isPin(p2))) return unchanged;
|
|
11264
11072
|
const list2 = [...new Set(listed)];
|
|
11265
11073
|
const added = list2.filter((p2) => !own.includes(p2));
|
|
11266
11074
|
if (list2.includes(via)) {
|
|
@@ -11310,11 +11118,7 @@ var PinSync = class {
|
|
|
11310
11118
|
const now = (this.o.now ?? Date.now)();
|
|
11311
11119
|
if (this.running || now - this.last < (this.o.intervalMs ?? 36e5)) return;
|
|
11312
11120
|
this.last = now;
|
|
11313
|
-
this.syncNow().catch(
|
|
11314
|
-
(err) => this.o.log?.(
|
|
11315
|
-
`pin check failed: ${err instanceof Error ? err.message : String(err)}`
|
|
11316
|
-
)
|
|
11317
|
-
);
|
|
11121
|
+
this.syncNow().catch((err) => this.o.log?.(`pin check failed: ${err instanceof Error ? err.message : String(err)}`));
|
|
11318
11122
|
}
|
|
11319
11123
|
async run() {
|
|
11320
11124
|
this.last = (this.o.now ?? Date.now)();
|
|
@@ -11324,24 +11128,18 @@ var PinSync = class {
|
|
|
11324
11128
|
if (changed) {
|
|
11325
11129
|
this.current = merged.pins;
|
|
11326
11130
|
this.o.onChange?.(this.pins);
|
|
11327
|
-
this.o.log?.(
|
|
11328
|
-
`proxy keys updated through the pinned tunnel: ${merged.added.map((p2) => `+${short(p2)}`).concat(merged.dropped.map((p2) => `-${short(p2)}`)).join(" ")}`
|
|
11329
|
-
);
|
|
11131
|
+
this.o.log?.(`proxy keys updated through the pinned tunnel: ${merged.added.map((p2) => `+${short(p2)}`).concat(merged.dropped.map((p2) => `-${short(p2)}`)).join(" ")}`);
|
|
11330
11132
|
}
|
|
11331
11133
|
if ((changed || this.unsaved) && !this.saveStopped) {
|
|
11332
11134
|
try {
|
|
11333
11135
|
if (await this.o.save(this.pins) === false) {
|
|
11334
11136
|
this.saveStopped = true;
|
|
11335
|
-
this.o.log?.(
|
|
11336
|
-
this.o.stoppedLine ?? "config.bin now holds another configuration (setup ran since): the proxy keys learned by this run are no longer saved"
|
|
11337
|
-
);
|
|
11137
|
+
this.o.log?.(this.o.stoppedLine ?? "config.bin now holds another configuration (setup ran since): the proxy keys learned by this run are no longer saved");
|
|
11338
11138
|
}
|
|
11339
11139
|
this.unsaved = false;
|
|
11340
11140
|
} catch (err) {
|
|
11341
11141
|
this.unsaved = true;
|
|
11342
|
-
this.o.log?.(
|
|
11343
|
-
`could not save the proxy keys (tried again at the next check): ${err instanceof Error ? err.message : String(err)}`
|
|
11344
|
-
);
|
|
11142
|
+
this.o.log?.(`could not save the proxy keys (tried again at the next check): ${err instanceof Error ? err.message : String(err)}`);
|
|
11345
11143
|
}
|
|
11346
11144
|
}
|
|
11347
11145
|
return { ...merged, via };
|
|
@@ -11349,52 +11147,34 @@ var PinSync = class {
|
|
|
11349
11147
|
fetch() {
|
|
11350
11148
|
const { target } = this.o;
|
|
11351
11149
|
return new Promise((resolve34, reject) => {
|
|
11352
|
-
const req = http6.request(
|
|
11353
|
-
|
|
11354
|
-
|
|
11355
|
-
|
|
11356
|
-
|
|
11357
|
-
|
|
11358
|
-
|
|
11359
|
-
|
|
11360
|
-
|
|
11361
|
-
|
|
11362
|
-
|
|
11363
|
-
|
|
11150
|
+
const req = http6.request({
|
|
11151
|
+
host: target.hostname,
|
|
11152
|
+
port: target.port,
|
|
11153
|
+
method: "GET",
|
|
11154
|
+
path: TUNNEL_PINS_PATH,
|
|
11155
|
+
agent: this.o.agent,
|
|
11156
|
+
setHost: false,
|
|
11157
|
+
headers: { host: target.host, authorization: `Bearer ${this.o.deviceToken}`, accept: "application/json" }
|
|
11158
|
+
}, (res) => {
|
|
11159
|
+
const via = pinOfSocket(res.socket);
|
|
11160
|
+
const chunks = [];
|
|
11161
|
+
let size = 0;
|
|
11162
|
+
res.on("data", (c) => {
|
|
11163
|
+
size += c.length;
|
|
11164
|
+
if (size > MAX_BODY) req.destroy(new Error("pin list too large"));
|
|
11165
|
+
else chunks.push(c);
|
|
11166
|
+
});
|
|
11167
|
+
res.on("error", reject);
|
|
11168
|
+
res.on("end", () => {
|
|
11169
|
+
if (res.statusCode !== 200) return reject(new Error(`the proxy answered ${res.statusCode ?? 0} for its pins`));
|
|
11170
|
+
try {
|
|
11171
|
+
resolve34({ listed: JSON.parse(Buffer.concat(chunks).toString("utf8")).pins, via });
|
|
11172
|
+
} catch {
|
|
11173
|
+
reject(new Error("the proxy's pin list is not JSON"));
|
|
11364
11174
|
}
|
|
11365
|
-
}
|
|
11366
|
-
|
|
11367
|
-
|
|
11368
|
-
const chunks = [];
|
|
11369
|
-
let size = 0;
|
|
11370
|
-
res.on("data", (c) => {
|
|
11371
|
-
size += c.length;
|
|
11372
|
-
if (size > MAX_BODY) req.destroy(new Error("pin list too large"));
|
|
11373
|
-
else chunks.push(c);
|
|
11374
|
-
});
|
|
11375
|
-
res.on("error", reject);
|
|
11376
|
-
res.on("end", () => {
|
|
11377
|
-
if (res.statusCode !== 200)
|
|
11378
|
-
return reject(
|
|
11379
|
-
new Error(
|
|
11380
|
-
`the proxy answered ${res.statusCode ?? 0} for its pins`
|
|
11381
|
-
)
|
|
11382
|
-
);
|
|
11383
|
-
try {
|
|
11384
|
-
resolve34({
|
|
11385
|
-
listed: JSON.parse(Buffer.concat(chunks).toString("utf8")).pins,
|
|
11386
|
-
via
|
|
11387
|
-
});
|
|
11388
|
-
} catch {
|
|
11389
|
-
reject(new Error("the proxy's pin list is not JSON"));
|
|
11390
|
-
}
|
|
11391
|
-
});
|
|
11392
|
-
}
|
|
11393
|
-
);
|
|
11394
|
-
req.setTimeout(
|
|
11395
|
-
this.o.timeoutMs ?? 3e4,
|
|
11396
|
-
() => req.destroy(new Error("pin check timeout"))
|
|
11397
|
-
);
|
|
11175
|
+
});
|
|
11176
|
+
});
|
|
11177
|
+
req.setTimeout(this.o.timeoutMs ?? 3e4, () => req.destroy(new Error("pin check timeout")));
|
|
11398
11178
|
req.on("error", reject);
|
|
11399
11179
|
req.end();
|
|
11400
11180
|
});
|
|
@@ -11402,27 +11182,19 @@ var PinSync = class {
|
|
|
11402
11182
|
};
|
|
11403
11183
|
async function startTunnelSession(o) {
|
|
11404
11184
|
const target = new URL(o.url);
|
|
11185
|
+
const failover = (o.urls ?? []).map((u2) => new URL(u2));
|
|
11405
11186
|
const backoff = o.backoff ?? new IdentityBackoff();
|
|
11406
|
-
const agent = new TunnelAgent(
|
|
11407
|
-
|
|
11408
|
-
|
|
11409
|
-
|
|
11410
|
-
|
|
11411
|
-
|
|
11412
|
-
|
|
11413
|
-
|
|
11414
|
-
|
|
11415
|
-
|
|
11416
|
-
|
|
11417
|
-
setImmediate(() => {
|
|
11418
|
-
if (!agent.destroyed) pinSync.maybeSync();
|
|
11419
|
-
});
|
|
11420
|
-
o.onConnected?.();
|
|
11421
|
-
}, "onConnected"),
|
|
11422
|
-
onMismatch: o.onMismatch,
|
|
11423
|
-
onTransport: o.onTransport
|
|
11424
|
-
}
|
|
11425
|
-
);
|
|
11187
|
+
const agent = new TunnelAgent({ url: target, urls: failover, pins: o.pins, userAgent: o.userAgent, transport: o.transport }, backoff, {
|
|
11188
|
+
onOuter: o.onOuter,
|
|
11189
|
+
onConnected: /* @__PURE__ */ __name(() => {
|
|
11190
|
+
setImmediate(() => {
|
|
11191
|
+
if (!agent.destroyed) pinSync.maybeSync();
|
|
11192
|
+
});
|
|
11193
|
+
o.onConnected?.();
|
|
11194
|
+
}, "onConnected"),
|
|
11195
|
+
onMismatch: o.onMismatch,
|
|
11196
|
+
onTransport: o.onTransport
|
|
11197
|
+
});
|
|
11426
11198
|
const pinSync = new PinSync({
|
|
11427
11199
|
agent,
|
|
11428
11200
|
target,
|
|
@@ -11435,14 +11207,7 @@ async function startTunnelSession(o) {
|
|
|
11435
11207
|
});
|
|
11436
11208
|
let server;
|
|
11437
11209
|
try {
|
|
11438
|
-
server = await startLocalServer({
|
|
11439
|
-
port: o.port,
|
|
11440
|
-
localKeyHash: o.localKeyHash,
|
|
11441
|
-
deviceToken: o.deviceToken,
|
|
11442
|
-
target,
|
|
11443
|
-
agent,
|
|
11444
|
-
log: o.log
|
|
11445
|
-
});
|
|
11210
|
+
server = await startLocalServer({ port: o.port, localKeyHash: o.localKeyHash, deviceToken: o.deviceToken, target, agent, log: o.log });
|
|
11446
11211
|
} catch (err) {
|
|
11447
11212
|
agent.destroy();
|
|
11448
11213
|
throw err;
|
|
@@ -11460,7 +11225,7 @@ async function startTunnelSession(o) {
|
|
|
11460
11225
|
return { agent, pinSync, server, target, port: server.address().port, close };
|
|
11461
11226
|
}
|
|
11462
11227
|
__name(startTunnelSession, "startTunnelSession");
|
|
11463
|
-
var VERSION = true ? "9.
|
|
11228
|
+
var VERSION = true ? "9.4.0" : "dev";
|
|
11464
11229
|
var O1ConnectError = class extends Error {
|
|
11465
11230
|
static {
|
|
11466
11231
|
__name(this, "O1ConnectError");
|
|
@@ -11476,8 +11241,7 @@ var DEFAULT_NAME = "aipp-connect";
|
|
|
11476
11241
|
var TRANSPORTS = ["auto", "websocket", "post"];
|
|
11477
11242
|
function entryName(name) {
|
|
11478
11243
|
if (name === void 0) return DEFAULT_NAME;
|
|
11479
|
-
if (typeof name !== "string" || name.trim() === "")
|
|
11480
|
-
throw new TypeError("name must be a non-empty string");
|
|
11244
|
+
if (typeof name !== "string" || name.trim() === "") throw new TypeError("name must be a non-empty string");
|
|
11481
11245
|
return name;
|
|
11482
11246
|
}
|
|
11483
11247
|
__name(entryName, "entryName");
|
|
@@ -11498,10 +11262,7 @@ function withEntry(store, name, fn) {
|
|
|
11498
11262
|
}
|
|
11499
11263
|
const map2 = byName;
|
|
11500
11264
|
const run = (map2.get(name) ?? Promise.resolve()).then(fn);
|
|
11501
|
-
const tail = run.then(
|
|
11502
|
-
() => void 0,
|
|
11503
|
-
() => void 0
|
|
11504
|
-
);
|
|
11265
|
+
const tail = run.then(() => void 0, () => void 0);
|
|
11505
11266
|
map2.set(name, tail);
|
|
11506
11267
|
void tail.then(() => {
|
|
11507
11268
|
if (map2.get(name) === tail) map2.delete(name);
|
|
@@ -11513,11 +11274,7 @@ async function viaStore(what, call) {
|
|
|
11513
11274
|
try {
|
|
11514
11275
|
return await call();
|
|
11515
11276
|
} catch (err) {
|
|
11516
|
-
throw new O1ConnectError(
|
|
11517
|
-
"store_failed",
|
|
11518
|
-
`the secret store failed to ${what}`,
|
|
11519
|
-
{ cause: err }
|
|
11520
|
-
);
|
|
11277
|
+
throw new O1ConnectError("store_failed", `the secret store failed to ${what}`, { cause: err });
|
|
11521
11278
|
}
|
|
11522
11279
|
}
|
|
11523
11280
|
__name(viaStore, "viaStore");
|
|
@@ -11526,70 +11283,39 @@ function parseSaved(raw) {
|
|
|
11526
11283
|
try {
|
|
11527
11284
|
o = JSON.parse(String(raw));
|
|
11528
11285
|
} catch {
|
|
11529
|
-
throw new O1ConnectError(
|
|
11530
|
-
"invalid_config",
|
|
11531
|
-
"the saved configuration is not JSON: run setup again"
|
|
11532
|
-
);
|
|
11286
|
+
throw new O1ConnectError("invalid_config", "the saved configuration is not JSON: run setup again");
|
|
11533
11287
|
}
|
|
11534
|
-
if (!o || typeof o !== "object" || o.v !== 1)
|
|
11535
|
-
throw new O1ConnectError(
|
|
11536
|
-
"invalid_config",
|
|
11537
|
-
"the saved configuration is not one this library knows: run setup again"
|
|
11538
|
-
);
|
|
11288
|
+
if (!o || typeof o !== "object" || o.v !== 1) throw new O1ConnectError("invalid_config", "the saved configuration is not one this library knows: run setup again");
|
|
11539
11289
|
let code;
|
|
11540
11290
|
try {
|
|
11541
11291
|
code = validateCode(o);
|
|
11542
11292
|
} catch (err) {
|
|
11543
|
-
throw new O1ConnectError(
|
|
11544
|
-
"invalid_config",
|
|
11545
|
-
`the saved configuration is not valid (${err instanceof Error ? err.message : String(err)}): run setup again`
|
|
11546
|
-
);
|
|
11293
|
+
throw new O1ConnectError("invalid_config", `the saved configuration is not valid (${err instanceof Error ? err.message : String(err)}): run setup again`);
|
|
11547
11294
|
}
|
|
11548
11295
|
const transport = o.transport ?? "auto";
|
|
11549
|
-
if (!TRANSPORTS.includes(transport))
|
|
11550
|
-
throw new O1ConnectError(
|
|
11551
|
-
"invalid_config",
|
|
11552
|
-
"the saved transport is not auto, websocket or post: run setup again"
|
|
11553
|
-
);
|
|
11296
|
+
if (!TRANSPORTS.includes(transport)) throw new O1ConnectError("invalid_config", "the saved transport is not auto, websocket or post: run setup again");
|
|
11554
11297
|
return { v: 1, ...code, transport };
|
|
11555
11298
|
}
|
|
11556
11299
|
__name(parseSaved, "parseSaved");
|
|
11557
11300
|
async function setup(code, opts) {
|
|
11558
11301
|
const store = checkStore(opts?.store);
|
|
11559
|
-
if (typeof opts.onFingerprint !== "function")
|
|
11560
|
-
throw new TypeError(
|
|
11561
|
-
"onFingerprint is required: every key's fingerprint must be confirmed by the user"
|
|
11562
|
-
);
|
|
11302
|
+
if (typeof opts.onFingerprint !== "function") throw new TypeError("onFingerprint is required: every key's fingerprint must be confirmed by the user");
|
|
11563
11303
|
const name = entryName(opts.name);
|
|
11564
11304
|
const transport = opts.transport ?? "auto";
|
|
11565
|
-
if (!TRANSPORTS.includes(transport))
|
|
11566
|
-
throw new TypeError("transport must be auto, websocket or post");
|
|
11305
|
+
if (!TRANSPORTS.includes(transport)) throw new TypeError("transport must be auto, websocket or post");
|
|
11567
11306
|
let decoded;
|
|
11568
11307
|
try {
|
|
11569
11308
|
decoded = decodeConnectionCode(String(code ?? ""));
|
|
11570
11309
|
} catch (err) {
|
|
11571
|
-
throw new O1ConnectError(
|
|
11572
|
-
"invalid_code",
|
|
11573
|
-
err instanceof ConnectionCodeError ? err.message : "the connection code is not valid"
|
|
11574
|
-
);
|
|
11310
|
+
throw new O1ConnectError("invalid_code", err instanceof ConnectionCodeError ? err.message : "the connection code is not valid");
|
|
11575
11311
|
}
|
|
11576
11312
|
const fingerprints = decoded.pins.map((p2) => fingerprint(p2));
|
|
11577
|
-
const info = { device: decoded.device, url: decoded.url };
|
|
11313
|
+
const info = { device: decoded.device, url: decoded.url, ...decoded.urls ? { urls: [...decoded.urls] } : {} };
|
|
11578
11314
|
if (await opts.onFingerprint([...fingerprints], { ...info }) !== true) {
|
|
11579
|
-
throw new O1ConnectError(
|
|
11580
|
-
"fingerprint_rejected",
|
|
11581
|
-
"the proxy keys were not confirmed: nothing was saved"
|
|
11582
|
-
);
|
|
11315
|
+
throw new O1ConnectError("fingerprint_rejected", "the proxy keys were not confirmed: nothing was saved");
|
|
11583
11316
|
}
|
|
11584
11317
|
const saved = { v: 1, ...decoded, transport };
|
|
11585
|
-
await withEntry(
|
|
11586
|
-
store,
|
|
11587
|
-
name,
|
|
11588
|
-
() => viaStore(
|
|
11589
|
-
"save the configuration",
|
|
11590
|
-
() => store.set(name, JSON.stringify(saved))
|
|
11591
|
-
)
|
|
11592
|
-
);
|
|
11318
|
+
await withEntry(store, name, () => viaStore("save the configuration", () => store.set(name, JSON.stringify(saved))));
|
|
11593
11319
|
return { ...info, fingerprints };
|
|
11594
11320
|
}
|
|
11595
11321
|
__name(setup, "setup");
|
|
@@ -11597,14 +11323,9 @@ async function open(opts) {
|
|
|
11597
11323
|
const store = checkStore(opts?.store);
|
|
11598
11324
|
const name = entryName(opts.name);
|
|
11599
11325
|
const port = opts.port ?? 0;
|
|
11600
|
-
if (!Number.isInteger(port) || port < 0 || port > 65535)
|
|
11601
|
-
throw new TypeError("port must be an integer from 0 to 65535");
|
|
11326
|
+
if (!Number.isInteger(port) || port < 0 || port > 65535) throw new TypeError("port must be an integer from 0 to 65535");
|
|
11602
11327
|
const raw = await viaStore("read the configuration", () => store.get(name));
|
|
11603
|
-
if (raw === null || raw === void 0)
|
|
11604
|
-
throw new O1ConnectError(
|
|
11605
|
-
"not_set_up",
|
|
11606
|
-
"no o1-connect configuration in the store: run setup with a connection code"
|
|
11607
|
-
);
|
|
11328
|
+
if (raw === null || raw === void 0) throw new O1ConnectError("not_set_up", "no o1-connect configuration in the store: run setup with a connection code");
|
|
11608
11329
|
const cfg = parseSaved(raw);
|
|
11609
11330
|
const log = opts.log ? (line) => {
|
|
11610
11331
|
try {
|
|
@@ -11617,17 +11338,17 @@ async function open(opts) {
|
|
|
11617
11338
|
try {
|
|
11618
11339
|
session = await startTunnelSession({
|
|
11619
11340
|
url: cfg.url,
|
|
11341
|
+
urls: cfg.urls,
|
|
11620
11342
|
pins: cfg.pins,
|
|
11621
11343
|
deviceToken: cfg.token,
|
|
11622
11344
|
transport: cfg.transport,
|
|
11623
11345
|
port,
|
|
11624
11346
|
localKeyHash: hashLocalKey(apiKey),
|
|
11625
|
-
|
|
11347
|
+
// Only when the app asks (like the CLI's identify): absent, nothing about the client goes on the wire.
|
|
11348
|
+
userAgent: opts.identify === true ? `o1-connect-lib/${VERSION}` : void 0,
|
|
11626
11349
|
log,
|
|
11627
11350
|
onMismatch: /* @__PURE__ */ __name((received) => {
|
|
11628
|
-
log?.(
|
|
11629
|
-
`TUNNEL IDENTITY MISMATCH: received ${received}; possible interception`
|
|
11630
|
-
);
|
|
11351
|
+
log?.(`TUNNEL IDENTITY MISMATCH: received ${received}; possible interception`);
|
|
11631
11352
|
try {
|
|
11632
11353
|
opts.onMismatch?.(received);
|
|
11633
11354
|
} catch {
|
|
@@ -11639,10 +11360,7 @@ async function open(opts) {
|
|
|
11639
11360
|
// tried again by this connection) once setup replaced it or forget deleted it.
|
|
11640
11361
|
savePinsStoppedLine: "the store now holds another configuration, or none (setup or forget ran since): the proxy keys learned by this connection are no longer saved",
|
|
11641
11362
|
savePins: /* @__PURE__ */ __name((pins) => withEntry(store, name, async () => {
|
|
11642
|
-
const raw2 = await viaStore(
|
|
11643
|
-
"read the configuration",
|
|
11644
|
-
() => store.get(name)
|
|
11645
|
-
);
|
|
11363
|
+
const raw2 = await viaStore("read the configuration", () => store.get(name));
|
|
11646
11364
|
if (raw2 === null || raw2 === void 0) return false;
|
|
11647
11365
|
let current;
|
|
11648
11366
|
try {
|
|
@@ -11650,25 +11368,15 @@ async function open(opts) {
|
|
|
11650
11368
|
} catch {
|
|
11651
11369
|
return false;
|
|
11652
11370
|
}
|
|
11653
|
-
if (current.url !== cfg.url || current.device !== cfg.device || current.token !== cfg.token)
|
|
11654
|
-
|
|
11655
|
-
await viaStore(
|
|
11656
|
-
"save the configuration",
|
|
11657
|
-
() => store.set(name, JSON.stringify({ ...current, pins }))
|
|
11658
|
-
);
|
|
11371
|
+
if (current.url !== cfg.url || current.device !== cfg.device || current.token !== cfg.token) return false;
|
|
11372
|
+
await viaStore("save the configuration", () => store.set(name, JSON.stringify({ ...current, pins })));
|
|
11659
11373
|
return true;
|
|
11660
11374
|
}), "savePins")
|
|
11661
11375
|
});
|
|
11662
11376
|
} catch (err) {
|
|
11663
11377
|
const code = err.code;
|
|
11664
|
-
if (code === "EADDRINUSE")
|
|
11665
|
-
|
|
11666
|
-
if (code === "EACCES" || code === "EADDRNOTAVAIL")
|
|
11667
|
-
throw new O1ConnectError(
|
|
11668
|
-
"port_unavailable",
|
|
11669
|
-
`cannot listen on 127.0.0.1:${port} (${code})`,
|
|
11670
|
-
{ cause: err }
|
|
11671
|
-
);
|
|
11378
|
+
if (code === "EADDRINUSE") throw new O1ConnectError("port_in_use", `port ${port} is in use`);
|
|
11379
|
+
if (code === "EACCES" || code === "EADDRNOTAVAIL") throw new O1ConnectError("port_unavailable", `cannot listen on 127.0.0.1:${port} (${code})`, { cause: err });
|
|
11672
11380
|
throw err;
|
|
11673
11381
|
}
|
|
11674
11382
|
if (opts.check !== false) {
|
|
@@ -11677,39 +11385,20 @@ async function open(opts) {
|
|
|
11677
11385
|
} catch (err) {
|
|
11678
11386
|
await session.close();
|
|
11679
11387
|
if (err instanceof IdentityMismatchError || err instanceof BackoffError) {
|
|
11680
|
-
throw new O1ConnectError(
|
|
11681
|
-
"identity_mismatch",
|
|
11682
|
-
"the proxy presented a key that is not pinned: possible interception (nothing was sent)"
|
|
11683
|
-
);
|
|
11388
|
+
throw new O1ConnectError("identity_mismatch", "the proxy presented a key that is not pinned: possible interception (nothing was sent)");
|
|
11684
11389
|
}
|
|
11685
|
-
throw new O1ConnectError(
|
|
11686
|
-
"tunnel_unavailable",
|
|
11687
|
-
`the tunnel did not answer: ${err instanceof Error ? err.message : String(err)}`
|
|
11688
|
-
);
|
|
11390
|
+
throw new O1ConnectError("tunnel_unavailable", `the tunnel did not answer: ${err instanceof Error ? err.message : String(err)}`);
|
|
11689
11391
|
}
|
|
11690
11392
|
}
|
|
11691
11393
|
const baseUrl = `http://127.0.0.1:${session.port}`;
|
|
11692
|
-
log?.(
|
|
11693
|
-
|
|
11694
|
-
);
|
|
11695
|
-
return {
|
|
11696
|
-
baseUrl,
|
|
11697
|
-
openaiBaseUrl: `${baseUrl}/v1`,
|
|
11698
|
-
apiKey,
|
|
11699
|
-
port: session.port,
|
|
11700
|
-
device: cfg.device,
|
|
11701
|
-
close: session.close
|
|
11702
|
-
};
|
|
11394
|
+
log?.(`o1-connect library ${VERSION} for ${cfg.device} listening on ${baseUrl} (transport ${cfg.transport})`);
|
|
11395
|
+
return { baseUrl, openaiBaseUrl: `${baseUrl}/v1`, apiKey, port: session.port, device: cfg.device, close: session.close };
|
|
11703
11396
|
}
|
|
11704
11397
|
__name(open, "open");
|
|
11705
11398
|
async function forget(opts) {
|
|
11706
11399
|
const store = checkStore(opts?.store);
|
|
11707
11400
|
const name = entryName(opts.name);
|
|
11708
|
-
await withEntry(
|
|
11709
|
-
store,
|
|
11710
|
-
name,
|
|
11711
|
-
() => viaStore("delete the configuration", () => store.delete(name))
|
|
11712
|
-
);
|
|
11401
|
+
await withEntry(store, name, () => viaStore("delete the configuration", () => store.delete(name)));
|
|
11713
11402
|
}
|
|
11714
11403
|
__name(forget, "forget");
|
|
11715
11404
|
|
|
@@ -36772,7 +36461,7 @@ var LlmChat = class {
|
|
|
36772
36461
|
const degradeAttempt = omniMediaDegradeAttempts++;
|
|
36773
36462
|
let degradeOutcome;
|
|
36774
36463
|
try {
|
|
36775
|
-
const { degradeOmniMediaAfterServerReject } = await import("./reactive-degrade-
|
|
36464
|
+
const { degradeOmniMediaAfterServerReject } = await import("./reactive-degrade-CQ7ALF7Z.js");
|
|
36776
36465
|
degradeOutcome = await degradeOmniMediaAfterServerReject(
|
|
36777
36466
|
self2.config,
|
|
36778
36467
|
self2.history,
|
|
@@ -74426,7 +74115,7 @@ var CoreToolScheduler = class _CoreToolScheduler {
|
|
|
74426
74115
|
const notices = [];
|
|
74427
74116
|
let omniProcessed = responseParts;
|
|
74428
74117
|
if (this.config.isOmniEnabled?.()) {
|
|
74429
|
-
const { processToolResultOmniMedia } = await import("./tool-result-media-
|
|
74118
|
+
const { processToolResultOmniMedia } = await import("./tool-result-media-NLHN7JZU.js");
|
|
74430
74119
|
omniProcessed = await processToolResultOmniMedia(
|
|
74431
74120
|
responseParts,
|
|
74432
74121
|
this.config,
|
|
@@ -77584,7 +77273,7 @@ ${body}
|
|
|
77584
77273
|
artifacts: toolResult.artifacts
|
|
77585
77274
|
} : void 0;
|
|
77586
77275
|
if (policyArtifacts && policyArtifacts.executionOrigin.kind !== "fixed_policy" && scheduledCall.tool.mediaPolicyDescriptor) {
|
|
77587
|
-
const { collectModelPolicyCall } = await import("./model-call-collection-
|
|
77276
|
+
const { collectModelPolicyCall } = await import("./model-call-collection-3WVMJQ5M.js");
|
|
77588
77277
|
await collectModelPolicyCall({
|
|
77589
77278
|
config: this.config,
|
|
77590
77279
|
batch: policyArtifacts,
|
|
@@ -171536,7 +171225,7 @@ var Config = class _Config {
|
|
|
171536
171225
|
await this.proxyDispatcherReady;
|
|
171537
171226
|
options2?.signal?.throwIfAborted();
|
|
171538
171227
|
if (this.isOmniEnabled()) {
|
|
171539
|
-
const { normalizeDedicatedOmniUploadConfig } = await import("./upload-config-
|
|
171228
|
+
const { normalizeDedicatedOmniUploadConfig } = await import("./upload-config-W3AEV3WP.js");
|
|
171540
171229
|
this.omniUploadConfig = normalizeDedicatedOmniUploadConfig({
|
|
171541
171230
|
baseUrl: this.omniUploadBaseUrl,
|
|
171542
171231
|
apiKeyEnv: this.omniUploadApiKeyEnv,
|
|
@@ -175436,7 +175125,7 @@ var Config = class _Config {
|
|
|
175436
175125
|
return this.omniPolicyTools;
|
|
175437
175126
|
}
|
|
175438
175127
|
async loadOmniMediaReader() {
|
|
175439
|
-
return import("./omni-
|
|
175128
|
+
return import("./omni-4T23JD65.js");
|
|
175440
175129
|
}
|
|
175441
175130
|
/** Normalized `omni.processing` view. Undefined until tool warmup
|
|
175442
175131
|
* completes (or when omni is disabled). */
|
|
@@ -177012,7 +176701,7 @@ var Config = class _Config {
|
|
|
177012
176701
|
async registerWorkflowTool(registry4) {
|
|
177013
176702
|
if (registry4.getAllToolNames().includes(ToolNames.WORKFLOW)) return true;
|
|
177014
176703
|
await this.registerLazyTool(registry4, ToolNames.WORKFLOW, async () => {
|
|
177015
|
-
const { WorkflowTool } = await import("./workflow-
|
|
176704
|
+
const { WorkflowTool } = await import("./workflow-XFMT6MFA.js");
|
|
177016
176705
|
return new WorkflowTool(this);
|
|
177017
176706
|
});
|
|
177018
176707
|
return registry4.getAllToolNames().includes(ToolNames.WORKFLOW);
|
|
@@ -177092,16 +176781,16 @@ var Config = class _Config {
|
|
|
177092
176781
|
const registerGoalWorkerTools = /* @__PURE__ */ __name(async () => {
|
|
177093
176782
|
if (options2?.forSubAgent) return;
|
|
177094
176783
|
await registerLazy(ToolNames.GET_GOAL, async () => {
|
|
177095
|
-
const { GetGoalTool: GetGoalTool2 } = await import("./goal-tools-
|
|
176784
|
+
const { GetGoalTool: GetGoalTool2 } = await import("./goal-tools-GKFYH6GK.js");
|
|
177096
176785
|
return new GetGoalTool2(this);
|
|
177097
176786
|
});
|
|
177098
176787
|
await registerLazy(ToolNames.UPDATE_GOAL, async () => {
|
|
177099
|
-
const { UpdateGoalTool: UpdateGoalTool2 } = await import("./goal-tools-
|
|
176788
|
+
const { UpdateGoalTool: UpdateGoalTool2 } = await import("./goal-tools-GKFYH6GK.js");
|
|
177100
176789
|
return new UpdateGoalTool2(this);
|
|
177101
176790
|
});
|
|
177102
176791
|
if (this.getModelProposedGoals() !== "disabled" && (resolveInteractionMode(this) === "interactive" || this.goalProposalHostSupported)) {
|
|
177103
176792
|
await registerLazy(ToolNames.PROPOSE_GOAL, async () => {
|
|
177104
|
-
const { ProposeGoalTool: ProposeGoalTool2 } = await import("./goal-tools-
|
|
176793
|
+
const { ProposeGoalTool: ProposeGoalTool2 } = await import("./goal-tools-GKFYH6GK.js");
|
|
177105
176794
|
return new ProposeGoalTool2(this);
|
|
177106
176795
|
});
|
|
177107
176796
|
}
|
|
@@ -177121,16 +176810,16 @@ var Config = class _Config {
|
|
|
177121
176810
|
});
|
|
177122
176811
|
}
|
|
177123
176812
|
await registerLazy(ToolNames.WEB_FETCH, async () => {
|
|
177124
|
-
const { WebFetchTool } = await import("./web-fetch-
|
|
176813
|
+
const { WebFetchTool } = await import("./web-fetch-3Z32TKL7.js");
|
|
177125
176814
|
return new WebFetchTool(this);
|
|
177126
176815
|
});
|
|
177127
176816
|
const hasExplicitWebSearchBackend = !!this.webSearchSettings?.model?.trim() || !!this.webSearchSettings?.baseUrl;
|
|
177128
176817
|
if (!this.getBareMode() && !this.isSafeMode() && this.webSearchSettings?.enabled !== false && (this.webSearchSettings?.enabled === true || !hasExplicitWebSearchBackend)) {
|
|
177129
|
-
const { evaluateWebSearchGate } = await import("./web-search-
|
|
176818
|
+
const { evaluateWebSearchGate } = await import("./web-search-T7R5BOOJ.js");
|
|
177130
176819
|
const gate = evaluateWebSearchGate(this);
|
|
177131
176820
|
if (gate.ok) {
|
|
177132
176821
|
await registerLazy(ToolNames.WEB_SEARCH, async () => {
|
|
177133
|
-
const { WebSearchTool } = await import("./web-search-
|
|
176822
|
+
const { WebSearchTool } = await import("./web-search-T7R5BOOJ.js");
|
|
177134
176823
|
return new WebSearchTool(this);
|
|
177135
176824
|
});
|
|
177136
176825
|
} else if (!gate.silent && !this.webSearchNoticeEmitted && !options2?.forSubAgent) {
|
|
@@ -177147,8 +176836,8 @@ var Config = class _Config {
|
|
|
177147
176836
|
);
|
|
177148
176837
|
}
|
|
177149
176838
|
const [{ createExecutionTools }, { wrapExecutionTool }] = await Promise.all([
|
|
177150
|
-
import("./local-execution-environment-
|
|
177151
|
-
import("./execution-tool-
|
|
176839
|
+
import("./local-execution-environment-OSK4IEYP.js"),
|
|
176840
|
+
import("./execution-tool-45FRLDNU.js")
|
|
177152
176841
|
]);
|
|
177153
176842
|
for (const [name, tool] of createExecutionTools(this)) {
|
|
177154
176843
|
if (environment.toolNames && !environment.toolNames.has(name)) continue;
|
|
@@ -177163,7 +176852,7 @@ var Config = class _Config {
|
|
|
177163
176852
|
return new ToolCallTool(registry4);
|
|
177164
176853
|
});
|
|
177165
176854
|
await registerLazy(ToolNames.TOOL_SEARCH, async () => {
|
|
177166
|
-
const { ToolSearchTool } = await import("./tool-search-
|
|
176855
|
+
const { ToolSearchTool } = await import("./tool-search-QGTV2ON5.js");
|
|
177167
176856
|
return new ToolSearchTool(this);
|
|
177168
176857
|
});
|
|
177169
176858
|
if (this.executionEnvironment && !options2?.forSubAgent) {
|
|
@@ -177175,7 +176864,7 @@ var Config = class _Config {
|
|
|
177175
176864
|
}
|
|
177176
176865
|
if (this.shellExecutionSandbox) {
|
|
177177
176866
|
await registerLazy(ToolNames.SHELL, async () => {
|
|
177178
|
-
const { ShellTool: ShellTool2 } = await import("./shell-
|
|
176867
|
+
const { ShellTool: ShellTool2 } = await import("./shell-HWIE3YJY.js");
|
|
177179
176868
|
return new ShellTool2(this);
|
|
177180
176869
|
});
|
|
177181
176870
|
await registerLazy(ToolNames.TASK_STOP, async () => {
|
|
@@ -177183,27 +176872,27 @@ var Config = class _Config {
|
|
|
177183
176872
|
return new TaskStopTool(this);
|
|
177184
176873
|
});
|
|
177185
176874
|
await registerLazy(ToolNames.READ_FILE, async () => {
|
|
177186
|
-
const { ReadFileTool } = await import("./read-file-
|
|
176875
|
+
const { ReadFileTool } = await import("./read-file-TGXV7LRJ.js");
|
|
177187
176876
|
return new ReadFileTool(this);
|
|
177188
176877
|
});
|
|
177189
176878
|
await registerLazy(ToolNames.WRITE_FILE, async () => {
|
|
177190
|
-
const { WriteFileTool } = await import("./write-file-
|
|
176879
|
+
const { WriteFileTool } = await import("./write-file-HVNSGPXF.js");
|
|
177191
176880
|
return new WriteFileTool(this);
|
|
177192
176881
|
});
|
|
177193
176882
|
await registerLazy(ToolNames.EDIT, async () => {
|
|
177194
|
-
const { EditTool } = await import("./edit-
|
|
176883
|
+
const { EditTool } = await import("./edit-V46XHSY7.js");
|
|
177195
176884
|
return new EditTool(this);
|
|
177196
176885
|
});
|
|
177197
176886
|
await registerLazy(ToolNames.MONITOR, async () => {
|
|
177198
|
-
const { MonitorTool } = await import("./monitor-
|
|
176887
|
+
const { MonitorTool } = await import("./monitor-DVKR4R64.js");
|
|
177199
176888
|
return new MonitorTool(this);
|
|
177200
176889
|
});
|
|
177201
176890
|
await registerLazy(ToolNames.AGENT, async () => {
|
|
177202
|
-
const { AgentTool: AgentTool2 } = await import("./agent-
|
|
176891
|
+
const { AgentTool: AgentTool2 } = await import("./agent-VI6IBJKP.js");
|
|
177203
176892
|
return new AgentTool2(this);
|
|
177204
176893
|
});
|
|
177205
176894
|
await registerLazy(ToolNames.GLOB, async () => {
|
|
177206
|
-
const { GlobTool } = await import("./glob-
|
|
176895
|
+
const { GlobTool } = await import("./glob-NHZYR52J.js");
|
|
177207
176896
|
return new GlobTool(this);
|
|
177208
176897
|
});
|
|
177209
176898
|
await registerLazy(ToolNames.LS, async () => {
|
|
@@ -177222,19 +176911,19 @@ var Config = class _Config {
|
|
|
177222
176911
|
}
|
|
177223
176912
|
if (this.getBareMode()) {
|
|
177224
176913
|
await registerLazy(ToolNames.READ_FILE, async () => {
|
|
177225
|
-
const { ReadFileTool } = await import("./read-file-
|
|
176914
|
+
const { ReadFileTool } = await import("./read-file-TGXV7LRJ.js");
|
|
177226
176915
|
return new ReadFileTool(this);
|
|
177227
176916
|
});
|
|
177228
176917
|
await registerLazy(ToolNames.EDIT, async () => {
|
|
177229
|
-
const { EditTool } = await import("./edit-
|
|
176918
|
+
const { EditTool } = await import("./edit-V46XHSY7.js");
|
|
177230
176919
|
return new EditTool(this);
|
|
177231
176920
|
});
|
|
177232
176921
|
await registerLazy(ToolNames.NOTEBOOK_EDIT, async () => {
|
|
177233
|
-
const { NotebookEditTool } = await import("./notebook-edit-
|
|
176922
|
+
const { NotebookEditTool } = await import("./notebook-edit-LLJZI52V.js");
|
|
177234
176923
|
return new NotebookEditTool(this);
|
|
177235
176924
|
});
|
|
177236
176925
|
await registerLazy(ToolNames.SHELL, async () => {
|
|
177237
|
-
const { ShellTool: ShellTool2 } = await import("./shell-
|
|
176926
|
+
const { ShellTool: ShellTool2 } = await import("./shell-HWIE3YJY.js");
|
|
177238
176927
|
return new ShellTool2(this);
|
|
177239
176928
|
});
|
|
177240
176929
|
await registerGoalWorkerTools();
|
|
@@ -177253,7 +176942,7 @@ var Config = class _Config {
|
|
|
177253
176942
|
return new ToolCallTool(registry4);
|
|
177254
176943
|
});
|
|
177255
176944
|
await registerLazy(ToolNames.TOOL_SEARCH, async () => {
|
|
177256
|
-
const { ToolSearchTool } = await import("./tool-search-
|
|
176945
|
+
const { ToolSearchTool } = await import("./tool-search-QGTV2ON5.js");
|
|
177257
176946
|
return new ToolSearchTool(this);
|
|
177258
176947
|
});
|
|
177259
176948
|
await registerLazy(ToolNames.READ_MCP_RESOURCE, async () => {
|
|
@@ -177261,7 +176950,7 @@ var Config = class _Config {
|
|
|
177261
176950
|
return new ReadMcpResourceTool(this);
|
|
177262
176951
|
});
|
|
177263
176952
|
await registerLazy(ToolNames.AGENT, async () => {
|
|
177264
|
-
const { AgentTool: AgentTool2 } = await import("./agent-
|
|
176953
|
+
const { AgentTool: AgentTool2 } = await import("./agent-VI6IBJKP.js");
|
|
177265
176954
|
return new AgentTool2(this);
|
|
177266
176955
|
});
|
|
177267
176956
|
await registerLazy(ToolNames.LIST_AGENTS, async () => {
|
|
@@ -177277,7 +176966,7 @@ var Config = class _Config {
|
|
|
177277
176966
|
return new SendMessageTool(this);
|
|
177278
176967
|
});
|
|
177279
176968
|
await registerLazy(ToolNames.SKILL, async () => {
|
|
177280
|
-
const { SkillTool } = await import("./skill-
|
|
176969
|
+
const { SkillTool } = await import("./skill-PAU4TRSD.js");
|
|
177281
176970
|
return new SkillTool(this);
|
|
177282
176971
|
});
|
|
177283
176972
|
if (this.isLsToolEnabled()) {
|
|
@@ -177287,11 +176976,11 @@ var Config = class _Config {
|
|
|
177287
176976
|
});
|
|
177288
176977
|
}
|
|
177289
176978
|
await registerLazy(ToolNames.READ_FILE, async () => {
|
|
177290
|
-
const { ReadFileTool } = await import("./read-file-
|
|
176979
|
+
const { ReadFileTool } = await import("./read-file-TGXV7LRJ.js");
|
|
177291
176980
|
return new ReadFileTool(this);
|
|
177292
176981
|
});
|
|
177293
176982
|
await registerLazy(ToolNames.ZOOM_IMAGE, async () => {
|
|
177294
|
-
const { ZoomImageTool } = await import("./zoom-image-
|
|
176983
|
+
const { ZoomImageTool } = await import("./zoom-image-WLBUTVWK.js");
|
|
177295
176984
|
return new ZoomImageTool(this);
|
|
177296
176985
|
});
|
|
177297
176986
|
if (this.getUseRipgrep()) {
|
|
@@ -177306,7 +176995,7 @@ var Config = class _Config {
|
|
|
177306
176995
|
recordStartupEvent("config_initialize_ripgrep_probe_end");
|
|
177307
176996
|
if (useRipgrep) {
|
|
177308
176997
|
await registerLazy(ToolNames.GREP, async () => {
|
|
177309
|
-
const { RipGrepTool } = await import("./ripGrep-
|
|
176998
|
+
const { RipGrepTool } = await import("./ripGrep-MJXCIT62.js");
|
|
177310
176999
|
return new RipGrepTool(this);
|
|
177311
177000
|
});
|
|
177312
177001
|
} else {
|
|
@@ -177332,23 +177021,23 @@ var Config = class _Config {
|
|
|
177332
177021
|
});
|
|
177333
177022
|
}
|
|
177334
177023
|
await registerLazy(ToolNames.GLOB, async () => {
|
|
177335
|
-
const { GlobTool } = await import("./glob-
|
|
177024
|
+
const { GlobTool } = await import("./glob-NHZYR52J.js");
|
|
177336
177025
|
return new GlobTool(this);
|
|
177337
177026
|
});
|
|
177338
177027
|
await registerLazy(ToolNames.EDIT, async () => {
|
|
177339
|
-
const { EditTool } = await import("./edit-
|
|
177028
|
+
const { EditTool } = await import("./edit-V46XHSY7.js");
|
|
177340
177029
|
return new EditTool(this);
|
|
177341
177030
|
});
|
|
177342
177031
|
await registerLazy(ToolNames.NOTEBOOK_EDIT, async () => {
|
|
177343
|
-
const { NotebookEditTool } = await import("./notebook-edit-
|
|
177032
|
+
const { NotebookEditTool } = await import("./notebook-edit-LLJZI52V.js");
|
|
177344
177033
|
return new NotebookEditTool(this);
|
|
177345
177034
|
});
|
|
177346
177035
|
await registerLazy(ToolNames.WRITE_FILE, async () => {
|
|
177347
|
-
const { WriteFileTool } = await import("./write-file-
|
|
177036
|
+
const { WriteFileTool } = await import("./write-file-HVNSGPXF.js");
|
|
177348
177037
|
return new WriteFileTool(this);
|
|
177349
177038
|
});
|
|
177350
177039
|
await registerLazy(ToolNames.SHELL, async () => {
|
|
177351
|
-
const { ShellTool: ShellTool2 } = await import("./shell-
|
|
177040
|
+
const { ShellTool: ShellTool2 } = await import("./shell-HWIE3YJY.js");
|
|
177352
177041
|
return new ShellTool2(this);
|
|
177353
177042
|
});
|
|
177354
177043
|
await registerLazy(ToolNames.REPORT_FINDINGS, async () => {
|
|
@@ -177364,13 +177053,13 @@ var Config = class _Config {
|
|
|
177364
177053
|
}
|
|
177365
177054
|
if (!this.sdkMode && (supportsUserInteraction || options2?.forSubAgent)) {
|
|
177366
177055
|
await registerLazy(ToolNames.EXIT_PLAN_MODE, async () => {
|
|
177367
|
-
const { ExitPlanModeTool: ExitPlanModeTool2 } = await import("./exitPlanMode-
|
|
177056
|
+
const { ExitPlanModeTool: ExitPlanModeTool2 } = await import("./exitPlanMode-IVJH3OXX.js");
|
|
177368
177057
|
return new ExitPlanModeTool2(this);
|
|
177369
177058
|
});
|
|
177370
177059
|
}
|
|
177371
177060
|
if (!this.sdkMode && supportsUserInteraction) {
|
|
177372
177061
|
await registerLazy(ToolNames.ENTER_PLAN_MODE, async () => {
|
|
177373
|
-
const { EnterPlanModeTool } = await import("./enterPlanMode-
|
|
177062
|
+
const { EnterPlanModeTool } = await import("./enterPlanMode-ZPTXYQMB.js");
|
|
177374
177063
|
return new EnterPlanModeTool(this);
|
|
177375
177064
|
});
|
|
177376
177065
|
}
|
|
@@ -177437,7 +177126,7 @@ var Config = class _Config {
|
|
|
177437
177126
|
}
|
|
177438
177127
|
if (this.isAgentTeamEnabled()) {
|
|
177439
177128
|
await registerLazy(ToolNames.TEAM_CREATE, async () => {
|
|
177440
|
-
const { TeamCreateTool } = await import("./team-create-
|
|
177129
|
+
const { TeamCreateTool } = await import("./team-create-4QRHJTSV.js");
|
|
177441
177130
|
return new TeamCreateTool(this);
|
|
177442
177131
|
});
|
|
177443
177132
|
await registerLazy(ToolNames.TEAM_DELETE, async () => {
|
|
@@ -177445,7 +177134,7 @@ var Config = class _Config {
|
|
|
177445
177134
|
return new TeamDeleteTool(this);
|
|
177446
177135
|
});
|
|
177447
177136
|
await registerLazy(ToolNames.TEAM_PLAN_APPROVAL, async () => {
|
|
177448
|
-
const { TeamPlanApprovalTool } = await import("./team-plan-approval-
|
|
177137
|
+
const { TeamPlanApprovalTool } = await import("./team-plan-approval-U6QCZ3I7.js");
|
|
177449
177138
|
return new TeamPlanApprovalTool(this);
|
|
177450
177139
|
});
|
|
177451
177140
|
if (!options2?.forSubAgent) {
|
|
@@ -177541,7 +177230,7 @@ var Config = class _Config {
|
|
|
177541
177230
|
}
|
|
177542
177231
|
}
|
|
177543
177232
|
await registerLazy(ToolNames.MONITOR, async () => {
|
|
177544
|
-
const { MonitorTool } = await import("./monitor-
|
|
177233
|
+
const { MonitorTool } = await import("./monitor-DVKR4R64.js");
|
|
177545
177234
|
return new MonitorTool(this);
|
|
177546
177235
|
});
|
|
177547
177236
|
if (this.pendingMcpBudgetCallback) {
|