@agentex/agent 0.0.2 → 0.0.4

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 (190) hide show
  1. package/README.md +405 -87
  2. package/dist/index.d.ts +18 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +11 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/providers/claude/execute.d.ts.map +1 -1
  7. package/dist/providers/claude/execute.js +51 -18
  8. package/dist/providers/claude/execute.js.map +1 -1
  9. package/dist/providers/claude/index.d.ts.map +1 -1
  10. package/dist/providers/claude/index.js +37 -8
  11. package/dist/providers/claude/index.js.map +1 -1
  12. package/dist/providers/claude/parse.d.ts.map +1 -1
  13. package/dist/providers/claude/parse.js +2 -1
  14. package/dist/providers/claude/parse.js.map +1 -1
  15. package/dist/providers/claude/session.d.ts +10 -0
  16. package/dist/providers/claude/session.d.ts.map +1 -0
  17. package/dist/providers/claude/session.js +549 -0
  18. package/dist/providers/claude/session.js.map +1 -0
  19. package/dist/providers/claude/test.d.ts.map +1 -1
  20. package/dist/providers/claude/test.js +38 -11
  21. package/dist/providers/claude/test.js.map +1 -1
  22. package/dist/providers/codex/execute.d.ts.map +1 -1
  23. package/dist/providers/codex/execute.js +122 -74
  24. package/dist/providers/codex/execute.js.map +1 -1
  25. package/dist/providers/codex/index.d.ts.map +1 -1
  26. package/dist/providers/codex/index.js +56 -2
  27. package/dist/providers/codex/index.js.map +1 -1
  28. package/dist/providers/codex/parse.d.ts.map +1 -1
  29. package/dist/providers/codex/parse.js +25 -3
  30. package/dist/providers/codex/parse.js.map +1 -1
  31. package/dist/providers/codex/session.d.ts +3 -0
  32. package/dist/providers/codex/session.d.ts.map +1 -0
  33. package/dist/providers/codex/session.js +553 -0
  34. package/dist/providers/codex/session.js.map +1 -0
  35. package/dist/providers/codex/test.d.ts.map +1 -1
  36. package/dist/providers/codex/test.js +28 -12
  37. package/dist/providers/codex/test.js.map +1 -1
  38. package/dist/providers/codex/usage-scanner.d.ts +18 -0
  39. package/dist/providers/codex/usage-scanner.d.ts.map +1 -0
  40. package/dist/providers/codex/usage-scanner.js +148 -0
  41. package/dist/providers/codex/usage-scanner.js.map +1 -0
  42. package/dist/providers/cursor/codec.d.ts +3 -0
  43. package/dist/providers/cursor/codec.d.ts.map +1 -0
  44. package/dist/providers/cursor/codec.js +43 -0
  45. package/dist/providers/cursor/codec.js.map +1 -0
  46. package/dist/providers/cursor/execute.d.ts +3 -0
  47. package/dist/providers/cursor/execute.d.ts.map +1 -0
  48. package/dist/providers/cursor/execute.js +248 -0
  49. package/dist/providers/cursor/execute.js.map +1 -0
  50. package/dist/providers/cursor/index.d.ts +3 -0
  51. package/dist/providers/cursor/index.d.ts.map +1 -0
  52. package/dist/providers/cursor/index.js +28 -0
  53. package/dist/providers/cursor/index.js.map +1 -0
  54. package/dist/providers/cursor/parse.d.ts +26 -0
  55. package/dist/providers/cursor/parse.d.ts.map +1 -0
  56. package/dist/providers/cursor/parse.js +224 -0
  57. package/dist/providers/cursor/parse.js.map +1 -0
  58. package/dist/providers/cursor/test.d.ts +3 -0
  59. package/dist/providers/cursor/test.d.ts.map +1 -0
  60. package/dist/providers/cursor/test.js +58 -0
  61. package/dist/providers/cursor/test.js.map +1 -0
  62. package/dist/providers/gemini/codec.d.ts +3 -0
  63. package/dist/providers/gemini/codec.d.ts.map +1 -0
  64. package/dist/providers/gemini/codec.js +47 -0
  65. package/dist/providers/gemini/codec.js.map +1 -0
  66. package/dist/providers/gemini/execute.d.ts +3 -0
  67. package/dist/providers/gemini/execute.d.ts.map +1 -0
  68. package/dist/providers/gemini/execute.js +236 -0
  69. package/dist/providers/gemini/execute.js.map +1 -0
  70. package/dist/providers/gemini/index.d.ts +3 -0
  71. package/dist/providers/gemini/index.d.ts.map +1 -0
  72. package/dist/providers/gemini/index.js +62 -0
  73. package/dist/providers/gemini/index.js.map +1 -0
  74. package/dist/providers/gemini/parse.d.ts +20 -0
  75. package/dist/providers/gemini/parse.d.ts.map +1 -0
  76. package/dist/providers/gemini/parse.js +207 -0
  77. package/dist/providers/gemini/parse.js.map +1 -0
  78. package/dist/providers/gemini/test.d.ts +3 -0
  79. package/dist/providers/gemini/test.d.ts.map +1 -0
  80. package/dist/providers/gemini/test.js +67 -0
  81. package/dist/providers/gemini/test.js.map +1 -0
  82. package/dist/providers/openclaw/execute.d.ts.map +1 -1
  83. package/dist/providers/openclaw/execute.js +10 -5
  84. package/dist/providers/openclaw/execute.js.map +1 -1
  85. package/dist/providers/openclaw/index.d.ts.map +1 -1
  86. package/dist/providers/openclaw/index.js +15 -2
  87. package/dist/providers/openclaw/index.js.map +1 -1
  88. package/dist/providers/openclaw/test.d.ts.map +1 -1
  89. package/dist/providers/openclaw/test.js +4 -0
  90. package/dist/providers/openclaw/test.js.map +1 -1
  91. package/dist/providers/opencode/codec.d.ts +3 -0
  92. package/dist/providers/opencode/codec.d.ts.map +1 -0
  93. package/dist/providers/opencode/codec.js +47 -0
  94. package/dist/providers/opencode/codec.js.map +1 -0
  95. package/dist/providers/opencode/execute.d.ts +3 -0
  96. package/dist/providers/opencode/execute.d.ts.map +1 -0
  97. package/dist/providers/opencode/execute.js +225 -0
  98. package/dist/providers/opencode/execute.js.map +1 -0
  99. package/dist/providers/opencode/index.d.ts +3 -0
  100. package/dist/providers/opencode/index.d.ts.map +1 -0
  101. package/dist/providers/opencode/index.js +62 -0
  102. package/dist/providers/opencode/index.js.map +1 -0
  103. package/dist/providers/opencode/parse.d.ts +19 -0
  104. package/dist/providers/opencode/parse.d.ts.map +1 -0
  105. package/dist/providers/opencode/parse.js +145 -0
  106. package/dist/providers/opencode/parse.js.map +1 -0
  107. package/dist/providers/opencode/test.d.ts +3 -0
  108. package/dist/providers/opencode/test.d.ts.map +1 -0
  109. package/dist/providers/opencode/test.js +60 -0
  110. package/dist/providers/opencode/test.js.map +1 -0
  111. package/dist/providers/pi/codec.d.ts +7 -0
  112. package/dist/providers/pi/codec.d.ts.map +1 -0
  113. package/dist/providers/pi/codec.js +45 -0
  114. package/dist/providers/pi/codec.js.map +1 -0
  115. package/dist/providers/pi/execute.d.ts +3 -0
  116. package/dist/providers/pi/execute.d.ts.map +1 -0
  117. package/dist/providers/pi/execute.js +300 -0
  118. package/dist/providers/pi/execute.js.map +1 -0
  119. package/dist/providers/pi/index.d.ts +3 -0
  120. package/dist/providers/pi/index.d.ts.map +1 -0
  121. package/dist/providers/pi/index.js +64 -0
  122. package/dist/providers/pi/index.js.map +1 -0
  123. package/dist/providers/pi/parse.d.ts +18 -0
  124. package/dist/providers/pi/parse.d.ts.map +1 -0
  125. package/dist/providers/pi/parse.js +182 -0
  126. package/dist/providers/pi/parse.js.map +1 -0
  127. package/dist/providers/pi/test.d.ts +3 -0
  128. package/dist/providers/pi/test.d.ts.map +1 -0
  129. package/dist/providers/pi/test.js +60 -0
  130. package/dist/providers/pi/test.js.map +1 -0
  131. package/dist/providers/process/execute.d.ts.map +1 -1
  132. package/dist/providers/process/execute.js +45 -7
  133. package/dist/providers/process/execute.js.map +1 -1
  134. package/dist/providers/process/index.d.ts.map +1 -1
  135. package/dist/providers/process/index.js +27 -30
  136. package/dist/providers/process/index.js.map +1 -1
  137. package/dist/registry.d.ts.map +1 -1
  138. package/dist/registry.js +8 -0
  139. package/dist/registry.js.map +1 -1
  140. package/dist/types.d.ts +379 -22
  141. package/dist/types.d.ts.map +1 -1
  142. package/dist/types.js +23 -1
  143. package/dist/types.js.map +1 -1
  144. package/dist/utils/ask-user-question.d.ts +50 -0
  145. package/dist/utils/ask-user-question.d.ts.map +1 -0
  146. package/dist/utils/ask-user-question.js +32 -0
  147. package/dist/utils/ask-user-question.js.map +1 -0
  148. package/dist/utils/auth.d.ts +22 -0
  149. package/dist/utils/auth.d.ts.map +1 -0
  150. package/dist/utils/auth.js +497 -0
  151. package/dist/utils/auth.js.map +1 -0
  152. package/dist/utils/binary.d.ts.map +1 -1
  153. package/dist/utils/binary.js +29 -6
  154. package/dist/utils/binary.js.map +1 -1
  155. package/dist/utils/env.d.ts.map +1 -1
  156. package/dist/utils/env.js +18 -0
  157. package/dist/utils/env.js.map +1 -1
  158. package/dist/utils/execute-all.d.ts +20 -0
  159. package/dist/utils/execute-all.d.ts.map +1 -0
  160. package/dist/utils/execute-all.js +46 -0
  161. package/dist/utils/execute-all.js.map +1 -0
  162. package/dist/utils/instructions.d.ts +7 -0
  163. package/dist/utils/instructions.d.ts.map +1 -0
  164. package/dist/utils/instructions.js +21 -0
  165. package/dist/utils/instructions.js.map +1 -0
  166. package/dist/utils/model-cache.d.ts +11 -0
  167. package/dist/utils/model-cache.d.ts.map +1 -0
  168. package/dist/utils/model-cache.js +17 -0
  169. package/dist/utils/model-cache.js.map +1 -0
  170. package/dist/utils/process.d.ts +4 -0
  171. package/dist/utils/process.d.ts.map +1 -1
  172. package/dist/utils/process.js +46 -5
  173. package/dist/utils/process.js.map +1 -1
  174. package/dist/utils/runtime-config.d.ts +34 -0
  175. package/dist/utils/runtime-config.d.ts.map +1 -0
  176. package/dist/utils/runtime-config.js +71 -0
  177. package/dist/utils/runtime-config.js.map +1 -0
  178. package/dist/utils/runtime-homes.d.ts +13 -0
  179. package/dist/utils/runtime-homes.d.ts.map +1 -0
  180. package/dist/utils/runtime-homes.js +41 -0
  181. package/dist/utils/runtime-homes.js.map +1 -0
  182. package/dist/utils/skills.d.ts +152 -1
  183. package/dist/utils/skills.d.ts.map +1 -1
  184. package/dist/utils/skills.js +352 -0
  185. package/dist/utils/skills.js.map +1 -1
  186. package/dist/utils/workspace.d.ts +55 -0
  187. package/dist/utils/workspace.d.ts.map +1 -0
  188. package/dist/utils/workspace.js +89 -0
  189. package/dist/utils/workspace.js.map +1 -0
  190. package/package.json +5 -2
