oc-chatgpt-multi-auth 4.9.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.
Files changed (134) hide show
  1. package/LICENSE +37 -0
  2. package/README.md +507 -0
  3. package/assets/opencode-logo-ornate-dark.svg +18 -0
  4. package/assets/readme-hero.svg +31 -0
  5. package/config/README.md +110 -0
  6. package/config/minimal-opencode.json +13 -0
  7. package/config/opencode-legacy.json +572 -0
  8. package/config/opencode-modern.json +240 -0
  9. package/dist/index.d.ts +45 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +971 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/lib/accounts.d.ts +120 -0
  14. package/dist/lib/accounts.d.ts.map +1 -0
  15. package/dist/lib/accounts.js +579 -0
  16. package/dist/lib/accounts.js.map +1 -0
  17. package/dist/lib/auth/auth.d.ts +51 -0
  18. package/dist/lib/auth/auth.d.ts.map +1 -0
  19. package/dist/lib/auth/auth.js +180 -0
  20. package/dist/lib/auth/auth.js.map +1 -0
  21. package/dist/lib/auth/browser.d.ts +17 -0
  22. package/dist/lib/auth/browser.d.ts.map +1 -0
  23. package/dist/lib/auth/browser.js +83 -0
  24. package/dist/lib/auth/browser.js.map +1 -0
  25. package/dist/lib/auth/server.d.ts +10 -0
  26. package/dist/lib/auth/server.d.ts.map +1 -0
  27. package/dist/lib/auth/server.js +85 -0
  28. package/dist/lib/auth/server.js.map +1 -0
  29. package/dist/lib/auto-update-checker.d.ts +10 -0
  30. package/dist/lib/auto-update-checker.d.ts.map +1 -0
  31. package/dist/lib/auto-update-checker.js +129 -0
  32. package/dist/lib/auto-update-checker.js.map +1 -0
  33. package/dist/lib/cli.d.ts +9 -0
  34. package/dist/lib/cli.d.ts.map +1 -0
  35. package/dist/lib/cli.js +50 -0
  36. package/dist/lib/cli.js.map +1 -0
  37. package/dist/lib/config.d.ts +17 -0
  38. package/dist/lib/config.d.ts.map +1 -0
  39. package/dist/lib/config.js +102 -0
  40. package/dist/lib/config.js.map +1 -0
  41. package/dist/lib/constants.d.ts +74 -0
  42. package/dist/lib/constants.d.ts.map +1 -0
  43. package/dist/lib/constants.js +74 -0
  44. package/dist/lib/constants.js.map +1 -0
  45. package/dist/lib/context-overflow.d.ts +27 -0
  46. package/dist/lib/context-overflow.d.ts.map +1 -0
  47. package/dist/lib/context-overflow.js +124 -0
  48. package/dist/lib/context-overflow.js.map +1 -0
  49. package/dist/lib/index.d.ts +13 -0
  50. package/dist/lib/index.d.ts.map +1 -0
  51. package/dist/lib/index.js +13 -0
  52. package/dist/lib/index.js.map +1 -0
  53. package/dist/lib/logger.d.ts +22 -0
  54. package/dist/lib/logger.d.ts.map +1 -0
  55. package/dist/lib/logger.js +175 -0
  56. package/dist/lib/logger.js.map +1 -0
  57. package/dist/lib/oauth-success.html +712 -0
  58. package/dist/lib/prompts/codex-opencode-bridge.d.ts +19 -0
  59. package/dist/lib/prompts/codex-opencode-bridge.d.ts.map +1 -0
  60. package/dist/lib/prompts/codex-opencode-bridge.js +152 -0
  61. package/dist/lib/prompts/codex-opencode-bridge.js.map +1 -0
  62. package/dist/lib/prompts/codex.d.ts +32 -0
  63. package/dist/lib/prompts/codex.d.ts.map +1 -0
  64. package/dist/lib/prompts/codex.js +262 -0
  65. package/dist/lib/prompts/codex.js.map +1 -0
  66. package/dist/lib/prompts/opencode-codex.d.ts +21 -0
  67. package/dist/lib/prompts/opencode-codex.d.ts.map +1 -0
  68. package/dist/lib/prompts/opencode-codex.js +91 -0
  69. package/dist/lib/prompts/opencode-codex.js.map +1 -0
  70. package/dist/lib/recovery/constants.d.ts +12 -0
  71. package/dist/lib/recovery/constants.d.ts.map +1 -0
  72. package/dist/lib/recovery/constants.js +25 -0
  73. package/dist/lib/recovery/constants.js.map +1 -0
  74. package/dist/lib/recovery/index.d.ts +12 -0
  75. package/dist/lib/recovery/index.d.ts.map +1 -0
  76. package/dist/lib/recovery/index.js +12 -0
  77. package/dist/lib/recovery/index.js.map +1 -0
  78. package/dist/lib/recovery/storage.d.ts +24 -0
  79. package/dist/lib/recovery/storage.d.ts.map +1 -0
  80. package/dist/lib/recovery/storage.js +354 -0
  81. package/dist/lib/recovery/storage.js.map +1 -0
  82. package/dist/lib/recovery/types.d.ts +116 -0
  83. package/dist/lib/recovery/types.d.ts.map +1 -0
  84. package/dist/lib/recovery/types.js +7 -0
  85. package/dist/lib/recovery/types.js.map +1 -0
  86. package/dist/lib/recovery.d.ts +31 -0
  87. package/dist/lib/recovery.d.ts.map +1 -0
  88. package/dist/lib/recovery.js +308 -0
  89. package/dist/lib/recovery.js.map +1 -0
  90. package/dist/lib/refresh-queue.d.ts +100 -0
  91. package/dist/lib/refresh-queue.d.ts.map +1 -0
  92. package/dist/lib/refresh-queue.js +196 -0
  93. package/dist/lib/refresh-queue.js.map +1 -0
  94. package/dist/lib/request/fetch-helpers.d.ts +81 -0
  95. package/dist/lib/request/fetch-helpers.d.ts.map +1 -0
  96. package/dist/lib/request/fetch-helpers.js +325 -0
  97. package/dist/lib/request/fetch-helpers.js.map +1 -0
  98. package/dist/lib/request/helpers/input-utils.d.ts +7 -0
  99. package/dist/lib/request/helpers/input-utils.d.ts.map +1 -0
  100. package/dist/lib/request/helpers/input-utils.js +213 -0
  101. package/dist/lib/request/helpers/input-utils.js.map +1 -0
  102. package/dist/lib/request/helpers/model-map.d.ts +28 -0
  103. package/dist/lib/request/helpers/model-map.d.ts.map +1 -0
  104. package/dist/lib/request/helpers/model-map.js +109 -0
  105. package/dist/lib/request/helpers/model-map.js.map +1 -0
  106. package/dist/lib/request/rate-limit-backoff.d.ts +17 -0
  107. package/dist/lib/request/rate-limit-backoff.d.ts.map +1 -0
  108. package/dist/lib/request/rate-limit-backoff.js +74 -0
  109. package/dist/lib/request/rate-limit-backoff.js.map +1 -0
  110. package/dist/lib/request/request-transformer.d.ts +93 -0
  111. package/dist/lib/request/request-transformer.d.ts.map +1 -0
  112. package/dist/lib/request/request-transformer.js +405 -0
  113. package/dist/lib/request/request-transformer.js.map +1 -0
  114. package/dist/lib/request/response-handler.d.ts +14 -0
  115. package/dist/lib/request/response-handler.d.ts.map +1 -0
  116. package/dist/lib/request/response-handler.js +90 -0
  117. package/dist/lib/request/response-handler.js.map +1 -0
  118. package/dist/lib/rotation.d.ts +121 -0
  119. package/dist/lib/rotation.d.ts.map +1 -0
  120. package/dist/lib/rotation.js +248 -0
  121. package/dist/lib/rotation.js.map +1 -0
  122. package/dist/lib/storage.d.ts +91 -0
  123. package/dist/lib/storage.d.ts.map +1 -0
  124. package/dist/lib/storage.js +323 -0
  125. package/dist/lib/storage.js.map +1 -0
  126. package/dist/lib/types.d.ts +185 -0
  127. package/dist/lib/types.d.ts.map +1 -0
  128. package/dist/lib/types.js +2 -0
  129. package/dist/lib/types.js.map +1 -0
  130. package/package.json +86 -0
  131. package/scripts/copy-oauth-success.js +37 -0
  132. package/scripts/install-opencode-codex-auth.js +193 -0
  133. package/scripts/test-all-models.sh +260 -0
  134. package/scripts/validate-model-map.sh +97 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../lib/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
