oh-my-opencode 3.1.8 → 3.1.9
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.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/README.zh-cn.md +1 -1
- package/dist/agents/atlas.d.ts +3 -0
- package/dist/agents/explore.d.ts +3 -0
- package/dist/agents/librarian.d.ts +3 -0
- package/dist/agents/metis.d.ts +3 -0
- package/dist/agents/momus.d.ts +3 -0
- package/dist/agents/multimodal-looker.d.ts +3 -0
- package/dist/agents/oracle.d.ts +3 -0
- package/dist/agents/sisyphus-junior.d.ts +3 -0
- package/dist/agents/sisyphus.d.ts +3 -0
- package/dist/agents/types.d.ts +14 -1
- package/dist/cli/index.js +99 -42
- package/dist/cli/types.d.ts +3 -0
- package/dist/config/schema.d.ts +1 -0
- package/dist/index.js +466 -146
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/model-availability.d.ts +9 -1
- package/dist/shared/model-requirements.d.ts +1 -0
- package/dist/shared/model-resolver.d.ts +2 -1
- package/dist/shared/model-suggestion-retry.d.ts +24 -0
- package/dist/shared/model-suggestion-retry.test.d.ts +1 -0
- package/dist/tools/delegate-task/constants.d.ts +2 -1
- package/dist/tools/delegate-task/tools.d.ts +1 -0
- package/package.json +8 -8
package/dist/cli/index.js
CHANGED
|
@@ -5956,6 +5956,8 @@ var init_model_requirements = __esm(() => {
|
|
|
5956
5956
|
sisyphus: {
|
|
5957
5957
|
fallbackChain: [
|
|
5958
5958
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
|
5959
|
+
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
5960
|
+
{ providers: ["opencode"], model: "kimi-k2.5-free" },
|
|
5959
5961
|
{ providers: ["zai-coding-plan"], model: "glm-4.7" },
|
|
5960
5962
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2-codex", variant: "medium" },
|
|
5961
5963
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" }
|
|
@@ -5964,14 +5966,14 @@ var init_model_requirements = __esm(() => {
|
|
|
5964
5966
|
oracle: {
|
|
5965
5967
|
fallbackChain: [
|
|
5966
5968
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
|
|
5967
|
-
{ providers: ["
|
|
5968
|
-
{ providers: ["
|
|
5969
|
+
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
|
|
5970
|
+
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" }
|
|
5969
5971
|
]
|
|
5970
5972
|
},
|
|
5971
5973
|
librarian: {
|
|
5972
5974
|
fallbackChain: [
|
|
5973
5975
|
{ providers: ["zai-coding-plan"], model: "glm-4.7" },
|
|
5974
|
-
{ providers: ["opencode"], model: "
|
|
5976
|
+
{ providers: ["opencode"], model: "glm-4.7-free" },
|
|
5975
5977
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" }
|
|
5976
5978
|
]
|
|
5977
5979
|
},
|
|
@@ -5987,6 +5989,8 @@ var init_model_requirements = __esm(() => {
|
|
|
5987
5989
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" },
|
|
5988
5990
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
|
|
5989
5991
|
{ providers: ["zai-coding-plan"], model: "glm-4.6v" },
|
|
5992
|
+
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
5993
|
+
{ providers: ["opencode"], model: "kimi-k2.5-free" },
|
|
5990
5994
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-haiku-4-5" },
|
|
5991
5995
|
{ providers: ["opencode"], model: "gpt-5-nano" }
|
|
5992
5996
|
]
|
|
@@ -5994,6 +5998,8 @@ var init_model_requirements = __esm(() => {
|
|
|
5994
5998
|
prometheus: {
|
|
5995
5999
|
fallbackChain: [
|
|
5996
6000
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
|
6001
|
+
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
6002
|
+
{ providers: ["opencode"], model: "kimi-k2.5-free" },
|
|
5997
6003
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
|
|
5998
6004
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" }
|
|
5999
6005
|
]
|
|
@@ -6001,6 +6007,8 @@ var init_model_requirements = __esm(() => {
|
|
|
6001
6007
|
metis: {
|
|
6002
6008
|
fallbackChain: [
|
|
6003
6009
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
|
6010
|
+
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
6011
|
+
{ providers: ["opencode"], model: "kimi-k2.5-free" },
|
|
6004
6012
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
|
|
6005
6013
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" }
|
|
6006
6014
|
]
|
|
@@ -6008,12 +6016,14 @@ var init_model_requirements = __esm(() => {
|
|
|
6008
6016
|
momus: {
|
|
6009
6017
|
fallbackChain: [
|
|
6010
6018
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "medium" },
|
|
6011
|
-
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5" },
|
|
6019
|
+
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
|
6012
6020
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" }
|
|
6013
6021
|
]
|
|
6014
6022
|
},
|
|
6015
6023
|
atlas: {
|
|
6016
6024
|
fallbackChain: [
|
|
6025
|
+
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
6026
|
+
{ providers: ["opencode"], model: "kimi-k2.5-free" },
|
|
6017
6027
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" },
|
|
6018
6028
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
|
|
6019
6029
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" }
|
|
@@ -6025,22 +6035,31 @@ var init_model_requirements = __esm(() => {
|
|
|
6025
6035
|
fallbackChain: [
|
|
6026
6036
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" },
|
|
6027
6037
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
|
6028
|
-
{ providers: ["
|
|
6038
|
+
{ providers: ["zai-coding-plan"], model: "glm-4.7" }
|
|
6029
6039
|
]
|
|
6030
6040
|
},
|
|
6031
6041
|
ultrabrain: {
|
|
6032
6042
|
fallbackChain: [
|
|
6033
6043
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2-codex", variant: "xhigh" },
|
|
6034
|
-
{ providers: ["
|
|
6035
|
-
{ providers: ["
|
|
6044
|
+
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
|
|
6045
|
+
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" }
|
|
6036
6046
|
]
|
|
6037
6047
|
},
|
|
6048
|
+
deep: {
|
|
6049
|
+
fallbackChain: [
|
|
6050
|
+
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2-codex", variant: "medium" },
|
|
6051
|
+
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
|
6052
|
+
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" }
|
|
6053
|
+
],
|
|
6054
|
+
requiresModel: "gpt-5.2-codex"
|
|
6055
|
+
},
|
|
6038
6056
|
artistry: {
|
|
6039
6057
|
fallbackChain: [
|
|
6040
6058
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro", variant: "max" },
|
|
6041
6059
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-5", variant: "max" },
|
|
6042
6060
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }
|
|
6043
|
-
]
|
|
6061
|
+
],
|
|
6062
|
+
requiresModel: "gemini-3-pro"
|
|
6044
6063
|
},
|
|
6045
6064
|
quick: {
|
|
6046
6065
|
fallbackChain: [
|
|
@@ -6150,29 +6169,31 @@ async function updateConnectedProvidersCache(client) {
|
|
|
6150
6169
|
const connected = result.data?.connected ?? [];
|
|
6151
6170
|
log("[connected-providers-cache] Fetched connected providers", { count: connected.length, providers: connected });
|
|
6152
6171
|
writeConnectedProvidersCache(connected);
|
|
6172
|
+
let modelsByProvider = {};
|
|
6153
6173
|
if (client.model?.list) {
|
|
6154
6174
|
try {
|
|
6155
6175
|
const modelsResult = await client.model.list();
|
|
6156
6176
|
const models = modelsResult.data ?? [];
|
|
6157
|
-
const modelsByProvider = {};
|
|
6158
6177
|
for (const model of models) {
|
|
6159
6178
|
if (!modelsByProvider[model.provider]) {
|
|
6160
6179
|
modelsByProvider[model.provider] = [];
|
|
6161
6180
|
}
|
|
6162
6181
|
modelsByProvider[model.provider].push(model.id);
|
|
6163
6182
|
}
|
|
6164
|
-
|
|
6165
|
-
models: modelsByProvider,
|
|
6166
|
-
connected
|
|
6167
|
-
});
|
|
6168
|
-
log("[connected-providers-cache] Provider-models cache updated", {
|
|
6183
|
+
log("[connected-providers-cache] Fetched models from API", {
|
|
6169
6184
|
providerCount: Object.keys(modelsByProvider).length,
|
|
6170
6185
|
totalModels: models.length
|
|
6171
6186
|
});
|
|
6172
6187
|
} catch (modelErr) {
|
|
6173
|
-
log("[connected-providers-cache] Error fetching models", { error: String(modelErr) });
|
|
6188
|
+
log("[connected-providers-cache] Error fetching models, writing empty cache", { error: String(modelErr) });
|
|
6174
6189
|
}
|
|
6190
|
+
} else {
|
|
6191
|
+
log("[connected-providers-cache] client.model.list not available, writing empty cache");
|
|
6175
6192
|
}
|
|
6193
|
+
writeProviderModelsCache({
|
|
6194
|
+
models: modelsByProvider,
|
|
6195
|
+
connected
|
|
6196
|
+
});
|
|
6176
6197
|
} catch (err) {
|
|
6177
6198
|
log("[connected-providers-cache] Error updating cache", { error: String(err) });
|
|
6178
6199
|
}
|
|
@@ -6219,6 +6240,7 @@ var init_constants = __esm(() => {
|
|
|
6219
6240
|
// src/features/hook-message-injector/injector.ts
|
|
6220
6241
|
var init_injector = __esm(() => {
|
|
6221
6242
|
init_constants();
|
|
6243
|
+
init_logger();
|
|
6222
6244
|
});
|
|
6223
6245
|
|
|
6224
6246
|
// src/features/hook-message-injector/index.ts
|
|
@@ -6251,6 +6273,11 @@ var init_tmux = __esm(() => {
|
|
|
6251
6273
|
init_tmux_utils();
|
|
6252
6274
|
});
|
|
6253
6275
|
|
|
6276
|
+
// src/shared/model-suggestion-retry.ts
|
|
6277
|
+
var init_model_suggestion_retry = __esm(() => {
|
|
6278
|
+
init_logger();
|
|
6279
|
+
});
|
|
6280
|
+
|
|
6254
6281
|
// src/shared/index.ts
|
|
6255
6282
|
var init_shared = __esm(() => {
|
|
6256
6283
|
init_frontmatter();
|
|
@@ -6281,6 +6308,7 @@ var init_shared = __esm(() => {
|
|
|
6281
6308
|
init_connected_providers_cache();
|
|
6282
6309
|
init_session_utils();
|
|
6283
6310
|
init_tmux();
|
|
6311
|
+
init_model_suggestion_retry();
|
|
6284
6312
|
});
|
|
6285
6313
|
|
|
6286
6314
|
// src/cli/model-fallback.ts
|
|
@@ -6294,6 +6322,7 @@ function toProviderAvailability(config) {
|
|
|
6294
6322
|
opencodeZen: config.hasOpencodeZen,
|
|
6295
6323
|
copilot: config.hasCopilot,
|
|
6296
6324
|
zai: config.hasZaiCodingPlan,
|
|
6325
|
+
kimiForCoding: config.hasKimiForCoding,
|
|
6297
6326
|
isMaxPlan: config.isMax20
|
|
6298
6327
|
};
|
|
6299
6328
|
}
|
|
@@ -6304,7 +6333,8 @@ function isProviderAvailable(provider, avail) {
|
|
|
6304
6333
|
google: avail.native.gemini,
|
|
6305
6334
|
"github-copilot": avail.copilot,
|
|
6306
6335
|
opencode: avail.opencodeZen,
|
|
6307
|
-
"zai-coding-plan": avail.zai
|
|
6336
|
+
"zai-coding-plan": avail.zai,
|
|
6337
|
+
"kimi-for-coding": avail.kimiForCoding
|
|
6308
6338
|
};
|
|
6309
6339
|
return mapping[provider] ?? false;
|
|
6310
6340
|
}
|
|
@@ -6334,13 +6364,15 @@ function getSisyphusFallbackChain(isMaxPlan) {
|
|
|
6334
6364
|
}
|
|
6335
6365
|
return [
|
|
6336
6366
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" },
|
|
6367
|
+
{ providers: ["kimi-for-coding"], model: "k2p5" },
|
|
6368
|
+
{ providers: ["opencode"], model: "kimi-k2.5-free" },
|
|
6337
6369
|
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
|
|
6338
6370
|
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-pro" }
|
|
6339
6371
|
];
|
|
6340
6372
|
}
|
|
6341
6373
|
function generateModelConfig(config) {
|
|
6342
6374
|
const avail = toProviderAvailability(config);
|
|
6343
|
-
const hasAnyProvider = avail.native.claude || avail.native.openai || avail.native.gemini || avail.opencodeZen || avail.copilot || avail.zai;
|
|
6375
|
+
const hasAnyProvider = avail.native.claude || avail.native.openai || avail.native.gemini || avail.opencodeZen || avail.copilot || avail.zai || avail.kimiForCoding;
|
|
6344
6376
|
if (!hasAnyProvider) {
|
|
6345
6377
|
return {
|
|
6346
6378
|
$schema: SCHEMA_URL,
|
|
@@ -6392,7 +6424,7 @@ function generateModelConfig(config) {
|
|
|
6392
6424
|
categories
|
|
6393
6425
|
};
|
|
6394
6426
|
}
|
|
6395
|
-
var ZAI_MODEL = "zai-coding-plan/glm-4.7", ULTIMATE_FALLBACK = "opencode/
|
|
6427
|
+
var ZAI_MODEL = "zai-coding-plan/glm-4.7", ULTIMATE_FALLBACK = "opencode/glm-4.7-free", SCHEMA_URL = "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json";
|
|
6396
6428
|
var init_model_fallback = __esm(() => {
|
|
6397
6429
|
init_model_requirements();
|
|
6398
6430
|
});
|
|
@@ -6779,21 +6811,22 @@ function addProviderConfig(config) {
|
|
|
6779
6811
|
function detectProvidersFromOmoConfig() {
|
|
6780
6812
|
const omoConfigPath = getOmoConfig();
|
|
6781
6813
|
if (!existsSync5(omoConfigPath)) {
|
|
6782
|
-
return { hasOpenAI: true, hasOpencodeZen: true, hasZaiCodingPlan: false };
|
|
6814
|
+
return { hasOpenAI: true, hasOpencodeZen: true, hasZaiCodingPlan: false, hasKimiForCoding: false };
|
|
6783
6815
|
}
|
|
6784
6816
|
try {
|
|
6785
6817
|
const content = readFileSync4(omoConfigPath, "utf-8");
|
|
6786
6818
|
const omoConfig = parseJsonc(content);
|
|
6787
6819
|
if (!omoConfig || typeof omoConfig !== "object") {
|
|
6788
|
-
return { hasOpenAI: true, hasOpencodeZen: true, hasZaiCodingPlan: false };
|
|
6820
|
+
return { hasOpenAI: true, hasOpencodeZen: true, hasZaiCodingPlan: false, hasKimiForCoding: false };
|
|
6789
6821
|
}
|
|
6790
6822
|
const configStr = JSON.stringify(omoConfig);
|
|
6791
6823
|
const hasOpenAI = configStr.includes('"openai/');
|
|
6792
6824
|
const hasOpencodeZen = configStr.includes('"opencode/');
|
|
6793
6825
|
const hasZaiCodingPlan = configStr.includes('"zai-coding-plan/');
|
|
6794
|
-
|
|
6826
|
+
const hasKimiForCoding = configStr.includes('"kimi-for-coding/');
|
|
6827
|
+
return { hasOpenAI, hasOpencodeZen, hasZaiCodingPlan, hasKimiForCoding };
|
|
6795
6828
|
} catch {
|
|
6796
|
-
return { hasOpenAI: true, hasOpencodeZen: true, hasZaiCodingPlan: false };
|
|
6829
|
+
return { hasOpenAI: true, hasOpencodeZen: true, hasZaiCodingPlan: false, hasKimiForCoding: false };
|
|
6797
6830
|
}
|
|
6798
6831
|
}
|
|
6799
6832
|
function detectCurrentConfig() {
|
|
@@ -6805,7 +6838,8 @@ function detectCurrentConfig() {
|
|
|
6805
6838
|
hasGemini: false,
|
|
6806
6839
|
hasCopilot: false,
|
|
6807
6840
|
hasOpencodeZen: true,
|
|
6808
|
-
hasZaiCodingPlan: false
|
|
6841
|
+
hasZaiCodingPlan: false,
|
|
6842
|
+
hasKimiForCoding: false
|
|
6809
6843
|
};
|
|
6810
6844
|
const { format: format2, path: path3 } = detectConfigFormat();
|
|
6811
6845
|
if (format2 === "none") {
|
|
@@ -6822,10 +6856,11 @@ function detectCurrentConfig() {
|
|
|
6822
6856
|
return result;
|
|
6823
6857
|
}
|
|
6824
6858
|
result.hasGemini = plugins.some((p2) => p2.startsWith("opencode-antigravity-auth"));
|
|
6825
|
-
const { hasOpenAI, hasOpencodeZen, hasZaiCodingPlan } = detectProvidersFromOmoConfig();
|
|
6859
|
+
const { hasOpenAI, hasOpencodeZen, hasZaiCodingPlan, hasKimiForCoding } = detectProvidersFromOmoConfig();
|
|
6826
6860
|
result.hasOpenAI = hasOpenAI;
|
|
6827
6861
|
result.hasOpencodeZen = hasOpencodeZen;
|
|
6828
6862
|
result.hasZaiCodingPlan = hasZaiCodingPlan;
|
|
6863
|
+
result.hasKimiForCoding = hasKimiForCoding;
|
|
6829
6864
|
return result;
|
|
6830
6865
|
}
|
|
6831
6866
|
var OPENCODE_BINARIES, configContext = null, BUN_INSTALL_TIMEOUT_SECONDS = 60, BUN_INSTALL_TIMEOUT_MS, NPM_FETCH_TIMEOUT_MS = 5000, PACKAGE_NAME = "oh-my-opencode", PRIORITIZED_TAGS, ANTIGRAVITY_PROVIDER_CONFIG;
|
|
@@ -8089,7 +8124,7 @@ var import_picocolors2 = __toESM(require_picocolors(), 1);
|
|
|
8089
8124
|
// package.json
|
|
8090
8125
|
var package_default = {
|
|
8091
8126
|
name: "oh-my-opencode",
|
|
8092
|
-
version: "3.1.
|
|
8127
|
+
version: "3.1.9",
|
|
8093
8128
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
8094
8129
|
main: "dist/index.js",
|
|
8095
8130
|
types: "dist/index.d.ts",
|
|
@@ -8163,13 +8198,13 @@ var package_default = {
|
|
|
8163
8198
|
typescript: "^5.7.3"
|
|
8164
8199
|
},
|
|
8165
8200
|
optionalDependencies: {
|
|
8166
|
-
"oh-my-opencode-darwin-arm64": "3.1.
|
|
8167
|
-
"oh-my-opencode-darwin-x64": "3.1.
|
|
8168
|
-
"oh-my-opencode-linux-arm64": "3.1.
|
|
8169
|
-
"oh-my-opencode-linux-arm64-musl": "3.1.
|
|
8170
|
-
"oh-my-opencode-linux-x64": "3.1.
|
|
8171
|
-
"oh-my-opencode-linux-x64-musl": "3.1.
|
|
8172
|
-
"oh-my-opencode-windows-x64": "3.1.
|
|
8201
|
+
"oh-my-opencode-darwin-arm64": "3.1.9",
|
|
8202
|
+
"oh-my-opencode-darwin-x64": "3.1.9",
|
|
8203
|
+
"oh-my-opencode-linux-arm64": "3.1.9",
|
|
8204
|
+
"oh-my-opencode-linux-arm64-musl": "3.1.9",
|
|
8205
|
+
"oh-my-opencode-linux-x64": "3.1.9",
|
|
8206
|
+
"oh-my-opencode-linux-x64-musl": "3.1.9",
|
|
8207
|
+
"oh-my-opencode-windows-x64": "3.1.9"
|
|
8173
8208
|
},
|
|
8174
8209
|
trustedDependencies: [
|
|
8175
8210
|
"@ast-grep/cli",
|
|
@@ -8206,6 +8241,7 @@ function formatConfigSummary(config) {
|
|
|
8206
8241
|
lines.push(formatProvider("GitHub Copilot", config.hasCopilot, "fallback"));
|
|
8207
8242
|
lines.push(formatProvider("OpenCode Zen", config.hasOpencodeZen, "opencode/ models"));
|
|
8208
8243
|
lines.push(formatProvider("Z.ai Coding Plan", config.hasZaiCodingPlan, "Librarian/Multimodal"));
|
|
8244
|
+
lines.push(formatProvider("Kimi For Coding", config.hasKimiForCoding, "Sisyphus/Prometheus fallback"));
|
|
8209
8245
|
lines.push("");
|
|
8210
8246
|
lines.push(import_picocolors2.default.dim("\u2500".repeat(40)));
|
|
8211
8247
|
lines.push("");
|
|
@@ -8283,6 +8319,9 @@ function validateNonTuiArgs(args) {
|
|
|
8283
8319
|
if (args.zaiCodingPlan !== undefined && !["no", "yes"].includes(args.zaiCodingPlan)) {
|
|
8284
8320
|
errors.push(`Invalid --zai-coding-plan value: ${args.zaiCodingPlan} (expected: no, yes)`);
|
|
8285
8321
|
}
|
|
8322
|
+
if (args.kimiForCoding !== undefined && !["no", "yes"].includes(args.kimiForCoding)) {
|
|
8323
|
+
errors.push(`Invalid --kimi-for-coding value: ${args.kimiForCoding} (expected: no, yes)`);
|
|
8324
|
+
}
|
|
8286
8325
|
return { valid: errors.length === 0, errors };
|
|
8287
8326
|
}
|
|
8288
8327
|
function argsToConfig(args) {
|
|
@@ -8293,7 +8332,8 @@ function argsToConfig(args) {
|
|
|
8293
8332
|
hasGemini: args.gemini === "yes",
|
|
8294
8333
|
hasCopilot: args.copilot === "yes",
|
|
8295
8334
|
hasOpencodeZen: args.opencodeZen === "yes",
|
|
8296
|
-
hasZaiCodingPlan: args.zaiCodingPlan === "yes"
|
|
8335
|
+
hasZaiCodingPlan: args.zaiCodingPlan === "yes",
|
|
8336
|
+
hasKimiForCoding: args.kimiForCoding === "yes"
|
|
8297
8337
|
};
|
|
8298
8338
|
}
|
|
8299
8339
|
function detectedToInitialValues(detected) {
|
|
@@ -8307,7 +8347,8 @@ function detectedToInitialValues(detected) {
|
|
|
8307
8347
|
gemini: detected.hasGemini ? "yes" : "no",
|
|
8308
8348
|
copilot: detected.hasCopilot ? "yes" : "no",
|
|
8309
8349
|
opencodeZen: detected.hasOpencodeZen ? "yes" : "no",
|
|
8310
|
-
zaiCodingPlan: detected.hasZaiCodingPlan ? "yes" : "no"
|
|
8350
|
+
zaiCodingPlan: detected.hasZaiCodingPlan ? "yes" : "no",
|
|
8351
|
+
kimiForCoding: detected.hasKimiForCoding ? "yes" : "no"
|
|
8311
8352
|
};
|
|
8312
8353
|
}
|
|
8313
8354
|
async function runTuiMode(detected) {
|
|
@@ -8315,7 +8356,7 @@ async function runTuiMode(detected) {
|
|
|
8315
8356
|
const claude = await ve({
|
|
8316
8357
|
message: "Do you have a Claude Pro/Max subscription?",
|
|
8317
8358
|
options: [
|
|
8318
|
-
{ value: "no", label: "No", hint: "Will use opencode/
|
|
8359
|
+
{ value: "no", label: "No", hint: "Will use opencode/glm-4.7-free as fallback" },
|
|
8319
8360
|
{ value: "yes", label: "Yes (standard)", hint: "Claude Opus 4.5 for orchestration" },
|
|
8320
8361
|
{ value: "max20", label: "Yes (max20 mode)", hint: "Full power with Claude Sonnet 4.5 for Librarian" }
|
|
8321
8362
|
],
|
|
@@ -8385,6 +8426,18 @@ async function runTuiMode(detected) {
|
|
|
8385
8426
|
xe("Installation cancelled.");
|
|
8386
8427
|
return null;
|
|
8387
8428
|
}
|
|
8429
|
+
const kimiForCoding = await ve({
|
|
8430
|
+
message: "Do you have a Kimi For Coding subscription?",
|
|
8431
|
+
options: [
|
|
8432
|
+
{ value: "no", label: "No", hint: "Will use other configured providers" },
|
|
8433
|
+
{ value: "yes", label: "Yes", hint: "Kimi K2.5 for Sisyphus/Prometheus fallback" }
|
|
8434
|
+
],
|
|
8435
|
+
initialValue: initial.kimiForCoding
|
|
8436
|
+
});
|
|
8437
|
+
if (pD(kimiForCoding)) {
|
|
8438
|
+
xe("Installation cancelled.");
|
|
8439
|
+
return null;
|
|
8440
|
+
}
|
|
8388
8441
|
return {
|
|
8389
8442
|
hasClaude: claude !== "no",
|
|
8390
8443
|
isMax20: claude === "max20",
|
|
@@ -8392,7 +8445,8 @@ async function runTuiMode(detected) {
|
|
|
8392
8445
|
hasGemini: gemini === "yes",
|
|
8393
8446
|
hasCopilot: copilot === "yes",
|
|
8394
8447
|
hasOpencodeZen: opencodeZen === "yes",
|
|
8395
|
-
hasZaiCodingPlan: zaiCodingPlan === "yes"
|
|
8448
|
+
hasZaiCodingPlan: zaiCodingPlan === "yes",
|
|
8449
|
+
hasKimiForCoding: kimiForCoding === "yes"
|
|
8396
8450
|
};
|
|
8397
8451
|
}
|
|
8398
8452
|
async function runNonTuiInstall(args) {
|
|
@@ -8474,7 +8528,7 @@ async function runNonTuiInstall(args) {
|
|
|
8474
8528
|
console.log();
|
|
8475
8529
|
}
|
|
8476
8530
|
if (!config.hasClaude && !config.hasOpenAI && !config.hasGemini && !config.hasCopilot && !config.hasOpencodeZen) {
|
|
8477
|
-
printWarning("No model providers configured. Using opencode/
|
|
8531
|
+
printWarning("No model providers configured. Using opencode/glm-4.7-free as fallback.");
|
|
8478
8532
|
}
|
|
8479
8533
|
console.log(`${SYMBOLS.star} ${import_picocolors2.default.bold(import_picocolors2.default.green(isUpdate ? "Configuration updated!" : "Installation complete!"))}`);
|
|
8480
8534
|
console.log(` Run ${import_picocolors2.default.cyan("opencode")} to start!`);
|
|
@@ -8483,7 +8537,7 @@ async function runNonTuiInstall(args) {
|
|
|
8483
8537
|
` + `All features work like magic\u2014parallel agents, background tasks,
|
|
8484
8538
|
` + `deep exploration, and relentless execution until completion.`, "The Magic Word");
|
|
8485
8539
|
console.log(`${SYMBOLS.star} ${import_picocolors2.default.yellow("If you found this helpful, consider starring the repo!")}`);
|
|
8486
|
-
console.log(` ${import_picocolors2.default.dim("gh
|
|
8540
|
+
console.log(` ${import_picocolors2.default.dim("gh api --silent --method PUT /user/starred/code-yeongyu/oh-my-opencode >/dev/null 2>&1 || true")}`);
|
|
8487
8541
|
console.log();
|
|
8488
8542
|
console.log(import_picocolors2.default.dim("oMoMoMoMo... Enjoy!"));
|
|
8489
8543
|
console.log();
|
|
@@ -8568,7 +8622,7 @@ async function install(args) {
|
|
|
8568
8622
|
console.log();
|
|
8569
8623
|
}
|
|
8570
8624
|
if (!config.hasClaude && !config.hasOpenAI && !config.hasGemini && !config.hasCopilot && !config.hasOpencodeZen) {
|
|
8571
|
-
M2.warn("No model providers configured. Using opencode/
|
|
8625
|
+
M2.warn("No model providers configured. Using opencode/glm-4.7-free as fallback.");
|
|
8572
8626
|
}
|
|
8573
8627
|
Me(formatConfigSummary(config), isUpdate ? "Updated Configuration" : "Installation Complete");
|
|
8574
8628
|
M2.success(import_picocolors2.default.bold(isUpdate ? "Configuration updated!" : "Installation complete!"));
|
|
@@ -8577,7 +8631,7 @@ async function install(args) {
|
|
|
8577
8631
|
` + `All features work like magic\u2014parallel agents, background tasks,
|
|
8578
8632
|
` + `deep exploration, and relentless execution until completion.`, "The Magic Word");
|
|
8579
8633
|
M2.message(`${import_picocolors2.default.yellow("\u2605")} If you found this helpful, consider starring the repo!`);
|
|
8580
|
-
M2.message(` ${import_picocolors2.default.dim("gh
|
|
8634
|
+
M2.message(` ${import_picocolors2.default.dim("gh api --silent --method PUT /user/starred/code-yeongyu/oh-my-opencode >/dev/null 2>&1 || true")}`);
|
|
8581
8635
|
Se(import_picocolors2.default.green("oMoMoMoMo... Enjoy!"));
|
|
8582
8636
|
if ((config.hasClaude || config.hasGemini || config.hasCopilot) && !args.skipAuth) {
|
|
8583
8637
|
const providers = [];
|
|
@@ -23429,6 +23483,7 @@ var CategoryConfigSchema = exports_external.object({
|
|
|
23429
23483
|
var BuiltinCategoryNameSchema = exports_external.enum([
|
|
23430
23484
|
"visual-engineering",
|
|
23431
23485
|
"ultrabrain",
|
|
23486
|
+
"deep",
|
|
23432
23487
|
"artistry",
|
|
23433
23488
|
"quick",
|
|
23434
23489
|
"unspecified-low",
|
|
@@ -25469,19 +25524,20 @@ function createMcpOAuthCommand() {
|
|
|
25469
25524
|
var VERSION2 = package_default.version;
|
|
25470
25525
|
var program2 = new Command;
|
|
25471
25526
|
program2.name("oh-my-opencode").description("The ultimate OpenCode plugin - multi-model orchestration, LSP tools, and more").version(VERSION2, "-v, --version", "Show version number");
|
|
25472
|
-
program2.command("install").description("Install and configure oh-my-opencode with interactive setup").option("--no-tui", "Run in non-interactive mode (requires all options)").option("--claude <value>", "Claude subscription: no, yes, max20").option("--openai <value>", "OpenAI/ChatGPT subscription: no, yes (default: no)").option("--gemini <value>", "Gemini integration: no, yes").option("--copilot <value>", "GitHub Copilot subscription: no, yes").option("--opencode-zen <value>", "OpenCode Zen access: no, yes (default: no)").option("--zai-coding-plan <value>", "Z.ai Coding Plan subscription: no, yes (default: no)").option("--skip-auth", "Skip authentication setup hints").addHelpText("after", `
|
|
25527
|
+
program2.command("install").description("Install and configure oh-my-opencode with interactive setup").option("--no-tui", "Run in non-interactive mode (requires all options)").option("--claude <value>", "Claude subscription: no, yes, max20").option("--openai <value>", "OpenAI/ChatGPT subscription: no, yes (default: no)").option("--gemini <value>", "Gemini integration: no, yes").option("--copilot <value>", "GitHub Copilot subscription: no, yes").option("--opencode-zen <value>", "OpenCode Zen access: no, yes (default: no)").option("--zai-coding-plan <value>", "Z.ai Coding Plan subscription: no, yes (default: no)").option("--kimi-for-coding <value>", "Kimi For Coding subscription: no, yes (default: no)").option("--skip-auth", "Skip authentication setup hints").addHelpText("after", `
|
|
25473
25528
|
Examples:
|
|
25474
25529
|
$ bunx oh-my-opencode install
|
|
25475
25530
|
$ bunx oh-my-opencode install --no-tui --claude=max20 --openai=yes --gemini=yes --copilot=no
|
|
25476
25531
|
$ bunx oh-my-opencode install --no-tui --claude=no --gemini=no --copilot=yes --opencode-zen=yes
|
|
25477
25532
|
|
|
25478
|
-
Model Providers (Priority: Native > Copilot > OpenCode Zen > Z.ai):
|
|
25533
|
+
Model Providers (Priority: Native > Copilot > OpenCode Zen > Z.ai > Kimi):
|
|
25479
25534
|
Claude Native anthropic/ models (Opus, Sonnet, Haiku)
|
|
25480
25535
|
OpenAI Native openai/ models (GPT-5.2 for Oracle)
|
|
25481
25536
|
Gemini Native google/ models (Gemini 3 Pro, Flash)
|
|
25482
25537
|
Copilot github-copilot/ models (fallback)
|
|
25483
25538
|
OpenCode Zen opencode/ models (opencode/claude-opus-4-5, etc.)
|
|
25484
25539
|
Z.ai zai-coding-plan/glm-4.7 (Librarian priority)
|
|
25540
|
+
Kimi kimi-for-coding/k2p5 (Sisyphus/Prometheus fallback)
|
|
25485
25541
|
`).action(async (options) => {
|
|
25486
25542
|
const args = {
|
|
25487
25543
|
tui: options.tui !== false,
|
|
@@ -25491,6 +25547,7 @@ Model Providers (Priority: Native > Copilot > OpenCode Zen > Z.ai):
|
|
|
25491
25547
|
copilot: options.copilot,
|
|
25492
25548
|
opencodeZen: options.opencodeZen,
|
|
25493
25549
|
zaiCodingPlan: options.zaiCodingPlan,
|
|
25550
|
+
kimiForCoding: options.kimiForCoding,
|
|
25494
25551
|
skipAuth: options.skipAuth ?? false
|
|
25495
25552
|
};
|
|
25496
25553
|
const exitCode = await install(args);
|
package/dist/cli/types.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export interface InstallArgs {
|
|
|
8
8
|
copilot?: BooleanArg;
|
|
9
9
|
opencodeZen?: BooleanArg;
|
|
10
10
|
zaiCodingPlan?: BooleanArg;
|
|
11
|
+
kimiForCoding?: BooleanArg;
|
|
11
12
|
skipAuth?: boolean;
|
|
12
13
|
}
|
|
13
14
|
export interface InstallConfig {
|
|
@@ -18,6 +19,7 @@ export interface InstallConfig {
|
|
|
18
19
|
hasCopilot: boolean;
|
|
19
20
|
hasOpencodeZen: boolean;
|
|
20
21
|
hasZaiCodingPlan: boolean;
|
|
22
|
+
hasKimiForCoding: boolean;
|
|
21
23
|
}
|
|
22
24
|
export interface ConfigMergeResult {
|
|
23
25
|
success: boolean;
|
|
@@ -33,4 +35,5 @@ export interface DetectedConfig {
|
|
|
33
35
|
hasCopilot: boolean;
|
|
34
36
|
hasOpencodeZen: boolean;
|
|
35
37
|
hasZaiCodingPlan: boolean;
|
|
38
|
+
hasKimiForCoding: boolean;
|
|
36
39
|
}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -1113,6 +1113,7 @@ export declare const BuiltinCategoryNameSchema: z.ZodEnum<{
|
|
|
1113
1113
|
quick: "quick";
|
|
1114
1114
|
"unspecified-high": "unspecified-high";
|
|
1115
1115
|
"unspecified-low": "unspecified-low";
|
|
1116
|
+
deep: "deep";
|
|
1116
1117
|
artistry: "artistry";
|
|
1117
1118
|
}>;
|
|
1118
1119
|
export declare const CategoriesConfigSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|