@@ -0,0 +1,497 @@
1
+ import * as fs from "node:fs/promises";
2
+ import * as path from "node:path";
3
+ import * as os from "node:os";
4
+ import { buildEnv, ensurePathInEnv } from "./env.js";
5
+ import { findBinary } from "./binary.js";
6
+ import { runChildProcess } from "./process.js";
7
+ function hasEnv(env, key) {
8
+ const v = env[key];
9
+ return typeof v === "string" && v.trim().length > 0;
10
+ }
11
+ async function fileExists(p) {
12
+ try {
13
+ const stat = await fs.stat(p);
14
+ return stat.isFile();
15
+ }
16
+ catch {
17
+ return false;
18
+ }
19
+ }
20
+ function providerHome(envVar, defaultDir) {
21
+ const override = process.env[envVar];
22
+ if (typeof override === "string" && override.trim().length > 0) {
23
+ return override;
24
+ }
25
+ return path.join(os.homedir(), defaultDir);
26
+ }
27
+ function bedrockModelId(model, region) {
28
+ const prefix = region ?? "us";
29
+ const mapping = {
30
+ "claude-sonnet-4-6": `${prefix}.anthropic.claude-sonnet-4-6-v1`,
31
+ "claude-opus-4-6": `${prefix}.anthropic.claude-opus-4-6-v1`,
32
+ "claude-haiku-4-5": `${prefix}.anthropic.claude-haiku-4-5-v1`,
33
+ "claude-3.5-sonnet": `${prefix}.anthropic.claude-3-5-sonnet-20241022-v2:0`,
34
+ "claude-3.5-haiku": `${prefix}.anthropic.claude-3-5-haiku-20241022-v1:0`,
35
+ };
36
+ return mapping[model] ?? model;
37
+ }
38
+ export function detectAuth(providerType, env) {
39
+ switch (providerType) {
40
+ case "claude": {
41
+ if (hasEnv(env, "ANTHROPIC_BEDROCK_BASE_URL") || (hasEnv(env, "AWS_ACCESS_KEY_ID") && hasEnv(env, "AWS_REGION"))) {
42
+ const region = env["AWS_REGION"]?.trim();
43
+ return {
44
+ method: "bedrock",
45
+ billingType: "metered_api",
46
+ region,
47
+ resolveModelId: (model) => bedrockModelId(model, region),
48
+ };
49
+ }
50
+ if (hasEnv(env, "ANTHROPIC_API_KEY")) {
51
+ return { method: "api_key", billingType: "api" };
52
+ }
53
+ return { method: "subscription", billingType: "subscription" };
54
+ }
55
+ case "codex": {
56
+ if (hasEnv(env, "OPENAI_API_KEY")) {
57
+ return { method: "api_key", billingType: "api" };
58
+ }
59
+ return { method: "subscription", billingType: "subscription" };
60
+ }
61
+ case "gemini": {
62
+ if (hasEnv(env, "GEMINI_API_KEY") || hasEnv(env, "GOOGLE_API_KEY")) {
63
+ return { method: "api_key", billingType: "api" };
64
+ }
65
+ return { method: "subscription", billingType: "subscription" };
66
+ }
67
+ case "cursor": {
68
+ if (hasEnv(env, "CURSOR_API_KEY") || hasEnv(env, "OPENAI_API_KEY")) {
69
+ return { method: "api_key", billingType: "api" };
70
+ }
71
+ return { method: "subscription", billingType: "subscription" };
72
+ }
73
+ case "opencode":
74
+ case "pi":
75
+ return { method: "api_key", billingType: "api" };
76
+ default:
77
+ return { method: "subscription", billingType: "subscription" };
78
+ }
79
+ }
80
+ // ---------------------------------------------------------------------------
81
+ // Binary status probe — spawns `<cli> --version` to populate BinaryStatus.
82
+ // ---------------------------------------------------------------------------
83
+ async function checkBinary(name, configOverride, env) {
84
+ let resolved;
85
+ try {
86
+ resolved = await findBinary(name, configOverride);
87
+ }
88
+ catch (err) {
89
+ return {
90
+ installed: false,
91
+ prefixArgs: [],
92
+ error: err instanceof Error ? err.message : String(err),
93
+ };
94
+ }
95
+ let version;
96
+ try {
97
+ ensurePathInEnv(env);
98
+ const proc = await runChildProcess({
99
+ runId: "check-binary",
100
+ command: resolved.bin,
101
+ args: [...resolved.prefixArgs, "--version"],
102
+ cwd: process.cwd(),
103
+ env,
104
+ timeoutSec: 5,
105
+ });
106
+ if (proc.exitCode === 0) {
107
+ const out = (proc.stdout || proc.stderr).trim();
108
+ const match = out.match(/\b\d+\.\d+(?:\.\d+)?(?:[-+][\w.-]+)?\b/);
109
+ version = match ? match[0] : (out.split(/\s+/)[0] || undefined);
110
+ }
111
+ }
112
+ catch {
113
+ // Version detection is best-effort; binary is still "installed" if findBinary succeeded.
114
+ }
115
+ return {
116
+ installed: true,
117
+ resolvedPath: resolved.bin,
118
+ prefixArgs: resolved.prefixArgs,
119
+ version,
120
+ };
121
+ }
122
+ function classifyClaudeAuthMethod(raw) {
123
+ if (!raw)
124
+ return null;
125
+ const m = raw.toLowerCase();
126
+ if (m.includes("bedrock") || m.includes("vertex") || m.includes("foundry"))
127
+ return "bedrock";
128
+ if (m.includes("claude.ai") || m.includes("oauth") || m.includes("subscription"))
129
+ return "subscription";
130
+ if (m.includes("api") || m.includes("console"))
131
+ return "api_key";
132
+ return null;
133
+ }
134
+ async function resolveClaudeAuth(ctx) {
135
+ const env = buildEnv(ctx?.env);
136
+ const binary = await checkBinary("claude", ctx?.command, env);
137
+ const apiKeyOption = {
138
+ method: "api_key",
139
+ source: { kind: "env", var: "ANTHROPIC_API_KEY" },
140
+ present: hasEnv(env, "ANTHROPIC_API_KEY"),
141
+ };
142
+ const bedrockPresent = hasEnv(env, "ANTHROPIC_BEDROCK_BASE_URL") ||
143
+ (hasEnv(env, "AWS_ACCESS_KEY_ID") && hasEnv(env, "AWS_REGION"));
144
+ const bedrockOption = {
145
+ method: "bedrock",
146
+ source: {
147
+ kind: "env_combo",
148
+ vars: ["ANTHROPIC_BEDROCK_BASE_URL", "AWS_ACCESS_KEY_ID", "AWS_REGION"],
149
+ },
150
+ present: bedrockPresent,
151
+ };
152
+ // Binary missing → fall back to filesystem/keychain heuristic.
153
+ if (!binary.installed) {
154
+ const subOption = process.platform === "darwin"
155
+ ? {
156
+ method: "subscription",
157
+ source: { kind: "keychain", service: "Claude Code" },
158
+ present: false, // can't verify without binary
159
+ }
160
+ : await (async () => {
161
+ const credPath = path.join(providerHome("CLAUDE_CONFIG_DIR", ".claude"), ".credentials.json");
162
+ return {
163
+ method: "subscription",
164
+ source: { kind: "file", path: credPath },
165
+ present: await fileExists(credPath),
166
+ };
167
+ })();
168
+ return {
169
+ providerType: "claude",
170
+ binary: stripPrefixArgs(binary),
171
+ options: [apiKeyOption, bedrockOption, subOption],
172
+ source: "filesystem",
173
+ };
174
+ }
175
+ // Binary present — try `claude auth status --json`.
176
+ try {
177
+ ensurePathInEnv(env);
178
+ const proc = await runChildProcess({
179
+ runId: "claude-auth-status",
180
+ command: binary.resolvedPath,
181
+ args: [...binary.prefixArgs, "auth", "status", "--json"],
182
+ cwd: process.cwd(),
183
+ env,
184
+ timeoutSec: 10,
185
+ });
186
+ if (proc.exitCode === 0 && proc.stdout.trim()) {
187
+ const data = JSON.parse(proc.stdout);
188
+ const active = classifyClaudeAuthMethod(data.authMethod);
189
+ const loggedIn = data.loggedIn === true;
190
+ const subPresent = loggedIn && (active === "subscription" || active === null);
191
+ const subOption = {
192
+ method: "subscription",
193
+ source: { kind: "cli", command: "claude auth status --json" },
194
+ present: subPresent,
195
+ };
196
+ // Identity
197
+ const identity = {};
198
+ if (data.email)
199
+ identity.email = data.email;
200
+ if (data.orgName)
201
+ identity.orgName = data.orgName;
202
+ if (data.subscriptionType)
203
+ identity.subscriptionType = data.subscriptionType;
204
+ if (data.authMethod)
205
+ identity.authMethod = data.authMethod;
206
+ return {
207
+ providerType: "claude",
208
+ binary: stripPrefixArgs(binary),
209
+ options: [apiKeyOption, bedrockOption, subOption],
210
+ identity: Object.keys(identity).length > 0 ? identity : undefined,
211
+ source: "cli",
212
+ };
213
+ }
214
+ }
215
+ catch {
216
+ // fall through to filesystem
217
+ }
218
+ // CLI call failed (old version, parse error, etc). Fall back to filesystem.
219
+ const subOption = process.platform === "darwin"
220
+ ? {
221
+ method: "subscription",
222
+ source: { kind: "keychain", service: "Claude Code" },
223
+ present: false,
224
+ }
225
+ : await (async () => {
226
+ const credPath = path.join(providerHome("CLAUDE_CONFIG_DIR", ".claude"), ".credentials.json");
227
+ return {
228
+ method: "subscription",
229
+ source: { kind: "file", path: credPath },
230
+ present: await fileExists(credPath),
231
+ };
232
+ })();
233
+ return {
234
+ providerType: "claude",
235
+ binary: stripPrefixArgs(binary),
236
+ options: [apiKeyOption, bedrockOption, subOption],
237
+ source: "filesystem",
238
+ };
239
+ }
240
+ // ---------------------------------------------------------------------------
241
+ // Codex — `codex login status`. Text-only output; regex with multiple
242
+ // tolerant patterns + filesystem fallback for forward-compat.
243
+ // ---------------------------------------------------------------------------
244
+ const CODEX_SUBSCRIPTION_PATTERNS = [
245
+ /logged\s+in\s+using\s+chatgpt/i,
246
+ /logged\s+in\s+with\s+chatgpt/i,
247
+ /authenticated\s+via\s+chatgpt/i,
248
+ /signed\s+in.*chatgpt/i,
249
+ /using\s+subscription/i,
250
+ ];
251
+ const CODEX_API_KEY_PATTERNS = [
252
+ /logged\s+in\s+using\s+(an?\s+)?api[-_ ]?key/i,
253
+ /logged\s+in\s+with\s+(an?\s+)?api[-_ ]?key/i,
254
+ /authenticated\s+via\s+api[-_ ]?key/i,
255
+ /signed\s+in.*api[-_ ]?key/i,
256
+ ];
257
+ const CODEX_NOT_LOGGED_IN_PATTERNS = [
258
+ /not\s+logged\s+in/i,
259
+ /not\s+authenticated/i,
260
+ /please\s+(run\s+)?`?codex\s+login`?/i,
261
+ /no\s+authentication/i,
262
+ ];
263
+ async function resolveCodexAuth(ctx) {
264
+ const env = buildEnv(ctx?.env);
265
+ const binary = await checkBinary("codex", ctx?.command, env);
266
+ const apiKeyOption = {
267
+ method: "api_key",
268
+ source: { kind: "env", var: "OPENAI_API_KEY" },
269
+ present: hasEnv(env, "OPENAI_API_KEY"),
270
+ };
271
+ const authPath = path.join(providerHome("CODEX_HOME", ".codex"), "auth.json");
272
+ if (!binary.installed) {
273
+ const subPresent = await fileExists(authPath);
274
+ return {
275
+ providerType: "codex",
276
+ binary: stripPrefixArgs(binary),
277
+ options: [
278
+ apiKeyOption,
279
+ {
280
+ method: "subscription",
281
+ source: { kind: "file", path: authPath },
282
+ present: subPresent,
283
+ },
284
+ ],
285
+ source: "filesystem",
286
+ };
287
+ }
288
+ let subscriptionPresent = false;
289
+ let activeAuthMethod;
290
+ let usedCli = false;
291
+ try {
292
+ ensurePathInEnv(env);
293
+ const proc = await runChildProcess({
294
+ runId: "codex-login-status",
295
+ command: binary.resolvedPath,
296
+ args: [...binary.prefixArgs, "login", "status"],
297
+ cwd: process.cwd(),
298
+ env,
299
+ timeoutSec: 10,
300
+ });
301
+ const out = `${proc.stdout}\n${proc.stderr}`.trim();
302
+ if (CODEX_SUBSCRIPTION_PATTERNS.some((r) => r.test(out))) {
303
+ subscriptionPresent = true;
304
+ activeAuthMethod = "chatgpt";
305
+ usedCli = true;
306
+ }
307
+ else if (CODEX_API_KEY_PATTERNS.some((r) => r.test(out))) {
308
+ // API key is the active auth; subscription status unknown from this output alone.
309
+ // Trust the filesystem to know if a subscription is ALSO stored.
310
+ subscriptionPresent = await fileExists(authPath);
311
+ activeAuthMethod = "api_key";
312
+ usedCli = true;
313
+ }
314
+ else if (CODEX_NOT_LOGGED_IN_PATTERNS.some((r) => r.test(out))) {
315
+ subscriptionPresent = false;
316
+ usedCli = true;
317
+ }
318
+ else {
319
+ // Unknown wording (forward-compat) — fall back to filesystem.
320
+ subscriptionPresent = await fileExists(authPath);
321
+ }
322
+ }
323
+ catch {
324
+ subscriptionPresent = await fileExists(authPath);
325
+ }
326
+ return {
327
+ providerType: "codex",
328
+ binary: stripPrefixArgs(binary),
329
+ options: [
330
+ apiKeyOption,
331
+ {
332
+ method: "subscription",
333
+ source: usedCli
334
+ ? { kind: "cli", command: "codex login status" }
335
+ : { kind: "file", path: authPath },
336
+ present: subscriptionPresent,
337
+ },
338
+ ],
339
+ identity: activeAuthMethod ? { authMethod: activeAuthMethod } : undefined,
340
+ source: usedCli ? "cli" : "filesystem",
341
+ };
342
+ }
343
+ // ---------------------------------------------------------------------------
344
+ // Gemini — filesystem-only (no `gemini auth status` subcommand exists).
345
+ // Still runs `gemini --version` to populate BinaryStatus.
346
+ // ---------------------------------------------------------------------------
347
+ async function resolveGeminiAuth(ctx) {
348
+ const env = buildEnv(ctx?.env);
349
+ const binary = await checkBinary("gemini", ctx?.command, env);
350
+ const credPath = path.join(providerHome("GEMINI_CONFIG_DIR", ".gemini"), "oauth_creds.json");
351
+ return {
352
+ providerType: "gemini",
353
+ binary: stripPrefixArgs(binary),
354
+ options: [
355
+ {
356
+ method: "api_key",
357
+ source: { kind: "env", var: "GEMINI_API_KEY" },
358
+ present: hasEnv(env, "GEMINI_API_KEY"),
359
+ },
360
+ {
361
+ method: "api_key",
362
+ source: { kind: "env", var: "GOOGLE_API_KEY" },
363
+ present: hasEnv(env, "GOOGLE_API_KEY"),
364
+ },
365
+ {
366
+ method: "subscription",
367
+ source: { kind: "file", path: credPath },
368
+ present: await fileExists(credPath),
369
+ },
370
+ ],
371
+ source: "filesystem",
372
+ };
373
+ }
374
+ // ---------------------------------------------------------------------------
375
+ // Cursor / OpenCode / Pi / OpenClaw / Process — no CLI auth commands;
376
+ // straightforward env-only reports with binary status when applicable.
377
+ // ---------------------------------------------------------------------------
378
+ async function resolveCursorAuth(ctx) {
379
+ const env = buildEnv(ctx?.env);
380
+ const binary = await checkBinary("agent", ctx?.command, env);
381
+ return {
382
+ providerType: "cursor",
383
+ binary: stripPrefixArgs(binary),
384
+ options: [
385
+ { method: "api_key", source: { kind: "env", var: "CURSOR_API_KEY" }, present: hasEnv(env, "CURSOR_API_KEY") },
386
+ { method: "api_key", source: { kind: "env", var: "OPENAI_API_KEY" }, present: hasEnv(env, "OPENAI_API_KEY") },
387
+ ],
388
+ source: "filesystem",
389
+ };
390
+ }
391
+ async function resolveOpencodeAuth(ctx) {
392
+ const env = buildEnv(ctx?.env);
393
+ const binary = await checkBinary("opencode", ctx?.command, env);
394
+ return {
395
+ providerType: "opencode",
396
+ binary: stripPrefixArgs(binary),
397
+ options: [
398
+ { method: "api_key", source: { kind: "env", var: "OPENAI_API_KEY" }, present: hasEnv(env, "OPENAI_API_KEY") },
399
+ { method: "api_key", source: { kind: "env", var: "ANTHROPIC_API_KEY" }, present: hasEnv(env, "ANTHROPIC_API_KEY") },
400
+ ],
401
+ source: "filesystem",
402
+ };
403
+ }
404
+ async function resolvePiAuth(ctx) {
405
+ const env = buildEnv(ctx?.env);
406
+ const binary = await checkBinary("pi", ctx?.command, env);
407
+ return {
408
+ providerType: "pi",
409
+ binary: stripPrefixArgs(binary),
410
+ options: [
411
+ { method: "api_key", source: { kind: "env", var: "OPENAI_API_KEY" }, present: hasEnv(env, "OPENAI_API_KEY") },
412
+ { method: "api_key", source: { kind: "env", var: "ANTHROPIC_API_KEY" }, present: hasEnv(env, "ANTHROPIC_API_KEY") },
413
+ ],
414
+ source: "filesystem",
415
+ };
416
+ }
417
+ function stripPrefixArgs(b) {
418
+ const { prefixArgs: _prefixArgs, ...rest } = b;
419
+ return rest;
420
+ }
421
+ // ---------------------------------------------------------------------------
422
+ // Dispatcher + 60s cache
423
+ // ---------------------------------------------------------------------------
424
+ const CACHE_TTL_MS = 60_000;
425
+ const cache = new Map();
426
+ function cacheKey(providerType, ctx) {
427
+ const envKey = ctx?.env ? JSON.stringify(ctx.env) : "";
428
+ const cmdKey = ctx?.command ?? "";
429
+ return `${providerType}|${envKey}|${cmdKey}`;
430
+ }
431
+ async function resolveInternal(providerType, ctx) {
432
+ switch (providerType) {
433
+ case "codex":
434
+ return resolveCodexAuth(ctx);
435
+ case "claude":
436
+ return resolveClaudeAuth(ctx);
437
+ case "gemini":
438
+ return resolveGeminiAuth(ctx);
439
+ case "cursor":
440
+ return resolveCursorAuth(ctx);
441
+ case "opencode":
442
+ return resolveOpencodeAuth(ctx);
443
+ case "pi":
444
+ return resolvePiAuth(ctx);
445
+ default:
446
+ return {
447
+ providerType,
448
+ binary: { installed: false, error: `No auth resolver for provider "${providerType}"` },
449
+ options: [],
450
+ source: "filesystem",
451
+ };
452
+ }
453
+ }
454
+ /**
455
+ * Resolve the auth report for a provider by type. Cached for 60s per
456
+ * (providerType, env, command). Pass `{ fresh: true }` to bypass the cache.
457
+ */
458
+ export async function resolveAuthForProvider(providerType, ctx) {
459
+ if (!ctx?.fresh) {
460
+ const key = cacheKey(providerType, ctx);
461
+ const hit = cache.get(key);
462
+ if (hit && Date.now() - hit.ts < CACHE_TTL_MS) {
463
+ return hit.report;
464
+ }
465
+ }
466
+ const report = await resolveInternal(providerType, ctx);
467
+ const key = cacheKey(providerType, ctx);
468
+ cache.set(key, { report, ts: Date.now() });
469
+ return report;
470
+ }
471
+ /** Clear the resolveAuth cache. Primarily for tests and explicit refresh. */
472
+ export function clearAuthCache() {
473
+ cache.clear();
474
+ }
475
+ // ---------------------------------------------------------------------------
476
+ // Sugar: method-specific presence checks. Each commits the caller to a
477
+ // billing mode, making the choice visible at the call site.
478
+ // ---------------------------------------------------------------------------
479
+ function anyPresent(report, method) {
480
+ return report.options.some((o) => o.method === method && o.present === true);
481
+ }
482
+ /** True only if a subscription credential is confirmed present. */
483
+ export async function hasSubscription(provider, ctx) {
484
+ const report = await provider.resolveAuth(ctx);
485
+ return anyPresent(report, "subscription");
486
+ }
487
+ /** True only if an API key is confirmed set in the env. */
488
+ export async function hasApiKey(provider, ctx) {
489
+ const report = await provider.resolveAuth(ctx);
490
+ return anyPresent(report, "api_key");
491
+ }
492
+ /** True only if Bedrock credentials are confirmed present in the env. */
493
+ export async function hasBedrock(provider, ctx) {
494
+ const report = await provider.resolveAuth(ctx);
495
+ return anyPresent(report, "bedrock");
496
+ }
497
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAS9B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAc/C,SAAS,MAAM,CAAC,GAA2B,EAAE,GAAW;IACtD,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,UAAkB;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,MAAe;IACpD,MAAM,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;IAC9B,MAAM,OAAO,GAA2B;QACtC,mBAAmB,EAAE,GAAG,MAAM,iCAAiC;QAC/D,iBAAiB,EAAE,GAAG,MAAM,+BAA+B;QAC3D,kBAAkB,EAAE,GAAG,MAAM,gCAAgC;QAC7D,mBAAmB,EAAE,GAAG,MAAM,4CAA4C;QAC1E,kBAAkB,EAAE,GAAG,MAAM,2CAA2C;KACzE,CAAC;IACF,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,YAAoB,EAAE,GAA2B;IAC1E,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,MAAM,CAAC,GAAG,EAAE,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,mBAAmB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;gBACjH,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;gBACzC,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,WAAW,EAAE,aAAa;oBAC1B,MAAM;oBACN,cAAc,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;iBACjE,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,GAAG,EAAE,mBAAmB,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YACnD,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;QACjE,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,CAAC;gBAClC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YACnD,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;QACjE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,CAAC;gBACnE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YACnD,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;QACjE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,CAAC;gBACnE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;YACnD,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;QACjE,CAAC;QACD,KAAK,UAAU,CAAC;QAChB,KAAK,IAAI;YACP,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACnD;YACE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IACnE,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAE9E,KAAK,UAAU,WAAW,CACxB,IAAY,EACZ,cAAkC,EAClC,GAA2B;IAE3B,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC;IACJ,CAAC;IAED,IAAI,OAA2B,CAAC;IAChC,IAAI,CAAC;QACH,eAAe,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;YACjC,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,QAAQ,CAAC,GAAG;YACrB,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;YAC3C,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,GAAG;YACH,UAAU,EAAE,CAAC;SACd,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAClE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yFAAyF;IAC3F,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,QAAQ,CAAC,GAAG;QAC1B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO;KACR,CAAC;AACJ,CAAC;AAgBD,SAAS,wBAAwB,CAAC,GAAuB;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5B,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7F,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,cAAc,CAAC;IACxG,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACjE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAwB;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAE9D,MAAM,YAAY,GAAe;QAC/B,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,mBAAmB,EAAE;QACjD,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB,CAAC;KAC1C,CAAC;IACF,MAAM,cAAc,GAClB,MAAM,CAAC,GAAG,EAAE,4BAA4B,CAAC;QACzC,CAAC,MAAM,CAAC,GAAG,EAAE,mBAAmB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;IAClE,MAAM,aAAa,GAAe;QAChC,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE;YACN,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,CAAC,4BAA4B,EAAE,mBAAmB,EAAE,YAAY,CAAC;SACxE;QACD,OAAO,EAAE,cAAc;KACxB,CAAC;IAEF,+DAA+D;IAC/D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,SAAS,GAAe,OAAO,CAAC,QAAQ,KAAK,QAAQ;YACzD,CAAC,CAAC;gBACE,MAAM,EAAE,cAAc;gBACtB,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE;gBACpD,OAAO,EAAE,KAAK,EAAE,8BAA8B;aAC/C;YACH,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACxB,YAAY,CAAC,mBAAmB,EAAE,SAAS,CAAC,EAC5C,mBAAmB,CACpB,CAAC;gBACF,OAAO;oBACL,MAAM,EAAE,cAAuB;oBAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACjD,OAAO,EAAE,MAAM,UAAU,CAAC,QAAQ,CAAC;iBACpC,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QACT,OAAO;YACL,YAAY,EAAE,QAAQ;YACtB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;YAC/B,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,SAAS,CAAC;YACjD,MAAM,EAAE,YAAY;SACrB,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC;QACH,eAAe,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;YACjC,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,MAAM,CAAC,YAAa;YAC7B,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;YACxD,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,GAAG;YACH,UAAU,EAAE,EAAE;SACf,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAyB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;YAExC,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC;YAC9E,MAAM,SAAS,GAAe;gBAC5B,MAAM,EAAE,cAAc;gBACtB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE;gBAC7D,OAAO,EAAE,UAAU;aACpB,CAAC;YAEF,WAAW;YACX,MAAM,QAAQ,GAAiB,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,KAAK;gBAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5C,IAAI,IAAI,CAAC,OAAO;gBAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAClD,IAAI,IAAI,CAAC,gBAAgB;gBAAE,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC7E,IAAI,IAAI,CAAC,UAAU;gBAAE,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAE3D,OAAO;gBACL,YAAY,EAAE,QAAQ;gBACtB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;gBAC/B,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,SAAS,CAAC;gBACjD,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACjE,MAAM,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6BAA6B;IAC/B,CAAC;IAED,4EAA4E;IAC5E,MAAM,SAAS,GAAe,OAAO,CAAC,QAAQ,KAAK,QAAQ;QACzD,CAAC,CAAC;YACE,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE;YACpD,OAAO,EAAE,KAAK;SACf;QACH,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACxB,YAAY,CAAC,mBAAmB,EAAE,SAAS,CAAC,EAC5C,mBAAmB,CACpB,CAAC;YACF,OAAO;gBACL,MAAM,EAAE,cAAuB;gBAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACjD,OAAO,EAAE,MAAM,UAAU,CAAC,QAAQ,CAAC;aACpC,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IAET,OAAO;QACL,YAAY,EAAE,QAAQ;QACtB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,SAAS,CAAC;QACjD,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,sEAAsE;AACtE,8DAA8D;AAC9D,8EAA8E;AAE9E,MAAM,2BAA2B,GAAa;IAC5C,gCAAgC;IAChC,+BAA+B;IAC/B,gCAAgC;IAChC,uBAAuB;IACvB,uBAAuB;CACxB,CAAC;AACF,MAAM,sBAAsB,GAAa;IACvC,8CAA8C;IAC9C,6CAA6C;IAC7C,qCAAqC;IACrC,4BAA4B;CAC7B,CAAC;AACF,MAAM,4BAA4B,GAAa;IAC7C,oBAAoB;IACpB,sBAAsB;IACtB,sCAAsC;IACtC,sBAAsB;CACvB,CAAC;AAEF,KAAK,UAAU,gBAAgB,CAAC,GAAwB;IACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAe;QAC/B,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE;QAC9C,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC;KACvC,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC;IAE9E,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO;YACL,YAAY,EAAE,OAAO;YACrB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;YAC/B,OAAO,EAAE;gBACP,YAAY;gBACZ;oBACE,MAAM,EAAE,cAAc;oBACtB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxC,OAAO,EAAE,UAAU;iBACpB;aACF;YACD,MAAM,EAAE,YAAY;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,gBAAoC,CAAC;IACzC,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,IAAI,CAAC;QACH,eAAe,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;YACjC,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,MAAM,CAAC,YAAa;YAC7B,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;YAC/C,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,GAAG;YACH,UAAU,EAAE,EAAE;SACf,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAEpD,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzD,mBAAmB,GAAG,IAAI,CAAC;YAC3B,gBAAgB,GAAG,SAAS,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3D,kFAAkF;YAClF,iEAAiE;YACjE,mBAAmB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YACjD,gBAAgB,GAAG,SAAS,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACjE,mBAAmB,GAAG,KAAK,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,8DAA8D;YAC9D,mBAAmB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mBAAmB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,OAAO;QACL,YAAY,EAAE,OAAO;QACrB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE;YACP,YAAY;YACZ;gBACE,MAAM,EAAE,cAAc;gBACtB,MAAM,EAAE,OAAO;oBACb,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE;oBAChD,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACpC,OAAO,EAAE,mBAAmB;aAC7B;SACF;QACD,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS;QACzE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;KACvC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,wEAAwE;AACxE,0DAA0D;AAC1D,8EAA8E;AAE9E,KAAK,UAAU,iBAAiB,CAAC,GAAwB;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC7F,OAAO;QACL,YAAY,EAAE,QAAQ;QACtB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE;YACP;gBACE,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE;gBAC9C,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC;aACvC;YACD;gBACE,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE;gBAC9C,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC;aACvC;YACD;gBACE,MAAM,EAAE,cAAc;gBACtB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxC,OAAO,EAAE,MAAM,UAAU,CAAC,QAAQ,CAAC;aACpC;SACF;QACD,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,sEAAsE;AACtE,uEAAuE;AACvE,8EAA8E;AAE9E,KAAK,UAAU,iBAAiB,CAAC,GAAwB;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7D,OAAO;QACL,YAAY,EAAE,QAAQ;QACtB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE;YACP,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE;YAC7G,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE;SAC9G;QACD,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,GAAwB;IACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAChE,OAAO;QACL,YAAY,EAAE,UAAU;QACxB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE;YACP,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE;YAC7G,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB,CAAC,EAAE;SACpH;QACD,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAwB;IACnD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO;QACL,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE;YACP,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE;YAC7G,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB,CAAC,EAAE;SACpH;QACD,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,CAA0C;IACjE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8C,CAAC;AAEpE,SAAS,QAAQ,CAAC,YAAoB,EAAE,GAAwB;IAC9D,MAAM,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC;IAClC,OAAO,GAAG,YAAY,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,YAAoB,EAAE,GAAwB;IAC3E,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,KAAK,UAAU;YACb,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAClC,KAAK,IAAI;YACP,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B;YACE,OAAO;gBACL,YAAY;gBACZ,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,YAAY,GAAG,EAAE;gBACtF,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,YAAY;aACrB,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,YAAoB,EACpB,GAAwB;IAExB,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC;YAC9C,OAAO,GAAG,CAAC,MAAM,CAAC;QACpB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAExD,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACxC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,cAAc;IAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,uEAAuE;AACvE,4DAA4D;AAC5D,8EAA8E;AAE9E,SAAS,UAAU,CAAC,MAAkB,EAAE,MAA4B;IAClE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAC/E,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAwB,EACxB,GAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAC5C,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAwB,EACxB,GAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAwB,EACxB,GAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../src/utils/binary.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAoDD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAgB3F;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA6D/F;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAUtF;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../src/utils/binary.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAwED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAgB3F;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAgE/F;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAUtF;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
@@ -14,6 +14,26 @@ const COMMON_PATHS_UNIX = {
14
14
  "/usr/local/bin/codex",
15
15
  path.join(os.homedir(), ".npm-global", "bin", "codex"),
16
16
  ],
