@dotobokuri/fleet-console 1.39.0 → 1.41.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/README.md +2 -3
- package/dist/cli.d.ts +2 -1
- package/dist/cli.mjs +152 -1182
- package/dist/client/assets/{_baseUniq-BDfju2rW.js → _baseUniq-CImzMrtU.js} +1 -1
- package/dist/client/assets/{arc-DWcMv-ui.js → arc-CKb0rHjN.js} +1 -1
- package/dist/client/assets/{architectureDiagram-Q4EWVU46-DhPv_Uba.js → architectureDiagram-Q4EWVU46-BaZipXSe.js} +1 -1
- package/dist/client/assets/{blockDiagram-DXYQGD6D-D7RYcNDP.js → blockDiagram-DXYQGD6D-D4sS9TjR.js} +1 -1
- package/dist/client/assets/{c4Diagram-AHTNJAMY-9_4dQBo3.js → c4Diagram-AHTNJAMY-DvjpMsKx.js} +1 -1
- package/dist/client/assets/channel-dSuGhtYS.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-CQf5x2mT.js → chunk-4BX2VUAB-B47BryhY.js} +1 -1
- package/dist/client/assets/{chunk-4TB4RGXK-eeG8BKQB.js → chunk-4TB4RGXK-DKIhSC52.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-1dkBlsDt.js → chunk-55IACEB6-B3Gvpef7.js} +1 -1
- package/dist/client/assets/{chunk-EDXVE4YY-C5vcF-lT.js → chunk-EDXVE4YY-C4gFtvU8.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-CGelAuwP.js → chunk-FMBD7UC4-BADPieOa.js} +1 -1
- package/dist/client/assets/{chunk-OYMX7WX6-CbKgVyop.js → chunk-OYMX7WX6-BUdtWGUY.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-CT0ppG8R.js → chunk-QZHKN3VN-CMxkeGnM.js} +1 -1
- package/dist/client/assets/{chunk-YZCP3GAM-BEf8DhxB.js → chunk-YZCP3GAM-Br6N7t8d.js} +1 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-DEN4mh7x.js +1 -0
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-DEN4mh7x.js +1 -0
- package/dist/client/assets/clone-BbTnmCoq.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-C6GtvpYi.js → cose-bilkent-S5V4N54A-D1Uw7i5_.js} +1 -1
- package/dist/client/assets/{dagre-KV5264BT-DvrU2BgH.js → dagre-KV5264BT-kop0bHkM.js} +1 -1
- package/dist/client/assets/{diagram-5BDNPKRD-Cy1qKKqt.js → diagram-5BDNPKRD-B9e41qNA.js} +1 -1
- package/dist/client/assets/{diagram-G4DWMVQ6-C4GGKnnD.js → diagram-G4DWMVQ6-Wew8X03k.js} +1 -1
- package/dist/client/assets/{diagram-MMDJMWI5-By7JFsIw.js → diagram-MMDJMWI5-DGBb5Oqa.js} +1 -1
- package/dist/client/assets/{diagram-TYMM5635-YwzVWpID.js → diagram-TYMM5635-CiVNsAz6.js} +1 -1
- package/dist/client/assets/{erDiagram-SMLLAGMA-CDsNlmLk.js → erDiagram-SMLLAGMA-BdemYTgC.js} +1 -1
- package/dist/client/assets/{flowDiagram-DWJPFMVM-BuUpIzTa.js → flowDiagram-DWJPFMVM-CXC6yxhU.js} +1 -1
- package/dist/client/assets/{ganttDiagram-T4ZO3ILL-Dqv9t2x8.js → ganttDiagram-T4ZO3ILL-SMUpaiUg.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-DApQn2c7.js → gitGraphDiagram-UUTBAWPF-UaFgTHEh.js} +1 -1
- package/dist/client/assets/{graph-CyX-IC4n.js → graph-Ch8F0gMI.js} +1 -1
- package/dist/client/assets/index-D38r12i5.css +1 -0
- package/dist/client/assets/index-DkTcJcbj.js +452 -0
- package/dist/client/assets/{infoDiagram-42DDH7IO-DIf3qelw.js → infoDiagram-42DDH7IO-BHBzw0bu.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-CU3QtNdx.js → ishikawaDiagram-UXIWVN3A-CnDea8bw.js} +1 -1
- package/dist/client/assets/{journeyDiagram-VCZTEJTY-Dfq4OBhW.js → journeyDiagram-VCZTEJTY-CI91m8BP.js} +1 -1
- package/dist/client/assets/{kanban-definition-6JOO6SKY-CWSe3eh7.js → kanban-definition-6JOO6SKY-D-rn-rG2.js} +1 -1
- package/dist/client/assets/{layout-CfdpDpEB.js → layout-Cd9zpG94.js} +1 -1
- package/dist/client/assets/{linear-BQA5wLDW.js → linear-Cucr1ojd.js} +1 -1
- package/dist/client/assets/{mermaid.core-BwJS5O4y.js → mermaid.core-G36P12JZ.js} +4 -4
- package/dist/client/assets/{min-Cg-Q6TB5.js → min-CzfCLG7v.js} +1 -1
- package/dist/client/assets/{mindmap-definition-QFDTVHPH-BNXT0q7L.js → mindmap-definition-QFDTVHPH-4e1VjBV7.js} +1 -1
- package/dist/client/assets/{pieDiagram-DEJITSTG-Cot4WNe7.js → pieDiagram-DEJITSTG-m2CGbU51.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-34T5L4WZ-_YW3nZwc.js → quadrantDiagram-34T5L4WZ-BKNPGqMc.js} +1 -1
- package/dist/client/assets/{requirementDiagram-MS252O5E-didEilrX.js → requirementDiagram-MS252O5E-D2BMwnpz.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-XADWPNL6-CIpzp5Ep.js → sankeyDiagram-XADWPNL6-Bm6hTqEh.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-FGHM5R23-CqvwD_CI.js → sequenceDiagram-FGHM5R23-Ds2FEGPj.js} +1 -1
- package/dist/client/assets/{stateDiagram-FHFEXIEX-D492KgCG.js → stateDiagram-FHFEXIEX-CrXn2Tb7.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-BbzpXIlW.js +1 -0
- package/dist/client/assets/{timeline-definition-GMOUNBTQ-BpAwqH0H.js → timeline-definition-GMOUNBTQ-mw053fb5.js} +1 -1
- package/dist/client/assets/{vennDiagram-DHZGUBPP-DDMPO_HG.js → vennDiagram-DHZGUBPP-CAws0Vt2.js} +1 -1
- package/dist/client/assets/{wardley-RL74JXVD-TKEj0wFU.js → wardley-RL74JXVD-DGad2cmz.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-NUSXRM2D-CLjBh2KA.js → wardleyDiagram-NUSXRM2D-BlIyft8I.js} +1 -1
- package/dist/client/assets/{xychartDiagram-5P7HB3ND-DEn2Z9lG.js → xychartDiagram-5P7HB3ND-DHmSULAI.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/client/theme-boot.js +5 -4
- package/dist/fleet-plugins/file-explorer/routes.mjs +484 -56
- package/dist/fleet-plugins/ledger/routes.mjs +56 -80
- package/dist/fleet-plugins/quota/routes.mjs +19806 -0
- package/dist/fleet-plugins/repository/routes.mjs +274 -17
- package/dist/fleet-plugins/scuttlebutt/routes.mjs +6 -431
- package/dist/fleet-plugins/skills/routes.mjs +1 -79
- package/dist/fleet-plugins/terminal/routes.mjs +12449 -2974
- package/package.json +1 -1
- package/dist/client/assets/channel-Cjiuj1tM.js +0 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-B-_6FtAZ.js +0 -1
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-B-_6FtAZ.js +0 -1
- package/dist/client/assets/clone-BF2H_qSP.js +0 -1
- package/dist/client/assets/index-RzoF0XVt.js +0 -452
- package/dist/client/assets/index-bog2t8Rz.css +0 -1
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-DUe9CEL6.js +0 -1
|
@@ -18913,7 +18913,7 @@ var AcpConnection = class extends BaseConnection {
|
|
|
18913
18913
|
}
|
|
18914
18914
|
/** Claude 계열 브릿지인지 여부를 단일 판별 지점으로 유지합니다. */
|
|
18915
18915
|
isClaudeBackend() {
|
|
18916
|
-
return this.cliType === "claude"
|
|
18916
|
+
return this.cliType === "claude";
|
|
18917
18917
|
}
|
|
18918
18918
|
/** Claude bridge 전용 system prompt replacement, strict-MCP와 effort `_meta`를 조립합니다. */
|
|
18919
18919
|
buildClaudeSessionMeta(systemPrompt, strictMcp, effort) {
|
|
@@ -19379,22 +19379,6 @@ var models_default = {
|
|
|
19379
19379
|
{ modelId: "claude-opus-4-8[1m]", name: "Claude Opus 4.8 [1M]", effort: { supported: true, levels: ["low", "medium", "high", "xhigh", "max"], default: "high" } }
|
|
19380
19380
|
]
|
|
19381
19381
|
},
|
|
19382
|
-
"claude-kimi": {
|
|
19383
|
-
name: "Kimi via Claude Code",
|
|
19384
|
-
defaultModel: "kimi-for-coding",
|
|
19385
|
-
models: [
|
|
19386
|
-
{ modelId: "kimi-for-coding", name: "Kimi for Coding", description: "Available on every Kimi Code membership tier (262K context)", effort: { supported: false }, contextWindow: 262144 },
|
|
19387
|
-
{ modelId: "k3", name: "Kimi K3", description: "Available on Moderato and higher tiers (262K context)", effort: { supported: true, levels: ["low", "high", "max"], default: "high" }, contextWindow: 262144 },
|
|
19388
|
-
{ modelId: "k3[1m]", name: "Kimi K3 [1M]", description: "Available on Allegretto and higher tiers (1M context)", effort: { supported: true, levels: ["low", "high", "max"], default: "high" }, contextWindow: 1048576 },
|
|
19389
|
-
{ modelId: "kimi-for-coding-highspeed", name: "Kimi for Coding Highspeed", description: "Available on Allegretto and higher tiers (262K context)", effort: { supported: false }, contextWindow: 262144 }
|
|
19390
|
-
],
|
|
19391
|
-
modelsMapping: {
|
|
19392
|
-
haiku: "kimi-for-coding",
|
|
19393
|
-
sonnet: "kimi-for-coding",
|
|
19394
|
-
opus: "kimi-for-coding",
|
|
19395
|
-
fable: "kimi-for-coding"
|
|
19396
|
-
}
|
|
19397
|
-
},
|
|
19398
19382
|
codex: {
|
|
19399
19383
|
name: "Codex",
|
|
19400
19384
|
defaultModel: "gpt-5.6-sol",
|
|
@@ -19409,23 +19393,6 @@ var models_default = {
|
|
|
19409
19393
|
{ modelId: "gpt-5.5-fast", name: "GPT-5.5 Fast", providerModelId: "gpt-5.5", serviceTier: "priority", effort: { supported: true, levels: ["low", "medium", "high", "xhigh"], default: "high" } }
|
|
19410
19394
|
]
|
|
19411
19395
|
},
|
|
19412
|
-
"opencode-go": {
|
|
19413
|
-
name: "OpenCode Go",
|
|
19414
|
-
defaultModel: "opencode-go/deepseek-v4-flash",
|
|
19415
|
-
models: [
|
|
19416
|
-
{ modelId: "opencode-go/deepseek-v4-flash", name: "DeepSeek V4 Flash", effort: { supported: false } },
|
|
19417
|
-
{ modelId: "opencode-go/deepseek-v4-pro", name: "DeepSeek V4 Pro", effort: { supported: false } },
|
|
19418
|
-
{ modelId: "opencode-go/glm-5.2", name: "GLM-5.2", effort: { supported: false } },
|
|
19419
|
-
{ modelId: "opencode-go/grok-4.5", name: "Grok 4.5", effort: { supported: false } },
|
|
19420
|
-
{ modelId: "opencode-go/kimi-k3", name: "Kimi K3", effort: { supported: false } },
|
|
19421
|
-
{ modelId: "opencode-go/kimi-k2.7-code", name: "Kimi K2.7 Code", effort: { supported: false } },
|
|
19422
|
-
{ modelId: "opencode-go/mimo-v2.5", name: "MiMo V2.5", effort: { supported: false } },
|
|
19423
|
-
{ modelId: "opencode-go/mimo-v2.5-pro", name: "MiMo V2.5 Pro", effort: { supported: false } },
|
|
19424
|
-
{ modelId: "opencode-go/minimax-m3", name: "MiniMax M3", effort: { supported: false } },
|
|
19425
|
-
{ modelId: "opencode-go/qwen3.7-max", name: "Qwen3.7 Max", effort: { supported: false } },
|
|
19426
|
-
{ modelId: "opencode-go/qwen3.7-plus", name: "Qwen3.7 Plus", effort: { supported: false } }
|
|
19427
|
-
]
|
|
19428
|
-
},
|
|
19429
19396
|
cursor: {
|
|
19430
19397
|
name: "Cursor Agent",
|
|
19431
19398
|
defaultModel: "auto",
|
|
@@ -19527,16 +19494,13 @@ var ModelEntrySchema = external_exports.object({
|
|
|
19527
19494
|
});
|
|
19528
19495
|
}
|
|
19529
19496
|
});
|
|
19530
|
-
var ModelsMappingSchema = external_exports.record(external_exports.string(), external_exports.string());
|
|
19531
19497
|
var ProviderSchema = external_exports.object({
|
|
19532
19498
|
/** 프로바이더 표시 이름 */
|
|
19533
19499
|
name: external_exports.string(),
|
|
19534
19500
|
/** 기본 모델 ID */
|
|
19535
19501
|
defaultModel: external_exports.string(),
|
|
19536
19502
|
/** 사용 가능한 모델 목록 */
|
|
19537
|
-
models: external_exports.array(ModelEntrySchema).min(1)
|
|
19538
|
-
/** modelId와 연관된 매핑 모델 (선택) */
|
|
19539
|
-
modelsMapping: ModelsMappingSchema.optional()
|
|
19503
|
+
models: external_exports.array(ModelEntrySchema).min(1)
|
|
19540
19504
|
}).check((ctx) => {
|
|
19541
19505
|
const ids = new Set(ctx.value.models.map((m) => m.modelId));
|
|
19542
19506
|
if (!ids.has(ctx.value.defaultModel)) {
|
|
@@ -19602,13 +19566,6 @@ function resolveCursorSpawnModel(modelId, effort) {
|
|
|
19602
19566
|
}
|
|
19603
19567
|
return model.spawnModelTemplate.replace("{effort}", resolvedLevel);
|
|
19604
19568
|
}
|
|
19605
|
-
function getProviderModelsMapping(cli) {
|
|
19606
|
-
const provider = registry2.providers[cli];
|
|
19607
|
-
if (!provider) {
|
|
19608
|
-
throw new Error(`\uC54C \uC218 \uC5C6\uB294 \uD504\uB85C\uBC14\uC774\uB354: "${cli}"`);
|
|
19609
|
-
}
|
|
19610
|
-
return provider.modelsMapping ? structuredClone(provider.modelsMapping) : null;
|
|
19611
|
-
}
|
|
19612
19569
|
function findProviderModel(cli, modelId) {
|
|
19613
19570
|
const provider = registry2.providers[cli];
|
|
19614
19571
|
if (!provider) {
|
|
@@ -19640,32 +19597,6 @@ var CLI_BACKENDS = {
|
|
|
19640
19597
|
usesNpxBridge: true,
|
|
19641
19598
|
defaultMaxTokens: 16384
|
|
19642
19599
|
},
|
|
19643
|
-
"claude-kimi": {
|
|
19644
|
-
id: "claude-kimi",
|
|
19645
|
-
cliCommand: "claude",
|
|
19646
|
-
protocol: "acp",
|
|
19647
|
-
authRequired: true,
|
|
19648
|
-
npxPackage: "@agentclientprotocol/claude-agent-acp@0.33.1",
|
|
19649
|
-
modes: [
|
|
19650
|
-
{ id: "default", label: "Default" },
|
|
19651
|
-
{ id: "plan", label: "Plan" },
|
|
19652
|
-
{ id: "bypassPermissions", label: "YOLO" }
|
|
19653
|
-
],
|
|
19654
|
-
supportsSessionClose: true,
|
|
19655
|
-
supportsSessionLoad: true,
|
|
19656
|
-
requiresModelAtSpawn: false,
|
|
19657
|
-
usesNpxBridge: true,
|
|
19658
|
-
defaultMaxTokens: 262144,
|
|
19659
|
-
defaultEnv: {
|
|
19660
|
-
ANTHROPIC_BASE_URL: "https://api.kimi.com/coding/",
|
|
19661
|
-
ANTHROPIC_MODEL: "kimi-for-coding",
|
|
19662
|
-
ANTHROPIC_DEFAULT_HAIKU_MODEL: "kimi-for-coding",
|
|
19663
|
-
ANTHROPIC_DEFAULT_SONNET_MODEL: "kimi-for-coding",
|
|
19664
|
-
ANTHROPIC_DEFAULT_OPUS_MODEL: "kimi-for-coding",
|
|
19665
|
-
CLAUDE_CODE_SUBAGENT_MODEL: "kimi-for-coding",
|
|
19666
|
-
API_TIMEOUT_MS: "3000000"
|
|
19667
|
-
}
|
|
19668
|
-
},
|
|
19669
19600
|
codex: {
|
|
19670
19601
|
id: "codex",
|
|
19671
19602
|
cliCommand: "codex",
|
|
@@ -19683,22 +19614,6 @@ var CLI_BACKENDS = {
|
|
|
19683
19614
|
usesNpxBridge: false,
|
|
19684
19615
|
defaultMaxTokens: 1e5
|
|
19685
19616
|
},
|
|
19686
|
-
"opencode-go": {
|
|
19687
|
-
id: "opencode-go",
|
|
19688
|
-
cliCommand: "opencode",
|
|
19689
|
-
protocol: "acp",
|
|
19690
|
-
authRequired: false,
|
|
19691
|
-
acpArgs: ["acp"],
|
|
19692
|
-
modes: [
|
|
19693
|
-
{ id: "build", label: "Build" },
|
|
19694
|
-
{ id: "plan", label: "Plan" }
|
|
19695
|
-
],
|
|
19696
|
-
supportsSessionClose: true,
|
|
19697
|
-
supportsSessionLoad: true,
|
|
19698
|
-
requiresModelAtSpawn: true,
|
|
19699
|
-
usesNpxBridge: false,
|
|
19700
|
-
defaultMaxTokens: 128e3
|
|
19701
|
-
},
|
|
19702
19617
|
cursor: {
|
|
19703
19618
|
id: "cursor",
|
|
19704
19619
|
cliCommand: "cursor-agent",
|
|
@@ -19758,10 +19673,7 @@ function getBackendConfig(cli) {
|
|
|
19758
19673
|
function getYoloModeId(cli) {
|
|
19759
19674
|
switch (cli) {
|
|
19760
19675
|
case "claude":
|
|
19761
|
-
case "claude-kimi":
|
|
19762
19676
|
return "bypassPermissions";
|
|
19763
|
-
case "opencode-go":
|
|
19764
|
-
return "build";
|
|
19765
19677
|
case "cursor":
|
|
19766
19678
|
return "agent";
|
|
19767
19679
|
case "codex":
|
|
@@ -19972,11 +19884,7 @@ var UnifiedClaudeAgentClient = class extends EventEmitter {
|
|
|
19972
19884
|
firstPromptPending = null;
|
|
19973
19885
|
currentEffort = null;
|
|
19974
19886
|
detector = new CliDetector();
|
|
19975
|
-
cliType;
|
|
19976
|
-
constructor(cliType = "claude") {
|
|
19977
|
-
super();
|
|
19978
|
-
this.cliType = cliType;
|
|
19979
|
-
}
|
|
19887
|
+
cliType = "claude";
|
|
19980
19888
|
on(event, listener) {
|
|
19981
19889
|
return super.on(event, listener);
|
|
19982
19890
|
}
|
|
@@ -19992,31 +19900,14 @@ var UnifiedClaudeAgentClient = class extends EventEmitter {
|
|
|
19992
19900
|
async connect(options) {
|
|
19993
19901
|
await this.disconnect();
|
|
19994
19902
|
const systemPromptMode = options.systemPromptMode ?? "prepend";
|
|
19995
|
-
const requestedCli = options.cli ?? this.cliType;
|
|
19996
|
-
if (systemPromptMode === "replace" && requestedCli !== "claude" && requestedCli !== "claude-kimi") {
|
|
19997
|
-
throw new Error(
|
|
19998
|
-
`system prompt replacement is not supported by the "${requestedCli}" backend`
|
|
19999
|
-
);
|
|
20000
|
-
}
|
|
20001
19903
|
if (options.cli && options.cli !== this.cliType) {
|
|
20002
19904
|
throw new Error(`UnifiedClaudeAgentClient\uB294 ${this.cliType} CLI\uB9CC \uC9C0\uC6D0\uD569\uB2C8\uB2E4.`);
|
|
20003
19905
|
}
|
|
20004
19906
|
const acpMcpServers = this.resolveMcpServers(options.mcpServers);
|
|
20005
19907
|
const spawnConfig = createSpawnConfig(this.cliType, options);
|
|
20006
|
-
const modelsMapping = getProviderModelsMapping(this.cliType);
|
|
20007
|
-
const mappingEnv = {};
|
|
20008
|
-
if (modelsMapping) {
|
|
20009
|
-
for (const [modelId, mappedModel] of Object.entries(modelsMapping)) {
|
|
20010
|
-
const envKey = `ANTHROPIC_DEFAULT_${modelId.toUpperCase()}_MODEL`;
|
|
20011
|
-
mappingEnv[envKey] = mappedModel;
|
|
20012
|
-
}
|
|
20013
|
-
}
|
|
20014
19908
|
const backendConfig = getBackendConfig(this.cliType);
|
|
20015
19909
|
const defaultEnv = backendConfig.defaultEnv ?? {};
|
|
20016
|
-
const cleanEnv = cleanEnvironment(process.env, { ...defaultEnv, ...
|
|
20017
|
-
if (this.cliType === "claude-kimi") {
|
|
20018
|
-
delete cleanEnv.ANTHROPIC_AUTH_TOKEN;
|
|
20019
|
-
}
|
|
19910
|
+
const cleanEnv = cleanEnvironment(process.env, { ...defaultEnv, ...options.env });
|
|
20020
19911
|
if (defaultEnv.ANTHROPIC_BASE_URL && !cleanEnv.ANTHROPIC_API_KEY && !cleanEnv.ANTHROPIC_AUTH_TOKEN) {
|
|
20021
19912
|
throw new Error(
|
|
20022
19913
|
`[${this.cliType}] ANTHROPIC_API_KEY \uD658\uACBD\uBCC0\uC218\uAC00 \uC124\uC815\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. ${getProviderModels(this.cliType).name} API \uD0A4\uB97C \uC124\uC815\uD574\uC8FC\uC138\uC694.`
|
|
@@ -22161,331 +22052,15 @@ var UnifiedCursorAgentClient = class extends EventEmitter {
|
|
|
22161
22052
|
return patterns.some((pattern) => pattern.test(text));
|
|
22162
22053
|
}
|
|
22163
22054
|
};
|
|
22164
|
-
var UnifiedOpenCodeAgentClient = class _UnifiedOpenCodeAgentClient extends EventEmitter {
|
|
22165
|
-
providerId;
|
|
22166
|
-
connection = null;
|
|
22167
|
-
sessionId = null;
|
|
22168
|
-
sessionCwd = null;
|
|
22169
|
-
currentSystemPrompt = null;
|
|
22170
|
-
/** 첫 프롬프트 전송 시 systemPrompt를 텍스트 블록으로 앞에 붙이기 위한 플래그 */
|
|
22171
|
-
firstPromptPending = null;
|
|
22172
|
-
detector = new CliDetector();
|
|
22173
|
-
constructor(providerId) {
|
|
22174
|
-
super();
|
|
22175
|
-
this.providerId = providerId;
|
|
22176
|
-
}
|
|
22177
|
-
on(event, listener) {
|
|
22178
|
-
return super.on(event, listener);
|
|
22179
|
-
}
|
|
22180
|
-
once(event, listener) {
|
|
22181
|
-
return super.once(event, listener);
|
|
22182
|
-
}
|
|
22183
|
-
off(event, listener) {
|
|
22184
|
-
return super.off(event, listener);
|
|
22185
|
-
}
|
|
22186
|
-
emitTyped(event, ...args) {
|
|
22187
|
-
return super.emit(event, ...args);
|
|
22188
|
-
}
|
|
22189
|
-
async connect(options) {
|
|
22190
|
-
await this.disconnect();
|
|
22191
|
-
if (options.cli && options.cli !== this.providerId) {
|
|
22192
|
-
throw new Error(`UnifiedOpenCodeAgentClient\uB294 ${this.providerId} CLI\uB9CC \uC9C0\uC6D0\uD569\uB2C8\uB2E4.`);
|
|
22193
|
-
}
|
|
22194
|
-
const acpMcpServers = this.resolveMcpServers(options.mcpServers);
|
|
22195
|
-
const spawnConfig = createSpawnConfig(this.providerId, options);
|
|
22196
|
-
const cleanEnv = cleanEnvironment(process.env, options.env);
|
|
22197
|
-
cleanEnv.OPENCODE_CONFIG_CONTENT = JSON.stringify({
|
|
22198
|
-
agent: {
|
|
22199
|
-
explore: { disable: true },
|
|
22200
|
-
plan: { disable: true },
|
|
22201
|
-
general: { disable: true }
|
|
22202
|
-
}
|
|
22203
|
-
});
|
|
22204
|
-
const connection = new AcpConnection({
|
|
22205
|
-
command: spawnConfig.command,
|
|
22206
|
-
args: spawnConfig.args,
|
|
22207
|
-
cliType: this.providerId,
|
|
22208
|
-
cwd: options.cwd,
|
|
22209
|
-
env: cleanEnv,
|
|
22210
|
-
requestTimeout: options.timeout,
|
|
22211
|
-
initTimeout: options.timeout,
|
|
22212
|
-
promptIdleTimeout: options.promptIdleTimeout,
|
|
22213
|
-
clientInfo: options.clientInfo,
|
|
22214
|
-
autoApprove: options.autoApprove,
|
|
22215
|
-
fsAccess: options.fsAccess
|
|
22216
|
-
});
|
|
22217
|
-
this.connection = connection;
|
|
22218
|
-
this.setupEventForwarding();
|
|
22219
|
-
const recentLogs = [];
|
|
22220
|
-
const collectLog = (message) => {
|
|
22221
|
-
recentLogs.push(message);
|
|
22222
|
-
if (recentLogs.length > 30) {
|
|
22223
|
-
recentLogs.shift();
|
|
22224
|
-
}
|
|
22225
|
-
};
|
|
22226
|
-
connection.on("log", collectLog);
|
|
22227
|
-
let session;
|
|
22228
|
-
try {
|
|
22229
|
-
session = await connection.connect(
|
|
22230
|
-
options.cwd,
|
|
22231
|
-
options.sessionId,
|
|
22232
|
-
acpMcpServers,
|
|
22233
|
-
void 0
|
|
22234
|
-
);
|
|
22235
|
-
} catch (error51) {
|
|
22236
|
-
const connectionError = this.buildConnectionError(error51, recentLogs);
|
|
22237
|
-
await this.cleanupFailedConnection();
|
|
22238
|
-
throw connectionError;
|
|
22239
|
-
} finally {
|
|
22240
|
-
connection.off("log", collectLog);
|
|
22241
|
-
}
|
|
22242
|
-
return this.finalizeConnect(options, session);
|
|
22243
|
-
}
|
|
22244
|
-
async disconnect() {
|
|
22245
|
-
if (!this.connection) {
|
|
22246
|
-
this.clearSessionState();
|
|
22247
|
-
return;
|
|
22248
|
-
}
|
|
22249
|
-
const conn = this.connection;
|
|
22250
|
-
await conn.disconnect();
|
|
22251
|
-
conn.removeAllListeners();
|
|
22252
|
-
this.connection = null;
|
|
22253
|
-
this.clearSessionState();
|
|
22254
|
-
}
|
|
22255
|
-
async endSession() {
|
|
22256
|
-
if (!this.connection || !this.sessionId) {
|
|
22257
|
-
throw new Error("\uC5F0\uACB0\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4");
|
|
22258
|
-
}
|
|
22259
|
-
await this.connection.endSession(this.sessionId);
|
|
22260
|
-
this.sessionId = null;
|
|
22261
|
-
}
|
|
22262
|
-
getConnectionInfo() {
|
|
22263
|
-
return {
|
|
22264
|
-
cli: this.connection ? this.providerId : null,
|
|
22265
|
-
protocol: this.connection ? "acp" : null,
|
|
22266
|
-
sessionId: this.sessionId,
|
|
22267
|
-
state: this.connection ? this.connection.connectionState : "disconnected"
|
|
22268
|
-
};
|
|
22269
|
-
}
|
|
22270
|
-
async detectClis() {
|
|
22271
|
-
return this.detector.detectAll(true);
|
|
22272
|
-
}
|
|
22273
|
-
async sendMessage(content) {
|
|
22274
|
-
if (!this.connection || !this.sessionId) {
|
|
22275
|
-
throw new Error("\uC5F0\uACB0\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4");
|
|
22276
|
-
}
|
|
22277
|
-
const systemPrompt = this.firstPromptPending;
|
|
22278
|
-
if (!systemPrompt) {
|
|
22279
|
-
return this.connection.sendPrompt(this.sessionId, content);
|
|
22280
|
-
}
|
|
22281
|
-
const userBlocks = typeof content === "string" ? [{ type: "text", text: content }] : content;
|
|
22282
|
-
const response = await this.connection.sendPrompt(this.sessionId, [
|
|
22283
|
-
{ type: "text", text: systemPrompt },
|
|
22284
|
-
...userBlocks
|
|
22285
|
-
]);
|
|
22286
|
-
this.firstPromptPending = null;
|
|
22287
|
-
return response;
|
|
22288
|
-
}
|
|
22289
|
-
async cancelPrompt() {
|
|
22290
|
-
if (!this.connection || !this.sessionId) {
|
|
22291
|
-
throw new Error("\uC5F0\uACB0\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4");
|
|
22292
|
-
}
|
|
22293
|
-
await this.connection.cancelSession(this.sessionId);
|
|
22294
|
-
}
|
|
22295
|
-
async setModel(model) {
|
|
22296
|
-
if (!this.connection || !this.sessionId) {
|
|
22297
|
-
throw new Error("\uC5F0\uACB0\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4");
|
|
22298
|
-
}
|
|
22299
|
-
await this.connection.setModel(this.sessionId, model);
|
|
22300
|
-
}
|
|
22301
|
-
async setConfigOption(configId, value) {
|
|
22302
|
-
if (!this.connection || !this.sessionId) {
|
|
22303
|
-
throw new Error("\uC5F0\uACB0\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4");
|
|
22304
|
-
}
|
|
22305
|
-
await this.connection.setConfigOption(this.sessionId, configId, value);
|
|
22306
|
-
}
|
|
22307
|
-
async setMode(mode) {
|
|
22308
|
-
if (!this.connection || !this.sessionId) {
|
|
22309
|
-
throw new Error("\uC5F0\uACB0\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4");
|
|
22310
|
-
}
|
|
22311
|
-
await this.connection.setMode(this.sessionId, mode);
|
|
22312
|
-
}
|
|
22313
|
-
async setYoloMode(enabled) {
|
|
22314
|
-
return this.setMode(enabled ? getYoloModeId(this.providerId) : "plan");
|
|
22315
|
-
}
|
|
22316
|
-
getAvailableModes() {
|
|
22317
|
-
return getBackendConfig(this.providerId).modes ?? [];
|
|
22318
|
-
}
|
|
22319
|
-
getAvailableModels() {
|
|
22320
|
-
return getProviderModels(this.providerId);
|
|
22321
|
-
}
|
|
22322
|
-
getCurrentSystemPrompt() {
|
|
22323
|
-
return this.currentSystemPrompt;
|
|
22324
|
-
}
|
|
22325
|
-
async loadSession(sessionId, mcpServers) {
|
|
22326
|
-
if (!this.connection) {
|
|
22327
|
-
throw new Error("\uC5F0\uACB0\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4");
|
|
22328
|
-
}
|
|
22329
|
-
await this.connection.loadSession({
|
|
22330
|
-
sessionId,
|
|
22331
|
-
cwd: this.sessionCwd ?? process.cwd(),
|
|
22332
|
-
mcpServers: this.resolveMcpServers(mcpServers)
|
|
22333
|
-
});
|
|
22334
|
-
this.sessionId = sessionId;
|
|
22335
|
-
this.currentSystemPrompt = null;
|
|
22336
|
-
this.firstPromptPending = null;
|
|
22337
|
-
}
|
|
22338
|
-
async resetSession(cwd) {
|
|
22339
|
-
if (!this.connection) {
|
|
22340
|
-
throw new Error("\uC5F0\uACB0\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4");
|
|
22341
|
-
}
|
|
22342
|
-
const targetCwd = cwd ?? this.sessionCwd ?? process.cwd();
|
|
22343
|
-
await this.disconnect();
|
|
22344
|
-
const newClient = new _UnifiedOpenCodeAgentClient(this.providerId);
|
|
22345
|
-
const result = await newClient.connect({
|
|
22346
|
-
cwd: targetCwd,
|
|
22347
|
-
autoApprove: true,
|
|
22348
|
-
systemPrompt: this.currentSystemPrompt ?? void 0
|
|
22349
|
-
});
|
|
22350
|
-
this.connection = newClient.connection;
|
|
22351
|
-
this.sessionId = newClient.sessionId;
|
|
22352
|
-
this.sessionCwd = newClient.sessionCwd;
|
|
22353
|
-
this.currentSystemPrompt = newClient.currentSystemPrompt;
|
|
22354
|
-
this.firstPromptPending = newClient.firstPromptPending;
|
|
22355
|
-
this.setupEventForwarding();
|
|
22356
|
-
newClient.removeAllListeners();
|
|
22357
|
-
return {
|
|
22358
|
-
cli: this.providerId,
|
|
22359
|
-
protocol: "acp",
|
|
22360
|
-
session: result.session
|
|
22361
|
-
};
|
|
22362
|
-
}
|
|
22363
|
-
resolveMcpServers(servers) {
|
|
22364
|
-
return servers?.length ? mcpServerConfigsToAcp(servers) : [];
|
|
22365
|
-
}
|
|
22366
|
-
async finalizeConnect(options, session) {
|
|
22367
|
-
if (options.yoloMode && session.sessionId) {
|
|
22368
|
-
try {
|
|
22369
|
-
await this.connection.setMode(session.sessionId, getYoloModeId(this.providerId));
|
|
22370
|
-
} catch {
|
|
22371
|
-
}
|
|
22372
|
-
}
|
|
22373
|
-
if (options.model && session.sessionId) {
|
|
22374
|
-
try {
|
|
22375
|
-
await this.connection.setModel(session.sessionId, options.model);
|
|
22376
|
-
} catch {
|
|
22377
|
-
}
|
|
22378
|
-
}
|
|
22379
|
-
this.sessionId = session.sessionId;
|
|
22380
|
-
this.sessionCwd = options.cwd;
|
|
22381
|
-
this.currentSystemPrompt = options.systemPrompt ?? null;
|
|
22382
|
-
this.firstPromptPending = options.sessionId ? null : this.currentSystemPrompt;
|
|
22383
|
-
return {
|
|
22384
|
-
cli: this.providerId,
|
|
22385
|
-
protocol: "acp",
|
|
22386
|
-
session
|
|
22387
|
-
};
|
|
22388
|
-
}
|
|
22389
|
-
clearSessionState() {
|
|
22390
|
-
this.sessionId = null;
|
|
22391
|
-
this.sessionCwd = null;
|
|
22392
|
-
this.currentSystemPrompt = null;
|
|
22393
|
-
this.firstPromptPending = null;
|
|
22394
|
-
}
|
|
22395
|
-
setupEventForwarding() {
|
|
22396
|
-
if (!this.connection) return;
|
|
22397
|
-
this.connection.on("stateChange", (state) => {
|
|
22398
|
-
this.emitTyped("stateChange", state);
|
|
22399
|
-
});
|
|
22400
|
-
this.connection.on("userMessageChunk", (text, sessionId) => {
|
|
22401
|
-
this.emitTyped("userMessageChunk", text, sessionId);
|
|
22402
|
-
});
|
|
22403
|
-
this.connection.on("messageChunk", (text, sessionId) => {
|
|
22404
|
-
this.emitTyped("messageChunk", text, sessionId);
|
|
22405
|
-
});
|
|
22406
|
-
this.connection.on("thoughtChunk", (text, sessionId) => {
|
|
22407
|
-
this.emitTyped("thoughtChunk", text, sessionId);
|
|
22408
|
-
});
|
|
22409
|
-
this.connection.on("toolCall", (title, status, sessionId, data) => {
|
|
22410
|
-
this.emitTyped("toolCall", title, status, sessionId, data);
|
|
22411
|
-
});
|
|
22412
|
-
this.connection.on("toolCallUpdate", (title, status, sessionId, data) => {
|
|
22413
|
-
this.emitTyped("toolCallUpdate", title, status, sessionId, data);
|
|
22414
|
-
});
|
|
22415
|
-
this.connection.on("plan", (plan, sessionId) => {
|
|
22416
|
-
this.emitTyped("plan", plan, sessionId);
|
|
22417
|
-
});
|
|
22418
|
-
this.connection.on("availableCommandsUpdate", (commands, sessionId) => {
|
|
22419
|
-
this.emitTyped("availableCommandsUpdate", commands, sessionId);
|
|
22420
|
-
});
|
|
22421
|
-
this.connection.on("sessionUpdate", (update) => {
|
|
22422
|
-
this.emitTyped("sessionUpdate", update);
|
|
22423
|
-
});
|
|
22424
|
-
this.connection.on("permissionRequest", (params, resolve) => {
|
|
22425
|
-
this.emitTyped("permissionRequest", params, resolve);
|
|
22426
|
-
});
|
|
22427
|
-
this.connection.on("fileRead", (params, resolve) => {
|
|
22428
|
-
this.emitTyped("fileRead", params, resolve);
|
|
22429
|
-
});
|
|
22430
|
-
this.connection.on("fileWrite", (params, resolve) => {
|
|
22431
|
-
this.emitTyped("fileWrite", params, resolve);
|
|
22432
|
-
});
|
|
22433
|
-
this.connection.on("promptComplete", (sessionId) => {
|
|
22434
|
-
this.emitTyped("promptComplete", sessionId);
|
|
22435
|
-
});
|
|
22436
|
-
this.connection.on("error", (err) => {
|
|
22437
|
-
this.emitTyped("error", err);
|
|
22438
|
-
});
|
|
22439
|
-
this.connection.on("exit", (code, signal) => {
|
|
22440
|
-
this.emitTyped("exit", code, signal);
|
|
22441
|
-
});
|
|
22442
|
-
this.connection.on("log", (msg) => {
|
|
22443
|
-
this.emitTyped("log", msg);
|
|
22444
|
-
});
|
|
22445
|
-
this.connection.on("logEntry", (entry) => {
|
|
22446
|
-
this.emitTyped("logEntry", entry);
|
|
22447
|
-
});
|
|
22448
|
-
}
|
|
22449
|
-
async cleanupFailedConnection() {
|
|
22450
|
-
if (!this.connection) {
|
|
22451
|
-
return;
|
|
22452
|
-
}
|
|
22453
|
-
try {
|
|
22454
|
-
await this.connection.disconnect();
|
|
22455
|
-
} catch {
|
|
22456
|
-
}
|
|
22457
|
-
this.connection.removeAllListeners();
|
|
22458
|
-
this.connection = null;
|
|
22459
|
-
this.clearSessionState();
|
|
22460
|
-
}
|
|
22461
|
-
buildConnectionError(error51, _recentLogs) {
|
|
22462
|
-
if (error51 instanceof Error) {
|
|
22463
|
-
return error51;
|
|
22464
|
-
}
|
|
22465
|
-
if (typeof error51 === "object" && error51 !== null) {
|
|
22466
|
-
const obj = error51;
|
|
22467
|
-
if (typeof obj.message === "string") {
|
|
22468
|
-
const code = typeof obj.code === "number" ? ` (code: ${obj.code})` : "";
|
|
22469
|
-
const data = obj.data ? ` \u2014 ${JSON.stringify(obj.data)}` : "";
|
|
22470
|
-
return new Error(`${obj.message}${code}${data}`);
|
|
22471
|
-
}
|
|
22472
|
-
return new Error(JSON.stringify(error51));
|
|
22473
|
-
}
|
|
22474
|
-
return new Error(String(error51));
|
|
22475
|
-
}
|
|
22476
|
-
};
|
|
22477
22055
|
|
|
22478
22056
|
// ../../packages/core-unified-agent/src/client/UnifiedAgent.ts
|
|
22479
22057
|
var UnifiedAgent = {
|
|
22480
22058
|
createClient(cli) {
|
|
22481
22059
|
switch (cli) {
|
|
22482
22060
|
case "claude":
|
|
22483
|
-
|
|
22484
|
-
return new UnifiedClaudeAgentClient(cli);
|
|
22061
|
+
return new UnifiedClaudeAgentClient();
|
|
22485
22062
|
case "codex":
|
|
22486
22063
|
return new UnifiedCodexAgentClient();
|
|
22487
|
-
case "opencode-go":
|
|
22488
|
-
return new UnifiedOpenCodeAgentClient("opencode-go");
|
|
22489
22064
|
case "cursor":
|
|
22490
22065
|
return new UnifiedCursorAgentClient();
|
|
22491
22066
|
}
|
|
@@ -22500,7 +22075,7 @@ var UnifiedAgent = {
|
|
|
22500
22075
|
const preferred = await new CliDetector().getPreferred();
|
|
22501
22076
|
if (!preferred) {
|
|
22502
22077
|
throw new Error(
|
|
22503
|
-
"\uC0AC\uC6A9 \uAC00\uB2A5\uD55C CLI\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. claude,
|
|
22078
|
+
"\uC0AC\uC6A9 \uAC00\uB2A5\uD55C CLI\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. claude, codex, cursor \uC911 \uD558\uB098\uB97C \uC124\uCE58\uD574\uC8FC\uC138\uC694."
|
|
22504
22079
|
);
|
|
22505
22080
|
}
|
|
22506
22081
|
return this.createClient(preferred.cli);
|
|
@@ -16402,22 +16402,6 @@ var models_default = {
|
|
|
16402
16402
|
{ modelId: "claude-opus-4-8[1m]", name: "Claude Opus 4.8 [1M]", effort: { supported: true, levels: ["low", "medium", "high", "xhigh", "max"], default: "high" } }
|
|
16403
16403
|
]
|
|
16404
16404
|
},
|
|
16405
|
-
"claude-kimi": {
|
|
16406
|
-
name: "Kimi via Claude Code",
|
|
16407
|
-
defaultModel: "kimi-for-coding",
|
|
16408
|
-
models: [
|
|
16409
|
-
{ modelId: "kimi-for-coding", name: "Kimi for Coding", description: "Available on every Kimi Code membership tier (262K context)", effort: { supported: false }, contextWindow: 262144 },
|
|
16410
|
-
{ modelId: "k3", name: "Kimi K3", description: "Available on Moderato and higher tiers (262K context)", effort: { supported: true, levels: ["low", "high", "max"], default: "high" }, contextWindow: 262144 },
|
|
16411
|
-
{ modelId: "k3[1m]", name: "Kimi K3 [1M]", description: "Available on Allegretto and higher tiers (1M context)", effort: { supported: true, levels: ["low", "high", "max"], default: "high" }, contextWindow: 1048576 },
|
|
16412
|
-
{ modelId: "kimi-for-coding-highspeed", name: "Kimi for Coding Highspeed", description: "Available on Allegretto and higher tiers (262K context)", effort: { supported: false }, contextWindow: 262144 }
|
|
16413
|
-
],
|
|
16414
|
-
modelsMapping: {
|
|
16415
|
-
haiku: "kimi-for-coding",
|
|
16416
|
-
sonnet: "kimi-for-coding",
|
|
16417
|
-
opus: "kimi-for-coding",
|
|
16418
|
-
fable: "kimi-for-coding"
|
|
16419
|
-
}
|
|
16420
|
-
},
|
|
16421
16405
|
codex: {
|
|
16422
16406
|
name: "Codex",
|
|
16423
16407
|
defaultModel: "gpt-5.6-sol",
|
|
@@ -16432,23 +16416,6 @@ var models_default = {
|
|
|
16432
16416
|
{ modelId: "gpt-5.5-fast", name: "GPT-5.5 Fast", providerModelId: "gpt-5.5", serviceTier: "priority", effort: { supported: true, levels: ["low", "medium", "high", "xhigh"], default: "high" } }
|
|
16433
16417
|
]
|
|
16434
16418
|
},
|
|
16435
|
-
"opencode-go": {
|
|
16436
|
-
name: "OpenCode Go",
|
|
16437
|
-
defaultModel: "opencode-go/deepseek-v4-flash",
|
|
16438
|
-
models: [
|
|
16439
|
-
{ modelId: "opencode-go/deepseek-v4-flash", name: "DeepSeek V4 Flash", effort: { supported: false } },
|
|
16440
|
-
{ modelId: "opencode-go/deepseek-v4-pro", name: "DeepSeek V4 Pro", effort: { supported: false } },
|
|
16441
|
-
{ modelId: "opencode-go/glm-5.2", name: "GLM-5.2", effort: { supported: false } },
|
|
16442
|
-
{ modelId: "opencode-go/grok-4.5", name: "Grok 4.5", effort: { supported: false } },
|
|
16443
|
-
{ modelId: "opencode-go/kimi-k3", name: "Kimi K3", effort: { supported: false } },
|
|
16444
|
-
{ modelId: "opencode-go/kimi-k2.7-code", name: "Kimi K2.7 Code", effort: { supported: false } },
|
|
16445
|
-
{ modelId: "opencode-go/mimo-v2.5", name: "MiMo V2.5", effort: { supported: false } },
|
|
16446
|
-
{ modelId: "opencode-go/mimo-v2.5-pro", name: "MiMo V2.5 Pro", effort: { supported: false } },
|
|
16447
|
-
{ modelId: "opencode-go/minimax-m3", name: "MiniMax M3", effort: { supported: false } },
|
|
16448
|
-
{ modelId: "opencode-go/qwen3.7-max", name: "Qwen3.7 Max", effort: { supported: false } },
|
|
16449
|
-
{ modelId: "opencode-go/qwen3.7-plus", name: "Qwen3.7 Plus", effort: { supported: false } }
|
|
16450
|
-
]
|
|
16451
|
-
},
|
|
16452
16419
|
cursor: {
|
|
16453
16420
|
name: "Cursor Agent",
|
|
16454
16421
|
defaultModel: "auto",
|
|
@@ -16550,16 +16517,13 @@ var ModelEntrySchema = external_exports.object({
|
|
|
16550
16517
|
});
|
|
16551
16518
|
}
|
|
16552
16519
|
});
|
|
16553
|
-
var ModelsMappingSchema = external_exports.record(external_exports.string(), external_exports.string());
|
|
16554
16520
|
var ProviderSchema = external_exports.object({
|
|
16555
16521
|
/** 프로바이더 표시 이름 */
|
|
16556
16522
|
name: external_exports.string(),
|
|
16557
16523
|
/** 기본 모델 ID */
|
|
16558
16524
|
defaultModel: external_exports.string(),
|
|
16559
16525
|
/** 사용 가능한 모델 목록 */
|
|
16560
|
-
models: external_exports.array(ModelEntrySchema).min(1)
|
|
16561
|
-
/** modelId와 연관된 매핑 모델 (선택) */
|
|
16562
|
-
modelsMapping: ModelsMappingSchema.optional()
|
|
16526
|
+
models: external_exports.array(ModelEntrySchema).min(1)
|
|
16563
16527
|
}).check((ctx) => {
|
|
16564
16528
|
const ids = new Set(ctx.value.models.map((m) => m.modelId));
|
|
16565
16529
|
if (!ids.has(ctx.value.defaultModel)) {
|
|
@@ -16610,32 +16574,6 @@ var CLI_BACKENDS = {
|
|
|
16610
16574
|
usesNpxBridge: true,
|
|
16611
16575
|
defaultMaxTokens: 16384
|
|
16612
16576
|
},
|
|
16613
|
-
"claude-kimi": {
|
|
16614
|
-
id: "claude-kimi",
|
|
16615
|
-
cliCommand: "claude",
|
|
16616
|
-
protocol: "acp",
|
|
16617
|
-
authRequired: true,
|
|
16618
|
-
npxPackage: "@agentclientprotocol/claude-agent-acp@0.33.1",
|
|
16619
|
-
modes: [
|
|
16620
|
-
{ id: "default", label: "Default" },
|
|
16621
|
-
{ id: "plan", label: "Plan" },
|
|
16622
|
-
{ id: "bypassPermissions", label: "YOLO" }
|
|
16623
|
-
],
|
|
16624
|
-
supportsSessionClose: true,
|
|
16625
|
-
supportsSessionLoad: true,
|
|
16626
|
-
requiresModelAtSpawn: false,
|
|
16627
|
-
usesNpxBridge: true,
|
|
16628
|
-
defaultMaxTokens: 262144,
|
|
16629
|
-
defaultEnv: {
|
|
16630
|
-
ANTHROPIC_BASE_URL: "https://api.kimi.com/coding/",
|
|
16631
|
-
ANTHROPIC_MODEL: "kimi-for-coding",
|
|
16632
|
-
ANTHROPIC_DEFAULT_HAIKU_MODEL: "kimi-for-coding",
|
|
16633
|
-
ANTHROPIC_DEFAULT_SONNET_MODEL: "kimi-for-coding",
|
|
16634
|
-
ANTHROPIC_DEFAULT_OPUS_MODEL: "kimi-for-coding",
|
|
16635
|
-
CLAUDE_CODE_SUBAGENT_MODEL: "kimi-for-coding",
|
|
16636
|
-
API_TIMEOUT_MS: "3000000"
|
|
16637
|
-
}
|
|
16638
|
-
},
|
|
16639
16577
|
codex: {
|
|
16640
16578
|
id: "codex",
|
|
16641
16579
|
cliCommand: "codex",
|
|
@@ -16653,22 +16591,6 @@ var CLI_BACKENDS = {
|
|
|
16653
16591
|
usesNpxBridge: false,
|
|
16654
16592
|
defaultMaxTokens: 1e5
|
|
16655
16593
|
},
|
|
16656
|
-
"opencode-go": {
|
|
16657
|
-
id: "opencode-go",
|
|
16658
|
-
cliCommand: "opencode",
|
|
16659
|
-
protocol: "acp",
|
|
16660
|
-
authRequired: false,
|
|
16661
|
-
acpArgs: ["acp"],
|
|
16662
|
-
modes: [
|
|
16663
|
-
{ id: "build", label: "Build" },
|
|
16664
|
-
{ id: "plan", label: "Plan" }
|
|
16665
|
-
],
|
|
16666
|
-
supportsSessionClose: true,
|
|
16667
|
-
supportsSessionLoad: true,
|
|
16668
|
-
requiresModelAtSpawn: true,
|
|
16669
|
-
usesNpxBridge: false,
|
|
16670
|
-
defaultMaxTokens: 128e3
|
|
16671
|
-
},
|
|
16672
16594
|
cursor: {
|
|
16673
16595
|
id: "cursor",
|
|
16674
16596
|
cliCommand: "cursor-agent",
|