@almightygpt/core 0.10.1 → 0.11.1

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 (56) hide show
  1. package/dist/adapters/claude.d.ts.map +1 -1
  2. package/dist/adapters/claude.js +5 -0
  3. package/dist/adapters/claude.js.map +1 -1
  4. package/dist/adapters/defaults.d.ts.map +1 -1
  5. package/dist/adapters/defaults.js +5 -0
  6. package/dist/adapters/defaults.js.map +1 -1
  7. package/dist/adapters/factory.d.ts.map +1 -1
  8. package/dist/adapters/factory.js +11 -1
  9. package/dist/adapters/factory.js.map +1 -1
  10. package/dist/adapters/gemini.d.ts.map +1 -1
  11. package/dist/adapters/gemini.js +5 -0
  12. package/dist/adapters/gemini.js.map +1 -1
  13. package/dist/adapters/index.d.ts +9 -5
  14. package/dist/adapters/index.d.ts.map +1 -1
  15. package/dist/adapters/index.js +9 -5
  16. package/dist/adapters/index.js.map +1 -1
  17. package/dist/adapters/ollama.d.ts +47 -0
  18. package/dist/adapters/ollama.d.ts.map +1 -0
  19. package/dist/adapters/ollama.js +124 -0
  20. package/dist/adapters/ollama.js.map +1 -0
  21. package/dist/adapters/openai.d.ts.map +1 -1
  22. package/dist/adapters/openai.js +8 -0
  23. package/dist/adapters/openai.js.map +1 -1
  24. package/dist/adapters/openrouter.d.ts +50 -0
  25. package/dist/adapters/openrouter.d.ts.map +1 -0
  26. package/dist/adapters/openrouter.js +153 -0
  27. package/dist/adapters/openrouter.js.map +1 -0
  28. package/dist/auth/__tests__/resolver.test.js +18 -0
  29. package/dist/auth/__tests__/resolver.test.js.map +1 -1
  30. package/dist/auth/types.d.ts +1 -1
  31. package/dist/auth/types.d.ts.map +1 -1
  32. package/dist/auth/types.js +8 -0
  33. package/dist/auth/types.js.map +1 -1
  34. package/dist/auth/validator.d.ts.map +1 -1
  35. package/dist/auth/validator.js +127 -0
  36. package/dist/auth/validator.js.map +1 -1
  37. package/dist/config/schema.d.ts +12 -12
  38. package/dist/config/schema.d.ts.map +1 -1
  39. package/dist/config/schema.js +8 -1
  40. package/dist/config/schema.js.map +1 -1
  41. package/dist/index.d.ts +1 -1
  42. package/dist/index.js +1 -1
  43. package/package.json +1 -1
  44. package/src/adapters/claude.ts +8 -0
  45. package/src/adapters/defaults.ts +5 -0
  46. package/src/adapters/factory.ts +11 -1
  47. package/src/adapters/gemini.ts +8 -0
  48. package/src/adapters/index.ts +9 -5
  49. package/src/adapters/ollama.ts +157 -0
  50. package/src/adapters/openai.ts +11 -0
  51. package/src/adapters/openrouter.ts +202 -0
  52. package/src/auth/__tests__/resolver.test.ts +24 -0
  53. package/src/auth/types.ts +15 -1
  54. package/src/auth/validator.ts +135 -0
  55. package/src/config/schema.ts +8 -1
  56. package/src/index.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAmBpB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,eAAe;IAEhC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,IAAI,SAAW,EAAE,OAAO,GAAE,oBAAyB;IAQ/D;;;OAGG;YACW,YAAY;IAUpB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAoG3D"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAmBpB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,eAAe;IAEhC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,IAAI,SAAW,EAAE,OAAO,GAAE,oBAAyB;IAQ/D;;;OAGG;YACW,YAAY;IAkBpB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAoG3D"}