17
+ gemini: [
18
+ path.join(os.homedir(), ".local", "bin", "gemini"),
19
+ "/usr/local/bin/gemini",
20
+ path.join(os.homedir(), ".npm-global", "bin", "gemini"),
21
+ ],
22
+ agent: [
23
+ path.join(os.homedir(), ".local", "bin", "agent"),
24
+ "/usr/local/bin/agent",
25
+ path.join(os.homedir(), ".npm-global", "bin", "agent"),
26
+ ],
27
+ opencode: [
28
+ path.join(os.homedir(), ".local", "bin", "opencode"),
29
+ "/usr/local/bin/opencode",
30
+ path.join(os.homedir(), ".npm-global", "bin", "opencode"),
31
+ ],
32
+ pi: [
33
+ path.join(os.homedir(), ".local", "bin", "pi"),
34
+ "/usr/local/bin/pi",
35
+ path.join(os.homedir(), ".npm-global", "bin", "pi"),
36
+ ],
17
37
  };
18
38
  function getCommonPathsWindows(name) {
19
39
  const appData = process.env["APPDATA"] ?? "";
@@ -112,13 +132,16 @@ export async function findBinary(name, configOverride) {
112
132
  cache.set(name, result);
113
133
  return result;
114
134
  }
135
+ const installHints = {
136
+ claude: "Install: npm install -g @anthropic-ai/claude-code",
137
+ codex: "Install: npm install -g @openai/codex",
138
+ gemini: "Install: npm install -g @anthropic-ai/claude-code (Gemini CLI)",
139
+ agent: "Install the Cursor CLI agent",
140
+ opencode: "Install: npm install -g opencode-ai",
141
+ pi: "Install: npm install -g @mariozechner/pi-coding-agent",
142
+ };
115
143
  throw new Error(`Could not find "${name}" binary. Searched common install paths and PATH. ` +
116
- `Install ${name} and ensure it's available in your PATH. ` +
117
- (name === "claude"
118
- ? `Install: npm install -g @anthropic-ai/claude-code`
119
- : name === "codex"
120
- ? `Install: npm install -g @openai/codex`
121
- : `Ensure "${name}" is installed and on your PATH.`));
144
+ (installHints[name] ?? `Ensure "${name}" is installed and on your PATH.`));
122
145
  }
