@aligndottech/cli 0.48.0 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +6 -5
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +9 -18
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/agents.d.ts.map +1 -1
  6. package/dist/commands/agents.js +3 -1
  7. package/dist/commands/agents.js.map +1 -1
  8. package/dist/commands/ai.d.ts +11 -0
  9. package/dist/commands/ai.d.ts.map +1 -0
  10. package/dist/commands/ai.js +121 -0
  11. package/dist/commands/ai.js.map +1 -0
  12. package/dist/commands/default-action.js +2 -2
  13. package/dist/commands/default-action.js.map +1 -1
  14. package/dist/commands/registry.d.ts.map +1 -1
  15. package/dist/commands/registry.js +4 -0
  16. package/dist/commands/registry.js.map +1 -1
  17. package/dist/commands/setup.d.ts.map +1 -1
  18. package/dist/commands/setup.js +53 -191
  19. package/dist/commands/setup.js.map +1 -1
  20. package/dist/commands/why.d.ts.map +1 -1
  21. package/dist/commands/why.js +21 -0
  22. package/dist/commands/why.js.map +1 -1
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +1 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/lib/ask-key-offer.d.ts +38 -0
  28. package/dist/lib/ask-key-offer.d.ts.map +1 -0
  29. package/dist/lib/ask-key-offer.js +130 -0
  30. package/dist/lib/ask-key-offer.js.map +1 -0
  31. package/dist/lib/config.d.ts +25 -24
  32. package/dist/lib/config.d.ts.map +1 -1
  33. package/dist/lib/config.js +37 -45
  34. package/dist/lib/config.js.map +1 -1
  35. package/dist/lib/launch/adapters/amp.d.ts +18 -0
  36. package/dist/lib/launch/adapters/amp.d.ts.map +1 -0
  37. package/dist/lib/launch/adapters/amp.js +29 -0
  38. package/dist/lib/launch/adapters/amp.js.map +1 -0
  39. package/dist/lib/launch/adapters/droid.d.ts +19 -0
  40. package/dist/lib/launch/adapters/droid.d.ts.map +1 -0
  41. package/dist/lib/launch/adapters/droid.js +38 -0
  42. package/dist/lib/launch/adapters/droid.js.map +1 -0
  43. package/dist/lib/launch/adapters/grok-build.d.ts +16 -0
  44. package/dist/lib/launch/adapters/grok-build.d.ts.map +1 -0
  45. package/dist/lib/launch/adapters/grok-build.js +25 -0
  46. package/dist/lib/launch/adapters/grok-build.js.map +1 -0
  47. package/dist/lib/launch/adapters/kiro.d.ts +17 -0
  48. package/dist/lib/launch/adapters/kiro.d.ts.map +1 -0
  49. package/dist/lib/launch/adapters/kiro.js +25 -0
  50. package/dist/lib/launch/adapters/kiro.js.map +1 -0
  51. package/dist/lib/launch/adapters/qwen.d.ts +25 -0
  52. package/dist/lib/launch/adapters/qwen.d.ts.map +1 -0
  53. package/dist/lib/launch/adapters/qwen.js +67 -0
  54. package/dist/lib/launch/adapters/qwen.js.map +1 -0
  55. package/dist/lib/launch/agents.d.ts +4 -1
  56. package/dist/lib/launch/agents.d.ts.map +1 -1
  57. package/dist/lib/launch/agents.js +10 -4
  58. package/dist/lib/launch/agents.js.map +1 -1
  59. package/dist/lib/launch/amp-state.d.ts +21 -0
  60. package/dist/lib/launch/amp-state.d.ts.map +1 -0
  61. package/dist/lib/launch/amp-state.js +61 -0
  62. package/dist/lib/launch/amp-state.js.map +1 -0
  63. package/dist/lib/launch/config-writes.d.ts +7 -1
  64. package/dist/lib/launch/config-writes.d.ts.map +1 -1
  65. package/dist/lib/launch/config-writes.js +60 -7
  66. package/dist/lib/launch/config-writes.js.map +1 -1
  67. package/dist/lib/launch/detect.d.ts.map +1 -1
  68. package/dist/lib/launch/detect.js +2 -1
  69. package/dist/lib/launch/detect.js.map +1 -1
  70. package/dist/lib/launch/droid-state.d.ts +24 -0
  71. package/dist/lib/launch/droid-state.d.ts.map +1 -0
  72. package/dist/lib/launch/droid-state.js +74 -0
  73. package/dist/lib/launch/droid-state.js.map +1 -0
  74. package/dist/lib/launch/grok-state.d.ts +42 -0
  75. package/dist/lib/launch/grok-state.d.ts.map +1 -0
  76. package/dist/lib/launch/grok-state.js +128 -0
  77. package/dist/lib/launch/grok-state.js.map +1 -0
  78. package/dist/lib/launch/kiro-state.d.ts +22 -0
  79. package/dist/lib/launch/kiro-state.d.ts.map +1 -0
  80. package/dist/lib/launch/kiro-state.js +59 -0
  81. package/dist/lib/launch/kiro-state.js.map +1 -0
  82. package/dist/lib/launch/launch.d.ts +34 -0
  83. package/dist/lib/launch/launch.d.ts.map +1 -1
  84. package/dist/lib/launch/launch.js +34 -3
  85. package/dist/lib/launch/launch.js.map +1 -1
  86. package/dist/lib/launch/layer-files.d.ts +12 -0
  87. package/dist/lib/launch/layer-files.d.ts.map +1 -0
  88. package/dist/lib/launch/layer-files.js +43 -0
  89. package/dist/lib/launch/layer-files.js.map +1 -0
  90. package/dist/lib/launch/pick-agent.d.ts.map +1 -1
  91. package/dist/lib/launch/pick-agent.js +7 -6
  92. package/dist/lib/launch/pick-agent.js.map +1 -1
  93. package/dist/lib/launch/qwen-state.d.ts +30 -0
  94. package/dist/lib/launch/qwen-state.d.ts.map +1 -0
  95. package/dist/lib/launch/qwen-state.js +57 -0
  96. package/dist/lib/launch/qwen-state.js.map +1 -0
  97. package/dist/lib/launch/qwen-trust.d.ts +24 -0
  98. package/dist/lib/launch/qwen-trust.d.ts.map +1 -0
  99. package/dist/lib/launch/qwen-trust.js +100 -0
  100. package/dist/lib/launch/qwen-trust.js.map +1 -0
  101. package/dist/lib/launch/registry/agents/amp.d.ts +3 -0
  102. package/dist/lib/launch/registry/agents/amp.d.ts.map +1 -0
  103. package/dist/lib/launch/registry/agents/amp.js +14 -0
  104. package/dist/lib/launch/registry/agents/amp.js.map +1 -0
  105. package/dist/lib/launch/registry/agents/droid.d.ts +3 -0
  106. package/dist/lib/launch/registry/agents/droid.d.ts.map +1 -0
  107. package/dist/lib/launch/registry/agents/droid.js +13 -0
  108. package/dist/lib/launch/registry/agents/droid.js.map +1 -0
  109. package/dist/lib/launch/registry/agents/grok-build.d.ts +3 -0
  110. package/dist/lib/launch/registry/agents/grok-build.d.ts.map +1 -0
  111. package/dist/lib/launch/registry/agents/grok-build.js +14 -0
  112. package/dist/lib/launch/registry/agents/grok-build.js.map +1 -0
  113. package/dist/lib/launch/registry/agents/kiro.d.ts +3 -0
  114. package/dist/lib/launch/registry/agents/kiro.d.ts.map +1 -0
  115. package/dist/lib/launch/registry/agents/kiro.js +11 -0
  116. package/dist/lib/launch/registry/agents/kiro.js.map +1 -0
  117. package/dist/lib/launch/registry/agents/qwen.d.ts +3 -0
  118. package/dist/lib/launch/registry/agents/qwen.d.ts.map +1 -0
  119. package/dist/lib/launch/registry/agents/qwen.js +11 -0
  120. package/dist/lib/launch/registry/agents/qwen.js.map +1 -0
  121. package/dist/lib/launch/registry/index.d.ts +4 -1
  122. package/dist/lib/launch/registry/index.d.ts.map +1 -1
  123. package/dist/lib/launch/registry/index.js +10 -2
  124. package/dist/lib/launch/registry/index.js.map +1 -1
  125. package/dist/lib/launch/registry/types.d.ts +6 -1
  126. package/dist/lib/launch/registry/types.d.ts.map +1 -1
  127. package/dist/lib/launch/run-agent.d.ts +11 -0
  128. package/dist/lib/launch/run-agent.d.ts.map +1 -1
  129. package/dist/lib/launch/run-agent.js +22 -1
  130. package/dist/lib/launch/run-agent.js.map +1 -1
  131. package/dist/lib/launch/strict-entry.d.ts +1 -1
  132. package/dist/lib/launch/strict-entry.d.ts.map +1 -1
  133. package/dist/lib/launch/strict-entry.js +3 -1
  134. package/dist/lib/launch/strict-entry.js.map +1 -1
  135. package/dist/lib/llm-providers.d.ts +66 -0
  136. package/dist/lib/llm-providers.d.ts.map +1 -0
  137. package/dist/lib/llm-providers.js +150 -0
  138. package/dist/lib/llm-providers.js.map +1 -0
  139. package/dist/lib/local-llm.d.ts +63 -12
  140. package/dist/lib/local-llm.d.ts.map +1 -1
  141. package/dist/lib/local-llm.js +229 -104
  142. package/dist/lib/local-llm.js.map +1 -1
  143. package/dist/lib/safe-config-write.d.ts +12 -1
  144. package/dist/lib/safe-config-write.d.ts.map +1 -1
  145. package/dist/lib/safe-config-write.js +123 -7
  146. package/dist/lib/safe-config-write.js.map +1 -1
  147. package/dist/lib/startup-env.d.ts +8 -0
  148. package/dist/lib/startup-env.d.ts.map +1 -0
  149. package/dist/lib/startup-env.js +8 -0
  150. package/dist/lib/startup-env.js.map +1 -0
  151. package/package.json +1 -1
