@qwen-code/qwen-code 0.18.5 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/qwen-ignore.md +31 -15
- package/bundled/qc-helper/docs/configuration/settings.md +15 -14
- package/bundled/qc-helper/docs/extension/introduction.md +24 -6
- package/bundled/qc-helper/docs/features/mcp.md +9 -6
- package/bundled/qc-helper/docs/qwen-serve.md +1 -1
- package/chunks/{agent-2TEY55UD.js → agent-IPSDEZNB.js} +24 -22
- package/chunks/{agent-headless-SCUAXEEE.js → agent-headless-ZMTUWMZJ.js} +24 -22
- package/chunks/{anthropicContentGenerator-5S4OMMNL.js → anthropicContentGenerator-6MCH4X6S.js} +12 -11
- package/chunks/artifact-tool-PBX64YTT.js +675 -0
- package/chunks/{askUserQuestion-WHVYL2S2.js → askUserQuestion-5ZQOWSRT.js} +20 -7
- package/chunks/chunk-22IFUCVR.js +291 -0
- package/chunks/{chunk-XGU3ETVO.js → chunk-255L5QYW.js} +3 -3
- package/chunks/{chunk-26ZYKTYZ.js → chunk-2BIF2NVV.js} +2 -2
- package/chunks/{chunk-LTN3VYMZ.js → chunk-3UALQ56H.js} +1 -1
- package/chunks/{chunk-2O3NAOJG.js → chunk-57XRIZVC.js} +1 -1
- package/chunks/{chunk-MSJ2MXJ6.js → chunk-BGUDAULQ.js} +11 -290
- package/chunks/{chunk-FH4P6RQA.js → chunk-BNXANYLH.js} +1 -1
- package/chunks/{chunk-WE6TNQJU.js → chunk-C4K3FEQ2.js} +36 -0
- package/chunks/{chunk-G4BUMVEY.js → chunk-CGEGHF2C.js} +2 -217
- package/chunks/{chunk-2CNO5W47.js → chunk-CICUTYTF.js} +174 -5026
- package/chunks/chunk-EEEZIVFJ.js +908 -0
- package/chunks/chunk-EJYJYJZ2.js +3703 -0
- package/chunks/{chunk-ATLUHLZE.js → chunk-EW6C27XX.js} +1 -1
- package/chunks/{chunk-SIJKWK35.js → chunk-GAAALA2X.js} +6 -6
- package/chunks/{chunk-C6MI2ASN.js → chunk-GZCJS5WH.js} +2 -2
- package/chunks/{chunk-KGV3F6UF.js → chunk-HGNSRCRB.js} +1 -1
- package/chunks/{chunk-42HGOMED.js → chunk-JDV3VBPY.js} +216 -1
- package/chunks/{chunk-CX3SGIPK.js → chunk-JRVB4QUY.js} +2 -2
- package/chunks/{chunk-F5E6IKYN.js → chunk-KFR4QTV3.js} +557 -22
- package/chunks/{chunk-ID533GA3.js → chunk-OTBK43JR.js} +1 -1
- package/chunks/{chunk-GOMVJKBL.js → chunk-PLY4F7QW.js} +5 -3
- package/chunks/{chunk-VKILGMZQ.js → chunk-PO5LVPK3.js} +1 -1
- package/chunks/{chunk-AE6RQU6F.js → chunk-PRYMDRBV.js} +1 -1
- package/chunks/{chunk-GBN55AWZ.js → chunk-QKUAGMGE.js} +2 -2
- package/chunks/{chunk-KQIKOTQJ.js → chunk-RYLJU2DY.js} +60 -5
- package/chunks/{chunk-KZGQ3G3Q.js → chunk-S7ILEIB4.js} +82 -84
- package/chunks/{chunk-CTHZVIMD.js → chunk-T2VDEFUU.js} +2 -2
- package/chunks/{chunk-LF6BKGZT.js → chunk-TXVGVZYR.js} +3 -3
- package/chunks/{chunk-C7JA3XCX.js → chunk-VRIVIYRL.js} +5 -5
- package/chunks/{chunk-XU7BKR3B.js → chunk-XU5P23GN.js} +3 -3
- package/chunks/{chunk-VECKCOH6.js → chunk-YF3ORUIU.js} +6362 -4888
- package/chunks/{computer-use-OB3C5QG2.js → computer-use-YYK42DD5.js} +24 -22
- package/chunks/contextCommand-BO45MUAA.js +56 -0
- package/chunks/{cron-create-THNDTYXU.js → cron-create-DXKAP5KN.js} +4 -4
- package/chunks/{cron-delete-BS5H6TFJ.js → cron-delete-WGO4PZTF.js} +4 -4
- package/chunks/{cron-list-7OBVHT7K.js → cron-list-EY7D3ZUC.js} +4 -4
- package/chunks/{dist-GKRNVFBH.js → dist-ZBX7LPJZ.js} +2 -1
- package/chunks/{edit-GNCLIF67.js → edit-QERNJN7K.js} +24 -22
- package/chunks/{en-S3OQBISC.js → en-UTXMGXIR.js} +47 -0
- package/chunks/{enter-worktree-E7BNZOGT.js → enter-worktree-6ZKH5IL3.js} +24 -22
- package/chunks/{enterPlanMode-IA42A5EU.js → enterPlanMode-B2PBF4MA.js} +27 -23
- package/chunks/{exit-worktree-QJ2K74UT.js → exit-worktree-EOCMQO4I.js} +24 -22
- package/chunks/{exitPlanMode-UKKHBUYJ.js → exitPlanMode-WSRXCBRZ.js} +36 -28
- package/chunks/{geminiContentGenerator-ICSDM37U.js → geminiContentGenerator-NTR4LTKS.js} +4 -4
- package/chunks/{glob-IGD7LWYX.js → glob-IWDJQI2V.js} +26 -23
- package/chunks/{grep-IZM3IVND.js → grep-2DV5BXMH.js} +24 -22
- package/chunks/{keychain-token-storage-YHXIWXIB.js → keychain-token-storage-CSYMNRPP.js} +2 -2
- package/chunks/{loop-wakeup-SSBWZ64K.js → loop-wakeup-XVSDE7QR.js} +5 -5
- package/chunks/{ls-YPFUHZRQ.js → ls-LPY3ATQQ.js} +6 -6
- package/chunks/{lsp-FD6DNVAF.js → lsp-ZT3AAXIF.js} +2 -2
- package/chunks/{monitor-ALJNE3R4.js → monitor-6HBDS2RS.js} +24 -22
- package/chunks/{notebook-edit-7XRZX55T.js → notebook-edit-J5AY5BRY.js} +25 -23
- package/chunks/{openaiContentGenerator-FWKITDFJ.js → openaiContentGenerator-ENABCJDM.js} +12 -15
- package/chunks/{qwenContentGenerator-5RPGQZ63.js → qwenContentGenerator-ISW42U7C.js} +26 -24
- package/chunks/{qwenOAuth2-WZ54YZ4J.js → qwenOAuth2-K4AASPCV.js} +5 -4
- package/chunks/{read-file-4WN2DT5N.js → read-file-NRX2FSSQ.js} +9 -8
- package/chunks/{ripGrep-4ZKT6KBQ.js → ripGrep-WF5CKHR5.js} +24 -22
- package/chunks/{scheduler-O2E65VDK.js → scheduler-PNPG5WJ3.js} +73 -27
- package/chunks/{send-message-FWFTX62Q.js → send-message-447W6NH6.js} +24 -4
- package/chunks/{serve-3DM6CRGD.js → serve-ZBRCIIHW.js} +430 -70
- package/chunks/{shell-ARVZK6RF.js → shell-DLIL6MLU.js} +24 -22
- package/chunks/{skill-BFUBGA4I.js → skill-32TXHY4A.js} +11 -10
- package/chunks/{src-5YMCDSII.js → src-PDDLF5BB.js} +114 -67
- package/chunks/{syntheticOutput-JY5NEDTV.js → syntheticOutput-GQRDRLGR.js} +3 -3
- package/chunks/{task-create-IGILDV25.js → task-create-66DDSTVI.js} +6 -6
- package/chunks/{task-list-KBEJVAAG.js → task-list-GOPXRSHG.js} +5 -5
- package/chunks/{task-stop-WFTMQ6AC.js → task-stop-M7NKGFX2.js} +2 -2
- package/chunks/{task-update-UIVX7ZEV.js → task-update-M5TBHLZV.js} +6 -6
- package/chunks/{team-create-HRBV5ATK.js → team-create-EHLDSJGI.js} +28 -26
- package/chunks/{team-delete-LPOXDPVB.js → team-delete-DKKDS65W.js} +5 -5
- package/chunks/{todoWrite-R4RIJKOD.js → todoWrite-4VX7X44D.js} +4 -4
- package/chunks/{tool-search-67HI54YA.js → tool-search-FU7IZAOO.js} +9 -8
- package/chunks/{web-fetch-JU7SS6KE.js → web-fetch-YPP3V4FJ.js} +4 -4
- package/chunks/{workflow-W4SCLWLU.js → workflow-WUDNBCGX.js} +544 -92
- package/chunks/{write-file-TLNXC2NR.js → write-file-NVFPX6CH.js} +24 -22
- package/chunks/{zh-TW-3OKU7LDA.js → zh-TW-J2TTW67R.js} +47 -0
- package/chunks/{zh-QXLZV2PX.js → zh-YOXVTJU5.js} +47 -0
- package/cli.js +8018 -4955
- package/locales/en.js +68 -0
- package/locales/zh-TW.js +65 -0
- package/locales/zh.js +65 -0
- package/package.json +3 -2
- package/web-shell/assets/{arc-CRFN10gD.js → arc-pxOt9B72.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-IRlu1CpH.js → architectureDiagram-3BPJPVTR-B9XuYYOT.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-htIZ6iw8.js → blockDiagram-GPEHLZMM-5yK68iu4.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-A2GoRq3O.js → c4Diagram-AAUBKEIU-B1LY-qNI.js} +1 -1
- package/web-shell/assets/channel-Cx7egbSX.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-CdP2AC6u.js → chunk-2J33WTMH-DkgXg7cM.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DrA07nW2.js → chunk-4BX2VUAB-DdM45KFM.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-CFGnVU2f.js → chunk-55IACEB6-CmdsDjD4.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-BTMkq3Tk.js → chunk-727SXJPM-CQ4pJ5GH.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-C9sYg04Z.js → chunk-AQP2D5EJ-Dy6UWz37.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-Cag-cj6I.js → chunk-FMBD7UC4-CC8nFqap.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-CDSTFoR7.js → chunk-ND2GUHAM-CkmS7lx7.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-CN9Z6oOs.js → chunk-QZHKN3VN-DynyqleZ.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CwH_F8cH.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwH_F8cH.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-DuN9j8Du.js → cose-bilkent-S5V4N54A-DA0fzCsY.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-ByCWe45f.js → dagre-BM42HDAG-DHYXRqCo.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-eWyU_pKZ.js → diagram-2AECGRRQ-DWD6BcPs.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-0Bfu3Fq5.js → diagram-5GNKFQAL-CX9wnqVc.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-B6KBKkQP.js → diagram-KO2AKTUF-BpE8Kbt8.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-TToDmeA_.js → diagram-LMA3HP47-DLPcrP0C.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CQCkC2Yx.js → diagram-OG6HWLK6-CSUCBsCe.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-Cm9ls1iB.js → erDiagram-TEJ5UH35-d3Z0uMXS.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-Dyoz80Pv.js → flowDiagram-I6XJVG4X-C7vj5FX3.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-Cfut9yaU.js → ganttDiagram-6RSMTGT7-BV9UvDV_.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BCuJdlfD.js → gitGraphDiagram-PVQCEYII-CoWp0mW4.js} +1 -1
- package/web-shell/assets/index-CjTH6cLP.js +516 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CXKxF2VL.js → infoDiagram-5YYISTIA-DUswfJHA.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DE7HWSU8.js → ishikawaDiagram-YF4QCWOH-WidEKukx.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-D__YUfds.js → journeyDiagram-JHISSGLW-D7IRK3VN.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-D82R169M.js → kanban-definition-UN3LZRKU-CwFJ6Cja.js} +1 -1
- package/web-shell/assets/{linear-DpyMbKqT.js → linear-BQ8GvDRY.js} +1 -1
- package/web-shell/assets/{mermaid.core-D1KEFDhn.js → mermaid.core-CwF8A_xO.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BwVUFGFE.js → mindmap-definition-RKZ34NQL-TR1s0iZi.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-BO_qoEGx.js → pieDiagram-4H26LBE5-Cd91pMl9.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Cx0ZaWPo.js → quadrantDiagram-W4KKPZXB-BGxGDNMl.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BJPXejOA.js → requirementDiagram-4Y6WPE33-Cq3fWmYz.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-C1xeIL9i.js → sankeyDiagram-5OEKKPKP-ChLyGdq0.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CSYKQUjf.js → sequenceDiagram-3UESZ5HK-tazy79aB.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-d9hiHlAW.js → stateDiagram-AJRCARHV-dIYLUNSf.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-luL7KTiX.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-BhCBkq8k.js → timeline-definition-PNZ67QCA-BuENhrC2.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DPPFWp_y.js → vennDiagram-CIIHVFJN-DLtum9dF.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-CcOUIgXY.js → wardley-L42UT6IY-Bf7OSF3y.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-p7oR5X7r.js → wardleyDiagram-YWT4CUSO-slMw3OB3.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-Dfr7-SEy.js → xychartDiagram-2RQKCTM6-CdxOm8oC.js} +1 -1
- package/web-shell/index.html +1 -1
- package/chunks/chunk-77WXWU44.js +0 -26
- package/chunks/contextCommand-3327KUC4.js +0 -54
- package/web-shell/assets/channel-WwImfsc7.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CJKQYFeJ.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CJKQYFeJ.js +0 -1
- package/web-shell/assets/index-DaebdpHq.js +0 -516
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DgReoybQ.js +0 -1
|
@@ -55,7 +55,9 @@ import {
|
|
|
55
55
|
createIdleWorkspaceProvidersStatus,
|
|
56
56
|
createIdleWorkspaceSkillsStatus,
|
|
57
57
|
createLoadedSettingsAdapter,
|
|
58
|
+
formatAcpModelId,
|
|
58
59
|
formatMemoryUsage,
|
|
60
|
+
getAuthTypeFromEnv,
|
|
59
61
|
getCliVersion,
|
|
60
62
|
getDialogSettingKeys,
|
|
61
63
|
getGitVersion,
|
|
@@ -66,19 +68,22 @@ import {
|
|
|
66
68
|
isWorkspaceTrusted,
|
|
67
69
|
loadSettings,
|
|
68
70
|
mapDomainErrorToErrorKind,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
+
parseAcpBaseModelId,
|
|
72
|
+
reloadEnvironment,
|
|
73
|
+
resolveCliGenerationConfig,
|
|
74
|
+
sanitizeProviderBaseUrl
|
|
75
|
+
} from "./chunk-KFR4QTV3.js";
|
|
76
|
+
import {
|
|
77
|
+
SUPPORTED_LANGUAGES,
|
|
78
|
+
writeStderrLine,
|
|
79
|
+
writeStdoutLine
|
|
80
|
+
} from "./chunk-VRIVIYRL.js";
|
|
71
81
|
import {
|
|
72
82
|
ClientSideConnection,
|
|
73
83
|
PROTOCOL_VERSION,
|
|
74
84
|
RequestError,
|
|
75
85
|
ndJsonStream
|
|
76
86
|
} from "./chunk-UFC57OYT.js";
|
|
77
|
-
import {
|
|
78
|
-
SUPPORTED_LANGUAGES,
|
|
79
|
-
writeStderrLine,
|
|
80
|
-
writeStdoutLine
|
|
81
|
-
} from "./chunk-C7JA3XCX.js";
|
|
82
87
|
import {
|
|
83
88
|
ALL_PROVIDERS,
|
|
84
89
|
APPROVAL_MODES,
|
|
@@ -86,6 +91,7 @@ import {
|
|
|
86
91
|
BuiltinAgentRegistry,
|
|
87
92
|
Client,
|
|
88
93
|
ExtensionManager,
|
|
94
|
+
ModelsConfig,
|
|
89
95
|
SessionService,
|
|
90
96
|
ShellExecutionService,
|
|
91
97
|
StandardFileSystemService,
|
|
@@ -114,22 +120,22 @@ import {
|
|
|
114
120
|
resolveBundleDir,
|
|
115
121
|
shouldShowStep,
|
|
116
122
|
writeWorkspaceContextFile
|
|
117
|
-
} from "./chunk-
|
|
123
|
+
} from "./chunk-YF3ORUIU.js";
|
|
118
124
|
import "./chunk-K5PGHDBN.js";
|
|
119
|
-
import "./chunk-
|
|
120
|
-
import "./chunk-
|
|
121
|
-
import "./chunk-
|
|
125
|
+
import "./chunk-TXVGVZYR.js";
|
|
126
|
+
import "./chunk-XU5P23GN.js";
|
|
127
|
+
import "./chunk-2BIF2NVV.js";
|
|
128
|
+
import "./chunk-57XRIZVC.js";
|
|
129
|
+
import "./chunk-255L5QYW.js";
|
|
122
130
|
import "./chunk-2MPVVENX.js";
|
|
123
131
|
import "./chunk-ZTQ26VBE.js";
|
|
124
|
-
import "./chunk-
|
|
125
|
-
import "./chunk-LF6BKGZT.js";
|
|
126
|
-
import "./chunk-26ZYKTYZ.js";
|
|
132
|
+
import "./chunk-GZCJS5WH.js";
|
|
127
133
|
import "./chunk-MLZQVCF3.js";
|
|
128
134
|
import "./chunk-LD2XBG6Z.js";
|
|
129
|
-
import "./chunk-
|
|
130
|
-
import "./chunk-
|
|
131
|
-
import "./chunk-
|
|
132
|
-
import "./chunk-
|
|
135
|
+
import "./chunk-OTBK43JR.js";
|
|
136
|
+
import "./chunk-HGNSRCRB.js";
|
|
137
|
+
import "./chunk-EEEZIVFJ.js";
|
|
138
|
+
import "./chunk-PRYMDRBV.js";
|
|
133
139
|
import {
|
|
134
140
|
DAEMON_TRACEPARENT_META_KEY,
|
|
135
141
|
DAEMON_TRACESTATE_META_KEY,
|
|
@@ -156,19 +162,18 @@ import {
|
|
|
156
162
|
recordDaemonPromptQueueWait,
|
|
157
163
|
recordDaemonSessionLifecycle,
|
|
158
164
|
registerDaemonGaugeCallbacks,
|
|
159
|
-
require_safer,
|
|
160
165
|
resolveTelemetrySettings,
|
|
161
166
|
shutdownTelemetry,
|
|
162
167
|
withDaemonRequestSpan
|
|
163
|
-
} from "./chunk-
|
|
168
|
+
} from "./chunk-CICUTYTF.js";
|
|
164
169
|
import "./chunk-3PJXIDKI.js";
|
|
165
170
|
import "./chunk-UWCTAVOD.js";
|
|
166
171
|
import "./chunk-OFEVLU4C.js";
|
|
167
172
|
import "./chunk-OMX7CUOE.js";
|
|
168
|
-
import "./chunk-
|
|
169
|
-
import "./chunk-
|
|
170
|
-
import "./chunk-
|
|
171
|
-
import "./chunk-
|
|
173
|
+
import "./chunk-BNXANYLH.js";
|
|
174
|
+
import "./chunk-T2VDEFUU.js";
|
|
175
|
+
import "./chunk-PO5LVPK3.js";
|
|
176
|
+
import "./chunk-PLY4F7QW.js";
|
|
172
177
|
import {
|
|
173
178
|
QwenOAuth2Client,
|
|
174
179
|
QwenOAuthPollError,
|
|
@@ -177,15 +182,20 @@ import {
|
|
|
177
182
|
isDeviceAuthorizationSuccess,
|
|
178
183
|
isDeviceTokenPending,
|
|
179
184
|
isDeviceTokenSuccess
|
|
180
|
-
} from "./chunk-
|
|
181
|
-
import "./chunk-
|
|
185
|
+
} from "./chunk-BGUDAULQ.js";
|
|
186
|
+
import "./chunk-EW6C27XX.js";
|
|
187
|
+
import "./chunk-22IFUCVR.js";
|
|
182
188
|
import "./chunk-64WXLC72.js";
|
|
183
|
-
import "./chunk-
|
|
189
|
+
import "./chunk-3UALQ56H.js";
|
|
184
190
|
import {
|
|
185
191
|
detectRuntime,
|
|
186
|
-
redactProxyCredentials
|
|
187
|
-
|
|
188
|
-
|
|
192
|
+
redactProxyCredentials,
|
|
193
|
+
tokenLimit
|
|
194
|
+
} from "./chunk-JDV3VBPY.js";
|
|
195
|
+
import "./chunk-CGEGHF2C.js";
|
|
196
|
+
import {
|
|
197
|
+
require_safer
|
|
198
|
+
} from "./chunk-EJYJYJZ2.js";
|
|
189
199
|
import "./chunk-55ZMG67I.js";
|
|
190
200
|
import {
|
|
191
201
|
import_websocket_server
|
|
@@ -194,7 +204,7 @@ import "./chunk-5IFG2VC4.js";
|
|
|
194
204
|
import {
|
|
195
205
|
Storage,
|
|
196
206
|
updateSymlink
|
|
197
|
-
} from "./chunk-
|
|
207
|
+
} from "./chunk-C4K3FEQ2.js";
|
|
198
208
|
import "./chunk-ZERZSAZL.js";
|
|
199
209
|
import {
|
|
200
210
|
require_src
|
|
@@ -15458,7 +15468,7 @@ import * as path13 from "node:path";
|
|
|
15458
15468
|
init_esbuild_shims();
|
|
15459
15469
|
import { createHash, timingSafeEqual } from "node:crypto";
|
|
15460
15470
|
|
|
15461
|
-
// packages/cli/src/serve/
|
|
15471
|
+
// packages/cli/src/serve/loopback-binds.ts
|
|
15462
15472
|
init_esbuild_shims();
|
|
15463
15473
|
var LOOPBACK_BINDS = /* @__PURE__ */ new Set([
|
|
15464
15474
|
"127.0.0.1",
|
|
@@ -15642,7 +15652,7 @@ function createMutationGate(deps) {
|
|
|
15642
15652
|
}
|
|
15643
15653
|
__name(createMutationGate, "createMutationGate");
|
|
15644
15654
|
|
|
15645
|
-
// packages/cli/src/serve/auth/
|
|
15655
|
+
// packages/cli/src/serve/auth/device-flow.ts
|
|
15646
15656
|
init_esbuild_shims();
|
|
15647
15657
|
import { randomUUID } from "node:crypto";
|
|
15648
15658
|
var SANITIZE_FOR_STDERR_RE = new RegExp(
|
|
@@ -19083,6 +19093,14 @@ function createAcpSessionBridge(opts) {
|
|
|
19083
19093
|
transportClosed
|
|
19084
19094
|
]);
|
|
19085
19095
|
publishModelSwitched(entry, modelId, originatorClientId);
|
|
19096
|
+
broadcastWorkspaceEvent({
|
|
19097
|
+
type: "settings_changed",
|
|
19098
|
+
data: {
|
|
19099
|
+
key: "model.name",
|
|
19100
|
+
value: modelId
|
|
19101
|
+
},
|
|
19102
|
+
...originatorClientId ? { originatorClientId } : {}
|
|
19103
|
+
});
|
|
19086
19104
|
succeeded = true;
|
|
19087
19105
|
} catch (err) {
|
|
19088
19106
|
entry.events.publish({
|
|
@@ -20160,14 +20178,14 @@ function createAcpSessionBridge(opts) {
|
|
|
20160
20178
|
const branchDisplayName = typeof rawBranchName === "string" ? rawBranchName : result.newSessionId.slice(0, 8);
|
|
20161
20179
|
let restored;
|
|
20162
20180
|
try {
|
|
20163
|
-
restored = await restoreSession("
|
|
20181
|
+
restored = await restoreSession("load", {
|
|
20164
20182
|
sessionId: result.newSessionId,
|
|
20165
20183
|
workspaceCwd: boundWorkspace,
|
|
20166
20184
|
clientId: context?.clientId
|
|
20167
20185
|
});
|
|
20168
20186
|
} catch (restoreErr) {
|
|
20169
20187
|
writeStderrLine2(
|
|
20170
|
-
`qwen serve: branchSession
|
|
20188
|
+
`qwen serve: branchSession load failed for ${result.newSessionId}, attempting cleanup...`
|
|
20171
20189
|
);
|
|
20172
20190
|
try {
|
|
20173
20191
|
await ci.connection.extMethod(
|
|
@@ -20193,8 +20211,7 @@ function createAcpSessionBridge(opts) {
|
|
|
20193
20211
|
data: eventData,
|
|
20194
20212
|
...originatorClientId ? { originatorClientId } : {}
|
|
20195
20213
|
};
|
|
20196
|
-
|
|
20197
|
-
broadcastWorkspaceEvent(branchEnvelope, sessionId);
|
|
20214
|
+
newEntry?.events.publish(branchEnvelope);
|
|
20198
20215
|
return {
|
|
20199
20216
|
...restored,
|
|
20200
20217
|
displayName: branchDisplayName,
|
|
@@ -20536,6 +20553,14 @@ function createAcpSessionBridge(opts) {
|
|
|
20536
20553
|
transportClosed
|
|
20537
20554
|
]);
|
|
20538
20555
|
publishModelSwitched(entry, req.modelId, originatorClientId);
|
|
20556
|
+
broadcastWorkspaceEvent({
|
|
20557
|
+
type: "settings_changed",
|
|
20558
|
+
data: {
|
|
20559
|
+
key: "model.name",
|
|
20560
|
+
value: req.modelId
|
|
20561
|
+
},
|
|
20562
|
+
...originatorClientId ? { originatorClientId } : {}
|
|
20563
|
+
});
|
|
20539
20564
|
succeeded = true;
|
|
20540
20565
|
return result;
|
|
20541
20566
|
} finally {
|
|
@@ -20818,6 +20843,68 @@ function createAcpSessionBridge(opts) {
|
|
|
20818
20843
|
answer: response.answer ?? null
|
|
20819
20844
|
};
|
|
20820
20845
|
},
|
|
20846
|
+
async launchSessionForkAgent(sessionId, directive, context) {
|
|
20847
|
+
const entry = byId.get(sessionId);
|
|
20848
|
+
if (!entry) throw new SessionNotFoundError(sessionId);
|
|
20849
|
+
const info = channelInfoForEntry(entry);
|
|
20850
|
+
if (!info || info.isDying) throw new SessionNotFoundError(sessionId);
|
|
20851
|
+
resolveTrustedClientId(entry, context?.clientId);
|
|
20852
|
+
const trimmed = directive.trim();
|
|
20853
|
+
if (!trimmed) {
|
|
20854
|
+
throw new Error("Fork directive is required");
|
|
20855
|
+
}
|
|
20856
|
+
if (entry.pendingPromptCount > 0 || entry.promptActive) {
|
|
20857
|
+
throw new SessionBusyError(
|
|
20858
|
+
sessionId,
|
|
20859
|
+
"Cannot fork while a response or tool call is in progress"
|
|
20860
|
+
);
|
|
20861
|
+
}
|
|
20862
|
+
return entry.promptQueue.then(async () => {
|
|
20863
|
+
if (entry.pendingPromptCount > 0 || entry.promptActive) {
|
|
20864
|
+
throw new SessionBusyError(
|
|
20865
|
+
sessionId,
|
|
20866
|
+
"Cannot fork while a response or tool call is in progress"
|
|
20867
|
+
);
|
|
20868
|
+
}
|
|
20869
|
+
opts.onDiagnosticLine?.(
|
|
20870
|
+
`qwen serve: launchSessionForkAgent requested for session=${sessionId}`,
|
|
20871
|
+
"info"
|
|
20872
|
+
);
|
|
20873
|
+
let response;
|
|
20874
|
+
try {
|
|
20875
|
+
response = await Promise.race([
|
|
20876
|
+
withTimeout(
|
|
20877
|
+
entry.connection.extMethod(
|
|
20878
|
+
SERVE_CONTROL_EXT_METHODS.sessionForkAgent,
|
|
20879
|
+
{
|
|
20880
|
+
sessionId,
|
|
20881
|
+
directive: trimmed
|
|
20882
|
+
}
|
|
20883
|
+
),
|
|
20884
|
+
initTimeoutMs,
|
|
20885
|
+
SERVE_CONTROL_EXT_METHODS.sessionForkAgent
|
|
20886
|
+
),
|
|
20887
|
+
getTransportClosedReject(entry)
|
|
20888
|
+
]);
|
|
20889
|
+
} catch (error2) {
|
|
20890
|
+
opts.onDiagnosticLine?.(
|
|
20891
|
+
`qwen serve: launchSessionForkAgent failed for session=${sessionId}: ${error2 instanceof Error ? error2.message : String(error2)}`,
|
|
20892
|
+
"warn"
|
|
20893
|
+
);
|
|
20894
|
+
throw error2;
|
|
20895
|
+
}
|
|
20896
|
+
const result = {
|
|
20897
|
+
sessionId: entry.sessionId,
|
|
20898
|
+
description: response.description ?? trimmed.slice(0, 60),
|
|
20899
|
+
launched: response.launched === true
|
|
20900
|
+
};
|
|
20901
|
+
opts.onDiagnosticLine?.(
|
|
20902
|
+
`qwen serve: launchSessionForkAgent completed for session=${sessionId} launched=${result.launched}`,
|
|
20903
|
+
"info"
|
|
20904
|
+
);
|
|
20905
|
+
return result;
|
|
20906
|
+
});
|
|
20907
|
+
},
|
|
20821
20908
|
async executeShellCommand(sessionId, command, signal, context) {
|
|
20822
20909
|
opts.onDiagnosticLine?.(
|
|
20823
20910
|
`qwen serve: bridge executeShellCommand for session=${sessionId}`,
|
|
@@ -21261,7 +21348,7 @@ var createHttpAcpBridge = createAcpSessionBridge;
|
|
|
21261
21348
|
// packages/acp-bridge/src/bridgeFileSystem.ts
|
|
21262
21349
|
init_esbuild_shims();
|
|
21263
21350
|
|
|
21264
|
-
// packages/cli/src/serve/auth/
|
|
21351
|
+
// packages/cli/src/serve/auth/qwen-device-flow-provider.ts
|
|
21265
21352
|
init_esbuild_shims();
|
|
21266
21353
|
var QWEN_OAUTH_SCOPE = "openid profile email model.completion";
|
|
21267
21354
|
var STDERR_DETAIL_MAX = 2048;
|
|
@@ -21430,7 +21517,7 @@ function mapRfc8628OAuthCode(code) {
|
|
|
21430
21517
|
}
|
|
21431
21518
|
__name(mapRfc8628OAuthCode, "mapRfc8628OAuthCode");
|
|
21432
21519
|
|
|
21433
|
-
// packages/cli/src/serve/
|
|
21520
|
+
// packages/cli/src/serve/bridge-file-system-adapter.ts
|
|
21434
21521
|
init_esbuild_shims();
|
|
21435
21522
|
var ACP_WRITE_ROUTE = "ACP writeTextFile";
|
|
21436
21523
|
var ACP_READ_ROUTE = "ACP readTextFile";
|
|
@@ -21468,11 +21555,11 @@ function createBridgeFileSystemAdapter(factory) {
|
|
|
21468
21555
|
}
|
|
21469
21556
|
__name(createBridgeFileSystemAdapter, "createBridgeFileSystemAdapter");
|
|
21470
21557
|
|
|
21471
|
-
// packages/cli/src/serve/
|
|
21558
|
+
// packages/cli/src/serve/daemon-status-provider.ts
|
|
21472
21559
|
init_esbuild_shims();
|
|
21473
21560
|
import { promises as fs2 } from "node:fs";
|
|
21474
21561
|
|
|
21475
|
-
// packages/cli/src/serve/
|
|
21562
|
+
// packages/cli/src/serve/env-snapshot.ts
|
|
21476
21563
|
init_esbuild_shims();
|
|
21477
21564
|
import os2 from "node:os";
|
|
21478
21565
|
var SECRET_ENV_VARS = [
|
|
@@ -21603,7 +21690,7 @@ var ENV_SECRET_VARS = SECRET_ENV_VARS;
|
|
|
21603
21690
|
var ENV_NONSECRET_VARS = NONSECRET_ENV_VARS;
|
|
21604
21691
|
var ENV_PROXY_VARS = PROXY_VARS;
|
|
21605
21692
|
|
|
21606
|
-
// packages/cli/src/serve/
|
|
21693
|
+
// packages/cli/src/serve/daemon-status-provider.ts
|
|
21607
21694
|
var REQUIRED_NODE_MAJOR = 22;
|
|
21608
21695
|
function createDaemonStatusProvider() {
|
|
21609
21696
|
return {
|
|
@@ -21772,7 +21859,232 @@ async function safeCheck(kind, body) {
|
|
|
21772
21859
|
}
|
|
21773
21860
|
__name(safeCheck, "safeCheck");
|
|
21774
21861
|
|
|
21775
|
-
// packages/cli/src/serve/
|
|
21862
|
+
// packages/cli/src/serve/workspace-providers-status.ts
|
|
21863
|
+
init_esbuild_shims();
|
|
21864
|
+
function createWorkspaceProvidersStatusProvider(options = {}) {
|
|
21865
|
+
return async (workspaceCwd, acpChannelLive) => buildWorkspaceProvidersStatus(workspaceCwd, acpChannelLive, options);
|
|
21866
|
+
}
|
|
21867
|
+
__name(createWorkspaceProvidersStatusProvider, "createWorkspaceProvidersStatusProvider");
|
|
21868
|
+
function buildWorkspaceProvidersStatus(workspaceCwd, acpChannelLive, options) {
|
|
21869
|
+
try {
|
|
21870
|
+
const loaded = loadSettings(workspaceCwd);
|
|
21871
|
+
const settings = loaded.merged;
|
|
21872
|
+
const env = options.env ?? process.env;
|
|
21873
|
+
const selectedAuthType = settings.security?.auth?.selectedType ?? getAuthTypeFromEnv();
|
|
21874
|
+
const argv = {
|
|
21875
|
+
model: options.argv?.model,
|
|
21876
|
+
openaiApiKey: options.argv?.openaiApiKey,
|
|
21877
|
+
openaiBaseUrl: options.argv?.openaiBaseUrl,
|
|
21878
|
+
openaiLogging: options.argv?.openaiLogging,
|
|
21879
|
+
openaiLoggingDir: options.argv?.openaiLoggingDir
|
|
21880
|
+
};
|
|
21881
|
+
const resolvedCliConfig = resolveCliGenerationConfig({
|
|
21882
|
+
argv,
|
|
21883
|
+
settings,
|
|
21884
|
+
selectedAuthType,
|
|
21885
|
+
env
|
|
21886
|
+
});
|
|
21887
|
+
const modelsConfig = new ModelsConfig({
|
|
21888
|
+
initialAuthType: selectedAuthType,
|
|
21889
|
+
modelProvidersConfig: settings.modelProviders,
|
|
21890
|
+
generationConfig: resolvedCliConfig.generationConfig,
|
|
21891
|
+
generationConfigSources: resolvedCliConfig.sources
|
|
21892
|
+
});
|
|
21893
|
+
const currentAuth = selectedAuthType;
|
|
21894
|
+
const currentModelId = (resolvedCliConfig.model || modelsConfig.getModel() || "").trim();
|
|
21895
|
+
const hasCurrentModel = currentModelId.length > 0;
|
|
21896
|
+
const currentAcpModelId = hasCurrentModel && currentAuth ? formatAcpModelId(currentModelId, currentAuth) : currentModelId || void 0;
|
|
21897
|
+
const currentBaseUrl = resolvedCliConfig.sources["baseUrl"] ? resolvedCliConfig.baseUrl || void 0 : void 0;
|
|
21898
|
+
const fastModelId = typeof settings.fastModel === "string" && settings.fastModel.length > 0 ? settings.fastModel : void 0;
|
|
21899
|
+
const providers = /* @__PURE__ */ new Map();
|
|
21900
|
+
const explicitModelBaseUrls = buildExplicitModelBaseUrls(
|
|
21901
|
+
settings.modelProviders
|
|
21902
|
+
);
|
|
21903
|
+
for (const model of modelsConfig.getAllConfiguredModels()) {
|
|
21904
|
+
if (model.isRuntimeModel) continue;
|
|
21905
|
+
const authType = String(model.authType);
|
|
21906
|
+
let provider = providers.get(authType);
|
|
21907
|
+
if (!provider) {
|
|
21908
|
+
provider = {
|
|
21909
|
+
kind: "model_provider",
|
|
21910
|
+
status: "ok",
|
|
21911
|
+
authType,
|
|
21912
|
+
current: false,
|
|
21913
|
+
models: []
|
|
21914
|
+
};
|
|
21915
|
+
providers.set(authType, provider);
|
|
21916
|
+
}
|
|
21917
|
+
const effectiveModelId = model.id;
|
|
21918
|
+
const modelId = formatAcpModelId(effectiveModelId, model.authType);
|
|
21919
|
+
const isCurrent = currentAuth === model.authType && hasCurrentModel && matchesCurrentModel(currentModelId, effectiveModelId, modelId) && matchesCurrentBaseUrl(
|
|
21920
|
+
currentBaseUrl,
|
|
21921
|
+
model.baseUrl,
|
|
21922
|
+
model.baseUrl !== void 0 && explicitModelBaseUrls.has(
|
|
21923
|
+
modelBaseUrlKey(authType, effectiveModelId, model.baseUrl)
|
|
21924
|
+
)
|
|
21925
|
+
);
|
|
21926
|
+
const providerModel = {
|
|
21927
|
+
modelId,
|
|
21928
|
+
baseModelId: parseAcpBaseModelId(effectiveModelId),
|
|
21929
|
+
name: model.label,
|
|
21930
|
+
...model.description !== void 0 ? { description: model.description } : {},
|
|
21931
|
+
contextLimit: model.contextWindowSize ?? tokenLimit(effectiveModelId),
|
|
21932
|
+
...model.modalities !== void 0 ? { modalities: model.modalities } : {},
|
|
21933
|
+
...model.baseUrl !== void 0 ? { baseUrl: sanitizeProviderBaseUrl(model.baseUrl) } : {},
|
|
21934
|
+
...model.envKey !== void 0 ? { envKey: model.envKey } : {},
|
|
21935
|
+
isCurrent,
|
|
21936
|
+
isRuntime: false
|
|
21937
|
+
};
|
|
21938
|
+
provider.models.push(providerModel);
|
|
21939
|
+
if (isCurrent) provider.current = true;
|
|
21940
|
+
}
|
|
21941
|
+
const current = buildCurrent(
|
|
21942
|
+
currentAuth,
|
|
21943
|
+
currentAcpModelId,
|
|
21944
|
+
currentBaseUrl,
|
|
21945
|
+
fastModelId
|
|
21946
|
+
);
|
|
21947
|
+
return {
|
|
21948
|
+
v: STATUS_SCHEMA_VERSION,
|
|
21949
|
+
workspaceCwd,
|
|
21950
|
+
initialized: true,
|
|
21951
|
+
acpChannelLive,
|
|
21952
|
+
...current ? { current } : {},
|
|
21953
|
+
providers: [...providers.values()],
|
|
21954
|
+
...resolvedCliConfig.warnings.length > 0 ? {
|
|
21955
|
+
errors: resolvedCliConfig.warnings.map((warning) => ({
|
|
21956
|
+
kind: "providers",
|
|
21957
|
+
status: "warning",
|
|
21958
|
+
error: sanitizeProviderWarning(warning)
|
|
21959
|
+
}))
|
|
21960
|
+
} : {}
|
|
21961
|
+
};
|
|
21962
|
+
} catch (error2) {
|
|
21963
|
+
return {
|
|
21964
|
+
v: STATUS_SCHEMA_VERSION,
|
|
21965
|
+
workspaceCwd,
|
|
21966
|
+
initialized: false,
|
|
21967
|
+
acpChannelLive,
|
|
21968
|
+
providers: [],
|
|
21969
|
+
errors: [
|
|
21970
|
+
{
|
|
21971
|
+
kind: "providers",
|
|
21972
|
+
status: "error",
|
|
21973
|
+
error: sanitizeProviderWarning(
|
|
21974
|
+
error2 instanceof Error ? error2.message : String(error2)
|
|
21975
|
+
)
|
|
21976
|
+
}
|
|
21977
|
+
]
|
|
21978
|
+
};
|
|
21979
|
+
}
|
|
21980
|
+
}
|
|
21981
|
+
__name(buildWorkspaceProvidersStatus, "buildWorkspaceProvidersStatus");
|
|
21982
|
+
function matchesCurrentModel(currentModelId, baseModelId, acpModelId) {
|
|
21983
|
+
return currentModelId === baseModelId || currentModelId === acpModelId;
|
|
21984
|
+
}
|
|
21985
|
+
__name(matchesCurrentModel, "matchesCurrentModel");
|
|
21986
|
+
function matchesCurrentBaseUrl(currentBaseUrl, modelBaseUrl, modelHasExplicitBaseUrl) {
|
|
21987
|
+
if (!currentBaseUrl) return !modelHasExplicitBaseUrl;
|
|
21988
|
+
return currentBaseUrl === modelBaseUrl;
|
|
21989
|
+
}
|
|
21990
|
+
__name(matchesCurrentBaseUrl, "matchesCurrentBaseUrl");
|
|
21991
|
+
function buildExplicitModelBaseUrls(modelProviders) {
|
|
21992
|
+
const baseUrls = /* @__PURE__ */ new Set();
|
|
21993
|
+
if (!modelProviders) return baseUrls;
|
|
21994
|
+
for (const [authType, providerConfig] of Object.entries(modelProviders)) {
|
|
21995
|
+
const models = readProviderModels(providerConfig);
|
|
21996
|
+
for (const model of models) {
|
|
21997
|
+
if (typeof model.id === "string" && typeof model.baseUrl === "string" && model.baseUrl.length > 0) {
|
|
21998
|
+
baseUrls.add(modelBaseUrlKey(authType, model.id, model.baseUrl));
|
|
21999
|
+
}
|
|
22000
|
+
}
|
|
22001
|
+
}
|
|
22002
|
+
return baseUrls;
|
|
22003
|
+
}
|
|
22004
|
+
__name(buildExplicitModelBaseUrls, "buildExplicitModelBaseUrls");
|
|
22005
|
+
function readProviderModels(providerConfig) {
|
|
22006
|
+
if (Array.isArray(providerConfig)) {
|
|
22007
|
+
return providerConfig.filter(isProviderModelBaseUrlConfig);
|
|
22008
|
+
}
|
|
22009
|
+
if (typeof providerConfig !== "object" || providerConfig === null) {
|
|
22010
|
+
return [];
|
|
22011
|
+
}
|
|
22012
|
+
const { models } = providerConfig;
|
|
22013
|
+
return Array.isArray(models) ? models.filter(isProviderModelBaseUrlConfig) : [];
|
|
22014
|
+
}
|
|
22015
|
+
__name(readProviderModels, "readProviderModels");
|
|
22016
|
+
function isProviderModelBaseUrlConfig(value) {
|
|
22017
|
+
return typeof value === "object" && value !== null;
|
|
22018
|
+
}
|
|
22019
|
+
__name(isProviderModelBaseUrlConfig, "isProviderModelBaseUrlConfig");
|
|
22020
|
+
function modelBaseUrlKey(authType, modelId, baseUrl) {
|
|
22021
|
+
return `${authType}\0${modelId}\0${baseUrl}`;
|
|
22022
|
+
}
|
|
22023
|
+
__name(modelBaseUrlKey, "modelBaseUrlKey");
|
|
22024
|
+
var URL_LIKE_PATTERN = /\b[A-Za-z][A-Za-z\d+.-]*:\/\/[^\s'"`<>]+/g;
|
|
22025
|
+
var URL_START_PATTERN = /\b[A-Za-z][A-Za-z\d+.-]*:\/\//g;
|
|
22026
|
+
function sanitizeProviderWarning(warning) {
|
|
22027
|
+
let result = "";
|
|
22028
|
+
let index = 0;
|
|
22029
|
+
let next = findNextUrlStart(warning, index);
|
|
22030
|
+
while (next) {
|
|
22031
|
+
result += warning.slice(index, next.index);
|
|
22032
|
+
const segmentEnd = findUrlSegmentEnd(warning, next.index, next.marker);
|
|
22033
|
+
const segment = warning.slice(next.index, segmentEnd);
|
|
22034
|
+
result += sanitizeProviderWarningSegment(segment, next.marker.length);
|
|
22035
|
+
index = segmentEnd;
|
|
22036
|
+
next = findNextUrlStart(warning, index);
|
|
22037
|
+
}
|
|
22038
|
+
return result + warning.slice(index);
|
|
22039
|
+
}
|
|
22040
|
+
__name(sanitizeProviderWarning, "sanitizeProviderWarning");
|
|
22041
|
+
function findNextUrlStart(value, from) {
|
|
22042
|
+
URL_START_PATTERN.lastIndex = from;
|
|
22043
|
+
const match = URL_START_PATTERN.exec(value);
|
|
22044
|
+
return match ? { index: match.index, marker: match[0] } : void 0;
|
|
22045
|
+
}
|
|
22046
|
+
__name(findNextUrlStart, "findNextUrlStart");
|
|
22047
|
+
function findUrlSegmentEnd(value, start, marker) {
|
|
22048
|
+
const afterMarker = start + marker.length;
|
|
22049
|
+
const carriageReturn = value.indexOf("\r", afterMarker);
|
|
22050
|
+
const lineFeed = value.indexOf("\n", afterMarker);
|
|
22051
|
+
let lineEnd = value.length;
|
|
22052
|
+
if (carriageReturn !== -1) lineEnd = Math.min(lineEnd, carriageReturn);
|
|
22053
|
+
if (lineFeed !== -1) lineEnd = Math.min(lineEnd, lineFeed);
|
|
22054
|
+
const nextUrl = findNextUrlStart(value, afterMarker);
|
|
22055
|
+
return Math.min(lineEnd, nextUrl?.index ?? value.length);
|
|
22056
|
+
}
|
|
22057
|
+
__name(findUrlSegmentEnd, "findUrlSegmentEnd");
|
|
22058
|
+
function sanitizeProviderWarningSegment(segment, markerLength) {
|
|
22059
|
+
const at = segment.indexOf("@", markerLength);
|
|
22060
|
+
if (at !== -1 && hasCredentialPrefix(segment, markerLength, at) && segment[at + 1] !== void 0 && /[A-Za-z0-9.[\]-]/.test(segment[at + 1])) {
|
|
22061
|
+
return `${segment.slice(0, markerLength)}${segment.slice(at + 1)}`;
|
|
22062
|
+
}
|
|
22063
|
+
return segment.replace(
|
|
22064
|
+
URL_LIKE_PATTERN,
|
|
22065
|
+
(url) => sanitizeProviderBaseUrl(url)
|
|
22066
|
+
);
|
|
22067
|
+
}
|
|
22068
|
+
__name(sanitizeProviderWarningSegment, "sanitizeProviderWarningSegment");
|
|
22069
|
+
function hasCredentialPrefix(segment, markerLength, at) {
|
|
22070
|
+
const colon = segment.indexOf(":", markerLength);
|
|
22071
|
+
if (colon === -1 || colon > at) return false;
|
|
22072
|
+
const username = segment.slice(markerLength, colon);
|
|
22073
|
+
return !/[/?#\s'"`<>]/.test(username);
|
|
22074
|
+
}
|
|
22075
|
+
__name(hasCredentialPrefix, "hasCredentialPrefix");
|
|
22076
|
+
function buildCurrent(authType, modelId, baseUrl, fastModelId) {
|
|
22077
|
+
if (!authType && !modelId && !baseUrl && !fastModelId) return void 0;
|
|
22078
|
+
return {
|
|
22079
|
+
...authType ? { authType: String(authType) } : {},
|
|
22080
|
+
...modelId ? { modelId } : {},
|
|
22081
|
+
...baseUrl ? { baseUrl: sanitizeProviderBaseUrl(baseUrl) } : {},
|
|
22082
|
+
...fastModelId ? { fastModelId } : {}
|
|
22083
|
+
};
|
|
22084
|
+
}
|
|
22085
|
+
__name(buildCurrent, "buildCurrent");
|
|
22086
|
+
|
|
22087
|
+
// packages/cli/src/serve/debug-mode.ts
|
|
21776
22088
|
init_esbuild_shims();
|
|
21777
22089
|
function isServeDebugMode() {
|
|
21778
22090
|
const value = process.env["QWEN_SERVE_DEBUG"];
|
|
@@ -21781,11 +22093,11 @@ function isServeDebugMode() {
|
|
|
21781
22093
|
}
|
|
21782
22094
|
__name(isServeDebugMode, "isServeDebugMode");
|
|
21783
22095
|
|
|
21784
|
-
// packages/cli/src/serve/
|
|
22096
|
+
// packages/cli/src/serve/acp-http/index.ts
|
|
21785
22097
|
init_esbuild_shims();
|
|
21786
22098
|
import { createHash as createHash4, timingSafeEqual as timingSafeEqual2 } from "node:crypto";
|
|
21787
22099
|
|
|
21788
|
-
// packages/cli/src/serve/
|
|
22100
|
+
// packages/cli/src/serve/acp-http/dispatch.ts
|
|
21789
22101
|
init_esbuild_shims();
|
|
21790
22102
|
import path8 from "node:path";
|
|
21791
22103
|
|
|
@@ -22270,7 +22582,7 @@ function createAuditPublisher(deps) {
|
|
|
22270
22582
|
}
|
|
22271
22583
|
__name(createAuditPublisher, "createAuditPublisher");
|
|
22272
22584
|
|
|
22273
|
-
// packages/cli/src/serve/fs/
|
|
22585
|
+
// packages/cli/src/serve/fs/workspace-file-system.ts
|
|
22274
22586
|
init_esbuild_shims();
|
|
22275
22587
|
import { createHash as createHash3, randomBytes } from "node:crypto";
|
|
22276
22588
|
import { promises as fsp2 } from "node:fs";
|
|
@@ -22281,6 +22593,7 @@ function createWorkspaceFileSystemFactory(deps) {
|
|
|
22281
22593
|
projectRoot: boundWorkspace,
|
|
22282
22594
|
useGitignore: true,
|
|
22283
22595
|
useQwenignore: true,
|
|
22596
|
+
...deps.customIgnoreFiles !== void 0 ? { customIgnoreFiles: deps.customIgnoreFiles } : {},
|
|
22284
22597
|
ignoreDirs: []
|
|
22285
22598
|
});
|
|
22286
22599
|
Object.freeze(ignore);
|
|
@@ -22355,6 +22668,12 @@ var WorkspaceFileSystemImpl = class {
|
|
|
22355
22668
|
`line must be a positive integer, got ${opts.line}`
|
|
22356
22669
|
);
|
|
22357
22670
|
}
|
|
22671
|
+
if (opts.limit !== void 0 && (!Number.isSafeInteger(opts.limit) || opts.limit < 1)) {
|
|
22672
|
+
throw new FsError(
|
|
22673
|
+
"parse_error",
|
|
22674
|
+
`limit must be a positive integer, got ${opts.limit}`
|
|
22675
|
+
);
|
|
22676
|
+
}
|
|
22358
22677
|
const snapshot = await readTextSnapshotFromResolvedFile(p, opts);
|
|
22359
22678
|
const ignoreVerdict = shouldIgnore(
|
|
22360
22679
|
p,
|
|
@@ -23541,7 +23860,7 @@ function buildWriteMeta(opts) {
|
|
|
23541
23860
|
}
|
|
23542
23861
|
__name(buildWriteMeta, "buildWriteMeta");
|
|
23543
23862
|
|
|
23544
|
-
// packages/cli/src/serve/
|
|
23863
|
+
// packages/cli/src/serve/workspace-memory.ts
|
|
23545
23864
|
init_esbuild_shims();
|
|
23546
23865
|
import { promises as fs3 } from "node:fs";
|
|
23547
23866
|
import * as path7 from "node:path";
|
|
@@ -23783,14 +24102,14 @@ function isEnoent(err) {
|
|
|
23783
24102
|
}
|
|
23784
24103
|
__name(isEnoent, "isEnoent");
|
|
23785
24104
|
|
|
23786
|
-
// packages/cli/src/serve/
|
|
24105
|
+
// packages/cli/src/serve/workspace-agents.ts
|
|
23787
24106
|
init_esbuild_shims();
|
|
23788
24107
|
import { promises as fs4 } from "node:fs";
|
|
23789
24108
|
|
|
23790
|
-
// packages/cli/src/serve/
|
|
24109
|
+
// packages/cli/src/serve/acp-session-bridge.ts
|
|
23791
24110
|
init_esbuild_shims();
|
|
23792
24111
|
|
|
23793
|
-
// packages/cli/src/serve/
|
|
24112
|
+
// packages/cli/src/serve/workspace-agents.ts
|
|
23794
24113
|
var AGENT_TYPE_PATTERN = /^[\p{L}\p{N}_-]+$/u;
|
|
23795
24114
|
var AGENT_TYPE_MAX_LENGTH = 64;
|
|
23796
24115
|
var AGENT_TYPE_MIN_LENGTH = 2;
|
|
@@ -24655,7 +24974,7 @@ function createDaemonSubagentManager(boundWorkspace) {
|
|
|
24655
24974
|
}
|
|
24656
24975
|
__name(createDaemonSubagentManager, "createDaemonSubagentManager");
|
|
24657
24976
|
|
|
24658
|
-
// packages/cli/src/serve/
|
|
24977
|
+
// packages/cli/src/serve/acp-http/json-rpc.ts
|
|
24659
24978
|
init_esbuild_shims();
|
|
24660
24979
|
var QWEN_METHOD_NS = "_qwen/";
|
|
24661
24980
|
var QWEN_META_KEY = "qwen";
|
|
@@ -24735,7 +25054,7 @@ function parseInbound(raw) {
|
|
|
24735
25054
|
}
|
|
24736
25055
|
__name(parseInbound, "parseInbound");
|
|
24737
25056
|
|
|
24738
|
-
// packages/cli/src/serve/
|
|
25057
|
+
// packages/cli/src/serve/acp-http/dispatch.ts
|
|
24739
25058
|
function errMsg(err) {
|
|
24740
25059
|
return err instanceof Error ? err.message : String(err);
|
|
24741
25060
|
}
|
|
@@ -26904,7 +27223,7 @@ var AcpDispatcher = class {
|
|
|
26904
27223
|
}
|
|
26905
27224
|
};
|
|
26906
27225
|
|
|
26907
|
-
// packages/cli/src/serve/
|
|
27226
|
+
// packages/cli/src/serve/acp-http/connection-registry.ts
|
|
26908
27227
|
init_esbuild_shims();
|
|
26909
27228
|
import { randomUUID as randomUUID4 } from "node:crypto";
|
|
26910
27229
|
var MAX_BUFFERED_FRAMES = 256;
|
|
@@ -27253,7 +27572,7 @@ function sumBy(values, select) {
|
|
|
27253
27572
|
}
|
|
27254
27573
|
__name(sumBy, "sumBy");
|
|
27255
27574
|
|
|
27256
|
-
// packages/cli/src/serve/
|
|
27575
|
+
// packages/cli/src/serve/acp-http/sse-stream.ts
|
|
27257
27576
|
init_esbuild_shims();
|
|
27258
27577
|
var SseStream = class {
|
|
27259
27578
|
constructor(res, onClose, onHeartbeat) {
|
|
@@ -27372,7 +27691,7 @@ var SseStream = class {
|
|
|
27372
27691
|
}
|
|
27373
27692
|
};
|
|
27374
27693
|
|
|
27375
|
-
// packages/cli/src/serve/
|
|
27694
|
+
// packages/cli/src/serve/acp-http/ws-stream.ts
|
|
27376
27695
|
init_esbuild_shims();
|
|
27377
27696
|
var WsStream = class {
|
|
27378
27697
|
constructor(ws, onClose, onHeartbeat) {
|
|
@@ -27460,7 +27779,7 @@ var WsStream = class {
|
|
|
27460
27779
|
}
|
|
27461
27780
|
};
|
|
27462
27781
|
|
|
27463
|
-
// packages/cli/src/serve/
|
|
27782
|
+
// packages/cli/src/serve/acp-http/index.ts
|
|
27464
27783
|
var ACP_CONNECTION_HEADER = "acp-connection-id";
|
|
27465
27784
|
var ACP_SESSION_HEADER = "acp-session-id";
|
|
27466
27785
|
var CONN_GRACE_MS = 1e4;
|
|
@@ -28006,7 +28325,7 @@ function isLoopbackReq(req) {
|
|
|
28006
28325
|
}
|
|
28007
28326
|
__name(isLoopbackReq, "isLoopbackReq");
|
|
28008
28327
|
|
|
28009
|
-
// packages/cli/src/serve/
|
|
28328
|
+
// packages/cli/src/serve/daemon-status.ts
|
|
28010
28329
|
init_esbuild_shims();
|
|
28011
28330
|
var DEFAULT_LISTENER_MAX_CONNECTIONS = 256;
|
|
28012
28331
|
var SECTION_TIMEOUT_MS = 1e3;
|
|
@@ -29345,7 +29664,7 @@ function getDemoHtml(_port) {
|
|
|
29345
29664
|
}
|
|
29346
29665
|
__name(getDemoHtml, "getDemoHtml");
|
|
29347
29666
|
|
|
29348
|
-
// packages/cli/src/serve/
|
|
29667
|
+
// packages/cli/src/serve/web-shell-static.ts
|
|
29349
29668
|
init_esbuild_shims();
|
|
29350
29669
|
var import_express = __toESM(require_express2(), 1);
|
|
29351
29670
|
import { existsSync } from "node:fs";
|
|
@@ -29449,7 +29768,7 @@ function mountWebShellSpaFallback(app, webShellDir) {
|
|
|
29449
29768
|
}
|
|
29450
29769
|
__name(mountWebShellSpaFallback, "mountWebShellSpaFallback");
|
|
29451
29770
|
|
|
29452
|
-
// packages/cli/src/serve/routes/
|
|
29771
|
+
// packages/cli/src/serve/routes/workspace-file-read.ts
|
|
29453
29772
|
init_esbuild_shims();
|
|
29454
29773
|
import * as path10 from "node:path";
|
|
29455
29774
|
var MAX_LIST_ENTRIES = 2e3;
|
|
@@ -29796,7 +30115,7 @@ function registerWorkspaceFileReadRoutes(app, deps) {
|
|
|
29796
30115
|
}
|
|
29797
30116
|
__name(registerWorkspaceFileReadRoutes, "registerWorkspaceFileReadRoutes");
|
|
29798
30117
|
|
|
29799
|
-
// packages/cli/src/serve/routes/
|
|
30118
|
+
// packages/cli/src/serve/routes/workspace-file-write.ts
|
|
29800
30119
|
init_esbuild_shims();
|
|
29801
30120
|
function getFsFactory2(req, res) {
|
|
29802
30121
|
const factory = req.app.locals.fsFactory;
|
|
@@ -30059,6 +30378,7 @@ function createDaemonWorkspaceService(deps) {
|
|
|
30059
30378
|
boundWorkspace,
|
|
30060
30379
|
contextFilename,
|
|
30061
30380
|
statusProvider,
|
|
30381
|
+
workspaceProvidersStatusProvider,
|
|
30062
30382
|
isChannelLive,
|
|
30063
30383
|
persistDisabledTools,
|
|
30064
30384
|
queryWorkspaceStatus,
|
|
@@ -30081,6 +30401,12 @@ function createDaemonWorkspaceService(deps) {
|
|
|
30081
30401
|
);
|
|
30082
30402
|
},
|
|
30083
30403
|
async getWorkspaceProvidersStatus(_ctx) {
|
|
30404
|
+
if (workspaceProvidersStatusProvider) {
|
|
30405
|
+
return workspaceProvidersStatusProvider(
|
|
30406
|
+
boundWorkspace,
|
|
30407
|
+
isChannelLive?.() ?? false
|
|
30408
|
+
);
|
|
30409
|
+
}
|
|
30084
30410
|
return queryWorkspaceStatus(
|
|
30085
30411
|
SERVE_STATUS_EXT_METHODS.workspaceProviders,
|
|
30086
30412
|
() => createIdleWorkspaceProvidersStatus(boundWorkspace)
|
|
@@ -30454,7 +30780,7 @@ function createDaemonWorkspaceService(deps) {
|
|
|
30454
30780
|
}
|
|
30455
30781
|
__name(createDaemonWorkspaceService, "createDaemonWorkspaceService");
|
|
30456
30782
|
|
|
30457
|
-
// packages/cli/src/serve/routes/
|
|
30783
|
+
// packages/cli/src/serve/routes/workspace-settings.ts
|
|
30458
30784
|
init_esbuild_shims();
|
|
30459
30785
|
var TUI_ONLY_SETTINGS = /* @__PURE__ */ new Set([
|
|
30460
30786
|
"general.vimMode",
|
|
@@ -30679,7 +31005,7 @@ function registerWorkspaceSettingsRoutes(app, deps) {
|
|
|
30679
31005
|
}
|
|
30680
31006
|
__name(registerWorkspaceSettingsRoutes, "registerWorkspaceSettingsRoutes");
|
|
30681
31007
|
|
|
30682
|
-
// packages/cli/src/serve/routes/
|
|
31008
|
+
// packages/cli/src/serve/routes/a2ui-action.ts
|
|
30683
31009
|
init_esbuild_shims();
|
|
30684
31010
|
import * as fsp3 from "node:fs/promises";
|
|
30685
31011
|
import * as path12 from "node:path";
|
|
@@ -30816,7 +31142,7 @@ function registerA2uiActionRoutes(app, opts) {
|
|
|
30816
31142
|
}
|
|
30817
31143
|
__name(registerA2uiActionRoutes, "registerA2uiActionRoutes");
|
|
30818
31144
|
|
|
30819
|
-
// packages/cli/src/serve/
|
|
31145
|
+
// packages/cli/src/serve/rate-limit.ts
|
|
30820
31146
|
init_esbuild_shims();
|
|
30821
31147
|
var MAX_BUCKETS = 1e4;
|
|
30822
31148
|
var GC_REQUEST_INTERVAL = 1e3;
|
|
@@ -31073,7 +31399,8 @@ function resolveBridgeFsFactory(input) {
|
|
|
31073
31399
|
return createWorkspaceFileSystemFactory({
|
|
31074
31400
|
boundWorkspace: input.boundWorkspace,
|
|
31075
31401
|
trusted: input.trusted,
|
|
31076
|
-
emit: input.emit ?? createDefaultFsAuditEmit()
|
|
31402
|
+
emit: input.emit ?? createDefaultFsAuditEmit(),
|
|
31403
|
+
...input.customIgnoreFiles !== void 0 ? { customIgnoreFiles: input.customIgnoreFiles } : {}
|
|
31077
31404
|
});
|
|
31078
31405
|
}
|
|
31079
31406
|
__name(resolveBridgeFsFactory, "resolveBridgeFsFactory");
|
|
@@ -31673,6 +32000,7 @@ function createServeApp(opts, getPort = () => opts.port, deps = {}) {
|
|
|
31673
32000
|
boundWorkspace,
|
|
31674
32001
|
contextFilename: deps.contextFilename ?? "QWEN.md",
|
|
31675
32002
|
statusProvider: createDaemonStatusProvider(),
|
|
32003
|
+
workspaceProvidersStatusProvider: createWorkspaceProvidersStatusProvider(),
|
|
31676
32004
|
isChannelLive: /* @__PURE__ */ __name(() => bridge.isChannelLive(), "isChannelLive"),
|
|
31677
32005
|
persistDisabledTools: deps.persistDisabledTools ?? (async () => {
|
|
31678
32006
|
throw new Error(
|
|
@@ -33022,6 +33350,34 @@ function createServeApp(opts, getPort = () => opts.port, deps = {}) {
|
|
|
33022
33350
|
});
|
|
33023
33351
|
}
|
|
33024
33352
|
});
|
|
33353
|
+
app.post("/session/:id/fork", mutate(), async (req, res) => {
|
|
33354
|
+
const sessionId = requireSessionId(req, res);
|
|
33355
|
+
if (sessionId === null) return;
|
|
33356
|
+
const body = safeBody(req);
|
|
33357
|
+
const directive = body["directive"];
|
|
33358
|
+
if (typeof directive !== "string" || directive.trim().length === 0) {
|
|
33359
|
+
res.status(400).json({
|
|
33360
|
+
error: "`directive` is required and must be a non-empty string",
|
|
33361
|
+
code: "missing_directive"
|
|
33362
|
+
});
|
|
33363
|
+
return;
|
|
33364
|
+
}
|
|
33365
|
+
const clientId = parseClientIdHeader(req, res);
|
|
33366
|
+
if (clientId === null) return;
|
|
33367
|
+
try {
|
|
33368
|
+
const result = await bridge.launchSessionForkAgent(
|
|
33369
|
+
sessionId,
|
|
33370
|
+
directive,
|
|
33371
|
+
clientId !== void 0 ? { clientId } : void 0
|
|
33372
|
+
);
|
|
33373
|
+
res.status(202).json(result);
|
|
33374
|
+
} catch (err) {
|
|
33375
|
+
sendBridgeError(res, err, {
|
|
33376
|
+
route: "POST /session/:id/fork",
|
|
33377
|
+
sessionId
|
|
33378
|
+
});
|
|
33379
|
+
}
|
|
33380
|
+
});
|
|
33025
33381
|
app.get("/session/:id/context", async (req, res) => {
|
|
33026
33382
|
const sessionId = requireSessionId(req, res);
|
|
33027
33383
|
if (sessionId === null) return;
|
|
@@ -34966,12 +35322,12 @@ function errorPayload(err) {
|
|
|
34966
35322
|
}
|
|
34967
35323
|
__name(errorPayload, "errorPayload");
|
|
34968
35324
|
|
|
34969
|
-
// packages/cli/src/serve/
|
|
35325
|
+
// packages/cli/src/serve/run-qwen-serve.ts
|
|
34970
35326
|
init_esbuild_shims();
|
|
34971
35327
|
import * as fs6 from "node:fs";
|
|
34972
35328
|
import * as path14 from "node:path";
|
|
34973
35329
|
|
|
34974
|
-
// packages/cli/src/serve/
|
|
35330
|
+
// packages/cli/src/serve/permission-audit.ts
|
|
34975
35331
|
init_esbuild_shims();
|
|
34976
35332
|
var DEFAULT_PERMISSION_AUDIT_RING_SIZE = 512;
|
|
34977
35333
|
function takeLast(arr, limit, methodName) {
|
|
@@ -35088,7 +35444,7 @@ function createPermissionAuditPublisher(deps) {
|
|
|
35088
35444
|
}
|
|
35089
35445
|
__name(createPermissionAuditPublisher, "createPermissionAuditPublisher");
|
|
35090
35446
|
|
|
35091
|
-
// packages/cli/src/serve/
|
|
35447
|
+
// packages/cli/src/serve/daemon-logger.ts
|
|
35092
35448
|
init_esbuild_shims();
|
|
35093
35449
|
import * as nodeFs from "node:fs";
|
|
35094
35450
|
import * as nodePath from "node:path";
|
|
@@ -35228,7 +35584,7 @@ function initDaemonLogger(opts) {
|
|
|
35228
35584
|
}
|
|
35229
35585
|
__name(initDaemonLogger, "initDaemonLogger");
|
|
35230
35586
|
|
|
35231
|
-
// packages/cli/src/serve/
|
|
35587
|
+
// packages/cli/src/serve/run-qwen-serve.ts
|
|
35232
35588
|
var QWEN_SERVER_TOKEN_ENV = "QWEN_SERVER_TOKEN";
|
|
35233
35589
|
var QWEN_SERVE_PROMPT_DEADLINE_MS_ENV = "QWEN_SERVE_PROMPT_DEADLINE_MS";
|
|
35234
35590
|
var QWEN_SERVE_WRITER_IDLE_TIMEOUT_MS_ENV = "QWEN_SERVE_WRITER_IDLE_TIMEOUT_MS";
|
|
@@ -35612,11 +35968,13 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
35612
35968
|
ring: permissionAuditRing
|
|
35613
35969
|
});
|
|
35614
35970
|
const trustedWorkspace = deps.trustedWorkspace ?? true;
|
|
35971
|
+
const customIgnoreFiles = bootSettings?.merged.context?.fileFiltering?.customIgnoreFiles;
|
|
35615
35972
|
const fsFactory = resolveBridgeFsFactory({
|
|
35616
35973
|
boundWorkspace,
|
|
35617
35974
|
injected: deps.fsFactory,
|
|
35618
35975
|
trusted: trustedWorkspace,
|
|
35619
|
-
emit: deps.fsAuditEmit
|
|
35976
|
+
emit: deps.fsAuditEmit,
|
|
35977
|
+
...customIgnoreFiles !== void 0 ? { customIgnoreFiles } : {}
|
|
35620
35978
|
});
|
|
35621
35979
|
const diagnosticSink = /* @__PURE__ */ __name((line, level) => daemonLog.raw(line, level), "diagnosticSink");
|
|
35622
35980
|
const channelFactory = createSpawnChannelFactory({
|
|
@@ -35637,6 +35995,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
35637
35995
|
);
|
|
35638
35996
|
}), "persistDisabledToolsFn");
|
|
35639
35997
|
const statusProvider = createDaemonStatusProvider();
|
|
35998
|
+
const workspaceProvidersStatusProvider = createWorkspaceProvidersStatusProvider();
|
|
35640
35999
|
const bridge = deps.bridge ?? createAcpSessionBridge({
|
|
35641
36000
|
maxSessions: opts.maxSessions,
|
|
35642
36001
|
...opts.maxPendingPromptsPerSession !== void 0 ? { maxPendingPromptsPerSession: opts.maxPendingPromptsPerSession } : {},
|
|
@@ -35695,6 +36054,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
35695
36054
|
contextFilename: contextFilenameForInit ?? "QWEN.md",
|
|
35696
36055
|
// Daemon-host status provider for env + preflight cells.
|
|
35697
36056
|
statusProvider,
|
|
36057
|
+
workspaceProvidersStatusProvider,
|
|
35698
36058
|
// Channel liveness check — proxied through the bridge's live-channel
|
|
35699
36059
|
// probe (not session count: a channel can be live with zero attached
|
|
35700
36060
|
// sessions during the cold-spawn window).
|
|
@@ -35961,7 +36321,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
35961
36321
|
}
|
|
35962
36322
|
__name(runQwenServe, "runQwenServe");
|
|
35963
36323
|
|
|
35964
|
-
// packages/cli/src/serve/
|
|
36324
|
+
// packages/cli/src/serve/in-memory-channel.ts
|
|
35965
36325
|
init_esbuild_shims();
|
|
35966
36326
|
export {
|
|
35967
36327
|
ACP_PREFLIGHT_KINDS,
|