@qwen-code/qwen-code 0.21.9 → 0.21.10-nightly.20260812.a64d1291d2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +1 -1
- package/bundled/qc-helper/docs/extension/_meta.ts +1 -0
- package/bundled/qc-helper/docs/extension/agent-plugins.md +50 -0
- package/bundled/qc-helper/docs/extension/extension-releasing.md +3 -3
- package/bundled/qc-helper/docs/extension/introduction.md +17 -3
- package/bundled/qc-helper/docs/features/status-line.md +13 -13
- package/bundled/qc-helper/docs/integration-jetbrains.md +1 -0
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +14 -10
- package/bundled/review/SKILL.md +2 -2
- package/chunks/{MaxSizedBox-6BZANW7X.js → MaxSizedBox-K4E5KPIT.js} +5 -5
- package/chunks/{StandaloneSessionPicker-VDC5KE7T.js → StandaloneSessionPicker-5PG5MX6M.js} +19 -19
- package/chunks/{acp-startup-profiler-B5BYAMYQ.js → acp-startup-profiler-VNTFWYAC.js} +2 -2
- package/chunks/{acpAgent-F2NSBCUF.js → acpAgent-IPOVQXM7.js} +96 -44
- package/chunks/{agent-VOHJOEBB.js → agent-VMXQF6MJ.js} +5 -5
- package/chunks/{agent-headless-J5NFOPHP.js → agent-headless-VT7HJGQV.js} +5 -5
- package/chunks/{anthropicContentGenerator-SSFE2753.js → anthropicContentGenerator-D3Y4RFT4.js} +1 -1
- package/chunks/{bridge-NQIZZLAS.js → bridge-BAC6ACMF.js} +9 -9
- package/chunks/{channel-settings-store-VIY2OENO.js → channel-settings-store-GAA4CJAG.js} +11 -11
- package/chunks/{channel-worker-group-MSHT6CWR.js → channel-worker-group-WQP4RCDO.js} +3 -3
- package/chunks/{channel-worker-manager-XXD3GDSK.js → channel-worker-manager-MRDFAKIM.js} +3 -3
- package/chunks/{chunk-UYAUA63Q.js → chunk-2KRG55OF.js} +1 -1
- package/chunks/{chunk-K4ADGWHU.js → chunk-2YE6NWAN.js} +1 -1
- package/chunks/{chunk-UJUM2SRN.js → chunk-3MJEGPUL.js} +30 -27
- package/chunks/{chunk-3XVDTHBJ.js → chunk-47BN53GH.js} +2 -2
- package/chunks/{chunk-LZZLUCRS.js → chunk-4H4DGTRN.js} +3 -3
- package/chunks/{chunk-46YJDYCU.js → chunk-55OIMPSA.js} +7 -7
- package/chunks/{chunk-BIRWP6LU.js → chunk-5AJYBHLB.js} +1 -1
- package/chunks/{chunk-LP2QGNSP.js → chunk-624NHDGB.js} +3 -1
- package/chunks/{chunk-TZ6KJ44L.js → chunk-6NBNKITT.js} +1 -1
- package/chunks/{chunk-ATMO54WE.js → chunk-7OZLORD6.js} +2 -2
- package/chunks/{chunk-W3FSZSF2.js → chunk-AYIDPTXZ.js} +1 -1
- package/chunks/{chunk-GAKGOXTC.js → chunk-BK57YU3Q.js} +1 -1
- package/chunks/{chunk-AKJQSWV4.js → chunk-BSI645OU.js} +2 -2
- package/chunks/{chunk-MHP476D3.js → chunk-BSQSQRS4.js} +52 -39
- package/chunks/{chunk-5RBDAGC6.js → chunk-CH3TTBXT.js} +2 -2
- package/chunks/{chunk-TQCYNLNJ.js → chunk-DQFFENP5.js} +1 -1
- package/chunks/{chunk-MTCYGTWH.js → chunk-E5QWOI62.js} +4 -4
- package/chunks/{chunk-HZGBKOX3.js → chunk-EE6LY6EF.js} +2 -2
- package/chunks/{chunk-I5VM3SKY.js → chunk-EV3LZGGK.js} +332 -34
- package/chunks/{chunk-II6G3EY6.js → chunk-F2ZNVJEW.js} +339 -213
- package/chunks/{chunk-RBHQXGDK.js → chunk-F64B4CZT.js} +1 -1
- package/chunks/{chunk-OGNFHGIG.js → chunk-FOELNQMQ.js} +4 -4
- package/chunks/{chunk-CG3WBKJK.js → chunk-JT7XS4YW.js} +1 -1
- package/chunks/{chunk-FCLHHEUK.js → chunk-JVL4RMIC.js} +11 -11
- package/chunks/{chunk-T5RLUXWJ.js → chunk-K54PS4L2.js} +2 -2
- package/chunks/{chunk-KSAFZ5TA.js → chunk-KEN4RQXD.js} +1 -1
- package/chunks/{chunk-DGEIYUC3.js → chunk-KM73TBQ4.js} +7 -1
- package/chunks/{chunk-SCAZZ3Q4.js → chunk-L7TNB7A6.js} +4 -4
- package/chunks/{scheduler-YNQNOU2E.js → chunk-LQANGKTR.js} +238 -110
- package/chunks/{chunk-ZTQSOV56.js → chunk-LVMQKGBL.js} +3 -3
- package/chunks/{chunk-WGK4TSB7.js → chunk-MOTN72IT.js} +3 -3
- package/chunks/{chunk-XX7QFP34.js → chunk-NX2E4GYA.js} +3899 -3062
- package/chunks/{chunk-THIKWITR.js → chunk-P2IS6EBV.js} +2 -2
- package/chunks/{chunk-CMOBWHWW.js → chunk-QBJYSIQ4.js} +1 -1
- package/chunks/{chunk-DH5YXSIF.js → chunk-QLCMCSLN.js} +2 -2
- package/chunks/{chunk-67N6HB5H.js → chunk-QUI267ZP.js} +1 -0
- package/chunks/{chunk-QSNSL4R4.js → chunk-QUOFZM2M.js} +1 -1
- package/chunks/{chunk-ZOSTTOUJ.js → chunk-RBO66BYX.js} +1 -1
- package/chunks/{chunk-KTQGGPGV.js → chunk-RE46EJ3D.js} +4 -4
- package/chunks/{chunk-4XQNB3KN.js → chunk-RLTM3QF6.js} +2 -2
- package/chunks/{chunk-PVOGHGSF.js → chunk-RNIXJDUJ.js} +6 -6
- package/chunks/{chunk-ZBXGWQ4S.js → chunk-S3UYEZ5P.js} +2 -2
- package/chunks/{chunk-IOEZE2YT.js → chunk-U23YG4FX.js} +1 -1
- package/chunks/{chunk-WP5VOXF7.js → chunk-U2S2BLXV.js} +1 -1
- package/chunks/{chunk-XTY5DN4Y.js → chunk-U46N7DPC.js} +1 -1
- package/chunks/{chunk-BAMN6XSD.js → chunk-U6Z72YG7.js} +1 -1
- package/chunks/{chunk-23VQTELM.js → chunk-UH3IULYM.js} +1 -1
- package/chunks/{chunk-T6HEQR2Q.js → chunk-V54U4DJ5.js} +1 -1
- package/chunks/{chunk-G2TX5ZXC.js → chunk-VHZGWFFR.js} +3 -3
- package/chunks/{chunk-3WDYBTTI.js → chunk-VNKZDFWC.js} +4 -4
- package/chunks/{chunk-JUWS2Z5K.js → chunk-VXIWAZOB.js} +5 -5
- package/chunks/{chunk-D7BXVKSF.js → chunk-VZXRAUBT.js} +1 -1
- package/chunks/{chunk-M2PNLYGY.js → chunk-W5UC37EE.js} +2 -0
- package/chunks/{chunk-7AEPJGL4.js → chunk-W7YVDFWW.js} +1 -1
- package/chunks/{chunk-P4ZEZSJZ.js → chunk-WBLEKO7Y.js} +301 -88
- package/chunks/{chunk-OGDIJKHK.js → chunk-WDNJKDCV.js} +1 -1
- package/chunks/{chunk-BT6GQIEJ.js → chunk-X2UOOG5V.js} +1 -1
- package/chunks/{chunk-RVSTTOJ4.js → chunk-X34IHISE.js} +2 -2
- package/chunks/{chunk-7S4JBJLU.js → chunk-XL4L56BA.js} +3 -3
- package/chunks/{chunk-HADWBW5R.js → chunk-YDXGES66.js} +10 -8
- package/chunks/{chunk-7GOYZQPR.js → chunk-YG7HIT5G.js} +3 -3
- package/chunks/{chunk-P3RBMQ4P.js → chunk-YPQWPADW.js} +4 -4
- package/chunks/{chunk-P2FK2HBV.js → chunk-YRZGVOGK.js} +2 -2
- package/chunks/{chunk-BZP4QPNK.js → chunk-ZH3OJWOH.js} +9 -9
- package/chunks/{chunk-PNBBJOCP.js → chunk-ZKVJ7KFA.js} +1 -1
- package/chunks/{chunk-FBMCDU63.js → chunk-ZYHPUNBD.js} +4 -4
- package/chunks/{chunk-KTKYGS2P.js → chunk-ZZCWJWTF.js} +8 -1
- package/chunks/{computer-use-PMZ7ICGY.js → computer-use-TVZGVQPC.js} +5 -5
- package/chunks/{contextCommand-GEZU7YHE.js → contextCommand-EQC4CBSS.js} +7 -7
- package/chunks/{core-runtime-HRJI2MN6.js → core-runtime-BG5F54ZP.js} +5 -5
- package/chunks/{create-sub-session-VBNVI4YU.js → create-sub-session-SLZLFXSO.js} +6 -6
- package/chunks/{daemon-POSQPD3G.js → daemon-GWD7BT6E.js} +46 -5
- package/chunks/{daemon-status-provider-N4CRQKFI.js → daemon-status-provider-N5BYCQDQ.js} +13 -13
- package/chunks/{daemon-trust-policy-BHO3JUHM.js → daemon-trust-policy-LD5SCDI7.js} +11 -11
- package/chunks/{daemon-trust-policy-monitor-YEKJ2726.js → daemon-trust-policy-monitor-A243C45J.js} +11 -11
- package/chunks/{deferred-core-runtime-SH57E3J3.js → deferred-core-runtime-DBIT7BLE.js} +5 -5
- package/chunks/{earlyInputCapture-B2JJ2HME.js → earlyInputCapture-4XHUKK24.js} +5 -5
- package/chunks/{edit-7FTXENAN.js → edit-LESWHF3T.js} +5 -5
- package/chunks/{enter-worktree-JPHV2PBG.js → enter-worktree-FTOEWQUC.js} +5 -5
- package/chunks/{enterPlanMode-CGBJ3AHJ.js → enterPlanMode-NVN7AHQQ.js} +5 -5
- package/chunks/{environment-LXASZAHD.js → environment-D2DDDREF.js} +7 -7
- package/chunks/{errors-XIGVT2AD.js → errors-RNZVUHHZ.js} +7 -7
- package/chunks/{exit-worktree-DKSGXW65.js → exit-worktree-YY7VLO4V.js} +5 -5
- package/chunks/{exitPlanMode-THFL2HYN.js → exitPlanMode-NTVZE4EW.js} +5 -5
- package/chunks/{fast-path-4NXAT5UL.js → fast-path-FBGTJPOT.js} +2 -2
- package/chunks/{gemini-B3N6FACU.js → gemini-4EAKD6ZK.js} +76 -52
- package/chunks/{geminiContentGenerator-YYFE2HIE.js → geminiContentGenerator-B2OSGUGH.js} +1 -1
- package/chunks/{glob-BPHSCFJP.js → glob-Q2FCGTR4.js} +5 -5
- package/chunks/{goal-tools-PXWN5VK3.js → goal-tools-SWNB6GP4.js} +1 -1
- package/chunks/{grep-ROZIRFLU.js → grep-A6GL7D2F.js} +5 -5
- package/chunks/{handleAutoUpdate-WV6SPZQB.js → handleAutoUpdate-2BH5LSGN.js} +9 -9
- package/chunks/{i18n-YWJWPQKD.js → i18n-Q2HJLEMO.js} +6 -6
- package/chunks/{image-gen-SISRZ6FS.js → image-gen-J5CH33LV.js} +1 -1
- package/chunks/{initializer-66OAD6GO.js → initializer-ESQCOGMA.js} +11 -11
- package/chunks/{installationInfo-3YUGIP36.js → installationInfo-LEQKYZUV.js} +6 -6
- package/chunks/{list-VEYR66XB.js → list-HGYJO3XP.js} +14 -14
- package/chunks/{loadedSettingsAdapter-V2JCPCYD.js → loadedSettingsAdapter-5UE5WA63.js} +11 -11
- package/chunks/{loggingContentGenerator-RBLNDREC.js → loggingContentGenerator-4EJPPA6R.js} +1 -1
- package/chunks/{managed-npm-update-C5ID5R4R.js → managed-npm-update-NXWCMWAJ.js} +6 -6
- package/chunks/{mcp-OZ54NZJQ.js → mcp-AJO665OX.js} +11 -11
- package/chunks/{monitor-7Y4TVFTK.js → monitor-WTLK3MYH.js} +5 -5
- package/chunks/{nonInteractiveCli-QEK4LHAC.js → nonInteractiveCli-HVBK2CZX.js} +35 -35
- package/chunks/{notebook-edit-OG35EBGY.js → notebook-edit-RBKPQF32.js} +5 -5
- package/chunks/{openaiContentGenerator-443BNRPJ.js → openaiContentGenerator-GYQWXOHX.js} +1 -1
- package/chunks/{pidfile-ZK4OLRZA.js → pidfile-Y7VFMJYS.js} +5 -5
- package/chunks/{processUtils-4YGB4RUZ.js → processUtils-QR4XBRHA.js} +2 -2
- package/chunks/{qwenContentGenerator-D5C2LCSZ.js → qwenContentGenerator-PLMPJ7AT.js} +5 -5
- package/chunks/{qwenOAuth2-Z4YQBMYN.js → qwenOAuth2-IJJTZK6N.js} +1 -1
- package/chunks/{read-file-EXTJLWMU.js → read-file-K724KK2A.js} +1 -1
- package/chunks/{resumeHistoryUtils-UPCGRJUL.js → resumeHistoryUtils-DLHDUD2M.js} +8 -8
- package/chunks/{ripGrep-QBVIRCU4.js → ripGrep-FMIC7FNP.js} +5 -5
- package/chunks/{run-qwen-serve-ZYGJNE3E.js → run-qwen-serve-JRQ2HD5U.js} +38 -34
- package/chunks/{runtime-BZZ4LWCP.js → runtime-ER7P3KUI.js} +12 -12
- package/chunks/scheduler-KWLBM3NK.js +108 -0
- package/chunks/{serve-LJHAXDCH.js → serve-YB47EMXO.js} +11 -11
- package/chunks/{server-ADMLELR6.js → server-JYXJCDIX.js} +629 -252
- package/chunks/{session-YKZXFFTM.js → session-GHU5Q4AW.js} +43 -44
- package/chunks/{settings-EQBUAQ7Y.js → settings-CKL2MBGB.js} +10 -10
- package/chunks/{shell-3QZOJGTT.js → shell-YVEUL4QQ.js} +5 -5
- package/chunks/{skill-UWSSMXE7.js → skill-LGVJVPZV.js} +1 -1
- package/chunks/{skill-settings-T6MLB7NU.js → skill-settings-SSSOSSPI.js} +10 -10
- package/chunks/{spawnChannel-VS7ZFUFP.js → spawnChannel-FQHJA372.js} +8 -6
- package/chunks/{standalone-update-2W26SRRO.js → standalone-update-UAKUIJVX.js} +7 -7
- package/chunks/{startInteractiveUI-CVS7K3D6.js → startInteractiveUI-HT57X3GG.js} +1210 -926
- package/chunks/{team-create-4WFTNNUL.js → team-create-5JHJVRFA.js} +5 -5
- package/chunks/{team-plan-approval-DBYI33S3.js → team-plan-approval-HBJP76ID.js} +5 -5
- package/chunks/{terminal-image-renderer-S5WPPQKH.js → terminal-image-renderer-32M7VTOP.js} +5 -5
- package/chunks/{theme-manager-LI2RIOVR.js → theme-manager-JKURLTQE.js} +5 -5
- package/chunks/{tool-search-4773EUQ4.js → tool-search-AMC7FXYI.js} +1 -1
- package/chunks/{total-session-admission-PAY5CH2Z.js → total-session-admission-TK2UUJZG.js} +10 -10
- package/chunks/{trustedFolders-FRSLE674.js → trustedFolders-YAPOBY37.js} +6 -6
- package/chunks/{update-relaunch-ZSFQTU6M.js → update-relaunch-4CMYTESD.js} +5 -5
- package/chunks/{updateCheck-AXWSO7KA.js → updateCheck-526AK4W6.js} +8 -8
- package/chunks/{useAutoAcceptIndicator-VHLXIA7U.js → useAutoAcceptIndicator-GZMVYIAH.js} +11 -11
- package/chunks/{validateNonInterActiveAuth-PDJECMFU.js → validateNonInterActiveAuth-RTMLOTRO.js} +32 -32
- package/chunks/{version-RBN764QS.js → version-4HU3RJQY.js} +1 -1
- package/chunks/{web-fetch-7BJK42AF.js → web-fetch-AZE7YE2H.js} +1 -1
- package/chunks/{web-search-L2CILQXV.js → web-search-THKQ4CJN.js} +2 -2
- package/chunks/{workflow-5VH2R74I.js → workflow-ZGTAUCV3.js} +6 -6
- package/chunks/{workspace-providers-status-OZTQ6JFH.js → workspace-providers-status-HEKQ7HJL.js} +13 -13
- package/chunks/{workspace-registration-store-IX5RJQS5.js → workspace-registration-store-H3M2APZV.js} +1 -1
- package/chunks/{workspace-registry-73N4BGG4.js → workspace-registry-LBV2HXGB.js} +10 -10
- package/chunks/{workspace-service-I5RUPSNV.js → workspace-service-4NNBEEXD.js} +15 -15
- package/chunks/{workspace-skills-status-DMK6VYDO.js → workspace-skills-status-LJ3YCC4W.js} +11 -11
- package/chunks/{workspace-trust-reconciler-QX4RL3TC.js → workspace-trust-reconciler-OKFLBY7B.js} +16 -16
- package/chunks/{write-file-UGDD5UTS.js → write-file-YESN7WUZ.js} +5 -5
- package/chunks/{zoom-image-ZAHEO3YP.js → zoom-image-2KUEGQ6U.js} +1 -1
- package/cli.js +13 -13
- package/package.json +3 -3
- package/web-shell/assets/{arc-CHY4saMJ.js → arc-BGiARkbG.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-Bu6CwvHj.js → architectureDiagram-3BPJPVTR-3QBZDeqg.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-XGt6iGf_.js → blockDiagram-GPEHLZMM-CbJI0j0o.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-CBbYl19W.js → c4Diagram-AAUBKEIU-pita1IYy.js} +1 -1
- package/web-shell/assets/channel-3vYOf77E.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-BEhmVrdx.js → chunk-2J33WTMH-WzTFww1i.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-fQLyE0Bg.js → chunk-4BX2VUAB-8TIRo9bL.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-yGdtyx4a.js → chunk-55IACEB6-CuCr34qf.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DYbX2GLo.js → chunk-727SXJPM-Bb_xWEAx.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-DyKTEsYn.js → chunk-AQP2D5EJ-C8T1b2Qw.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-D8Uy_GzX.js → chunk-FMBD7UC4-kjpyMkNM.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-C8wNR2K7.js → chunk-ND2GUHAM-Dm35jDmi.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-BnybNxnt.js → chunk-QZHKN3VN-BPVKwuby.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-Dr2aqxvr.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Dr2aqxvr.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-jq4uiFRp.js → cose-bilkent-S5V4N54A-M-7J9Xyz.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-Bs7oye1U.js → dagre-BM42HDAG-u6rmS689.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BHGGJNyM.js → diagram-2AECGRRQ-nAisfOUB.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BJezVLGT.js → diagram-5GNKFQAL-CpobRd3l.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-5JzQN_rL.js → diagram-KO2AKTUF-B82W_wPq.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BlPYOgY9.js → diagram-LMA3HP47-ClTkmPW6.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CtMHEaFK.js → diagram-OG6HWLK6-42fbxGPW.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-CRNdq2AB.js → erDiagram-TEJ5UH35-8_zQfzlQ.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-De1WwLzu.js → flowDiagram-I6XJVG4X-DQDoN_oV.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-YbWfL5Zn.js → ganttDiagram-6RSMTGT7-Cqd646fB.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DzCN8bmd.js → gitGraphDiagram-PVQCEYII-B6qWs_tS.js} +1 -1
- package/web-shell/assets/{index-CocPvF9Q.js → index-BCeQB_tk.js} +1 -1
- package/web-shell/assets/index-Dv9zBWC9.js +1775 -0
- package/web-shell/assets/{index-BDOGGGaN.css → index-eYjX7fQg.css} +2 -2
- package/web-shell/assets/{infoDiagram-5YYISTIA-DLHoopnE.js → infoDiagram-5YYISTIA-BVyDAHuu.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-XnbU04SS.js → ishikawaDiagram-YF4QCWOH-BBHM904I.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CipPyEeJ.js → journeyDiagram-JHISSGLW-B5Bv5Z_0.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DrSeyE5d.js → kanban-definition-UN3LZRKU-BwSTb0YF.js} +1 -1
- package/web-shell/assets/{linear-LrBKnAo_.js → linear-CHtTm36c.js} +1 -1
- package/web-shell/assets/{mermaid.core-C3U9UVmf.js → mermaid.core-vBCuAUkf.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-DqRWgC9H.js → mindmap-definition-RKZ34NQL-CNfKHJrA.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-BNXY5p6H.js → pieDiagram-4H26LBE5-DT6QMLhc.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Ccj9QzE4.js → quadrantDiagram-W4KKPZXB-Rb2Dar4i.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-CjPM2_gx.js → requirementDiagram-4Y6WPE33-CA9YzPUY.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-C0RsvKbj.js → sankeyDiagram-5OEKKPKP-CJ5SkhJw.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-ClN1P5z7.js → sequenceDiagram-3UESZ5HK-T31AiuVM.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-By0eiB2Y.js → stateDiagram-AJRCARHV-f7Xpd_Xh.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-wucbNzkr.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-g_iaSQgv.js → timeline-definition-PNZ67QCA-dCwsTscr.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-y9ZqJ-TD.js → vennDiagram-CIIHVFJN-SQtBFYkQ.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-BVVfaxpF.js → wardley-L42UT6IY-Dfh4eW0B.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-D3ooZKZT.js → wardleyDiagram-YWT4CUSO-BWBKXBsC.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-6GXrY6M1.js → xychartDiagram-2RQKCTM6-DVqzcaxh.js} +1 -1
- package/web-shell/index.html +2 -2
- package/web-shell/assets/channel-B40srHOa.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-qumcXQW_.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-qumcXQW_.js +0 -1
- package/web-shell/assets/index-DSH2KrMc.js +0 -1771
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Ds0WlK3F.js +0 -1
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
functionResponsePartsToString
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-3MJEGPUL.js";
|
|
6
6
|
import {
|
|
7
7
|
parseAndFormatApiError
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-NX2E4GYA.js";
|
|
9
9
|
import {
|
|
10
10
|
formatVisionBridgeNoticeDisplay,
|
|
11
11
|
isVisionBridgeNoticeDisplay
|
|
@@ -25,31 +25,69 @@ import { getHeapStatistics } from "node:v8";
|
|
|
25
25
|
|
|
26
26
|
// packages/acp-bridge/src/ndJsonStream.ts
|
|
27
27
|
init_esbuild_shims();
|
|
28
|
-
|
|
28
|
+
import { createHash } from "node:crypto";
|
|
29
|
+
var NdJsonFrameTooLargeError = class extends Error {
|
|
30
|
+
constructor(direction, limitBytes, observedBytes) {
|
|
31
|
+
super(
|
|
32
|
+
`NDJSON ${direction} frame exceeds ${limitBytes} bytes (observed ${observedBytes} bytes)`
|
|
33
|
+
);
|
|
34
|
+
this.direction = direction;
|
|
35
|
+
this.limitBytes = limitBytes;
|
|
36
|
+
this.observedBytes = observedBytes;
|
|
37
|
+
this.name = "NdJsonFrameTooLargeError";
|
|
38
|
+
}
|
|
39
|
+
static {
|
|
40
|
+
__name(this, "NdJsonFrameTooLargeError");
|
|
41
|
+
}
|
|
42
|
+
code = "ndjson_frame_too_large";
|
|
43
|
+
};
|
|
44
|
+
var NdJsonQueueLimitError = class extends Error {
|
|
45
|
+
constructor(maxQueuedMessages, maxQueuedBytes, requiredBytes, availableBytes) {
|
|
46
|
+
super(
|
|
47
|
+
`NDJSON decoded queue is full (required ${requiredBytes} bytes, available ${availableBytes} bytes)`
|
|
48
|
+
);
|
|
49
|
+
this.maxQueuedMessages = maxQueuedMessages;
|
|
50
|
+
this.maxQueuedBytes = maxQueuedBytes;
|
|
51
|
+
this.requiredBytes = requiredBytes;
|
|
52
|
+
this.availableBytes = availableBytes;
|
|
53
|
+
this.name = "NdJsonQueueLimitError";
|
|
54
|
+
}
|
|
55
|
+
static {
|
|
56
|
+
__name(this, "NdJsonQueueLimitError");
|
|
57
|
+
}
|
|
58
|
+
code = "ndjson_queue_limit_exceeded";
|
|
59
|
+
};
|
|
60
|
+
var NdJsonIncompleteFrameError = class extends Error {
|
|
61
|
+
constructor(observedBytes) {
|
|
62
|
+
super(`NDJSON input ended with an incomplete ${observedBytes}-byte frame`);
|
|
63
|
+
this.observedBytes = observedBytes;
|
|
64
|
+
this.name = "NdJsonIncompleteFrameError";
|
|
65
|
+
}
|
|
66
|
+
static {
|
|
67
|
+
__name(this, "NdJsonIncompleteFrameError");
|
|
68
|
+
}
|
|
69
|
+
code = "ndjson_incomplete_frame";
|
|
70
|
+
};
|
|
71
|
+
function ndJsonStream(output, input, hooks, limits) {
|
|
29
72
|
const textEncoder = new TextEncoder();
|
|
30
73
|
const textDecoder = new TextDecoder();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const pending = [];
|
|
34
|
-
const reader = input.getReader();
|
|
35
|
-
try {
|
|
36
|
-
while (true) {
|
|
37
|
-
const { value, done } = await reader.read();
|
|
38
|
-
if (done) break;
|
|
39
|
-
if (!value) continue;
|
|
40
|
-
readChunk(value, pending, controller, textDecoder, hooks);
|
|
41
|
-
}
|
|
42
|
-
} finally {
|
|
43
|
-
reader.releaseLock();
|
|
44
|
-
controller.close();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
});
|
|
74
|
+
if (limits) validateNdJsonStreamLimits(limits);
|
|
75
|
+
const readable = limits ? createBoundedReadable(input, textDecoder, hooks, limits) : createLegacyReadable(input, textDecoder, hooks);
|
|
48
76
|
const writable = new WritableStream({
|
|
49
77
|
async write(message) {
|
|
50
78
|
const content = JSON.stringify(message);
|
|
51
79
|
const payload = textEncoder.encode(content);
|
|
52
|
-
const
|
|
80
|
+
const frameBytes = payload.byteLength + 1;
|
|
81
|
+
if (limits && frameBytes > limits.maxFrameBytes) {
|
|
82
|
+
const error = new NdJsonFrameTooLargeError(
|
|
83
|
+
"sent",
|
|
84
|
+
limits.maxFrameBytes,
|
|
85
|
+
frameBytes
|
|
86
|
+
);
|
|
87
|
+
callHook(hooks?.onTransportError, error);
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
90
|
+
const frame = new Uint8Array(frameBytes);
|
|
53
91
|
frame.set(payload);
|
|
54
92
|
frame[payload.byteLength] = 10;
|
|
55
93
|
const writer = output.getWriter();
|
|
@@ -61,6 +99,9 @@ function ndJsonStream(output, input, hooks) {
|
|
|
61
99
|
bytes: payload.byteLength,
|
|
62
100
|
message
|
|
63
101
|
});
|
|
102
|
+
} catch (error) {
|
|
103
|
+
if (limits) callHook(hooks?.onTransportError, error);
|
|
104
|
+
throw error;
|
|
64
105
|
} finally {
|
|
65
106
|
writer.releaseLock();
|
|
66
107
|
}
|
|
@@ -69,12 +110,110 @@ function ndJsonStream(output, input, hooks) {
|
|
|
69
110
|
return { readable, writable };
|
|
70
111
|
}
|
|
71
112
|
__name(ndJsonStream, "ndJsonStream");
|
|
72
|
-
function
|
|
113
|
+
function createLegacyReadable(input, textDecoder, hooks) {
|
|
114
|
+
return new ReadableStream({
|
|
115
|
+
async start(controller) {
|
|
116
|
+
const pending = [];
|
|
117
|
+
const reader = input.getReader();
|
|
118
|
+
try {
|
|
119
|
+
while (true) {
|
|
120
|
+
const { value, done } = await reader.read();
|
|
121
|
+
if (done) break;
|
|
122
|
+
if (!value) continue;
|
|
123
|
+
readLegacyChunk(value, pending, controller, textDecoder, hooks);
|
|
124
|
+
}
|
|
125
|
+
} finally {
|
|
126
|
+
reader.releaseLock();
|
|
127
|
+
controller.close();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
__name(createLegacyReadable, "createLegacyReadable");
|
|
133
|
+
function createBoundedReadable(input, textDecoder, hooks, limits) {
|
|
134
|
+
const pending = new BoundedFrameBuffer(limits.maxFrameBytes);
|
|
135
|
+
const minimumQueueCharge = Math.ceil(
|
|
136
|
+
limits.maxQueuedBytes / limits.maxQueuedMessages
|
|
137
|
+
);
|
|
138
|
+
let nextQueueCharge = minimumQueueCharge;
|
|
139
|
+
let reader;
|
|
140
|
+
let canceled = false;
|
|
141
|
+
return new ReadableStream(
|
|
142
|
+
{
|
|
143
|
+
start(controller) {
|
|
144
|
+
reader = input.getReader();
|
|
145
|
+
void pumpBoundedInput(
|
|
146
|
+
reader,
|
|
147
|
+
pending,
|
|
148
|
+
controller,
|
|
149
|
+
textDecoder,
|
|
150
|
+
hooks,
|
|
151
|
+
limits,
|
|
152
|
+
minimumQueueCharge,
|
|
153
|
+
(charge) => {
|
|
154
|
+
nextQueueCharge = charge;
|
|
155
|
+
},
|
|
156
|
+
() => canceled
|
|
157
|
+
);
|
|
158
|
+
},
|
|
159
|
+
async cancel(reason) {
|
|
160
|
+
canceled = true;
|
|
161
|
+
pending.clear();
|
|
162
|
+
if (reader) await cancelReader(reader, reason);
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
highWaterMark: limits.maxQueuedBytes,
|
|
167
|
+
size: /* @__PURE__ */ __name(() => nextQueueCharge, "size")
|
|
168
|
+
}
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
__name(createBoundedReadable, "createBoundedReadable");
|
|
172
|
+
async function pumpBoundedInput(reader, pending, controller, textDecoder, hooks, limits, minimumQueueCharge, setNextQueueCharge, isCanceled) {
|
|
173
|
+
try {
|
|
174
|
+
while (true) {
|
|
175
|
+
const result = await reader.read();
|
|
176
|
+
if (result.done) {
|
|
177
|
+
if (isCanceled()) return;
|
|
178
|
+
if (pending.byteLength > 0) {
|
|
179
|
+
throw new NdJsonIncompleteFrameError(pending.byteLength);
|
|
180
|
+
}
|
|
181
|
+
controller.close();
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (!result.value) continue;
|
|
185
|
+
readBoundedChunk(
|
|
186
|
+
result.value,
|
|
187
|
+
pending,
|
|
188
|
+
controller,
|
|
189
|
+
textDecoder,
|
|
190
|
+
hooks,
|
|
191
|
+
limits,
|
|
192
|
+
minimumQueueCharge,
|
|
193
|
+
setNextQueueCharge
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
} catch (error) {
|
|
197
|
+
if (isCanceled()) return;
|
|
198
|
+
pending.clear();
|
|
199
|
+
callHook(hooks?.onTransportError, error);
|
|
200
|
+
await cancelReader(reader, error);
|
|
201
|
+
if (!isCanceled()) controller.close();
|
|
202
|
+
} finally {
|
|
203
|
+
pending.clear();
|
|
204
|
+
reader.releaseLock();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
__name(pumpBoundedInput, "pumpBoundedInput");
|
|
208
|
+
function readLegacyChunk(chunk, pending, controller, textDecoder, hooks) {
|
|
73
209
|
let start = 0;
|
|
74
210
|
let newline = chunk.indexOf(10, start);
|
|
75
211
|
while (newline !== -1) {
|
|
76
|
-
const lineBytes =
|
|
77
|
-
|
|
212
|
+
const lineBytes = takeLegacyLineBytes(
|
|
213
|
+
pending,
|
|
214
|
+
chunk.subarray(start, newline)
|
|
215
|
+
);
|
|
216
|
+
handleLegacyLine(lineBytes, controller, textDecoder, hooks);
|
|
78
217
|
start = newline + 1;
|
|
79
218
|
newline = chunk.indexOf(10, start);
|
|
80
219
|
}
|
|
@@ -82,8 +221,39 @@ function readChunk(chunk, pending, controller, textDecoder, hooks) {
|
|
|
82
221
|
pending.push(chunk.subarray(start));
|
|
83
222
|
}
|
|
84
223
|
}
|
|
85
|
-
__name(
|
|
86
|
-
function
|
|
224
|
+
__name(readLegacyChunk, "readLegacyChunk");
|
|
225
|
+
function readBoundedChunk(chunk, pending, controller, textDecoder, hooks, limits, minimumQueueCharge, setNextQueueCharge) {
|
|
226
|
+
let start = 0;
|
|
227
|
+
let newline = chunk.indexOf(10, start);
|
|
228
|
+
while (newline !== -1) {
|
|
229
|
+
const current = chunk.subarray(start, newline);
|
|
230
|
+
const frameBytes = pending.byteLength + current.byteLength + 1;
|
|
231
|
+
assertFrameSize("received", limits.maxFrameBytes, frameBytes);
|
|
232
|
+
if (pending.isJsonWhitespaceLine(current)) {
|
|
233
|
+
pending.clear();
|
|
234
|
+
start = newline + 1;
|
|
235
|
+
newline = chunk.indexOf(10, start);
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
const queueCharge = Math.max(frameBytes, minimumQueueCharge);
|
|
239
|
+
const availableBytes = controller.desiredSize;
|
|
240
|
+
if (availableBytes === null || queueCharge > availableBytes) {
|
|
241
|
+
throw new NdJsonQueueLimitError(
|
|
242
|
+
limits.maxQueuedMessages,
|
|
243
|
+
limits.maxQueuedBytes,
|
|
244
|
+
queueCharge,
|
|
245
|
+
Math.max(0, availableBytes ?? 0)
|
|
246
|
+
);
|
|
247
|
+
}
|
|
248
|
+
setNextQueueCharge(queueCharge);
|
|
249
|
+
handleBoundedLine(pending.take(current), controller, textDecoder, hooks);
|
|
250
|
+
start = newline + 1;
|
|
251
|
+
newline = chunk.indexOf(10, start);
|
|
252
|
+
}
|
|
253
|
+
if (start < chunk.length) pending.append(chunk.subarray(start));
|
|
254
|
+
}
|
|
255
|
+
__name(readBoundedChunk, "readBoundedChunk");
|
|
256
|
+
function takeLegacyLineBytes(pending, current) {
|
|
87
257
|
if (pending.length === 0) return current;
|
|
88
258
|
const totalLength = pending.reduce((sum, part) => sum + part.byteLength, 0) + current.byteLength;
|
|
89
259
|
const line = new Uint8Array(totalLength);
|
|
@@ -96,30 +266,82 @@ function takeLineBytes(pending, current) {
|
|
|
96
266
|
pending.length = 0;
|
|
97
267
|
return line;
|
|
98
268
|
}
|
|
99
|
-
__name(
|
|
100
|
-
function
|
|
269
|
+
__name(takeLegacyLineBytes, "takeLegacyLineBytes");
|
|
270
|
+
function handleLegacyLine(lineBytes, controller, textDecoder, hooks) {
|
|
101
271
|
const line = textDecoder.decode(lineBytes);
|
|
102
272
|
const trimmedLine = line.trim();
|
|
103
273
|
if (!trimmedLine) return;
|
|
104
274
|
try {
|
|
105
275
|
const message = JSON.parse(trimmedLine);
|
|
106
276
|
controller.enqueue(message);
|
|
277
|
+
reportReceivedMessage(lineBytes, message, hooks);
|
|
278
|
+
} catch (err) {
|
|
279
|
+
console.error("Failed to parse JSON message:", trimmedLine, err);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
__name(handleLegacyLine, "handleLegacyLine");
|
|
283
|
+
function handleBoundedLine(lineBytes, controller, textDecoder, hooks) {
|
|
284
|
+
const line = textDecoder.decode(lineBytes);
|
|
285
|
+
const trimmedLine = line.trim();
|
|
286
|
+
if (!trimmedLine) return;
|
|
287
|
+
let message;
|
|
288
|
+
try {
|
|
289
|
+
message = JSON.parse(trimmedLine);
|
|
290
|
+
} catch {
|
|
107
291
|
const bytes = jsonPayloadByteLength(lineBytes);
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
292
|
+
const digest = createHash("sha256").update(lineBytes.subarray(0, bytes)).digest("hex");
|
|
293
|
+
console.error("Failed to parse JSON message:", {
|
|
294
|
+
errorKind: "ndjson_parse_error",
|
|
111
295
|
bytes,
|
|
112
|
-
|
|
296
|
+
sha256: digest,
|
|
297
|
+
payloadOmitted: true
|
|
113
298
|
});
|
|
114
|
-
|
|
115
|
-
console.error("Failed to parse JSON message:", trimmedLine, err);
|
|
299
|
+
return;
|
|
116
300
|
}
|
|
301
|
+
controller.enqueue(message);
|
|
302
|
+
reportReceivedMessage(lineBytes, message, hooks);
|
|
303
|
+
}
|
|
304
|
+
__name(handleBoundedLine, "handleBoundedLine");
|
|
305
|
+
function reportReceivedMessage(lineBytes, message, hooks) {
|
|
306
|
+
const bytes = jsonPayloadByteLength(lineBytes);
|
|
307
|
+
callHook(hooks?.onMessageReceived, bytes);
|
|
308
|
+
callHook(hooks?.onMessageObserved, {
|
|
309
|
+
direction: "received",
|
|
310
|
+
bytes,
|
|
311
|
+
message
|
|
312
|
+
});
|
|
117
313
|
}
|
|
118
|
-
__name(
|
|
314
|
+
__name(reportReceivedMessage, "reportReceivedMessage");
|
|
119
315
|
function jsonPayloadByteLength(lineBytes) {
|
|
120
316
|
return lineBytes[lineBytes.byteLength - 1] === 13 ? lineBytes.byteLength - 1 : lineBytes.byteLength;
|
|
121
317
|
}
|
|
122
318
|
__name(jsonPayloadByteLength, "jsonPayloadByteLength");
|
|
319
|
+
function validateNdJsonStreamLimits(limits) {
|
|
320
|
+
const values = [
|
|
321
|
+
["maxFrameBytes", limits.maxFrameBytes],
|
|
322
|
+
["maxQueuedMessages", limits.maxQueuedMessages],
|
|
323
|
+
["maxQueuedBytes", limits.maxQueuedBytes]
|
|
324
|
+
];
|
|
325
|
+
for (const [name, value] of values) {
|
|
326
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
327
|
+
throw new RangeError(`${name} must be a positive safe integer`);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
__name(validateNdJsonStreamLimits, "validateNdJsonStreamLimits");
|
|
332
|
+
function assertFrameSize(direction, limitBytes, observedBytes) {
|
|
333
|
+
if (observedBytes > limitBytes) {
|
|
334
|
+
throw new NdJsonFrameTooLargeError(direction, limitBytes, observedBytes);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
__name(assertFrameSize, "assertFrameSize");
|
|
338
|
+
async function cancelReader(reader, reason) {
|
|
339
|
+
try {
|
|
340
|
+
await reader.cancel(reason);
|
|
341
|
+
} catch {
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
__name(cancelReader, "cancelReader");
|
|
123
345
|
function callHook(hook, value) {
|
|
124
346
|
try {
|
|
125
347
|
hook?.(value);
|
|
@@ -127,6 +349,62 @@ function callHook(hook, value) {
|
|
|
127
349
|
}
|
|
128
350
|
}
|
|
129
351
|
__name(callHook, "callHook");
|
|
352
|
+
var BoundedFrameBuffer = class {
|
|
353
|
+
constructor(maxFrameBytes) {
|
|
354
|
+
this.maxFrameBytes = maxFrameBytes;
|
|
355
|
+
}
|
|
356
|
+
static {
|
|
357
|
+
__name(this, "BoundedFrameBuffer");
|
|
358
|
+
}
|
|
359
|
+
buffer;
|
|
360
|
+
length = 0;
|
|
361
|
+
get byteLength() {
|
|
362
|
+
return this.length;
|
|
363
|
+
}
|
|
364
|
+
append(bytes) {
|
|
365
|
+
const requiredBytes = this.length + bytes.byteLength;
|
|
366
|
+
assertFrameSize("received", this.maxFrameBytes, requiredBytes);
|
|
367
|
+
if (requiredBytes === 0) return;
|
|
368
|
+
if (!this.buffer || this.buffer.byteLength < requiredBytes) {
|
|
369
|
+
const doubledCapacity = Math.min(
|
|
370
|
+
this.maxFrameBytes,
|
|
371
|
+
Math.max(1024, (this.buffer?.byteLength ?? 0) * 2)
|
|
372
|
+
);
|
|
373
|
+
const next = new Uint8Array(Math.max(requiredBytes, doubledCapacity));
|
|
374
|
+
if (this.buffer) next.set(this.buffer.subarray(0, this.length));
|
|
375
|
+
this.buffer = next;
|
|
376
|
+
}
|
|
377
|
+
this.buffer.set(bytes, this.length);
|
|
378
|
+
this.length = requiredBytes;
|
|
379
|
+
}
|
|
380
|
+
take(current) {
|
|
381
|
+
if (this.length === 0) return current;
|
|
382
|
+
const line = new Uint8Array(this.length + current.byteLength);
|
|
383
|
+
line.set(this.buffer.subarray(0, this.length));
|
|
384
|
+
line.set(current, this.length);
|
|
385
|
+
this.clear();
|
|
386
|
+
return line;
|
|
387
|
+
}
|
|
388
|
+
isJsonWhitespaceLine(current) {
|
|
389
|
+
if (this.buffer) {
|
|
390
|
+
for (let index = 0; index < this.length; index++) {
|
|
391
|
+
if (!isJsonWhitespaceByte(this.buffer[index])) return false;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
for (const byte of current) {
|
|
395
|
+
if (!isJsonWhitespaceByte(byte)) return false;
|
|
396
|
+
}
|
|
397
|
+
return true;
|
|
398
|
+
}
|
|
399
|
+
clear() {
|
|
400
|
+
this.buffer = void 0;
|
|
401
|
+
this.length = 0;
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
function isJsonWhitespaceByte(byte) {
|
|
405
|
+
return byte === 32 || byte === 9 || byte === 13;
|
|
406
|
+
}
|
|
407
|
+
__name(isJsonWhitespaceByte, "isJsonWhitespaceByte");
|
|
130
408
|
|
|
131
409
|
// packages/acp-bridge/src/process-registry.ts
|
|
132
410
|
init_esbuild_shims();
|
|
@@ -283,6 +561,11 @@ var TrackedChild = class {
|
|
|
283
561
|
|
|
284
562
|
// packages/acp-bridge/src/spawnChannel.ts
|
|
285
563
|
var cachedMemoryArgs;
|
|
564
|
+
var DAEMON_ACP_NDJSON_LIMITS = Object.freeze({
|
|
565
|
+
maxFrameBytes: 64 * 1024 * 1024,
|
|
566
|
+
maxQueuedMessages: 256,
|
|
567
|
+
maxQueuedBytes: 64 * 1024 * 1024
|
|
568
|
+
});
|
|
286
569
|
function getAcpMemoryArgs() {
|
|
287
570
|
if (cachedMemoryArgs) return cachedMemoryArgs;
|
|
288
571
|
const constrainedMemory = process.constrainedMemory;
|
|
@@ -334,6 +617,7 @@ function createStderrForwarder(opts) {
|
|
|
334
617
|
}
|
|
335
618
|
__name(createStderrForwarder, "createStderrForwarder");
|
|
336
619
|
function createSpawnChannelFactory(options = {}) {
|
|
620
|
+
if (options.pipeLimits) validateNdJsonStreamLimits(options.pipeLimits);
|
|
337
621
|
const processRegistry = options.processRegistry ?? new ProcessRegistry();
|
|
338
622
|
return async (workspaceCwd, childEnvOverrides) => {
|
|
339
623
|
const sourceEnv = options.sourceEnv ?? process.env;
|
|
@@ -396,7 +680,20 @@ function createSpawnChannelFactory(options = {}) {
|
|
|
396
680
|
}
|
|
397
681
|
const writable = Writable.toWeb(child.stdin);
|
|
398
682
|
const readable = Readable.toWeb(child.stdout);
|
|
399
|
-
const
|
|
683
|
+
const pipeHooks = options.pipeLimits ? {
|
|
684
|
+
...options.pipeHooks,
|
|
685
|
+
onTransportError: /* @__PURE__ */ __name((error) => {
|
|
686
|
+
void trackedChild.terminate().catch(() => {
|
|
687
|
+
});
|
|
688
|
+
options.pipeHooks?.onTransportError?.(error);
|
|
689
|
+
}, "onTransportError")
|
|
690
|
+
} : options.pipeHooks;
|
|
691
|
+
const stream = ndJsonStream(
|
|
692
|
+
writable,
|
|
693
|
+
readable,
|
|
694
|
+
pipeHooks,
|
|
695
|
+
options.pipeLimits
|
|
696
|
+
);
|
|
400
697
|
return {
|
|
401
698
|
stream,
|
|
402
699
|
kill: /* @__PURE__ */ __name(() => trackedChild.terminate(), "kill"),
|
|
@@ -433,6 +730,7 @@ __name(scrubChildEnv, "scrubChildEnv");
|
|
|
433
730
|
|
|
434
731
|
export {
|
|
435
732
|
ndJsonStream,
|
|
733
|
+
DAEMON_ACP_NDJSON_LIMITS,
|
|
436
734
|
getAcpMemoryArgs,
|
|
437
735
|
createStderrForwarder,
|
|
438
736
|
createSpawnChannelFactory,
|