@qwen-code/qwen-code 0.21.8-nightly.20260810.55e20db328 → 0.21.9
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 +2 -1
- package/bundled/qc-helper/docs/configuration/settings.md +2 -1
- package/bundled/qc-helper/docs/features/code-review.md +2 -0
- package/bundled/qc-helper/docs/qwen-serve.md +38 -37
- package/bundled/review/SKILL.md +7 -7
- package/chunks/{MaxSizedBox-A52T4GEU.js → MaxSizedBox-6BZANW7X.js} +3 -3
- package/chunks/{StandaloneSessionPicker-4J654SOB.js → StandaloneSessionPicker-VDC5KE7T.js} +19 -16
- package/chunks/{acpAgent-65AM4AOR.js → acpAgent-F2NSBCUF.js} +49 -40
- package/chunks/{agent-SVQ7U7NJ.js → agent-VOHJOEBB.js} +3 -3
- package/chunks/{agent-headless-XXGY2SQO.js → agent-headless-J5NFOPHP.js} +3 -3
- package/chunks/{bridge-Y32B5S3G.js → bridge-NQIZZLAS.js} +4 -4
- package/chunks/{channel-settings-store-OW43U6VB.js → channel-settings-store-VIY2OENO.js} +11 -9
- package/chunks/{chunk-OR6R3IUW.js → chunk-23VQTELM.js} +1 -1
- package/chunks/{chunk-VHXPSL57.js → chunk-3WDYBTTI.js} +4 -4
- package/chunks/{chunk-FAD7OC7V.js → chunk-3XVDTHBJ.js} +2 -2
- package/chunks/{chunk-7XX5IBXL.js → chunk-46YJDYCU.js} +6 -6
- package/chunks/{chunk-FYB4GIDW.js → chunk-4XQNB3KN.js} +2 -2
- package/chunks/chunk-5EJZE3FP.js +140 -0
- package/chunks/{chunk-DPMJLKUP.js → chunk-5RBDAGC6.js} +2 -2
- package/chunks/{chunk-D2D7J3EW.js → chunk-7AEPJGL4.js} +1 -1
- package/chunks/{chunk-HKI3KHAO.js → chunk-7GOYZQPR.js} +19 -1976
- package/chunks/{chunk-2ASQDZSJ.js → chunk-7S4JBJLU.js} +3 -3
- package/chunks/{chunk-EISUQQPS.js → chunk-ATMO54WE.js} +2 -2
- package/chunks/{chunk-NZMXUSKS.js → chunk-BAMN6XSD.js} +1 -1
- package/chunks/{chunk-2545EHZR.js → chunk-BIRWP6LU.js} +1 -1
- package/chunks/{chunk-UGUKH3SU.js → chunk-BZP4QPNK.js} +9 -9
- package/chunks/{chunk-AUWN7BAG.js → chunk-D7BXVKSF.js} +1 -1
- package/chunks/{chunk-TXO5BMR2.js → chunk-DH5YXSIF.js} +2 -2
- package/chunks/{chunk-OSVH4SMN.js → chunk-FBMCDU63.js} +3 -3
- package/chunks/{chunk-GY24H6IA.js → chunk-FCLHHEUK.js} +10 -10
- package/chunks/{chunk-FWWQIFDT.js → chunk-G2TX5ZXC.js} +3 -3
- package/chunks/{chunk-HDYQYYWB.js → chunk-GAKGOXTC.js} +1 -1
- package/chunks/{chunk-TWFFY5BP.js → chunk-HADWBW5R.js} +4 -4
- package/chunks/{chunk-E2N554HK.js → chunk-HZGBKOX3.js} +2 -2
- package/chunks/{chunk-V47QNK5W.js → chunk-II6G3EY6.js} +288 -72
- package/chunks/{chunk-ZV7LTLFE.js → chunk-IOEZE2YT.js} +1 -1
- package/chunks/chunk-JUWS2Z5K.js +1995 -0
- package/chunks/{chunk-F3II4BTZ.js → chunk-K4ADGWHU.js} +1 -1
- package/chunks/{chunk-5ZTS3OQ3.js → chunk-KSAFZ5TA.js} +1 -1
- package/chunks/{chunk-KMS57JDD.js → chunk-KTKYGS2P.js} +29 -6
- package/chunks/{chunk-HWXGX534.js → chunk-KTQGGPGV.js} +3 -3
- package/chunks/{chunk-ZIKTCMQF.js → chunk-LZZLUCRS.js} +5 -5
- package/chunks/{chunk-S5CULOHB.js → chunk-MHP476D3.js} +64 -21
- package/chunks/{chunk-PNVPFARW.js → chunk-MTCYGTWH.js} +4 -4
- package/chunks/{chunk-WQYWK4DG.js → chunk-OGDIJKHK.js} +1 -1
- package/chunks/{chunk-WH6QMLUW.js → chunk-OGNFHGIG.js} +3 -3
- package/chunks/{chunk-P5ULXPK5.js → chunk-P2FK2HBV.js} +2 -2
- package/chunks/{chunk-5WZL724W.js → chunk-P3RBMQ4P.js} +3 -3
- package/chunks/{chunk-4EOURKA4.js → chunk-P4ZEZSJZ.js} +177 -17
- package/chunks/{chunk-RQ6U2JJQ.js → chunk-PNBBJOCP.js} +1 -1
- package/chunks/{chunk-E2T7FLDU.js → chunk-PVOGHGSF.js} +5 -5
- package/chunks/{chunk-EUVOKP6Y.js → chunk-QSNSL4R4.js} +1 -1
- package/chunks/{chunk-RYQMJCUO.js → chunk-RBHQXGDK.js} +1 -1
- package/chunks/{chunk-ZI5IH2HP.js → chunk-RVSTTOJ4.js} +2 -2
- package/chunks/{chunk-OW2BWT2P.js → chunk-SCAZZ3Q4.js} +4 -4
- package/chunks/{chunk-OBP6QWD5.js → chunk-T5RLUXWJ.js} +2 -2
- package/chunks/{chunk-KP25NJNM.js → chunk-T6HEQR2Q.js} +16 -5
- package/chunks/{chunk-RMPLEWF3.js → chunk-THIKWITR.js} +2 -2
- package/chunks/{chunk-V2226RFW.js → chunk-TQCYNLNJ.js} +1 -1
- package/chunks/{chunk-O277O7U6.js → chunk-TZ6KJ44L.js} +1 -1
- package/chunks/{chunk-ZCJBCKL5.js → chunk-UJUM2SRN.js} +115 -29
- package/chunks/{chunk-3KJQZEN3.js → chunk-UYAUA63Q.js} +1 -1
- package/chunks/chunk-VFMASYQA.js +389 -0
- package/chunks/chunk-VGHZT6JR.js +51 -0
- package/chunks/{chunk-H4JC7LZX.js → chunk-W3FSZSF2.js} +1 -1
- package/chunks/{chunk-YFRFZCIP.js → chunk-WGK4TSB7.js} +3 -3
- package/chunks/{chunk-BL65MO72.js → chunk-WP5VOXF7.js} +6 -127
- package/chunks/{chunk-T2O6NIOY.js → chunk-XTY5DN4Y.js} +1 -1
- package/chunks/{chunk-47ZUMGGY.js → chunk-XX7QFP34.js} +56 -55
- package/chunks/{chunk-ZSNBQXMZ.js → chunk-YTFDX4PR.js} +8 -3
- package/chunks/{chunk-F6TUUA2U.js → chunk-ZBXGWQ4S.js} +2 -2
- package/chunks/{chunk-YR7ZQ4RD.js → chunk-ZOSTTOUJ.js} +1 -1
- package/chunks/{chunk-UAB6J2IE.js → chunk-ZTQSOV56.js} +3 -3
- package/chunks/{computer-use-SLN7DV2E.js → computer-use-PMZ7ICGY.js} +3 -3
- package/chunks/{contextCommand-EHFYX6FW.js → contextCommand-GEZU7YHE.js} +6 -5
- package/chunks/{core-runtime-FBSP5IIG.js → core-runtime-HRJI2MN6.js} +3 -3
- package/chunks/{create-sub-session-WC7YGVSL.js → create-sub-session-VBNVI4YU.js} +3 -3
- package/chunks/{daemon-VSX3FHTY.js → daemon-POSQPD3G.js} +26 -3
- package/chunks/{daemon-status-provider-WW2AD2T7.js → daemon-status-provider-N4CRQKFI.js} +8 -8
- package/chunks/{daemon-trust-policy-E4MAYWPI.js → daemon-trust-policy-BHO3JUHM.js} +11 -9
- package/chunks/{daemon-trust-policy-monitor-XVIDV6T4.js → daemon-trust-policy-monitor-YEKJ2726.js} +11 -9
- package/chunks/{deferred-core-runtime-5SVUC6UC.js → deferred-core-runtime-SH57E3J3.js} +3 -3
- package/chunks/{earlyInputCapture-72FYHYRD.js → earlyInputCapture-B2JJ2HME.js} +3 -3
- package/chunks/{edit-SWVVWHXW.js → edit-7FTXENAN.js} +5 -3
- package/chunks/{enter-worktree-2HF6WQEO.js → enter-worktree-JPHV2PBG.js} +3 -3
- package/chunks/{enterPlanMode-OW6S7L4P.js → enterPlanMode-CGBJ3AHJ.js} +3 -3
- package/chunks/{environment-LRTBTDXH.js → environment-LXASZAHD.js} +6 -6
- package/chunks/{errors-4CO2DME6.js → errors-XIGVT2AD.js} +5 -5
- package/chunks/{exit-worktree-GHJEIRGL.js → exit-worktree-DKSGXW65.js} +3 -3
- package/chunks/{exitPlanMode-JVP4FNNK.js → exitPlanMode-THFL2HYN.js} +3 -3
- package/chunks/{fast-path-HCCY7GR2.js → fast-path-4NXAT5UL.js} +3 -3
- package/chunks/{fast-path-settings-MN5QQQET.js → fast-path-settings-RPAVBD7P.js} +2 -2
- package/chunks/{gemini-V3YVRKXU.js → gemini-B3N6FACU.js} +39 -44
- package/chunks/{geminiContentGenerator-LVPMQUWX.js → geminiContentGenerator-YYFE2HIE.js} +1 -1
- package/chunks/{glob-7HRXHYDR.js → glob-BPHSCFJP.js} +3 -3
- package/chunks/{grep-BITQUON5.js → grep-ROZIRFLU.js} +3 -3
- package/chunks/{handleAutoUpdate-DKFY454S.js → handleAutoUpdate-WV6SPZQB.js} +8 -7
- package/chunks/{i18n-53BQIQSH.js → i18n-YWJWPQKD.js} +8 -6
- package/chunks/{image-gen-H62FLDFB.js → image-gen-SISRZ6FS.js} +1 -1
- package/chunks/{initializer-Q7NUQRSU.js → initializer-66OAD6GO.js} +11 -9
- package/chunks/{installationInfo-BWFHT7WU.js → installationInfo-3YUGIP36.js} +4 -4
- package/chunks/{list-OWQKR6JK.js → list-VEYR66XB.js} +14 -12
- package/chunks/{loadedSettingsAdapter-HNPKQMFA.js → loadedSettingsAdapter-V2JCPCYD.js} +11 -9
- package/chunks/{loggingContentGenerator-A5I3VQUC.js → loggingContentGenerator-RBLNDREC.js} +1 -1
- package/chunks/{managed-npm-update-CUUJGUTV.js → managed-npm-update-C5ID5R4R.js} +4 -4
- package/chunks/{mcp-GJSC7ZPO.js → mcp-OZ54NZJQ.js} +11 -9
- package/chunks/{monitor-TZ2II7JM.js → monitor-7Y4TVFTK.js} +3 -3
- package/chunks/{nonInteractiveCli-22RS4EVH.js → nonInteractiveCli-QEK4LHAC.js} +35 -33
- package/chunks/{notebook-edit-YZC3YPY2.js → notebook-edit-OG35EBGY.js} +4 -3
- package/chunks/{openaiContentGenerator-OIGO5XNF.js → openaiContentGenerator-443BNRPJ.js} +1 -1
- package/chunks/{pidfile-QJQ65RJ2.js → pidfile-ZK4OLRZA.js} +3 -3
- package/chunks/{processUtils-V5VSDIKS.js → processUtils-4YGB4RUZ.js} +2 -2
- package/chunks/{qwenContentGenerator-HXM25BGB.js → qwenContentGenerator-D5C2LCSZ.js} +3 -3
- package/chunks/{qwenOAuth2-7MTMS2Z5.js → qwenOAuth2-Z4YQBMYN.js} +1 -1
- package/chunks/{read-file-PMGXB3ZB.js → read-file-EXTJLWMU.js} +1 -1
- package/chunks/{resumeHistoryUtils-YUTPLHUH.js → resumeHistoryUtils-UPCGRJUL.js} +7 -6
- package/chunks/{ripGrep-XUS66YIV.js → ripGrep-QBVIRCU4.js} +3 -3
- package/chunks/{run-qwen-serve-4NVSU75L.js → run-qwen-serve-ZYGJNE3E.js} +67 -51
- package/chunks/{runtime-QLRVP6HM.js → runtime-BZZ4LWCP.js} +12 -10
- package/chunks/{scheduler-PBB2NSOP.js → scheduler-YNQNOU2E.js} +131 -11
- package/chunks/{serve-BWKTRX72.js → serve-LJHAXDCH.js} +11 -9
- package/chunks/{server-E7CH7WPK.js → server-ADMLELR6.js} +256 -750
- package/chunks/{session-QEKSJ6YU.js → session-YKZXFFTM.js} +36 -34
- package/chunks/{settings-BRAOSJIM.js → settings-EQBUAQ7Y.js} +10 -8
- package/chunks/{shell-OF3CK4AT.js → shell-3QZOJGTT.js} +3 -3
- package/chunks/{skill-HLH2NO2H.js → skill-UWSSMXE7.js} +1 -1
- package/chunks/{skill-settings-DRPU7YI5.js → skill-settings-T6MLB7NU.js} +10 -8
- package/chunks/{spawnChannel-4KO7YTFM.js → spawnChannel-VS7ZFUFP.js} +3 -3
- package/chunks/{standalone-update-DJN2R3YW.js → standalone-update-2W26SRRO.js} +6 -5
- package/chunks/{startInteractiveUI-O3WQQ2WC.js → startInteractiveUI-CVS7K3D6.js} +55 -45
- package/chunks/{team-create-2E4ACBJD.js → team-create-4WFTNNUL.js} +3 -3
- package/chunks/{team-plan-approval-LWIDXYOA.js → team-plan-approval-DBYI33S3.js} +3 -3
- package/chunks/{terminal-image-renderer-PJM7663W.js → terminal-image-renderer-S5WPPQKH.js} +3 -3
- package/chunks/{theme-manager-FDQTM3RP.js → theme-manager-LI2RIOVR.js} +3 -3
- package/chunks/{tool-search-TL5ZXBF4.js → tool-search-4773EUQ4.js} +1 -1
- package/chunks/{total-session-admission-LS6EY5KT.js → total-session-admission-PAY5CH2Z.js} +4 -4
- package/chunks/{trustedFolders-5RWP5OB7.js → trustedFolders-FRSLE674.js} +4 -4
- package/chunks/{update-relaunch-HWQ4USKY.js → update-relaunch-ZSFQTU6M.js} +5 -5
- package/chunks/{updateCheck-EZMBTEIR.js → updateCheck-AXWSO7KA.js} +7 -6
- package/chunks/{useAutoAcceptIndicator-JDMI627A.js → useAutoAcceptIndicator-VHLXIA7U.js} +11 -9
- package/chunks/{validateNonInterActiveAuth-RRUHC5RO.js → validateNonInterActiveAuth-PDJECMFU.js} +32 -30
- package/chunks/{version-XS4UTKUX.js → version-RBN764QS.js} +1 -1
- package/chunks/{web-fetch-2JV7H6OM.js → web-fetch-7BJK42AF.js} +1 -1
- package/chunks/{web-search-RCTN2GAM.js → web-search-L2CILQXV.js} +2 -2
- package/chunks/{workflow-6MKLKQ6R.js → workflow-5VH2R74I.js} +4 -4
- package/chunks/{workspace-providers-status-YZ2IJ4DK.js → workspace-providers-status-OZTQ6JFH.js} +13 -11
- package/chunks/{workspace-registration-store-IYN72LBS.js → workspace-registration-store-IX5RJQS5.js} +1 -1
- package/chunks/{workspace-registry-7LFBZQLT.js → workspace-registry-73N4BGG4.js} +4 -4
- package/chunks/{workspace-service-2EHSPRJB.js → workspace-service-I5RUPSNV.js} +14 -12
- package/chunks/{workspace-skills-status-5VJ2D5HN.js → workspace-skills-status-DMK6VYDO.js} +11 -9
- package/chunks/{workspace-trust-reconciler-X2LZ6XCI.js → workspace-trust-reconciler-QX4RL3TC.js} +12 -10
- package/chunks/{write-file-CJK6SCCF.js → write-file-UGDD5UTS.js} +3 -3
- package/chunks/{zoom-image-BVW4RFYW.js → zoom-image-ZAHEO3YP.js} +1 -1
- package/cli.js +12 -12
- package/package.json +3 -3
- package/web-shell/assets/{arc-DDtoJrAW.js → arc-CHY4saMJ.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BAInIW4O.js → architectureDiagram-3BPJPVTR-Bu6CwvHj.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-ChPDk7fP.js → blockDiagram-GPEHLZMM-XGt6iGf_.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-Cd9BJuUy.js → c4Diagram-AAUBKEIU-CBbYl19W.js} +1 -1
- package/web-shell/assets/channel-B40srHOa.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-COQkLp56.js → chunk-2J33WTMH-BEhmVrdx.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-GUJshQ_l.js → chunk-4BX2VUAB-fQLyE0Bg.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-Boaa7c10.js → chunk-55IACEB6-yGdtyx4a.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-CcRXaly2.js → chunk-727SXJPM-DYbX2GLo.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BY0OARHh.js → chunk-AQP2D5EJ-DyKTEsYn.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-DLFQfv0S.js → chunk-FMBD7UC4-D8Uy_GzX.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-C_S0u-D2.js → chunk-ND2GUHAM-C8wNR2K7.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-DP9m64hw.js → chunk-QZHKN3VN-BnybNxnt.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-qumcXQW_.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-qumcXQW_.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-CGY6zGE1.js → cose-bilkent-S5V4N54A-jq4uiFRp.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-yB7whKNn.js → dagre-BM42HDAG-Bs7oye1U.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-Bdlc59La.js → diagram-2AECGRRQ-BHGGJNyM.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BUClP18L.js → diagram-5GNKFQAL-BJezVLGT.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-aZm08kjn.js → diagram-KO2AKTUF-5JzQN_rL.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-7DGwEkxC.js → diagram-LMA3HP47-BlPYOgY9.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CAGKayxx.js → diagram-OG6HWLK6-CtMHEaFK.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CptoHHQi.js → erDiagram-TEJ5UH35-CRNdq2AB.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-CNOH0s7Q.js → flowDiagram-I6XJVG4X-De1WwLzu.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-CCQuCU3y.js → ganttDiagram-6RSMTGT7-YbWfL5Zn.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-B7gv9f4E.js → gitGraphDiagram-PVQCEYII-DzCN8bmd.js} +1 -1
- package/web-shell/assets/index-BDOGGGaN.css +5 -0
- package/web-shell/assets/{index-BoUPVvpf.js → index-CocPvF9Q.js} +1 -1
- package/web-shell/assets/index-DSH2KrMc.js +1771 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-Bb3KYEbR.js → infoDiagram-5YYISTIA-DLHoopnE.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DWEzbAGi.js → ishikawaDiagram-YF4QCWOH-XnbU04SS.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CmxwEqeb.js → journeyDiagram-JHISSGLW-CipPyEeJ.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-Ci0gDD8O.js → kanban-definition-UN3LZRKU-DrSeyE5d.js} +1 -1
- package/web-shell/assets/{linear-BqxZqGhS.js → linear-LrBKnAo_.js} +1 -1
- package/web-shell/assets/{mermaid.core-BDAFffHv.js → mermaid.core-C3U9UVmf.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-Btvx-xvS.js → mindmap-definition-RKZ34NQL-DqRWgC9H.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-CKAg7yG7.js → pieDiagram-4H26LBE5-BNXY5p6H.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DIt8E1mC.js → quadrantDiagram-W4KKPZXB-Ccj9QzE4.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BA7mQWQJ.js → requirementDiagram-4Y6WPE33-CjPM2_gx.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-D0JppnVU.js → sankeyDiagram-5OEKKPKP-C0RsvKbj.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-29DIQFjB.js → sequenceDiagram-3UESZ5HK-ClN1P5z7.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-iiXMdK--.js → stateDiagram-AJRCARHV-By0eiB2Y.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Ds0WlK3F.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-CeF7ngSW.js → timeline-definition-PNZ67QCA-g_iaSQgv.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-Beilq8D6.js → vennDiagram-CIIHVFJN-y9ZqJ-TD.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-DOYjY4zO.js → wardley-L42UT6IY-BVVfaxpF.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Dtqp8o18.js → wardleyDiagram-YWT4CUSO-D3ooZKZT.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-cdAc0Dfv.js → xychartDiagram-2RQKCTM6-6GXrY6M1.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-R4ZA6GBK.js +0 -208
- package/web-shell/assets/channel-0OQklTfP.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CZ4-apsu.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CZ4-apsu.js +0 -1
- package/web-shell/assets/index-D1YQXYsB.css +0 -5
- package/web-shell/assets/index-J4N7zCmU.js +0 -1768
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CEGK3l80.js +0 -1
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
listCommand
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SCAZZ3Q4.js";
|
|
6
6
|
import {
|
|
7
7
|
serveCommand
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-LZZLUCRS.js";
|
|
9
9
|
import {
|
|
10
10
|
getErrorMessage as getErrorMessage2
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-P2FK2HBV.js";
|
|
12
12
|
import {
|
|
13
13
|
OBSERVED_CONTACT_MAX_FRESH_WITHIN_SECONDS,
|
|
14
14
|
ObservedChannelContactStore
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
collectProviderModelsForProtocol,
|
|
34
34
|
getAuthTypeFromEnv,
|
|
35
35
|
resolveCliGenerationConfig
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-KTQGGPGV.js";
|
|
37
37
|
import {
|
|
38
38
|
resolveSkillSettings
|
|
39
39
|
} from "./chunk-Z4X5MTRT.js";
|
|
@@ -53,14 +53,14 @@ import {
|
|
|
53
53
|
registerToolCallDispatch,
|
|
54
54
|
selectFirstModel,
|
|
55
55
|
sessionsPath
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-ATMO54WE.js";
|
|
57
57
|
import {
|
|
58
58
|
getExtensionManager,
|
|
59
59
|
requestChoicePluginNonInteractive,
|
|
60
60
|
requestConsentNonInteractive,
|
|
61
61
|
requestConsentOrFail,
|
|
62
62
|
resolveExtensionCommandScope
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-HADWBW5R.js";
|
|
64
64
|
import {
|
|
65
65
|
parseChannelConfig
|
|
66
66
|
} from "./chunk-LHEC5V6G.js";
|
|
@@ -133,33 +133,33 @@ import {
|
|
|
133
133
|
assembleMcpServers,
|
|
134
134
|
getPendingGatedMcpServers,
|
|
135
135
|
mcpCommand
|
|
136
|
-
} from "./chunk-
|
|
136
|
+
} from "./chunk-MTCYGTWH.js";
|
|
137
137
|
import {
|
|
138
138
|
loadSettings
|
|
139
|
-
} from "./chunk-
|
|
139
|
+
} from "./chunk-JUWS2Z5K.js";
|
|
140
140
|
import {
|
|
141
141
|
detectSystemLanguage,
|
|
142
142
|
getCurrentLanguage,
|
|
143
143
|
initializeI18n,
|
|
144
144
|
resolveLanguageSetting,
|
|
145
145
|
t
|
|
146
|
-
} from "./chunk-
|
|
146
|
+
} from "./chunk-WP5VOXF7.js";
|
|
147
147
|
import {
|
|
148
148
|
loadEnvironment
|
|
149
|
-
} from "./chunk-
|
|
149
|
+
} from "./chunk-T6HEQR2Q.js";
|
|
150
150
|
import {
|
|
151
151
|
resolveAcpChannelFallback,
|
|
152
152
|
scrubAndReportInheritedLoaderEnv
|
|
153
|
-
} from "./chunk-
|
|
153
|
+
} from "./chunk-VFMASYQA.js";
|
|
154
154
|
import {
|
|
155
155
|
getCliVersion
|
|
156
|
-
} from "./chunk-
|
|
156
|
+
} from "./chunk-IOEZE2YT.js";
|
|
157
157
|
import {
|
|
158
158
|
getPackageJson
|
|
159
159
|
} from "./chunk-VJNBRRZG.js";
|
|
160
160
|
import {
|
|
161
161
|
isWorkspaceTrusted
|
|
162
|
-
} from "./chunk-
|
|
162
|
+
} from "./chunk-ZOSTTOUJ.js";
|
|
163
163
|
import {
|
|
164
164
|
require_strip_json_comments
|
|
165
165
|
} from "./chunk-NPQ5ZKRP.js";
|
|
@@ -201,7 +201,7 @@ import {
|
|
|
201
201
|
unquoteCStylePath,
|
|
202
202
|
updateChannelMemoryEntry,
|
|
203
203
|
updateSetting
|
|
204
|
-
} from "./chunk-
|
|
204
|
+
} from "./chunk-XX7QFP34.js";
|
|
205
205
|
import {
|
|
206
206
|
nextFireTime,
|
|
207
207
|
parseCron
|
|
@@ -2731,7 +2731,7 @@ var stopCommand = {
|
|
|
2731
2731
|
if (argv["daemon-url"]) {
|
|
2732
2732
|
const token = argv.token ?? process.env[QWEN_SERVER_TOKEN_ENV] ?? process.env[QWEN_DAEMON_TOKEN_ENV];
|
|
2733
2733
|
try {
|
|
2734
|
-
const sdk = await import("./daemon-
|
|
2734
|
+
const sdk = await import("./daemon-POSQPD3G.js");
|
|
2735
2735
|
const client = new sdk.DaemonClient({
|
|
2736
2736
|
baseUrl: argv["daemon-url"],
|
|
2737
2737
|
...token ? { token } : {}
|
|
@@ -2917,7 +2917,7 @@ var statusCommand = {
|
|
|
2917
2917
|
if (argv["daemon-url"]) {
|
|
2918
2918
|
const token = argv.token ?? process.env[QWEN_SERVER_TOKEN_ENV] ?? process.env[QWEN_DAEMON_TOKEN_ENV];
|
|
2919
2919
|
try {
|
|
2920
|
-
const sdk = await import("./daemon-
|
|
2920
|
+
const sdk = await import("./daemon-POSQPD3G.js");
|
|
2921
2921
|
const client = new sdk.DaemonClient({
|
|
2922
2922
|
baseUrl: argv["daemon-url"],
|
|
2923
2923
|
...token ? { token } : {}
|
|
@@ -3028,7 +3028,7 @@ var reloadCommand = {
|
|
|
3028
3028
|
const token = resolveToken(argv.token);
|
|
3029
3029
|
let sdk;
|
|
3030
3030
|
try {
|
|
3031
|
-
sdk = await import("./daemon-
|
|
3031
|
+
sdk = await import("./daemon-POSQPD3G.js");
|
|
3032
3032
|
} catch (err) {
|
|
3033
3033
|
writeStderrLine(
|
|
3034
3034
|
`[Channel] Failed to load daemon SDK: ${safeChannelCommandErrorMessage(err)}`
|
|
@@ -3108,7 +3108,7 @@ var setCommand2 = {
|
|
|
3108
3108
|
const selection = names[0] === "all" ? { mode: "all" } : { mode: "names", names };
|
|
3109
3109
|
let sdk;
|
|
3110
3110
|
try {
|
|
3111
|
-
sdk = await import("./daemon-
|
|
3111
|
+
sdk = await import("./daemon-POSQPD3G.js");
|
|
3112
3112
|
} catch (error) {
|
|
3113
3113
|
writeStderrLine(
|
|
3114
3114
|
`[Channel] Failed to load daemon SDK: ${safeChannelCommandErrorMessage(error)}`
|
|
@@ -3234,7 +3234,7 @@ function createDaemonChannelBridgeFacade(bridge, opts) {
|
|
|
3234
3234
|
}
|
|
3235
3235
|
__name(createDaemonChannelBridgeFacade, "createDaemonChannelBridgeFacade");
|
|
3236
3236
|
async function loadDaemonSdk() {
|
|
3237
|
-
return await import("./daemon-
|
|
3237
|
+
return await import("./daemon-POSQPD3G.js");
|
|
3238
3238
|
}
|
|
3239
3239
|
__name(loadDaemonSdk, "loadDaemonSdk");
|
|
3240
3240
|
function selectedChannelNames(channelsConfig, selection) {
|
|
@@ -4882,6 +4882,12 @@ function execGhWithRetry(args, options) {
|
|
|
4882
4882
|
__name(execGhWithRetry, "execGhWithRetry");
|
|
4883
4883
|
var ghHost;
|
|
4884
4884
|
var HOSTNAME_RE = /^[A-Za-z0-9.-]+(?::\d+)?$/;
|
|
4885
|
+
var REPO_SEGMENT = /^[A-Za-z0-9._-]+$/;
|
|
4886
|
+
function isOwnerRepo(repo) {
|
|
4887
|
+
const parts = repo.split("/");
|
|
4888
|
+
return parts.length === 2 && parts.every((p) => REPO_SEGMENT.test(p) && p !== "." && p !== "..");
|
|
4889
|
+
}
|
|
4890
|
+
__name(isOwnerRepo, "isOwnerRepo");
|
|
4885
4891
|
function setGhHost(host) {
|
|
4886
4892
|
if (host === void 0 || host === "") {
|
|
4887
4893
|
ghHost = void 0;
|
|
@@ -7096,6 +7102,8 @@ import { join as join9 } from "node:path";
|
|
|
7096
7102
|
var DEADLINE_ENV = "QWEN_REVIEW_DEADLINE_EPOCH";
|
|
7097
7103
|
var RESERVE_ENV = "QWEN_REVIEW_DEADLINE_RESERVE_SECONDS";
|
|
7098
7104
|
var DEFAULT_RESERVE_SECONDS = 4800;
|
|
7105
|
+
var DEFAULT_COMPOSE_FLOOR_SECONDS = 1200;
|
|
7106
|
+
var COMPOSE_FLOOR_ENV = "QWEN_REVIEW_DEADLINE_COMPOSE_FLOOR_SECONDS";
|
|
7099
7107
|
var DEFAULT_ROUND_SECONDS = 1800;
|
|
7100
7108
|
var MIN_OBSERVED_ROUND_SECONDS = 600;
|
|
7101
7109
|
var STAMPS_FILE = "budget-rounds.json";
|
|
@@ -7154,17 +7162,31 @@ function expectedRoundSeconds(planPath, round, nowMs = Date.now()) {
|
|
|
7154
7162
|
return Math.max(MIN_OBSERVED_ROUND_SECONDS, maxSeconds);
|
|
7155
7163
|
}
|
|
7156
7164
|
__name(expectedRoundSeconds, "expectedRoundSeconds");
|
|
7157
|
-
function
|
|
7165
|
+
function readDeadlineSeconds(env) {
|
|
7158
7166
|
const raw = env[DEADLINE_ENV];
|
|
7159
7167
|
if (raw === void 0 || raw.trim() === "") return null;
|
|
7160
7168
|
const deadline = Number(raw);
|
|
7161
7169
|
if (!Number.isFinite(deadline) || deadline <= 0) return null;
|
|
7162
|
-
|
|
7163
|
-
|
|
7164
|
-
|
|
7165
|
-
|
|
7166
|
-
|
|
7170
|
+
return deadline;
|
|
7171
|
+
}
|
|
7172
|
+
__name(readDeadlineSeconds, "readDeadlineSeconds");
|
|
7173
|
+
function readNonNegativeSeconds(env, key, fallback) {
|
|
7174
|
+
const raw = env[key];
|
|
7175
|
+
if (raw !== void 0 && raw.trim() !== "") {
|
|
7176
|
+
const v = Number(raw);
|
|
7177
|
+
if (Number.isFinite(v) && v >= 0) return v;
|
|
7167
7178
|
}
|
|
7179
|
+
return fallback;
|
|
7180
|
+
}
|
|
7181
|
+
__name(readNonNegativeSeconds, "readNonNegativeSeconds");
|
|
7182
|
+
function reverseAuditBudgetExhausted(env, roundCostSeconds, nowMs = Date.now()) {
|
|
7183
|
+
const deadline = readDeadlineSeconds(env);
|
|
7184
|
+
if (deadline === null) return null;
|
|
7185
|
+
const reserve = readNonNegativeSeconds(
|
|
7186
|
+
env,
|
|
7187
|
+
RESERVE_ENV,
|
|
7188
|
+
DEFAULT_RESERVE_SECONDS
|
|
7189
|
+
);
|
|
7168
7190
|
const remainingSeconds = Math.floor(deadline - nowMs / 1e3);
|
|
7169
7191
|
if (remainingSeconds >= reserve + roundCostSeconds) return null;
|
|
7170
7192
|
return {
|
|
@@ -7174,6 +7196,26 @@ function reverseAuditBudgetExhausted(env, roundCostSeconds, nowMs = Date.now())
|
|
|
7174
7196
|
};
|
|
7175
7197
|
}
|
|
7176
7198
|
__name(reverseAuditBudgetExhausted, "reverseAuditBudgetExhausted");
|
|
7199
|
+
function verifyBudgetExhausted(env, nowMs = Date.now()) {
|
|
7200
|
+
const deadline = readDeadlineSeconds(env);
|
|
7201
|
+
if (deadline === null) return null;
|
|
7202
|
+
const floor = readNonNegativeSeconds(
|
|
7203
|
+
env,
|
|
7204
|
+
COMPOSE_FLOOR_ENV,
|
|
7205
|
+
DEFAULT_COMPOSE_FLOOR_SECONDS
|
|
7206
|
+
);
|
|
7207
|
+
if (floor <= 0) return null;
|
|
7208
|
+
const remainingSeconds = Math.floor(deadline - nowMs / 1e3);
|
|
7209
|
+
if (remainingSeconds > floor) return null;
|
|
7210
|
+
return { remainingSeconds, composeFloorSeconds: floor };
|
|
7211
|
+
}
|
|
7212
|
+
__name(verifyBudgetExhausted, "verifyBudgetExhausted");
|
|
7213
|
+
function verifyBudgetMessage(spent) {
|
|
7214
|
+
const minutesLeft = Math.max(0, Math.floor(spent.remainingSeconds / 60));
|
|
7215
|
+
const floorMinutes = Math.round(spent.composeFloorSeconds / 60);
|
|
7216
|
+
return `VERIFY BUDGET: ${minutesLeft} minute(s) remain before this review's deadline \u2014 at or below the ${floorMinutes}-minute floor compose-review and submission need, so no verification shard will be built. This is a termination rule, not an error: do not rebuild the verifier. Proceed to Step 6 NOW and compose. Findings still carrying \`\u2014 [unverified]\` keep that tag: compose-review caps the verdict on it and never treats an unverified finding as a confirmed blocker \u2014 everything earlier rounds confirmed still posts. A review that stops verifying here reports what it proved; one that keeps verifying past this floor is killed before it posts anything.`;
|
|
7217
|
+
}
|
|
7218
|
+
__name(verifyBudgetMessage, "verifyBudgetMessage");
|
|
7177
7219
|
var BUDGET_STOP_PHRASE = "review time budget";
|
|
7178
7220
|
function budgetStopDisclosure(round) {
|
|
7179
7221
|
const which = round !== void 0 ? `round ${round}` : "the next round";
|
|
@@ -7196,6 +7238,45 @@ function budgetStopEntryZh(round) {
|
|
|
7196
7238
|
return `${d.subjectZh}\u2014\u2014${d.reasonZh}`;
|
|
7197
7239
|
}
|
|
7198
7240
|
__name(budgetStopEntryZh, "budgetStopEntryZh");
|
|
7241
|
+
var ROUND_CAP_PHRASE = "reverse-audit round cap";
|
|
7242
|
+
function roundCapStopDisclosure(cap) {
|
|
7243
|
+
return {
|
|
7244
|
+
subject: "reverse audit",
|
|
7245
|
+
reason: `did not converge within the ${ROUND_CAP_PHRASE} of ${cap}`,
|
|
7246
|
+
subjectZh: "\u53CD\u5411\u5BA1\u8BA1",
|
|
7247
|
+
reasonZh: `\u5728 ${cap} \u8F6E\u7684\u53CD\u5BA1\u8F6E\u6570\u4E0A\u9650\u5185\u672A\u6536\u655B`
|
|
7248
|
+
};
|
|
7249
|
+
}
|
|
7250
|
+
__name(roundCapStopDisclosure, "roundCapStopDisclosure");
|
|
7251
|
+
function roundCapStopEntry(cap) {
|
|
7252
|
+
const d = roundCapStopDisclosure(cap);
|
|
7253
|
+
return `${d.subject} \u2014 ${d.reason}`;
|
|
7254
|
+
}
|
|
7255
|
+
__name(roundCapStopEntry, "roundCapStopEntry");
|
|
7256
|
+
function roundCapStopEntryZh(cap) {
|
|
7257
|
+
const d = roundCapStopDisclosure(cap);
|
|
7258
|
+
return `${d.subjectZh}\u2014\u2014${d.reasonZh}`;
|
|
7259
|
+
}
|
|
7260
|
+
__name(roundCapStopEntryZh, "roundCapStopEntryZh");
|
|
7261
|
+
function writeRoundCapStop(planPath, cap, round, nowMs = Date.now()) {
|
|
7262
|
+
try {
|
|
7263
|
+
const dir = promptRecordDir(planPath);
|
|
7264
|
+
mkdirSync5(dir, { recursive: true });
|
|
7265
|
+
const stop = {
|
|
7266
|
+
cause: "round-cap",
|
|
7267
|
+
cap,
|
|
7268
|
+
entry: roundCapStopEntry(cap),
|
|
7269
|
+
entryZh: roundCapStopEntryZh(cap),
|
|
7270
|
+
round: round ?? null,
|
|
7271
|
+
remainingSeconds: 0,
|
|
7272
|
+
reserveSeconds: 0,
|
|
7273
|
+
atMs: nowMs
|
|
7274
|
+
};
|
|
7275
|
+
writeFileSync5(join9(dir, STOP_FILE), JSON.stringify(stop, null, 2));
|
|
7276
|
+
} catch {
|
|
7277
|
+
}
|
|
7278
|
+
}
|
|
7279
|
+
__name(writeRoundCapStop, "writeRoundCapStop");
|
|
7199
7280
|
function writeBudgetStop(planPath, spent, round, nowMs = Date.now()) {
|
|
7200
7281
|
try {
|
|
7201
7282
|
const dir = promptRecordDir(planPath);
|
|
@@ -7234,13 +7315,16 @@ function reverseAuditBudgetMessage(spent, round) {
|
|
|
7234
7315
|
const reserveMinutes = Math.round(spent.reserveSeconds / 60);
|
|
7235
7316
|
const roundMinutes = Math.round(spent.expectedRoundSeconds / 60);
|
|
7236
7317
|
const which = round !== void 0 ? `round ${round}` : "the next round";
|
|
7237
|
-
return `BUDGET: ${minutesLeft} minute(s) remain before this review's deadline \u2014 not enough for the ~${roundMinutes}-minute round being asked for plus the ${reserveMinutes}-minute reserve kept for its verification, compose-review and submission \u2014 so no further reverse-audit round will be built. This is the loop's termination rule, not an error: do not rebuild ${which} and do not relaunch auditors. A budget-stop marker has been recorded and compose-review will disclose it and cap the verdict itself; also add exactly this entry to unreviewedDimensions so the terminal report says it too \u2014 \`${budgetStopEntry(round)}\` \u2014 and proceed to Step 6
|
|
7318
|
+
return `BUDGET: ${minutesLeft} minute(s) remain before this review's deadline \u2014 not enough for the ~${roundMinutes}-minute round being asked for plus the ${reserveMinutes}-minute reserve kept for its verification, compose-review and submission \u2014 so no further reverse-audit round will be built. This is the loop's termination rule, not an error: do not rebuild ${which} and do not relaunch auditors. A budget-stop marker has been recorded and compose-review will disclose it and cap the verdict itself; also add exactly this entry to unreviewedDimensions so the terminal report says it too \u2014 \`${budgetStopEntry(round)}\` \u2014 and proceed to Step 6. Verify the last round's findings ONLY through \`agent-prompt --role verify\` (never a hand-rolled agent) \u2014 it is gated on the compose floor and will refuse once too little time remains, leaving any still-\`[unverified]\` findings tagged for compose-review to cap \u2014 then compose and submit. Do NOT re-verify findings already confirmed in earlier rounds. A review that stops here still reports everything it proved; a review that runs past its deadline is killed holding all of it.`;
|
|
7238
7319
|
}
|
|
7239
7320
|
__name(reverseAuditBudgetMessage, "reverseAuditBudgetMessage");
|
|
7240
7321
|
|
|
7241
7322
|
// packages/cli/src/commands/review/lib/budget.ts
|
|
7242
7323
|
init_esbuild_shims();
|
|
7243
7324
|
var SWEEP_FLOOR = 25;
|
|
7325
|
+
var MAX_REVERSE_AUDIT_ROUNDS = 5;
|
|
7326
|
+
var HUGE_REVERSE_AUDIT_ROUNDS = 3;
|
|
7327
|
+
var HUGE_DIFF_FLOOR = 3e3;
|
|
7244
7328
|
var SPECIALIST_FLOOR = 80;
|
|
7245
7329
|
var LINES_PER_ANGLE = 60;
|
|
7246
7330
|
var MIN_INLINE_ANGLES = 3;
|
|
@@ -7262,16 +7346,28 @@ function reviewBudget(input) {
|
|
|
7262
7346
|
return {
|
|
7263
7347
|
inlineAngles,
|
|
7264
7348
|
sweep: effective >= SWEEP_FLOOR,
|
|
7265
|
-
|
|
7349
|
+
// Agent 8 sheds in the huge zone. A specialist is a whole-diff pass on
|
|
7350
|
+
// top of the base fan-out, and on a diff too big to finish that extra
|
|
7351
|
+
// pass is the marginal cost that guarantees zero posted output — while
|
|
7352
|
+
// the per-chunk fan-out already covers the ground. Finishability over
|
|
7353
|
+
// an added depth pass, in exactly the band where the review otherwise
|
|
7354
|
+
// posts nothing.
|
|
7355
|
+
specialistCap: src >= SPECIALIST_FLOOR && effective < HUGE_DIFF_FLOOR ? 2 : 0,
|
|
7266
7356
|
verifyShard: VERIFY_SHARD,
|
|
7267
7357
|
agentToolBudget: clamp(
|
|
7268
7358
|
MIN_AGENT_TOOL_BUDGET + Math.floor(effective / LINES_PER_TOOL_CALL),
|
|
7269
7359
|
MIN_AGENT_TOOL_BUDGET,
|
|
7270
7360
|
MAX_AGENT_TOOL_BUDGET
|
|
7271
|
-
)
|
|
7361
|
+
),
|
|
7362
|
+
reverseAuditRounds: effective >= HUGE_DIFF_FLOOR ? HUGE_REVERSE_AUDIT_ROUNDS : MAX_REVERSE_AUDIT_ROUNDS
|
|
7272
7363
|
};
|
|
7273
7364
|
}
|
|
7274
7365
|
__name(reviewBudget, "reviewBudget");
|
|
7366
|
+
function reverseAuditRoundCap(budget) {
|
|
7367
|
+
const v = budget?.reverseAuditRounds;
|
|
7368
|
+
return typeof v === "number" && Number.isInteger(v) && v >= HUGE_REVERSE_AUDIT_ROUNDS && v <= MAX_REVERSE_AUDIT_ROUNDS ? v : MAX_REVERSE_AUDIT_ROUNDS;
|
|
7369
|
+
}
|
|
7370
|
+
__name(reverseAuditRoundCap, "reverseAuditRoundCap");
|
|
7275
7371
|
var MAX_TOTAL_TOOL_CALLS = 200;
|
|
7276
7372
|
function launchToolBudget(planBudget, territoryLines, mandatoryReads) {
|
|
7277
7373
|
const base = clamp(
|
|
@@ -7293,10 +7389,10 @@ function launchToolBudget(planBudget, territoryLines, mandatoryReads) {
|
|
|
7293
7389
|
);
|
|
7294
7390
|
}
|
|
7295
7391
|
__name(launchToolBudget, "launchToolBudget");
|
|
7296
|
-
var BUDGET_GAP_LINE_RE = /^[ \t]*(?:[-*+]|\d+[.)])?[ \t]*(`?)[*_~]{0,3}(?:budget gap|预算(?:缺口|不足|用尽))[*_~]{0,3}[ \t]*[::][*_~]{0,3}[ \t]*(
|
|
7392
|
+
var BUDGET_GAP_LINE_RE = /^(?:[ \t]*(?:[-*+]|\d+[.)]))?[ \t]*(`?)[*_~]{0,3}(?:budget gap|预算(?:缺口|不足|用尽))[*_~]{0,3}[ \t]*[::][*_~]{0,3}[ \t]*(.+)$/i;
|
|
7297
7393
|
var GAP_HINT_RE = /budget gap|预算(?:缺口|不足|用尽)/i;
|
|
7298
7394
|
var INLINE_BUDGET_GAP_RE = /(?:budget gap|预算(?:缺口|不足|用尽))[*_~`]{0,3}[ \t]*[::]/i;
|
|
7299
|
-
var PLACEHOLDER_GAP_RE = /^(?:<[^>]
|
|
7395
|
+
var PLACEHOLDER_GAP_RE = /^(?:<[^>]*>$|[-—*_~`]+$|(?:none|n\/a|nothing|no (?:gaps?|checks?))\b(?:[.!…,;:\s]*$|\s+(?:skipped|found|to report)\b[.!…,;:\s]*$|\s*[-—–]\s*(?:stayed\s+(?:under|within|below)\s+budget\b[.!…,;:\s]*$|(?:all|every(?:thing)?|planned|further|no further)\b(?:(?!\b(?:but|except|excepting|excluding)\b).)*(?<!\b(?:none|nothing|no|zero|never|not)\s)\b(?:complete[ds]?|done|finished|covered)\b[.!…,;:\s]*$)|\s*\(\s*(?:all|every(?:thing)?)\b(?:(?!\b(?:but|except|excepting|excluding)\b)[^()])*(?<!\b(?:none|nothing|no|zero|never|not)\s)\b(?:complete[ds]?|done|finished|covered)\b[.!…,;:\s]*\)\s*$))/i;
|
|
7300
7396
|
var MAX_GAP_LENGTH = 160;
|
|
7301
7397
|
var MAX_GAPS_PER_AGENT = 8;
|
|
7302
7398
|
var DANGEROUS_CHARS_RE = (
|
|
@@ -7326,6 +7422,13 @@ function stripWrappers(s) {
|
|
|
7326
7422
|
return out;
|
|
7327
7423
|
}
|
|
7328
7424
|
__name(stripWrappers, "stripWrappers");
|
|
7425
|
+
var TRAILING_GAP_CHAR_RE = /[.!…,;:\s]/;
|
|
7426
|
+
function stripTrailingGapChars(s) {
|
|
7427
|
+
let end = s.length;
|
|
7428
|
+
while (end > 0 && TRAILING_GAP_CHAR_RE.test(s.charAt(end - 1))) end--;
|
|
7429
|
+
return s.slice(0, end);
|
|
7430
|
+
}
|
|
7431
|
+
__name(stripTrailingGapChars, "stripTrailingGapChars");
|
|
7329
7432
|
function truncateGap(s) {
|
|
7330
7433
|
const points = [...s];
|
|
7331
7434
|
return points.length > MAX_GAP_LENGTH ? `${points.slice(0, MAX_GAP_LENGTH).join("")}\u2026` : s;
|
|
@@ -7343,7 +7446,8 @@ function budgetGapDisclosures(finalText) {
|
|
|
7343
7446
|
}
|
|
7344
7447
|
if (inFence) continue;
|
|
7345
7448
|
if (/^[ \t]*>/.test(line)) continue;
|
|
7346
|
-
const
|
|
7449
|
+
const sanitized = line.replace(DANGEROUS_CHARS_RE, " ").trimEnd();
|
|
7450
|
+
const m = BUDGET_GAP_LINE_RE.exec(sanitized);
|
|
7347
7451
|
if (!m) continue;
|
|
7348
7452
|
let raw = m[2] ?? "";
|
|
7349
7453
|
if (m[1] === "`") {
|
|
@@ -7351,11 +7455,12 @@ function budgetGapDisclosures(finalText) {
|
|
|
7351
7455
|
raw = raw.slice(0, -1);
|
|
7352
7456
|
}
|
|
7353
7457
|
raw = stripWrappers(raw.trim()).trim();
|
|
7354
|
-
const normalized = raw
|
|
7355
|
-
|
|
7458
|
+
const normalized = stripTrailingGapChars(raw).trim();
|
|
7459
|
+
const unparenthesized = normalized.startsWith("(") && normalized.endsWith(")") ? normalized.slice(1, -1).trim() : normalized;
|
|
7460
|
+
if (normalized.length === 0 || PLACEHOLDER_GAP_RE.test(unparenthesized)) {
|
|
7356
7461
|
continue;
|
|
7357
7462
|
}
|
|
7358
|
-
const key =
|
|
7463
|
+
const key = stripTrailingGapChars(unparenthesized).toLowerCase();
|
|
7359
7464
|
if (seen.has(key)) continue;
|
|
7360
7465
|
seen.add(key);
|
|
7361
7466
|
gaps.push(truncateGap(raw));
|
|
@@ -8132,6 +8237,82 @@ function withMarker(line) {
|
|
|
8132
8237
|
return line.startsWith(CRITICAL_PREFIX) ? line : `${CRITICAL_PREFIX} ${line}`;
|
|
8133
8238
|
}
|
|
8134
8239
|
__name(withMarker, "withMarker");
|
|
8240
|
+
function planPrIdentity(plan) {
|
|
8241
|
+
if (typeof plan !== "object" || plan === null) return null;
|
|
8242
|
+
const p = plan;
|
|
8243
|
+
const ownerRepo = typeof p.ownerRepo === "string" && isOwnerRepo(p.ownerRepo) ? p.ownerRepo : null;
|
|
8244
|
+
const prNumber = isPositivePrNumber(p.prNumber) ? String(p.prNumber) : null;
|
|
8245
|
+
const host = typeof p.host === "string" && HOSTNAME_RE.test(p.host) ? p.host : null;
|
|
8246
|
+
return ownerRepo && prNumber ? { ownerRepo, prNumber, host } : null;
|
|
8247
|
+
}
|
|
8248
|
+
__name(planPrIdentity, "planPrIdentity");
|
|
8249
|
+
function prIdentityFromPlan(planPath) {
|
|
8250
|
+
if (!planPath) return null;
|
|
8251
|
+
try {
|
|
8252
|
+
return planPrIdentity(JSON.parse(readFileSync10(planPath, "utf8")));
|
|
8253
|
+
} catch {
|
|
8254
|
+
return null;
|
|
8255
|
+
}
|
|
8256
|
+
}
|
|
8257
|
+
__name(prIdentityFromPlan, "prIdentityFromPlan");
|
|
8258
|
+
function linkifyCommentRefs(text, pr) {
|
|
8259
|
+
if (!pr || text.includes("](")) return text;
|
|
8260
|
+
const host = (resolveGhHost(pr.host ?? getGhHost()) ?? "github.com").toLowerCase().replace(/:0*443$/, "").replace(/\.$/, "").replace(/^www\.github\.com$/, "github.com");
|
|
8261
|
+
const base = `https://${host}/${pr.ownerRepo}/pull/${pr.prNumber}`;
|
|
8262
|
+
const commentRef = host === "github.com" ? /\b(issue-level )?comment (\d{6,})\b/gi : /\b(issue-level )?comment (\d+)\b/gi;
|
|
8263
|
+
const issueLevelEntry = /\bissue(?:-level)?\s+comment\b/i.test(text);
|
|
8264
|
+
return text.replace(
|
|
8265
|
+
commentRef,
|
|
8266
|
+
(_m, issueLevel, id) => issueLevel || issueLevelEntry ? `[${issueLevel ?? ""}comment ${id}](${base}#issuecomment-${id})` : `[comment ${id}](${base}#discussion_r${id})`
|
|
8267
|
+
);
|
|
8268
|
+
}
|
|
8269
|
+
__name(linkifyCommentRefs, "linkifyCommentRefs");
|
|
8270
|
+
function formatCannotTell(cannotTell, pr) {
|
|
8271
|
+
const parsed = cannotTell.map((raw) => {
|
|
8272
|
+
const unmarked = raw.startsWith(CRITICAL_PREFIX) ? raw.slice(CRITICAL_PREFIX.length).trim() : raw;
|
|
8273
|
+
const line = linkifyCommentRefs(
|
|
8274
|
+
unmarked.includes("\n") ? unmarked.split("\n").map((seg) => seg.trim()).filter((seg) => seg !== "").join(" ") : unmarked,
|
|
8275
|
+
pr
|
|
8276
|
+
);
|
|
8277
|
+
const idx = line.indexOf(" \u2014 ");
|
|
8278
|
+
return idx === -1 ? { head: line, reason: null } : {
|
|
8279
|
+
head: line.slice(0, idx),
|
|
8280
|
+
reason: line.slice(idx + 3).trim() || null
|
|
8281
|
+
};
|
|
8282
|
+
});
|
|
8283
|
+
const groups = [];
|
|
8284
|
+
const byReason = /* @__PURE__ */ new Map();
|
|
8285
|
+
for (const p of parsed) {
|
|
8286
|
+
const existing = p.reason === null ? void 0 : byReason.get(p.reason);
|
|
8287
|
+
if (existing) {
|
|
8288
|
+
existing.heads.push(p.head);
|
|
8289
|
+
continue;
|
|
8290
|
+
}
|
|
8291
|
+
const group = { reason: p.reason, heads: [p.head] };
|
|
8292
|
+
groups.push(group);
|
|
8293
|
+
if (p.reason !== null) byReason.set(p.reason, group);
|
|
8294
|
+
}
|
|
8295
|
+
const lines = [];
|
|
8296
|
+
for (const { reason, heads } of groups) {
|
|
8297
|
+
if (heads.length === 1) {
|
|
8298
|
+
lines.push(
|
|
8299
|
+
`- ${CRITICAL_PREFIX} ${heads[0]}${reason === null ? "" : ` \u2014 ${reason}`}`
|
|
8300
|
+
);
|
|
8301
|
+
} else {
|
|
8302
|
+
lines.push(
|
|
8303
|
+
`- ${CRITICAL_PREFIX} ${heads.length} entries \u2014 ${reason}:`,
|
|
8304
|
+
...heads.map((head) => ` - ${head}`)
|
|
8305
|
+
);
|
|
8306
|
+
}
|
|
8307
|
+
}
|
|
8308
|
+
return {
|
|
8309
|
+
en: `Unresolved, please confirm:
|
|
8310
|
+
|
|
8311
|
+
${lines.join("\n")}`,
|
|
8312
|
+
zh: `\u672A\u51B3\uFF0C\u8BF7\u786E\u8BA4\uFF1A\u5171 ${cannotTell.length} \u6761\uFF08\u539F\u6587\u672A\u7FFB\u8BD1\uFF0C\u5217\u8868\u89C1\u4E0A\u65B9\u82F1\u6587\u90E8\u5206\uFF09\u3002`
|
|
8313
|
+
};
|
|
8314
|
+
}
|
|
8315
|
+
__name(formatCannotTell, "formatCannotTell");
|
|
8135
8316
|
function toCount(value, field) {
|
|
8136
8317
|
if (value === void 0 || value === null) return 0;
|
|
8137
8318
|
if (typeof value !== "number" || !Number.isInteger(value) || value < 0) {
|
|
@@ -8153,7 +8334,7 @@ function toStringList(value, field) {
|
|
|
8153
8334
|
}
|
|
8154
8335
|
__name(toStringList, "toStringList");
|
|
8155
8336
|
function stripReviewFooter(entry) {
|
|
8156
|
-
return entry.replace(REVIEW_FOOTER_RE, "");
|
|
8337
|
+
return entry.includes(FOOTER_MARKER) ? entry.replace(REVIEW_FOOTER_RE, "") : entry;
|
|
8157
8338
|
}
|
|
8158
8339
|
__name(stripReviewFooter, "stripReviewFooter");
|
|
8159
8340
|
function toBool(value, field) {
|
|
@@ -8236,12 +8417,16 @@ function composeReviewBody(input, cliVersion) {
|
|
|
8236
8417
|
if (input.planPath) {
|
|
8237
8418
|
const stop = readBudgetStop(input.planPath);
|
|
8238
8419
|
if (stop !== null) {
|
|
8420
|
+
const isRoundCap = stop.cause === "round-cap";
|
|
8421
|
+
const phrase = isRoundCap ? ROUND_CAP_PHRASE : BUDGET_STOP_PHRASE;
|
|
8239
8422
|
for (let i = unreviewed.length - 1; i >= 0; i--) {
|
|
8240
|
-
if (unreviewed[i].includes(
|
|
8423
|
+
if (unreviewed[i].includes(phrase)) {
|
|
8241
8424
|
unreviewed.splice(i, 1);
|
|
8242
8425
|
}
|
|
8243
8426
|
}
|
|
8244
|
-
budgetEntry =
|
|
8427
|
+
budgetEntry = isRoundCap ? roundCapStopDisclosure(
|
|
8428
|
+
typeof stop.cap === "number" ? stop.cap : MAX_REVERSE_AUDIT_ROUNDS
|
|
8429
|
+
) : budgetStopDisclosure(stop.round ?? void 0);
|
|
8245
8430
|
coverageEntries.push(budgetEntry);
|
|
8246
8431
|
}
|
|
8247
8432
|
}
|
|
@@ -8620,12 +8805,7 @@ ${footer}`;
|
|
|
8620
8805
|
zh: reason ? `\u672A\u5BA1\u67E5\uFF1A${shownZh.join("\u3001")}\u2014\u2014${reasonZh}\u3002` : `\u672A\u5BA1\u67E5\uFF1A${shownZh.join("\u3001")}\u3002`
|
|
8621
8806
|
});
|
|
8622
8807
|
}
|
|
8623
|
-
const cannotTellBlock = cannotTell.length === 0 ? [] : [
|
|
8624
|
-
{
|
|
8625
|
-
en: `Unresolved, please confirm: ${cannotTell.map((l) => withMarker(l)).join(" ")}`,
|
|
8626
|
-
zh: `\u672A\u51B3\uFF0C\u8BF7\u786E\u8BA4\uFF1A${cannotTell.map((l) => withMarker(l)).join(" ")}`
|
|
8627
|
-
}
|
|
8628
|
-
];
|
|
8808
|
+
const cannotTellBlock = cannotTell.length === 0 ? [] : [formatCannotTell(cannotTell, prIdentityFromPlan(input.planPath))];
|
|
8629
8809
|
const bodyCriticalBlock = bodyCriticals.map((l) => withMarker(l)).map((l) => ({ en: l, zh: l }));
|
|
8630
8810
|
const contextUnavailableClause = {
|
|
8631
8811
|
en: "Reviewed diff-only \u2014 the PR\u2019s existing discussion could not be fetched, so this is not an approval and not a no-blockers claim.",
|
|
@@ -8747,6 +8927,7 @@ ${footer}`;
|
|
|
8747
8927
|
zh: `${suggestionsDiscarded} \u6761\u5EFA\u8BAE\u7EA7\u53D1\u73B0\u65E0\u6CD5\u951A\u5B9A\u5230\u6539\u52A8\u884C\uFF0C\u5DF2\u4E22\u5F03\uFF1B\u6B64\u5904\u65E0\u9700\u8FDB\u4E00\u6B65\u5904\u7406\u3002`
|
|
8748
8928
|
});
|
|
8749
8929
|
}
|
|
8930
|
+
const openerCount = clauses.length;
|
|
8750
8931
|
clauses.push(...cannotTellBlock);
|
|
8751
8932
|
clauses.push(...notReviewedParts);
|
|
8752
8933
|
clauses.push(...unverifiedTagsBlock);
|
|
@@ -8756,9 +8937,19 @@ ${footer}`;
|
|
|
8756
8937
|
if (downgradedFrom === "Request changes" || criticalsUnverified) {
|
|
8757
8938
|
clauses.push(...bodyCriticalBlock);
|
|
8758
8939
|
}
|
|
8940
|
+
const openerParts = clauses.slice(0, openerCount);
|
|
8941
|
+
const paragraphs = [
|
|
8942
|
+
...openerParts.length > 0 ? [
|
|
8943
|
+
{
|
|
8944
|
+
en: openerParts.map((c2) => c2.en).join(" "),
|
|
8945
|
+
zh: openerParts.map((c2) => c2.zh).join(" ")
|
|
8946
|
+
}
|
|
8947
|
+
] : [],
|
|
8948
|
+
...clauses.slice(openerCount)
|
|
8949
|
+
];
|
|
8759
8950
|
return {
|
|
8760
8951
|
event: event2,
|
|
8761
|
-
body: render(
|
|
8952
|
+
body: render(paragraphs, "\n\n"),
|
|
8762
8953
|
baseEvent,
|
|
8763
8954
|
cappedBy,
|
|
8764
8955
|
downgraded,
|
|
@@ -8956,14 +9147,14 @@ function bilingualFromPlan(planPath, fetchPrBody2 = fetchPrBodyViaGh) {
|
|
|
8956
9147
|
} catch {
|
|
8957
9148
|
return false;
|
|
8958
9149
|
}
|
|
8959
|
-
|
|
8960
|
-
|
|
9150
|
+
const han = plan?.prDescriptionHasHan;
|
|
9151
|
+
if (typeof han === "boolean") {
|
|
9152
|
+
return han;
|
|
8961
9153
|
}
|
|
8962
|
-
const
|
|
8963
|
-
|
|
8964
|
-
if (!ownerRepo || !prNumber) return false;
|
|
9154
|
+
const pr = planPrIdentity(plan);
|
|
9155
|
+
if (!pr) return false;
|
|
8965
9156
|
try {
|
|
8966
|
-
return new RegExp("\\p{Script=Han}", "u").test(fetchPrBody2(ownerRepo, prNumber));
|
|
9157
|
+
return new RegExp("\\p{Script=Han}", "u").test(fetchPrBody2(pr.ownerRepo, pr.prNumber));
|
|
8967
9158
|
} catch {
|
|
8968
9159
|
return false;
|
|
8969
9160
|
}
|
|
@@ -13580,7 +13771,6 @@ import { dirname as dirname16, join as join14, resolve as resolve17 } from "node
|
|
|
13580
13771
|
init_esbuild_shims();
|
|
13581
13772
|
import { readFileSync as readFileSync20, statSync as statSync11 } from "node:fs";
|
|
13582
13773
|
import { resolve as resolve16, sep as sep6 } from "node:path";
|
|
13583
|
-
var REVERSE_AUDIT_MAX_ROUNDS = 5;
|
|
13584
13774
|
var RECORD_KEY_RE = /^reverse-audit--chunk-(\d+)--round-(\d+)--[0-9a-f]+$/;
|
|
13585
13775
|
var REVERSE_AUDIT_MARKER = "reverse-audit";
|
|
13586
13776
|
function bakedRanges(prompt, diffPath) {
|
|
@@ -13745,8 +13935,9 @@ function scheduleReverseAuditRound(planPath, chunkIds, round, env = process.env,
|
|
|
13745
13935
|
dryRounds: [lastTwo[0].round, lastTwo[1].round],
|
|
13746
13936
|
// The next even round — this branch only runs on odd rounds, so
|
|
13747
13937
|
// that is always round + 1. Whether the cap allows it is the note
|
|
13748
|
-
// composer's question, not the schedule's
|
|
13749
|
-
//
|
|
13938
|
+
// composer's question, not the schedule's: the plan's cap
|
|
13939
|
+
// (`reverseAuditRoundCap` in budget.ts, floored at the huge-diff
|
|
13940
|
+
// tier's 3) is what the admission gate enforces.
|
|
13750
13941
|
nextColdCheck: round + 1
|
|
13751
13942
|
});
|
|
13752
13943
|
}
|
|
@@ -14699,7 +14890,15 @@ function requireAuditableChunks(report) {
|
|
|
14699
14890
|
return chunks;
|
|
14700
14891
|
}
|
|
14701
14892
|
__name(requireAuditableChunks, "requireAuditableChunks");
|
|
14702
|
-
function admitReverseAuditRound(planPath, round) {
|
|
14893
|
+
function admitReverseAuditRound(planPath, round, cap) {
|
|
14894
|
+
if (typeof round === "number" && round > cap) {
|
|
14895
|
+
writeRoundCapStop(planPath, cap, round);
|
|
14896
|
+
writeStderrLine(
|
|
14897
|
+
`ROUND CAP: the plan's reverse-audit round cap is ${cap}, and round ${round} is past it. This is a termination rule, not an error \u2014 do not rebuild or retry. A marker has been recorded and compose-review will cap the verdict; still add \`${roundCapStopEntry(cap)}\` to unreviewedDimensions so the terminal report agrees. If the cap round reported findings whose verdicts have not landed, launch their verifiers alone and wait, then proceed to Step 6.`
|
|
14898
|
+
);
|
|
14899
|
+
process.exitCode = 4;
|
|
14900
|
+
return false;
|
|
14901
|
+
}
|
|
14703
14902
|
const spent = reverseAuditBudgetExhausted(
|
|
14704
14903
|
process.env,
|
|
14705
14904
|
expectedRoundSeconds(planPath, round)
|
|
@@ -14723,7 +14922,8 @@ __name(refuseConverged, "refuseConverged");
|
|
|
14723
14922
|
function runAllChunks(report, planPath, role, findingsContent, rules, round) {
|
|
14724
14923
|
const chunks = requireAuditableChunks(report);
|
|
14725
14924
|
let schedule = null;
|
|
14726
|
-
|
|
14925
|
+
const retirementReadsFrom = 3;
|
|
14926
|
+
if (role === "reverse-audit" && round !== void 0 && round >= retirementReadsFrom) {
|
|
14727
14927
|
try {
|
|
14728
14928
|
schedule = scheduleReverseAuditRound(
|
|
14729
14929
|
planPath,
|
|
@@ -14740,7 +14940,11 @@ function runAllChunks(report, planPath, role, findingsContent, rules, round) {
|
|
|
14740
14940
|
refuseConverged();
|
|
14741
14941
|
return;
|
|
14742
14942
|
}
|
|
14743
|
-
if (role === "reverse-audit" && !admitReverseAuditRound(
|
|
14943
|
+
if (role === "reverse-audit" && !admitReverseAuditRound(
|
|
14944
|
+
planPath,
|
|
14945
|
+
round,
|
|
14946
|
+
reverseAuditRoundCap(report.budget)
|
|
14947
|
+
)) {
|
|
14744
14948
|
return;
|
|
14745
14949
|
}
|
|
14746
14950
|
const dueSet = schedule === null ? null : new Set(schedule.due);
|
|
@@ -14772,10 +14976,11 @@ function runAllChunks(report, planPath, role, findingsContent, rules, round) {
|
|
|
14772
14976
|
` + printed;
|
|
14773
14977
|
});
|
|
14774
14978
|
const scope = skipped.length === 0 ? "one per chunk" : `one per chunk still under audit (${skipped.length} retired chunk(s) skipped; the retirement note after the end-of-round line says which \u2014 relay it to the terminal)`;
|
|
14979
|
+
const planRoundCap = reverseAuditRoundCap(report.budget);
|
|
14775
14980
|
const retirementNote = skipped.length === 0 ? [] : [
|
|
14776
14981
|
`retirement: a chunk whose two most recent audits are substantive dry receipts is cold-checked on alternating rounds instead of audited on every one; a cold check that yields returns it to every-round auditing. Skipped this round:
|
|
14777
14982
|
` + skipped.map(
|
|
14778
|
-
(s) => `chunk ${s.chunkId} \u2014 retired: dry in rounds ${s.dryRounds
|
|
14983
|
+
(s) => `chunk ${s.chunkId} \u2014 retired: dry in rounds ${s.dryRounds.join(" and ")}, ` + (s.nextColdCheck > planRoundCap ? `certificate final \u2014 the ${planRoundCap}-round cap leaves the loop no round for a cold check` : `next cold check round ${s.nextColdCheck}`)
|
|
14779
14984
|
).join("\n")
|
|
14780
14985
|
];
|
|
14781
14986
|
writeStdoutLine(
|
|
@@ -14942,9 +15147,21 @@ function runAgentPrompt(args) {
|
|
|
14942
15147
|
);
|
|
14943
15148
|
}
|
|
14944
15149
|
}
|
|
14945
|
-
if (args.role === "reverse-audit" && !hasChunk && !args.allChunks && !admitReverseAuditRound(
|
|
15150
|
+
if (args.role === "reverse-audit" && !hasChunk && !args.allChunks && !admitReverseAuditRound(
|
|
15151
|
+
args.plan,
|
|
15152
|
+
args.round,
|
|
15153
|
+
reverseAuditRoundCap(report.budget)
|
|
15154
|
+
)) {
|
|
14946
15155
|
return;
|
|
14947
15156
|
}
|
|
15157
|
+
if (args.role === "verify") {
|
|
15158
|
+
const spent = verifyBudgetExhausted(process.env);
|
|
15159
|
+
if (spent !== null) {
|
|
15160
|
+
writeStderrLine(verifyBudgetMessage(spent));
|
|
15161
|
+
process.exitCode = 4;
|
|
15162
|
+
return;
|
|
15163
|
+
}
|
|
15164
|
+
}
|
|
14948
15165
|
if (args.role === "reverse-audit" && hasChunk && !readRoundStamps(args.plan).some((s) => s.round === (args.round ?? null))) {
|
|
14949
15166
|
if (args.round !== void 0) {
|
|
14950
15167
|
let schedule = null;
|
|
@@ -14964,7 +15181,12 @@ function runAgentPrompt(args) {
|
|
|
14964
15181
|
return;
|
|
14965
15182
|
}
|
|
14966
15183
|
}
|
|
14967
|
-
if (!admitReverseAuditRound(
|
|
15184
|
+
if (!admitReverseAuditRound(
|
|
15185
|
+
args.plan,
|
|
15186
|
+
args.round,
|
|
15187
|
+
reverseAuditRoundCap(report.budget)
|
|
15188
|
+
))
|
|
15189
|
+
return;
|
|
14968
15190
|
}
|
|
14969
15191
|
if (args.allChunks && args.role && findingsContent !== void 0) {
|
|
14970
15192
|
runAllChunks(
|
|
@@ -15021,7 +15243,7 @@ function runAgentPrompt(args) {
|
|
|
15021
15243
|
__name(runAgentPrompt, "runAgentPrompt");
|
|
15022
15244
|
var agentPromptCommand = {
|
|
15023
15245
|
command: "agent-prompt",
|
|
15024
|
-
describe: "Build a review agent's launch prompt from the plan (the diff path, its line ranges and the agent's own brief are welded in, not left to the caller to remember). Exit codes: 0 built; 4 the review time budget refused another reverse-audit round (
|
|
15246
|
+
describe: "Build a review agent's launch prompt from the plan (the diff path, its line ranges and the agent's own brief are welded in, not left to the caller to remember). Exit codes: 0 built; 4 a build was refused \u2014 the review time budget refused another reverse-audit round (BUDGET line on stderr), the plan's round cap refused one (ROUND CAP line), or the compose floor refused a verifier so compose/submit still fit (VERIFY BUDGET line) \u2014 all termination rules, not errors: stop and compose, do not retry; 5 the reverse audit CONVERGED \u2014 every chunk holds two consecutive substantive dry audits and none is due a cold check, so stop the loop and proceed to Step 6 (also a termination rule, and a clean one: no disclosure is owed); anything else is a bad call or a broken plan.",
|
|
15025
15247
|
builder: /* @__PURE__ */ __name((yargs) => yargs.option("plan", {
|
|
15026
15248
|
type: "string",
|
|
15027
15249
|
demandOption: true,
|
|
@@ -17527,15 +17749,9 @@ function inconsistencies(payload, event2) {
|
|
|
17527
17749
|
return problems;
|
|
17528
17750
|
}
|
|
17529
17751
|
__name(inconsistencies, "inconsistencies");
|
|
17530
|
-
var REPO_SEGMENT = /^[A-Za-z0-9._-]+$/;
|
|
17531
|
-
function isRepo(repo) {
|
|
17532
|
-
const parts = repo.split("/");
|
|
17533
|
-
return parts.length === 2 && parts.every((p) => REPO_SEGMENT.test(p) && p !== "." && p !== "..");
|
|
17534
|
-
}
|
|
17535
|
-
__name(isRepo, "isRepo");
|
|
17536
17752
|
function runSubmit(args, cliVersion = "unknown") {
|
|
17537
17753
|
setGhHost(args.host);
|
|
17538
|
-
if (!
|
|
17754
|
+
if (!isOwnerRepo(args.repo)) {
|
|
17539
17755
|
throw new Error(
|
|
17540
17756
|
`--repo ${JSON.stringify(args.repo)} is not <owner>/<repo>.`
|
|
17541
17757
|
);
|
|
@@ -20923,10 +21139,10 @@ var updateCommand3 = {
|
|
|
20923
21139
|
stdioHelpers,
|
|
20924
21140
|
{ updateEventEmitter }
|
|
20925
21141
|
] = await Promise.all([
|
|
20926
|
-
import("./settings-
|
|
20927
|
-
import("./updateCheck-
|
|
20928
|
-
import("./installationInfo-
|
|
20929
|
-
import("./standalone-update-
|
|
21142
|
+
import("./settings-EQBUAQ7Y.js"),
|
|
21143
|
+
import("./updateCheck-AXWSO7KA.js"),
|
|
21144
|
+
import("./installationInfo-3YUGIP36.js"),
|
|
21145
|
+
import("./standalone-update-2W26SRRO.js"),
|
|
20930
21146
|
import("./stdioHelpers-7A2EE64Z.js"),
|
|
20931
21147
|
import("./updateEventEmitter-5MKC7BLQ.js")
|
|
20932
21148
|
]);
|
|
@@ -22088,7 +22304,7 @@ async function loadCliConfig(settings, argv, cwd = process.cwd(), overrideExtens
|
|
|
22088
22304
|
disabledSlashCommands: disabledSlashCommands.length > 0 ? disabledSlashCommands : void 0,
|
|
22089
22305
|
disabledSkillNamesProvider: bareMode || safeMode ? void 0 : disabledSkillNamesProvider,
|
|
22090
22306
|
terminalImageRenderSupportProvider: interactive ? async () => {
|
|
22091
|
-
const { getTerminalImageRenderSupport } = await import("./terminal-image-renderer-
|
|
22307
|
+
const { getTerminalImageRenderSupport } = await import("./terminal-image-renderer-S5WPPQKH.js");
|
|
22092
22308
|
return getTerminalImageRenderSupport();
|
|
22093
22309
|
} : void 0,
|
|
22094
22310
|
disabledSkillLevels: bareMode || safeMode || !Array.isArray(settings.skills?.disabledLevels) ? void 0 : settings.skills.disabledLevels.filter(isSkillLevel),
|