1
+ import type { Auth, Provider, Model } from "@opencode-ai/sdk";
2
+ export interface PluginConfig {
3
+ codexMode?: boolean;
4
+ retryAllAccountsRateLimited?: boolean;
5
+ retryAllAccountsMaxWaitMs?: number;
6
+ retryAllAccountsMaxRetries?: number;
7
+ tokenRefreshSkewMs?: number;
8
+ rateLimitToastDebounceMs?: number;
9
+ sessionRecovery?: boolean;
10
+ autoResume?: boolean;
11
+ }
12
+ /**
13
+ * User configuration structure from opencode.json
14
+ */
15
+ export interface UserConfig {
16
+ global: ConfigOptions;
17
+ models: {
18
+ [modelName: string]: {
19
+ options?: ConfigOptions;
20
+ variants?: Record<string, (ConfigOptions & {
21
+ disabled?: boolean;
22
+ }) | undefined>;
23
+ [key: string]: unknown;
24
+ };
25
+ };
26
+ }
27
+ /**
28
+ * Configuration options for reasoning and text settings
29
+ */
30
+ export interface ConfigOptions {
31
+ reasoningEffort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
32
+ reasoningSummary?: "auto" | "concise" | "detailed" | "off" | "on";
33
+ textVerbosity?: "low" | "medium" | "high";
34
+ include?: string[];
35
+ }
36
+ /**
37
+ * Reasoning configuration for requests
38
+ */
39
+ export interface ReasoningConfig {
40
+ effort: "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
41
+ summary: "auto" | "concise" | "detailed" | "off" | "on";
42
+ }
43
+ /**
44
+ * OAuth server information
45
+ */
46
+ export interface OAuthServerInfo {
47
+ port: number;
48
+ ready: boolean;
49
+ close: () => void;
50
+ waitForCode: (state: string) => Promise<{
51
+ code: string;
52
+ } | null>;
53
+ }
54
+ /**
55
+ * PKCE challenge and verifier
56
+ */
57
+ export interface PKCEPair {
58
+ challenge: string;
59
+ verifier: string;
60
+ }
61
+ /**
62
+ * Authorization flow result
63
+ */
64
+ export interface AuthorizationFlow {
65
+ pkce: PKCEPair;
66
+ state: string;
67
+ url: string;
68
+ }
69
+ /**
70
+ * Token exchange success result
71
+ */
72
+ export interface TokenSuccess {
73
+ type: "success";
74
+ access: string;
75
+ refresh: string;
76
+ expires: number;
77
+ /** ID token from OAuth response - contains email and other identity claims */
78
+ idToken?: string;
79
+ /** Flag to identify this auth as multi-account (vs built-in single account) */
80
+ multiAccount?: boolean;
81
+ }
82
+ /**
83
+ * Token failure reason codes
84
+ */
85
+ export type TokenFailureReason = "http_error" | "invalid_response" | "network_error" | "missing_refresh" | "unknown";
86
+ /**
87
+ * Token exchange failure result with optional detailed error info
88
+ */
89
+ export interface TokenFailure {
90
+ type: "failed";
91
+ reason?: TokenFailureReason;
92
+ statusCode?: number;
93
+ message?: string;
94
+ }
95
+ /**
96
+ * Token exchange result
97
+ */
98
+ export type TokenResult = TokenSuccess | TokenFailure;
99
+ /**
100
+ * Parsed authorization input
101
+ */
102
+ export interface ParsedAuthInput {
103
+ code?: string;
104
+ state?: string;
105
+ }
106
+ /**
107
+ * JWT payload with ChatGPT account info
108
+ */
109
+ export interface JWTPayload {
110
+ "https://api.openai.com/auth"?: {
111
+ chatgpt_account_id?: string;
112
+ email?: string;
113
+ chatgpt_user_email?: string;
114
+ };
115
+ email?: string;
116
+ preferred_username?: string;
117
+ [key: string]: unknown;
118
+ }
119
+ /**
120
+ * Message input item
121
+ */
122
+ export interface InputItem {
123
+ id?: string;
124
+ type: string;
125
+ role: string;
126
+ content?: unknown;
127
+ [key: string]: unknown;
128
+ }
129
+ /**
130
+ * Request body structure
131
+ */
132
+ export interface RequestBody {
133
+ model: string;
134
+ store?: boolean;
135
+ stream?: boolean;
136
+ instructions?: string;
137
+ input?: InputItem[];
138
+ tools?: unknown;
139
+ reasoning?: Partial<ReasoningConfig>;
140
+ text?: {
141
+ verbosity?: "low" | "medium" | "high";
142
+ };
143
+ include?: string[];
144
+ providerOptions?: {
145
+ openai?: Partial<ConfigOptions> & {
146
+ store?: boolean;
147
+ include?: string[];
148
+ };
149
+ [key: string]: unknown;
150
+ };
151
+ /** Stable key to enable prompt-token caching on Codex backend */
152
+ prompt_cache_key?: string;
153
+ max_output_tokens?: number;
154
+ max_completion_tokens?: number;
155
+ [key: string]: unknown;
156
+ }
157
+ /**
158
+ * SSE event data structure
159
+ */
160
+ export interface SSEEventData {
161
+ type: string;
162
+ response?: unknown;
163
+ [key: string]: unknown;
164
+ }
165
+ /**
166
+ * Cache metadata for Codex instructions
167
+ */
168
+ export interface CacheMetadata {
169
+ etag: string | null;
170
+ tag: string;
171
+ lastChecked: number;
172
+ url: string;
173
+ }
174
+ /**
175
+ * GitHub release data
176
+ */
177
+ export interface GitHubRelease {
178
+ tag_name: string;
179
+ [key: string]: unknown;
180
+ }
181
+ export type { Auth, Provider, Model };
182
+ export type OAuthAuthDetails = Extract<Auth, {
183
+ type: "oauth";
184
+ }>;
185
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,86 @@
1
+ {
2
+ "name": "oc-chatgpt-multi-auth",
3
+ "version": "4.9.0",
4
+ "description": "Multi-account rotation plugin for ChatGPT Plus/Pro (OAuth / Codex backend)",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "type": "module",
8
+ "license": "MIT",
9
+ "author": "Numman Ali",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/ndycode/oc-chatgpt-multi-auth.git"
13
+ },
14
+ "keywords": [
15
+ "opencode",
16
+ "openai",
17
+ "codex",
18
+ "chatgpt",
19
+ "oauth",
20
+ "gpt-5",
21
+ "plugin",
22
+ "auth",
23
+ "chatgpt-plus",
24
+ "chatgpt-pro",
25
+ "multi-account"
26
+ ],
27
+ "homepage": "https://github.com/ndycode/oc-chatgpt-multi-auth#readme",
28
+ "bugs": {
29
+ "url": "https://github.com/ndycode/oc-chatgpt-multi-auth/issues"
30
+ },
31
+ "scripts": {
32
+ "build": "tsc && node scripts/copy-oauth-success.js",
33
+ "typecheck": "tsc --noEmit",
34
+ "lint": "eslint . --ext .ts",
35
+ "lint:fix": "eslint . --ext .ts --fix",
36
+ "test": "vitest run",
37
+ "test:watch": "vitest",
38
+ "test:ui": "vitest --ui",
39
+ "test:coverage": "vitest run --coverage",
40
+ "prepublishOnly": "npm run build",
41
+ "prepare": "husky"
42
+ },
43
+ "bin": {
44
+ "oc-chatgpt-multi-auth": "scripts/install-opencode-codex-auth.js"
45
+ },
46
+ "files": [
47
+ "dist/",
48
+ "assets/",
49
+ "config/",
50
+ "scripts/",
51
+ "README.md",
52
+ "LICENSE"
53
+ ],
54
+ "lint-staged": {
55
+ "*.ts": [
56
+ "eslint --max-warnings=0 --fix --no-warn-ignored"
57
+ ]
58
+ },
59
+ "engines": {
60
+ "node": ">=18.0.0"
61
+ },
62
+ "peerDependencies": {
63
+ "typescript": "^5"
64
+ },
65
+ "devDependencies": {
66
+ "@opencode-ai/sdk": "^1.1.34",
67
+ "@types/node": "^25.0.10",
68
+ "@typescript-eslint/eslint-plugin": "^8.53.1",
69
+ "@typescript-eslint/parser": "^8.53.1",
70
+ "@vitest/ui": "^4.0.18",
71
+ "eslint": "^9.39.2",
72
+ "husky": "^9.1.7",
73
+ "lint-staged": "^16.2.7",
74
+ "typescript": "^5.9.3",
75
+ "vitest": "^4.0.18"
76
+ },
77
+ "dependencies": {
78
+ "@opencode-ai/plugin": "^1.1.34",
79
+ "@openauthjs/openauth": "^0.4.3",
80
+ "hono": "^4.11.5"
81
+ },
82
+ "overrides": {
83
+ "hono": "^4.11.5",
84
+ "vite": "^7.3.1"
85
+ }
86
+ }
@@ -0,0 +1,37 @@
1
+ import { promises as fs } from "node:fs";
2
+ import { dirname, join, resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = dirname(__filename);
7
+
8
+ function normalizePathForCompare(path) {
9
+ const resolved = resolve(path);
10
+ return process.platform === "win32" ? resolved.toLowerCase() : resolved;
11
+ }
12
+
13
+ function getDefaultPaths() {
14
+ const src = join(__dirname, "..", "lib", "oauth-success.html");
15
+ const dest = join(__dirname, "..", "dist", "lib", "oauth-success.html");
16
+ return { src, dest };
17
+ }
18
+
19
+ export async function copyOAuthSuccessHtml(options = {}) {
20
+ const defaults = getDefaultPaths();
21
+ const src = options.src ?? defaults.src;
22
+ const dest = options.dest ?? defaults.dest;
23
+
24
+ await fs.mkdir(dirname(dest), { recursive: true });
25
+ await fs.copyFile(src, dest);
26
+
27
+ return { src, dest };
28
+ }
29
+
30
+ const isDirectRun = (() => {
31
+ if (!process.argv[1]) return false;
32
+ return normalizePathForCompare(process.argv[1]) === normalizePathForCompare(__filename);
33
+ })();
34
+
35
+ if (isDirectRun) {
36
+ await copyOAuthSuccessHtml();
37
+ }
@@ -0,0 +1,193 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { existsSync } from "node:fs";
4
+ import { readFile, writeFile, mkdir, copyFile, rm } from "node:fs/promises";
5
+ import { fileURLToPath } from "node:url";
6
+ import { dirname, join, resolve } from "node:path";
7
+ import { homedir } from "node:os";
8
+
9
+ const PLUGIN_NAME = "opencode-openai-codex-auth-multi";
10
+
11
+ const args = new Set(process.argv.slice(2));
12
+
13
+ if (args.has("--help") || args.has("-h")) {
14
+ console.log(`Usage: ${PLUGIN_NAME} [--modern|--legacy] [--dry-run] [--no-cache-clear]\n\n` +
15
+ "Default behavior:\n" +
16
+ " - Installs/updates global config at ~/.config/opencode/opencode.json\n" +
17
+ " - Uses modern config (variants) by default\n" +
18
+ " - Ensures plugin is unpinned (latest)\n" +
19
+ " - Clears OpenCode plugin cache\n\n" +
20
+ "Options:\n" +
21
+ " --modern Force modern config (default)\n" +
22
+ " --legacy Use legacy config (older OpenCode versions)\n" +
23
+ " --dry-run Show actions without writing\n" +
24
+ " --no-cache-clear Skip clearing OpenCode cache\n"
25
+ );
26
+ process.exit(0);
27
+ }
28
+
29
+ const useLegacy = args.has("--legacy");
30
+ const useModern = args.has("--modern") || !useLegacy;
31
+ const dryRun = args.has("--dry-run");
32
+ const skipCacheClear = args.has("--no-cache-clear");
33
+
34
+ const scriptDir = dirname(fileURLToPath(import.meta.url));
35
+ const repoRoot = resolve(scriptDir, "..");
36
+ const templatePath = join(
37
+ repoRoot,
38
+ "config",
39
+ useLegacy ? "opencode-legacy.json" : "opencode-modern.json"
40
+ );
41
+
42
+ const configDir = join(homedir(), ".config", "opencode");
43
+ const configPath = join(configDir, "opencode.json");
44
+ const cacheDir = join(homedir(), ".cache", "opencode");
45
+ const cacheNodeModules = join(cacheDir, "node_modules", PLUGIN_NAME);
46
+ const cacheBunLock = join(cacheDir, "bun.lock");
47
+ const cachePackageJson = join(cacheDir, "package.json");
48
+
49
+ function log(message) {
50
+ console.log(message);
51
+ }
52
+
53
+ function normalizePluginList(list) {
54
+ const entries = Array.isArray(list) ? list.filter(Boolean) : [];
55
+ const filtered = entries.filter((entry) => {
56
+ if (typeof entry !== "string") return true;
57
+ return entry !== PLUGIN_NAME && !entry.startsWith(`${PLUGIN_NAME}@`);
58
+ });
59
+ return [...filtered, PLUGIN_NAME];
60
+ }
61
+
62
+ function formatJson(obj) {
63
+ return `${JSON.stringify(obj, null, 2)}\n`;
64
+ }
65
+
66
+ async function readJson(filePath) {
67
+ const content = await readFile(filePath, "utf-8");
68
+ return JSON.parse(content);
69
+ }
70
+
71
+ async function backupConfig(sourcePath) {
72
+ const timestamp = new Date()
73
+ .toISOString()
74
+ .replace(/[:.]/g, "-")
75
+ .replace("T", "_")
76
+ .replace("Z", "");
77
+ const backupPath = `${sourcePath}.bak-${timestamp}`;
78
+ if (!dryRun) {
79
+ await copyFile(sourcePath, backupPath);
80
+ }
81
+ return backupPath;
82
+ }
83
+
84
+ async function removePluginFromCachePackage() {
85
+ if (!existsSync(cachePackageJson)) {
86
+ return;
87
+ }
88
+
89
+ let cacheData;
90
+ try {
91
+ cacheData = await readJson(cachePackageJson);
92
+ } catch (error) {
93
+ log(`Warning: Could not parse ${cachePackageJson} (${error}). Skipping.`);
94
+ return;
95
+ }
96
+
97
+ const sections = [
98
+ "dependencies",
99
+ "devDependencies",
100
+ "peerDependencies",
101
+ "optionalDependencies",
102
+ ];
103
+
104
+ let changed = false;
105
+ for (const section of sections) {
106
+ const deps = cacheData?.[section];
107
+ if (deps && typeof deps === "object" && PLUGIN_NAME in deps) {
108
+ delete deps[PLUGIN_NAME];
109
+ changed = true;
110
+ }
111
+ }
112
+
113
+ if (!changed) {
114
+ return;
115
+ }
116
+
117
+ if (dryRun) {
118
+ log(`[dry-run] Would update ${cachePackageJson} to remove ${PLUGIN_NAME}`);
119
+ return;
120
+ }
121
+
122
+ await writeFile(cachePackageJson, formatJson(cacheData), "utf-8");
123
+ }
124
+
125
+ async function clearCache() {
126
+ if (skipCacheClear) {
127
+ log("Skipping cache clear (--no-cache-clear).");
128
+ return;
129
+ }
130
+
131
+ if (dryRun) {
132
+ log(`[dry-run] Would remove ${cacheNodeModules}`);
133
+ log(`[dry-run] Would remove ${cacheBunLock}`);
134
+ } else {
135
+ await rm(cacheNodeModules, { recursive: true, force: true });
136
+ await rm(cacheBunLock, { force: true });
137
+ }
138
+
139
+ await removePluginFromCachePackage();
140
+ }
141
+
142
+ async function main() {
143
+ if (!existsSync(templatePath)) {
144
+ throw new Error(`Config template not found at ${templatePath}`);
145
+ }
146
+
147
+ const template = await readJson(templatePath);
148
+ template.plugin = [PLUGIN_NAME];
149
+
150
+ let nextConfig = template;
151
+ if (existsSync(configPath)) {
152
+ const backupPath = await backupConfig(configPath);
153
+ log(`${dryRun ? "[dry-run] Would create backup" : "Backup created"}: ${backupPath}`);
154
+
155
+ try {
156
+ const existing = await readJson(configPath);
157
+ const merged = { ...existing };
158
+ merged.plugin = normalizePluginList(existing.plugin);
159
+ const provider = (existing.provider && typeof existing.provider === "object")
160
+ ? { ...existing.provider }
161
+ : {};
162
+ provider.openai = template.provider.openai;
163
+ merged.provider = provider;
164
+ nextConfig = merged;
165
+ } catch (error) {
166
+ log(`Warning: Could not parse existing config (${error}). Replacing with template.`);
167
+ nextConfig = template;
168
+ }
169
+ } else {
170
+ log("No existing config found. Creating new global config.");
171
+ }
172
+
173
+ if (dryRun) {
174
+ log(`[dry-run] Would write ${configPath} using ${useLegacy ? "legacy" : "modern"} config`);
175
+ } else {
176
+ await mkdir(configDir, { recursive: true });
177
+ await writeFile(configPath, formatJson(nextConfig), "utf-8");
178
+ log(`Wrote ${configPath} (${useLegacy ? "legacy" : "modern"} config)`);
179
+ }
180
+
181
+ await clearCache();
182
+
183
+ log("\nDone. Restart OpenCode to (re)install the plugin.");
184
+ log("Example: opencode");
185
+ if (useLegacy) {
186
+ log("Note: Legacy config requires OpenCode v1.0.209 or older.");
187
+ }
188
+ }
189
+
190
+ main().catch((error) => {
191
+ console.error(`Installer failed: ${error instanceof Error ? error.message : error}`);
192
+ process.exit(1);
193
+ });