@qwen-code/qwen-code 0.18.5 → 0.19.1
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 +15 -8
- package/chunks/{agent-2TEY55UD.js → agent-7CZOLKXM.js} +24 -22
- package/chunks/{agent-headless-SCUAXEEE.js → agent-headless-K37PBQK5.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-VECKCOH6.js → chunk-2X2WXY6L.js} +6104 -4673
- 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-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-FXT37TZS.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-C7JA3XCX.js → chunk-NQDRRVJD.js} +5 -5
- package/chunks/{chunk-F5E6IKYN.js → chunk-OJMCOR55.js} +560 -18
- package/chunks/{chunk-ID533GA3.js → chunk-OTBK43JR.js} +1 -1
- package/chunks/{chunk-GOMVJKBL.js → chunk-PLY4F7QW.js} +5 -3
- package/chunks/{chunk-KZGQ3G3Q.js → chunk-PNT7QCLK.js} +80 -83
- 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-CTHZVIMD.js → chunk-T2VDEFUU.js} +2 -2
- package/chunks/{chunk-LF6BKGZT.js → chunk-TXVGVZYR.js} +3 -3
- package/chunks/{chunk-XU7BKR3B.js → chunk-XU5P23GN.js} +3 -3
- package/chunks/{chunk-2CNO5W47.js → chunk-YMBWB67C.js} +146 -5005
- package/chunks/{computer-use-OB3C5QG2.js → computer-use-AY6HODX4.js} +24 -22
- package/chunks/contextCommand-KVKJ63NZ.js +56 -0
- package/chunks/{cron-create-THNDTYXU.js → cron-create-NHRAAWT5.js} +12 -9
- 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-OXD4P5YK.js} +24 -22
- package/chunks/{en-S3OQBISC.js → en-7OGNWWME.js} +48 -0
- package/chunks/{enter-worktree-E7BNZOGT.js → enter-worktree-NKNFTLNO.js} +24 -22
- package/chunks/{enterPlanMode-IA42A5EU.js → enterPlanMode-7W2FCILY.js} +27 -23
- package/chunks/{exit-worktree-QJ2K74UT.js → exit-worktree-NCRZ52XD.js} +24 -22
- package/chunks/{exitPlanMode-UKKHBUYJ.js → exitPlanMode-AZIUQQHA.js} +36 -28
- package/chunks/{geminiContentGenerator-ICSDM37U.js → geminiContentGenerator-5HKVP4JF.js} +4 -4
- package/chunks/{glob-IGD7LWYX.js → glob-VCPO3AQO.js} +26 -23
- package/chunks/{grep-IZM3IVND.js → grep-R3W7SG6T.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-TQCZALTB.js} +24 -22
- package/chunks/{notebook-edit-7XRZX55T.js → notebook-edit-RYYGIJTA.js} +25 -23
- package/chunks/{openaiContentGenerator-FWKITDFJ.js → openaiContentGenerator-2AUZ47JU.js} +12 -15
- package/chunks/{qwenContentGenerator-5RPGQZ63.js → qwenContentGenerator-QM6ENWSO.js} +26 -24
- package/chunks/{qwenOAuth2-WZ54YZ4J.js → qwenOAuth2-K4AASPCV.js} +5 -4
- package/chunks/{read-file-4WN2DT5N.js → read-file-ZSIMNYPB.js} +9 -8
- package/chunks/{ripGrep-4ZKT6KBQ.js → ripGrep-LONCTNP3.js} +24 -22
- package/chunks/{scheduler-O2E65VDK.js → scheduler-FMNCHQQH.js} +73 -27
- package/chunks/{send-message-FWFTX62Q.js → send-message-447W6NH6.js} +24 -4
- package/chunks/{serve-3DM6CRGD.js → serve-XLPTFQOQ.js} +458 -77
- package/chunks/{shell-ARVZK6RF.js → shell-G2CEO7D7.js} +24 -22
- package/chunks/{skill-BFUBGA4I.js → skill-E5YLTHY3.js} +11 -10
- package/chunks/{src-5YMCDSII.js → src-GCZS2DES.js} +112 -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-RQCITTFK.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-2COFGD5N.js} +9 -8
- package/chunks/{web-fetch-JU7SS6KE.js → web-fetch-YPP3V4FJ.js} +4 -4
- package/chunks/{workflow-W4SCLWLU.js → workflow-A5VAXYUS.js} +557 -97
- package/chunks/{write-file-TLNXC2NR.js → write-file-P2RNFLJR.js} +24 -22
- package/chunks/{zh-QXLZV2PX.js → zh-3RMSEO5M.js} +48 -0
- package/chunks/{zh-TW-3OKU7LDA.js → zh-TW-R7WRLTJS.js} +48 -0
- package/cli.js +8200 -4981
- package/locales/en.js +69 -0
- package/locales/zh-TW.js +66 -0
- package/locales/zh.js +66 -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-OJMCOR55.js";
|
|
76
|
+
import {
|
|
77
|
+
SUPPORTED_LANGUAGES,
|
|
78
|
+
writeStderrLine,
|
|
79
|
+
writeStdoutLine
|
|
80
|
+
} from "./chunk-NQDRRVJD.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-2X2WXY6L.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-YMBWB67C.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,
|
|
@@ -22452,6 +22771,12 @@ var WorkspaceFileSystemImpl = class {
|
|
|
22452
22771
|
const start = performance.now();
|
|
22453
22772
|
try {
|
|
22454
22773
|
assertTrustedForIntent(this.deps.trusted, "list");
|
|
22774
|
+
if (opts.maxEntries !== void 0 && (!Number.isSafeInteger(opts.maxEntries) || opts.maxEntries < 1)) {
|
|
22775
|
+
throw new FsError(
|
|
22776
|
+
"parse_error",
|
|
22777
|
+
`maxEntries must be a positive integer, got ${opts.maxEntries}`
|
|
22778
|
+
);
|
|
22779
|
+
}
|
|
22455
22780
|
const entries = [];
|
|
22456
22781
|
const dir = await fsp2.opendir(p);
|
|
22457
22782
|
for await (const d of dir) {
|
|
@@ -23541,7 +23866,7 @@ function buildWriteMeta(opts) {
|
|
|
23541
23866
|
}
|
|
23542
23867
|
__name(buildWriteMeta, "buildWriteMeta");
|
|
23543
23868
|
|
|
23544
|
-
// packages/cli/src/serve/
|
|
23869
|
+
// packages/cli/src/serve/workspace-memory.ts
|
|
23545
23870
|
init_esbuild_shims();
|
|
23546
23871
|
import { promises as fs3 } from "node:fs";
|
|
23547
23872
|
import * as path7 from "node:path";
|
|
@@ -23783,14 +24108,14 @@ function isEnoent(err) {
|
|
|
23783
24108
|
}
|
|
23784
24109
|
__name(isEnoent, "isEnoent");
|
|
23785
24110
|
|
|
23786
|
-
// packages/cli/src/serve/
|
|
24111
|
+
// packages/cli/src/serve/workspace-agents.ts
|
|
23787
24112
|
init_esbuild_shims();
|
|
23788
24113
|
import { promises as fs4 } from "node:fs";
|
|
23789
24114
|
|
|
23790
|
-
// packages/cli/src/serve/
|
|
24115
|
+
// packages/cli/src/serve/acp-session-bridge.ts
|
|
23791
24116
|
init_esbuild_shims();
|
|
23792
24117
|
|
|
23793
|
-
// packages/cli/src/serve/
|
|
24118
|
+
// packages/cli/src/serve/workspace-agents.ts
|
|
23794
24119
|
var AGENT_TYPE_PATTERN = /^[\p{L}\p{N}_-]+$/u;
|
|
23795
24120
|
var AGENT_TYPE_MAX_LENGTH = 64;
|
|
23796
24121
|
var AGENT_TYPE_MIN_LENGTH = 2;
|
|
@@ -24655,7 +24980,7 @@ function createDaemonSubagentManager(boundWorkspace) {
|
|
|
24655
24980
|
}
|
|
24656
24981
|
__name(createDaemonSubagentManager, "createDaemonSubagentManager");
|
|
24657
24982
|
|
|
24658
|
-
// packages/cli/src/serve/
|
|
24983
|
+
// packages/cli/src/serve/acp-http/json-rpc.ts
|
|
24659
24984
|
init_esbuild_shims();
|
|
24660
24985
|
var QWEN_METHOD_NS = "_qwen/";
|
|
24661
24986
|
var QWEN_META_KEY = "qwen";
|
|
@@ -24735,7 +25060,7 @@ function parseInbound(raw) {
|
|
|
24735
25060
|
}
|
|
24736
25061
|
__name(parseInbound, "parseInbound");
|
|
24737
25062
|
|
|
24738
|
-
// packages/cli/src/serve/
|
|
25063
|
+
// packages/cli/src/serve/acp-http/dispatch.ts
|
|
24739
25064
|
function errMsg(err) {
|
|
24740
25065
|
return err instanceof Error ? err.message : String(err);
|
|
24741
25066
|
}
|
|
@@ -26904,7 +27229,7 @@ var AcpDispatcher = class {
|
|
|
26904
27229
|
}
|
|
26905
27230
|
};
|
|
26906
27231
|
|
|
26907
|
-
// packages/cli/src/serve/
|
|
27232
|
+
// packages/cli/src/serve/acp-http/connection-registry.ts
|
|
26908
27233
|
init_esbuild_shims();
|
|
26909
27234
|
import { randomUUID as randomUUID4 } from "node:crypto";
|
|
26910
27235
|
var MAX_BUFFERED_FRAMES = 256;
|
|
@@ -27253,7 +27578,7 @@ function sumBy(values, select) {
|
|
|
27253
27578
|
}
|
|
27254
27579
|
__name(sumBy, "sumBy");
|
|
27255
27580
|
|
|
27256
|
-
// packages/cli/src/serve/
|
|
27581
|
+
// packages/cli/src/serve/acp-http/sse-stream.ts
|
|
27257
27582
|
init_esbuild_shims();
|
|
27258
27583
|
var SseStream = class {
|
|
27259
27584
|
constructor(res, onClose, onHeartbeat) {
|
|
@@ -27372,7 +27697,7 @@ var SseStream = class {
|
|
|
27372
27697
|
}
|
|
27373
27698
|
};
|
|
27374
27699
|
|
|
27375
|
-
// packages/cli/src/serve/
|
|
27700
|
+
// packages/cli/src/serve/acp-http/ws-stream.ts
|
|
27376
27701
|
init_esbuild_shims();
|
|
27377
27702
|
var WsStream = class {
|
|
27378
27703
|
constructor(ws, onClose, onHeartbeat) {
|
|
@@ -27460,7 +27785,7 @@ var WsStream = class {
|
|
|
27460
27785
|
}
|
|
27461
27786
|
};
|
|
27462
27787
|
|
|
27463
|
-
// packages/cli/src/serve/
|
|
27788
|
+
// packages/cli/src/serve/acp-http/index.ts
|
|
27464
27789
|
var ACP_CONNECTION_HEADER = "acp-connection-id";
|
|
27465
27790
|
var ACP_SESSION_HEADER = "acp-session-id";
|
|
27466
27791
|
var CONN_GRACE_MS = 1e4;
|
|
@@ -28006,7 +28331,7 @@ function isLoopbackReq(req) {
|
|
|
28006
28331
|
}
|
|
28007
28332
|
__name(isLoopbackReq, "isLoopbackReq");
|
|
28008
28333
|
|
|
28009
|
-
// packages/cli/src/serve/
|
|
28334
|
+
// packages/cli/src/serve/daemon-status.ts
|
|
28010
28335
|
init_esbuild_shims();
|
|
28011
28336
|
var DEFAULT_LISTENER_MAX_CONNECTIONS = 256;
|
|
28012
28337
|
var SECTION_TIMEOUT_MS = 1e3;
|
|
@@ -29345,7 +29670,7 @@ function getDemoHtml(_port) {
|
|
|
29345
29670
|
}
|
|
29346
29671
|
__name(getDemoHtml, "getDemoHtml");
|
|
29347
29672
|
|
|
29348
|
-
// packages/cli/src/serve/
|
|
29673
|
+
// packages/cli/src/serve/web-shell-static.ts
|
|
29349
29674
|
init_esbuild_shims();
|
|
29350
29675
|
var import_express = __toESM(require_express2(), 1);
|
|
29351
29676
|
import { existsSync } from "node:fs";
|
|
@@ -29449,7 +29774,7 @@ function mountWebShellSpaFallback(app, webShellDir) {
|
|
|
29449
29774
|
}
|
|
29450
29775
|
__name(mountWebShellSpaFallback, "mountWebShellSpaFallback");
|
|
29451
29776
|
|
|
29452
|
-
// packages/cli/src/serve/routes/
|
|
29777
|
+
// packages/cli/src/serve/routes/workspace-file-read.ts
|
|
29453
29778
|
init_esbuild_shims();
|
|
29454
29779
|
import * as path10 from "node:path";
|
|
29455
29780
|
var MAX_LIST_ENTRIES = 2e3;
|
|
@@ -29796,7 +30121,7 @@ function registerWorkspaceFileReadRoutes(app, deps) {
|
|
|
29796
30121
|
}
|
|
29797
30122
|
__name(registerWorkspaceFileReadRoutes, "registerWorkspaceFileReadRoutes");
|
|
29798
30123
|
|
|
29799
|
-
// packages/cli/src/serve/routes/
|
|
30124
|
+
// packages/cli/src/serve/routes/workspace-file-write.ts
|
|
29800
30125
|
init_esbuild_shims();
|
|
29801
30126
|
function getFsFactory2(req, res) {
|
|
29802
30127
|
const factory = req.app.locals.fsFactory;
|
|
@@ -30059,6 +30384,7 @@ function createDaemonWorkspaceService(deps) {
|
|
|
30059
30384
|
boundWorkspace,
|
|
30060
30385
|
contextFilename,
|
|
30061
30386
|
statusProvider,
|
|
30387
|
+
workspaceProvidersStatusProvider,
|
|
30062
30388
|
isChannelLive,
|
|
30063
30389
|
persistDisabledTools,
|
|
30064
30390
|
queryWorkspaceStatus,
|
|
@@ -30081,6 +30407,12 @@ function createDaemonWorkspaceService(deps) {
|
|
|
30081
30407
|
);
|
|
30082
30408
|
},
|
|
30083
30409
|
async getWorkspaceProvidersStatus(_ctx) {
|
|
30410
|
+
if (workspaceProvidersStatusProvider) {
|
|
30411
|
+
return workspaceProvidersStatusProvider(
|
|
30412
|
+
boundWorkspace,
|
|
30413
|
+
isChannelLive?.() ?? false
|
|
30414
|
+
);
|
|
30415
|
+
}
|
|
30084
30416
|
return queryWorkspaceStatus(
|
|
30085
30417
|
SERVE_STATUS_EXT_METHODS.workspaceProviders,
|
|
30086
30418
|
() => createIdleWorkspaceProvidersStatus(boundWorkspace)
|
|
@@ -30454,7 +30786,7 @@ function createDaemonWorkspaceService(deps) {
|
|
|
30454
30786
|
}
|
|
30455
30787
|
__name(createDaemonWorkspaceService, "createDaemonWorkspaceService");
|
|
30456
30788
|
|
|
30457
|
-
// packages/cli/src/serve/routes/
|
|
30789
|
+
// packages/cli/src/serve/routes/workspace-settings.ts
|
|
30458
30790
|
init_esbuild_shims();
|
|
30459
30791
|
var TUI_ONLY_SETTINGS = /* @__PURE__ */ new Set([
|
|
30460
30792
|
"general.vimMode",
|
|
@@ -30679,7 +31011,7 @@ function registerWorkspaceSettingsRoutes(app, deps) {
|
|
|
30679
31011
|
}
|
|
30680
31012
|
__name(registerWorkspaceSettingsRoutes, "registerWorkspaceSettingsRoutes");
|
|
30681
31013
|
|
|
30682
|
-
// packages/cli/src/serve/routes/
|
|
31014
|
+
// packages/cli/src/serve/routes/a2ui-action.ts
|
|
30683
31015
|
init_esbuild_shims();
|
|
30684
31016
|
import * as fsp3 from "node:fs/promises";
|
|
30685
31017
|
import * as path12 from "node:path";
|
|
@@ -30687,7 +31019,16 @@ var A2UI_MIME = "application/a2ui+json";
|
|
|
30687
31019
|
var ACTION_TOOL = "action";
|
|
30688
31020
|
var CALL_TIMEOUT_MS = 15e3;
|
|
30689
31021
|
function usableServerConfig(cfg) {
|
|
30690
|
-
|
|
31022
|
+
if (!cfg) return false;
|
|
31023
|
+
if (typeof cfg.httpUrl === "string") {
|
|
31024
|
+
try {
|
|
31025
|
+
const parsed = new URL(cfg.httpUrl);
|
|
31026
|
+
return parsed.protocol === "http:" || parsed.protocol === "https:";
|
|
31027
|
+
} catch {
|
|
31028
|
+
return false;
|
|
31029
|
+
}
|
|
31030
|
+
}
|
|
31031
|
+
return typeof cfg.command === "string" && cfg.command.trim().length > 0;
|
|
30691
31032
|
}
|
|
30692
31033
|
__name(usableServerConfig, "usableServerConfig");
|
|
30693
31034
|
async function findFromSettingsFile(workspaceCwd) {
|
|
@@ -30816,7 +31157,7 @@ function registerA2uiActionRoutes(app, opts) {
|
|
|
30816
31157
|
}
|
|
30817
31158
|
__name(registerA2uiActionRoutes, "registerA2uiActionRoutes");
|
|
30818
31159
|
|
|
30819
|
-
// packages/cli/src/serve/
|
|
31160
|
+
// packages/cli/src/serve/rate-limit.ts
|
|
30820
31161
|
init_esbuild_shims();
|
|
30821
31162
|
var MAX_BUCKETS = 1e4;
|
|
30822
31163
|
var GC_REQUEST_INTERVAL = 1e3;
|
|
@@ -31073,7 +31414,8 @@ function resolveBridgeFsFactory(input) {
|
|
|
31073
31414
|
return createWorkspaceFileSystemFactory({
|
|
31074
31415
|
boundWorkspace: input.boundWorkspace,
|
|
31075
31416
|
trusted: input.trusted,
|
|
31076
|
-
emit: input.emit ?? createDefaultFsAuditEmit()
|
|
31417
|
+
emit: input.emit ?? createDefaultFsAuditEmit(),
|
|
31418
|
+
...input.customIgnoreFiles !== void 0 ? { customIgnoreFiles: input.customIgnoreFiles } : {}
|
|
31077
31419
|
});
|
|
31078
31420
|
}
|
|
31079
31421
|
__name(resolveBridgeFsFactory, "resolveBridgeFsFactory");
|
|
@@ -31088,17 +31430,23 @@ var InvalidCursorError = class extends Error {
|
|
|
31088
31430
|
this.name = "InvalidCursorError";
|
|
31089
31431
|
}
|
|
31090
31432
|
};
|
|
31433
|
+
function parseSessionCursor(cursor) {
|
|
31434
|
+
if (cursor === "") return void 0;
|
|
31435
|
+
const trimmed = cursor.trim();
|
|
31436
|
+
const parsed = Number(trimmed);
|
|
31437
|
+
if (trimmed === "" || !Number.isFinite(parsed) || parsed < 0 || parsed > Number.MAX_SAFE_INTEGER) {
|
|
31438
|
+
throw new InvalidCursorError(cursor);
|
|
31439
|
+
}
|
|
31440
|
+
return parsed;
|
|
31441
|
+
}
|
|
31442
|
+
__name(parseSessionCursor, "parseSessionCursor");
|
|
31091
31443
|
async function listWorkspaceSessionsForResponse(bridge, workspaceCwd, options) {
|
|
31092
31444
|
const rawSize = options?.size;
|
|
31093
31445
|
const requestedSize = typeof rawSize === "number" && Number.isSafeInteger(rawSize) ? rawSize : DEFAULT_SESSION_PAGE_SIZE;
|
|
31094
31446
|
const pageSize = Math.min(Math.max(requestedSize, 1), MAX_SESSION_PAGE_SIZE);
|
|
31095
31447
|
let numericCursor;
|
|
31096
|
-
if (options?.cursor) {
|
|
31097
|
-
|
|
31098
|
-
if (!Number.isFinite(parsed)) {
|
|
31099
|
-
throw new InvalidCursorError(options.cursor);
|
|
31100
|
-
}
|
|
31101
|
-
numericCursor = parsed;
|
|
31448
|
+
if (options?.cursor != null) {
|
|
31449
|
+
numericCursor = parseSessionCursor(options.cursor);
|
|
31102
31450
|
}
|
|
31103
31451
|
const isFirstPage = numericCursor === void 0;
|
|
31104
31452
|
const sessionService = new SessionService(workspaceCwd);
|
|
@@ -31673,6 +32021,7 @@ function createServeApp(opts, getPort = () => opts.port, deps = {}) {
|
|
|
31673
32021
|
boundWorkspace,
|
|
31674
32022
|
contextFilename: deps.contextFilename ?? "QWEN.md",
|
|
31675
32023
|
statusProvider: createDaemonStatusProvider(),
|
|
32024
|
+
workspaceProvidersStatusProvider: createWorkspaceProvidersStatusProvider(),
|
|
31676
32025
|
isChannelLive: /* @__PURE__ */ __name(() => bridge.isChannelLive(), "isChannelLive"),
|
|
31677
32026
|
persistDisabledTools: deps.persistDisabledTools ?? (async () => {
|
|
31678
32027
|
throw new Error(
|
|
@@ -33022,6 +33371,34 @@ function createServeApp(opts, getPort = () => opts.port, deps = {}) {
|
|
|
33022
33371
|
});
|
|
33023
33372
|
}
|
|
33024
33373
|
});
|
|
33374
|
+
app.post("/session/:id/fork", mutate(), async (req, res) => {
|
|
33375
|
+
const sessionId = requireSessionId(req, res);
|
|
33376
|
+
if (sessionId === null) return;
|
|
33377
|
+
const body = safeBody(req);
|
|
33378
|
+
const directive = body["directive"];
|
|
33379
|
+
if (typeof directive !== "string" || directive.trim().length === 0) {
|
|
33380
|
+
res.status(400).json({
|
|
33381
|
+
error: "`directive` is required and must be a non-empty string",
|
|
33382
|
+
code: "missing_directive"
|
|
33383
|
+
});
|
|
33384
|
+
return;
|
|
33385
|
+
}
|
|
33386
|
+
const clientId = parseClientIdHeader(req, res);
|
|
33387
|
+
if (clientId === null) return;
|
|
33388
|
+
try {
|
|
33389
|
+
const result = await bridge.launchSessionForkAgent(
|
|
33390
|
+
sessionId,
|
|
33391
|
+
directive,
|
|
33392
|
+
clientId !== void 0 ? { clientId } : void 0
|
|
33393
|
+
);
|
|
33394
|
+
res.status(202).json(result);
|
|
33395
|
+
} catch (err) {
|
|
33396
|
+
sendBridgeError(res, err, {
|
|
33397
|
+
route: "POST /session/:id/fork",
|
|
33398
|
+
sessionId
|
|
33399
|
+
});
|
|
33400
|
+
}
|
|
33401
|
+
});
|
|
33025
33402
|
app.get("/session/:id/context", async (req, res) => {
|
|
33026
33403
|
const sessionId = requireSessionId(req, res);
|
|
33027
33404
|
if (sessionId === null) return;
|
|
@@ -34966,12 +35343,12 @@ function errorPayload(err) {
|
|
|
34966
35343
|
}
|
|
34967
35344
|
__name(errorPayload, "errorPayload");
|
|
34968
35345
|
|
|
34969
|
-
// packages/cli/src/serve/
|
|
35346
|
+
// packages/cli/src/serve/run-qwen-serve.ts
|
|
34970
35347
|
init_esbuild_shims();
|
|
34971
35348
|
import * as fs6 from "node:fs";
|
|
34972
35349
|
import * as path14 from "node:path";
|
|
34973
35350
|
|
|
34974
|
-
// packages/cli/src/serve/
|
|
35351
|
+
// packages/cli/src/serve/permission-audit.ts
|
|
34975
35352
|
init_esbuild_shims();
|
|
34976
35353
|
var DEFAULT_PERMISSION_AUDIT_RING_SIZE = 512;
|
|
34977
35354
|
function takeLast(arr, limit, methodName) {
|
|
@@ -35088,7 +35465,7 @@ function createPermissionAuditPublisher(deps) {
|
|
|
35088
35465
|
}
|
|
35089
35466
|
__name(createPermissionAuditPublisher, "createPermissionAuditPublisher");
|
|
35090
35467
|
|
|
35091
|
-
// packages/cli/src/serve/
|
|
35468
|
+
// packages/cli/src/serve/daemon-logger.ts
|
|
35092
35469
|
init_esbuild_shims();
|
|
35093
35470
|
import * as nodeFs from "node:fs";
|
|
35094
35471
|
import * as nodePath from "node:path";
|
|
@@ -35228,7 +35605,7 @@ function initDaemonLogger(opts) {
|
|
|
35228
35605
|
}
|
|
35229
35606
|
__name(initDaemonLogger, "initDaemonLogger");
|
|
35230
35607
|
|
|
35231
|
-
// packages/cli/src/serve/
|
|
35608
|
+
// packages/cli/src/serve/run-qwen-serve.ts
|
|
35232
35609
|
var QWEN_SERVER_TOKEN_ENV = "QWEN_SERVER_TOKEN";
|
|
35233
35610
|
var QWEN_SERVE_PROMPT_DEADLINE_MS_ENV = "QWEN_SERVE_PROMPT_DEADLINE_MS";
|
|
35234
35611
|
var QWEN_SERVE_WRITER_IDLE_TIMEOUT_MS_ENV = "QWEN_SERVE_WRITER_IDLE_TIMEOUT_MS";
|
|
@@ -35612,11 +35989,13 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
35612
35989
|
ring: permissionAuditRing
|
|
35613
35990
|
});
|
|
35614
35991
|
const trustedWorkspace = deps.trustedWorkspace ?? true;
|
|
35992
|
+
const customIgnoreFiles = bootSettings?.merged.context?.fileFiltering?.customIgnoreFiles;
|
|
35615
35993
|
const fsFactory = resolveBridgeFsFactory({
|
|
35616
35994
|
boundWorkspace,
|
|
35617
35995
|
injected: deps.fsFactory,
|
|
35618
35996
|
trusted: trustedWorkspace,
|
|
35619
|
-
emit: deps.fsAuditEmit
|
|
35997
|
+
emit: deps.fsAuditEmit,
|
|
35998
|
+
...customIgnoreFiles !== void 0 ? { customIgnoreFiles } : {}
|
|
35620
35999
|
});
|
|
35621
36000
|
const diagnosticSink = /* @__PURE__ */ __name((line, level) => daemonLog.raw(line, level), "diagnosticSink");
|
|
35622
36001
|
const channelFactory = createSpawnChannelFactory({
|
|
@@ -35637,6 +36016,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
35637
36016
|
);
|
|
35638
36017
|
}), "persistDisabledToolsFn");
|
|
35639
36018
|
const statusProvider = createDaemonStatusProvider();
|
|
36019
|
+
const workspaceProvidersStatusProvider = createWorkspaceProvidersStatusProvider();
|
|
35640
36020
|
const bridge = deps.bridge ?? createAcpSessionBridge({
|
|
35641
36021
|
maxSessions: opts.maxSessions,
|
|
35642
36022
|
...opts.maxPendingPromptsPerSession !== void 0 ? { maxPendingPromptsPerSession: opts.maxPendingPromptsPerSession } : {},
|
|
@@ -35695,6 +36075,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
35695
36075
|
contextFilename: contextFilenameForInit ?? "QWEN.md",
|
|
35696
36076
|
// Daemon-host status provider for env + preflight cells.
|
|
35697
36077
|
statusProvider,
|
|
36078
|
+
workspaceProvidersStatusProvider,
|
|
35698
36079
|
// Channel liveness check — proxied through the bridge's live-channel
|
|
35699
36080
|
// probe (not session count: a channel can be live with zero attached
|
|
35700
36081
|
// sessions during the cold-spawn window).
|
|
@@ -35961,7 +36342,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
35961
36342
|
}
|
|
35962
36343
|
__name(runQwenServe, "runQwenServe");
|
|
35963
36344
|
|
|
35964
|
-
// packages/cli/src/serve/
|
|
36345
|
+
// packages/cli/src/serve/in-memory-channel.ts
|
|
35965
36346
|
init_esbuild_shims();
|
|
35966
36347
|
export {
|
|
35967
36348
|
ACP_PREFLIGHT_KINDS,
|