@qwen-code/qwen-code 0.18.0-preview.2 → 0.18.1-nightly.20260616.a68b2e1e7
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/loop/SKILL.md +2 -1
- package/bundled/qc-helper/docs/_meta.ts +1 -0
- package/bundled/qc-helper/docs/common-workflow.md +4 -4
- package/bundled/qc-helper/docs/configuration/auth.md +1 -1
- package/bundled/qc-helper/docs/configuration/model-providers.md +13 -6
- package/bundled/qc-helper/docs/configuration/settings.md +90 -89
- package/bundled/qc-helper/docs/features/approval-mode.md +10 -14
- package/bundled/qc-helper/docs/features/commands.md +33 -11
- package/bundled/qc-helper/docs/features/dual-output.md +37 -3
- package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
- package/bundled/qc-helper/docs/features/skills.md +29 -3
- package/bundled/qc-helper/docs/features/sub-agents.md +34 -12
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +221 -0
- package/bundled/qc-helper/docs/qwen-serve.md +250 -31
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +30 -30
- package/chunks/{agent-QB7TZ4HW.js → agent-PXMT2XR5.js} +25 -24
- package/chunks/agent-headless-SY7VJUHV.js +51 -0
- package/chunks/{anthropicContentGenerator-M45EVVRM.js → anthropicContentGenerator-DCI26OQF.js} +7 -7
- package/chunks/{askUserQuestion-WM2KHM3K.js → askUserQuestion-NDNFGC35.js} +45 -3
- package/chunks/{ca-BARBRL6N.js → ca-RK4QPLIX.js} +18 -1
- package/chunks/{chunk-CNSMKPK6.js → chunk-26QELEL2.js} +1 -1
- package/chunks/{chunk-CWV3SJZS.js → chunk-3NRO6NHX.js} +2 -2
- package/chunks/{chunk-BNESGOSJ.js → chunk-55ZMG67I.js} +1 -1
- package/chunks/{chunk-2ZTWI7KH.js → chunk-6WPY6ES3.js} +62 -22
- package/chunks/{chunk-ZK4AMNIU.js → chunk-A3OEZT2F.js} +1294 -314
- package/chunks/{chunk-HXJE7VOG.js → chunk-ABRZC6FA.js} +1074 -144
- package/chunks/{chunk-JUGRPQAB.js → chunk-B4ZF2KSI.js} +1 -1
- package/chunks/chunk-BJ5HQ23U.js +178 -0
- package/chunks/{chunk-ICOI4E4S.js → chunk-CPVI5J2L.js} +101 -23
- package/chunks/{chunk-GX7VH5JQ.js → chunk-FIQECJTQ.js} +1 -1
- package/chunks/{chunk-QCG6KPNM.js → chunk-H4ZDM3N6.js} +18039 -11622
- package/chunks/{chunk-SZOEIL6S.js → chunk-H6BD2ELD.js} +1 -0
- package/chunks/{chunk-JXAZUMDW.js → chunk-HA2UEYZP.js} +7 -4
- package/chunks/{chunk-MVIVIPCU.js → chunk-IDYDPBBN.js} +361 -583
- package/chunks/{chunk-JVQOQ3OU.js → chunk-IQHSD7K5.js} +1 -1
- package/chunks/{chunk-CNHFPN7T.js → chunk-JZFEL3RB.js} +1 -1
- package/chunks/{chunk-UAMOBVVW.js → chunk-LXYWINWF.js} +1 -1
- package/chunks/{chunk-P4J26VDS.js → chunk-LYRSMKLS.js} +2 -2
- package/chunks/{chunk-Y7R6H6FT.js → chunk-LYSND7KR.js} +9 -4
- package/chunks/{chunk-AVW55ZCO.js → chunk-M5PJ5QAF.js} +37 -16
- package/chunks/{chunk-LR62TEET.js → chunk-NNIYWQIS.js} +1 -1
- package/chunks/chunk-OMX7CUOE.js +356 -0
- package/chunks/{chunk-HV3ZZ7G4.js → chunk-OT6JA3KQ.js} +2 -2
- package/chunks/{chunk-C6WMLUNB.js → chunk-QP4R5FTG.js} +1 -1
- package/chunks/chunk-QQDPRDVW.js +25 -0
- package/chunks/chunk-SFRV6BGY.js +243 -0
- package/chunks/{chunk-NW5QBUYO.js → chunk-TSBXGR73.js} +14 -14
- package/chunks/{chunk-7YKXFA3D.js → chunk-UOB6KPGG.js} +11 -11
- package/chunks/{chunk-USE2VQ5P.js → chunk-VU6A2OBJ.js} +41 -6
- package/chunks/{chunk-PAEBHDIO.js → chunk-VXHYMZXW.js} +1 -1
- package/chunks/{chunk-HGJPQK33.js → chunk-WPTCDQN6.js} +188 -534
- package/chunks/{chunk-WFVXF3OM.js → chunk-Z2Z3GUXZ.js} +1 -0
- package/chunks/{chunk-KC6ZMJ5X.js → chunk-ZMIBJS45.js} +1 -1
- package/chunks/chunk-ZOFNJQNJ.js +607 -0
- package/chunks/computer-use-7SEQDSHB.js +2052 -0
- package/chunks/contextCommand-KM5OWV65.js +53 -0
- package/chunks/cron-create-7CXEAJ2K.js +184 -0
- package/chunks/{cron-delete-ZGUXWBTG.js → cron-delete-2FQYYNQ6.js} +28 -5
- package/chunks/{cron-list-QNNZGMN3.js → cron-list-QCAJ73XE.js} +40 -7
- package/chunks/{de-YGKK2BC4.js → de-FGPM4KW5.js} +18 -1
- package/chunks/{devtools-IXE4UP72.js → devtools-FM6GJPYG.js} +1 -1
- package/chunks/{dist-R2SXPG74.js → dist-2UCAYOX7.js} +2 -2
- package/chunks/{dist-TE5QKMGR.js → dist-33LHH26D.js} +1 -1
- package/chunks/{dist-BXDUQ2QY.js → dist-KF43SZZV.js} +1 -1
- package/chunks/{dist-ZMQ4TXD5.js → dist-PF2IYSMD.js} +2 -2
- package/chunks/{edit-6UBTS2J5.js → edit-BMUKPLA7.js} +27 -28
- package/chunks/{en-HSQQNQUB.js → en-VP6XPGEC.js} +9 -2
- package/chunks/{enter-worktree-NN7LIXCM.js → enter-worktree-LXJ5WJ5A.js} +25 -24
- package/chunks/enterPlanMode-QWRZ54ZF.js +159 -0
- package/chunks/{exit-worktree-GGSS5KIE.js → exit-worktree-5HTQPNZO.js} +25 -24
- package/chunks/exitPlanMode-5WQAXNDA.js +743 -0
- package/chunks/{fr-JXBKPJKQ.js → fr-ATYBVCLT.js} +18 -1
- package/chunks/{geminiContentGenerator-I4H2NLJG.js → geminiContentGenerator-CAKHT5YE.js} +7 -7
- package/chunks/{getMachineId-bsd-F7GNPTER.js → getMachineId-bsd-4CASPIU4.js} +1 -1
- package/chunks/{getMachineId-darwin-T73DJL27.js → getMachineId-darwin-HPQPEMZR.js} +1 -1
- package/chunks/{getMachineId-linux-MKQTFPQM.js → getMachineId-linux-AUARKYHL.js} +1 -1
- package/chunks/{getMachineId-unsupported-MUR5KOQE.js → getMachineId-unsupported-S32ZDA2T.js} +1 -1
- package/chunks/{getMachineId-win-CDYFC6ZM.js → getMachineId-win-4EFLHYIJ.js} +1 -1
- package/chunks/{glob-OLCX57MD.js → glob-5DN6NSCD.js} +25 -24
- package/chunks/{grep-7HXIMDOW.js → grep-BJILOLCD.js} +37 -30
- package/chunks/{ja-TGPZSP2B.js → ja-W2QEA2OI.js} +18 -1
- package/chunks/{keychain-token-storage-LB46DAEK.js → keychain-token-storage-QSTRHKKL.js} +3 -3
- package/chunks/{ls-6PEZUK6O.js → ls-XVGXRYWD.js} +4 -4
- package/chunks/{lsp-JZSJOVT7.js → lsp-S6SHPULC.js} +3 -3
- package/chunks/{monitor-SQO7MVAV.js → monitor-SUEMSRN3.js} +25 -24
- package/chunks/{notebook-edit-72L3EBAL.js → notebook-edit-6F6Z5P6U.js} +26 -25
- package/chunks/{openaiContentGenerator-FTR7CDWF.js → openaiContentGenerator-DO27LL6O.js} +15 -15
- package/chunks/{pt-TIBG6BIO.js → pt-ZKEWJFBW.js} +18 -1
- package/chunks/{qwenContentGenerator-U5UFQ566.js → qwenContentGenerator-DQLGLQSH.js} +27 -26
- package/chunks/{qwenOAuth2-EFSECGHF.js → qwenOAuth2-KK433U33.js} +6 -5
- package/chunks/{read-file-UA64EEQC.js → read-file-3TBLYTOQ.js} +11 -11
- package/chunks/ripGrep-3INYT3QV.js +49 -0
- package/chunks/{ru-JBCHCK4L.js → ru-VEKTPJ74.js} +18 -1
- package/chunks/{scheduler-VBASHOCA.js → scheduler-23KQW6CX.js} +25 -24
- package/chunks/{send-message-OYJZ5TPG.js → send-message-SMNR5DBG.js} +3 -3
- package/chunks/{serve-A7E2OJDR.js → serve-Y5E4LKUI.js} +13164 -3840
- package/chunks/{shell-3NFOT6F5.js → shell-4H6XQXVY.js} +25 -24
- package/chunks/{skill-RA5YUREY.js → skill-SE6FECZR.js} +64 -113
- package/chunks/{src-NFCMARMT.js → src-76DUBH3A.js} +176 -44
- package/chunks/{syntheticOutput-DETQ2YM6.js → syntheticOutput-KMNF7YG6.js} +4 -4
- package/chunks/{task-create-Y3ZKTJIG.js → task-create-LIJHK75G.js} +8 -7
- package/chunks/{task-list-ONXJ3I3A.js → task-list-S4GNSILM.js} +7 -6
- package/chunks/{task-stop-UHDC4N5B.js → task-stop-3GBRYJHM.js} +3 -3
- package/chunks/{task-update-TCNOU3P5.js → task-update-F3UTVJMS.js} +21 -9
- package/chunks/{team-create-6SR4OVRG.js → team-create-Q5DTDDH4.js} +28 -26
- package/chunks/{team-delete-EJ4U4DDP.js → team-delete-54434EB7.js} +9 -6
- package/chunks/{todoWrite-TEYDRS5L.js → todoWrite-4ENGSBUX.js} +5 -5
- package/chunks/{tool-search-OD435A3X.js → tool-search-ABZMSDTU.js} +11 -11
- package/chunks/{web-fetch-6W67H5PO.js → web-fetch-RHZMF3MP.js} +5 -5
- package/chunks/workflow-NEMDQB75.js +1414 -0
- package/chunks/{write-file-475L5OPP.js → write-file-VAEHZPSL.js} +26 -25
- package/chunks/{zh-VCLWO26Y.js → zh-OIXDDQHB.js} +10 -3
- package/chunks/{zh-TW-G3HFHVVT.js → zh-TW-6YFNCKTA.js} +10 -3
- package/cli-entry.js +19 -0
- package/cli.js +11155 -6656
- package/examples/starter/QWEN.md +30 -0
- package/examples/starter/README.md +59 -0
- package/examples/starter/agents/diary.md +86 -0
- package/examples/starter/commands/writing/polish.md +13 -0
- package/examples/starter/example.ts +64 -0
- package/examples/starter/package.json +18 -0
- package/examples/starter/qwen-extension.json +12 -0
- package/examples/starter/skills/synonyms/SKILL.md +48 -0
- package/examples/starter/tsconfig.json +13 -0
- package/fzfWorker.js +1083 -0
- package/locales/ca.js +20 -2
- package/locales/de.js +21 -2
- package/locales/en.js +13 -4
- package/locales/fr.js +22 -2
- package/locales/ja.js +22 -2
- package/locales/pt.js +21 -2
- package/locales/ru.js +20 -2
- package/locales/zh-TW.js +11 -4
- package/locales/zh.js +11 -4
- package/package.json +5 -3
- package/chunks/agent-headless-APVHH7QM.js +0 -50
- package/chunks/chunk-AJIR24J2.js +0 -59
- package/chunks/chunk-SKBPNJEW.js +0 -45
- package/chunks/chunk-XBFVXFB2.js +0 -216
- package/chunks/computer-use-B7VIUI7F.js +0 -825
- package/chunks/contextCommand-63RZ3O5R.js +0 -52
- package/chunks/cron-create-FI5LJVUS.js +0 -140
- package/chunks/exitPlanMode-H323NHB2.js +0 -235
- package/chunks/ripGrep-WSYCWZVK.js +0 -48
- package/chunks/workflow-62DHH4EO.js +0 -708
package/chunks/chunk-XBFVXFB2.js
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
// Force strict mode and setup for ESM
|
|
2
|
-
"use strict";
|
|
3
|
-
import {
|
|
4
|
-
INBOXES_DIR,
|
|
5
|
-
LEADER_NAME,
|
|
6
|
-
TASKS_DIR,
|
|
7
|
-
TEAMMATE_COLORS,
|
|
8
|
-
TEAMS_DIR,
|
|
9
|
-
TEAM_CONFIG_FILENAME
|
|
10
|
-
} from "./chunk-LD2XBG6Z.js";
|
|
11
|
-
import {
|
|
12
|
-
atomicWriteJSON
|
|
13
|
-
} from "./chunk-UAMOBVVW.js";
|
|
14
|
-
import {
|
|
15
|
-
Storage,
|
|
16
|
-
isNodeError
|
|
17
|
-
} from "./chunk-JXAZUMDW.js";
|
|
18
|
-
import {
|
|
19
|
-
init_esbuild_shims
|
|
20
|
-
} from "./chunk-A4BMJM77.js";
|
|
21
|
-
import {
|
|
22
|
-
__name
|
|
23
|
-
} from "./chunk-J2S4EL5Y.js";
|
|
24
|
-
|
|
25
|
-
// packages/core/src/agents/team/teamHelpers.ts
|
|
26
|
-
init_esbuild_shims();
|
|
27
|
-
import * as fs from "node:fs/promises";
|
|
28
|
-
import * as path from "node:path";
|
|
29
|
-
function getTeamsRootDir() {
|
|
30
|
-
return path.join(Storage.getGlobalQwenDir(), TEAMS_DIR);
|
|
31
|
-
}
|
|
32
|
-
__name(getTeamsRootDir, "getTeamsRootDir");
|
|
33
|
-
function getTeamDir(teamName) {
|
|
34
|
-
return path.join(getTeamsRootDir(), teamName);
|
|
35
|
-
}
|
|
36
|
-
__name(getTeamDir, "getTeamDir");
|
|
37
|
-
function getTeamFilePath(teamName) {
|
|
38
|
-
return path.join(getTeamDir(teamName), TEAM_CONFIG_FILENAME);
|
|
39
|
-
}
|
|
40
|
-
__name(getTeamFilePath, "getTeamFilePath");
|
|
41
|
-
function getInboxesDir(teamName) {
|
|
42
|
-
return path.join(getTeamDir(teamName), INBOXES_DIR);
|
|
43
|
-
}
|
|
44
|
-
__name(getInboxesDir, "getInboxesDir");
|
|
45
|
-
function getTasksDir(teamName) {
|
|
46
|
-
return path.join(Storage.getGlobalQwenDir(), TASKS_DIR, teamName);
|
|
47
|
-
}
|
|
48
|
-
__name(getTasksDir, "getTasksDir");
|
|
49
|
-
function sanitizeName(name) {
|
|
50
|
-
return name.toLowerCase().replace(/[^a-z0-9-]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
|
|
51
|
-
}
|
|
52
|
-
__name(sanitizeName, "sanitizeName");
|
|
53
|
-
function formatAgentId(name, teamName) {
|
|
54
|
-
return `${sanitizeName(name)}@${sanitizeName(teamName)}`;
|
|
55
|
-
}
|
|
56
|
-
__name(formatAgentId, "formatAgentId");
|
|
57
|
-
function generateUniqueTeammateName(baseName, existingMembers) {
|
|
58
|
-
const sanitized = sanitizeName(baseName);
|
|
59
|
-
if (!sanitized) {
|
|
60
|
-
throw new Error(
|
|
61
|
-
`Teammate name "${baseName}" sanitizes to an empty string. Choose a name with at least one alphanumeric character.`
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
if (sanitized === LEADER_NAME) {
|
|
65
|
-
throw new Error(
|
|
66
|
-
`"${LEADER_NAME}" is reserved for the team leader. Choose a different teammate name.`
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
const existingNames = new Set(existingMembers.map((m) => m.name));
|
|
70
|
-
if (existingNames.has(sanitized)) {
|
|
71
|
-
const existingList = [...existingNames].join(", ") || "<none>";
|
|
72
|
-
throw new Error(
|
|
73
|
-
`A teammate named "${sanitized}" already exists in this team (existing: ${existingList}). Choose a different name.`
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
return sanitized;
|
|
77
|
-
}
|
|
78
|
-
__name(generateUniqueTeammateName, "generateUniqueTeammateName");
|
|
79
|
-
function assignTeammateColor(existingMembers) {
|
|
80
|
-
const usedColors = new Set(
|
|
81
|
-
existingMembers.map((m) => m.color).filter((c) => c !== void 0)
|
|
82
|
-
);
|
|
83
|
-
for (const color of TEAMMATE_COLORS) {
|
|
84
|
-
if (!usedColors.has(color)) {
|
|
85
|
-
return color;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return TEAMMATE_COLORS[existingMembers.length % TEAMMATE_COLORS.length];
|
|
89
|
-
}
|
|
90
|
-
__name(assignTeammateColor, "assignTeammateColor");
|
|
91
|
-
function clearTeammateColors(members) {
|
|
92
|
-
return members.map((m) => {
|
|
93
|
-
const { color: _, ...rest } = m;
|
|
94
|
-
return rest;
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
__name(clearTeammateColors, "clearTeammateColors");
|
|
98
|
-
function setMemberActive(members, agentId, isActive) {
|
|
99
|
-
return members.map((m) => m.agentId === agentId ? { ...m, isActive } : m);
|
|
100
|
-
}
|
|
101
|
-
__name(setMemberActive, "setMemberActive");
|
|
102
|
-
function findMemberById(members, agentId) {
|
|
103
|
-
return members.find((m) => m.agentId === agentId);
|
|
104
|
-
}
|
|
105
|
-
__name(findMemberById, "findMemberById");
|
|
106
|
-
function findMemberByName(members, name) {
|
|
107
|
-
const sanitized = sanitizeName(name);
|
|
108
|
-
return members.find((m) => m.name === sanitized);
|
|
109
|
-
}
|
|
110
|
-
__name(findMemberByName, "findMemberByName");
|
|
111
|
-
async function readTeamFile(teamName) {
|
|
112
|
-
const filePath = getTeamFilePath(teamName);
|
|
113
|
-
try {
|
|
114
|
-
const raw = await fs.readFile(filePath, "utf-8");
|
|
115
|
-
return JSON.parse(raw);
|
|
116
|
-
} catch (err) {
|
|
117
|
-
if (isNodeError(err) && err.code === "ENOENT") {
|
|
118
|
-
return void 0;
|
|
119
|
-
}
|
|
120
|
-
throw err;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
__name(readTeamFile, "readTeamFile");
|
|
124
|
-
async function writeTeamFile(teamName, teamFile) {
|
|
125
|
-
const filePath = getTeamFilePath(teamName);
|
|
126
|
-
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
127
|
-
await atomicWriteJSON(filePath, teamFile);
|
|
128
|
-
}
|
|
129
|
-
__name(writeTeamFile, "writeTeamFile");
|
|
130
|
-
async function createTeamFile(teamName, teamFile) {
|
|
131
|
-
const filePath = getTeamFilePath(teamName);
|
|
132
|
-
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
133
|
-
await fs.writeFile(filePath, JSON.stringify(teamFile, null, 2) + "\n", {
|
|
134
|
-
encoding: "utf-8",
|
|
135
|
-
flag: "wx"
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
__name(createTeamFile, "createTeamFile");
|
|
139
|
-
function isPidAlive(pid) {
|
|
140
|
-
try {
|
|
141
|
-
process.kill(pid, 0);
|
|
142
|
-
return true;
|
|
143
|
-
} catch (err) {
|
|
144
|
-
return isNodeError(err) && err.code === "EPERM";
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
__name(isPidAlive, "isPidAlive");
|
|
148
|
-
async function tryReclaimStaleTeam(teamName) {
|
|
149
|
-
let existing;
|
|
150
|
-
try {
|
|
151
|
-
existing = await readTeamFile(teamName);
|
|
152
|
-
} catch {
|
|
153
|
-
return false;
|
|
154
|
-
}
|
|
155
|
-
if (!existing) {
|
|
156
|
-
await deleteTeamDirs(teamName);
|
|
157
|
-
return true;
|
|
158
|
-
}
|
|
159
|
-
if (typeof existing.leadPid !== "number" || existing.leadPid <= 0) {
|
|
160
|
-
return false;
|
|
161
|
-
}
|
|
162
|
-
if (existing.leadPid !== process.pid && isPidAlive(existing.leadPid)) {
|
|
163
|
-
return false;
|
|
164
|
-
}
|
|
165
|
-
await deleteTeamDirs(teamName);
|
|
166
|
-
return true;
|
|
167
|
-
}
|
|
168
|
-
__name(tryReclaimStaleTeam, "tryReclaimStaleTeam");
|
|
169
|
-
async function deleteTeamDirs(teamName) {
|
|
170
|
-
const teamDir = getTeamDir(teamName);
|
|
171
|
-
const tasksDir = getTasksDir(teamName);
|
|
172
|
-
await Promise.allSettled([
|
|
173
|
-
fs.rm(teamDir, { recursive: true, force: true }),
|
|
174
|
-
fs.rm(tasksDir, { recursive: true, force: true })
|
|
175
|
-
]);
|
|
176
|
-
}
|
|
177
|
-
__name(deleteTeamDirs, "deleteTeamDirs");
|
|
178
|
-
async function listTeamNames() {
|
|
179
|
-
const teamsRoot = getTeamsRootDir();
|
|
180
|
-
try {
|
|
181
|
-
const entries = await fs.readdir(teamsRoot, {
|
|
182
|
-
withFileTypes: true
|
|
183
|
-
});
|
|
184
|
-
return entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
185
|
-
} catch {
|
|
186
|
-
return [];
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
__name(listTeamNames, "listTeamNames");
|
|
190
|
-
|
|
191
|
-
export {
|
|
192
|
-
getTeamsRootDir,
|
|
193
|
-
getTeamDir,
|
|
194
|
-
getTeamFilePath,
|
|
195
|
-
getInboxesDir,
|
|
196
|
-
getTasksDir,
|
|
197
|
-
sanitizeName,
|
|
198
|
-
formatAgentId,
|
|
199
|
-
generateUniqueTeammateName,
|
|
200
|
-
assignTeammateColor,
|
|
201
|
-
clearTeammateColors,
|
|
202
|
-
setMemberActive,
|
|
203
|
-
findMemberById,
|
|
204
|
-
findMemberByName,
|
|
205
|
-
readTeamFile,
|
|
206
|
-
writeTeamFile,
|
|
207
|
-
createTeamFile,
|
|
208
|
-
tryReclaimStaleTeam,
|
|
209
|
-
deleteTeamDirs,
|
|
210
|
-
listTeamNames
|
|
211
|
-
};
|
|
212
|
-
/**
|
|
213
|
-
* @license
|
|
214
|
-
* Copyright 2025 Qwen
|
|
215
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
216
|
-
*/
|