@@ -1,6 +1,26 @@
1
1
  import { spawn as nodeSpawn } from 'node:child_process';
2
2
  import os from 'node:os';
3
3
  import path from 'node:path';
4
+ import { PROVIDER_ENV_VARS } from '../llm-providers.js';
5
+ import { STARTUP_ENV } from '../startup-env.js';
6
+ /**
7
+ * The child's environment: align's own, with every LLM provider variable reset to what the
8
+ * user's shell had at startup, then the spec's env on top. Defence in depth for H1 - align
9
+ * keeps saved keys out of process.env by design (local-llm reads them as data), and this
10
+ * guarantees that even a future regression writing one cannot hand a saved ANTHROPIC_API_KEY
11
+ * to Claude Code (API billing over a Max subscription), OPENAI_API_KEY to Codex or
12
+ * GEMINI_API_KEY to Gemini CLI. A variable the user exported is restored, never stripped.
13
+ */
14
+ export function childEnv(parent, startup, specEnv) {
15
+ const env = { ...parent };
16
+ for (const name of PROVIDER_ENV_VARS) {
17
+ if (startup[name] === undefined)
18
+ delete env[name];
19
+ else
20
+ env[name] = startup[name];
21
+ }
22
+ return { ...env, ...specEnv };
23
+ }
4
24
  // cmd.exe re-parses the whole line, so these would run a second command or expand a variable.
