@agentex/agent 0.0.3 → 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 (40) hide show
  1. package/README.md +108 -70
  2. package/dist/index.d.ts +4 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/providers/claude/index.d.ts.map +1 -1
  7. package/dist/providers/claude/index.js +0 -2
  8. package/dist/providers/claude/index.js.map +1 -1
  9. package/dist/providers/codex/execute.d.ts.map +1 -1
  10. package/dist/providers/codex/execute.js +11 -2
  11. package/dist/providers/codex/execute.js.map +1 -1
  12. package/dist/providers/codex/index.d.ts.map +1 -1
  13. package/dist/providers/codex/index.js +0 -2
  14. package/dist/providers/codex/index.js.map +1 -1
  15. package/dist/providers/cursor/index.d.ts.map +1 -1
  16. package/dist/providers/cursor/index.js +0 -2
  17. package/dist/providers/cursor/index.js.map +1 -1
  18. package/dist/providers/gemini/index.d.ts.map +1 -1
  19. package/dist/providers/gemini/index.js +0 -2
  20. package/dist/providers/gemini/index.js.map +1 -1
  21. package/dist/providers/openclaw/index.d.ts.map +1 -1
  22. package/dist/providers/openclaw/index.js +6 -3
  23. package/dist/providers/openclaw/index.js.map +1 -1
  24. package/dist/providers/opencode/index.d.ts.map +1 -1
  25. package/dist/providers/opencode/index.js +0 -2
  26. package/dist/providers/opencode/index.js.map +1 -1
  27. package/dist/providers/pi/index.d.ts.map +1 -1
  28. package/dist/providers/pi/index.js +0 -2
  29. package/dist/providers/pi/index.js.map +1 -1
  30. package/dist/providers/process/index.d.ts.map +1 -1
  31. package/dist/providers/process/index.js +18 -35
  32. package/dist/providers/process/index.js.map +1 -1
  33. package/dist/types.d.ts +74 -34
  34. package/dist/types.d.ts.map +1 -1
  35. package/dist/types.js.map +1 -1
  36. package/dist/utils/auth.d.ts +5 -12
  37. package/dist/utils/auth.d.ts.map +1 -1
  38. package/dist/utils/auth.js +339 -85
  39. package/dist/utils/auth.js.map +1 -1
  40. package/package.json +1 -1
@@ -1,7 +1,9 @@
1
1
  import * as fs from "node:fs/promises";
2
2
  import * as path from "node:path";
3
3
  import * as os from "node:os";
4
- import { buildEnv } from "./env.js";
4
+ import { buildEnv, ensurePathInEnv } from "./env.js";
5
+ import { findBinary } from "./binary.js";
6
+ import { runChildProcess } from "./process.js";
5
7
  function hasEnv(env, key) {
6
8
  const v = env[key];
7
9
  return typeof v === "string" && v.trim().length > 0;
@@ -15,10 +17,6 @@ async function fileExists(p) {
15
17
  return false;
16
18
  }
17
19
  }
