oh-my-opencode-cohub 1.12.9-beta.3 → 1.12.9-beta.5
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/dist/cli/config-io.d.ts +6 -1
- package/dist/cli/config-io.d.ts.map +1 -1
- package/dist/cli/index.js +54 -6
- package/package.json +1 -1
package/dist/cli/config-io.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** 添加 CoHub 到 opencode.json 的 plugin 数组 */
|
|
2
|
-
export declare function addPluginToOpenCodeConfig(): {
|
|
2
|
+
export declare function addPluginToOpenCodeConfig(version: string): {
|
|
3
3
|
success: boolean;
|
|
4
4
|
message: string;
|
|
5
5
|
};
|
|
@@ -25,4 +25,9 @@ export declare function uninstallCoHub(): {
|
|
|
25
25
|
success: boolean;
|
|
26
26
|
messages: string[];
|
|
27
27
|
};
|
|
28
|
+
/** 将 cohub 安装到 ~/.cache/opencode/packages/oh-my-opencode-cohub/(含完整 node_modules) */
|
|
29
|
+
export declare function installToCacheDir(version: string): {
|
|
30
|
+
success: boolean;
|
|
31
|
+
message: string;
|
|
32
|
+
};
|
|
28
33
|
//# sourceMappingURL=config-io.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-io.d.ts","sourceRoot":"","sources":["../../src/cli/config-io.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-io.d.ts","sourceRoot":"","sources":["../../src/cli/config-io.ts"],"names":[],"mappings":"AAmCA,2CAA2C;AAC3C,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAwBhG;AAED,sCAAsC;AACtC,wBAAgB,oBAAoB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAa5E;AAOD;;wDAEwD;AACxD,wBAAgB,mBAAmB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuF3E;AA+ED,4DAA4D;AAC5D,wBAAgB,kBAAkB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA2G1E;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAgIzE;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA6BxF"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// package.json
|
|
3
|
-
var version = "1.12.9-beta.
|
|
3
|
+
var version = "1.12.9-beta.5";
|
|
4
4
|
|
|
5
5
|
// src/cli/config-io.ts
|
|
6
6
|
import * as fs from "node:fs";
|
|
7
7
|
import * as path from "node:path";
|
|
8
8
|
import * as os from "node:os";
|
|
9
|
+
import { execSync } from "node:child_process";
|
|
9
10
|
var PACKAGE_NAME = "oh-my-opencode-cohub";
|
|
10
11
|
function getOpencodeConfigPath() {
|
|
11
12
|
return path.join(os.homedir(), ".config", "opencode", "opencode.json");
|
|
@@ -35,17 +36,25 @@ function writeJSON(filePath, data) {
|
|
|
35
36
|
`;
|
|
36
37
|
fs.writeFileSync(filePath, content, "utf-8");
|
|
37
38
|
}
|
|
38
|
-
function addPluginToOpenCodeConfig() {
|
|
39
|
+
function addPluginToOpenCodeConfig(version2) {
|
|
39
40
|
const configPath = getOpencodeConfigPath();
|
|
40
41
|
let config = readJSON(configPath) ?? {};
|
|
41
42
|
const plugins = Array.isArray(config.plugin) ? [...config.plugin] : [];
|
|
43
|
+
const pkgSpec = `${PACKAGE_NAME}@${version2}`;
|
|
42
44
|
if (plugins.some((p) => p.includes(PACKAGE_NAME))) {
|
|
43
|
-
|
|
45
|
+
for (let i = 0;i < plugins.length; i++) {
|
|
46
|
+
if (plugins[i].includes(PACKAGE_NAME)) {
|
|
47
|
+
plugins[i] = pkgSpec;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
config.plugin = plugins;
|
|
51
|
+
writeJSON(configPath, config);
|
|
52
|
+
return { success: true, message: `✓ 已更新 "${pkgSpec}" 到 opencode.json 的 plugin 数组` };
|
|
44
53
|
}
|
|
45
|
-
plugins.unshift(
|
|
54
|
+
plugins.unshift(pkgSpec);
|
|
46
55
|
config.plugin = plugins;
|
|
47
56
|
writeJSON(configPath, config);
|
|
48
|
-
return { success: true, message: `✓ 已添加 "${
|
|
57
|
+
return { success: true, message: `✓ 已添加 "${pkgSpec}" 到 opencode.json 的 plugin 数组` };
|
|
49
58
|
}
|
|
50
59
|
function addPluginToTuiConfig() {
|
|
51
60
|
const configPath = getTuiConfigPath();
|
|
@@ -141,6 +150,7 @@ function registerCoHubAgents() {
|
|
|
141
150
|
return { success: true, message: `✓ ${msgParts.join(",")}` };
|
|
142
151
|
}
|
|
143
152
|
var COHUB_CONFIG_PATH = path.join(os.homedir(), ".config", "opencode", "oh-my-opencode-cohub.json");
|
|
153
|
+
var PACKAGES_CACHE = path.join(os.homedir(), ".cache", "opencode", "packages", PACKAGE_NAME);
|
|
144
154
|
var HEAVY_KEYWORDS = ["pro", "preview", "opus", "max", "sonnet", "gpt-5.6"];
|
|
145
155
|
var LIGHT_KEYWORDS = ["flash", "mini", "haiku", "gpt-5.4", "gpt-5.3"];
|
|
146
156
|
var DESIGN_KEYWORDS = ["minimax", "m3", "sonnet", "claude"];
|
|
@@ -396,9 +406,45 @@ function uninstallCoHub() {
|
|
|
396
406
|
}
|
|
397
407
|
}
|
|
398
408
|
}
|
|
409
|
+
if (fs.existsSync(PACKAGES_CACHE)) {
|
|
410
|
+
try {
|
|
411
|
+
fs.rmSync(PACKAGES_CACHE, { recursive: true, force: true });
|
|
412
|
+
messages.push("✓ 已清理缓存目录");
|
|
413
|
+
} catch {
|
|
414
|
+
messages.push("⚠ 清理缓存目录失败,请手动删除: " + PACKAGES_CACHE);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
const legacyPluginsDir = path.join(os.homedir(), ".config", "opencode", "plugins", PACKAGE_NAME);
|
|
418
|
+
if (fs.existsSync(legacyPluginsDir)) {
|
|
419
|
+
try {
|
|
420
|
+
fs.rmSync(legacyPluginsDir, { recursive: true, force: true });
|
|
421
|
+
messages.push("✓ 已清理旧 plugins 目录");
|
|
422
|
+
} catch {}
|
|
423
|
+
}
|
|
399
424
|
messages.push("✅ CoHub 卸载完成。完全关闭 OpenCode 后重新打开即可。");
|
|
400
425
|
return { success: true, messages };
|
|
401
426
|
}
|
|
427
|
+
function installToCacheDir(version2) {
|
|
428
|
+
try {
|
|
429
|
+
const targetDir = PACKAGES_CACHE;
|
|
430
|
+
if (fs.existsSync(targetDir)) {
|
|
431
|
+
fs.rmSync(targetDir, { recursive: true, force: true });
|
|
432
|
+
}
|
|
433
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
434
|
+
const pkgJson = { private: true };
|
|
435
|
+
fs.writeFileSync(path.join(targetDir, "package.json"), JSON.stringify(pkgJson, null, 2), "utf-8");
|
|
436
|
+
const pkgSpec = `${PACKAGE_NAME}@${version2}`;
|
|
437
|
+
const cmd = `npm install "${pkgSpec}" --save --legacy-peer-deps`;
|
|
438
|
+
execSync(cmd, { cwd: targetDir, stdio: "pipe", timeout: 120000 });
|
|
439
|
+
const entryPath = path.join(targetDir, "node_modules", PACKAGE_NAME, "dist", "index.js");
|
|
440
|
+
if (!fs.existsSync(entryPath)) {
|
|
441
|
+
return { success: false, message: `⚠ npm install 成功但入口文件缺失: ${entryPath}` };
|
|
442
|
+
}
|
|
443
|
+
return { success: true, message: `✓ 已安装 ${pkgSpec} 到 ${targetDir}` };
|
|
444
|
+
} catch (e) {
|
|
445
|
+
return { success: false, message: `⚠ 安装失败: ${e.message}` };
|
|
446
|
+
}
|
|
447
|
+
}
|
|
402
448
|
|
|
403
449
|
// src/cli/index.ts
|
|
404
450
|
async function main() {
|
|
@@ -407,7 +453,9 @@ async function main() {
|
|
|
407
453
|
if (command === "install") {
|
|
408
454
|
console.log(`\uD83D\uDE80 oh-my-opencode-cohub v${version} 安装中...
|
|
409
455
|
`);
|
|
410
|
-
const
|
|
456
|
+
const r0 = installToCacheDir(version);
|
|
457
|
+
console.log(r0.message);
|
|
458
|
+
const r1 = addPluginToOpenCodeConfig(version);
|
|
411
459
|
console.log(r1.message);
|
|
412
460
|
const r2 = addPluginToTuiConfig();
|
|
413
461
|
console.log(r2.message);
|