@@ -58,6 +58,11 @@ export class ClaudeAdapter {
58
58
  const result = await resolveApiKey("anthropic", opts);
59
59
  if (result.source === "missing")
60
60
  return null;
61
+ if (result.source === "keychain_error") {
62
+ throw new AdapterError(`Keychain read failed for Anthropic: ${result.keychainError ?? "unknown error"}. ` +
63
+ "Set ANTHROPIC_API_KEY in your environment to override, or fix the " +
64
+ "keychain state.", this.name);
65
+ }
61
66
  this.client = new Anthropic({ apiKey: result.key });
62
67
  return this.client;
63
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/adapters/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAIrD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAI3D,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/adapters/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAOrD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAM3D,CAAC"}
@@ -28,6 +28,9 @@ export const DEFAULT_MODELS = {
28
28
  openai: "gpt-4o",
29
29
  anthropic: "claude-sonnet-4-6",
30
30
  google: "gemini-2.5-flash",
31
+ // v0.12.0+ — meta-providers
32
+ openrouter: "deepseek/deepseek-chat",
33
+ ollama: "llama3.3:70b",
31
34
  };
32
35
  /**
33
36
  * Pretty name for each provider — used in CLI prompts, error
@@ -37,5 +40,7 @@ export const PROVIDER_PRETTY_NAME = {
37
40
  openai: "OpenAI",
38
41
  anthropic: "Anthropic",
39
42
  google: "Google",
43
+ openrouter: "OpenRouter",
44
+ ollama: "Ollama (local)",
40
45
  };
41
46
  //# sourceMappingURL=defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/adapters/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAA+B;IACxD,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,mBAAmB;IAC9B,MAAM,EAAE,kBAAkB;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA+B;IAC9D,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACjB,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/adapters/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAA+B;IACxD,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,mBAAmB;IAC9B,MAAM,EAAE,kBAAkB;IAC1B,4BAA4B;IAC5B,UAAU,EAAE,wBAAwB;IACpC,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA+B;IAC9D,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,gBAAgB;CACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAM1C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgBnE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW3D"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAQ1C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAoBnE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAe3D"}
@@ -10,6 +10,8 @@ import { MockAdapter } from "./mock.js";
10
10
  import { OpenAIAdapter } from "./openai.js";
11
11
  import { ClaudeAdapter } from "./claude.js";
12
12
  import { GeminiAdapter } from "./gemini.js";
13
+ import { OpenRouterAdapter } from "./openrouter.js";
14
+ import { OllamaAdapter } from "./ollama.js";
13
15
  export function makeAdapter(name, provider) {
14
16
  switch (provider) {
15
17
  case "openai":
@@ -18,11 +20,15 @@ export function makeAdapter(name, provider) {
18
20
  return new ClaudeAdapter(name);
19
21
  case "google":
20
22
  return new GeminiAdapter(name);
23
+ case "openrouter":
24
+ return new OpenRouterAdapter(name);
25
+ case "ollama":
26
+ return new OllamaAdapter(name);
21
27
  case "mock":
22
28
  return new MockAdapter();
23
29
  default:
24
30
  throw new Error(`Provider "${provider}" not supported. ` +
25
- `Use "openai", "anthropic", "google", or "mock".`);
31
+ `Use "openai", "anthropic", "google", "openrouter", "ollama", or "mock".`);
26
32
  }
27
33
  }
28
34
  export function envHintForProvider(provider) {
@@ -33,6 +39,10 @@ export function envHintForProvider(provider) {
33
39
  return "Export ANTHROPIC_API_KEY in your environment.";
34
40
  case "google":
35
41
  return "Export GOOGLE_API_KEY (or GEMINI_API_KEY) in your environment.";
42
+ case "openrouter":
43
+ return "Export OPENROUTER_API_KEY in your environment.";
44
+ case "ollama":
45
+ return "Install Ollama (https://ollama.ai) and run `ollama serve` locally.";
36
46
  default:
37
47
  return "";
38
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,QAAgB;IACxD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,WAAW;YACd,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,MAAM;YACT,OAAO,IAAI,WAAW,EAAE,CAAC;QAC3B;YACE,MAAM,IAAI,KAAK,CACb,aAAa,QAAQ,mBAAmB;gBACtC,iDAAiD,CACpD,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,4CAA4C,CAAC;QACtD,KAAK,WAAW;YACd,OAAO,+CAA+C,CAAC;QACzD,KAAK,QAAQ;YACX,OAAO,gEAAgE,CAAC;QAC1E;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,QAAgB;IACxD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,WAAW;YACd,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,YAAY;YACf,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,MAAM;YACT,OAAO,IAAI,WAAW,EAAE,CAAC;QAC3B;YACE,MAAM,IAAI,KAAK,CACb,aAAa,QAAQ,mBAAmB;gBACtC,yEAAyE,CAC5E,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,4CAA4C,CAAC;QACtD,KAAK,WAAW;YACd,OAAO,+CAA+C,CAAC;QACzD,KAAK,QAAQ;YACX,OAAO,gEAAgE,CAAC;QAC1E,KAAK,YAAY;YACf,OAAO,gDAAgD,CAAC;QAC1D,KAAK,QAAQ;YACX,OAAO,oEAAoE,CAAC;QAC9E;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAsBpB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,YAAY;IAE7B,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,IAAI,SAAW,EAAE,OAAO,GAAE,oBAAyB;IAa/D,0EAA0E;YAC5D,YAAY;IAUpB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAkF3D"}
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAsBpB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,YAAY;IAE7B,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,IAAI,SAAW,EAAE,OAAO,GAAE,oBAAyB;IAa/D,0EAA0E;YAC5D,YAAY;IAkBpB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAkF3D"}
@@ -71,6 +71,11 @@ export class GeminiAdapter {
71
71
  const result = await resolveApiKey("google", opts);
72
72
  if (result.source === "missing")
73
73
  return null;
74
+ if (result.source === "keychain_error") {
75
+ throw new AdapterError(`Keychain read failed for Google: ${result.keychainError ?? "unknown error"}. ` +
76
+ "Set GOOGLE_API_KEY (or GEMINI_API_KEY) in your environment to " +
77
+ "override, or fix the keychain state.", this.name);
78
+ }
74
79
  this.client = new GoogleGenerativeAI(result.key);
75
80
  return this.client;
76
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  /**
2
2
  * Adapter exports.
3
3
  *
4
- * Add new adapters here as they're implemented:
5
- * - Claude (Anthropic) — task #15
6
- * - Gemini post-MVP 1
7
- * - OpenRouter — post-MVP 1 (for cost-conscious users; see
8
- * docs/claude/competitor-ai-council.md)
4
+ * Currently shipped adapters:
5
+ * - OpenAI (gpt-4o family)
6
+ * - Anthropic (Claude Sonnet 4.x family)
7
+ * - Google (Gemini 2.5 family)
8
+ * - OpenRouter — v0.12.0+, meta-provider unlocking 100+ models
9
+ * - Ollama — v0.12.0+, local models, no cloud calls
10
+ * - Mock — for testing without API keys
9
11
  */
10
12
  export type { Adapter, AdapterInput, AdapterOutput, AgentRole, } from "./types.js";
11
13
  export { AdapterError } from "./types.js";
@@ -13,4 +15,6 @@ export { MockAdapter } from "./mock.js";
13
15
  export { OpenAIAdapter, type OpenAIAdapterOptions } from "./openai.js";
14
16
  export { ClaudeAdapter, type ClaudeAdapterOptions } from "./claude.js";
15
17
  export { GeminiAdapter, type GeminiAdapterOptions } from "./gemini.js";
18
+ export { OpenRouterAdapter, type OpenRouterAdapterOptions } from "./openrouter.js";
19
+ export { OllamaAdapter, type OllamaAdapterOptions } from "./ollama.js";
16
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EACV,OAAO,EACP,YAAY,EACZ,aAAa,EACb,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,YAAY,EACV,OAAO,EACP,YAAY,EACZ,aAAa,EACb,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,15 +1,19 @@
1
1
  /**
2
2
  * Adapter exports.
3
3
  *
4
- * Add new adapters here as they're implemented:
5
- * - Claude (Anthropic) — task #15
6
- * - Gemini post-MVP 1
7
- * - OpenRouter — post-MVP 1 (for cost-conscious users; see
8
- * docs/claude/competitor-ai-council.md)
4
+ * Currently shipped adapters:
5
+ * - OpenAI (gpt-4o family)
6
+ * - Anthropic (Claude Sonnet 4.x family)
7
+ * - Google (Gemini 2.5 family)
8
+ * - OpenRouter — v0.12.0+, meta-provider unlocking 100+ models
9
+ * - Ollama — v0.12.0+, local models, no cloud calls
10
+ * - Mock — for testing without API keys
9
11
  */
10
12
  export { AdapterError } from "./types.js";
11
13
  export { MockAdapter } from "./mock.js";
12
14
  export { OpenAIAdapter } from "./openai.js";
13
15
  export { ClaudeAdapter } from "./claude.js";
14
16
  export { GeminiAdapter } from "./gemini.js";
17
+ export { OpenRouterAdapter } from "./openrouter.js";
18
+ export { OllamaAdapter } from "./ollama.js";
15
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAiC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Ollama adapter (v0.12.0+).
3
+ *
4
+ * Ollama runs LLMs locally — no cloud calls, no API key, code never
5
+ * leaves the machine. Opens AlmightyGPT to regulated / government /
6
+ * air-gapped enterprise users who can't use cloud AI but want the
7
+ * Worker/Reviewer convention.
8
+ *
9
+ * Ollama exposes an OpenAI-compatible API at http://localhost:11434/v1,
10
+ * so this adapter is a thin wrapper around the OpenAI SDK with a
11
+ * custom baseURL.
12
+ *
13
+ * Requires the user to have Ollama installed + running locally. See
14
+ * https://ollama.ai. The adapter does NOT install Ollama or pull
15
+ * models — that's the user's setup step.
16
+ *
17
+ * Default model: llama3.3:70b (large, very capable for code review).
18
+ * Users with smaller machines should override via config:
19
+ * - llama3.2:3b (3B parameter, runs on most laptops)
20
+ * - qwen2.5-coder:7b (7B, code-tuned, decent for review)
21
+ * - qwen2.5-coder:32b (32B, much stronger for code, needs ~24GB RAM)
22
+ * - deepseek-r1:14b (14B, reasoning-tuned)
23
+ *
24
+ * No auth, no API key, no pricing — local model.
25
+ */
26
+ import { type Adapter, type AdapterInput, type AdapterOutput } from "./types.js";
27
+ export interface OllamaAdapterOptions {
28
+ /** Override the local Ollama base URL. Defaults to http://localhost:11434/v1. */
29
+ baseUrl?: string;
30
+ defaultModel?: string;
31
+ defaultMaxOutputTokens?: number;
32
+ defaultTimeoutMs?: number;
33
+ }
34
+ export declare class OllamaAdapter implements Adapter {
35
+ readonly name: string;
36
+ readonly provider = "ollama";
37
+ private readonly client;
38
+ readonly defaultModel: string;
39
+ private readonly defaultMaxOutputTokens;
40
+ private readonly defaultTimeoutMs;
41
+ private readonly baseUrl;
42
+ constructor(name?: string, options?: OllamaAdapterOptions);
43
+ /** Ollama is "available" if the local daemon responds. */
44
+ isAvailable(): Promise<boolean>;
45
+ execute(input: AdapterInput): Promise<AdapterOutput>;
46
+ }
47
+ //# sourceMappingURL=ollama.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/adapters/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAgB,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAM/F,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,IAAI,SAAW,EAAE,OAAO,GAAE,oBAAyB;IAmB/D,0DAA0D;IACpD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB/B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAmE3D"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Ollama adapter (v0.12.0+).
3
+ *
4
+ * Ollama runs LLMs locally — no cloud calls, no API key, code never
5
+ * leaves the machine. Opens AlmightyGPT to regulated / government /
6
+ * air-gapped enterprise users who can't use cloud AI but want the
7
+ * Worker/Reviewer convention.
8
+ *
9
+ * Ollama exposes an OpenAI-compatible API at http://localhost:11434/v1,
10
+ * so this adapter is a thin wrapper around the OpenAI SDK with a
11
+ * custom baseURL.
12
+ *
13
+ * Requires the user to have Ollama installed + running locally. See
14
+ * https://ollama.ai. The adapter does NOT install Ollama or pull
15
+ * models — that's the user's setup step.
16
+ *
17
+ * Default model: llama3.3:70b (large, very capable for code review).
18
+ * Users with smaller machines should override via config:
19
+ * - llama3.2:3b (3B parameter, runs on most laptops)
20
+ * - qwen2.5-coder:7b (7B, code-tuned, decent for review)
21
+ * - qwen2.5-coder:32b (32B, much stronger for code, needs ~24GB RAM)
22
+ * - deepseek-r1:14b (14B, reasoning-tuned)
23
+ *
24
+ * No auth, no API key, no pricing — local model.
25
+ */
26
+ import OpenAI from "openai";
27
+ import { AdapterError } from "./types.js";
28
+ import { DEFAULT_MODELS } from "./defaults.js";
29
+ const DEFAULT_BASE_URL = "http://localhost:11434/v1";
30
+ const DEFAULT_MODEL = DEFAULT_MODELS.ollama;
31
+ export class OllamaAdapter {
32
+ name;
33
+ provider = "ollama";
34
+ client;
35
+ defaultModel;
36
+ defaultMaxOutputTokens;
37
+ defaultTimeoutMs;
38
+ baseUrl;
39
+ constructor(name = "ollama", options = {}) {
40
+ this.name = name;
41
+ this.defaultModel = options.defaultModel ?? DEFAULT_MODEL;
42
+ // Larger default — local models often run slower than cloud, and
43
+ // shorter responses are rarely the bottleneck.
44
+ this.defaultMaxOutputTokens = options.defaultMaxOutputTokens ?? 8192;
45
+ // Longer default — large local models can take 30-90s on CPU/GPU.
46
+ this.defaultTimeoutMs = options.defaultTimeoutMs ?? 300_000;
47
+ this.baseUrl =
48
+ options.baseUrl ?? process.env["OLLAMA_BASE_URL"] ?? DEFAULT_BASE_URL;
49
+ // OpenAI SDK requires SOMETHING for apiKey even when the server
50
+ // doesn't validate it. "ollama" is the documented sentinel.
51
+ this.client = new OpenAI({
52
+ apiKey: "ollama",
53
+ baseURL: this.baseUrl,
54
+ });
55
+ }
56
+ /** Ollama is "available" if the local daemon responds. */
57
+ async isAvailable() {
58
+ try {
59
+ // Cheap probe — Ollama's /api/tags lists local models. If the
60
+ // daemon isn't running, this throws / times out fast.
61
+ const probeUrl = this.baseUrl.replace(/\/v1\/?$/, "") + "/api/tags";
62
+ const controller = new AbortController();
63
+ const timer = setTimeout(() => controller.abort(), 2000);
64
+ try {
65
+ const res = await fetch(probeUrl, { signal: controller.signal });
66
+ return res.ok;
67
+ }
68
+ finally {
69
+ clearTimeout(timer);
70
+ }
71
+ }
72
+ catch {
73
+ return false;
74
+ }
75
+ }
76
+ async execute(input) {
77
+ const model = input.model ?? this.defaultModel;
78
+ const maxOutputTokens = input.maxOutputTokens ?? this.defaultMaxOutputTokens;
79
+ const timeoutMs = input.timeoutMs ?? this.defaultTimeoutMs;
80
+ const start = Date.now();
81
+ let response;
82
+ try {
83
+ response = await this.client.chat.completions.create({
84
+ model,
85
+ max_tokens: maxOutputTokens,
86
+ messages: [
87
+ { role: "system", content: input.systemPrompt },
88
+ { role: "user", content: input.userMessage },
89
+ ],
90
+ }, { timeout: timeoutMs });
91
+ }
92
+ catch (err) {
93
+ const message = err instanceof Error ? err.message : String(err);
94
+ // Common failure: Ollama daemon isn't running.
95
+ if (message.includes("ECONNREFUSED") || message.includes("fetch failed")) {
96
+ throw new AdapterError(`Ollama daemon unreachable at ${this.baseUrl}. ` +
97
+ "Is Ollama installed and running? Try `ollama serve` or " +
98
+ "open the Ollama app.", this.name, err);
99
+ }
100
+ // Common failure: model not pulled locally.
101
+ if (message.includes("model") && message.includes("not found")) {
102
+ throw new AdapterError(`Ollama model "${model}" not found locally. Pull it first: ` +
103
+ `\`ollama pull ${model}\``, this.name, err);
104
+ }
105
+ throw new AdapterError(`Ollama call failed: ${message}`, this.name, err);
106
+ }
107
+ const choice = response.choices[0];
108
+ if (!choice || !choice.message.content) {
109
+ throw new AdapterError("Ollama returned an empty response.", this.name);
110
+ }
111
+ return {
112
+ content: choice.message.content,
113
+ tokensIn: response.usage?.prompt_tokens ?? 0,
114
+ cachedTokensIn: 0,
115
+ tokensOut: response.usage?.completion_tokens ?? 0,
116
+ // Local models are $0. Always.
117
+ costUsd: 0,
118
+ latencyMs: Date.now() - start,
119
+ modelUsed: response.model ?? model,
120
+ provider: this.provider,
121
+ };
122
+ }
123
+ }
124
+ //# sourceMappingURL=ollama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/adapters/ollama.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAgB,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAe/F,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,YAAY;IAE7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAGxC,IAAI,SAAU,EACd,OAAO,GAAE,oBAAyB;IAUpC,0EAA0E;YAC5D,YAAY;IAapB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CA+E3D"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAgB,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAe/F,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,YAAY;IAE7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAGxC,IAAI,SAAU,EACd,OAAO,GAAE,oBAAyB;IAUpC,0EAA0E;YAC5D,YAAY;IAwBpB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CA+E3D"}
@@ -51,6 +51,14 @@ export class OpenAIAdapter {
51
51
  const result = await resolveApiKey("openai", opts);
52
52
  if (result.source === "missing")
53
53
  return null;
54
+ // v0.12.1 (per Codex): if the keychain entry exists but the OS
55
+ // denied / failed the read, surface that diagnostic — don't
56
+ // construct a client with an undefined key.
57
+ if (result.source === "keychain_error") {
58
+ throw new AdapterError(`Keychain read failed for OpenAI: ${result.keychainError ?? "unknown error"}. ` +
59
+ "Set OPENAI_API_KEY in your environment to override, or fix the " +
60
+ "keychain state.", this.name);
61
+ }
54
62
  this.client = new OpenAI({
55
63
  apiKey: result.key,
56
64
  ...(this.organization ? { organization: this.organization } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAuD,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,oDAAoD;AACpD,MAAM,kBAAkB,GAAsD;IAC5E,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IACtC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC3C,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAC5C,eAAe,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;CAC7C,CAAC;AAEF,4EAA4E;AAC5E,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC;AAe5C,MAAM,OAAO,aAAa;IACf,IAAI,CAAS;IACb,QAAQ,GAAG,QAAQ,CAAC;IAErB,MAAM,GAAkB,IAAI,CAAC;IAC7B,QAAQ,GAAG,KAAK,CAAC;IACR,cAAc,CAAqB;IACnC,YAAY,CAAqB;IACzC,YAAY,CAAS;IACb,sBAAsB,CAAS;IAC/B,gBAAgB,CAAS;IAE1C,YACE,IAAI,GAAG,OAAO,EACd,UAAgC,EAAE;QAElC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,aAAa,CAAC;QAC1D,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,IAAI,IAAI,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC;QAC5D,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;IAED,0EAA0E;IAClE,KAAK,CAAC,YAAY;QACxB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC7C,+DAA+D;QAC/D,4DAA4D;QAC5D,4CAA4C;QAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;YACvC,MAAM,IAAI,YAAY,CACpB,oCAAoC,MAAM,CAAC,aAAa,IAAI,eAAe,IAAI;gBAC7E,iEAAiE;gBACjE,iBAAiB,EACnB,IAAI,CAAC,IAAI,CACV,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,GAAI;YACnB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAmB;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,YAAY,CACpB,yDAAyD;gBACvD,+CAA+C,EACjD,IAAI,CAAC,IAAI,CACV,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QAC/C,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,sBAAsB,CAAC;QAC7E,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAE3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,QAAgD,CAAC;QACrD,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAC7C;gBACE,KAAK;gBACL,UAAU,EAAE,eAAe;gBAC3B,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE;oBAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE;iBAC7C;gBACD,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,aAAa;oBACxC,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;oBAC9C,CAAC,CAAC,EAAE,CAAC;aACR,EACD,EAAE,OAAO,EAAE,SAAS,EAAE,CACvB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,YAAY,CACpB,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACzE,IAAI,CAAC,IAAI,EACT,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,IAAI,YAAY,CACpB,kEAAkE,EAClE,IAAI,CAAC,IAAI,CACV,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QACvC,oEAAoE;QACpE,oEAAoE;QACpE,oDAAoD;QACpD,sEAAsE;QACtE,wBAAwB;QACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAIV,CAAC;QACd,MAAM,QAAQ,GAAG,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,KAAK,EAAE,qBAAqB,EAAE,aAAa,IAAI,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,KAAK,EAAE,iBAAiB,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,wBAAwB,CACtC,KAAK,EACL,QAAQ,GAAG,WAAW,EACtB,WAAW,EACX,SAAS,CACV,CAAC;QAEF,OAAO;YACL,OAAO;YACP,QAAQ;YACR,cAAc,EAAE,WAAW;YAC3B,SAAS;YACT,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;YAC7B,SAAS,EAAE,QAAQ,CAAC,KAAK,IAAI,KAAK;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,SAAS,wBAAwB,CAC/B,KAAa,EACb,aAAqB,EACrB,WAAmB,EACnB,SAAiB;IAEjB,8EAA8E;IAC9E,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACrD,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAClC,CAAC;IACF,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,CAAC;IACnB,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,OAAO,CACL,CAAC,aAAa,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK;QACzC,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,mBAAmB;QAC7D,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CACvC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * OpenRouter adapter (v0.12.0+).
3
+ *
4
+ * OpenRouter is a meta-provider that fronts 100+ models behind a single
5
+ * OpenAI-compatible API. Adding it unlocks DeepSeek, Mistral, Codestral,
6
+ * Llama (hosted), Grok, Qwen, and many others without us shipping one
7
+ * adapter per provider.
8
+ *
9
+ * Reads OPENROUTER_API_KEY from the environment (resolver: explicit →
10
+ * env → keychain → missing).
11
+ *
12
+ * Default model: deepseek/deepseek-chat — cheap, capable, popular OR
13
+ * pick. Users override via the `model` field in their config's agents
14
+ * map, e.g. `model: "anthropic/claude-haiku-4-5"`.
15
+ *
16
+ * Model naming: `<provider>/<model>` as required by OpenRouter
17
+ * (e.g. `deepseek/deepseek-chat`, `meta-llama/llama-3.3-70b-instruct`).
18
+ *
19
+ * Pricing: passed through from OpenRouter's response. Their `usage`
20
+ * object includes a `cost` field (USD) when available; otherwise we
21
+ * estimate from a small pricing table for popular models.
22
+ */
23
+ import { type Adapter, type AdapterInput, type AdapterOutput } from "./types.js";
24
+ export interface OpenRouterAdapterOptions {
25
+ apiKey?: string;
26
+ defaultModel?: string;
27
+ defaultMaxOutputTokens?: number;
28
+ defaultTimeoutMs?: number;
29
+ /** Optional HTTP-Referer for OR's stats / leaderboards. */
30
+ appUrl?: string;
31
+ /** Optional X-Title for OR's stats / leaderboards. */
32
+ appTitle?: string;
33
+ }
34
+ export declare class OpenRouterAdapter implements Adapter {
35
+ readonly name: string;
36
+ readonly provider = "openrouter";
37
+ private client;
38
+ private resolved;
39
+ private readonly explicitApiKey;
40
+ private readonly appUrl;
41
+ private readonly appTitle;
42
+ readonly defaultModel: string;
43
+ private readonly defaultMaxOutputTokens;
44
+ private readonly defaultTimeoutMs;
45
+ constructor(name?: string, options?: OpenRouterAdapterOptions);
46
+ private ensureClient;
47
+ isAvailable(): Promise<boolean>;
48
+ execute(input: AdapterInput): Promise<AdapterOutput>;
49
+ }
50
+ //# sourceMappingURL=openrouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../src/adapters/openrouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAgB,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AA2B/F,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,iBAAkB,YAAW,OAAO;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,gBAAgB;IAEjC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,IAAI,SAAe,EAAE,OAAO,GAAE,wBAA6B;YAUzD,YAAY;IAyBpB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAyE3D"}