@dotobokuri/fleet-console 1.17.1 → 1.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/AGENTS.md +10 -9
- package/dist/cli.d.ts +13 -14
- package/dist/cli.mjs +1181 -2428
- package/dist/client/assets/SymbolsNerdFontMono-Regular-CoUzE12l.woff2 +0 -0
- package/dist/client/assets/{_baseUniq-B7sqIsqm.js → _baseUniq-C4_iQlZS.js} +1 -1
- package/dist/client/assets/{arc-CvtYLN8U.js → arc-BBAWxYi5.js} +1 -1
- package/dist/client/assets/{architectureDiagram-Q4EWVU46-rlI7pNrR.js → architectureDiagram-Q4EWVU46-_oQqhexV.js} +1 -1
- package/dist/client/assets/{blockDiagram-DXYQGD6D-nwx9BNRz.js → blockDiagram-DXYQGD6D-3xT9VFiD.js} +1 -1
- package/dist/client/assets/{c4Diagram-AHTNJAMY-CRL_0Ism.js → c4Diagram-AHTNJAMY-S-IMcMW2.js} +1 -1
- package/dist/client/assets/channel-5tV1napa.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-DEkncDR3.js → chunk-4BX2VUAB-tS9Ys0P9.js} +1 -1
- package/dist/client/assets/{chunk-4TB4RGXK-Bnot0Ti1.js → chunk-4TB4RGXK-YZgAG7SW.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-EgKmMTlI.js → chunk-55IACEB6-m-CtqHoO.js} +1 -1
- package/dist/client/assets/{chunk-EDXVE4YY-BKiKnVQE.js → chunk-EDXVE4YY-yoymxaEV.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-BRC398vL.js → chunk-FMBD7UC4-REUkrQAG.js} +1 -1
- package/dist/client/assets/{chunk-OYMX7WX6-D82gQaXN.js → chunk-OYMX7WX6-DzMuL105.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-BYdI5fky.js → chunk-QZHKN3VN-DXFFll8-.js} +1 -1
- package/dist/client/assets/{chunk-YZCP3GAM-BhBgOoc0.js → chunk-YZCP3GAM-CmY7W-gg.js} +1 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-WDM904ap.js +1 -0
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-WDM904ap.js +1 -0
- package/dist/client/assets/clone-BJg9p0cC.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-J8dfEdWD.js → cose-bilkent-S5V4N54A-BupE-a40.js} +1 -1
- package/dist/client/assets/{dagre-KV5264BT-zGd_6_Kv.js → dagre-KV5264BT-Jn67LxMS.js} +1 -1
- package/dist/client/assets/{diagram-5BDNPKRD-BQpQGgZ3.js → diagram-5BDNPKRD-BAeFEORH.js} +1 -1
- package/dist/client/assets/{diagram-G4DWMVQ6-BbgPVITm.js → diagram-G4DWMVQ6-CnZrDABY.js} +1 -1
- package/dist/client/assets/{diagram-MMDJMWI5-lJsMf0Ic.js → diagram-MMDJMWI5-DefG-kXU.js} +1 -1
- package/dist/client/assets/{diagram-TYMM5635-BpEKTzOh.js → diagram-TYMM5635-BPkXKB-Q.js} +1 -1
- package/dist/client/assets/{erDiagram-SMLLAGMA-CHHVwJ_a.js → erDiagram-SMLLAGMA-Bi4jlild.js} +1 -1
- package/dist/client/assets/{flowDiagram-DWJPFMVM-Cun8a4NF.js → flowDiagram-DWJPFMVM-BoZyLO7h.js} +1 -1
- package/dist/client/assets/{ganttDiagram-T4ZO3ILL-CGCwH_yf.js → ganttDiagram-T4ZO3ILL-LgzSNjrh.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-BkY4qdoV.js → gitGraphDiagram-UUTBAWPF-B4fH-hPT.js} +1 -1
- package/dist/client/assets/{graph-HbRzXQtt.js → graph-D3ZAYMLG.js} +1 -1
- package/dist/client/assets/index-DctP_CJP.css +1 -0
- package/dist/client/assets/index-vgEn_EkG.js +404 -0
- package/dist/client/assets/{infoDiagram-42DDH7IO-B21Xtz8v.js → infoDiagram-42DDH7IO-pENdunXd.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-DiABngEH.js → ishikawaDiagram-UXIWVN3A-WakLHKte.js} +1 -1
- package/dist/client/assets/{journeyDiagram-VCZTEJTY-BKZ-Uivu.js → journeyDiagram-VCZTEJTY-CrqXKtzk.js} +1 -1
- package/dist/client/assets/{kanban-definition-6JOO6SKY-CoJzTtsH.js → kanban-definition-6JOO6SKY-DdSC9eJ-.js} +1 -1
- package/dist/client/assets/{layout-D5tmQpxt.js → layout-BI1Oko_a.js} +1 -1
- package/dist/client/assets/{linear-B_riNOXk.js → linear-KUjZtfMe.js} +1 -1
- package/dist/client/assets/{mermaid.core-CyRCP3U3.js → mermaid.core-DNlIf4_3.js} +4 -4
- package/dist/client/assets/{min-Cn8LZZXB.js → min-DCAecveI.js} +1 -1
- package/dist/client/assets/{mindmap-definition-QFDTVHPH-BN_7mZUt.js → mindmap-definition-QFDTVHPH-BSCyQA-4.js} +1 -1
- package/dist/client/assets/{pieDiagram-DEJITSTG-DPP2-sYA.js → pieDiagram-DEJITSTG-C_1I63z5.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-34T5L4WZ-CQ_oo-f9.js → quadrantDiagram-34T5L4WZ-CtqeYPcA.js} +1 -1
- package/dist/client/assets/{requirementDiagram-MS252O5E-BkGq7nxD.js → requirementDiagram-MS252O5E-Cpakdg-s.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-XADWPNL6-BVcoktBR.js → sankeyDiagram-XADWPNL6-CK_eMH3e.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-FGHM5R23-B5rr_VYJ.js → sequenceDiagram-FGHM5R23-D2YygHqF.js} +1 -1
- package/dist/client/assets/{stateDiagram-FHFEXIEX-BV8RqzB9.js → stateDiagram-FHFEXIEX-DEDhnbhU.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-ji50PgJQ.js +1 -0
- package/dist/client/assets/{timeline-definition-GMOUNBTQ-CJ8TM-3t.js → timeline-definition-GMOUNBTQ-Brgny70W.js} +1 -1
- package/dist/client/assets/{vennDiagram-DHZGUBPP-BETSq-Pu.js → vennDiagram-DHZGUBPP-B1I5E8Hy.js} +1 -1
- package/dist/client/assets/{wardley-RL74JXVD-CyT2qapq.js → wardley-RL74JXVD-P0VCYfKI.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-NUSXRM2D-CWHaiUEG.js → wardleyDiagram-NUSXRM2D-DhYC5Sus.js} +1 -1
- package/dist/client/assets/{xychartDiagram-5P7HB3ND-oVPlZ_Yn.js → xychartDiagram-5P7HB3ND-ByJX99rJ.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/fleet-plugins/diff/routes.mjs +260 -32
- package/dist/fleet-plugins/file-explorer/routes.mjs +1 -1
- package/dist/fleet-plugins/skills/routes.mjs +108 -201
- package/dist/fleet-plugins/terminal/routes.mjs +821 -1283
- package/package.json +1 -1
- package/dist/client/assets/channel-Ct9EqqyG.js +0 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-CPMS8Qpo.js +0 -1
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-CPMS8Qpo.js +0 -1
- package/dist/client/assets/clone-C5XNYXHD.js +0 -1
- package/dist/client/assets/index-CfNSyAUJ.css +0 -1
- package/dist/client/assets/index-CzCMC0e-.js +0 -402
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-Bx_fpQWQ.js +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
2
|
+
import path from 'path';
|
|
3
3
|
import { execFile } from 'child_process';
|
|
4
4
|
import fs3 from 'fs/promises';
|
|
5
5
|
import os2 from 'os';
|
|
6
6
|
import crypto4 from 'crypto';
|
|
7
7
|
import 'http';
|
|
8
8
|
import 'stream';
|
|
9
|
-
import { existsSync } from 'fs';
|
|
9
|
+
import { existsSync, accessSync, constants } from 'fs';
|
|
10
10
|
|
|
11
11
|
var __defProp = Object.defineProperty;
|
|
12
12
|
var __export = (target, all) => {
|
|
@@ -15932,14 +15932,101 @@ external_exports.union([
|
|
|
15932
15932
|
id: zRequestId
|
|
15933
15933
|
})
|
|
15934
15934
|
]);
|
|
15935
|
+
var DEFAULT_WINDOWS_PATHEXT = ".COM;.EXE;.BAT;.CMD";
|
|
15936
|
+
var WINDOWS_PATH_SEPARATOR = ";";
|
|
15937
|
+
var WINDOWS_SHIM_EXTENSIONS = /* @__PURE__ */ new Set([".cmd", ".bat"]);
|
|
15938
|
+
var CMD_EXPANSION_SENSITIVE_PATTERN = /[%^]/;
|
|
15939
|
+
function resolvePathBinary(command, env, options = {}) {
|
|
15940
|
+
const resolved = findBinaryPath(command, env, options);
|
|
15941
|
+
return resolved ? wrapWindowsShim(resolved, env, options.platform ?? process.platform) : void 0;
|
|
15942
|
+
}
|
|
15943
|
+
function findBinaryPath(command, env, options = {}) {
|
|
15944
|
+
const platform = options.platform ?? process.platform;
|
|
15945
|
+
const isWindows2 = platform === "win32";
|
|
15946
|
+
const pathValue = isWindows2 ? env.Path ?? env.PATH ?? "" : env.PATH ?? "";
|
|
15947
|
+
const pathExts = isWindows2 ? parsePathExt(env.PATHEXT) : [""];
|
|
15948
|
+
return findOnPath(command, pathValue, pathExts, platform);
|
|
15949
|
+
}
|
|
15950
|
+
function wrapWindowsShim(resolved, env, platform) {
|
|
15951
|
+
if (platform !== "win32" || !WINDOWS_SHIM_EXTENSIONS.has(path.extname(resolved).toLowerCase())) {
|
|
15952
|
+
return { bin: resolved, prefixArgs: [] };
|
|
15953
|
+
}
|
|
15954
|
+
rejectCmdExpansionSensitiveShim(resolved);
|
|
15955
|
+
return {
|
|
15956
|
+
bin: env.ComSpec ?? "cmd.exe",
|
|
15957
|
+
prefixArgs: ["/d", "/s", "/c", "call", forceWindowsArgQuoting(resolved)]
|
|
15958
|
+
};
|
|
15959
|
+
}
|
|
15960
|
+
function rejectCmdExpansionSensitiveShim(resolved) {
|
|
15961
|
+
if (CMD_EXPANSION_SENSITIVE_PATTERN.test(resolved)) {
|
|
15962
|
+
throw new Error(`Refusing to run Windows shim path with cmd.exe expansion-sensitive characters (% or ^): ${resolved}`);
|
|
15963
|
+
}
|
|
15964
|
+
}
|
|
15965
|
+
function forceWindowsArgQuoting(value) {
|
|
15966
|
+
return `${value} `;
|
|
15967
|
+
}
|
|
15968
|
+
function findOnPath(bin, pathValue, pathExts, platform) {
|
|
15969
|
+
const pathSeparator = platform === "win32" ? WINDOWS_PATH_SEPARATOR : path.delimiter;
|
|
15970
|
+
if (hasPathSeparator(bin, platform) || path.isAbsolute(bin)) {
|
|
15971
|
+
return resolveWithExtensions(bin, pathExts, platform);
|
|
15972
|
+
}
|
|
15973
|
+
for (const entry of pathValue.split(pathSeparator)) {
|
|
15974
|
+
const searchDir = entry.length === 0 ? "." : entry;
|
|
15975
|
+
const candidate = resolveWithExtensions(path.join(searchDir, bin), pathExts, platform);
|
|
15976
|
+
if (candidate) {
|
|
15977
|
+
return candidate;
|
|
15978
|
+
}
|
|
15979
|
+
}
|
|
15980
|
+
return void 0;
|
|
15981
|
+
}
|
|
15982
|
+
function resolveWithExtensions(candidate, pathExts, platform) {
|
|
15983
|
+
if (platform !== "win32" || path.extname(candidate).length > 0) {
|
|
15984
|
+
return isAccessibleExecutable(candidate, platform) ? candidate : void 0;
|
|
15985
|
+
}
|
|
15986
|
+
for (const ext of pathExts) {
|
|
15987
|
+
if (ext.length === 0) {
|
|
15988
|
+
continue;
|
|
15989
|
+
}
|
|
15990
|
+
const withExt = `${candidate}${ext}`;
|
|
15991
|
+
if (existsSync(withExt)) {
|
|
15992
|
+
return withExt;
|
|
15993
|
+
}
|
|
15994
|
+
}
|
|
15995
|
+
return isAccessibleExecutable(candidate, platform) ? candidate : void 0;
|
|
15996
|
+
}
|
|
15997
|
+
function isAccessibleExecutable(candidate, platform) {
|
|
15998
|
+
if (!existsSync(candidate)) return false;
|
|
15999
|
+
if (platform === "win32") return true;
|
|
16000
|
+
try {
|
|
16001
|
+
accessSync(candidate, constants.X_OK);
|
|
16002
|
+
return true;
|
|
16003
|
+
} catch {
|
|
16004
|
+
return false;
|
|
16005
|
+
}
|
|
16006
|
+
}
|
|
16007
|
+
function hasPathSeparator(value, platform) {
|
|
16008
|
+
if (value.includes("/")) {
|
|
16009
|
+
return true;
|
|
16010
|
+
}
|
|
16011
|
+
return platform === "win32" && value.includes("\\");
|
|
16012
|
+
}
|
|
16013
|
+
function parsePathExt(pathExt) {
|
|
16014
|
+
const raw = pathExt && pathExt.trim().length > 0 ? pathExt : DEFAULT_WINDOWS_PATHEXT;
|
|
16015
|
+
return raw.split(WINDOWS_PATH_SEPARATOR).map((entry) => entry.trim()).filter((entry) => entry.length > 0);
|
|
16016
|
+
}
|
|
16017
|
+
|
|
16018
|
+
// ../../packages/core-process/src/hidden.ts
|
|
16019
|
+
function withHidden(options) {
|
|
16020
|
+
return { ...options ?? {}, windowsHide: true };
|
|
16021
|
+
}
|
|
15935
16022
|
|
|
15936
16023
|
// ../../packages/core-unified-agent/models.json
|
|
15937
16024
|
var models_default = {
|
|
15938
16025
|
version: 1,
|
|
15939
|
-
updatedAt: "2026-
|
|
16026
|
+
updatedAt: "2026-07-04T00:00:00Z",
|
|
15940
16027
|
providers: {
|
|
15941
16028
|
claude: {
|
|
15942
|
-
name: "Claude Code
|
|
16029
|
+
name: "Claude Code",
|
|
15943
16030
|
defaultModel: "opus[1m]",
|
|
15944
16031
|
models: [
|
|
15945
16032
|
{ modelId: "haiku", name: "Claude Haiku", effort: { supported: true, levels: ["low", "medium", "high", "xhigh", "max"], default: "low" } },
|
|
@@ -15951,50 +16038,8 @@ var models_default = {
|
|
|
15951
16038
|
{ modelId: "claude-opus-4-8[1m]", name: "Claude Opus 4.8 [1M]", effort: { supported: true, levels: ["low", "medium", "high", "xhigh", "max"], default: "high" } }
|
|
15952
16039
|
]
|
|
15953
16040
|
},
|
|
15954
|
-
"claude-zai": {
|
|
15955
|
-
name: "Claude Code with Z.AI GLM",
|
|
15956
|
-
defaultModel: "opus",
|
|
15957
|
-
models: [
|
|
15958
|
-
{ modelId: "haiku", name: "GLM-4.5 Air (Haiku slot)", effort: { supported: false } },
|
|
15959
|
-
{ modelId: "sonnet", name: "GLM-5 Turbo (Sonnet slot)", effort: { supported: false } },
|
|
15960
|
-
{ modelId: "opus", name: "GLM-5.1 (Opus slot)", effort: { supported: false } }
|
|
15961
|
-
],
|
|
15962
|
-
modelsMapping: {
|
|
15963
|
-
haiku: "glm-4.5-air",
|
|
15964
|
-
sonnet: "glm-5-turbo",
|
|
15965
|
-
opus: "glm-5.1"
|
|
15966
|
-
}
|
|
15967
|
-
},
|
|
15968
|
-
"claude-kimi": {
|
|
15969
|
-
name: "Claude Code with Moonshot Kimi",
|
|
15970
|
-
defaultModel: "opus",
|
|
15971
|
-
models: [
|
|
15972
|
-
{ modelId: "haiku", name: "Kimi K2.7 Code (Haiku slot)", effort: { supported: false } },
|
|
15973
|
-
{ modelId: "sonnet", name: "Kimi K2.7 Code (Sonnet slot)", effort: { supported: false } },
|
|
15974
|
-
{ modelId: "opus", name: "Kimi K2.7 Code (Opus slot)", effort: { supported: false } }
|
|
15975
|
-
],
|
|
15976
|
-
modelsMapping: {
|
|
15977
|
-
haiku: "kimi-k2.7-code",
|
|
15978
|
-
sonnet: "kimi-k2.7-code",
|
|
15979
|
-
opus: "kimi-k2.7-code"
|
|
15980
|
-
}
|
|
15981
|
-
},
|
|
15982
|
-
"claude-glm": {
|
|
15983
|
-
name: "Claude Code with ZhipuAI GLM",
|
|
15984
|
-
defaultModel: "opus",
|
|
15985
|
-
models: [
|
|
15986
|
-
{ modelId: "haiku", name: "GLM-4.5-Air (Haiku slot)", effort: { supported: false } },
|
|
15987
|
-
{ modelId: "sonnet", name: "GLM-4.7 (Sonnet slot)", effort: { supported: false } },
|
|
15988
|
-
{ modelId: "opus", name: "GLM-5.1 (Opus slot)", effort: { supported: false } }
|
|
15989
|
-
],
|
|
15990
|
-
modelsMapping: {
|
|
15991
|
-
haiku: "glm-4.5-air",
|
|
15992
|
-
sonnet: "glm-4.7",
|
|
15993
|
-
opus: "glm-5.1"
|
|
15994
|
-
}
|
|
15995
|
-
},
|
|
15996
16041
|
codex: {
|
|
15997
|
-
name: "
|
|
16042
|
+
name: "Codex",
|
|
15998
16043
|
defaultModel: "gpt-5.4",
|
|
15999
16044
|
models: [
|
|
16000
16045
|
{ modelId: "gpt-5.4", name: "GPT-5.4", effort: { supported: true, levels: ["low", "medium", "high", "xhigh"], default: "high" } },
|
|
@@ -16010,7 +16055,9 @@ var models_default = {
|
|
|
16010
16055
|
{ modelId: "opencode-go/deepseek-v4-pro", name: "DeepSeek V4 Pro", effort: { supported: false } },
|
|
16011
16056
|
{ modelId: "opencode-go/glm-5", name: "GLM-5", effort: { supported: false } },
|
|
16012
16057
|
{ modelId: "opencode-go/glm-5.1", name: "GLM-5.1", effort: { supported: false } },
|
|
16013
|
-
{ modelId: "opencode-go/
|
|
16058
|
+
{ modelId: "opencode-go/glm-5.2", name: "GLM-5.2", effort: { supported: false } },
|
|
16059
|
+
{ modelId: "opencode-go/kimi-k2.6", name: "Kimi K2.6 (3x limits)", effort: { supported: false } },
|
|
16060
|
+
{ modelId: "opencode-go/kimi-k2.7-code", name: "Kimi K2.7 Code", effort: { supported: false } }
|
|
16014
16061
|
]
|
|
16015
16062
|
},
|
|
16016
16063
|
cursor: {
|
|
@@ -16023,9 +16070,9 @@ var models_default = {
|
|
|
16023
16070
|
{ modelId: "gemini-3.1-pro", name: "Gemini 3.1 Pro", effort: { supported: false } },
|
|
16024
16071
|
{ modelId: "gemini-3-flash", name: "Gemini 3 Flash", effort: { supported: false } },
|
|
16025
16072
|
{ modelId: "gemini-3.5-flash", name: "Gemini 3.5 Flash", effort: { supported: false } },
|
|
16026
|
-
{ modelId: "
|
|
16027
|
-
{ modelId: "
|
|
16028
|
-
{ modelId: "claude-4
|
|
16073
|
+
{ modelId: "kimi-k2.7-code", name: "Kimi K2.7 Code", effort: { supported: false } },
|
|
16074
|
+
{ modelId: "glm-5.2", name: "GLM 5.2", spawnModelTemplate: "glm-5.2-{effort}", effort: { supported: true, levels: ["high", "max"], default: "max" } },
|
|
16075
|
+
{ modelId: "claude-opus-4-8-thinking", name: "Claude Opus 4.8 Thinking", spawnModelTemplate: "claude-opus-4-8-thinking-{effort}", effort: { supported: true, levels: ["low", "medium", "high", "xhigh", "max"], default: "xhigh" } }
|
|
16029
16076
|
]
|
|
16030
16077
|
}
|
|
16031
16078
|
}
|
|
@@ -16139,77 +16186,6 @@ var CLI_BACKENDS = {
|
|
|
16139
16186
|
usesNpxBridge: true,
|
|
16140
16187
|
defaultMaxTokens: 16384
|
|
16141
16188
|
},
|
|
16142
|
-
"claude-zai": {
|
|
16143
|
-
id: "claude-zai",
|
|
16144
|
-
cliCommand: "claude",
|
|
16145
|
-
protocol: "acp",
|
|
16146
|
-
authRequired: true,
|
|
16147
|
-
npxPackage: "@agentclientprotocol/claude-agent-acp@0.33.1",
|
|
16148
|
-
modes: [
|
|
16149
|
-
{ id: "default", label: "Default" },
|
|
16150
|
-
{ id: "plan", label: "Plan" },
|
|
16151
|
-
{ id: "bypassPermissions", label: "YOLO" }
|
|
16152
|
-
],
|
|
16153
|
-
supportsSessionClose: true,
|
|
16154
|
-
supportsSessionLoad: true,
|
|
16155
|
-
requiresModelAtSpawn: false,
|
|
16156
|
-
usesNpxBridge: true,
|
|
16157
|
-
defaultMaxTokens: 16384,
|
|
16158
|
-
defaultEnv: {
|
|
16159
|
-
ANTHROPIC_BASE_URL: "https://api.z.ai/api/anthropic",
|
|
16160
|
-
API_TIMEOUT_MS: "3000000"
|
|
16161
|
-
}
|
|
16162
|
-
},
|
|
16163
|
-
"claude-kimi": {
|
|
16164
|
-
id: "claude-kimi",
|
|
16165
|
-
cliCommand: "claude",
|
|
16166
|
-
protocol: "acp",
|
|
16167
|
-
authRequired: true,
|
|
16168
|
-
npxPackage: "@agentclientprotocol/claude-agent-acp@0.33.1",
|
|
16169
|
-
modes: [
|
|
16170
|
-
{ id: "default", label: "Default" },
|
|
16171
|
-
{ id: "plan", label: "Plan" },
|
|
16172
|
-
{ id: "bypassPermissions", label: "YOLO" }
|
|
16173
|
-
],
|
|
16174
|
-
supportsSessionClose: true,
|
|
16175
|
-
supportsSessionLoad: true,
|
|
16176
|
-
requiresModelAtSpawn: false,
|
|
16177
|
-
usesNpxBridge: true,
|
|
16178
|
-
defaultMaxTokens: 16384,
|
|
16179
|
-
defaultEnv: {
|
|
16180
|
-
ANTHROPIC_BASE_URL: "https://api.kimi.com/coding/",
|
|
16181
|
-
ENABLE_TOOL_SEARCH: "false",
|
|
16182
|
-
ANTHROPIC_MODEL: "kimi-k2.7-code",
|
|
16183
|
-
CLAUDE_CODE_SUBAGENT_MODEL: "kimi-k2.7-code",
|
|
16184
|
-
API_TIMEOUT_MS: "3000000"
|
|
16185
|
-
}
|
|
16186
|
-
},
|
|
16187
|
-
"claude-glm": {
|
|
16188
|
-
id: "claude-glm",
|
|
16189
|
-
cliCommand: "claude",
|
|
16190
|
-
protocol: "acp",
|
|
16191
|
-
authRequired: true,
|
|
16192
|
-
npxPackage: "@agentclientprotocol/claude-agent-acp@0.33.1",
|
|
16193
|
-
modes: [
|
|
16194
|
-
{ id: "default", label: "Default" },
|
|
16195
|
-
{ id: "plan", label: "Plan" },
|
|
16196
|
-
{ id: "bypassPermissions", label: "YOLO" }
|
|
16197
|
-
],
|
|
16198
|
-
supportsSessionClose: true,
|
|
16199
|
-
supportsSessionLoad: true,
|
|
16200
|
-
requiresModelAtSpawn: false,
|
|
16201
|
-
usesNpxBridge: true,
|
|
16202
|
-
defaultMaxTokens: 16384,
|
|
16203
|
-
defaultEnv: {
|
|
16204
|
-
ANTHROPIC_BASE_URL: "https://open.bigmodel.cn/api/anthropic",
|
|
16205
|
-
// ZhipuAI Claude Code 권장 슬롯 매핑 — 직접 launch(Native PTY) 경로에서도
|
|
16206
|
-
// haiku/sonnet/opus 별칭이 GLM 모델로 해석되도록 env로 고정한다.
|
|
16207
|
-
ANTHROPIC_DEFAULT_HAIKU_MODEL: "glm-4.5-air",
|
|
16208
|
-
ANTHROPIC_DEFAULT_SONNET_MODEL: "glm-4.7",
|
|
16209
|
-
ANTHROPIC_DEFAULT_OPUS_MODEL: "glm-5.1",
|
|
16210
|
-
API_TIMEOUT_MS: "3000000"
|
|
16211
|
-
}
|
|
16212
|
-
},
|
|
16213
16189
|
codex: {
|
|
16214
16190
|
id: "codex",
|
|
16215
16191
|
cliCommand: "codex",
|
|
@@ -16271,75 +16247,6 @@ Object.entries(CLI_BACKENDS).map(([id, backend]) => ({
|
|
|
16271
16247
|
|
|
16272
16248
|
// ../../packages/core-unified-agent/src/client/UnifiedCodexAgentClient.ts
|
|
16273
16249
|
process.platform === "win32";
|
|
16274
|
-
var DEFAULT_WINDOWS_PATHEXT = ".COM;.EXE;.BAT;.CMD";
|
|
16275
|
-
var WINDOWS_PATH_SEPARATOR = ";";
|
|
16276
|
-
var WINDOWS_SHIM_EXTENSIONS = /* @__PURE__ */ new Set([".cmd", ".bat"]);
|
|
16277
|
-
var CMD_EXPANSION_SENSITIVE_PATTERN = /[%^]/;
|
|
16278
|
-
function resolvePathBinary(command, env, options = {}) {
|
|
16279
|
-
const platform = options.platform ?? process.platform;
|
|
16280
|
-
const isWindows2 = platform === "win32";
|
|
16281
|
-
const pathValue = isWindows2 ? env.Path ?? env.PATH ?? "" : env.PATH ?? "";
|
|
16282
|
-
const pathExts = isWindows2 ? parsePathExt(env.PATHEXT) : [""];
|
|
16283
|
-
const resolved = findOnPath(command, pathValue, pathExts, platform);
|
|
16284
|
-
return resolved ? wrapWindowsShim(resolved, env, platform) : void 0;
|
|
16285
|
-
}
|
|
16286
|
-
function wrapWindowsShim(resolved, env, platform) {
|
|
16287
|
-
if (platform !== "win32" || !WINDOWS_SHIM_EXTENSIONS.has(path2.extname(resolved).toLowerCase())) {
|
|
16288
|
-
return { bin: resolved, prefixArgs: [] };
|
|
16289
|
-
}
|
|
16290
|
-
rejectCmdExpansionSensitiveShim(resolved);
|
|
16291
|
-
return {
|
|
16292
|
-
bin: env.ComSpec ?? "cmd.exe",
|
|
16293
|
-
prefixArgs: ["/d", "/s", "/c", "call", forceWindowsArgQuoting(resolved)]
|
|
16294
|
-
};
|
|
16295
|
-
}
|
|
16296
|
-
function rejectCmdExpansionSensitiveShim(resolved) {
|
|
16297
|
-
if (CMD_EXPANSION_SENSITIVE_PATTERN.test(resolved)) {
|
|
16298
|
-
throw new Error(`Refusing to run Windows shim path with cmd.exe expansion-sensitive characters (% or ^): ${resolved}`);
|
|
16299
|
-
}
|
|
16300
|
-
}
|
|
16301
|
-
function forceWindowsArgQuoting(value) {
|
|
16302
|
-
return `${value} `;
|
|
16303
|
-
}
|
|
16304
|
-
function findOnPath(bin, pathValue, pathExts, platform) {
|
|
16305
|
-
const pathSeparator = platform === "win32" ? WINDOWS_PATH_SEPARATOR : path2.delimiter;
|
|
16306
|
-
if (hasPathSeparator(bin, platform) || path2.isAbsolute(bin)) {
|
|
16307
|
-
return resolveWithExtensions(bin, pathExts, platform);
|
|
16308
|
-
}
|
|
16309
|
-
for (const entry of pathValue.split(pathSeparator)) {
|
|
16310
|
-
const searchDir = entry.length === 0 ? "." : entry;
|
|
16311
|
-
const candidate = resolveWithExtensions(path2.join(searchDir, bin), pathExts, platform);
|
|
16312
|
-
if (candidate) {
|
|
16313
|
-
return candidate;
|
|
16314
|
-
}
|
|
16315
|
-
}
|
|
16316
|
-
return void 0;
|
|
16317
|
-
}
|
|
16318
|
-
function resolveWithExtensions(candidate, pathExts, platform) {
|
|
16319
|
-
if (platform !== "win32" || path2.extname(candidate).length > 0) {
|
|
16320
|
-
return existsSync(candidate) ? candidate : void 0;
|
|
16321
|
-
}
|
|
16322
|
-
for (const ext of pathExts) {
|
|
16323
|
-
if (ext.length === 0) {
|
|
16324
|
-
continue;
|
|
16325
|
-
}
|
|
16326
|
-
const withExt = `${candidate}${ext}`;
|
|
16327
|
-
if (existsSync(withExt)) {
|
|
16328
|
-
return withExt;
|
|
16329
|
-
}
|
|
16330
|
-
}
|
|
16331
|
-
return existsSync(candidate) ? candidate : void 0;
|
|
16332
|
-
}
|
|
16333
|
-
function hasPathSeparator(value, platform) {
|
|
16334
|
-
if (value.includes("/")) {
|
|
16335
|
-
return true;
|
|
16336
|
-
}
|
|
16337
|
-
return platform === "win32" && value.includes("\\");
|
|
16338
|
-
}
|
|
16339
|
-
function parsePathExt(pathExt) {
|
|
16340
|
-
const raw = pathExt && pathExt.trim().length > 0 ? pathExt : DEFAULT_WINDOWS_PATHEXT;
|
|
16341
|
-
return raw.split(WINDOWS_PATH_SEPARATOR).map((entry) => entry.trim()).filter((entry) => entry.length > 0);
|
|
16342
|
-
}
|
|
16343
16250
|
|
|
16344
16251
|
// ../fleet-plugins/skills/server/cli.ts
|
|
16345
16252
|
var SKILLS_VERSION = "1.5.14";
|
|
@@ -16378,7 +16285,7 @@ async function runNpmInstall(cliHome) {
|
|
|
16378
16285
|
file2,
|
|
16379
16286
|
args,
|
|
16380
16287
|
// windowsHide: GUI 콘솔에서 하위 프로세스(cmd.exe 심 래퍼) 콘솔 창이 순간 표시되는 것을 막는다.
|
|
16381
|
-
{ shell: false,
|
|
16288
|
+
withHidden({ shell: false, timeout: BOOTSTRAP_TIMEOUT_MS })
|
|
16382
16289
|
);
|
|
16383
16290
|
child.on("close", (code) => {
|
|
16384
16291
|
if (code === 0) resolve();
|
|
@@ -16391,8 +16298,8 @@ async function ensureCliMjs(cliHome, onBootstrap) {
|
|
|
16391
16298
|
if (_cliMjsPath) return _cliMjsPath;
|
|
16392
16299
|
if (_bootstrapPromise) return _bootstrapPromise;
|
|
16393
16300
|
_bootstrapPromise = (async () => {
|
|
16394
|
-
const mjsPath =
|
|
16395
|
-
const pkgPath =
|
|
16301
|
+
const mjsPath = path.join(cliHome, "node_modules", SKILLS_PACKAGE, "bin", "cli.mjs");
|
|
16302
|
+
const pkgPath = path.join(cliHome, "node_modules", SKILLS_PACKAGE, "package.json");
|
|
16396
16303
|
let needsInstall = true;
|
|
16397
16304
|
try {
|
|
16398
16305
|
const raw = await fs3.readFile(pkgPath, "utf-8");
|
|
@@ -16421,7 +16328,7 @@ function createDefaultExecutor(cliHome) {
|
|
|
16421
16328
|
process.execPath,
|
|
16422
16329
|
[mjsPath, ...args],
|
|
16423
16330
|
// windowsHide: GUI 콘솔에서 하위 node.exe 콘솔 창이 순간 표시되는 것을 막는다.
|
|
16424
|
-
{ shell: false,
|
|
16331
|
+
withHidden({ shell: false, cwd, timeout, maxBuffer: 10 * 1024 * 1024 })
|
|
16425
16332
|
);
|
|
16426
16333
|
const stdoutParts = [];
|
|
16427
16334
|
const stderrParts = [];
|
|
@@ -16604,7 +16511,7 @@ var CLI_TIMEOUT_MS = 12e4;
|
|
|
16604
16511
|
async function readSkillSources(cwd) {
|
|
16605
16512
|
const sources = /* @__PURE__ */ new Map();
|
|
16606
16513
|
try {
|
|
16607
|
-
const raw = await fs3.readFile(
|
|
16514
|
+
const raw = await fs3.readFile(path.join(cwd, "skills-lock.json"), "utf-8");
|
|
16608
16515
|
const parsed = JSON.parse(raw);
|
|
16609
16516
|
if (typeof parsed === "object" && parsed !== null) {
|
|
16610
16517
|
for (const [name, entry] of Object.entries(parsed)) {
|
|
@@ -16615,7 +16522,7 @@ async function readSkillSources(cwd) {
|
|
|
16615
16522
|
} catch {
|
|
16616
16523
|
}
|
|
16617
16524
|
try {
|
|
16618
|
-
const raw = await fs3.readFile(
|
|
16525
|
+
const raw = await fs3.readFile(path.join(cwd, ".agents", ".skill-lock.json"), "utf-8");
|
|
16619
16526
|
const parsed = JSON.parse(raw);
|
|
16620
16527
|
if (typeof parsed === "object" && parsed !== null) {
|
|
16621
16528
|
for (const [name, entry] of Object.entries(parsed)) {
|
|
@@ -16980,7 +16887,7 @@ async function handleInstalledFile(req, res, ctx, executor) {
|
|
|
16980
16887
|
return;
|
|
16981
16888
|
}
|
|
16982
16889
|
const skillRoot = entry.path;
|
|
16983
|
-
const skillMdPath =
|
|
16890
|
+
const skillMdPath = path.join(skillRoot, "SKILL.md");
|
|
16984
16891
|
const [realAllowedRoot, realRoot, realMd] = await Promise.all([
|
|
16985
16892
|
// CLI가 보고한 skillRoot 자체도 신뢰하지 않는다 — scope의 정당한 상위 경계
|
|
16986
16893
|
// (project=theater 루트, global=홈)를 벗어나면 읽지 않는다. `.agents/skills`로
|
|
@@ -16993,11 +16900,11 @@ async function handleInstalledFile(req, res, ctx, executor) {
|
|
|
16993
16900
|
ctx.host.http.writeJson(res, 404, { error: "skill_not_found" });
|
|
16994
16901
|
return;
|
|
16995
16902
|
}
|
|
16996
|
-
if (realRoot !== realAllowedRoot && !realRoot.startsWith(realAllowedRoot +
|
|
16903
|
+
if (realRoot !== realAllowedRoot && !realRoot.startsWith(realAllowedRoot + path.sep)) {
|
|
16997
16904
|
ctx.host.http.writeJson(res, 403, { error: "path_outside_theater" });
|
|
16998
16905
|
return;
|
|
16999
16906
|
}
|
|
17000
|
-
if (realMd !== realRoot && !realMd.startsWith(realRoot +
|
|
16907
|
+
if (realMd !== realRoot && !realMd.startsWith(realRoot + path.sep)) {
|
|
17001
16908
|
ctx.host.http.writeJson(res, 403, { error: "path_outside_theater" });
|
|
17002
16909
|
return;
|
|
17003
16910
|
}
|
|
@@ -17012,7 +16919,7 @@ async function handleInstalledFile(req, res, ctx, executor) {
|
|
|
17012
16919
|
var routes_default = definePlugin({
|
|
17013
16920
|
id: "skills",
|
|
17014
16921
|
register(ctx) {
|
|
17015
|
-
const cliHome =
|
|
16922
|
+
const cliHome = path.join(ctx.host.paths.pluginDataDir("skills"), "cli");
|
|
17016
16923
|
const executor = createDefaultExecutor(cliHome);
|
|
17017
16924
|
registerRouter(ctx, "list", async ({ req, res }) => {
|
|
17018
16925
|
await handleList(req, res, ctx, executor);
|