18
- /**
19
- * Returns the env-scoped home directory for a provider, honoring the provider's
20
- * config-dir override env var (e.g. CODEX_HOME, CLAUDE_CONFIG_DIR).
21
- */
22
20
  function providerHome(envVar, defaultDir) {
23
21
  const override = process.env[envVar];
24
22
  if (typeof override === "string" && override.trim().length > 0) {
@@ -26,10 +24,6 @@ function providerHome(envVar, defaultDir) {
26
24
  }
27
25
  return path.join(os.homedir(), defaultDir);
28
26
  }
29
- /**
30
- * Map standard Claude model names to Bedrock-qualified IDs.
31
- * Unknown models pass through unchanged.
32
- */
33
27
  function bedrockModelId(model, region) {
34
28
  const prefix = region ?? "us";
35
29
  const mapping = {
@@ -41,13 +35,9 @@ function bedrockModelId(model, region) {
41
35
  };
42
36
  return mapping[model] ?? model;
43
37
  }
44
- /**
45
- * Detect authentication method for a given provider based on environment variables.
46
- */
47
38
  export function detectAuth(providerType, env) {
48
39
  switch (providerType) {
49
40
  case "claude": {
50
- // Check for Bedrock
51
41
  if (hasEnv(env, "ANTHROPIC_BEDROCK_BASE_URL") || (hasEnv(env, "AWS_ACCESS_KEY_ID") && hasEnv(env, "AWS_REGION"))) {
52
42
  const region = env["AWS_REGION"]?.trim();
53
43
  return {
@@ -57,11 +47,9 @@ export function detectAuth(providerType, env) {
57
47
  resolveModelId: (model) => bedrockModelId(model, region),
58
48
  };
59
49
  }
60
- // Check for API key
61
50
  if (hasEnv(env, "ANTHROPIC_API_KEY")) {
62
51
  return { method: "api_key", billingType: "api" };
63
52
  }
64
- // Subscription fallback
65
53
  return { method: "subscription", billingType: "subscription" };
66
54
  }
67
55
  case "codex": {
@@ -82,124 +70,365 @@ export function detectAuth(providerType, env) {
82
70
  }
83
71
  return { method: "subscription", billingType: "subscription" };
84
72
  }
85
- case "opencode": {
86
- // OpenCode is typically API-based
87
- return { method: "api_key", billingType: "api" };
88
- }
89
- case "pi": {
90
- // Pi is typically API-based
73
+ case "opencode":
74
+ case "pi":
91
75
  return { method: "api_key", billingType: "api" };
92
- }
93
76
  default:
94
77
  return { method: "subscription", billingType: "subscription" };
95
78
  }
96
79
  }
97
80
  // ---------------------------------------------------------------------------
98
- // resolveAuthstructured, side-effect-free (aside from file stats) report
99
- // of every auth path a provider supports, and which are currently present.
81
+ // Binary status probe spawns `<cli> --version` to populate BinaryStatus.
100
82
  // ---------------------------------------------------------------------------
101
- function envOption(env, method, varName) {
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
+ }
102
115
  return {
103
- method,
104
- source: { kind: "env", var: varName },
105
- present: hasEnv(env, varName),
116
+ installed: true,
117
+ resolvedPath: resolved.bin,
118
+ prefixArgs: resolved.prefixArgs,
119
+ version,
106
120
  };
107
121
  }
108
- async function resolveCodexAuth(ctx) {
109
- const env = buildEnv(ctx?.env);
110
- const options = [];
111
- options.push(envOption(env, "api_key", "OPENAI_API_KEY"));
112
- const authPath = path.join(providerHome("CODEX_HOME", ".codex"), "auth.json");
113
- options.push({
114
- method: "subscription",
115
- source: { kind: "file", path: authPath },
116
- present: await fileExists(authPath),
117
- });
118
- return { providerType: "codex", options };
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;
119
133
  }
120
134
  async function resolveClaudeAuth(ctx) {
121
135
  const env = buildEnv(ctx?.env);
122
- const options = [];
123
- options.push(envOption(env, "api_key", "ANTHROPIC_API_KEY"));
124
- const bedrockUrl = hasEnv(env, "ANTHROPIC_BEDROCK_BASE_URL");
125
- const awsCreds = hasEnv(env, "AWS_ACCESS_KEY_ID") && hasEnv(env, "AWS_REGION");
126
- options.push({
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 = {
127
145
  method: "bedrock",
128
146
  source: {
129
147
  kind: "env_combo",
130
148
  vars: ["ANTHROPIC_BEDROCK_BASE_URL", "AWS_ACCESS_KEY_ID", "AWS_REGION"],
131
149
  },
132
- present: bedrockUrl || awsCreds,
133
- });
134
- if (process.platform === "darwin") {
135
- // macOS stores Claude Code subscription creds in the system Keychain.
136
- // Reading it triggers a user prompt, so we can't confirm silently.
137
- options.push({
138
- method: "subscription",
139
- source: { kind: "keychain", service: "Claude Code" },
140
- present: "unknown",
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,
141
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
142
217
  }
143
- else {
144
- const credPath = path.join(providerHome("CLAUDE_CONFIG_DIR", ".claude"), ".credentials.json");
145
- options.push({
218
+ // CLI call failed (old version, parse error, etc). Fall back to filesystem.
219
+ const subOption = process.platform === "darwin"
220
+ ? {
146
221
  method: "subscription",
147
- source: { kind: "file", path: credPath },
148
- present: await fileExists(credPath),
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,
149
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
+ }
150
322
  }
151
- return { providerType: "claude", options };
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
+ };
152
342
  }
343
+ // ---------------------------------------------------------------------------
344
+ // Gemini — filesystem-only (no `gemini auth status` subcommand exists).
345
+ // Still runs `gemini --version` to populate BinaryStatus.
346
+ // ---------------------------------------------------------------------------
153
347
  async function resolveGeminiAuth(ctx) {
154
348
  const env = buildEnv(ctx?.env);
155
- const options = [];
156
- options.push(envOption(env, "api_key", "GEMINI_API_KEY"));
157
- options.push(envOption(env, "api_key", "GOOGLE_API_KEY"));
349
+ const binary = await checkBinary("gemini", ctx?.command, env);
158
350
  const credPath = path.join(providerHome("GEMINI_CONFIG_DIR", ".gemini"), "oauth_creds.json");
159
- options.push({
160
- method: "subscription",
161
- source: { kind: "file", path: credPath },
162
- present: await fileExists(credPath),
163
- });
164
- return { providerType: "gemini", options };
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
+ };
165
373
  }
374
+ // ---------------------------------------------------------------------------
375
+ // Cursor / OpenCode / Pi / OpenClaw / Process — no CLI auth commands;
376
+ // straightforward env-only reports with binary status when applicable.
377
+ // ---------------------------------------------------------------------------
166
378
  async function resolveCursorAuth(ctx) {
167
379
  const env = buildEnv(ctx?.env);
380
+ const binary = await checkBinary("agent", ctx?.command, env);
168
381
  return {
169
382
  providerType: "cursor",
383
+ binary: stripPrefixArgs(binary),
170
384
  options: [
171
- envOption(env, "api_key", "CURSOR_API_KEY"),
172
- envOption(env, "api_key", "OPENAI_API_KEY"),
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") },
173
387
  ],
388
+ source: "filesystem",
174
389
  };
175
390
  }
176
391
  async function resolveOpencodeAuth(ctx) {
177
392
  const env = buildEnv(ctx?.env);
393
+ const binary = await checkBinary("opencode", ctx?.command, env);
178
394
  return {
179
395
  providerType: "opencode",
396
+ binary: stripPrefixArgs(binary),
180
397
  options: [
181
- envOption(env, "api_key", "OPENAI_API_KEY"),
182
- envOption(env, "api_key", "ANTHROPIC_API_KEY"),
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") },
183
400
  ],
401
+ source: "filesystem",
184
402
  };
185
403
  }
186
404
  async function resolvePiAuth(ctx) {
187
405
  const env = buildEnv(ctx?.env);
406
+ const binary = await checkBinary("pi", ctx?.command, env);
188
407
  return {
189
408
  providerType: "pi",
409
+ binary: stripPrefixArgs(binary),
190
410
  options: [
191
- envOption(env, "api_key", "OPENAI_API_KEY"),
192
- envOption(env, "api_key", "ANTHROPIC_API_KEY"),
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") },
193
413
  ],
414
+ source: "filesystem",
194
415
  };
195
416
  }
196
- /**
197
- * Resolve the auth report for a provider by type. Providers call the matching
198
- * function from their own `resolveAuth` method; callers can use the helpers
199
- * below (`hasSubscription`, `hasApiKey`, `hasBedrock`) instead of this
200
- * directly.
201
- */
202
- export async function resolveAuthForProvider(providerType, ctx) {
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) {
203
432
  switch (providerType) {
204
433
  case "codex":
205
434
  return resolveCodexAuth(ctx);
@@ -214,18 +443,43 @@ export async function resolveAuthForProvider(providerType, ctx) {
214
443
  case "pi":
215
444
  return resolvePiAuth(ctx);
216
445
  default:
217
- return { providerType, options: [] };
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
+ }
218
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();
219
474
  }
220
475
  // ---------------------------------------------------------------------------
221
476
  // Sugar: method-specific presence checks. Each commits the caller to a
222
- // billing mode, making the choice visible at the call site. "unknown"
223
- // presence (e.g. macOS keychain) is NOT treated as present — safe default.
477
+ // billing mode, making the choice visible at the call site.
224
478
  // ---------------------------------------------------------------------------
225
479
  function anyPresent(report, method) {
226
480
  return report.options.some((o) => o.method === method && o.present === true);
227
481
  }
228
- /** True only if a subscription credential is confirmed present on disk. */
482
+ /** True only if a subscription credential is confirmed present. */
229
483
  export async function hasSubscription(provider, ctx) {
230
484
  const report = await provider.resolveAuth(ctx);
231
485
  return anyPresent(report, "subscription");
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentex/agent",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Programmatic execution of AI coding agents (Claude Code, Codex, OpenClaw)",
5
5
  "type": "module",
6
6
  "exports": {