5
25
  const WIN_SHELL_CHARS = /[&|<>^%"]/;
6
26
  /** One CRT-quoted argument: trailing backslashes are doubled so they cannot escape the closing quote. */
@@ -35,7 +55,8 @@ export async function runAgent(spec, deps = {}) {
35
55
  const proc = deps.proc ?? process;
36
56
  const isShim = platform === 'win32' && /\.(cmd|bat)$/i.test(spec.bin);
37
57
  const { command, args } = isShim ? winShimCommand(spec) : { command: spec.bin, args: spec.args };
38
- const options = { stdio: 'inherit', env: { ...process.env, ...spec.env } };
58
+ const startupEnv = deps.startupEnv ?? STARTUP_ENV;
59
+ const options = { stdio: 'inherit', env: childEnv(process.env, startupEnv, spec.env) };
39
60
  if (isShim)
40
61
  options.windowsVerbatimArguments = true;
41
62
  const child = spawn(command, args, options);
@@ -1 +1 @@
1
- {"version":3,"file":"run-agent.js","sourceRoot":"","sources":["../../../src/lib/launch/run-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-agent.js","sourceRoot":"","sources":["../../../src/lib/launch/run-agent.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * Deliberately separate from project-state.ts's isLocalAlignServer (Claude Code, pi, Cursor),
8
8
  * which matches any command line that mentions align and mcp.
9
9
  */
10
- export type StrictHost = 'mcpServers' | 'codex' | 'copilot';
10
+ export type StrictHost = 'mcpServers' | 'codex' | 'copilot' | 'droid';
11
11
  export interface CanonicalOptions {
12
12
  /** Whether a bare `align mcp` reads the local graph on this machine. */
13
13
  localIsDefault: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"strict-entry.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/strict-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAepC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAelF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0BtD;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAQ3D;AAED,sGAAsG;AACtG,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gGAAgG;AAChG,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GAAG,eAAe,CAY1H"}
1
+ {"version":3,"file":"strict-entry.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/strict-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAiBpC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAelF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0BtD;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAQ3D;AAED,sGAAsG;AACtG,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gGAAgG;AAChG,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GAAG,eAAe,CAY1H"}
@@ -7,8 +7,10 @@ const EXTRA = {
7
7
  codex: { enabled: (v) => v === true },
8
8
  // Copilot needs `type`, and a `tools` allowlist: without '*' the tools are not callable.
9
9
  copilot: { type: (v) => v === 'local' || v === 'stdio', tools: (v) => sameArgs(v, ['*']) },
10
+ // Factory Droid: `type` is optional and stdio by default; `disabled: true` is configured-but-off.
11
+ droid: { type: (v) => v === 'stdio', disabled: (v) => v === false },
10
12
  };
11
- const REQUIRED = { mcpServers: [], codex: [], copilot: ['type', 'tools'] };
13
+ const REQUIRED = { mcpServers: [], codex: [], copilot: ['type', 'tools'], droid: [] };
12
14
  export function isCanonicalLocalEntry(entry, o) {
13
15
  if (!isObject(entry))
14
16
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"strict-entry.js","sourceRoot":"","sources":["../../../src/lib/launch/strict-entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strict-entry.js","sourceRoot":"","sources":["../../../src/lib/launch/strict-entry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * The providers `align ask` can write answers with, as data: their ids, labels, the env vars
3
+ * that carry their keys and models, endpoints and default models, and which ones a user can
4
+ * save a key for. Shared by local-llm.ts (resolution and preference), the config store, the
5
+ * launcher (which must not leak these variables to an agent) and the `align ai` / first-ask
6
+ * prompts, so there is one list rather than several that drift. Dependency-free on purpose.
7
+ */
8
+ /** A provider reached with its own key from an env variable or a saved key. */
9
+ export interface NamedProvider {
10
+ id: NamedProviderId;
11
+ label: string;
12
+ /** Every env var holding a key, read in order; a real value under ANY of them beats a saved key. */
13
+ keyEnv: readonly string[];
14
+ /** The env var that overrides the model. */
15
+ modelEnv: string;
16
+ defaultModel: string;
17
+ /** Which request shape. 'openai' posts Chat Completions to `endpoint`; 'anthropic' posts
18
+ * Messages to `endpoint` (default Anthropic's own). */
19
+ api: 'anthropic' | 'gemini' | 'openai';
20
+ /** The full request URL. Required for 'openai'. */
21
+ endpoint?: string;
22
+ /**
23
+ * Use a key exported under keyEnv with no further say-so. True for the original six only.
24
+ * Every later provider's variables are commonly exported for OTHER tools (HF_TOKEN for model
25
+ * downloads, NVIDIA_API_KEY for NGC), so an exported key alone only makes the provider
26
+ * AVAILABLE: align uses it once the user saves a key for it or chooses it (`align ai`,
27
+ * ALIGN_LLM_PROVIDER). Otherwise their decision text would go to a provider they never picked.
28
+ */
29
+ autoFromEnv?: true;
30
+ /** Where to get a key, shown beside the paste prompt. */
31
+ keyUrl: string;
32
+ }
33
+ export type NamedProviderId = 'anthropic' | 'openai' | 'groq' | 'gemini' | 'mistral' | 'grok' | 'deepseek' | 'zai' | 'moonshotai' | 'cerebras' | 'fireworks' | 'together' | 'nvidia' | 'huggingface' | 'baseten' | 'xiaomi' | 'qwen' | 'qwen-token-plan' | 'minimax' | 'kimi-coding' | 'vercel-ai-gateway';
34
+ /**
35
+ * In the fixed fallback order (ALI-1284: Groq ahead of Gemini, so the free pairing has a real
36
+ * primary). A provider is only ever tried when the user has a key for it.
37
+ */
38
+ export declare const NAMED_PROVIDERS: readonly NamedProvider[];
39
+ export declare const OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
40
+ export declare const OPENROUTER_DEFAULT_MODEL = "openai/gpt-4o-mini";
41
+ /** OpenRouter's own key variable (pi-ai's name) and align's model override for it. */
42
+ export declare const OPENROUTER_KEY_ENV = "OPENROUTER_API_KEY";
43
+ export declare const OPENROUTER_MODEL_ENV = "ALIGN_OPENROUTER_MODEL";
44
+ /** Every id `ALIGN_LLM_PROVIDER` / `align ai --provider` accepts. */
45
+ export declare const LLM_PROVIDER_IDS: readonly LlmProviderId[];
46
+ export type LlmProviderId = NamedProviderId | 'openrouter' | 'custom' | 'ollama';
47
+ /**
48
+ * The providers a key can be saved for, in the order the key prompt lists them: the original
49
+ * seven first (OpenRouter third, as it always was), then the rest in table order.
50
+ */
51
+ export declare const STORABLE_PROVIDERS: readonly StoredProviderId[];
52
+ export type StoredProviderId = NamedProviderId | 'openrouter';
53
+ export declare function namedProvider(id: string): NamedProvider | undefined;
54
+ export declare const PROVIDER_LABEL: Record<LlmProviderId, string>;
55
+ /** Where to get a key, shown beside the paste prompt. */
56
+ export declare const PROVIDER_KEY_URL: Record<StoredProviderId, string>;
57
+ /**
58
+ * Every env variable that carries an align LLM credential, endpoint, model or preference. The
59
+ * launcher resets each one to the value the user's shell had when align started, so nothing
60
+ * align put into its own environment reaches a coding agent (a saved ANTHROPIC_API_KEY would
61
+ * switch Claude Code from a Max subscription to API billing).
62
+ */
63
+ export declare const PROVIDER_ENV_VARS: readonly string[];
64
+ /** A user-typed provider id, normalised, or null when it names nothing we support. */
65
+ export declare function parseProviderId(raw: string): LlmProviderId | null;
66
+ //# sourceMappingURL=llm-providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-providers.d.ts","sourceRoot":"","sources":["../../src/lib/llm-providers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,eAAe,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,oGAAoG;IACpG,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB;4DACwD;IACxD,GAAG,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GACvB,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAC/D,UAAU,GAAG,KAAK,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GACpF,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,iBAAiB,GAAG,SAAS,GAAG,aAAa,GAAG,mBAAmB,CAAC;AAExH;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EA8FnD,CAAC;AAcF,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAClE,eAAO,MAAM,wBAAwB,uBAAuB,CAAC;AAC7D,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAE7D,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,EAExB,SAAS,aAAa,EAAE,CAAC;AAC9B,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAGzD,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,YAAY,CAAC;AAE9D,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEnE;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAKxD,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAG7D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAI9C,CAAC;AAIF,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAIjE"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * The providers `align ask` can write answers with, as data: their ids, labels, the env vars
3
+ * that carry their keys and models, endpoints and default models, and which ones a user can
4
+ * save a key for. Shared by local-llm.ts (resolution and preference), the config store, the
5
+ * launcher (which must not leak these variables to an agent) and the `align ai` / first-ask
6
+ * prompts, so there is one list rather than several that drift. Dependency-free on purpose.
7
+ */
8
+ /**
9
+ * In the fixed fallback order (ALI-1284: Groq ahead of Gemini, so the free pairing has a real
10
+ * primary). A provider is only ever tried when the user has a key for it.
11
+ */
12
+ export const NAMED_PROVIDERS = [
13
+ {
14
+ autoFromEnv: true,
15
+ id: 'anthropic', label: 'Anthropic', keyEnv: ['ANTHROPIC_API_KEY'], modelEnv: 'ALIGN_ANTHROPIC_MODEL',
16
+ defaultModel: 'claude-haiku-4-5-20251001', api: 'anthropic', keyUrl: 'https://console.anthropic.com/settings/keys',
17
+ },
18
+ {
19
+ autoFromEnv: true,
20
+ id: 'openai', label: 'OpenAI', keyEnv: ['OPENAI_API_KEY'], modelEnv: 'ALIGN_OPENAI_MODEL',
21
+ defaultModel: 'gpt-4o-mini', api: 'openai', endpoint: 'https://api.openai.com/v1/chat/completions',
22
+ keyUrl: 'https://platform.openai.com/api-keys',
23
+ },
24
+ {
25
+ autoFromEnv: true,
26
+ id: 'groq', label: 'Groq', keyEnv: ['GROQ_API_KEY'], modelEnv: 'ALIGN_GROQ_MODEL',
27
+ defaultModel: 'llama-3.1-8b-instant', api: 'openai', endpoint: 'https://api.groq.com/openai/v1/chat/completions',
28
+ keyUrl: 'https://console.groq.com/keys',
29
+ },
30
+ {
31
+ // ALI-1284: a Flash-Lite model, which is what the free pairing is sold as. Override with
32
+ // ALIGN_GEMINI_MODEL if Google retires it.
33
+ autoFromEnv: true,
34
+ id: 'gemini', label: 'Gemini', keyEnv: ['GEMINI_API_KEY', 'GOOGLE_API_KEY'], modelEnv: 'ALIGN_GEMINI_MODEL',
35
+ defaultModel: 'gemini-2.5-flash-lite', api: 'gemini', keyUrl: 'https://aistudio.google.com/apikey',
36
+ },
37
+ {
38
+ autoFromEnv: true,
39
+ id: 'mistral', label: 'Mistral', keyEnv: ['MISTRAL_API_KEY'], modelEnv: 'ALIGN_MISTRAL_MODEL',
40
+ defaultModel: 'mistral-small-latest', api: 'openai', endpoint: 'https://api.mistral.ai/v1/chat/completions',
41
+ keyUrl: 'https://console.mistral.ai/api-keys',
42
+ },
43
+ {
44
+ autoFromEnv: true,
45
+ id: 'grok', label: 'xAI', keyEnv: ['GROK_API_KEY', 'XAI_API_KEY'], modelEnv: 'ALIGN_GROK_MODEL',
46
+ defaultModel: 'grok-2-latest', api: 'openai', endpoint: 'https://api.x.ai/v1/chat/completions',
47
+ keyUrl: 'https://console.x.ai',
48
+ },
49
+ // ---- Appended after the original six, so they only run when the user has their key. ----
50
+ // Source for every env var name, base URL, API shape and model id below, unless a comment
51
+ // says otherwise: @earendil-works/pi-ai 0.87.1 (MIT), dist/env-api-keys.js and
52
+ // dist/providers/data/<id>.json. Default models are the cheapest current id that table lists
53
+ // for the provider, preferring a non-reasoning model where one is cheap (a reasoning model
54
+ // spends align's 1,024-token answer budget thinking).
55
+ openAi('deepseek', 'DeepSeek', ['DEEPSEEK_API_KEY'], 'https://api.deepseek.com/chat/completions', 'deepseek-flash', 'https://platform.deepseek.com/api_keys'),
56
+ // pi-ai lists the GLM Coding Plan endpoint (/api/coding/paas/v4). This is Z.ai's GENERAL
57
+ // endpoint, for an ordinary pay-as-you-go key - https://docs.z.ai/api-reference/introduction
58
+ // says the coding endpoint is only for Coding Plan subscribers.
59
+ openAi('zai', 'Z.ai (GLM)', ['ZAI_API_KEY'], 'https://api.z.ai/api/paas/v4/chat/completions', 'glm-5.3-flash', 'https://z.ai/manage-apikey/apikey-list'),
60
+ openAi('moonshotai', 'Moonshot (Kimi)', ['MOONSHOT_API_KEY'], 'https://api.moonshot.ai/v1/chat/completions', 'kimi-k2.6', 'https://platform.moonshot.ai/console/api-keys'),
61
+ openAi('cerebras', 'Cerebras', ['CEREBRAS_API_KEY'], 'https://api.cerebras.ai/v1/chat/completions', 'gpt-oss-120b', 'https://cloud.cerebras.ai'),
62
+ openAi('fireworks', 'Fireworks AI', ['FIREWORKS_API_KEY'], 'https://api.fireworks.ai/inference/v1/chat/completions', 'accounts/fireworks/models/glm-5p3-flash', 'https://app.fireworks.ai/settings/users/api-keys'),
63
+ openAi('together', 'Together AI', ['TOGETHER_API_KEY'], 'https://api.together.ai/v1/chat/completions', 'Qwen/Qwen2.5-7B-Instruct-Turbo', 'https://api.together.ai/settings/api-keys'),
64
+ openAi('nvidia', 'NVIDIA', ['NVIDIA_API_KEY'], 'https://integrate.api.nvidia.com/v1/chat/completions', 'google/gemma-3-12b-it', 'https://build.nvidia.com'),
65
+ openAi('huggingface', 'Hugging Face', ['HF_TOKEN'], 'https://router.huggingface.co/v1/chat/completions', 'meta-llama/Llama-3.1-8B-Instruct', 'https://huggingface.co/settings/tokens'),
66
+ openAi('baseten', 'Baseten', ['BASETEN_API_KEY'], 'https://inference.baseten.co/v1/chat/completions', 'deepseek-ai/DeepSeek-V4-Flash-0731', 'https://app.baseten.co/settings/api_keys'),
67
+ openAi('xiaomi', 'Xiaomi MiMo', ['XIAOMI_API_KEY'], 'https://api.xiaomimimo.com/v1/chat/completions', 'mimo-v2.5', 'https://platform.xiaomimimo.com'),
68
+ {
69
+ // Alibaba Model Studio: an ordinary Model Studio key (what the paste prompt's console link
70
+ // issues), at the international DashScope compatible-mode domain Alibaba documents as
71
+ // still valid - https://www.alibabacloud.com/help/en/model-studio/base-url - with
72
+ // qwen3.5-flash from https://www.alibabacloud.com/help/en/model-studio/qwen-api-via-openai-chat-completions.
73
+ id: 'qwen', label: 'Qwen (Alibaba Model Studio)', keyEnv: ['DASHSCOPE_API_KEY'], modelEnv: 'ALIGN_QWEN_MODEL',
74
+ defaultModel: 'qwen3.5-flash', api: 'openai',
75
+ endpoint: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions',
76
+ keyUrl: 'https://modelstudio.console.alibabacloud.com',
77
+ },
78
+ // The Alibaba Token Plan: a different product on a different host; a key for one is
79
+ // rejected by the other. Env name, endpoint and model from pi-ai.
80
+ openAi('qwen-token-plan', 'Qwen Token Plan', ['QWEN_TOKEN_PLAN_API_KEY'], 'https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions', 'qwen3.6-flash', 'https://modelstudio.console.alibabacloud.com'),
81
+ // These three speak Anthropic Messages in pi-ai's table, so they reuse align's Anthropic
82
+ // adapter at their own base URL (POST <base>/v1/messages). UNVERIFIED: that each accepts the
83
+ // Anthropic-style `x-api-key` header rather than only a Bearer token - no live call was made.
84
+ anthropicAt('minimax', 'MiniMax', ['MINIMAX_API_KEY'], 'https://api.minimax.io/anthropic/v1/messages', 'MiniMax-M2.7', 'https://platform.minimax.io'),
85
+ anthropicAt('kimi-coding', 'Kimi Coding Plan', ['KIMI_API_KEY'], 'https://api.kimi.com/coding/v1/messages', 'kimi-for-coding', 'https://www.kimi.com/code'),
86
+ anthropicAt('vercel-ai-gateway', 'Vercel AI Gateway', ['AI_GATEWAY_API_KEY'], 'https://ai-gateway.vercel.sh/v1/messages', 'openai/gpt-4o-mini', 'https://vercel.com/dashboard/ai-gateway'),
87
+ // Not included: cloudflare-workers-ai (needs CLOUDFLARE_ACCOUNT_ID in the URL) and Azure
88
+ // OpenAI (a per-resource endpoint, deployment name and api-version) - neither fits a fixed
89
+ // endpoint. Both work today through ALIGN_LLM_BASE_URL.
90
+ ];
91
+ function modelEnvFor(id) {
92
+ return `ALIGN_${id.toUpperCase().replace(/[^A-Z0-9]+/g, '_')}_MODEL`;
93
+ }
94
+ function openAi(id, label, keyEnv, endpoint, defaultModel, keyUrl) {
95
+ return { id, label, keyEnv, modelEnv: modelEnvFor(id), defaultModel, api: 'openai', endpoint, keyUrl };
96
+ }
97
+ function anthropicAt(id, label, keyEnv, endpoint, defaultModel, keyUrl) {
98
+ return { id, label, keyEnv, modelEnv: modelEnvFor(id), defaultModel, api: 'anthropic', endpoint, keyUrl };
99
+ }
100
+ export const OPENROUTER_BASE_URL = 'https://openrouter.ai/api/v1';
101
+ export const OPENROUTER_DEFAULT_MODEL = 'openai/gpt-4o-mini';
102
+ /** OpenRouter's own key variable (pi-ai's name) and align's model override for it. */
103
+ export const OPENROUTER_KEY_ENV = 'OPENROUTER_API_KEY';
104
+ export const OPENROUTER_MODEL_ENV = 'ALIGN_OPENROUTER_MODEL';
105
+ /** Every id `ALIGN_LLM_PROVIDER` / `align ai --provider` accepts. */
106
+ export const LLM_PROVIDER_IDS = [
107
+ ...NAMED_PROVIDERS.map((p) => p.id), 'openrouter', 'custom', 'ollama',
108
+ ];
109
+ /**
110
+ * The providers a key can be saved for, in the order the key prompt lists them: the original
111
+ * seven first (OpenRouter third, as it always was), then the rest in table order.
112
+ */
113
+ export const STORABLE_PROVIDERS = [
114
+ 'anthropic', 'openai', 'openrouter', 'gemini', 'groq', 'mistral', 'grok',
115
+ ...NAMED_PROVIDERS.map((p) => p.id).filter((id) => !['anthropic', 'openai', 'gemini', 'groq', 'mistral', 'grok'].includes(id)),
116
+ ];
117
+ export function namedProvider(id) {
118
+ return NAMED_PROVIDERS.find((p) => p.id === id);
119
+ }
120
+ export const PROVIDER_LABEL = {
121
+ ...Object.fromEntries(NAMED_PROVIDERS.map((p) => [p.id, p.label])),
122
+ openrouter: 'OpenRouter',
123
+ custom: 'Custom endpoint',
124
+ ollama: 'Ollama',
125
+ };
126
+ /** Where to get a key, shown beside the paste prompt. */
127
+ export const PROVIDER_KEY_URL = {
128
+ ...Object.fromEntries(NAMED_PROVIDERS.map((p) => [p.id, p.keyUrl])),
129
+ openrouter: 'https://openrouter.ai/keys',
130
+ };
131
+ /**
132
+ * Every env variable that carries an align LLM credential, endpoint, model or preference. The
133
+ * launcher resets each one to the value the user's shell had when align started, so nothing
134
+ * align put into its own environment reaches a coding agent (a saved ANTHROPIC_API_KEY would
135
+ * switch Claude Code from a Max subscription to API billing).
136
+ */
137
+ export const PROVIDER_ENV_VARS = [
138
+ ...NAMED_PROVIDERS.flatMap((p) => [...p.keyEnv, p.modelEnv]),
139
+ 'ALIGN_LLM_BASE_URL', 'ALIGN_LLM_API_KEY', 'ALIGN_LLM_MODEL', 'ALIGN_LLM_PROVIDER', 'ALIGN_OLLAMA_MODEL',
140
+ OPENROUTER_KEY_ENV, OPENROUTER_MODEL_ENV,
141
+ ];
142
+ const ALIASES = { xai: 'grok' };
143
+ /** A user-typed provider id, normalised, or null when it names nothing we support. */
144
+ export function parseProviderId(raw) {
145
+ const id = raw.trim().toLowerCase();
146
+ if (ALIASES[id])
147
+ return ALIASES[id];
148
+ return LLM_PROVIDER_IDS.includes(id) ? id : null;
149
+ }
150
+ //# sourceMappingURL=llm-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-providers.js","sourceRoot":"","sources":["../../src/lib/llm-providers.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type LlmProviderId, type StoredProviderId } from './llm-providers.js';
1
2
  export type AiProvider = 'anthropic' | 'openai' | 'gemini' | 'groq' | 'mistral' | 'grok';
2
3
  export interface CallChatOptions {
3
4
  maxTokens?: number;
@@ -262,24 +263,74 @@ export declare const OLLAMA_CONTEXT_FLOOR = 4096;
262
263
  */
263
264
  export declare function resolveOllamaWindow(host: string, model: string): Promise<ResolvedWindow>;
264
265
  /**
265
- * Is any LLM provider configured by environment? (ALI-414)
266
+ * The model a running local Ollama would answer with, or null. The same 2s /api/tags probe
267
+ * `align ask` already runs on its way down the chain - `align ai` uses it to list Ollama
268
+ * beside the keys, and adds no slower check.
269
+ */
270
+ export declare function probeOllama(): Promise<string | null>;
271
+ /**
272
+ * Saved keys and the saved provider preference, read through a source cli.ts installs.
273
+ *
274
+ * NEVER through process.env (H1): a value in process.env is inherited by every child, including
275
+ * the coding agent bare `align` opens - where a saved ANTHROPIC_API_KEY switches Claude Code from
276
+ * a Max subscription to API billing. So saved credentials stay data, used only by align's own
277
+ * calls here. The source is read once per call, so a key saved mid-run is live on the next.
278
+ */
279
+ export interface SavedLlmConfig {
280
+ keys: Partial<Record<StoredProviderId, string>>;
281
+ provider?: string;
282
+ model?: string;
283
+ }
284
+ export declare function setSavedLlmSource(source: () => SavedLlmConfig): void;
285
+ /**
286
+ * Every configured credential and where it came from (env or saved) - Ollama not included.
287
+ * Includes exported keys align will not use until chosen: this is what is AVAILABLE.
288
+ */
289
+ export declare function listConfiguredCredentials(): Array<{
290
+ id: LlmProviderId;
291
+ source: 'env' | 'saved';
292
+ }>;
293
+ /**
294
+ * Exported keys align found but will not use until the user picks them (Credential.usable),
295
+ * with the variable each came from - what the key menu offers as "found X in your shell".
296
+ */
297
+ export declare function unusedExportedKeys(): Array<{
298
+ id: LlmProviderId;
299
+ envVar: string;
300
+ }>;
301
+ /**
302
+ * The provider `align ask` tries FIRST, or undefined for the default order. Precedence, in one
303
+ * place:
304
+ *
305
+ * 1. ALIGN_LLM_PROVIDER exported in the shell
306
+ * 2. the saved preference (`align ai`)
307
+ * 3. nothing: the default order (exported credentials, then saved ones, then Ollama - see
308
+ * credentials())
309
+ *
310
+ * The model follows the same rule: a provider's own model variable (ALIGN_OPENAI_MODEL,
311
+ * ALIGN_LLM_MODEL for the custom endpoint, ...) beats the saved model, and the saved model
312
+ * applies only while the saved preference is the one in force.
313
+ *
314
+ * A preferred provider that is not available (no key, Ollama not running) is skipped and the
315
+ * default order runs as if there were no preference. An unknown value warns (once per process
316
+ * per value) and is ignored: a typo must not stop `align ask` answering.
317
+ */
318
+ export declare function preferredProvider(saved?: SavedLlmConfig): LlmProviderId | undefined;
319
+ /**
320
+ * Is any LLM provider configured - exported or saved? (ALI-414)
266
321
  *
267
322
  * `callChat` returns null for a missing key and for a provider that answered unusably
268
323
  * alike, so a caller that needs to tell "never configured" from "configured but
269
324
  * failed" has to ask - this, then the failure `callChatDetailed` returned for the
270
- * second case, which is the one this function cannot see. Deliberately synchronous and
271
- * env-only: it does NOT probe Ollama, so a
272
- * machine whose only provider is a broken local Ollama reads as unconfigured. The
273
- * remedy that points at - configure a provider - is still the right one.
325
+ * second case, which is the one this function cannot see. Deliberately synchronous:
326
+ * it does NOT probe Ollama, so a machine whose only provider is a broken local Ollama
327
+ * reads as unconfigured. The remedy that points at - configure a provider - is still
328
+ * the right one.
274
329
  *
275
- * `excluding` (ALI-1284, Copilot review PR #322): lets a caller ask "is anything ELSE
276
- * configured" - `align setup --reset` re-offers a stored Groq/Gemini key, and needs to
277
- * know whether some OTHER provider is genuinely configured (which should still block the
278
- * offer) without the Groq/Gemini pair itself, which --reset exists to let the user redo,
279
- * counting against it. `ALIGN_LLM_BASE_URL` is never excludable: it is not one of the
280
- * named providers this list manages, so it always means "configured" regardless.
330
+ * `excluding` lets a caller ask "is anything ELSE configured". The custom endpoint is never
331
+ * excludable: it is not one of the named providers.
281
332
  */
282
- export declare function hasConfiguredProvider(excluding?: readonly AiProvider[]): boolean;
333
+ export declare function hasConfiguredProvider(excluding?: readonly LlmProviderId[]): boolean;
283
334
  /**
284
335
  * Provider-agnostic chat call. Resolution order:
285
336
  * 1. ALIGN_LLM_BASE_URL - any OpenAI-compatible endpoint (Grok, OpenRouter,
@@ -1 +1 @@
1
- {"version":3,"file":"local-llm.d.ts","sourceRoot":"","sources":["../../src/lib/local-llm.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzF,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAcnD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGlD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,eAAO,MAAM,uBAAuB,QAYiH,CAAC;AAEtJ;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAIrE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAChE,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAsBR;AA8BD;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,SAAU,CAAC;AAEpD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAwBpD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAa5D;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,oBAAoB,OAAQ,CAAC;AAE1C,6GAA6G;AAC7G,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYzE;AAoMD;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAOlD,CAAC;AAyBF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,qBAAqB,CAAA;CAAE,CAAC;AA+B/D,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAoB5F;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,2BAA2B,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC/E;;;;;;;;GAQG;GACD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAE1F,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC;AAoDvC;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI3E;AAGD,qGAAqG;AACrG,MAAM,WAAW,cAAc;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AAEnE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,OAAQ,CAAC;AAE1C;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAkD9F;AAyID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,GAAE,SAAS,UAAU,EAAO,GAAG,OAAO,CAGpF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC,EACjD,IAAI,CAAC,EAAE,eAAe,GACrB,OAAO,CAAC,UAAU,CAAC,CAmGrB;AAED,oFAAoF;AACpF,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,eAAe,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAeD,oGAAoG;AACpG,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,OAAO,CAAC,UAAU,CAAC,CAWrB;AAED,uFAAuF;AACvF,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAO9C"}
1
+ {"version":3,"file":"local-llm.d.ts","sourceRoot":"","sources":["../../src/lib/local-llm.ts"],"names":[],"mappings":"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"}