@qwen-code/qwen-code 0.23.1 → 0.23.2-nightly.20260909.2e212144d3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -15
- package/bundled/computer-use/SKILL.md +1 -1
- package/bundled/qc-helper/docs/configuration/auth.md +1 -1
- package/bundled/qc-helper/docs/configuration/model-providers.md +19 -15
- package/bundled/qc-helper/docs/configuration/settings.md +1 -1
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
- package/bundled/qc-helper/docs/features/channels/github.md +1 -9
- package/bundled/qc-helper/docs/features/channels/overview.md +26 -51
- package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
- package/bundled/qc-helper/docs/features/commands.md +79 -17
- package/bundled/qc-helper/docs/features/computer-use.md +1 -1
- package/bundled/qc-helper/docs/features/cross-session-protocol.md +291 -0
- package/bundled/qc-helper/docs/features/goals.md +3 -1
- package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
- package/bundled/qc-helper/docs/qwen-serve.md +62 -48
- package/chunks/{MaxSizedBox-UDO6Y7RB.js → MaxSizedBox-ZBGWYJZW.js} +20 -19
- package/chunks/{StandaloneSessionPicker-D4CUOO4H.js → StandaloneSessionPicker-NR5ACIJZ.js} +35 -34
- package/chunks/{acpAgent-KWLJFADK.js → acpAgent-DM6XRCDQ.js} +307 -183
- package/chunks/{agent-GSUPGEOL.js → agent-EF3IIYE3.js} +13 -13
- package/chunks/{agent-headless-HNYCQUJB.js → agent-headless-5J2KFYR4.js} +13 -13
- package/chunks/{anthropicContentGenerator-I7LQZH26.js → anthropicContentGenerator-VIW2FG7G.js} +4 -4
- package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-G5LHNECG.js} +1 -1
- package/chunks/{askUserQuestion-I5W5S3D6.js → askUserQuestion-R3TXY77M.js} +1 -1
- package/chunks/{bridge-B7CV6RVI.js → bridge-LEMQM6QE.js} +21 -20
- package/chunks/{channel-management-service-TRTLQTSV.js → channel-management-service-TGF6XFXT.js} +4 -4
- package/chunks/{channel-settings-store-FW45IRUP.js → channel-settings-store-FV365JSF.js} +29 -28
- package/chunks/{channel-worker-group-PIYPVCTF.js → channel-worker-group-SQ5FRWOH.js} +5 -5
- package/chunks/{channel-worker-manager-FQHEDTD2.js → channel-worker-manager-TU4ZNWOE.js} +5 -5
- package/chunks/{channel-worker-supervisor-XJPZZ3VK.js → channel-worker-supervisor-EMITFMCP.js} +4 -4
- package/chunks/{chunk-3SH53ANB.js → chunk-22GORRNY.js} +12 -0
- package/chunks/{chunk-3LPJ776W.js → chunk-2HYOOFDS.js} +9 -6
- package/chunks/{chunk-S6QVI3MV.js → chunk-34VPADLG.js} +2 -2
- package/chunks/{chunk-WJDXKQIO.js → chunk-3A2IMUDH.js} +14 -2
- package/chunks/{chunk-DXQ6Z7AH.js → chunk-3O77M472.js} +224 -84
- package/chunks/{chunk-5CVY5Q2P.js → chunk-43EUMPKQ.js} +1 -1
- package/chunks/{chunk-ZNO5BUAD.js → chunk-4DIMJKWU.js} +46 -37
- package/chunks/{chunk-O2JBJQCF.js → chunk-5HV2HPO7.js} +1 -1
- package/chunks/{chunk-RXT4QBDX.js → chunk-5WBA3DEF.js} +1 -1
- package/chunks/{chunk-ARYNBBBM.js → chunk-6GAYNM3F.js} +3 -3
- package/chunks/{chunk-EEKU6COG.js → chunk-6S7YYUUH.js} +3 -3
- package/chunks/{chunk-OPMKGOLD.js → chunk-6VIATHL7.js} +1 -1
- package/chunks/{chunk-ENZDGHGJ.js → chunk-76I36BEM.js} +3 -3
- package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
- package/chunks/{chunk-UHUT4IDM.js → chunk-7IDZFJAV.js} +9 -9
- package/chunks/{chunk-5Z4FCEPY.js → chunk-7K4GGN3D.js} +606 -109
- package/chunks/{chunk-ZPL2TZNA.js → chunk-7KZVXJ4U.js} +1 -1
- package/chunks/{chunk-FWRRUITH.js → chunk-7WCJEY3A.js} +4 -4
- package/chunks/{chunk-MFYH2VXV.js → chunk-A7QZIGRB.js} +2 -2
- package/chunks/{chunk-27LTEY6D.js → chunk-ATBLEXXV.js} +7 -2
- package/chunks/{chunk-3BTHHXXE.js → chunk-AUTUFD5X.js} +1 -1
- package/chunks/chunk-AXMWHKXA.js +42 -0
- package/chunks/{chunk-QZOXVQPK.js → chunk-AXWTG6R7.js} +2 -5
- package/chunks/{chunk-PDUMGZ2P.js → chunk-BDAVT6K2.js} +486 -409
- package/chunks/{chunk-2YS3NU4A.js → chunk-BDP3NTWD.js} +3 -3
- package/chunks/{chunk-IKG2YVRZ.js → chunk-BZUHZCUO.js} +2 -2
- package/chunks/{chunk-USN6VNTO.js → chunk-C24ZDDNY.js} +1 -1
- package/chunks/{chunk-RPFJJ33Z.js → chunk-CALTQWTZ.js} +1 -1
- package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
- package/chunks/{chunk-3VDLQUR2.js → chunk-D6AGS266.js} +1 -1
- package/chunks/{chunk-DO5SMV52.js → chunk-D7DFZAK2.js} +17 -11
- package/chunks/{chunk-GM44O6F7.js → chunk-DARWOZY6.js} +1 -1
- package/chunks/{chunk-HUX2DOTF.js → chunk-DGNRLJ6S.js} +3 -3
- package/chunks/{chunk-FW4E4QPG.js → chunk-DVOCOIS5.js} +1 -1
- package/chunks/{chunk-OESZTXTG.js → chunk-E4LXNQAK.js} +1 -1
- package/chunks/{chunk-TWAMIEQ2.js → chunk-EATP5QCN.js} +16 -18
- package/chunks/{chunk-DZ6D4B3K.js → chunk-EDSU3VUG.js} +12 -5
- package/chunks/{chunk-EOET4H7C.js → chunk-EE5ZD4XU.js} +3 -3
- package/chunks/{chunk-B3EL44K3.js → chunk-EN3Q2S3J.js} +3 -3
- package/chunks/{chunk-N7YQEKGX.js → chunk-EOLGAQ25.js} +16 -15
- package/chunks/{chunk-3YQMUBTS.js → chunk-EYCW6UF2.js} +7 -7
- package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
- package/chunks/{chunk-FPGTNKCP.js → chunk-F3M6P6IQ.js} +199 -1
- package/chunks/{chunk-B44JBZBB.js → chunk-F4SAL7WM.js} +91 -3
- package/chunks/{chunk-XZ3Z43XL.js → chunk-FEEVHJOR.js} +3 -3
- package/chunks/{chunk-CHVU543W.js → chunk-FN4KHWCL.js} +1 -1
- package/chunks/{chunk-6QV7Z74P.js → chunk-FRS3P7MQ.js} +15 -2
- package/chunks/{chunk-FDOGGKAA.js → chunk-GSFV5RQW.js} +2 -0
- package/chunks/{chunk-XBVNNDPK.js → chunk-GSYD7MYP.js} +8 -3
- package/chunks/{chunk-VF6D6EGV.js → chunk-HSO6D4KX.js} +82 -25
- package/chunks/{chunk-L7V52QEZ.js → chunk-HUJJFSMO.js} +10 -10
- package/chunks/{chunk-CIKL2DQP.js → chunk-HW4MRP4V.js} +1 -1
- package/chunks/{chunk-TWWS7XUW.js → chunk-HWLLUDIA.js} +108 -16
- package/chunks/{chunk-75LBC7SV.js → chunk-IKK6NNS6.js} +32 -29
- package/chunks/{chunk-UXDVUFKU.js → chunk-JFAGT5YG.js} +2 -2
- package/chunks/{chunk-6SADVYQQ.js → chunk-JGTMTJSQ.js} +1 -1
- package/chunks/{chunk-45ROPFQY.js → chunk-JYGIJA4W.js} +1 -1
- package/chunks/{chunk-5WC2ECUK.js → chunk-KECCLCXM.js} +42 -8
- package/chunks/{chunk-CABDNUJ4.js → chunk-KEPC5BOL.js} +5 -5
- package/chunks/{chunk-WNISCNTA.js → chunk-L5VHJYHH.js} +2 -2
- package/chunks/{chunk-25CBAK3H.js → chunk-LKBOBUA2.js} +2 -2
- package/chunks/{chunk-6QILGINT.js → chunk-LOBKNYPR.js} +2 -2
- package/chunks/{chunk-2ZFO5JD7.js → chunk-LOVGQ3HZ.js} +9 -9
- package/chunks/{chunk-QK4K76T6.js → chunk-MUF4UGPB.js} +2 -2
- package/chunks/{chunk-JGDRB4FP.js → chunk-N3Z6Q7KC.js} +125 -10
- package/chunks/chunk-NFXXBWSE.js +463 -0
- package/chunks/{chunk-PQSCGZT2.js → chunk-NPKCVSXX.js} +26 -2
- package/chunks/{chunk-YCEKI7QX.js → chunk-NV4YYXFT.js} +1 -1
- package/chunks/{chunk-5IL2BZHW.js → chunk-O6BFERWN.js} +3 -3
- package/chunks/{chunk-TGC4264Q.js → chunk-OVTPETDL.js} +5 -5
- package/chunks/chunk-PLEBBGHL.js +1401 -0
- package/chunks/{chunk-3VWPPK5Q.js → chunk-PWR6BQ3U.js} +4 -4
- package/chunks/{chunk-D6AQNMUA.js → chunk-QA2B26PL.js} +3 -3
- package/chunks/{chunk-NFIDVZND.js → chunk-QB3KS3N3.js} +2 -21
- package/chunks/{chunk-LNCNUMJ5.js → chunk-SK6VACCM.js} +558 -158
- package/chunks/{chunk-YAC7H4K3.js → chunk-SM66GFKJ.js} +1 -1
- package/chunks/{chunk-MA5OUNN6.js → chunk-SNMUO5Z7.js} +1 -1
- package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
- package/chunks/{chunk-6JXHO7LG.js → chunk-SYKPMH2X.js} +3 -3
- package/chunks/{chunk-5HBA2Z7V.js → chunk-TGNNLRC3.js} +2 -3
- package/chunks/{chunk-EHTKOO6W.js → chunk-TRQNRP2H.js} +2 -2
- package/chunks/{chunk-LZGFVUWZ.js → chunk-UQOP2APG.js} +4 -24
- package/chunks/{chunk-T2IHCZLS.js → chunk-VAWM3A5N.js} +1 -1
- package/chunks/{chunk-M73KHGNR.js → chunk-VJJXG73H.js} +404 -226
- package/chunks/{chunk-WAASYFPK.js → chunk-VJWJOKOQ.js} +2 -2
- package/chunks/{chunk-WQMUGQ6G.js → chunk-VR6Y23FW.js} +1 -1
- package/chunks/{chunk-E7XSUYCZ.js → chunk-VX2NR3SD.js} +19 -4
- package/chunks/{chunk-XVTCSVBK.js → chunk-WDVV3LRM.js} +193 -169
- package/chunks/{chunk-RNYENHN5.js → chunk-WEU6O6VN.js} +2 -2
- package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
- package/chunks/{chunk-66JBCTJF.js → chunk-Y7YHAY32.js} +23 -6
- package/chunks/{chunk-7SL55L5H.js → chunk-YIE6REQ5.js} +20 -15
- package/chunks/{chunk-ZU2T5JIS.js → chunk-ZEFWBG2C.js} +736 -1148
- package/chunks/{chunk-6TPVIESH.js → chunk-ZM2TCZZ7.js} +3 -3
- package/chunks/{chunk-2TMJRF46.js → chunk-ZZ7RVOTU.js} +50 -18
- package/chunks/{config-utils-KTDSQ4MU.js → config-utils-SXFK3G4X.js} +24 -23
- package/chunks/{contextCommand-UQ3KRYGK.js → contextCommand-QFPD26QO.js} +21 -20
- package/chunks/{core-runtime-JR34JAFH.js → core-runtime-VXKNBODM.js} +26 -24
- package/chunks/{create-sub-session-RGPJOI4S.js → create-sub-session-7WSQETFR.js} +20 -19
- package/chunks/{daemon-UI6SQSBV.js → daemon-U2456K5H.js} +2 -2
- package/chunks/{daemon-git-worktree-guard-H3OA26KQ.js → daemon-git-worktree-guard-I4DCSDUS.js} +20 -19
- package/chunks/{daemon-status-provider-6WZLKSZU.js → daemon-status-provider-5UV56RI4.js} +25 -24
- package/chunks/{daemon-trust-policy-3EDP2BYD.js → daemon-trust-policy-DKIBWTKU.js} +25 -24
- package/chunks/{daemon-trust-policy-monitor-CRHZPK52.js → daemon-trust-policy-monitor-CPSD7UKT.js} +25 -24
- package/chunks/{deferred-core-runtime-LO5NTQQ4.js → deferred-core-runtime-D2RF35BL.js} +20 -19
- package/chunks/{dist-STAGIFNB.js → dist-6YDUH3BB.js} +388 -102
- package/chunks/{dist-XJ25G6OH.js → dist-BNQVF565.js} +2 -8
- package/chunks/{dist-NQ2636VT.js → dist-F34J4FZX.js} +1 -1
- package/chunks/{dist-OR2ZQTXZ.js → dist-F6JLAJLE.js} +1 -1
- package/chunks/{dist-24TCWK5H.js → dist-K5GHMXIG.js} +2 -2
- package/chunks/{dist-WZTUKIDR.js → dist-NP7QKLVG.js} +2 -2
- package/chunks/{dist-M4CBX53H.js → dist-UFTFGI6I.js} +1 -1
- package/chunks/{dist-5I4HLUTO.js → dist-XLV33CLY.js} +1 -2
- package/chunks/{dist-FDISN4AK.js → dist-ZDNJK74R.js} +3 -7
- package/chunks/{edit-LB7Z7XK5.js → edit-4IBADZ3O.js} +13 -13
- package/chunks/{enterPlanMode-P6TVUFIY.js → enterPlanMode-YN3GPQU5.js} +13 -13
- package/chunks/{environment-QATJNNKI.js → environment-E272IJMF.js} +22 -21
- package/chunks/{errors-3XJ37PS2.js → errors-CVAH3RWQ.js} +22 -21
- package/chunks/{exitPlanMode-A3OKL5UO.js → exitPlanMode-24J5IHGC.js} +13 -13
- package/chunks/{fast-path-DBIT5YQQ.js → fast-path-M5IDBMXF.js} +3 -3
- package/chunks/{glob-73EDTXUE.js → glob-ERBD7JYP.js} +13 -13
- package/chunks/{goal-tools-DFI6YMSD.js → goal-tools-245ULLQT.js} +13 -13
- package/chunks/{handleAutoUpdate-2FUNJO3B.js → handleAutoUpdate-JDZHHZKK.js} +22 -21
- package/chunks/{i18n-FDIA6KFI.js → i18n-LA4D5IXM.js} +20 -19
- package/chunks/{initializer-4MJTJOTW.js → initializer-SHPTSWUZ.js} +25 -24
- package/chunks/{installationInfo-232RA2OK.js → installationInfo-QEQEPB3G.js} +20 -19
- package/chunks/{list-WN6WSGEB.js → list-IBHCQWTF.js} +28 -27
- package/chunks/{list-agents-I5TRH3J7.js → list-agents-EDPZCGKN.js} +5 -4
- package/chunks/{llm-UDFWQWZA.js → llm-JAWCQLA4.js} +68 -62
- package/chunks/{llm-content-generator-VLMZ2A7A.js → llm-content-generator-GOV3A23T.js} +2 -2
- package/chunks/{loadedSettingsAdapter-OBQEIXM7.js → loadedSettingsAdapter-RVE2GNVU.js} +25 -24
- package/chunks/{loggingContentGenerator-RGVUMUVX.js → loggingContentGenerator-SSHNN5YW.js} +15 -15
- package/chunks/{managed-npm-update-QBAJYCFU.js → managed-npm-update-BHSTITQO.js} +20 -19
- package/chunks/{mcp-OTIZZCPY.js → mcp-6ZZ7P2HU.js} +25 -24
- package/chunks/{monitor-BV5XF6LL.js → monitor-RKK6GSHG.js} +13 -13
- package/chunks/{nonInteractiveCli-W6MUKDVJ.js → nonInteractiveCli-UQHP3G6P.js} +58 -57
- package/chunks/{notebook-edit-HGBEKGTE.js → notebook-edit-YM47A7WO.js} +13 -13
- package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
- package/chunks/{openaiContentGenerator-NSU3ERBH.js → openaiContentGenerator-FHKDWNI2.js} +9 -9
- package/chunks/{pidfile-LE3TU4GE.js → pidfile-SIIEJEEH.js} +23 -20
- package/chunks/{processUtils-YFBGJK67.js → processUtils-JF7CWBJC.js} +2 -2
- package/chunks/{prompt-terminal-ledger-4W4W7DSO.js → prompt-terminal-ledger-FXXHAEQU.js} +21 -20
- package/chunks/{qwenContentGenerator-HTA57WFC.js → qwenContentGenerator-KFJ77JP6.js} +16 -16
- package/chunks/{read-file-KHPQ2MB6.js → read-file-S2NOCBIL.js} +4 -4
- package/chunks/{resumeHistoryUtils-K7RV3QBN.js → resumeHistoryUtils-QHHPSQWU.js} +22 -21
- package/chunks/{ripGrep-NBBVCMG4.js → ripGrep-F6TNOJUO.js} +5 -5
- package/chunks/{run-qwen-serve-A3JBOZCM.js → run-qwen-serve-KYBDQRDD.js} +216 -64
- package/chunks/{runtime-7YOU2KJ3.js → runtime-3WNOFLCR.js} +32 -29
- package/chunks/{scheduled-tasks-52LXK7LN.js → scheduled-tasks-RNBH56DJ.js} +23 -22
- package/chunks/{scheduler-J44M72VM.js → scheduler-ERMW7Q7B.js} +22 -21
- package/chunks/{send-message-AWKUDJBH.js → send-message-V5T3NMFM.js} +3 -3
- package/chunks/{serve-TRC6XJUB.js → serve-7NV46RMP.js} +25 -24
- package/chunks/{server-YPNTJLX2.js → server-6RZJR5QF.js} +106 -154
- package/chunks/{session-FMMIBFYX.js → session-Z4EV7NVV.js} +91 -63
- package/chunks/{session-attachments-root-LDJMNK7K.js → session-attachments-root-SG5FC52X.js} +20 -19
- package/chunks/{session-pr-refresh-NLR4EK2J.js → session-pr-refresh-ILC4Z3ZM.js} +22 -21
- package/chunks/{settings-A46L577J.js → settings-Y47SPE3X.js} +24 -23
- package/chunks/{shell-Q5LSQPPY.js → shell-YBVCOPVO.js} +13 -13
- package/chunks/{skill-75KPJRCM.js → skill-AXC63EBA.js} +4 -4
- package/chunks/{skill-settings-775YT4YR.js → skill-settings-AFPAYGLO.js} +24 -23
- package/chunks/{spawnChannel-XY73I5CU.js → spawnChannel-ZFL4J2V3.js} +20 -19
- package/chunks/{standalone-update-L46XXNQ2.js → standalone-update-Y2OZPLNJ.js} +21 -20
- package/chunks/{start-opentui-ui-WLV43247.js → start-opentui-ui-G6TKT4LI.js} +449 -210
- package/chunks/{startInteractiveUI-F5DKMLOV.js → startInteractiveUI-YTNDPW7J.js} +1182 -1245
- package/chunks/{task-create-PMAFST2T.js → task-create-MWXJFRRM.js} +3 -3
- package/chunks/{task-list-R2HSY2NC.js → task-list-EYO3FE57.js} +2 -2
- package/chunks/{task-update-JYC57USF.js → task-update-2JJJRHMT.js} +3 -3
- package/chunks/{team-create-2PATB77U.js → team-create-BUFLGGSH.js} +13 -13
- package/chunks/{team-delete-CBHVBTPB.js → team-delete-IQZ6XGFI.js} +2 -2
- package/chunks/{team-plan-approval-QTANEWOS.js → team-plan-approval-OUWWM42U.js} +13 -13
- package/chunks/{terminal-image-renderer-OGULCFNF.js → terminal-image-renderer-WH2WV5ES.js} +20 -19
- package/chunks/{theme-manager-CNO3QERP.js → theme-manager-5UDRARM2.js} +20 -19
- package/chunks/{tool-search-VXWEOZE7.js → tool-search-MCDIRPHN.js} +4 -4
- package/chunks/{total-session-admission-4KAADZPB.js → total-session-admission-VL27U74Z.js} +21 -20
- package/chunks/{trustedFolders-PPJSOPOT.js → trustedFolders-MSXT4VDD.js} +21 -20
- package/chunks/{update-relaunch-4PT4MW7B.js → update-relaunch-JKLEWVCB.js} +5 -5
- package/chunks/{updateCheck-WAVFLWNG.js → updateCheck-ARTHAJT2.js} +20 -19
- package/chunks/{useAutoAcceptIndicator-XNED4NRB.js → useAutoAcceptIndicator-YEAAGYVU.js} +26 -25
- package/chunks/{validateNonInterActiveAuth-J676DUQ2.js → validateNonInterActiveAuth-EMRQKH5S.js} +56 -55
- package/chunks/{version-J6SRRQB2.js → version-HFQU35WD.js} +3 -1
- package/chunks/{web-fetch-FMZZYX44.js → web-fetch-QBXAO6VF.js} +4 -4
- package/chunks/{web-search-3G2KXCX5.js → web-search-2URQXA3A.js} +186 -9
- package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-BFDESDD4.js} +5 -4
- package/chunks/{workflow-PPZZICQ7.js → workflow-JDD6WDAH.js} +204 -68
- package/chunks/{workspace-providers-status-IIYTAQST.js → workspace-providers-status-B4IKR6YJ.js} +27 -26
- package/chunks/{workspace-registration-store-VHCDXAV7.js → workspace-registration-store-PJ3YHR45.js} +1 -2
- package/chunks/{workspace-registry-I7VQIPS2.js → workspace-registry-WVYJ5UGB.js} +21 -20
- package/chunks/{workspace-runtime-coordinator-DBGNY32G.js → workspace-runtime-coordinator-DXL5YVAG.js} +21 -20
- package/chunks/{workspace-service-QSKB2T54.js → workspace-service-QNGAMVH7.js} +26 -25
- package/chunks/{workspace-skills-status-T7GPT65J.js → workspace-skills-status-BEISJIII.js} +25 -24
- package/chunks/{workspace-trust-reconciler-2PKRDAU4.js → workspace-trust-reconciler-ORYJF5L4.js} +26 -25
- package/chunks/{write-file-L76CGFTQ.js → write-file-DWLKFBTJ.js} +14 -14
- package/chunks/{zoom-image-TDJJY2VZ.js → zoom-image-BYVIXSNQ.js} +4 -4
- package/cli.js +12 -12
- package/export-transcript-document.js +106 -106
- package/package.json +4 -4
- package/web-shell/assets/{abnfDiagram-VCTEODGH-DHc6plZn.js → abnfDiagram-VCTEODGH-C_8kzsly.js} +1 -1
- package/web-shell/assets/{arc-BQ9m8TDV.js → arc-CDg7Zfpm.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-D5ap3oVB.js → architectureDiagram-5GKGNRK7-DZzdCWyF.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-BIbnyNph.js → blockDiagram-NRAW4CY4-DI3B4gyR.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BRsdx_iG.js → c4Diagram-UCG6FXSJ-CfOgwHZW.js} +1 -1
- package/web-shell/assets/channel-e4xwS72w.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-3lf1fNlx.js → chunk-2Q5K7J3B-B_PUth0g.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-DP8VNRc4.js → chunk-5VM5RSS4-CrKtvBIL.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-DrohDmZ6.js → chunk-F27PBJKO-B4z2n8Py.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-UZ2QhSx6.js → chunk-G27WJ6UU-BUtrFEO8.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-BIMHVcZK.js → chunk-JWPE2WC7-Cqw3aXW0.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-izRxdSDd.js → chunk-LCL6LL3I-CZolnvls.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-CXADD4PP.js → chunk-POPQ4Y6H-DivgasCa.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-B96d8Y_1.js → chunk-SVP7TREG--seyb1B6.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-CF2sVQpv.js → chunk-XXDRQBXY-D7pHtuVM.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-CzXfUUOt.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-CzXfUUOt.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-CT6tXVAS.js → cose-bilkent-JH36ORCC-4MWaRF_3.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-X1NS4vtV.js → cynefin-OW5HDTMX-nhJhAjgD.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DNsKNOT4.js → cynefinDiagram-5FMLGOSQ-NF-PwXlq.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-9-AHKqsb.js → dagre-3AP2YEHR-Bu0ncdWP.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-Bjgms7j6.js → diagram-S7CK7UJ4-CsvhFHZC.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-h6bCprbE.js → diagram-UQ7AKVKN-Ck61sIB3.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-4SbQXVLt.js → diagram-VSXAHHWV-D0171zrb.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-B5gPCzzB.js → diagram-VX7I27RA-DvdxY4UL.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-DFJXIA3A.js → diagram-Z3DM3KII-CGGpseiB.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-FwyaU7VY.js → ebnfDiagram-PWID7BFC-K8-QMvY8.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-8vJQh2te.js → erDiagram-SSCWMZ5O-D316nAem.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-BzA_1gMN.js → flowDiagram-A5DVABFB-B7siy_mn.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-Co-ABbVX.js → ganttDiagram-EL5Y4UJY-BZQDxzTu.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DW_FcyrX.js → gitGraphDiagram-WWUBYQGX-DZynLCSV.js} +1 -1
- package/web-shell/assets/{index-BbMXfhNG.js → index-9ie6xLTM.js} +1 -1
- package/web-shell/assets/{index-Bu-rZoJ-.js → index-DirkXQEg.js} +488 -474
- package/web-shell/assets/index-DzdST_7L.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-BEgfhUFN.js → infoDiagram-RXCK75RN-B0gr769A.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DCsMxQmc.js → ishikawaDiagram-5VMMS53U-0pQFfjvX.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-DyIEYoHz.js → journeyDiagram-EYS64GPL-DEGtClWb.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-CkxjqCNr.js → kanban-definition-3QL26DDD-CnN8gPzw.js} +1 -1
- package/web-shell/assets/{layout-BEWc0Al9.js → layout-C_70RhaT.js} +1 -1
- package/web-shell/assets/{linear-CNuNxirL.js → linear-BJ2ZLmcq.js} +1 -1
- package/web-shell/assets/{mermaid.core-DZBre674.js → mermaid.core-RlY0zPNC.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-CpafFz_F.js → mindmap-definition-FBJOCRG2-CpVAxTNl.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-DfZqk_dq.js → pegDiagram-XKGWAZYB-DmrSv3hD.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-S0UWXlgC.js → pieDiagram-E7YTZNPT-CJmgp8KJ.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-dd37_Ohj.js → quadrantDiagram-AXDQQJYC-UsgOyNco.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-CH8NJZ7u.js → railroadDiagram-O6MQD6OU-DQ6gMs_W.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CFdqWYih.js → requirementDiagram-EFPCY7ZU-DhqadamF.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CsddcEGD.js → sankeyDiagram-P5KCCOFB-R4WnURaE.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BZ270mGw.js → sequenceDiagram-WJ2MYXX4-D7BwMi_D.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-CGaS4DBV.js → sizeCapture-X5ZJPWSS-Bqngz088.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-COpIzMu6.js → stateDiagram-HBIQ2CUA-DwaXPGqn.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-8GCQZAvv.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-CMF889m3.js → swimlanes-XN3QIQJK-BsaLeRDY.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-BoRBF2Yw.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-BelnxYz5.js → timeline-definition-24CTP7MA-NJ9G-NUU.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-CU-NRqIB.js → vennDiagram-4TSXK5OY-Ca3W4rSq.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CDNKqWh-.js → wardleyDiagram-VM6X3IG4-OabvjC-6.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-CLqguL5D.js → xychartDiagram-S5SC5T6Z-C7rbjvpc.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-6YEOCHSE.js +0 -142
- package/chunks/chunk-X35VIWWJ.js +0 -276
- package/web-shell/assets/channel-uMMdTrYk.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +0 -1
- package/web-shell/assets/index-CsPwZ1ut.css +0 -36
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +0 -8
|
@@ -50,7 +50,7 @@ import {
|
|
|
50
50
|
listTasks,
|
|
51
51
|
onTasksUpdated,
|
|
52
52
|
unassignTeammateTasks
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-XKBFYTCD.js";
|
|
54
54
|
import {
|
|
55
55
|
CronScheduler,
|
|
56
56
|
DEFAULT_RECURRING_MAX_AGE_DAYS,
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
sendStructuredMessage,
|
|
65
65
|
wrapConfirmWithBadge,
|
|
66
66
|
writeMessage
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-7CLLH5TI.js";
|
|
68
68
|
import {
|
|
69
69
|
AGENT_WORKTREE_SLUG_PATTERN,
|
|
70
70
|
GitWorktreeService,
|
|
@@ -102,7 +102,7 @@ import {
|
|
|
102
102
|
validateTranscriptRecord,
|
|
103
103
|
walkTranscriptUuidChain,
|
|
104
104
|
wrapUserPromptSubmitContext
|
|
105
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-GSFV5RQW.js";
|
|
106
106
|
import {
|
|
107
107
|
canUseRipgrep,
|
|
108
108
|
resolveBundleDir
|
|
@@ -157,7 +157,7 @@ import {
|
|
|
157
157
|
deriveSessionName,
|
|
158
158
|
patchSessionRecord,
|
|
159
159
|
unregisterSession
|
|
160
|
-
} from "./chunk-
|
|
160
|
+
} from "./chunk-F4SAL7WM.js";
|
|
161
161
|
import {
|
|
162
162
|
LEADER_NAME,
|
|
163
163
|
MAX_TEAMMATES,
|
|
@@ -170,7 +170,7 @@ import {
|
|
|
170
170
|
readPidNamespaceId,
|
|
171
171
|
sanitizeName,
|
|
172
172
|
writeTeamFile
|
|
173
|
-
} from "./chunk-
|
|
173
|
+
} from "./chunk-CH2YDT6X.js";
|
|
174
174
|
import {
|
|
175
175
|
APPROVAL_MODES
|
|
176
176
|
} from "./chunk-JX6XHPTX.js";
|
|
@@ -226,7 +226,7 @@ import {
|
|
|
226
226
|
resolveEffectiveOutputStyle,
|
|
227
227
|
resolveInteractionMode,
|
|
228
228
|
resolveMainSessionOutputStyle
|
|
229
|
-
} from "./chunk-
|
|
229
|
+
} from "./chunk-2HYOOFDS.js";
|
|
230
230
|
import {
|
|
231
231
|
findGitRoot,
|
|
232
232
|
getCachedGitBranch,
|
|
@@ -242,7 +242,7 @@ import {
|
|
|
242
242
|
import {
|
|
243
243
|
DashScopeOpenAICompatibleProvider,
|
|
244
244
|
selectDashScopeThinkingKnob
|
|
245
|
-
} from "./chunk-
|
|
245
|
+
} from "./chunk-HSO6D4KX.js";
|
|
246
246
|
import {
|
|
247
247
|
childLaunchDepth,
|
|
248
248
|
getCurrentAgentDepth,
|
|
@@ -279,7 +279,7 @@ import {
|
|
|
279
279
|
import {
|
|
280
280
|
DEFAULT_OPENAI_BASE_URL,
|
|
281
281
|
DEFAULT_STREAM_MAX_LIFETIME_MS
|
|
282
|
-
} from "./chunk-
|
|
282
|
+
} from "./chunk-AXMWHKXA.js";
|
|
283
283
|
import {
|
|
284
284
|
combineAbortSignals,
|
|
285
285
|
createAbortController,
|
|
@@ -391,7 +391,7 @@ import {
|
|
|
391
391
|
updateMCPServerStatus,
|
|
392
392
|
writeLine,
|
|
393
393
|
writeLineSync
|
|
394
|
-
} from "./chunk-
|
|
394
|
+
} from "./chunk-FRS3P7MQ.js";
|
|
395
395
|
import {
|
|
396
396
|
getInvocationContext,
|
|
397
397
|
runWithInvocationContext
|
|
@@ -399,7 +399,7 @@ import {
|
|
|
399
399
|
import {
|
|
400
400
|
defaultModalities,
|
|
401
401
|
isTieredEffortWireModel
|
|
402
|
-
} from "./chunk-
|
|
402
|
+
} from "./chunk-GSYD7MYP.js";
|
|
403
403
|
import {
|
|
404
404
|
Mutex
|
|
405
405
|
} from "./chunk-VGC4I5JJ.js";
|
|
@@ -448,7 +448,7 @@ import {
|
|
|
448
448
|
knownTokenLimit,
|
|
449
449
|
parsePositiveIntegerEnvValue,
|
|
450
450
|
tokenLimit
|
|
451
|
-
} from "./chunk-
|
|
451
|
+
} from "./chunk-F3M6P6IQ.js";
|
|
452
452
|
import {
|
|
453
453
|
AUTH_ENV_MAPPINGS,
|
|
454
454
|
DEFAULT_MODELS,
|
|
@@ -461,7 +461,7 @@ import {
|
|
|
461
461
|
createContentGenerator,
|
|
462
462
|
resetPreloadedContentGenerator,
|
|
463
463
|
resolveContentGeneratorConfigWithSources
|
|
464
|
-
} from "./chunk-
|
|
464
|
+
} from "./chunk-EOLGAQ25.js";
|
|
465
465
|
import {
|
|
466
466
|
atomicWriteFile,
|
|
467
467
|
atomicWriteFileSync,
|
|
@@ -20734,12 +20734,20 @@ __name(hasOnlyKeys2, "hasOnlyKeys");
|
|
|
20734
20734
|
init_esbuild_shims();
|
|
20735
20735
|
var GOAL_CHECKPOINT_VERIFIER_DEFAULT_TIMEOUT_MS = 18e4;
|
|
20736
20736
|
var GOAL_CHECKPOINT_VERIFIER_REQUEST_BYTE_LIMIT = 256e3;
|
|
20737
|
+
var debugLogger6 = createDebugLogger("GOAL_CHECKPOINT_VERIFIER");
|
|
20737
20738
|
var GOAL_CHECKPOINT_VERIFIER_SCHEMA = {
|
|
20738
20739
|
type: "object",
|
|
20739
20740
|
additionalProperties: false,
|
|
20740
20741
|
properties: {
|
|
20741
20742
|
claims: {
|
|
20742
20743
|
type: "array",
|
|
20744
|
+
// `description` is the only schema-level bound that survives to the
|
|
20745
|
+
// model. Strict normalisation drops `maxLength`/`maxItems` (they are in
|
|
20746
|
+
// OPENAI_STRICT_UNSUPPORTED_SCHEMA_KEYS), and `response_format` is not
|
|
20747
|
+
// sent at all to endpoints that are not official OpenAI -- so the
|
|
20748
|
+
// bounds are also stated in the system prompt and enforced on the way
|
|
20749
|
+
// back in.
|
|
20750
|
+
description: `Cumulative checkpoint claims. The combined UTF-8 size of every claim string must stay within ${GOAL_CHECKPOINT_CLAIM_MAX_BYTES} bytes. A response over that budget is rejected even when each individual claim is within its own length bound.`,
|
|
20743
20751
|
minItems: 1,
|
|
20744
20752
|
maxItems: GOAL_CHECKPOINT_CLAIM_LIMIT,
|
|
20745
20753
|
items: {
|
|
@@ -20773,9 +20781,34 @@ var GOAL_CHECKPOINT_VERIFIER_SYSTEM_PROMPT = `You are an independent Goal Eviden
|
|
|
20773
20781
|
|
|
20774
20782
|
Each output claim must cite one or more input IDs in sourceRefs. Preserve evidence semantics exactly: never change a source proofKind, and do not combine sources with different proofKind values into one claim. "delivered_output" proves only that content was delivered, "external_fact" supports external facts, and "user_input" supports what the user actually said or authorized.
|
|
20775
20783
|
|
|
20776
|
-
previousClaims are already verified checkpoint claims; to carry one forward, cite its id in sourceRefs. evidence contains the current bounded transcript evidence. Produce a cumulative checkpoint that retains every still-relevant fact needed to judge the Goal objective or a later terminal proposal. Omission may make the Goal impossible to verify, so preserve material progress, decisions, user constraints, external results, and delivered outputs. The combined UTF-8 size of all output claims must stay within ${GOAL_CHECKPOINT_CLAIM_MAX_BYTES} bytes, so compress the sources into dense claims. Do not make a terminal decision.
|
|
20784
|
+
previousClaims are already verified checkpoint claims; to carry one forward, cite its id in sourceRefs. evidence contains the current bounded transcript evidence. Produce a cumulative checkpoint that retains every still-relevant fact needed to judge the Goal objective or a later terminal proposal. Omission may make the Goal impossible to verify, so preserve material progress, decisions, user constraints, external results, and delivered outputs. Return at most ${GOAL_CHECKPOINT_CLAIM_LIMIT} claims. The combined UTF-8 size of all output claims must stay within ${GOAL_CHECKPOINT_CLAIM_MAX_BYTES} bytes, and every individual claim must stay within ${GOAL_CHECKPOINT_CLAIM_MAX_CHARACTERS} characters, so compress the sources into dense claims. Do not make a terminal decision.
|
|
20777
20785
|
|
|
20778
20786
|
Return exactly one JSON object with a non-empty claims array. Each claim must contain exactly proofKind, claim, and sourceRefs. Include no markdown fence, preamble, extra key, or commentary.`;
|
|
20787
|
+
var GoalCheckpointClaimBudgetError = class extends InvalidGoalCheckpointError {
|
|
20788
|
+
constructor(byteLength2) {
|
|
20789
|
+
super(
|
|
20790
|
+
`Goal checkpoint claims total ${byteLength2} bytes, over the ${GOAL_CHECKPOINT_CLAIM_MAX_BYTES}-byte budget`
|
|
20791
|
+
);
|
|
20792
|
+
this.byteLength = byteLength2;
|
|
20793
|
+
this.name = "GoalCheckpointClaimBudgetError";
|
|
20794
|
+
}
|
|
20795
|
+
static {
|
|
20796
|
+
__name(this, "GoalCheckpointClaimBudgetError");
|
|
20797
|
+
}
|
|
20798
|
+
};
|
|
20799
|
+
var GoalCheckpointClaimLengthError = class extends InvalidGoalCheckpointError {
|
|
20800
|
+
constructor(claimIndex, characterLength) {
|
|
20801
|
+
super(
|
|
20802
|
+
`Goal checkpoint verifier claim ${claimIndex + 1} is ${characterLength} characters, over the ${GOAL_CHECKPOINT_CLAIM_MAX_CHARACTERS}-character limit`
|
|
20803
|
+
);
|
|
20804
|
+
this.claimIndex = claimIndex;
|
|
20805
|
+
this.characterLength = characterLength;
|
|
20806
|
+
this.name = "GoalCheckpointClaimLengthError";
|
|
20807
|
+
}
|
|
20808
|
+
static {
|
|
20809
|
+
__name(this, "GoalCheckpointClaimLengthError");
|
|
20810
|
+
}
|
|
20811
|
+
};
|
|
20779
20812
|
var GoalCheckpointVerifierInputTooLargeError = class extends Error {
|
|
20780
20813
|
constructor(byteLength2) {
|
|
20781
20814
|
super(
|
|
@@ -20788,7 +20821,7 @@ var GoalCheckpointVerifierInputTooLargeError = class extends Error {
|
|
|
20788
20821
|
__name(this, "GoalCheckpointVerifierInputTooLargeError");
|
|
20789
20822
|
}
|
|
20790
20823
|
};
|
|
20791
|
-
function verifierContents(input) {
|
|
20824
|
+
function verifierContents(input, retryNote) {
|
|
20792
20825
|
const payload = {
|
|
20793
20826
|
goal: {
|
|
20794
20827
|
goalId: input.goal.goalId,
|
|
@@ -20809,11 +20842,15 @@ function verifierContents(input) {
|
|
|
20809
20842
|
}))
|
|
20810
20843
|
};
|
|
20811
20844
|
const text = JSON.stringify(payload);
|
|
20812
|
-
const
|
|
20845
|
+
const parts2 = retryNote ? [{ text }, { text: retryNote }] : [{ text }];
|
|
20846
|
+
const byteLength2 = parts2.reduce(
|
|
20847
|
+
(total, part) => total + Buffer.byteLength(part.text, "utf8"),
|
|
20848
|
+
0
|
|
20849
|
+
);
|
|
20813
20850
|
if (byteLength2 > GOAL_CHECKPOINT_VERIFIER_REQUEST_BYTE_LIMIT) {
|
|
20814
20851
|
throw new GoalCheckpointVerifierInputTooLargeError(byteLength2);
|
|
20815
20852
|
}
|
|
20816
|
-
return [{ role: "user", parts:
|
|
20853
|
+
return [{ role: "user", parts: parts2 }];
|
|
20817
20854
|
}
|
|
20818
20855
|
__name(verifierContents, "verifierContents");
|
|
20819
20856
|
function parseGoalCheckpointVerifierText(text) {
|
|
@@ -20833,13 +20870,52 @@ function parseGoalCheckpointVerifierText(text) {
|
|
|
20833
20870
|
const claims = value["claims"].map(
|
|
20834
20871
|
(claim, index) => parseClaim(claim, index)
|
|
20835
20872
|
);
|
|
20873
|
+
const claimBytes = claims.reduce(
|
|
20874
|
+
(total, claim) => total + Buffer.byteLength(claim.claim, "utf8"),
|
|
20875
|
+
0
|
|
20876
|
+
);
|
|
20877
|
+
if (claimBytes > GOAL_CHECKPOINT_CLAIM_MAX_BYTES) {
|
|
20878
|
+
throw new GoalCheckpointClaimBudgetError(claimBytes);
|
|
20879
|
+
}
|
|
20836
20880
|
return { claims };
|
|
20837
20881
|
}
|
|
20838
20882
|
__name(parseGoalCheckpointVerifierText, "parseGoalCheckpointVerifierText");
|
|
20883
|
+
function claimBudgetRetryNote(byteLength2) {
|
|
20884
|
+
return `Your previous answer was rejected: its claim strings totalled ${byteLength2} UTF-8 bytes, over the ${GOAL_CHECKPOINT_CLAIM_MAX_BYTES}-byte budget. Return the same coverage within the budget, keeping every individual claim at or under ${GOAL_CHECKPOINT_CLAIM_MAX_CHARACTERS} characters. Merge claims that share a source and state each fact once, cutting restatement rather than facts. Reply with the JSON object only.`;
|
|
20885
|
+
}
|
|
20886
|
+
__name(claimBudgetRetryNote, "claimBudgetRetryNote");
|
|
20887
|
+
function claimLengthRetryNote(claimIndex, characterLength) {
|
|
20888
|
+
return `Your previous answer was rejected: claim ${claimIndex + 1} was ${characterLength} characters, over the ${GOAL_CHECKPOINT_CLAIM_MAX_CHARACTERS}-character limit for a single claim. Return the same coverage with every individual claim at or under ${GOAL_CHECKPOINT_CLAIM_MAX_CHARACTERS} characters and all claims together at or under ${GOAL_CHECKPOINT_CLAIM_MAX_BYTES} UTF-8 bytes. Split the over-long claim into as few additional claims as the budget allows, without exceeding ${GOAL_CHECKPOINT_CLAIM_LIMIT} claims in one checkpoint, or compress it, rather than dropping facts. Reply with the JSON object only.`;
|
|
20889
|
+
}
|
|
20890
|
+
__name(claimLengthRetryNote, "claimLengthRetryNote");
|
|
20891
|
+
function correctiveRetryFor(error3) {
|
|
20892
|
+
if (error3 instanceof GoalCheckpointClaimBudgetError) {
|
|
20893
|
+
return {
|
|
20894
|
+
note: claimBudgetRetryNote(error3.byteLength),
|
|
20895
|
+
debugMessage: "Retrying goal checkpoint verifier after claim budget overrun",
|
|
20896
|
+
debugPayload: {
|
|
20897
|
+
byteLength: error3.byteLength,
|
|
20898
|
+
budgetBytes: GOAL_CHECKPOINT_CLAIM_MAX_BYTES
|
|
20899
|
+
}
|
|
20900
|
+
};
|
|
20901
|
+
}
|
|
20902
|
+
if (error3 instanceof GoalCheckpointClaimLengthError) {
|
|
20903
|
+
return {
|
|
20904
|
+
note: claimLengthRetryNote(error3.claimIndex, error3.characterLength),
|
|
20905
|
+
debugMessage: "Retrying goal checkpoint verifier after a claim overran the per-claim limit",
|
|
20906
|
+
debugPayload: {
|
|
20907
|
+
claimIndex: error3.claimIndex,
|
|
20908
|
+
characterLength: error3.characterLength,
|
|
20909
|
+
limitCharacters: GOAL_CHECKPOINT_CLAIM_MAX_CHARACTERS
|
|
20910
|
+
}
|
|
20911
|
+
};
|
|
20912
|
+
}
|
|
20913
|
+
return void 0;
|
|
20914
|
+
}
|
|
20915
|
+
__name(correctiveRetryFor, "correctiveRetryFor");
|
|
20839
20916
|
function createGoalCheckpointVerifier(config3, options2 = {}) {
|
|
20840
20917
|
const timeoutMs = options2.timeoutMs ?? GOAL_CHECKPOINT_VERIFIER_DEFAULT_TIMEOUT_MS;
|
|
20841
20918
|
return async (input, attemptSignal) => {
|
|
20842
|
-
const contents = verifierContents(input);
|
|
20843
20919
|
const timeoutController = new AbortController();
|
|
20844
20920
|
const timer = setTimeout(() => {
|
|
20845
20921
|
timeoutController.abort(
|
|
@@ -20848,37 +20924,62 @@ function createGoalCheckpointVerifier(config3, options2 = {}) {
|
|
|
20848
20924
|
}, timeoutMs);
|
|
20849
20925
|
const abortSignal = attemptSignal ? AbortSignal.any([attemptSignal, timeoutController.signal]) : timeoutController.signal;
|
|
20850
20926
|
try {
|
|
20851
|
-
|
|
20852
|
-
|
|
20853
|
-
|
|
20854
|
-
|
|
20855
|
-
|
|
20856
|
-
|
|
20857
|
-
|
|
20858
|
-
|
|
20859
|
-
|
|
20860
|
-
|
|
20861
|
-
|
|
20862
|
-
|
|
20863
|
-
|
|
20864
|
-
|
|
20865
|
-
|
|
20866
|
-
|
|
20867
|
-
|
|
20868
|
-
|
|
20869
|
-
|
|
20927
|
+
let retry;
|
|
20928
|
+
let retryCause;
|
|
20929
|
+
for (; ; ) {
|
|
20930
|
+
const contents = retryContents(input, retry?.note, retryCause);
|
|
20931
|
+
const result = await runSideQuery(config3, {
|
|
20932
|
+
contents,
|
|
20933
|
+
abortSignal,
|
|
20934
|
+
purpose: "goal-checkpoint-verifier",
|
|
20935
|
+
maxAttempts: 1,
|
|
20936
|
+
skipOutputLanguagePreference: true,
|
|
20937
|
+
// Stream so a slow claims generation outlives the provider request
|
|
20938
|
+
// timeout: non-streaming returns no bytes until the whole JSON is
|
|
20939
|
+
// generated, so the SDK timeout (default 120 s) would abort every
|
|
20940
|
+
// attempt past it and retry from zero, leaving any ceiling above
|
|
20941
|
+
// that unreachable. Streamed, the timeout bounds only connect +
|
|
20942
|
+
// first response and the stream guards apply instead.
|
|
20943
|
+
stream: true,
|
|
20944
|
+
systemInstruction: GOAL_CHECKPOINT_VERIFIER_SYSTEM_PROMPT,
|
|
20945
|
+
config: {
|
|
20946
|
+
temperature: 0,
|
|
20947
|
+
responseMimeType: "application/json",
|
|
20948
|
+
responseJsonSchema: GOAL_CHECKPOINT_VERIFIER_SCHEMA,
|
|
20949
|
+
thinkingConfig: { thinkingBudget: 0, includeThoughts: false }
|
|
20950
|
+
}
|
|
20951
|
+
// Parsing stays out of a validate hook: runSideQuery re-wraps hook
|
|
20952
|
+
// failures into plain Errors, erasing the InvalidGoalCheckpointError
|
|
20953
|
+
// class and message the verifier's own tests assert on.
|
|
20954
|
+
});
|
|
20955
|
+
try {
|
|
20956
|
+
return parseGoalCheckpointVerifierText(result.text);
|
|
20957
|
+
} catch (error3) {
|
|
20958
|
+
const corrective = retry === void 0 ? correctiveRetryFor(error3) : void 0;
|
|
20959
|
+
if (!corrective) throw error3;
|
|
20960
|
+
debugLogger6.debug(corrective.debugMessage, corrective.debugPayload);
|
|
20961
|
+
retry = corrective;
|
|
20962
|
+
retryCause = error3;
|
|
20870
20963
|
}
|
|
20871
|
-
|
|
20872
|
-
// failures into plain Errors, erasing the InvalidGoalCheckpointError
|
|
20873
|
-
// class and message the verifier's own tests assert on.
|
|
20874
|
-
});
|
|
20875
|
-
return parseGoalCheckpointVerifierText(result.text);
|
|
20964
|
+
}
|
|
20876
20965
|
} finally {
|
|
20877
20966
|
clearTimeout(timer);
|
|
20878
20967
|
}
|
|
20879
20968
|
};
|
|
20880
20969
|
}
|
|
20881
20970
|
__name(createGoalCheckpointVerifier, "createGoalCheckpointVerifier");
|
|
20971
|
+
function retryContents(input, note, retryCause) {
|
|
20972
|
+
if (note === void 0) return verifierContents(input);
|
|
20973
|
+
try {
|
|
20974
|
+
return verifierContents(input, note);
|
|
20975
|
+
} catch (error3) {
|
|
20976
|
+
if (error3 instanceof GoalCheckpointVerifierInputTooLargeError) {
|
|
20977
|
+
throw retryCause;
|
|
20978
|
+
}
|
|
20979
|
+
throw error3;
|
|
20980
|
+
}
|
|
20981
|
+
}
|
|
20982
|
+
__name(retryContents, "retryContents");
|
|
20882
20983
|
function parseClaim(value, index) {
|
|
20883
20984
|
if (!isRecord3(value) || !hasOnlyKeys3(value, ["proofKind", "claim", "sourceRefs"]) || !isGoalEvidenceProofKind(value["proofKind"]) || typeof value["claim"] !== "string" || !Array.isArray(value["sourceRefs"]) || value["sourceRefs"].length === 0 || value["sourceRefs"].length > GOAL_CHECKPOINT_SOURCE_REFERENCE_LIMIT || value["sourceRefs"].some(
|
|
20884
20985
|
(reference) => typeof reference !== "string" || reference.length === 0
|
|
@@ -20888,11 +20989,15 @@ function parseClaim(value, index) {
|
|
|
20888
20989
|
);
|
|
20889
20990
|
}
|
|
20890
20991
|
const claim = value["claim"].trim();
|
|
20891
|
-
if (!claim
|
|
20992
|
+
if (!claim) {
|
|
20892
20993
|
throw new InvalidGoalCheckpointError(
|
|
20893
20994
|
`Goal checkpoint verifier claim ${index + 1} is invalid`
|
|
20894
20995
|
);
|
|
20895
20996
|
}
|
|
20997
|
+
const characterLength = [...claim].length;
|
|
20998
|
+
if (characterLength > GOAL_CHECKPOINT_CLAIM_MAX_CHARACTERS) {
|
|
20999
|
+
throw new GoalCheckpointClaimLengthError(index, characterLength);
|
|
21000
|
+
}
|
|
20896
21001
|
return {
|
|
20897
21002
|
proofKind: value["proofKind"],
|
|
20898
21003
|
claim,
|
|
@@ -21550,7 +21655,7 @@ function createMigratedGoalState(input) {
|
|
|
21550
21655
|
__name(createMigratedGoalState, "createMigratedGoalState");
|
|
21551
21656
|
|
|
21552
21657
|
// packages/core/src/goals/goal-runtime.ts
|
|
21553
|
-
var
|
|
21658
|
+
var debugLogger7 = createDebugLogger("GOAL_RUNTIME");
|
|
21554
21659
|
var GOAL_RUNTIME_DISPOSED_MESSAGE = "Goal runtime has been disposed";
|
|
21555
21660
|
var STALE_GOAL_TURN_MESSAGE = "Goal turn permit is no longer valid";
|
|
21556
21661
|
var GoalPersistenceUnavailableError = class extends Error {
|
|
@@ -21733,6 +21838,11 @@ function createGoalRuntime(options2) {
|
|
|
21733
21838
|
continuationQueued = false;
|
|
21734
21839
|
const scheduledHost = host;
|
|
21735
21840
|
const continuationContext = snapshot.goal.objective;
|
|
21841
|
+
const usage = {
|
|
21842
|
+
tokensUsed: snapshot.goal.tokensUsed,
|
|
21843
|
+
...snapshot.goal.tokenBudget === void 0 ? {} : { tokenBudget: snapshot.goal.tokenBudget },
|
|
21844
|
+
turnCount: snapshot.goal.turnCount
|
|
21845
|
+
};
|
|
21736
21846
|
const verifierFeedback = nextVerifierFeedback;
|
|
21737
21847
|
nextVerifierFeedback = void 0;
|
|
21738
21848
|
currentTurnFeedback = verifierFeedback;
|
|
@@ -21792,6 +21902,7 @@ function createGoalRuntime(options2) {
|
|
|
21792
21902
|
continuationContext,
|
|
21793
21903
|
...objectiveUpdated ? { objectiveUpdated } : {},
|
|
21794
21904
|
...windDown ? { windDown } : {},
|
|
21905
|
+
usage,
|
|
21795
21906
|
...verifierFeedback ? { verifierFeedback } : {}
|
|
21796
21907
|
});
|
|
21797
21908
|
} catch {
|
|
@@ -22237,7 +22348,7 @@ function createGoalRuntime(options2) {
|
|
|
22237
22348
|
);
|
|
22238
22349
|
return;
|
|
22239
22350
|
}
|
|
22240
|
-
|
|
22351
|
+
debugLogger7.debug(
|
|
22241
22352
|
"Checkpoint check failed; counted as a stall only if the window overflowed and the check was not a restore replay.",
|
|
22242
22353
|
`windowTruncated=${window2.truncated}`,
|
|
22243
22354
|
error3,
|
|
@@ -22815,112 +22926,6 @@ ${proposal.reason}`;
|
|
|
22815
22926
|
}
|
|
22816
22927
|
__name(createGoalRuntime, "createGoalRuntime");
|
|
22817
22928
|
|
|
22818
|
-
// packages/core/src/goals/activeGoalStore.ts
|
|
22819
|
-
init_esbuild_shims();
|
|
22820
|
-
var store = /* @__PURE__ */ new Map();
|
|
22821
|
-
function activeGoalEquals(left, right) {
|
|
22822
|
-
if (left === right) return true;
|
|
22823
|
-
if (!left || !right) return false;
|
|
22824
|
-
return stableActiveGoalKey(left) === stableActiveGoalKey(right);
|
|
22825
|
-
}
|
|
22826
|
-
__name(activeGoalEquals, "activeGoalEquals");
|
|
22827
|
-
function stableActiveGoalKey(goal) {
|
|
22828
|
-
const comparable = {};
|
|
22829
|
-
for (const key of Object.keys(goal).sort()) {
|
|
22830
|
-
if (key === "deferredEvaluations") continue;
|
|
22831
|
-
const value = goal[key];
|
|
22832
|
-
if (value !== void 0) {
|
|
22833
|
-
comparable[key] = value;
|
|
22834
|
-
}
|
|
22835
|
-
}
|
|
22836
|
-
return JSON.stringify(comparable);
|
|
22837
|
-
}
|
|
22838
|
-
__name(stableActiveGoalKey, "stableActiveGoalKey");
|
|
22839
|
-
function getActiveGoal(sessionId) {
|
|
22840
|
-
return store.get(sessionId);
|
|
22841
|
-
}
|
|
22842
|
-
__name(getActiveGoal, "getActiveGoal");
|
|
22843
|
-
function clearActiveGoal(sessionId) {
|
|
22844
|
-
const previous = store.get(sessionId);
|
|
22845
|
-
store.delete(sessionId);
|
|
22846
|
-
return previous;
|
|
22847
|
-
}
|
|
22848
|
-
__name(clearActiveGoal, "clearActiveGoal");
|
|
22849
|
-
var observers = /* @__PURE__ */ new Map();
|
|
22850
|
-
function clearGoalTerminalObserver(sessionId) {
|
|
22851
|
-
observers.delete(sessionId);
|
|
22852
|
-
}
|
|
22853
|
-
__name(clearGoalTerminalObserver, "clearGoalTerminalObserver");
|
|
22854
|
-
function notifyGoalTerminal(sessionId, event) {
|
|
22855
|
-
recordLastTerminalEvent(sessionId, event);
|
|
22856
|
-
const observer = observers.get(sessionId);
|
|
22857
|
-
if (!observer) return;
|
|
22858
|
-
try {
|
|
22859
|
-
observer(event);
|
|
22860
|
-
} catch {
|
|
22861
|
-
}
|
|
22862
|
-
}
|
|
22863
|
-
__name(notifyGoalTerminal, "notifyGoalTerminal");
|
|
22864
|
-
var lastTerminal = /* @__PURE__ */ new Map();
|
|
22865
|
-
function recordLastTerminalEvent(sessionId, event) {
|
|
22866
|
-
lastTerminal.set(sessionId, event);
|
|
22867
|
-
}
|
|
22868
|
-
__name(recordLastTerminalEvent, "recordLastTerminalEvent");
|
|
22869
|
-
|
|
22870
|
-
// packages/core/src/goals/goalHook.ts
|
|
22871
|
-
init_esbuild_shims();
|
|
22872
|
-
|
|
22873
|
-
// packages/core/src/goals/goalJudge.ts
|
|
22874
|
-
init_esbuild_shims();
|
|
22875
|
-
var debugLogger7 = createDebugLogger("GOAL_JUDGE");
|
|
22876
|
-
|
|
22877
|
-
// packages/core/src/goals/goalHook.ts
|
|
22878
|
-
var debugLogger8 = createDebugLogger("GOAL_HOOK");
|
|
22879
|
-
var GOAL_HOOK_TIMEOUT_SECONDS = 30;
|
|
22880
|
-
var GOAL_HOOK_TIMEOUT_MS = GOAL_HOOK_TIMEOUT_SECONDS * 1e3;
|
|
22881
|
-
var GOAL_HOOK_ID_OUTPUT_KEY = "qwenGoalHookId";
|
|
22882
|
-
function getStopHookContinuationReason(output) {
|
|
22883
|
-
const hasGoalOutput = typeof output.hookSpecificOutput?.[GOAL_HOOK_ID_OUTPUT_KEY] === "string";
|
|
22884
|
-
if (!hasGoalOutput) {
|
|
22885
|
-
return output.stopReason || output.reason || "No reason provided";
|
|
22886
|
-
}
|
|
22887
|
-
return [output.stopReason, output.reason].filter(Boolean).join("\n") || "No reason provided";
|
|
22888
|
-
}
|
|
22889
|
-
__name(getStopHookContinuationReason, "getStopHookContinuationReason");
|
|
22890
|
-
function removeGoalFunctionHook(config3, sessionId, goal) {
|
|
22891
|
-
const system = config3.getHookSystem?.();
|
|
22892
|
-
if (!system) return;
|
|
22893
|
-
try {
|
|
22894
|
-
system.removeFunctionHook(sessionId, "Stop" /* Stop */, goal.hookId);
|
|
22895
|
-
} catch (err) {
|
|
22896
|
-
debugLogger8.debug(
|
|
22897
|
-
`Failed to remove goal hook ${goal.hookId}: ${err instanceof Error ? err.message : String(err)}`
|
|
22898
|
-
);
|
|
22899
|
-
}
|
|
22900
|
-
}
|
|
22901
|
-
__name(removeGoalFunctionHook, "removeGoalFunctionHook");
|
|
22902
|
-
function finishGoal(config3, sessionId, goal, event) {
|
|
22903
|
-
clearActiveGoal(sessionId);
|
|
22904
|
-
removeGoalFunctionHook(config3, sessionId, goal);
|
|
22905
|
-
notifyGoalTerminal(sessionId, event);
|
|
22906
|
-
clearGoalTerminalObserver(sessionId);
|
|
22907
|
-
}
|
|
22908
|
-
__name(finishGoal, "finishGoal");
|
|
22909
|
-
function abortGoalForStopHookCap(config3, sessionId, systemMessage) {
|
|
22910
|
-
const goal = getActiveGoal(sessionId);
|
|
22911
|
-
if (!goal) return false;
|
|
22912
|
-
finishGoal(config3, sessionId, goal, {
|
|
22913
|
-
kind: "aborted",
|
|
22914
|
-
condition: goal.condition,
|
|
22915
|
-
iterations: goal.iterations,
|
|
22916
|
-
durationMs: Date.now() - goal.setAt,
|
|
22917
|
-
lastReason: goal.lastReason,
|
|
22918
|
-
systemMessage
|
|
22919
|
-
});
|
|
22920
|
-
return true;
|
|
22921
|
-
}
|
|
22922
|
-
__name(abortGoalForStopHookCap, "abortGoalForStopHookCap");
|
|
22923
|
-
|
|
22924
22929
|
// packages/core/src/hooks/stopHookCap.ts
|
|
22925
22930
|
init_esbuild_shims();
|
|
22926
22931
|
var DEFAULT_STOP_HOOK_BLOCK_CAP = 8;
|
|
@@ -22981,7 +22986,7 @@ import * as fs3 from "node:fs";
|
|
|
22981
22986
|
import * as path3 from "node:path";
|
|
22982
22987
|
import { performance as performance2 } from "node:perf_hooks";
|
|
22983
22988
|
var SESSION_START_PROFILE_ENV = "QWEN_CODE_PROFILE_SESSION_START";
|
|
22984
|
-
var
|
|
22989
|
+
var debugLogger8 = createDebugLogger("SESSION_START_PROFILER");
|
|
22985
22990
|
function roundMs(value) {
|
|
22986
22991
|
return Math.round(value * 100) / 100;
|
|
22987
22992
|
}
|
|
@@ -23124,7 +23129,7 @@ var EnabledSessionStartProfiler = class {
|
|
|
23124
23129
|
} catch (error3) {
|
|
23125
23130
|
const code = isNodeError(error3) ? error3.code : void 0;
|
|
23126
23131
|
try {
|
|
23127
|
-
|
|
23132
|
+
debugLogger8.debug("session-start-profiler write failed", {
|
|
23128
23133
|
name: error3 instanceof Error ? error3.name : typeof error3,
|
|
23129
23134
|
message: error3 instanceof Error ? error3.message : void 0,
|
|
23130
23135
|
...code ? { code } : {}
|
|
@@ -23144,7 +23149,7 @@ function createSessionStartProfiler(source, options2 = {}) {
|
|
|
23144
23149
|
return disabledProfiler;
|
|
23145
23150
|
}
|
|
23146
23151
|
try {
|
|
23147
|
-
|
|
23152
|
+
debugLogger8.debug("session-start-profiler enabled", { source });
|
|
23148
23153
|
} catch {
|
|
23149
23154
|
}
|
|
23150
23155
|
return new EnabledSessionStartProfiler(source, {
|
|
@@ -23449,7 +23454,7 @@ function jsonStringExceedsByteLength(value, threshold) {
|
|
|
23449
23454
|
__name(jsonStringExceedsByteLength, "jsonStringExceedsByteLength");
|
|
23450
23455
|
|
|
23451
23456
|
// packages/core/src/tools/tool-response-finalizer.ts
|
|
23452
|
-
var
|
|
23457
|
+
var debugLogger9 = createDebugLogger("TOOL_RESPONSE_FINALIZER");
|
|
23453
23458
|
var associatedFinalizerResponses = /* @__PURE__ */ new WeakSet();
|
|
23454
23459
|
function consumeAssociatedFinalizerEntries(entries) {
|
|
23455
23460
|
const associated = /* @__PURE__ */ new Set();
|
|
@@ -23810,7 +23815,7 @@ async function finalizeToolResponses(config3, entries, promptIds, observeBoundar
|
|
|
23810
23815
|
(sum, slot) => sum + slot.text.length,
|
|
23811
23816
|
0
|
|
23812
23817
|
);
|
|
23813
|
-
|
|
23818
|
+
debugLogger9.info(
|
|
23814
23819
|
`Tool response budget (${budget} chars): reduced ${entriesToPersist.size} result(s) from ${total} to ${finalizedTotal} chars.`
|
|
23815
23820
|
);
|
|
23816
23821
|
return finalized;
|
|
@@ -24132,7 +24137,7 @@ async function checkPriorRead(cache, filePath, verb, options2 = {}) {
|
|
|
24132
24137
|
__name(checkPriorRead, "checkPriorRead");
|
|
24133
24138
|
|
|
24134
24139
|
// packages/core/src/tools/exitPlanMode.ts
|
|
24135
|
-
var
|
|
24140
|
+
var debugLogger10 = createDebugLogger("EXIT_PLAN_MODE");
|
|
24136
24141
|
var exitPlanModeToolDescription = `Use this tool when you are in plan mode and have finished presenting your plan and are ready to code. This will prompt the user to exit plan mode.
|
|
24137
24142
|
|
|
24138
24143
|
## When to Use This Tool
|
|
@@ -24225,14 +24230,23 @@ var ExitPlanModeToolInvocation = class extends BaseToolInvocation {
|
|
|
24225
24230
|
hideAlwaysAllow: true,
|
|
24226
24231
|
plan: snapshot.plan,
|
|
24227
24232
|
prePlanMode: snapshot.prePlanMode,
|
|
24228
|
-
onConfirm: /* @__PURE__ */ __name(async (outcome) => {
|
|
24233
|
+
onConfirm: /* @__PURE__ */ __name(async (outcome, payload) => {
|
|
24229
24234
|
switch (outcome) {
|
|
24230
|
-
case "restore_previous" /* RestorePrevious */:
|
|
24235
|
+
case "restore_previous" /* RestorePrevious */: {
|
|
24236
|
+
this.approval = void 0;
|
|
24237
|
+
const executionMode = this.config.getPlanExecutionMode?.();
|
|
24238
|
+
if (executionMode !== void 0 && payload?.expectedPlanExecutionMode !== executionMode) {
|
|
24239
|
+
throw new StructuredToolError(
|
|
24240
|
+
"Execution permission changed or was not confirmed. Request plan approval again with the current permission.",
|
|
24241
|
+
"execution_denied" /* EXECUTION_DENIED */
|
|
24242
|
+
);
|
|
24243
|
+
}
|
|
24231
24244
|
this.approval = {
|
|
24232
24245
|
snapshot,
|
|
24233
|
-
targetMode: snapshot.prePlanMode
|
|
24246
|
+
targetMode: executionMode ?? snapshot.prePlanMode
|
|
24234
24247
|
};
|
|
24235
24248
|
break;
|
|
24249
|
+
}
|
|
24236
24250
|
case "proceed_always" /* ProceedAlways */:
|
|
24237
24251
|
this.approval = {
|
|
24238
24252
|
snapshot,
|
|
@@ -24263,7 +24277,7 @@ var ExitPlanModeToolInvocation = class extends BaseToolInvocation {
|
|
|
24263
24277
|
return buildSubagentPlanToolBlockedResult(
|
|
24264
24278
|
ToolNames.EXIT_PLAN_MODE,
|
|
24265
24279
|
"ExitPlanModeTool",
|
|
24266
|
-
|
|
24280
|
+
debugLogger10
|
|
24267
24281
|
);
|
|
24268
24282
|
}
|
|
24269
24283
|
if (this.config.getApprovalMode() !== "plan" /* PLAN */ && !this.approval) {
|
|
@@ -24305,7 +24319,7 @@ var ExitPlanModeToolInvocation = class extends BaseToolInvocation {
|
|
|
24305
24319
|
});
|
|
24306
24320
|
} catch (error3) {
|
|
24307
24321
|
const message = error3 instanceof Error ? error3.message : String(error3);
|
|
24308
|
-
|
|
24322
|
+
debugLogger10.error(
|
|
24309
24323
|
`[ExitPlanModeTool] Failed to set approval mode to "${targetMode}": ${message}`
|
|
24310
24324
|
);
|
|
24311
24325
|
return this.errorResult(
|
|
@@ -24412,7 +24426,7 @@ ${llmContent}`,
|
|
|
24412
24426
|
try {
|
|
24413
24427
|
this.config.savePlan(plan);
|
|
24414
24428
|
} catch (error3) {
|
|
24415
|
-
|
|
24429
|
+
debugLogger10.warn(
|
|
24416
24430
|
`[ExitPlanModeTool] Failed to save plan to disk: ${error3 instanceof Error ? error3.message : String(error3)}`
|
|
24417
24431
|
);
|
|
24418
24432
|
}
|
|
@@ -24884,6 +24898,21 @@ function compactToolResultDisplay(resultDisplay, purpose) {
|
|
|
24884
24898
|
if (resultDisplay === void 0) {
|
|
24885
24899
|
return resultDisplay;
|
|
24886
24900
|
}
|
|
24901
|
+
if (typeof resultDisplay === "object" && resultDisplay !== null && "type" in resultDisplay && resultDisplay.type === "ask_user_question_answers") {
|
|
24902
|
+
if (typeof resultDisplay.text !== "string" || !Array.isArray(resultDisplay.answers) || !resultDisplay.answers.every(
|
|
24903
|
+
(entry) => typeof entry === "object" && entry !== null && typeof entry.question === "string" && typeof entry.answer === "string"
|
|
24904
|
+
)) {
|
|
24905
|
+
return resultDisplay;
|
|
24906
|
+
}
|
|
24907
|
+
return {
|
|
24908
|
+
...resultDisplay,
|
|
24909
|
+
text: compactString(resultDisplay.text, purpose),
|
|
24910
|
+
answers: resultDisplay.answers.map(({ question, answer }) => ({
|
|
24911
|
+
question: compactString(question, purpose),
|
|
24912
|
+
answer: compactString(answer, purpose)
|
|
24913
|
+
}))
|
|
24914
|
+
};
|
|
24915
|
+
}
|
|
24887
24916
|
if (isFileDiffDisplay(resultDisplay)) {
|
|
24888
24917
|
return compactFileDiff(resultDisplay, purpose);
|
|
24889
24918
|
}
|
|
@@ -24990,7 +25019,7 @@ init_esbuild_shims();
|
|
|
24990
25019
|
init_esbuild_shims();
|
|
24991
25020
|
import fs5 from "node:fs";
|
|
24992
25021
|
import path4 from "node:path";
|
|
24993
|
-
var
|
|
25022
|
+
var debugLogger11 = createDebugLogger("USAGE_HISTORY");
|
|
24994
25023
|
var MS_PER_DAY = 24 * 60 * 60 * 1e3;
|
|
24995
25024
|
var LIVE_REBUILD_WINDOW_DAYS = 35;
|
|
24996
25025
|
function getUsageHistoryPath() {
|
|
@@ -25117,13 +25146,13 @@ async function prepareUsageBeforeTranscriptDeletion(transcriptPath) {
|
|
|
25117
25146
|
}
|
|
25118
25147
|
}
|
|
25119
25148
|
} catch (e) {
|
|
25120
|
-
|
|
25149
|
+
debugLogger11.debug(
|
|
25121
25150
|
`persistUsageBeforeTranscriptDeletion: cannot read history: ${e}`
|
|
25122
25151
|
);
|
|
25123
25152
|
}
|
|
25124
25153
|
return { usagePath, record: summarized.record };
|
|
25125
25154
|
} catch (e) {
|
|
25126
|
-
|
|
25155
|
+
debugLogger11.debug(`prepareUsageBeforeTranscriptDeletion: ${e}`);
|
|
25127
25156
|
return null;
|
|
25128
25157
|
}
|
|
25129
25158
|
}
|
|
@@ -25143,7 +25172,7 @@ function commitUsageBeforeTranscriptDeletion(prepared) {
|
|
|
25143
25172
|
writeLineSync(prepared.usagePath, prepared.record);
|
|
25144
25173
|
return true;
|
|
25145
25174
|
} catch (e) {
|
|
25146
|
-
|
|
25175
|
+
debugLogger11.debug(`commitUsageBeforeTranscriptDeletion: ${e}`);
|
|
25147
25176
|
return false;
|
|
25148
25177
|
}
|
|
25149
25178
|
}
|
|
@@ -25159,7 +25188,7 @@ async function rebuildFromSessionJsonl(options2 = {}) {
|
|
|
25159
25188
|
try {
|
|
25160
25189
|
if (!fs5.existsSync(projectsDir)) return [];
|
|
25161
25190
|
} catch (e) {
|
|
25162
|
-
|
|
25191
|
+
debugLogger11.debug(
|
|
25163
25192
|
`rebuildFromSessionJsonl: cannot access projectsDir: ${e}`
|
|
25164
25193
|
);
|
|
25165
25194
|
return [];
|
|
@@ -25170,7 +25199,7 @@ async function rebuildFromSessionJsonl(options2 = {}) {
|
|
|
25170
25199
|
try {
|
|
25171
25200
|
projectDirs = fs5.readdirSync(projectsDir);
|
|
25172
25201
|
} catch (e) {
|
|
25173
|
-
|
|
25202
|
+
debugLogger11.debug(`rebuildFromSessionJsonl: cannot read projectsDir: ${e}`);
|
|
25174
25203
|
return [];
|
|
25175
25204
|
}
|
|
25176
25205
|
for (const projDir of projectDirs) {
|
|
@@ -25179,7 +25208,7 @@ async function rebuildFromSessionJsonl(options2 = {}) {
|
|
|
25179
25208
|
try {
|
|
25180
25209
|
files = fs5.readdirSync(chatsDir).filter((f2) => f2.endsWith(".jsonl") && !f2.endsWith(".ledger.jsonl"));
|
|
25181
25210
|
} catch (e) {
|
|
25182
|
-
|
|
25211
|
+
debugLogger11.debug(
|
|
25183
25212
|
`rebuildFromSessionJsonl: cannot read chatsDir ${chatsDir}: ${e}`
|
|
25184
25213
|
);
|
|
25185
25214
|
continue;
|
|
@@ -25191,13 +25220,13 @@ async function rebuildFromSessionJsonl(options2 = {}) {
|
|
|
25191
25220
|
try {
|
|
25192
25221
|
stats = fs5.statSync(filePath);
|
|
25193
25222
|
} catch (e) {
|
|
25194
|
-
|
|
25223
|
+
debugLogger11.debug(
|
|
25195
25224
|
`rebuildFromSessionJsonl: cannot stat ${filePath}: ${e}`
|
|
25196
25225
|
);
|
|
25197
25226
|
continue;
|
|
25198
25227
|
}
|
|
25199
25228
|
if (!stats.isFile()) {
|
|
25200
|
-
|
|
25229
|
+
debugLogger11.debug(
|
|
25201
25230
|
`rebuildFromSessionJsonl: skipping non-regular entry ${filePath}`
|
|
25202
25231
|
);
|
|
25203
25232
|
continue;
|
|
@@ -25215,7 +25244,7 @@ async function rebuildFromSessionJsonl(options2 = {}) {
|
|
|
25215
25244
|
if (!summarized.record) continue;
|
|
25216
25245
|
results.push(summarized.record);
|
|
25217
25246
|
} catch (e) {
|
|
25218
|
-
|
|
25247
|
+
debugLogger11.debug(
|
|
25219
25248
|
`rebuildFromSessionJsonl: failed to process ${file}: ${e}`
|
|
25220
25249
|
);
|
|
25221
25250
|
continue;
|
|
@@ -25237,7 +25266,7 @@ function dedupBySessionId(records) {
|
|
|
25237
25266
|
const map = /* @__PURE__ */ new Map();
|
|
25238
25267
|
for (const r of records) map.set(r.sessionId, r);
|
|
25239
25268
|
if (map.size < records.length) {
|
|
25240
|
-
|
|
25269
|
+
debugLogger11.debug(
|
|
25241
25270
|
`dedupBySessionId: removed ${records.length - map.size} duplicate record(s)`
|
|
25242
25271
|
);
|
|
25243
25272
|
}
|
|
@@ -25250,7 +25279,7 @@ async function loadUsageHistory(skipSessionInRebuild, options2) {
|
|
|
25250
25279
|
const filtered = records.filter((r) => r.version === 1);
|
|
25251
25280
|
if (filtered.length > 0) return dedupBySessionId(filtered);
|
|
25252
25281
|
} catch (e) {
|
|
25253
|
-
|
|
25282
|
+
debugLogger11.debug(`loadUsageHistory: failed to read usage file: ${e}`);
|
|
25254
25283
|
}
|
|
25255
25284
|
return dedupBySessionId(
|
|
25256
25285
|
await rebuildFromSessionJsonl({
|
|
@@ -25266,7 +25295,7 @@ async function loadUsageHistoryWithLive(options2) {
|
|
|
25266
25295
|
const records = await read(getUsageHistoryPath());
|
|
25267
25296
|
persisted = records.filter((r) => r.version === 1);
|
|
25268
25297
|
} catch (e) {
|
|
25269
|
-
|
|
25298
|
+
debugLogger11.debug(
|
|
25270
25299
|
`loadUsageHistoryWithLive: failed to read usage file: ${e}`
|
|
25271
25300
|
);
|
|
25272
25301
|
}
|
|
@@ -27234,7 +27263,7 @@ async function fetchGitCommitDetail(cwd, sha) {
|
|
|
27234
27263
|
__name(fetchGitCommitDetail, "fetchGitCommitDetail");
|
|
27235
27264
|
|
|
27236
27265
|
// packages/core/src/services/fileHistoryService.ts
|
|
27237
|
-
var
|
|
27266
|
+
var debugLogger12 = createDebugLogger("FILE_HISTORY");
|
|
27238
27267
|
var MAX_SNAPSHOTS = 100;
|
|
27239
27268
|
var FILE_HISTORY_DIR = "file-history";
|
|
27240
27269
|
function serializeSnapshot(s3) {
|
|
@@ -27359,14 +27388,14 @@ async function restoreBackup(filePath, backupFileName, sessionId) {
|
|
|
27359
27388
|
backupStats = await stat2(backupPath);
|
|
27360
27389
|
} catch (e) {
|
|
27361
27390
|
if (isENOENT(e)) {
|
|
27362
|
-
|
|
27391
|
+
debugLogger12.error(`FileHistory: Backup file not found: ${backupPath}`);
|
|
27363
27392
|
return false;
|
|
27364
27393
|
}
|
|
27365
27394
|
throw e;
|
|
27366
27395
|
}
|
|
27367
27396
|
const result = await safeCopyFile(backupPath, filePath);
|
|
27368
27397
|
if (result === "src-missing") {
|
|
27369
|
-
|
|
27398
|
+
debugLogger12.error(
|
|
27370
27399
|
`FileHistory: Backup file disappeared during restore: ${backupPath}`
|
|
27371
27400
|
);
|
|
27372
27401
|
return false;
|
|
@@ -27427,7 +27456,7 @@ async function computeDiffStatsForFile(originalFile, backupFileName, sessionId)
|
|
|
27427
27456
|
if (c.removed) deletions += c.count || 0;
|
|
27428
27457
|
}
|
|
27429
27458
|
} catch (error3) {
|
|
27430
|
-
|
|
27459
|
+
debugLogger12.error(`FileHistory: Error generating diffStats: ${error3}`);
|
|
27431
27460
|
}
|
|
27432
27461
|
return { filesChanged, insertions, deletions };
|
|
27433
27462
|
}
|
|
@@ -27455,7 +27484,7 @@ async function readPathWithSizeGuard(path78, kind) {
|
|
|
27455
27484
|
}
|
|
27456
27485
|
return { kind: "unreadable" };
|
|
27457
27486
|
}
|
|
27458
|
-
|
|
27487
|
+
debugLogger12.error(`FileHistory: ${kind} open failed for ${path78}: ${e}`);
|
|
27459
27488
|
return { kind: "unreadable" };
|
|
27460
27489
|
}
|
|
27461
27490
|
try {
|
|
@@ -27467,7 +27496,7 @@ async function readPathWithSizeGuard(path78, kind) {
|
|
|
27467
27496
|
const text = await fh.readFile("utf-8");
|
|
27468
27497
|
return { kind: "ok", content: text, exists: true };
|
|
27469
27498
|
} catch (e) {
|
|
27470
|
-
|
|
27499
|
+
debugLogger12.error(`FileHistory: ${kind} read failed for ${path78}: ${e}`);
|
|
27471
27500
|
return { kind: "unreadable" };
|
|
27472
27501
|
}
|
|
27473
27502
|
} finally {
|
|
@@ -27529,7 +27558,7 @@ var FileHistoryService = class {
|
|
|
27529
27558
|
try {
|
|
27530
27559
|
this.onSnapshotUpdated?.(snapshot);
|
|
27531
27560
|
} catch (error3) {
|
|
27532
|
-
|
|
27561
|
+
debugLogger12.error(`FileHistory: recordSnapshotUpdate failed: ${error3}`);
|
|
27533
27562
|
}
|
|
27534
27563
|
}
|
|
27535
27564
|
restoreFromSnapshots(snapshots) {
|
|
@@ -27570,7 +27599,7 @@ var FileHistoryService = class {
|
|
|
27570
27599
|
try {
|
|
27571
27600
|
backupPath = resolveBackupPath(name, this.sessionId);
|
|
27572
27601
|
} catch (e) {
|
|
27573
|
-
|
|
27602
|
+
debugLogger12.error(
|
|
27574
27603
|
`FileHistory: rejected backupFileName during validation: ${name}: ${e}`
|
|
27575
27604
|
);
|
|
27576
27605
|
return false;
|
|
@@ -27595,7 +27624,7 @@ var FileHistoryService = class {
|
|
|
27595
27624
|
for (const snapshot of affectedSnapshots) {
|
|
27596
27625
|
this.recordSnapshotUpdate(snapshot);
|
|
27597
27626
|
}
|
|
27598
|
-
|
|
27627
|
+
debugLogger12.warn(
|
|
27599
27628
|
`FileHistory: ${missing.size} restored backup file(s) missing on disk`
|
|
27600
27629
|
);
|
|
27601
27630
|
}
|
|
@@ -27604,7 +27633,7 @@ var FileHistoryService = class {
|
|
|
27604
27633
|
const trackingPath = this.maybeShortenFilePath(filePath);
|
|
27605
27634
|
const mostRecent = this.state.snapshots.at(-1);
|
|
27606
27635
|
if (!mostRecent) {
|
|
27607
|
-
|
|
27636
|
+
debugLogger12.error("FileHistory: Missing most recent snapshot");
|
|
27608
27637
|
return;
|
|
27609
27638
|
}
|
|
27610
27639
|
const existing = mostRecent.trackedFileBackups[trackingPath];
|
|
@@ -27616,7 +27645,7 @@ var FileHistoryService = class {
|
|
|
27616
27645
|
try {
|
|
27617
27646
|
backup = await createBackup(filePath, maxVersion + 1, this.sessionId);
|
|
27618
27647
|
} catch (error3) {
|
|
27619
|
-
|
|
27648
|
+
debugLogger12.error(`FileHistory: trackEdit failed: ${error3}`);
|
|
27620
27649
|
return;
|
|
27621
27650
|
}
|
|
27622
27651
|
if (!this.state.snapshots.includes(mostRecent)) {
|
|
@@ -27627,7 +27656,7 @@ var FileHistoryService = class {
|
|
|
27627
27656
|
mostRecent.trackedFileBackups[trackingPath] = backup;
|
|
27628
27657
|
this.state.trackedFiles.add(trackingPath);
|
|
27629
27658
|
this.recordSnapshotUpdate(mostRecent);
|
|
27630
|
-
|
|
27659
|
+
debugLogger12.debug(
|
|
27631
27660
|
`FileHistory: Tracked file modification for ${filePath}`
|
|
27632
27661
|
);
|
|
27633
27662
|
}
|
|
@@ -27676,7 +27705,7 @@ var FileHistoryService = class {
|
|
|
27676
27705
|
this.sessionId
|
|
27677
27706
|
);
|
|
27678
27707
|
} catch (error3) {
|
|
27679
|
-
|
|
27708
|
+
debugLogger12.error(
|
|
27680
27709
|
`FileHistory: Failed to backup file ${trackingPath}: ${error3}`
|
|
27681
27710
|
);
|
|
27682
27711
|
const previous = mostRecent?.trackedFileBackups[trackingPath];
|
|
@@ -27707,7 +27736,7 @@ var FileHistoryService = class {
|
|
|
27707
27736
|
this.state.snapshots = this.state.snapshots.slice(overflow);
|
|
27708
27737
|
await this.cleanupOrphanedBackups(removed);
|
|
27709
27738
|
}
|
|
27710
|
-
|
|
27739
|
+
debugLogger12.debug(
|
|
27711
27740
|
`FileHistory: Added snapshot for ${promptId}, tracking ${this.state.trackedFiles.size} files`
|
|
27712
27741
|
);
|
|
27713
27742
|
}
|
|
@@ -27717,7 +27746,7 @@ var FileHistoryService = class {
|
|
|
27717
27746
|
if (!targetSnapshot) {
|
|
27718
27747
|
throw new Error("The selected snapshot was not found");
|
|
27719
27748
|
}
|
|
27720
|
-
|
|
27749
|
+
debugLogger12.debug(`FileHistory: Rewinding to snapshot for ${promptId}`);
|
|
27721
27750
|
const result = await this.applySnapshot(targetSnapshot);
|
|
27722
27751
|
if (truncateHistory && result.filesFailed.length === 0) {
|
|
27723
27752
|
const targetIdx = this.state.snapshots.indexOf(targetSnapshot);
|
|
@@ -27732,7 +27761,7 @@ var FileHistoryService = class {
|
|
|
27732
27761
|
await this.cleanupOrphanedBackups(removed);
|
|
27733
27762
|
}
|
|
27734
27763
|
}
|
|
27735
|
-
|
|
27764
|
+
debugLogger12.debug(`FileHistory: Finished rewinding to ${promptId}`);
|
|
27736
27765
|
return result;
|
|
27737
27766
|
}
|
|
27738
27767
|
async getDiffStats(promptId) {
|
|
@@ -27760,7 +27789,7 @@ var FileHistoryService = class {
|
|
|
27760
27789
|
}
|
|
27761
27790
|
return null;
|
|
27762
27791
|
} catch (error3) {
|
|
27763
|
-
|
|
27792
|
+
debugLogger12.error(
|
|
27764
27793
|
`FileHistory: Error computing diff stats: ${error3}`
|
|
27765
27794
|
);
|
|
27766
27795
|
return null;
|
|
@@ -27806,7 +27835,7 @@ var FileHistoryService = class {
|
|
|
27806
27835
|
candidatePaths.length - MAX_TURN_DIFF_FILES
|
|
27807
27836
|
);
|
|
27808
27837
|
if (filesOmitted > 0) {
|
|
27809
|
-
|
|
27838
|
+
debugLogger12.warn(
|
|
27810
27839
|
`FileHistory: getTurnDiff truncating ${filesOmitted} files for prompt ${promptId} (cap: ${MAX_TURN_DIFF_FILES})`
|
|
27811
27840
|
);
|
|
27812
27841
|
}
|
|
@@ -27842,7 +27871,7 @@ var FileHistoryService = class {
|
|
|
27842
27871
|
try {
|
|
27843
27872
|
return await this.computeTurnFileDiffUnsafe(trackingPath, before, after);
|
|
27844
27873
|
} catch (e) {
|
|
27845
|
-
|
|
27874
|
+
debugLogger12.error(
|
|
27846
27875
|
`FileHistory: computeTurnFileDiff failed for ${trackingPath}: ${e}`
|
|
27847
27876
|
);
|
|
27848
27877
|
return null;
|
|
@@ -27869,14 +27898,14 @@ var FileHistoryService = class {
|
|
|
27869
27898
|
this.sessionId
|
|
27870
27899
|
);
|
|
27871
27900
|
if (beforeRead.kind === "unreadable") {
|
|
27872
|
-
|
|
27901
|
+
debugLogger12.warn(
|
|
27873
27902
|
`FileHistory: skipping turn diff for ${trackingPath}: before backup unreadable`
|
|
27874
27903
|
);
|
|
27875
27904
|
return null;
|
|
27876
27905
|
}
|
|
27877
27906
|
const afterRead = afterFromWorktree ? await readEndpointContent(void 0, absoluteFilePath, this.sessionId) : await readEndpointContent(afterBackup, void 0, this.sessionId);
|
|
27878
27907
|
if (afterRead.kind === "unreadable") {
|
|
27879
|
-
|
|
27908
|
+
debugLogger12.warn(
|
|
27880
27909
|
`FileHistory: skipping turn diff for ${trackingPath}: after ${afterFromWorktree ? "worktree" : "backup"} unreadable`
|
|
27881
27910
|
);
|
|
27882
27911
|
return null;
|
|
@@ -27986,7 +28015,7 @@ var FileHistoryService = class {
|
|
|
27986
28015
|
}
|
|
27987
28016
|
const backupFileName = targetBackup ? targetBackup.backupFileName : this.getBackupFileNameFirstVersion(trackingPath);
|
|
27988
28017
|
if (backupFileName === void 0) {
|
|
27989
|
-
|
|
28018
|
+
debugLogger12.error(
|
|
27990
28019
|
"FileHistory: Error finding the backup file to apply"
|
|
27991
28020
|
);
|
|
27992
28021
|
filesFailed.push(filePath);
|
|
@@ -27995,7 +28024,7 @@ var FileHistoryService = class {
|
|
|
27995
28024
|
if (backupFileName === null) {
|
|
27996
28025
|
try {
|
|
27997
28026
|
await unlink3(filePath);
|
|
27998
|
-
|
|
28027
|
+
debugLogger12.debug(`FileHistory: Deleted ${filePath}`);
|
|
27999
28028
|
filesChanged.push(filePath);
|
|
28000
28029
|
} catch (e) {
|
|
28001
28030
|
if (!isENOENT(e)) throw e;
|
|
@@ -28009,7 +28038,7 @@ var FileHistoryService = class {
|
|
|
28009
28038
|
this.sessionId
|
|
28010
28039
|
);
|
|
28011
28040
|
if (restored) {
|
|
28012
|
-
|
|
28041
|
+
debugLogger12.debug(
|
|
28013
28042
|
`FileHistory: Restored ${filePath} from ${backupFileName}`
|
|
28014
28043
|
);
|
|
28015
28044
|
filesChanged.push(filePath);
|
|
@@ -28018,7 +28047,7 @@ var FileHistoryService = class {
|
|
|
28018
28047
|
}
|
|
28019
28048
|
}
|
|
28020
28049
|
} catch (error3) {
|
|
28021
|
-
|
|
28050
|
+
debugLogger12.error(
|
|
28022
28051
|
`FileHistory: Error restoring file ${trackingPath}: ${error3}`
|
|
28023
28052
|
);
|
|
28024
28053
|
filesFailed.push(this.maybeExpandFilePath(trackingPath));
|
|
@@ -28070,7 +28099,7 @@ var FileHistoryService = class {
|
|
|
28070
28099
|
await unlink3(resolveBackupPath(name, this.sessionId));
|
|
28071
28100
|
} catch (e) {
|
|
28072
28101
|
if (!isENOENT(e)) {
|
|
28073
|
-
|
|
28102
|
+
debugLogger12.error(`FileHistory: cleanup failed for ${name}: ${e}`);
|
|
28074
28103
|
}
|
|
28075
28104
|
}
|
|
28076
28105
|
})
|
|
@@ -28701,17 +28730,17 @@ var SessionOrganizationService = class {
|
|
|
28701
28730
|
return path6.join(this.storage.getProjectDir(), STORE_FILE);
|
|
28702
28731
|
}
|
|
28703
28732
|
async listGroups() {
|
|
28704
|
-
const
|
|
28733
|
+
const store = await this.readStore();
|
|
28705
28734
|
return {
|
|
28706
|
-
groups: this.sortGroups(
|
|
28735
|
+
groups: this.sortGroups(store.groups),
|
|
28707
28736
|
colorOptions: [...GROUP_COLOR_OPTIONS]
|
|
28708
28737
|
};
|
|
28709
28738
|
}
|
|
28710
28739
|
async readSnapshot() {
|
|
28711
|
-
const
|
|
28712
|
-
const validGroupIds = new Set(
|
|
28740
|
+
const store = await this.readStore();
|
|
28741
|
+
const validGroupIds = new Set(store.groups.map((group) => group.id));
|
|
28713
28742
|
const sessions = /* @__PURE__ */ new Map();
|
|
28714
|
-
for (const [sessionId, raw] of Object.entries(
|
|
28743
|
+
for (const [sessionId, raw] of Object.entries(store.sessions)) {
|
|
28715
28744
|
const view = viewOrganization(raw);
|
|
28716
28745
|
if (view.groupId !== null && !validGroupIds.has(view.groupId)) {
|
|
28717
28746
|
this.warnOrphanedGroupReference(sessionId, view.groupId);
|
|
@@ -28719,15 +28748,15 @@ var SessionOrganizationService = class {
|
|
|
28719
28748
|
}
|
|
28720
28749
|
sessions.set(sessionId, view);
|
|
28721
28750
|
}
|
|
28722
|
-
return { groups: this.sortGroups(
|
|
28751
|
+
return { groups: this.sortGroups(store.groups), sessions };
|
|
28723
28752
|
}
|
|
28724
28753
|
async createGroup(input) {
|
|
28725
28754
|
const name = normalizeGroupName(input.name);
|
|
28726
28755
|
const color = normalizeGroupColor(input.color);
|
|
28727
28756
|
return this.withStoreLock(async () => {
|
|
28728
|
-
const
|
|
28729
|
-
this.assertGroupNameAvailable(
|
|
28730
|
-
if (
|
|
28757
|
+
const store = await this.readStore();
|
|
28758
|
+
this.assertGroupNameAvailable(store.groups, name);
|
|
28759
|
+
if (store.groups.length >= MAX_GROUPS) {
|
|
28731
28760
|
throw new SessionOrganizationError(
|
|
28732
28761
|
`Maximum number of groups (${MAX_GROUPS}) reached`,
|
|
28733
28762
|
"group_limit_reached"
|
|
@@ -28739,7 +28768,7 @@ var SessionOrganizationService = class {
|
|
|
28739
28768
|
name,
|
|
28740
28769
|
color,
|
|
28741
28770
|
order: Math.min(
|
|
28742
|
-
|
|
28771
|
+
store.groups.reduce(
|
|
28743
28772
|
(maxOrder, existing) => Math.max(maxOrder, existing.order),
|
|
28744
28773
|
-1
|
|
28745
28774
|
) + 1,
|
|
@@ -28748,15 +28777,15 @@ var SessionOrganizationService = class {
|
|
|
28748
28777
|
createdAt: now,
|
|
28749
28778
|
updatedAt: now
|
|
28750
28779
|
};
|
|
28751
|
-
|
|
28752
|
-
await this.writeStore(
|
|
28780
|
+
store.groups.push(group);
|
|
28781
|
+
await this.writeStore(store);
|
|
28753
28782
|
return group;
|
|
28754
28783
|
});
|
|
28755
28784
|
}
|
|
28756
28785
|
async updateGroup(groupId, input) {
|
|
28757
28786
|
return this.withStoreLock(async () => {
|
|
28758
|
-
const
|
|
28759
|
-
const group =
|
|
28787
|
+
const store = await this.readStore();
|
|
28788
|
+
const group = store.groups.find((candidate) => candidate.id === groupId);
|
|
28760
28789
|
if (!group) {
|
|
28761
28790
|
throw new SessionOrganizationError(
|
|
28762
28791
|
`Group not found: ${groupId}`,
|
|
@@ -28766,7 +28795,7 @@ var SessionOrganizationService = class {
|
|
|
28766
28795
|
}
|
|
28767
28796
|
if (input.name !== void 0) {
|
|
28768
28797
|
const name = normalizeGroupName(input.name);
|
|
28769
|
-
this.assertGroupNameAvailable(
|
|
28798
|
+
this.assertGroupNameAvailable(store.groups, name, groupId);
|
|
28770
28799
|
group.name = name;
|
|
28771
28800
|
}
|
|
28772
28801
|
if (input.color !== void 0) {
|
|
@@ -28776,34 +28805,34 @@ var SessionOrganizationService = class {
|
|
|
28776
28805
|
group.order = normalizeOrder(input.order);
|
|
28777
28806
|
}
|
|
28778
28807
|
group.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
28779
|
-
await this.writeStore(
|
|
28808
|
+
await this.writeStore(store);
|
|
28780
28809
|
return group;
|
|
28781
28810
|
});
|
|
28782
28811
|
}
|
|
28783
28812
|
async deleteGroup(groupId) {
|
|
28784
28813
|
return this.withStoreLock(async () => {
|
|
28785
|
-
const
|
|
28786
|
-
const before =
|
|
28787
|
-
|
|
28788
|
-
if (
|
|
28814
|
+
const store = await this.readStore();
|
|
28815
|
+
const before = store.groups.length;
|
|
28816
|
+
store.groups = store.groups.filter((group) => group.id !== groupId);
|
|
28817
|
+
if (store.groups.length === before) {
|
|
28789
28818
|
return false;
|
|
28790
28819
|
}
|
|
28791
28820
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
28792
|
-
for (const session of Object.values(
|
|
28821
|
+
for (const session of Object.values(store.sessions)) {
|
|
28793
28822
|
if (session.groupId === groupId) {
|
|
28794
28823
|
session.groupId = null;
|
|
28795
28824
|
session.updatedAt = now;
|
|
28796
28825
|
}
|
|
28797
28826
|
}
|
|
28798
|
-
await this.writeStore(
|
|
28827
|
+
await this.writeStore(store);
|
|
28799
28828
|
return true;
|
|
28800
28829
|
});
|
|
28801
28830
|
}
|
|
28802
28831
|
async updateSessionOrganization(sessionId, input) {
|
|
28803
28832
|
const hasUpdate = input.groupId !== void 0 || input.isPinned !== void 0 || input.color !== void 0;
|
|
28804
28833
|
return this.withStoreLock(async () => {
|
|
28805
|
-
const
|
|
28806
|
-
const current = viewOrganization(
|
|
28834
|
+
const store = await this.readStore();
|
|
28835
|
+
const current = viewOrganization(store.sessions[sessionId]);
|
|
28807
28836
|
if (!hasUpdate) {
|
|
28808
28837
|
return current;
|
|
28809
28838
|
}
|
|
@@ -28815,7 +28844,7 @@ var SessionOrganizationService = class {
|
|
|
28815
28844
|
current.color = input.color;
|
|
28816
28845
|
}
|
|
28817
28846
|
if (input.groupId !== void 0) {
|
|
28818
|
-
if (input.groupId !== null && !
|
|
28847
|
+
if (input.groupId !== null && !store.groups.some((group) => group.id === input.groupId)) {
|
|
28819
28848
|
throw new SessionOrganizationError(
|
|
28820
28849
|
`Group not found: ${input.groupId}`,
|
|
28821
28850
|
"group_not_found",
|
|
@@ -28832,35 +28861,35 @@ var SessionOrganizationService = class {
|
|
|
28832
28861
|
}
|
|
28833
28862
|
}
|
|
28834
28863
|
current.updatedAt = now;
|
|
28835
|
-
|
|
28836
|
-
await this.writeStore(
|
|
28837
|
-
return viewOrganization(
|
|
28864
|
+
store.sessions[sessionId] = serializeOrganization(current);
|
|
28865
|
+
await this.writeStore(store);
|
|
28866
|
+
return viewOrganization(store.sessions[sessionId]);
|
|
28838
28867
|
});
|
|
28839
28868
|
}
|
|
28840
28869
|
async removeSession(sessionId, options2 = {}) {
|
|
28841
28870
|
await this.withStoreLock(async () => {
|
|
28842
|
-
const
|
|
28843
|
-
if (!Object.prototype.hasOwnProperty.call(
|
|
28871
|
+
const store = await this.readStore();
|
|
28872
|
+
if (!Object.prototype.hasOwnProperty.call(store.sessions, sessionId)) {
|
|
28844
28873
|
return;
|
|
28845
28874
|
}
|
|
28846
|
-
delete
|
|
28847
|
-
await this.writeStore(
|
|
28875
|
+
delete store.sessions[sessionId];
|
|
28876
|
+
await this.writeStore(store, options2);
|
|
28848
28877
|
});
|
|
28849
28878
|
}
|
|
28850
28879
|
async removeSessions(sessionIds, options2 = {}) {
|
|
28851
28880
|
const uniqueSessionIds = [...new Set(sessionIds)];
|
|
28852
28881
|
if (uniqueSessionIds.length === 0) return;
|
|
28853
28882
|
await this.withStoreLock(async () => {
|
|
28854
|
-
const
|
|
28883
|
+
const store = await this.readStore();
|
|
28855
28884
|
let changed = false;
|
|
28856
28885
|
for (const sessionId of uniqueSessionIds) {
|
|
28857
|
-
if (Object.prototype.hasOwnProperty.call(
|
|
28858
|
-
delete
|
|
28886
|
+
if (Object.prototype.hasOwnProperty.call(store.sessions, sessionId)) {
|
|
28887
|
+
delete store.sessions[sessionId];
|
|
28859
28888
|
changed = true;
|
|
28860
28889
|
}
|
|
28861
28890
|
}
|
|
28862
28891
|
if (changed) {
|
|
28863
|
-
await this.writeStore(
|
|
28892
|
+
await this.writeStore(store, options2);
|
|
28864
28893
|
}
|
|
28865
28894
|
});
|
|
28866
28895
|
}
|
|
@@ -28938,7 +28967,7 @@ var SessionOrganizationService = class {
|
|
|
28938
28967
|
);
|
|
28939
28968
|
return emptyStore();
|
|
28940
28969
|
}
|
|
28941
|
-
async writeStore(
|
|
28970
|
+
async writeStore(store, options2 = {}) {
|
|
28942
28971
|
await fs7.mkdir(path6.dirname(this.getStorePath()), { recursive: true });
|
|
28943
28972
|
if (this.readFailed) {
|
|
28944
28973
|
throw new SessionOrganizationError(
|
|
@@ -28950,8 +28979,8 @@ var SessionOrganizationService = class {
|
|
|
28950
28979
|
this.getStorePath(),
|
|
28951
28980
|
{
|
|
28952
28981
|
schemaVersion: SCHEMA_VERSION,
|
|
28953
|
-
groups: this.sortGroups(
|
|
28954
|
-
sessions:
|
|
28982
|
+
groups: this.sortGroups(store.groups),
|
|
28983
|
+
sessions: store.sessions
|
|
28955
28984
|
},
|
|
28956
28985
|
{ assertCanCommit: options2.assertCanCommit }
|
|
28957
28986
|
);
|
|
@@ -29238,6 +29267,7 @@ async function watchRepoBranch(cwd, onChange) {
|
|
|
29238
29267
|
__name(watchRepoBranch, "watchRepoBranch");
|
|
29239
29268
|
|
|
29240
29269
|
// packages/core/src/utils/git-branches.ts
|
|
29270
|
+
var debugLogger13 = createDebugLogger("GIT_BRANCHES");
|
|
29241
29271
|
var execFileAsync2 = promisify2(execFile2);
|
|
29242
29272
|
var GIT_TIMEOUT_MS2 = 3e4;
|
|
29243
29273
|
var MAX_RECENT_BRANCHES = 20;
|
|
@@ -29494,6 +29524,11 @@ async function gitCreateBranch(cwd, name, startPoint, env) {
|
|
|
29494
29524
|
env
|
|
29495
29525
|
).catch(() => "")).trim();
|
|
29496
29526
|
const originalCommit = originalRef ? "" : (await runGit2(cwd, ["rev-parse", "HEAD"], env).catch(() => "")).trim();
|
|
29527
|
+
const startCommit = (await runGit2(
|
|
29528
|
+
cwd,
|
|
29529
|
+
["rev-parse", "--verify", `${startPoint || "HEAD"}^{commit}`],
|
|
29530
|
+
env
|
|
29531
|
+
).catch(() => "")).trim();
|
|
29497
29532
|
try {
|
|
29498
29533
|
await runGit2(cwd, args, env);
|
|
29499
29534
|
} catch (err) {
|
|
@@ -29514,8 +29549,17 @@ async function gitCreateBranch(cwd, name, startPoint, env) {
|
|
|
29514
29549
|
).catch(() => {
|
|
29515
29550
|
});
|
|
29516
29551
|
}
|
|
29517
|
-
await runGit2(cwd, ["
|
|
29518
|
-
|
|
29552
|
+
const newHead = (await runGit2(cwd, ["rev-parse", `refs/heads/${name}`], env).catch(
|
|
29553
|
+
() => ""
|
|
29554
|
+
)).trim();
|
|
29555
|
+
if (newHead && newHead !== startCommit) {
|
|
29556
|
+
debugLogger13.warn(
|
|
29557
|
+
`gitCreateBranch: keeping branch "${name}" because it contains commits created after checkout (likely by a failing post-checkout hook)`
|
|
29558
|
+
);
|
|
29559
|
+
} else {
|
|
29560
|
+
await runGit2(cwd, ["branch", "-D", name], env).catch(() => {
|
|
29561
|
+
});
|
|
29562
|
+
}
|
|
29519
29563
|
}
|
|
29520
29564
|
throw err;
|
|
29521
29565
|
}
|
|
@@ -31184,6 +31228,10 @@ function collectSessionTurnState(records, sessionId) {
|
|
|
31184
31228
|
return accumulator.finish();
|
|
31185
31229
|
}
|
|
31186
31230
|
__name(collectSessionTurnState, "collectSessionTurnState");
|
|
31231
|
+
function computeInitialTurnFromHistory(records, sessionId) {
|
|
31232
|
+
return collectSessionTurnState(records, sessionId).initialTurn;
|
|
31233
|
+
}
|
|
31234
|
+
__name(computeInitialTurnFromHistory, "computeInitialTurnFromHistory");
|
|
31187
31235
|
function getRecordPromptIds(record4) {
|
|
31188
31236
|
const promptIds = [];
|
|
31189
31237
|
const recordPromptId = record4.promptId;
|
|
@@ -40335,12 +40383,13 @@ var ChatRecordingService = class {
|
|
|
40335
40383
|
* @param goalContext Goal identity and turn that own this message
|
|
40336
40384
|
* @param promptPayload User-authored display text and hook-context provenance
|
|
40337
40385
|
*/
|
|
40338
|
-
recordUserMessage(message, goalContext, promptPayload) {
|
|
40386
|
+
recordUserMessage(message, goalContext, promptPayload, daemonPromptId) {
|
|
40339
40387
|
try {
|
|
40340
40388
|
this.trackUserDisplayTextForTitle(promptPayload?.displayText);
|
|
40341
40389
|
this.turnParentUuids.push(this.lastRecordUuid);
|
|
40342
40390
|
const record4 = {
|
|
40343
40391
|
...this.createBaseRecord("user"),
|
|
40392
|
+
...daemonPromptId ? { daemonPromptId } : {},
|
|
40344
40393
|
...goalContext ? { goalContext: copyGoalContext(goalContext) } : {},
|
|
40345
40394
|
message: createUserContent(message),
|
|
40346
40395
|
...promptPayload ? { systemPayload: promptPayload } : {}
|
|
@@ -43084,10 +43133,10 @@ function countAllInlineImages(contents) {
|
|
|
43084
43133
|
return count;
|
|
43085
43134
|
}
|
|
43086
43135
|
__name(countAllInlineImages, "countAllInlineImages");
|
|
43087
|
-
function replaceImagePayloadsInPlace(contents,
|
|
43136
|
+
function replaceImagePayloadsInPlace(contents, store, skipContent) {
|
|
43088
43137
|
const replaced = [];
|
|
43089
43138
|
for (const part of inlineImageParts(contents, skipContent)) {
|
|
43090
|
-
const stored =
|
|
43139
|
+
const stored = store.put(part);
|
|
43091
43140
|
replaced.push(stored);
|
|
43092
43141
|
part.text = imageReferenceText(stored);
|
|
43093
43142
|
delete part.inlineData;
|
|
@@ -43095,9 +43144,9 @@ function replaceImagePayloadsInPlace(contents, store2, skipContent) {
|
|
|
43095
43144
|
return replaced;
|
|
43096
43145
|
}
|
|
43097
43146
|
__name(replaceImagePayloadsInPlace, "replaceImagePayloadsInPlace");
|
|
43098
|
-
function buildReattachParts(replaced, maxRecentImages, referencedContents = [],
|
|
43147
|
+
function buildReattachParts(replaced, maxRecentImages, referencedContents = [], store) {
|
|
43099
43148
|
const referencedIds = collectReferencedImageIds(referencedContents);
|
|
43100
|
-
if (replaced.length === 0 && (!
|
|
43149
|
+
if (replaced.length === 0 && (!store || referencedIds.size === 0)) return [];
|
|
43101
43150
|
const inlineIds = collectInlineImageIds(referencedContents);
|
|
43102
43151
|
const last = referencedContents.at(-1);
|
|
43103
43152
|
const lastReferencedIds = collectReferencedImageIds(
|
|
@@ -43106,10 +43155,10 @@ function buildReattachParts(replaced, maxRecentImages, referencedContents = [],
|
|
|
43106
43155
|
const candidates = replaced.filter(
|
|
43107
43156
|
(image) => !inlineIds.has(image.id) && !lastReferencedIds.has(image.id)
|
|
43108
43157
|
).map((stored) => ({ stored }));
|
|
43109
|
-
if (
|
|
43158
|
+
if (store) {
|
|
43110
43159
|
for (const id of referencedIds) {
|
|
43111
43160
|
if (inlineIds.has(id) || lastReferencedIds.has(id)) continue;
|
|
43112
|
-
const stored =
|
|
43161
|
+
const stored = store.get(id);
|
|
43113
43162
|
if (stored) candidates.push({ stored });
|
|
43114
43163
|
}
|
|
43115
43164
|
}
|
|
@@ -43117,12 +43166,12 @@ function buildReattachParts(replaced, maxRecentImages, referencedContents = [],
|
|
|
43117
43166
|
({ stored }) => stored
|
|
43118
43167
|
);
|
|
43119
43168
|
const reattachLimit = Math.max(maxRecentImages, 1);
|
|
43120
|
-
if (
|
|
43169
|
+
if (store) {
|
|
43121
43170
|
for (const id of lastReferencedIds) {
|
|
43122
43171
|
if (inlineIds.has(id) || recent.some((image) => image.id === id)) {
|
|
43123
43172
|
continue;
|
|
43124
43173
|
}
|
|
43125
|
-
const stored =
|
|
43174
|
+
const stored = store.get(id);
|
|
43126
43175
|
if (stored) {
|
|
43127
43176
|
if (recent.length >= reattachLimit) recent.shift();
|
|
43128
43177
|
recent.push(stored);
|
|
@@ -75719,6 +75768,21 @@ function attachJsonlTranscriptWriter(emitter, jsonlPath, options2) {
|
|
|
75719
75768
|
agentRound: event.round
|
|
75720
75769
|
});
|
|
75721
75770
|
}, "onRoundText");
|
|
75771
|
+
const sessionReadiness = /* @__PURE__ */ new Map();
|
|
75772
|
+
const recordSessionReadiness = /* @__PURE__ */ __name((callId, ready) => {
|
|
75773
|
+
if (sessionReadiness.get(callId) === ready) return;
|
|
75774
|
+
sessionReadiness.set(callId, ready);
|
|
75775
|
+
recordSystem("agent_session_ready", {
|
|
75776
|
+
callId,
|
|
75777
|
+
subagentSessionReady: ready
|
|
75778
|
+
});
|
|
75779
|
+
}, "recordSessionReadiness");
|
|
75780
|
+
const onToolOutputUpdate = /* @__PURE__ */ __name((event) => {
|
|
75781
|
+
const output = event.outputChunk;
|
|
75782
|
+
if (typeof output === "object" && output !== null && "subagentSessionReady" in output && typeof output.subagentSessionReady === "boolean") {
|
|
75783
|
+
recordSessionReadiness(event.callId, output.subagentSessionReady);
|
|
75784
|
+
}
|
|
75785
|
+
}, "onToolOutputUpdate");
|
|
75722
75786
|
const onToolCall = /* @__PURE__ */ __name((event) => {
|
|
75723
75787
|
append({
|
|
75724
75788
|
...baseFields("assistant"),
|
|
@@ -75735,6 +75799,9 @@ function attachJsonlTranscriptWriter(emitter, jsonlPath, options2) {
|
|
|
75735
75799
|
]
|
|
75736
75800
|
}
|
|
75737
75801
|
});
|
|
75802
|
+
if (event.name === ToolNames.AGENT) {
|
|
75803
|
+
recordSessionReadiness(event.callId, false);
|
|
75804
|
+
}
|
|
75738
75805
|
}, "onToolCall");
|
|
75739
75806
|
const onToolResponsesFinalized = /* @__PURE__ */ __name((event) => {
|
|
75740
75807
|
for (const response of event.responses) {
|
|
@@ -75743,6 +75810,9 @@ function attachJsonlTranscriptWriter(emitter, jsonlPath, options2) {
|
|
|
75743
75810
|
message: { role: "user", parts: response.responseParts },
|
|
75744
75811
|
toolCallResult: {
|
|
75745
75812
|
callId: response.callId,
|
|
75813
|
+
...sessionReadiness.has(response.callId) && response.responseParts.some(
|
|
75814
|
+
(part) => part.functionResponse?.response?.["error"]
|
|
75815
|
+
) ? { status: "error" } : {},
|
|
75746
75816
|
...response.durationMs !== void 0 ? { durationMs: response.durationMs } : {}
|
|
75747
75817
|
}
|
|
75748
75818
|
});
|
|
@@ -75787,12 +75857,14 @@ function attachJsonlTranscriptWriter(emitter, jsonlPath, options2) {
|
|
|
75787
75857
|
emitter.on("round_text" /* ROUND_TEXT */, onRoundText);
|
|
75788
75858
|
emitter.on("stream_text" /* STREAM_TEXT */, appendStreamText);
|
|
75789
75859
|
emitter.on("tool_call" /* TOOL_CALL */, onToolCall);
|
|
75860
|
+
emitter.on("tool_output_update" /* TOOL_OUTPUT_UPDATE */, onToolOutputUpdate);
|
|
75790
75861
|
emitter.on("tool_responses_finalized" /* TOOL_RESPONSES_FINALIZED */, onToolResponsesFinalized);
|
|
75791
75862
|
emitter.on("external_message" /* EXTERNAL_MESSAGE */, onExternalMessage);
|
|
75792
75863
|
const cleanup = /* @__PURE__ */ __name(() => {
|
|
75793
75864
|
emitter.off("round_text" /* ROUND_TEXT */, onRoundText);
|
|
75794
75865
|
emitter.off("stream_text" /* STREAM_TEXT */, appendStreamText);
|
|
75795
75866
|
emitter.off("tool_call" /* TOOL_CALL */, onToolCall);
|
|
75867
|
+
emitter.off("tool_output_update" /* TOOL_OUTPUT_UPDATE */, onToolOutputUpdate);
|
|
75796
75868
|
emitter.off(
|
|
75797
75869
|
"tool_responses_finalized" /* TOOL_RESPONSES_FINALIZED */,
|
|
75798
75870
|
onToolResponsesFinalized
|
|
@@ -77439,6 +77511,7 @@ var AgentToolInvocation = class extends BaseToolInvocation {
|
|
|
77439
77511
|
taskDescription: this.params.description,
|
|
77440
77512
|
taskPrompt: this.params.prompt,
|
|
77441
77513
|
executionMode: shouldRunInBackground ? "background" : "foreground",
|
|
77514
|
+
subagentSessionReady: false,
|
|
77442
77515
|
status: "running",
|
|
77443
77516
|
subagentColor: subagentConfig.color
|
|
77444
77517
|
};
|
|
@@ -77844,6 +77917,7 @@ ${taskPrompt}`;
|
|
|
77844
77917
|
depth: launchDepth,
|
|
77845
77918
|
model: subagentModelId
|
|
77846
77919
|
});
|
|
77920
|
+
this.updateDisplay({ subagentSessionReady: true }, updateOutput);
|
|
77847
77921
|
const bgEmitter = bgSubagent.getCore().getEventEmitter();
|
|
77848
77922
|
let liveToolCallCount = 0;
|
|
77849
77923
|
const refreshLiveStats = /* @__PURE__ */ __name(() => {
|
|
@@ -78436,6 +78510,7 @@ output_file: ${jsonlPath} (for review after the completion notification, not for
|
|
|
78436
78510
|
// childLaunchDepth() for the rationale.
|
|
78437
78511
|
depth: launchDepth
|
|
78438
78512
|
});
|
|
78513
|
+
this.updateDisplay({ subagentSessionReady: true }, updateOutput);
|
|
78439
78514
|
const stopHookWarning = await runFramed();
|
|
78440
78515
|
const terminateMode = subagent.getTerminateMode();
|
|
78441
78516
|
const finalText = appendStopHookBlockingCapWarning(
|
|
@@ -84088,7 +84163,7 @@ function recoverTranscript(records) {
|
|
|
84088
84163
|
const stableForBranch = [...filtered];
|
|
84089
84164
|
while (stableForBranch.length > 0) {
|
|
84090
84165
|
const last = stableForBranch[stableForBranch.length - 1];
|
|
84091
|
-
if (isWhitespaceOnlyAssistant(last)) {
|
|
84166
|
+
if (isWhitespaceOnlyAssistant(last) || last.type === "system" && last.subtype === "agent_session_ready") {
|
|
84092
84167
|
stableForBranch.pop();
|
|
84093
84168
|
continue;
|
|
84094
84169
|
}
|
|
@@ -92660,24 +92735,6 @@ The current date is: ${today}. Note: This is the authoritative current date \u20
|
|
|
92660
92735
|
for (const goalEvent of takePendingGoalEvents()) {
|
|
92661
92736
|
yield goalEvent;
|
|
92662
92737
|
}
|
|
92663
|
-
const activeGoalAtTurnStart = goalRuntime?.getSnapshot().goal ? void 0 : getActiveGoal(this.config.getSessionId());
|
|
92664
|
-
if (activeGoalAtTurnStart) {
|
|
92665
|
-
yield {
|
|
92666
|
-
type: "active_goal" /* ActiveGoal */,
|
|
92667
|
-
value: activeGoalAtTurnStart
|
|
92668
|
-
};
|
|
92669
|
-
}
|
|
92670
|
-
let lastEmittedActiveGoal2 = activeGoalAtTurnStart;
|
|
92671
|
-
const maybeEmitActiveGoalChange = /* @__PURE__ */ __name((nextActiveGoal) => {
|
|
92672
|
-
if (activeGoalEquals(lastEmittedActiveGoal2, nextActiveGoal)) {
|
|
92673
|
-
return void 0;
|
|
92674
|
-
}
|
|
92675
|
-
lastEmittedActiveGoal2 = nextActiveGoal;
|
|
92676
|
-
return {
|
|
92677
|
-
type: "active_goal" /* ActiveGoal */,
|
|
92678
|
-
value: nextActiveGoal ?? null
|
|
92679
|
-
};
|
|
92680
|
-
}, "maybeEmitActiveGoalChange");
|
|
92681
92738
|
messageDisplay = hooksEnabled && messageBus && this.config.hasHooksForEvent("MessageDisplay") ? new MessageDisplayDispatcher(
|
|
92682
92739
|
messageBus,
|
|
92683
92740
|
signal,
|
|
@@ -92889,17 +92946,10 @@ The current date is: ${today}. Note: This is the authoritative current date \u20
|
|
|
92889
92946
|
for (const goalEvent of takePendingGoalEvents()) {
|
|
92890
92947
|
yield goalEvent;
|
|
92891
92948
|
}
|
|
92892
|
-
const activeGoalAfterStopHook = goalPermit ? void 0 : getActiveGoal(this.config.getSessionId());
|
|
92893
92949
|
if (signal.aborted) {
|
|
92894
92950
|
for (const goalEvent of await finalizeInterruptedGoalTurn()) {
|
|
92895
92951
|
yield goalEvent;
|
|
92896
92952
|
}
|
|
92897
|
-
const activeGoalEvent2 = maybeEmitActiveGoalChange(
|
|
92898
|
-
activeGoalAfterStopHook
|
|
92899
|
-
);
|
|
92900
|
-
if (activeGoalEvent2) {
|
|
92901
|
-
yield activeGoalEvent2;
|
|
92902
|
-
}
|
|
92903
92953
|
endCurrentInteraction("cancelled");
|
|
92904
92954
|
return turn;
|
|
92905
92955
|
}
|
|
@@ -92999,16 +93049,10 @@ The current date is: ${today}. Note: This is the authoritative current date \u20
|
|
|
92999
93049
|
}
|
|
93000
93050
|
if (!goalPermit && (stopOutput?.isBlockingDecision() || stopOutput?.shouldStopExecution())) {
|
|
93001
93051
|
if (signal.aborted) {
|
|
93002
|
-
const activeGoalEvent3 = maybeEmitActiveGoalChange(
|
|
93003
|
-
activeGoalAfterStopHook
|
|
93004
|
-
);
|
|
93005
|
-
if (activeGoalEvent3) {
|
|
93006
|
-
yield activeGoalEvent3;
|
|
93007
|
-
}
|
|
93008
93052
|
endCurrentInteraction("cancelled");
|
|
93009
93053
|
return turn;
|
|
93010
93054
|
}
|
|
93011
|
-
const continueReason =
|
|
93055
|
+
const continueReason = stopOutput.getEffectiveReason();
|
|
93012
93056
|
const currentIterationCount = (options2?.stopHookState?.iterationCount ?? 0) + 1;
|
|
93013
93057
|
const currentReasons = [
|
|
93014
93058
|
...options2?.stopHookState?.reasons ?? [],
|
|
@@ -93020,18 +93064,6 @@ The current date is: ${today}. Note: This is the authoritative current date \u20
|
|
|
93020
93064
|
"Stop",
|
|
93021
93065
|
stopHookBlockingCap
|
|
93022
93066
|
);
|
|
93023
|
-
abortGoalForStopHookCap(
|
|
93024
|
-
this.config,
|
|
93025
|
-
this.config.getSessionId(),
|
|
93026
|
-
warning
|
|
93027
|
-
);
|
|
93028
|
-
const activeGoalAfterCap = getActiveGoal(
|
|
93029
|
-
this.config.getSessionId()
|
|
93030
|
-
);
|
|
93031
|
-
const activeGoalEvent3 = maybeEmitActiveGoalChange(activeGoalAfterCap);
|
|
93032
|
-
if (activeGoalEvent3) {
|
|
93033
|
-
yield activeGoalEvent3;
|
|
93034
|
-
}
|
|
93035
93067
|
yield {
|
|
93036
93068
|
type: "hook_system_message" /* HookSystemMessage */,
|
|
93037
93069
|
value: warning
|
|
@@ -93049,12 +93081,6 @@ The current date is: ${today}. Note: This is the authoritative current date \u20
|
|
|
93049
93081
|
endCurrentInteraction("ok");
|
|
93050
93082
|
return turn;
|
|
93051
93083
|
}
|
|
93052
|
-
const activeGoalEvent2 = maybeEmitActiveGoalChange(
|
|
93053
|
-
activeGoalAfterStopHook
|
|
93054
|
-
);
|
|
93055
|
-
if (activeGoalEvent2) {
|
|
93056
|
-
yield activeGoalEvent2;
|
|
93057
|
-
}
|
|
93058
93084
|
yield {
|
|
93059
93085
|
type: "stop_hook_loop" /* StopHookLoop */,
|
|
93060
93086
|
value: {
|
|
@@ -93064,42 +93090,11 @@ The current date is: ${today}. Note: This is the authoritative current date \u20
|
|
|
93064
93090
|
}
|
|
93065
93091
|
};
|
|
93066
93092
|
this.loopDetector.reset(prompt_id);
|
|
93067
|
-
const
|
|
93068
|
-
const hookTurnBudget = activeGoal ? boundedTurns : boundedTurns - 1;
|
|
93093
|
+
const hookTurnBudget = boundedTurns - 1;
|
|
93069
93094
|
const pendingSteer = await takeSteerInput(hookTurnBudget);
|
|
93070
|
-
const
|
|
93071
|
-
this.config.getSessionId()
|
|
93072
|
-
);
|
|
93073
|
-
const activeGoalChanged = activeGoal !== void 0 && activeGoalAfterSteer?.hookId !== activeGoal.hookId;
|
|
93074
|
-
const goalContinuationChanged = activeGoalChanged && stopOutput.hookSpecificOutput?.[GOAL_HOOK_ID_OUTPUT_KEY] === activeGoal.hookId;
|
|
93075
|
-
if (activeGoalChanged) {
|
|
93076
|
-
const activeGoalEvent3 = maybeEmitActiveGoalChange(activeGoalAfterSteer);
|
|
93077
|
-
if (activeGoalEvent3) {
|
|
93078
|
-
yield activeGoalEvent3;
|
|
93079
|
-
}
|
|
93080
|
-
}
|
|
93081
|
-
const discardGoalContinuation = goalContinuationChanged && response.hasNonGoalBlockingStopHook === false;
|
|
93082
|
-
const continuationReasonAfterSteer = discardGoalContinuation ? void 0 : goalContinuationChanged && response.hasNonGoalBlockingStopHook === true ? response.nonGoalBlockingStopReason || "No reason provided" : continueReason;
|
|
93083
|
-
if (!continuationReasonAfterSteer && !pendingSteer) {
|
|
93084
|
-
await this.settlePendingGoalProposal(
|
|
93085
|
-
true,
|
|
93086
|
-
signal,
|
|
93087
|
-
loadGoalRuntime,
|
|
93088
|
-
prompt_id
|
|
93089
|
-
);
|
|
93090
|
-
for (const goalEvent of takePendingGoalEvents()) {
|
|
93091
|
-
yield goalEvent;
|
|
93092
|
-
}
|
|
93093
|
-
endCurrentInteraction("ok");
|
|
93094
|
-
normalCompletion = true;
|
|
93095
|
-
return turn;
|
|
93096
|
-
}
|
|
93097
|
-
const continueRequest = continuationReasonAfterSteer ? [{ text: continuationReasonAfterSteer }] : [];
|
|
93095
|
+
const continueRequest = [{ text: continueReason }];
|
|
93098
93096
|
if (pendingSteer) {
|
|
93099
|
-
|
|
93100
|
-
continueRequest.push({ text: "\n\n" });
|
|
93101
|
-
}
|
|
93102
|
-
continueRequest.push(...pendingSteer.parts);
|
|
93097
|
+
continueRequest.push({ text: "\n\n" }, ...pendingSteer.parts);
|
|
93103
93098
|
}
|
|
93104
93099
|
const pushCountBefore = currentPushCount();
|
|
93105
93100
|
let hookTurn;
|
|
@@ -93113,12 +93108,9 @@ The current date is: ${today}. Note: This is the authoritative current date \u20
|
|
|
93113
93108
|
modelOverride: options2?.modelOverride,
|
|
93114
93109
|
getSteerInput: options2?.getSteerInput,
|
|
93115
93110
|
steerInput: pendingSteer,
|
|
93116
|
-
stopHookState:
|
|
93111
|
+
stopHookState: {
|
|
93117
93112
|
iterationCount: currentIterationCount,
|
|
93118
|
-
reasons:
|
|
93119
|
-
...currentReasons.slice(0, -1),
|
|
93120
|
-
continuationReasonAfterSteer
|
|
93121
|
-
] : currentReasons
|
|
93113
|
+
reasons: currentReasons
|
|
93122
93114
|
}
|
|
93123
93115
|
},
|
|
93124
93116
|
hookTurnBudget
|
|
@@ -93142,12 +93134,6 @@ The current date is: ${today}. Note: This is the authoritative current date \u20
|
|
|
93142
93134
|
normalCompletion = true;
|
|
93143
93135
|
return hookTurn;
|
|
93144
93136
|
}
|
|
93145
|
-
const activeGoalEvent = maybeEmitActiveGoalChange(
|
|
93146
|
-
activeGoalAfterStopHook
|
|
93147
|
-
);
|
|
93148
|
-
if (activeGoalEvent) {
|
|
93149
|
-
yield activeGoalEvent;
|
|
93150
|
-
}
|
|
93151
93137
|
for (const goalEvent of takePendingGoalEvents()) {
|
|
93152
93138
|
yield goalEvent;
|
|
93153
93139
|
}
|
|
@@ -136916,6 +136902,27 @@ __name(isImageGenerationCapable, "isImageGenerationCapable");
|
|
|
136916
136902
|
init_esbuild_shims();
|
|
136917
136903
|
import { AsyncLocalStorage as AsyncLocalStorage2 } from "node:async_hooks";
|
|
136918
136904
|
|
|
136905
|
+
// packages/core/src/agents/workflow-failure-lines.ts
|
|
136906
|
+
init_esbuild_shims();
|
|
136907
|
+
var MAX_FAILURE_LINES = 10;
|
|
136908
|
+
var MAX_FAILURE_LINE_CHARS = 400;
|
|
136909
|
+
function buildFailureLines(source) {
|
|
136910
|
+
const failed = source.dispatches.filter((d) => d.status === "failed");
|
|
136911
|
+
if (failed.length === 0) return [];
|
|
136912
|
+
const shown = failed.slice(0, MAX_FAILURE_LINES);
|
|
136913
|
+
const lines = shown.map((dispatch) => {
|
|
136914
|
+
const label = stripAnsiAndControl(dispatch.label || "workflow-agent");
|
|
136915
|
+
const error3 = stripAnsiAndControl(dispatch.error || "dispatch failed");
|
|
136916
|
+
return `[${label}] ${error3}`.slice(0, MAX_FAILURE_LINE_CHARS);
|
|
136917
|
+
});
|
|
136918
|
+
const remaining = failed.length - shown.length;
|
|
136919
|
+
if (remaining > 0) {
|
|
136920
|
+
lines.push(`\u2026 and ${remaining} more failures omitted`);
|
|
136921
|
+
}
|
|
136922
|
+
return lines;
|
|
136923
|
+
}
|
|
136924
|
+
__name(buildFailureLines, "buildFailureLines");
|
|
136925
|
+
|
|
136919
136926
|
// packages/core/src/agents/workflow-resume-call.ts
|
|
136920
136927
|
init_esbuild_shims();
|
|
136921
136928
|
var RESUME_ARGS_CHARS = 300;
|
|
@@ -137128,6 +137135,12 @@ var WorkflowRunRegistry = class {
|
|
|
137128
137135
|
);
|
|
137129
137136
|
}
|
|
137130
137137
|
modelParts.push(`<usage>${escapeXml(buildUsageLine(entry))}</usage>`);
|
|
137138
|
+
const failures = buildFailureLines(entry);
|
|
137139
|
+
if (failures.length > 0) {
|
|
137140
|
+
modelParts.push(
|
|
137141
|
+
`<failures>${escapeXmlElementText(failures.join("\n"))}</failures>`
|
|
137142
|
+
);
|
|
137143
|
+
}
|
|
137131
137144
|
const recovery = entry.status === "failed" ? buildRecoveryLines(entry) : buildDiagnosticsLines(entry);
|
|
137132
137145
|
if (recovery.length > 0) {
|
|
137133
137146
|
const tag2 = entry.status === "failed" ? "recovery" : "diagnostics";
|
|
@@ -137227,6 +137240,7 @@ var WorkflowRunRegistry = class {
|
|
|
137227
137240
|
entry.dispatches = [];
|
|
137228
137241
|
entry.agentsDispatched = 0;
|
|
137229
137242
|
entry.agentsCompleted = 0;
|
|
137243
|
+
entry.agentsRespawned = 0;
|
|
137230
137244
|
entry.recentLogs = [];
|
|
137231
137245
|
entry.events = [];
|
|
137232
137246
|
entry.tokensSpent = 0;
|
|
@@ -137626,6 +137640,19 @@ var WorkflowRunRegistry = class {
|
|
|
137626
137640
|
entry.agentsCompleted++;
|
|
137627
137641
|
this.emitStatusChange(entry);
|
|
137628
137642
|
}
|
|
137643
|
+
/**
|
|
137644
|
+
* A resume re-ran a call the journal already knew about. Counted for the
|
|
137645
|
+
* usage line and written to the log the user reads in `/workflows`, because
|
|
137646
|
+
* "why is it running that agent again?" is the first question a resume
|
|
137647
|
+
* raises and the journal alone cannot answer it out loud.
|
|
137648
|
+
*/
|
|
137649
|
+
onResumeRespawn(runId, line) {
|
|
137650
|
+
const entry = this.entries.get(runId);
|
|
137651
|
+
if (!entry || !isActiveWorkflowStatus(entry.status) && entry.status !== "cancelled")
|
|
137652
|
+
return;
|
|
137653
|
+
entry.agentsRespawned = (entry.agentsRespawned ?? 0) + 1;
|
|
137654
|
+
this.onLogAppended(runId, line);
|
|
137655
|
+
}
|
|
137629
137656
|
/**
|
|
137630
137657
|
* P5: mirror a `budgetUpdated` emitter event into the entry. Attributes
|
|
137631
137658
|
* the cumulative delta (`spent - entry.tokensSpent`) to the entry's
|
|
@@ -138047,6 +138074,7 @@ function buildUsageLine(entry) {
|
|
|
138047
138074
|
`agents_cached=${countByStatus("cached")}`,
|
|
138048
138075
|
`agents_failed=${countByStatus("failed")}`,
|
|
138049
138076
|
`agents_cancelled=${countByStatus("cancelled")}`,
|
|
138077
|
+
`agents_respawned=${entry.agentsRespawned ?? 0}`,
|
|
138050
138078
|
`tokens_spent=${entry.tokensSpent}`,
|
|
138051
138079
|
`duration_ms=${durationMs}`
|
|
138052
138080
|
].join(" ");
|
|
@@ -153883,6 +153911,14 @@ var HookPlanner = class {
|
|
|
153883
153911
|
// packages/core/src/hooks/hookEventHandler.ts
|
|
153884
153912
|
init_esbuild_shims();
|
|
153885
153913
|
var debugLogger110 = createDebugLogger("TRUSTED_HOOKS");
|
|
153914
|
+
function normalizeQuestionHookResponse(toolName, response, displayKey) {
|
|
153915
|
+
const display = response[displayKey];
|
|
153916
|
+
if (toolName === ToolNames.ASK_USER_QUESTION && display !== null && typeof display === "object" && "type" in display && display.type === "ask_user_question_answers" && "text" in display && typeof display.text === "string") {
|
|
153917
|
+
return { ...response, [displayKey]: display.text };
|
|
153918
|
+
}
|
|
153919
|
+
return response;
|
|
153920
|
+
}
|
|
153921
|
+
__name(normalizeQuestionHookResponse, "normalizeQuestionHookResponse");
|
|
153886
153922
|
var HookEventHandler = class {
|
|
153887
153923
|
static {
|
|
153888
153924
|
__name(this, "HookEventHandler");
|
|
@@ -154131,7 +154167,11 @@ var HookEventHandler = class {
|
|
|
154131
154167
|
permission_mode: permissionMode,
|
|
154132
154168
|
tool_name: toolName,
|
|
154133
154169
|
tool_input: toolInput,
|
|
154134
|
-
tool_response:
|
|
154170
|
+
tool_response: normalizeQuestionHookResponse(
|
|
154171
|
+
toolName,
|
|
154172
|
+
toolResponse,
|
|
154173
|
+
"returnDisplay"
|
|
154174
|
+
),
|
|
154135
154175
|
tool_use_id: toolUseId,
|
|
154136
154176
|
...tool_call_id && { tool_call_id }
|
|
154137
154177
|
};
|
|
@@ -154195,7 +154235,16 @@ var HookEventHandler = class {
|
|
|
154195
154235
|
const input = {
|
|
154196
154236
|
...this.createBaseInput("PostToolBatch" /* PostToolBatch */),
|
|
154197
154237
|
permission_mode: permissionMode,
|
|
154198
|
-
tool_calls: toolCalls
|
|
154238
|
+
tool_calls: toolCalls.map(
|
|
154239
|
+
(call) => call.tool_response ? {
|
|
154240
|
+
...call,
|
|
154241
|
+
tool_response: normalizeQuestionHookResponse(
|
|
154242
|
+
call.tool_name,
|
|
154243
|
+
call.tool_response,
|
|
154244
|
+
"result_display"
|
|
154245
|
+
)
|
|
154246
|
+
} : call
|
|
154247
|
+
)
|
|
154199
154248
|
};
|
|
154200
154249
|
return this.executeHooks(
|
|
154201
154250
|
"PostToolBatch" /* PostToolBatch */,
|
|
@@ -161117,6 +161166,7 @@ var Config = class _Config {
|
|
|
161117
161166
|
contextRuleExcludes;
|
|
161118
161167
|
approvalMode;
|
|
161119
161168
|
prePlanMode;
|
|
161169
|
+
planExecutionMode;
|
|
161120
161170
|
approvalModeRevision = 0;
|
|
161121
161171
|
manualPlanExitNoticeEventState = {
|
|
161122
161172
|
version: 0,
|
|
@@ -161822,8 +161872,6 @@ var Config = class _Config {
|
|
|
161822
161872
|
}
|
|
161823
161873
|
let result;
|
|
161824
161874
|
let stopHookCount;
|
|
161825
|
-
let hasNonGoalBlockingStopHook;
|
|
161826
|
-
let nonGoalBlockingStopReason;
|
|
161827
161875
|
const input = request.input || {};
|
|
161828
161876
|
const signal = request.signal;
|
|
161829
161877
|
switch (request.eventName) {
|
|
@@ -161855,18 +161903,6 @@ var Config = class _Config {
|
|
|
161855
161903
|
);
|
|
161856
161904
|
result = stopResult.finalOutput ? createHookOutput("Stop", stopResult.finalOutput) : void 0;
|
|
161857
161905
|
stopHookCount = stopResult.allOutputs.length;
|
|
161858
|
-
const goalHookId = stopResult.finalOutput?.hookSpecificOutput?.[GOAL_HOOK_ID_OUTPUT_KEY];
|
|
161859
|
-
if (typeof goalHookId === "string") {
|
|
161860
|
-
const nonGoalBlockingOutputs = stopResult.allOutputs.filter(
|
|
161861
|
-
(output) => output.hookSpecificOutput?.[GOAL_HOOK_ID_OUTPUT_KEY] !== goalHookId && (output.decision === "block" || output.decision === "deny" || output.continue === false)
|
|
161862
|
-
);
|
|
161863
|
-
hasNonGoalBlockingStopHook = nonGoalBlockingOutputs.length > 0;
|
|
161864
|
-
if (hasNonGoalBlockingStopHook) {
|
|
161865
|
-
nonGoalBlockingStopReason = nonGoalBlockingOutputs.map(
|
|
161866
|
-
(output) => output.stopReason || output.reason || "No reason provided"
|
|
161867
|
-
).join("\n");
|
|
161868
|
-
}
|
|
161869
|
-
}
|
|
161870
161906
|
break;
|
|
161871
161907
|
}
|
|
161872
161908
|
case "MessageDisplay": {
|
|
@@ -161981,9 +162017,7 @@ var Config = class _Config {
|
|
|
161981
162017
|
success: true,
|
|
161982
162018
|
output: result,
|
|
161983
162019
|
// Include stop hook count for Stop events
|
|
161984
|
-
stopHookCount
|
|
161985
|
-
hasNonGoalBlockingStopHook,
|
|
161986
|
-
nonGoalBlockingStopReason
|
|
162020
|
+
stopHookCount
|
|
161987
162021
|
});
|
|
161988
162022
|
} catch (error3) {
|
|
161989
162023
|
this.debugLogger.warn(`Hook execution failed: ${error3}`);
|
|
@@ -162583,6 +162617,9 @@ var Config = class _Config {
|
|
|
162583
162617
|
}
|
|
162584
162618
|
);
|
|
162585
162619
|
const newContentGeneratorConfig = config3;
|
|
162620
|
+
if (priorReasoning === false && newContentGeneratorConfig.thinkingMandatory !== true) {
|
|
162621
|
+
newContentGeneratorConfig.reasoning = false;
|
|
162622
|
+
}
|
|
162586
162623
|
this.contentGenerator = await createContentGenerator(
|
|
162587
162624
|
newContentGeneratorConfig,
|
|
162588
162625
|
this,
|
|
@@ -162591,6 +162628,9 @@ var Config = class _Config {
|
|
|
162591
162628
|
this.contentGeneratorConfig = newContentGeneratorConfig;
|
|
162592
162629
|
this.contentGeneratorConfigSources = sources;
|
|
162593
162630
|
this.publishModelEnv();
|
|
162631
|
+
if (priorReasoning === false && newContentGeneratorConfig.reasoning === false) {
|
|
162632
|
+
this.modelsConfig.getGenerationConfig().reasoning = false;
|
|
162633
|
+
}
|
|
162594
162634
|
if (priorReasoningEffort) {
|
|
162595
162635
|
this.setReasoningEffort(priorReasoningEffort);
|
|
162596
162636
|
}
|
|
@@ -162997,6 +163037,19 @@ var Config = class _Config {
|
|
|
162997
163037
|
getCurrentModelRegistryBaseUrl() {
|
|
162998
163038
|
return this.modelsConfig.getCurrentRegistryBaseUrl();
|
|
162999
163039
|
}
|
|
163040
|
+
/**
|
|
163041
|
+
* The auth type of the currently selected model, read from `ModelsConfig`
|
|
163042
|
+
* rather than the content generator config.
|
|
163043
|
+
*
|
|
163044
|
+
* Unlike {@link getAuthType}, this is usable before `refreshAuth` has run —
|
|
163045
|
+
* the tool registry is built during `initialize()`, which happens first (the
|
|
163046
|
+
* ACP bridge calls `initialize()` and only later `refreshAuth`). Callers that
|
|
163047
|
+
* need the selected model's provider entry at registry-build time must use
|
|
163048
|
+
* this.
|
|
163049
|
+
*/
|
|
163050
|
+
getCurrentAuthType() {
|
|
163051
|
+
return this.modelsConfig.getCurrentAuthType();
|
|
163052
|
+
}
|
|
163000
163053
|
/**
|
|
163001
163054
|
* Resolve the effective input modalities of the current primary model. The
|
|
163002
163055
|
* content generator config always carries resolved modalities (name-based
|
|
@@ -163230,15 +163283,19 @@ var Config = class _Config {
|
|
|
163230
163283
|
*/
|
|
163231
163284
|
getReasoningEffortOverride() {
|
|
163232
163285
|
const cfg = this.getContentGeneratorConfig();
|
|
163233
|
-
if (!cfg || !DashScopeOpenAICompatibleProvider.isDashScopeProvider(cfg)
|
|
163286
|
+
if (!cfg || !DashScopeOpenAICompatibleProvider.isDashScopeProvider(cfg)) {
|
|
163234
163287
|
return void 0;
|
|
163235
163288
|
}
|
|
163289
|
+
const configuredReasoning = cfg.authType ? this.getResolvedModelConfig(cfg.authType, cfg.model, cfg.baseUrl)?.capabilities.reasoning : void 0;
|
|
163290
|
+
const tieredModel = isTieredEffortWireModel(cfg.model, configuredReasoning);
|
|
163291
|
+
if (!tieredModel) return void 0;
|
|
163236
163292
|
const currentEffort = this.getReasoningEffort();
|
|
163237
163293
|
const selected = selectDashScopeThinkingKnob(
|
|
163238
163294
|
cfg.model,
|
|
163239
163295
|
cfg.extra_body,
|
|
163240
163296
|
cfg.samplingParams,
|
|
163241
|
-
currentEffort
|
|
163297
|
+
currentEffort,
|
|
163298
|
+
tieredModel
|
|
163242
163299
|
);
|
|
163243
163300
|
if (!selected || selected.source === "reasoning" || selected.field === "reasoning_effort" && selected.value === currentEffort) {
|
|
163244
163301
|
return void 0;
|
|
@@ -163251,7 +163308,8 @@ var Config = class _Config {
|
|
|
163251
163308
|
cfg.model,
|
|
163252
163309
|
void 0,
|
|
163253
163310
|
cfg.samplingParams,
|
|
163254
|
-
currentEffort
|
|
163311
|
+
currentEffort,
|
|
163312
|
+
tieredModel
|
|
163255
163313
|
);
|
|
163256
163314
|
if (below?.source === "samplingParams" && below.field === "reasoning_effort" && below.value !== currentEffort) {
|
|
163257
163315
|
return { source: below.source, field: below.field };
|
|
@@ -164732,6 +164790,24 @@ var Config = class _Config {
|
|
|
164732
164790
|
getPrePlanMode() {
|
|
164733
164791
|
return this.prePlanMode ?? "default" /* DEFAULT */;
|
|
164734
164792
|
}
|
|
164793
|
+
getPlanExecutionMode() {
|
|
164794
|
+
return Object.hasOwn(this, "planExecutionMode") ? this.planExecutionMode : void 0;
|
|
164795
|
+
}
|
|
164796
|
+
setPlanMode(enabled, executionMode) {
|
|
164797
|
+
if (isDerivedConfig(this)) {
|
|
164798
|
+
throw new Error("Derived Configs cannot change plan workflow mode");
|
|
164799
|
+
}
|
|
164800
|
+
if (executionMode === "plan" /* PLAN */) {
|
|
164801
|
+
throw new Error("Plan is not an execution approval mode");
|
|
164802
|
+
}
|
|
164803
|
+
if (!this.isTrustedFolder() && executionMode !== "default" /* DEFAULT */) {
|
|
164804
|
+
throw new TrustGateError(
|
|
164805
|
+
"Cannot enable privileged approval modes in an untrusted folder."
|
|
164806
|
+
);
|
|
164807
|
+
}
|
|
164808
|
+
this.setApprovalMode(enabled ? "plan" /* PLAN */ : executionMode);
|
|
164809
|
+
this.planExecutionMode = enabled ? executionMode : void 0;
|
|
164810
|
+
}
|
|
164735
164811
|
getApprovalModeRevision() {
|
|
164736
164812
|
return this.approvalModeRevision;
|
|
164737
164813
|
}
|
|
@@ -164792,6 +164868,7 @@ var Config = class _Config {
|
|
|
164792
164868
|
this.autoModeDenialState = resetDenialState();
|
|
164793
164869
|
}
|
|
164794
164870
|
this.approvalMode = mode;
|
|
164871
|
+
if (mode !== "plan" /* PLAN */) this.planExecutionMode = void 0;
|
|
164795
164872
|
if (fromMode !== mode) {
|
|
164796
164873
|
this.approvalModeRevision++;
|
|
164797
164874
|
}
|
|
@@ -166536,35 +166613,35 @@ var Config = class _Config {
|
|
|
166536
166613
|
const registerGoalWorkerTools = /* @__PURE__ */ __name(async () => {
|
|
166537
166614
|
if (options2?.forSubAgent) return;
|
|
166538
166615
|
await registerLazy(ToolNames.GET_GOAL, async () => {
|
|
166539
|
-
const { GetGoalTool: GetGoalTool2 } = await import("./goal-tools-
|
|
166616
|
+
const { GetGoalTool: GetGoalTool2 } = await import("./goal-tools-245ULLQT.js");
|
|
166540
166617
|
return new GetGoalTool2(this);
|
|
166541
166618
|
});
|
|
166542
166619
|
await registerLazy(ToolNames.UPDATE_GOAL, async () => {
|
|
166543
|
-
const { UpdateGoalTool: UpdateGoalTool2 } = await import("./goal-tools-
|
|
166620
|
+
const { UpdateGoalTool: UpdateGoalTool2 } = await import("./goal-tools-245ULLQT.js");
|
|
166544
166621
|
return new UpdateGoalTool2(this);
|
|
166545
166622
|
});
|
|
166546
166623
|
if (this.getModelProposedGoals() !== "disabled" && resolveInteractionMode(this) === "interactive") {
|
|
166547
166624
|
await registerLazy(ToolNames.PROPOSE_GOAL, async () => {
|
|
166548
|
-
const { ProposeGoalTool: ProposeGoalTool2 } = await import("./goal-tools-
|
|
166625
|
+
const { ProposeGoalTool: ProposeGoalTool2 } = await import("./goal-tools-245ULLQT.js");
|
|
166549
166626
|
return new ProposeGoalTool2(this);
|
|
166550
166627
|
});
|
|
166551
166628
|
}
|
|
166552
166629
|
}, "registerGoalWorkerTools");
|
|
166553
166630
|
if (this.getBareMode()) {
|
|
166554
166631
|
await registerLazy(ToolNames.READ_FILE, async () => {
|
|
166555
|
-
const { ReadFileTool } = await import("./read-file-
|
|
166632
|
+
const { ReadFileTool } = await import("./read-file-S2NOCBIL.js");
|
|
166556
166633
|
return new ReadFileTool(this);
|
|
166557
166634
|
});
|
|
166558
166635
|
await registerLazy(ToolNames.EDIT, async () => {
|
|
166559
|
-
const { EditTool } = await import("./edit-
|
|
166636
|
+
const { EditTool } = await import("./edit-4IBADZ3O.js");
|
|
166560
166637
|
return new EditTool(this);
|
|
166561
166638
|
});
|
|
166562
166639
|
await registerLazy(ToolNames.NOTEBOOK_EDIT, async () => {
|
|
166563
|
-
const { NotebookEditTool } = await import("./notebook-edit-
|
|
166640
|
+
const { NotebookEditTool } = await import("./notebook-edit-YM47A7WO.js");
|
|
166564
166641
|
return new NotebookEditTool(this);
|
|
166565
166642
|
});
|
|
166566
166643
|
await registerLazy(ToolNames.SHELL, async () => {
|
|
166567
|
-
const { ShellTool: ShellTool2 } = await import("./shell-
|
|
166644
|
+
const { ShellTool: ShellTool2 } = await import("./shell-YBVCOPVO.js");
|
|
166568
166645
|
return new ShellTool2(this);
|
|
166569
166646
|
});
|
|
166570
166647
|
await registerGoalWorkerTools();
|
|
@@ -166576,7 +166653,7 @@ var Config = class _Config {
|
|
|
166576
166653
|
}
|
|
166577
166654
|
await registerGoalWorkerTools();
|
|
166578
166655
|
await registerLazy(ToolNames.TOOL_SEARCH, async () => {
|
|
166579
|
-
const { ToolSearchTool } = await import("./tool-search-
|
|
166656
|
+
const { ToolSearchTool } = await import("./tool-search-MCDIRPHN.js");
|
|
166580
166657
|
return new ToolSearchTool(this);
|
|
166581
166658
|
});
|
|
166582
166659
|
await registerLazy(ToolNames.READ_MCP_RESOURCE, async () => {
|
|
@@ -166584,11 +166661,11 @@ var Config = class _Config {
|
|
|
166584
166661
|
return new ReadMcpResourceTool(this);
|
|
166585
166662
|
});
|
|
166586
166663
|
await registerLazy(ToolNames.AGENT, async () => {
|
|
166587
|
-
const { AgentTool: AgentTool2 } = await import("./agent-
|
|
166664
|
+
const { AgentTool: AgentTool2 } = await import("./agent-EF3IIYE3.js");
|
|
166588
166665
|
return new AgentTool2(this);
|
|
166589
166666
|
});
|
|
166590
166667
|
await registerLazy(ToolNames.LIST_AGENTS, async () => {
|
|
166591
|
-
const { ListAgentsTool } = await import("./list-agents-
|
|
166668
|
+
const { ListAgentsTool } = await import("./list-agents-EDPZCGKN.js");
|
|
166592
166669
|
return new ListAgentsTool(this);
|
|
166593
166670
|
});
|
|
166594
166671
|
await registerLazy(ToolNames.TASK_STOP, async () => {
|
|
@@ -166596,11 +166673,11 @@ var Config = class _Config {
|
|
|
166596
166673
|
return new TaskStopTool(this);
|
|
166597
166674
|
});
|
|
166598
166675
|
await registerLazy(ToolNames.SEND_MESSAGE, async () => {
|
|
166599
|
-
const { SendMessageTool } = await import("./send-message-
|
|
166676
|
+
const { SendMessageTool } = await import("./send-message-V5T3NMFM.js");
|
|
166600
166677
|
return new SendMessageTool(this);
|
|
166601
166678
|
});
|
|
166602
166679
|
await registerLazy(ToolNames.SKILL, async () => {
|
|
166603
|
-
const { SkillTool } = await import("./skill-
|
|
166680
|
+
const { SkillTool } = await import("./skill-AXC63EBA.js");
|
|
166604
166681
|
return new SkillTool(this);
|
|
166605
166682
|
});
|
|
166606
166683
|
if (this.isLsToolEnabled()) {
|
|
@@ -166610,11 +166687,11 @@ var Config = class _Config {
|
|
|
166610
166687
|
});
|
|
166611
166688
|
}
|
|
166612
166689
|
await registerLazy(ToolNames.READ_FILE, async () => {
|
|
166613
|
-
const { ReadFileTool } = await import("./read-file-
|
|
166690
|
+
const { ReadFileTool } = await import("./read-file-S2NOCBIL.js");
|
|
166614
166691
|
return new ReadFileTool(this);
|
|
166615
166692
|
});
|
|
166616
166693
|
await registerLazy(ToolNames.ZOOM_IMAGE, async () => {
|
|
166617
|
-
const { ZoomImageTool } = await import("./zoom-image-
|
|
166694
|
+
const { ZoomImageTool } = await import("./zoom-image-BYVIXSNQ.js");
|
|
166618
166695
|
return new ZoomImageTool(this);
|
|
166619
166696
|
});
|
|
166620
166697
|
if (this.getUseRipgrep()) {
|
|
@@ -166629,7 +166706,7 @@ var Config = class _Config {
|
|
|
166629
166706
|
recordStartupEvent("config_initialize_ripgrep_probe_end");
|
|
166630
166707
|
if (useRipgrep) {
|
|
166631
166708
|
await registerLazy(ToolNames.GREP, async () => {
|
|
166632
|
-
const { RipGrepTool } = await import("./ripGrep-
|
|
166709
|
+
const { RipGrepTool } = await import("./ripGrep-F6TNOJUO.js");
|
|
166633
166710
|
return new RipGrepTool(this);
|
|
166634
166711
|
});
|
|
166635
166712
|
} else {
|
|
@@ -166655,23 +166732,23 @@ var Config = class _Config {
|
|
|
166655
166732
|
});
|
|
166656
166733
|
}
|
|
166657
166734
|
await registerLazy(ToolNames.GLOB, async () => {
|
|
166658
|
-
const { GlobTool } = await import("./glob-
|
|
166735
|
+
const { GlobTool } = await import("./glob-ERBD7JYP.js");
|
|
166659
166736
|
return new GlobTool(this);
|
|
166660
166737
|
});
|
|
166661
166738
|
await registerLazy(ToolNames.EDIT, async () => {
|
|
166662
|
-
const { EditTool } = await import("./edit-
|
|
166739
|
+
const { EditTool } = await import("./edit-4IBADZ3O.js");
|
|
166663
166740
|
return new EditTool(this);
|
|
166664
166741
|
});
|
|
166665
166742
|
await registerLazy(ToolNames.NOTEBOOK_EDIT, async () => {
|
|
166666
|
-
const { NotebookEditTool } = await import("./notebook-edit-
|
|
166743
|
+
const { NotebookEditTool } = await import("./notebook-edit-YM47A7WO.js");
|
|
166667
166744
|
return new NotebookEditTool(this);
|
|
166668
166745
|
});
|
|
166669
166746
|
await registerLazy(ToolNames.WRITE_FILE, async () => {
|
|
166670
|
-
const { WriteFileTool } = await import("./write-file-
|
|
166747
|
+
const { WriteFileTool } = await import("./write-file-DWLKFBTJ.js");
|
|
166671
166748
|
return new WriteFileTool(this);
|
|
166672
166749
|
});
|
|
166673
166750
|
await registerLazy(ToolNames.SHELL, async () => {
|
|
166674
|
-
const { ShellTool: ShellTool2 } = await import("./shell-
|
|
166751
|
+
const { ShellTool: ShellTool2 } = await import("./shell-YBVCOPVO.js");
|
|
166675
166752
|
return new ShellTool2(this);
|
|
166676
166753
|
});
|
|
166677
166754
|
if (this.isTodoWriteEnabled()) {
|
|
@@ -166687,19 +166764,19 @@ var Config = class _Config {
|
|
|
166687
166764
|
const supportsUserInteraction = resolveInteractionMode(this) !== "headless";
|
|
166688
166765
|
if (supportsUserInteraction) {
|
|
166689
166766
|
await registerLazy(ToolNames.ASK_USER_QUESTION, async () => {
|
|
166690
|
-
const { AskUserQuestionTool: AskUserQuestionTool2 } = await import("./askUserQuestion-
|
|
166767
|
+
const { AskUserQuestionTool: AskUserQuestionTool2 } = await import("./askUserQuestion-R3TXY77M.js");
|
|
166691
166768
|
return new AskUserQuestionTool2(this);
|
|
166692
166769
|
});
|
|
166693
166770
|
}
|
|
166694
166771
|
if (!this.sdkMode && (supportsUserInteraction || options2?.forSubAgent)) {
|
|
166695
166772
|
await registerLazy(ToolNames.EXIT_PLAN_MODE, async () => {
|
|
166696
|
-
const { ExitPlanModeTool: ExitPlanModeTool2 } = await import("./exitPlanMode-
|
|
166773
|
+
const { ExitPlanModeTool: ExitPlanModeTool2 } = await import("./exitPlanMode-24J5IHGC.js");
|
|
166697
166774
|
return new ExitPlanModeTool2(this);
|
|
166698
166775
|
});
|
|
166699
166776
|
}
|
|
166700
166777
|
if (!this.sdkMode && supportsUserInteraction) {
|
|
166701
166778
|
await registerLazy(ToolNames.ENTER_PLAN_MODE, async () => {
|
|
166702
|
-
const { EnterPlanModeTool } = await import("./enterPlanMode-
|
|
166779
|
+
const { EnterPlanModeTool } = await import("./enterPlanMode-YN3GPQU5.js");
|
|
166703
166780
|
return new EnterPlanModeTool(this);
|
|
166704
166781
|
});
|
|
166705
166782
|
}
|
|
@@ -166712,7 +166789,7 @@ var Config = class _Config {
|
|
|
166712
166789
|
return new ExitWorktreeTool(this);
|
|
166713
166790
|
});
|
|
166714
166791
|
await registerLazy(ToolNames.WEB_FETCH, async () => {
|
|
166715
|
-
const { WebFetchTool } = await import("./web-fetch-
|
|
166792
|
+
const { WebFetchTool } = await import("./web-fetch-QBXAO6VF.js");
|
|
166716
166793
|
return new WebFetchTool(this);
|
|
166717
166794
|
});
|
|
166718
166795
|
if (resolveInteractionMode(this) === "interactive" && !this.sdkMode && !this.getScreenReader() && !options2?.forSubAgent) {
|
|
@@ -166721,15 +166798,16 @@ var Config = class _Config {
|
|
|
166721
166798
|
return new DisplayImageTool(this);
|
|
166722
166799
|
});
|
|
166723
166800
|
}
|
|
166724
|
-
|
|
166725
|
-
|
|
166801
|
+
const hasExplicitWebSearchBackend = !!this.webSearchSettings?.model?.trim() || !!this.webSearchSettings?.baseUrl;
|
|
166802
|
+
if (!this.getBareMode() && !this.isSafeMode() && this.webSearchSettings?.enabled !== false && (this.webSearchSettings?.enabled === true || !hasExplicitWebSearchBackend)) {
|
|
166803
|
+
const { evaluateWebSearchGate } = await import("./web-search-2URQXA3A.js");
|
|
166726
166804
|
const gate = evaluateWebSearchGate(this);
|
|
166727
166805
|
if (gate.ok) {
|
|
166728
166806
|
await registerLazy(ToolNames.WEB_SEARCH, async () => {
|
|
166729
|
-
const { WebSearchTool } = await import("./web-search-
|
|
166807
|
+
const { WebSearchTool } = await import("./web-search-2URQXA3A.js");
|
|
166730
166808
|
return new WebSearchTool(this);
|
|
166731
166809
|
});
|
|
166732
|
-
} else if (!this.webSearchNoticeEmitted && !options2?.forSubAgent) {
|
|
166810
|
+
} else if (!gate.silent && !this.webSearchNoticeEmitted && !options2?.forSubAgent) {
|
|
166733
166811
|
this.webSearchNoticeEmitted = true;
|
|
166734
166812
|
this.warnings.push(gate.notice);
|
|
166735
166813
|
}
|
|
@@ -166737,7 +166815,7 @@ var Config = class _Config {
|
|
|
166737
166815
|
await this.registerImageGenerationTool(registry3);
|
|
166738
166816
|
if (this.isArtifactEnabled()) {
|
|
166739
166817
|
await registerLazy(ToolNames.ARTIFACT, async () => {
|
|
166740
|
-
const { ArtifactTool } = await import("./artifact-tool-
|
|
166818
|
+
const { ArtifactTool } = await import("./artifact-tool-G5LHNECG.js");
|
|
166741
166819
|
return new ArtifactTool(this);
|
|
166742
166820
|
});
|
|
166743
166821
|
}
|
|
@@ -166780,15 +166858,15 @@ var Config = class _Config {
|
|
|
166780
166858
|
}
|
|
166781
166859
|
if (this.isAgentTeamEnabled()) {
|
|
166782
166860
|
await registerLazy(ToolNames.TEAM_CREATE, async () => {
|
|
166783
|
-
const { TeamCreateTool } = await import("./team-create-
|
|
166861
|
+
const { TeamCreateTool } = await import("./team-create-BUFLGGSH.js");
|
|
166784
166862
|
return new TeamCreateTool(this);
|
|
166785
166863
|
});
|
|
166786
166864
|
await registerLazy(ToolNames.TEAM_DELETE, async () => {
|
|
166787
|
-
const { TeamDeleteTool } = await import("./team-delete-
|
|
166865
|
+
const { TeamDeleteTool } = await import("./team-delete-IQZ6XGFI.js");
|
|
166788
166866
|
return new TeamDeleteTool(this);
|
|
166789
166867
|
});
|
|
166790
166868
|
await registerLazy(ToolNames.TEAM_PLAN_APPROVAL, async () => {
|
|
166791
|
-
const { TeamPlanApprovalTool } = await import("./team-plan-approval-
|
|
166869
|
+
const { TeamPlanApprovalTool } = await import("./team-plan-approval-OUWWM42U.js");
|
|
166792
166870
|
return new TeamPlanApprovalTool(this);
|
|
166793
166871
|
});
|
|
166794
166872
|
if (!options2?.forSubAgent) {
|
|
@@ -166798,26 +166876,26 @@ var Config = class _Config {
|
|
|
166798
166876
|
});
|
|
166799
166877
|
}
|
|
166800
166878
|
await registerLazy(ToolNames.TASK_CREATE, async () => {
|
|
166801
|
-
const { TaskCreateTool } = await import("./task-create-
|
|
166879
|
+
const { TaskCreateTool } = await import("./task-create-MWXJFRRM.js");
|
|
166802
166880
|
return new TaskCreateTool(this);
|
|
166803
166881
|
});
|
|
166804
166882
|
await registerLazy(ToolNames.TASK_UPDATE, async () => {
|
|
166805
|
-
const { TaskUpdateTool } = await import("./task-update-
|
|
166883
|
+
const { TaskUpdateTool } = await import("./task-update-2JJJRHMT.js");
|
|
166806
166884
|
return new TaskUpdateTool(this);
|
|
166807
166885
|
});
|
|
166808
166886
|
await registerLazy(ToolNames.TASK_LIST, async () => {
|
|
166809
|
-
const { TaskListTool } = await import("./task-list-
|
|
166887
|
+
const { TaskListTool } = await import("./task-list-EYO3FE57.js");
|
|
166810
166888
|
return new TaskListTool(this);
|
|
166811
166889
|
});
|
|
166812
166890
|
}
|
|
166813
166891
|
if (this.isWorkflowsEnabled()) {
|
|
166814
166892
|
await registerLazy(ToolNames.WORKFLOW, async () => {
|
|
166815
|
-
const { WorkflowTool } = await import("./workflow-
|
|
166893
|
+
const { WorkflowTool } = await import("./workflow-JDD6WDAH.js");
|
|
166816
166894
|
return new WorkflowTool(this);
|
|
166817
166895
|
});
|
|
166818
166896
|
}
|
|
166819
166897
|
await registerLazy(ToolNames.MONITOR, async () => {
|
|
166820
|
-
const { MonitorTool } = await import("./monitor-
|
|
166898
|
+
const { MonitorTool } = await import("./monitor-RKK6GSHG.js");
|
|
166821
166899
|
return new MonitorTool(this);
|
|
166822
166900
|
});
|
|
166823
166901
|
if (this.pendingMcpBudgetCallback) {
|
|
@@ -167570,9 +167648,6 @@ export {
|
|
|
167570
167648
|
parseGoalSnapshotV2,
|
|
167571
167649
|
parseGoalStateCause,
|
|
167572
167650
|
GoalPersistenceUnavailableError,
|
|
167573
|
-
getActiveGoal,
|
|
167574
|
-
getStopHookContinuationReason,
|
|
167575
|
-
abortGoalForStopHookCap,
|
|
167576
167651
|
checkPriorRead,
|
|
167577
167652
|
goalTurnContext,
|
|
167578
167653
|
GetGoalTool,
|
|
@@ -167654,6 +167729,7 @@ export {
|
|
|
167654
167729
|
replaceSessionPrs,
|
|
167655
167730
|
buildApiHistoryFromConversation,
|
|
167656
167731
|
collectSessionTurnState,
|
|
167732
|
+
computeInitialTurnFromHistory,
|
|
167657
167733
|
SESSION_TRANSCRIPT_MAX_LIMIT,
|
|
167658
167734
|
SESSION_TRANSCRIPT_MAX_INDEX_BYTES,
|
|
167659
167735
|
SESSION_TRANSCRIPT_MAX_PAGE_BYTES,
|
|
@@ -167875,6 +167951,7 @@ export {
|
|
|
167875
167951
|
MAX_CONCURRENT_MONITORS,
|
|
167876
167952
|
getMonitorOutputPath,
|
|
167877
167953
|
isImageGenerationCapable,
|
|
167954
|
+
buildFailureLines,
|
|
167878
167955
|
RESUME_ARGS_TOO_LARGE_NOTE,
|
|
167879
167956
|
hasUninlinableResumeArgs,
|
|
167880
167957
|
buildResumeCall,
|