123
146
  export async function ensureCommandResolvable(command) {
124
147
  // If it's a path (contains separator), check existence directly
@@ -1 +1 @@
1
- {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/utils/binary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/utils/binary.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAYA,wBAAgB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQnF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMpF;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAUjE"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AA0BA,wBAAgB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYnF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMpF;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAUjE"}
package/dist/utils/env.js CHANGED
@@ -4,6 +4,19 @@ const BASE_ALLOW_LIST = [
4
4
  // Windows essentials
5
5
  "SystemRoot", "WINDIR", "COMSPEC", "PATHEXT", "APPDATA", "LOCALAPPDATA", "USERPROFILE",
6
6
  ];
7
+ /** Auth env vars that providers need for API-key auth and billing detection. */
8
+ const AUTH_ALLOW_LIST = [
9
+ // Claude / Anthropic
10
+ "ANTHROPIC_API_KEY", "ANTHROPIC_BEDROCK_BASE_URL",
11
+ // AWS (Bedrock)
12
+ "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "AWS_REGION", "AWS_PROFILE",
13
+ // Codex / OpenAI
14
+ "OPENAI_API_KEY",
15
+ // Gemini / Google
16
+ "GEMINI_API_KEY", "GOOGLE_API_KEY",
17
+ // Cursor
18
+ "CURSOR_API_KEY",
19
+ ];
7
20
  const SENSITIVE_PATTERNS = /KEY|SECRET|TOKEN|PASSWORD|CREDENTIAL|AUTH/i;
8
21
  const ESSENTIAL_PATHS_UNIX = ["/usr/local/bin", "/usr/bin", "/bin"];
9
22
  export function buildEnv(callerEnv) {
@@ -13,6 +26,11 @@ export function buildEnv(callerEnv) {
13
26
  if (val !== undefined)
14
27
  env[key] = val;
15
28
  }
29
+ for (const key of AUTH_ALLOW_LIST) {
30
+ const val = process.env[key];
31
+ if (val !== undefined)
32
+ env[key] = val;
33
+ }
16
34
  if (callerEnv)
17
35
  Object.assign(env, callerEnv);
18
36
  return env;
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,eAAe,GAAG;IACtB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;IAC5E,qBAAqB;IACrB,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa;CACvF,CAAC;AAEF,MAAM,kBAAkB,GAAG,4CAA4C,CAAC;AAExE,MAAM,oBAAoB,GAAG,CAAC,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAEpE,MAAM,UAAU,QAAQ,CAAC,SAAkC;IACzD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,GAAG,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACxC,CAAC;IACD,IAAI,SAAS;QAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAA2B;IAC1D,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAA2B;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACrD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,eAAe,GAAG;IACtB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ;IAC5E,qBAAqB;IACrB,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa;CACvF,CAAC;AAEF,gFAAgF;AAChF,MAAM,eAAe,GAAG;IACtB,qBAAqB;IACrB,mBAAmB,EAAE,4BAA4B;IACjD,gBAAgB;IAChB,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,YAAY,EAAE,aAAa;IAC9F,iBAAiB;IACjB,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB,EAAE,gBAAgB;IAClC,SAAS;IACT,gBAAgB;CACjB,CAAC;AAEF,MAAM,kBAAkB,GAAG,4CAA4C,CAAC;AAExE,MAAM,oBAAoB,GAAG,CAAC,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAEpE,MAAM,UAAU,QAAQ,CAAC,SAAkC;IACzD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,GAAG,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACxC,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,GAAG,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACxC,CAAC;IACD,IAAI,SAAS;QAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAA2B;IAC1D,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAA2B;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACrD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC"}