agentfootprint 8.0.0 → 8.1.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 (65) hide show
  1. package/AGENTS.md +14 -9
  2. package/README.md +11 -7
  3. package/ai-instructions/claude-code/SKILL.md +1 -1
  4. package/ai-instructions/clinerules +1 -1
  5. package/ai-instructions/copilot-instructions.md +1 -1
  6. package/ai-instructions/cursor/agentfootprint.md +1 -1
  7. package/ai-instructions/kiro/agentfootprint.md +1 -1
  8. package/ai-instructions/windsurfrules +1 -1
  9. package/dist/adapters/llm/OllamaProvider.js +628 -0
  10. package/dist/adapters/llm/OllamaProvider.js.map +1 -0
  11. package/dist/adapters/llm/OpenAIProvider.js +12 -21
  12. package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
  13. package/dist/adapters/llm/createProvider.js +35 -6
  14. package/dist/adapters/llm/createProvider.js.map +1 -1
  15. package/dist/core/agent/window/errors.js +4 -3
  16. package/dist/core/agent/window/errors.js.map +1 -1
  17. package/dist/core/agent/window/strategies/slidingWindow.js +2 -2
  18. package/dist/esm/adapters/llm/OllamaProvider.d.ts +182 -0
  19. package/dist/esm/adapters/llm/OllamaProvider.js +622 -0
  20. package/dist/esm/adapters/llm/OllamaProvider.js.map +1 -0
  21. package/dist/esm/adapters/llm/OpenAIProvider.d.ts +0 -12
  22. package/dist/esm/adapters/llm/OpenAIProvider.js +11 -19
  23. package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
  24. package/dist/esm/adapters/llm/createProvider.d.ts +25 -8
  25. package/dist/esm/adapters/llm/createProvider.js +35 -6
  26. package/dist/esm/adapters/llm/createProvider.js.map +1 -1
  27. package/dist/esm/core/agent/window/errors.js +4 -3
  28. package/dist/esm/core/agent/window/errors.js.map +1 -1
  29. package/dist/esm/core/agent/window/strategies/slidingWindow.d.ts +2 -2
  30. package/dist/esm/core/agent/window/strategies/slidingWindow.js +2 -2
  31. package/dist/esm/providers.d.ts +13 -5
  32. package/dist/esm/providers.js +13 -5
  33. package/dist/esm/providers.js.map +1 -1
  34. package/dist/esm/thinking/OllamaThinkingHandler.d.ts +60 -0
  35. package/dist/esm/thinking/OllamaThinkingHandler.js +107 -0
  36. package/dist/esm/thinking/OllamaThinkingHandler.js.map +1 -0
  37. package/dist/esm/thinking/index.d.ts +1 -0
  38. package/dist/esm/thinking/index.js +1 -0
  39. package/dist/esm/thinking/index.js.map +1 -1
  40. package/dist/esm/thinking/registry.js +2 -0
  41. package/dist/esm/thinking/registry.js.map +1 -1
  42. package/dist/providers.js +16 -6
  43. package/dist/providers.js.map +1 -1
  44. package/dist/thinking/OllamaThinkingHandler.js +111 -0
  45. package/dist/thinking/OllamaThinkingHandler.js.map +1 -0
  46. package/dist/thinking/index.js +4 -1
  47. package/dist/thinking/index.js.map +1 -1
  48. package/dist/thinking/registry.js +2 -0
  49. package/dist/thinking/registry.js.map +1 -1
  50. package/dist/types/adapters/llm/OllamaProvider.d.ts +183 -0
  51. package/dist/types/adapters/llm/OllamaProvider.d.ts.map +1 -0
  52. package/dist/types/adapters/llm/OpenAIProvider.d.ts +0 -12
  53. package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
  54. package/dist/types/adapters/llm/createProvider.d.ts +25 -8
  55. package/dist/types/adapters/llm/createProvider.d.ts.map +1 -1
  56. package/dist/types/core/agent/window/errors.d.ts.map +1 -1
  57. package/dist/types/core/agent/window/strategies/slidingWindow.d.ts +2 -2
  58. package/dist/types/providers.d.ts +13 -5
  59. package/dist/types/providers.d.ts.map +1 -1
  60. package/dist/types/thinking/OllamaThinkingHandler.d.ts +61 -0
  61. package/dist/types/thinking/OllamaThinkingHandler.d.ts.map +1 -0
  62. package/dist/types/thinking/index.d.ts +1 -0
  63. package/dist/types/thinking/index.d.ts.map +1 -1
  64. package/dist/types/thinking/registry.d.ts.map +1 -1
  65. package/package.json +3 -1
@@ -273,25 +273,17 @@ function resolveAzureClient(options) {
273
273
  ...(deployment && { deployment }),
274
274
  });
275
275
  }
276
- /**
277
- * Convenience factory for Ollama (OpenAI-compatible endpoint).
278
- *
279
- * @example
280
- * import { ollama } from 'agentfootprint/llm-providers';
281
- *
282
- * const provider = ollama({ defaultModel: 'llama3.2' });
283
- * // Talks to http://localhost:11434/v1 by default.
284
- */
285
- export function ollama(options = {}) {
286
- const host = options.host ?? 'http://localhost:11434';
287
- const inner = openai({
288
- ...options,
289
- baseURL: options.baseURL ?? `${host}/v1`,
290
- apiKey: options.apiKey ?? 'ollama', // Ollama ignores the key; SDK requires non-empty.
291
- defaultModel: options.defaultModel ?? 'llama3.2',
292
- });
293
- return { ...inner, name: 'ollama' };
294
- }
276
+ // ─── Ollama ─────────────────────────────────────────────────────────
277
+ //
278
+ // `ollama()` used to live here as a thin wrapper over `openai({ baseURL })`.
279
+ // It moved to its own native adapter in 8.1.0 (`./OllamaProvider.ts`) so the
280
+ // free rung of the ladder stops needing the `openai` package, stops labelling
281
+ // its failures `[openai]`, and starts reporting real token counts.
282
+ //
283
+ // The OpenAI-compatible endpoint still works and is still supported — it is
284
+ // now something you ask for explicitly:
285
+ //
286
+ // openai({ baseURL: 'http://localhost:11434/v1', apiKey: 'ollama' })
295
287
  // ─── Internals ──────────────────────────────────────────────────────
296
288
  function resolveClient(options) {
297
289
  if (options._client)
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAIProvider.js","sourceRoot":"","sources":["../../../../src/adapters/llm/OpenAIProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenAIProvider.js","sourceRoot":"","sources":["../../../../src/adapters/llm/OpenAIProvider.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  * defaultModel: process.env.LLM_MODEL,
16
16
  * } as CreateProviderOptions);
17
17
  *
18
- * For provider-specific options (Bedrock region, Ollama host, Browser
18
+ * For provider-specific options (Bedrock region, Ollama baseUrl, Browser
19
19
  * apiUrl, etc.) construct the underlying factory directly — this
20
20
  * helper deliberately exposes only the common subset.
21
21
  */
@@ -23,6 +23,7 @@ import type { LLMProvider } from '../types.js';
23
23
  import { type MockProviderOptions } from './MockProvider.js';
24
24
  import { type AnthropicProviderOptions } from './AnthropicProvider.js';
25
25
  import { type OpenAIProviderOptions } from './OpenAIProvider.js';
26
+ import { type OllamaProviderOptions } from './OllamaProvider.js';
26
27
  import { type BedrockProviderOptions } from './BedrockProvider.js';
27
28
  import { type BrowserAnthropicProviderOptions } from './BrowserAnthropicProvider.js';
28
29
  import { type BrowserOpenAIProviderOptions } from './BrowserOpenAIProvider.js';
@@ -42,9 +43,7 @@ export type CreateProviderOptions = ({
42
43
  readonly kind: 'openai';
43
44
  } & OpenAIProviderOptions) | ({
44
45
  readonly kind: 'ollama';
45
- } & OpenAIProviderOptions & {
46
- readonly host?: string;
47
- }) | ({
46
+ } & OllamaProviderOptions) | ({
48
47
  readonly kind: 'bedrock';
49
48
  } & BedrockProviderOptions) | ({
50
49
  readonly kind: 'browser-anthropic';
@@ -60,7 +59,7 @@ export declare function createProvider(options: CreateProviderOptions): LLMProvi
60
59
  export interface ProviderFromEnv {
61
60
  readonly provider: LLMProvider;
62
61
  readonly model: string;
63
- readonly kind: 'azure-openai' | 'anthropic' | 'openai' | 'mock';
62
+ readonly kind: 'ollama' | 'azure-openai' | 'anthropic' | 'openai' | 'mock';
64
63
  }
65
64
  /**
66
65
  * Resolve an `LLMProvider` from environment variables — drop your company's
@@ -69,12 +68,30 @@ export interface ProviderFromEnv {
69
68
  * only for the detected provider.)
70
69
  *
71
70
  * Detection order (first match wins):
72
- * 1. **Azure OpenAI** — `AZURE_OPENAI_API_KEY` + (`AZURE_OPENAI_ENDPOINT` |
71
+ * 1. **Ollama (local)** — `OLLAMA_MODEL` names a model, e.g. `qwen3`
72
+ * [+ `OLLAMA_HOST` for a runtime that isn't on localhost]
73
+ * 2. **Azure OpenAI** — `AZURE_OPENAI_API_KEY` + (`AZURE_OPENAI_ENDPOINT` |
73
74
  * `OPENAI_BASE_URL`) [+ `AZURE_OPENAI_API_VERSION`, `AZURE_OPENAI_DEPLOYMENT`|`MODEL_NAME`]
74
- * 2. **Anthropic** — `ANTHROPIC_API_KEY`
75
- * 3. **OpenAI** — `OPENAI_API_KEY`
75
+ * 3. **Anthropic** — `ANTHROPIC_API_KEY`
76
+ * 4. **OpenAI** — `OPENAI_API_KEY`
76
77
  * Otherwise throws (or returns the mock when `{ fallbackToMock: true }`).
77
78
  *
79
+ * **Why the local model goes first.** Every other arm triggers on a
80
+ * CREDENTIAL, and credentials arrive in a shell by accident all the time —
81
+ * a key exported in `.zshrc` two months ago for something else. `OLLAMA_MODEL`
82
+ * triggers on a NAME you had to choose and type, so its presence is a
83
+ * declaration rather than a leftover: someone who writes `OLLAMA_MODEL=qwen3`
84
+ * has said which model they want this run to use, and honoring the cloud key
85
+ * instead would both ignore them and cost them money. (`OLLAMA_HOST` alone is
86
+ * NOT a trigger — people export it just to run Ollama, and it must not hijack
87
+ * an app that never asked for a local model.)
88
+ *
89
+ * **No probing.** This function reads environment variables and nothing else.
90
+ * It never opens a socket to see whether a daemon is up — its answer stays
91
+ * deterministic, instant, and identical on a laptop and in CI. If `OLLAMA_MODEL`
92
+ * is set and the daemon is down, you get the provider, and the refusal arrives
93
+ * from the call itself with `ollama serve` in the message.
94
+ *
78
95
  * @example
79
96
  * import { providerFromEnv } from 'agentfootprint';
80
97
  * const { provider, model, kind } = providerFromEnv({ fallbackToMock: true });
@@ -15,13 +15,14 @@
15
15
  * defaultModel: process.env.LLM_MODEL,
16
16
  * } as CreateProviderOptions);
17
17
  *
18
- * For provider-specific options (Bedrock region, Ollama host, Browser
18
+ * For provider-specific options (Bedrock region, Ollama baseUrl, Browser
19
19
  * apiUrl, etc.) construct the underlying factory directly — this
20
20
  * helper deliberately exposes only the common subset.
21
21
  */
22
22
  import { mock } from './MockProvider.js';
23
23
  import { anthropic } from './AnthropicProvider.js';
24
- import { openai, ollama, azureOpenai } from './OpenAIProvider.js';
24
+ import { openai, azureOpenai } from './OpenAIProvider.js';
25
+ import { ollama } from './OllamaProvider.js';
25
26
  import { bedrock } from './BedrockProvider.js';
26
27
  import { browserAnthropic, } from './BrowserAnthropicProvider.js';
27
28
  import { browserOpenai } from './BrowserOpenAIProvider.js';
@@ -58,12 +59,30 @@ export function createProvider(options) {
58
59
  * only for the detected provider.)
59
60
  *
60
61
  * Detection order (first match wins):
61
- * 1. **Azure OpenAI** — `AZURE_OPENAI_API_KEY` + (`AZURE_OPENAI_ENDPOINT` |
62
+ * 1. **Ollama (local)** — `OLLAMA_MODEL` names a model, e.g. `qwen3`
63
+ * [+ `OLLAMA_HOST` for a runtime that isn't on localhost]
64
+ * 2. **Azure OpenAI** — `AZURE_OPENAI_API_KEY` + (`AZURE_OPENAI_ENDPOINT` |
62
65
  * `OPENAI_BASE_URL`) [+ `AZURE_OPENAI_API_VERSION`, `AZURE_OPENAI_DEPLOYMENT`|`MODEL_NAME`]
63
- * 2. **Anthropic** — `ANTHROPIC_API_KEY`
64
- * 3. **OpenAI** — `OPENAI_API_KEY`
66
+ * 3. **Anthropic** — `ANTHROPIC_API_KEY`
67
+ * 4. **OpenAI** — `OPENAI_API_KEY`
65
68
  * Otherwise throws (or returns the mock when `{ fallbackToMock: true }`).
66
69
  *
70
+ * **Why the local model goes first.** Every other arm triggers on a
71
+ * CREDENTIAL, and credentials arrive in a shell by accident all the time —
72
+ * a key exported in `.zshrc` two months ago for something else. `OLLAMA_MODEL`
73
+ * triggers on a NAME you had to choose and type, so its presence is a
74
+ * declaration rather than a leftover: someone who writes `OLLAMA_MODEL=qwen3`
75
+ * has said which model they want this run to use, and honoring the cloud key
76
+ * instead would both ignore them and cost them money. (`OLLAMA_HOST` alone is
77
+ * NOT a trigger — people export it just to run Ollama, and it must not hijack
78
+ * an app that never asked for a local model.)
79
+ *
80
+ * **No probing.** This function reads environment variables and nothing else.
81
+ * It never opens a socket to see whether a daemon is up — its answer stays
82
+ * deterministic, instant, and identical on a laptop and in CI. If `OLLAMA_MODEL`
83
+ * is set and the daemon is down, you get the provider, and the refusal arrives
84
+ * from the call itself with `ollama serve` in the message.
85
+ *
67
86
  * @example
68
87
  * import { providerFromEnv } from 'agentfootprint';
69
88
  * const { provider, model, kind } = providerFromEnv({ fallbackToMock: true });
@@ -71,6 +90,15 @@ export function createProvider(options) {
71
90
  */
72
91
  export function providerFromEnv(opts = {}) {
73
92
  const env = (typeof process !== 'undefined' ? process.env : {});
93
+ if (env.OLLAMA_MODEL) {
94
+ return {
95
+ provider: ollama(env.OLLAMA_MODEL, {
96
+ ...(env.OLLAMA_HOST && { baseUrl: env.OLLAMA_HOST }),
97
+ }),
98
+ model: env.OLLAMA_MODEL,
99
+ kind: 'ollama',
100
+ };
101
+ }
74
102
  const azureEndpoint = env.AZURE_OPENAI_ENDPOINT ?? env.OPENAI_BASE_URL;
75
103
  if (env.AZURE_OPENAI_API_KEY && azureEndpoint) {
76
104
  return {
@@ -107,7 +135,8 @@ export function providerFromEnv(opts = {}) {
107
135
  kind: 'mock',
108
136
  };
109
137
  }
110
- throw new Error('providerFromEnv: no provider credentials in the environment. Set one of:\n' +
138
+ throw new Error('providerFromEnv: no provider declared in the environment. Set one of:\n' +
139
+ ' • Ollama: OLLAMA_MODEL (a local model, e.g. qwen3 — free, no API key)\n' +
111
140
  ' • Azure: AZURE_OPENAI_API_KEY + (AZURE_OPENAI_ENDPOINT | OPENAI_BASE_URL)\n' +
112
141
  ' + AZURE_OPENAI_API_VERSION + (AZURE_OPENAI_DEPLOYMENT | MODEL_NAME)\n' +
113
142
  ' • Anthropic: ANTHROPIC_API_KEY\n' +
@@ -1 +1 @@
1
- {"version":3,"file":"createProvider.js","sourceRoot":"","sources":["../../../../src/adapters/llm/createProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createProvider.js","sourceRoot":"","sources":["../../../../src/adapters/llm/createProvider.ts"],"names":[],"mappings":"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"}
@@ -27,9 +27,10 @@ export class CompactionUnmeasurableError extends Error {
27
27
  `tokens for the last call, so the window cannot be measured against thresholdTokens. ` +
28
28
  `Compaction refuses rather than guess the size of the window or leave a configured ` +
29
29
  `budget silently unenforced. Fixes: use a provider that reports usage (anthropic, ` +
30
- `openai, bedrock and the mock provider all do), or remove .compaction() from this agent. ` +
31
- `Note that some OpenAI-compatible endpoints (Ollama, vLLM) do not send usage while ` +
32
- `streaming.`);
30
+ `openai, bedrock, ollama and the mock provider all do), or remove .compaction() from ` +
31
+ `this agent. Note that an OpenAI-COMPATIBLE endpoint reached through openai({ baseURL }) ` +
32
+ `may not send usage while streaming — for a local model, ollama() talks the native API ` +
33
+ `and always reports it.`);
33
34
  this.provider = provider;
34
35
  }
35
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../src/core/agent/window/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAClC,IAAI,GAAG,6BAA6B,CAAC;IACvD,4DAA4D;IACnD,QAAQ,CAAS;IAE1B,YAAY,QAAgB;QAC1B,KAAK,CACH,iDAAiD,QAAQ,kCAAkC;YACzF,sFAAsF;YACtF,oFAAoF;YACpF,mFAAmF;YACnF,0FAA0F;YAC1F,oFAAoF;YACpF,YAAY,CACf,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../src/core/agent/window/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAClC,IAAI,GAAG,6BAA6B,CAAC;IACvD,4DAA4D;IACnD,QAAQ,CAAS;IAE1B,YAAY,QAAgB;QAC1B,KAAK,CACH,iDAAiD,QAAQ,kCAAkC;YACzF,sFAAsF;YACtF,oFAAoF;YACpF,mFAAmF;YACnF,sFAAsF;YACtF,0FAA0F;YAC1F,wFAAwF;YACxF,wBAAwB,CAC3B,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
@@ -37,10 +37,10 @@ export declare const SLIDING_WINDOW = "sliding-window";
37
37
  * @example
38
38
  * ```ts
39
39
  * import { Agent, slidingWindow } from 'agentfootprint';
40
- * import { ollama } from 'agentfootprint/llm-providers';
40
+ * import { ollama } from 'agentfootprint/providers';
41
41
  *
42
42
  * // Works on a provider that reports no usage at all: the trigger is turns.
43
- * const agent = Agent.create({ provider: ollama(), model: 'llama3' })
43
+ * const agent = Agent.create({ provider: ollama('llama3.2'), model: 'llama3.2' })
44
44
  * .window(slidingWindow({ keepRecentTurns: 12 }))
45
45
  * .build();
46
46
  * ```
@@ -37,10 +37,10 @@ export const SLIDING_WINDOW = 'sliding-window';
37
37
  * @example
38
38
  * ```ts
39
39
  * import { Agent, slidingWindow } from 'agentfootprint';
40
- * import { ollama } from 'agentfootprint/llm-providers';
40
+ * import { ollama } from 'agentfootprint/providers';
41
41
  *
42
42
  * // Works on a provider that reports no usage at all: the trigger is turns.
43
- * const agent = Agent.create({ provider: ollama(), model: 'llama3' })
43
+ * const agent = Agent.create({ provider: ollama('llama3.2'), model: 'llama3.2' })
44
44
  * .window(slidingWindow({ keepRecentTurns: 12 }))
45
45
  * .build();
46
46
  * ```
@@ -14,18 +14,26 @@
14
14
  *
15
15
  * What's here today:
16
16
  * • `mock` / `MockProvider` — deterministic + realistic-mode mock
17
+ * • `ollama` / `OllamaProvider` — local models, free, no API key
17
18
  * • `anthropic` / `AnthropicProvider` — real provider (Claude)
18
19
  * • `openai` / `OpenAIProvider` — real provider (GPT)
20
+ * • `bedrock`, `azureOpenai`, and the `browser*` variants
21
+ *
22
+ * The ladder these are FOR: `mock()` while you shape the logic →
23
+ * `ollama('<model>')` for a real model that costs nothing and needs no
24
+ * key → a paid API in production. The agent code above them does not
25
+ * change between the three; that is the whole point of the port.
19
26
  *
20
27
  * Bring your own (BYO):
21
- * For Bedrock / Ollama / Cohere / on-prem / fine-tuned models,
22
- * implement the `LLMProvider` interface (see `LLMProvider` exported
23
- * from the main barrel) — `complete()` is required, `stream()` is
24
- * optional. The `MockProvider` source is the canonical reference.
28
+ * For Cohere / on-prem / fine-tuned models, implement the
29
+ * `LLMProvider` interface (see `LLMProvider` exported from the main
30
+ * barrel) — `complete()` is required, `stream()` is optional. The
31
+ * `MockProvider` source is the canonical reference.
25
32
  */
26
33
  export { MockProvider, mock, type MockProviderOptions, type MockReply, type LatencyMs, } from './adapters/llm/MockProvider.js';
27
34
  export { anthropic, AnthropicProvider, type AnthropicProviderOptions, } from './adapters/llm/AnthropicProvider.js';
28
- export { openai, OpenAIProvider, ollama, azureOpenai, type OpenAIProviderOptions, type AzureOpenAIProviderOptions, } from './adapters/llm/OpenAIProvider.js';
35
+ export { openai, OpenAIProvider, azureOpenai, type OpenAIProviderOptions, type AzureOpenAIProviderOptions, } from './adapters/llm/OpenAIProvider.js';
36
+ export { ollama, OllamaProvider, OllamaUnavailableError, type OllamaProviderOptions, type ThinkLevel, } from './adapters/llm/OllamaProvider.js';
29
37
  export { bedrock, BedrockProvider, type BedrockProviderOptions, } from './adapters/llm/BedrockProvider.js';
30
38
  export { browserAnthropic, BrowserAnthropicProvider, type BrowserAnthropicProviderOptions, } from './adapters/llm/BrowserAnthropicProvider.js';
31
39
  export { browserOpenai, BrowserOpenAIProvider, type BrowserOpenAIProviderOptions, browserAzureOpenai, BrowserAzureOpenAIProvider, type BrowserAzureOpenAIProviderOptions, } from './adapters/llm/BrowserOpenAIProvider.js';
@@ -14,18 +14,26 @@
14
14
  *
15
15
  * What's here today:
16
16
  * • `mock` / `MockProvider` — deterministic + realistic-mode mock
17
+ * • `ollama` / `OllamaProvider` — local models, free, no API key
17
18
  * • `anthropic` / `AnthropicProvider` — real provider (Claude)
18
19
  * • `openai` / `OpenAIProvider` — real provider (GPT)
20
+ * • `bedrock`, `azureOpenai`, and the `browser*` variants
21
+ *
22
+ * The ladder these are FOR: `mock()` while you shape the logic →
23
+ * `ollama('<model>')` for a real model that costs nothing and needs no
24
+ * key → a paid API in production. The agent code above them does not
25
+ * change between the three; that is the whole point of the port.
19
26
  *
20
27
  * Bring your own (BYO):
21
- * For Bedrock / Ollama / Cohere / on-prem / fine-tuned models,
22
- * implement the `LLMProvider` interface (see `LLMProvider` exported
23
- * from the main barrel) — `complete()` is required, `stream()` is
24
- * optional. The `MockProvider` source is the canonical reference.
28
+ * For Cohere / on-prem / fine-tuned models, implement the
29
+ * `LLMProvider` interface (see `LLMProvider` exported from the main
30
+ * barrel) — `complete()` is required, `stream()` is optional. The
31
+ * `MockProvider` source is the canonical reference.
25
32
  */
26
33
  export { MockProvider, mock, } from './adapters/llm/MockProvider.js';
27
34
  export { anthropic, AnthropicProvider, } from './adapters/llm/AnthropicProvider.js';
28
- export { openai, OpenAIProvider, ollama, azureOpenai, } from './adapters/llm/OpenAIProvider.js';
35
+ export { openai, OpenAIProvider, azureOpenai, } from './adapters/llm/OpenAIProvider.js';
36
+ export { ollama, OllamaProvider, OllamaUnavailableError, } from './adapters/llm/OllamaProvider.js';
29
37
  export { bedrock, BedrockProvider, } from './adapters/llm/BedrockProvider.js';
30
38
  export { browserAnthropic, BrowserAnthropicProvider, } from './adapters/llm/BrowserAnthropicProvider.js';
31
39
  export { browserOpenai, BrowserOpenAIProvider, browserAzureOpenai, BrowserAzureOpenAIProvider, } from './adapters/llm/BrowserOpenAIProvider.js';
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EACL,YAAY,EACZ,IAAI,GAIL,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,SAAS,EACT,iBAAiB,GAElB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,MAAM,EACN,cAAc,EACd,MAAM,EACN,WAAW,GAGZ,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,OAAO,EACP,eAAe,GAEhB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GAEzB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EACL,aAAa,EACb,qBAAqB,EAErB,kBAAkB,EAClB,0BAA0B,GAE3B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,cAAc,GAGf,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EACL,YAAY,EACZ,IAAI,GAIL,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,SAAS,EACT,iBAAiB,GAElB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,MAAM,EACN,cAAc,EACd,WAAW,GAGZ,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,MAAM,EACN,cAAc,EACd,sBAAsB,GAGvB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,OAAO,EACP,eAAe,GAEhB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GAEzB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EACL,aAAa,EACb,qBAAqB,EAErB,kBAAkB,EAClB,0BAA0B,GAE3B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,cAAc,GAGf,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * OllamaThinkingHandler — normalizes a local reasoning model's thinking
3
+ * into the framework's `ThinkingBlock[]` contract.
4
+ *
5
+ * Local reasoning models (deepseek-r1, qwen3, gpt-oss, …) reason in the
6
+ * open, and where that reasoning LANDS depends on how they were asked:
7
+ *
8
+ * 1. ASKED (`ollama('qwen3', { think: true })`, or the agent's
9
+ * `.thinking({ budget })`) — Ollama lifts the reasoning out of the
10
+ * answer into `message.thinking`. The adapter forwards it as
11
+ * `{ kind: 'field', thinking }`. This is the good path.
12
+ *
13
+ * 2. NOT ASKED — the same model writes `<think>…</think>` straight into
14
+ * the answer text. The adapter recognizes the shape and forwards the
15
+ * whole answer as `{ kind: 'inline', content }`.
16
+ *
17
+ * **The library recognizes the inline shape; it never rewrites the
18
+ * answer.** Blocks produced from case 2 describe text that is STILL
19
+ * present, verbatim, in `LLMResponse.content` — because silently editing
20
+ * a model's answer is a meaning change, and that is the application's
21
+ * decision to make, not this library's. If you want the reasoning out of
22
+ * the answer, ask for it: turn `think` on, and the model stops putting it
23
+ * there.
24
+ *
25
+ * **No signature** — nothing on this wire is signed, so there is no
26
+ * round-trip integrity invariant (unlike Anthropic). `signature` stays
27
+ * undefined.
28
+ *
29
+ * **No `summary` flag** — this is raw reasoning, not a structured summary
30
+ * (unlike OpenAI's `reasoning_summary`).
31
+ *
32
+ * **`parseChunk`** — the adapter already emits `LLMChunk.thinkingDelta`
33
+ * directly while streaming (Ollama sends `message.thinking` deltas frame
34
+ * by frame), so the framework does not need this to see live reasoning.
35
+ * It is implemented anyway for consumers driving the handler themselves.
36
+ */
37
+ import type { ThinkingHandler } from './types.js';
38
+ /**
39
+ * What `OllamaProvider` puts on `LLMResponse.rawThinking`.
40
+ *
41
+ * Tagged rather than a bare string so the handler never has to GUESS which
42
+ * of the two situations it is looking at — and so a consumer reading the
43
+ * raw value can tell whether the reasoning is also sitting in the answer.
44
+ */
45
+ export type OllamaRawThinking = {
46
+ readonly kind: 'field';
47
+ readonly thinking: string;
48
+ } | {
49
+ readonly kind: 'inline';
50
+ readonly content: string;
51
+ };
52
+ /**
53
+ * Pull the reasoning out of text that carries `<think>` tags.
54
+ *
55
+ * All tag PARSING lives here, in the handler — the adapter only notices
56
+ * that a `<think` substring is present and tags the payload accordingly.
57
+ * Exported so a consumer driving normalization by hand can reuse it.
58
+ */
59
+ export declare function extractInlineThinking(text: string): readonly string[];
60
+ export declare const ollamaThinkingHandler: ThinkingHandler;
@@ -0,0 +1,107 @@
1
+ /**
2
+ * OllamaThinkingHandler — normalizes a local reasoning model's thinking
3
+ * into the framework's `ThinkingBlock[]` contract.
4
+ *
5
+ * Local reasoning models (deepseek-r1, qwen3, gpt-oss, …) reason in the
6
+ * open, and where that reasoning LANDS depends on how they were asked:
7
+ *
8
+ * 1. ASKED (`ollama('qwen3', { think: true })`, or the agent's
9
+ * `.thinking({ budget })`) — Ollama lifts the reasoning out of the
10
+ * answer into `message.thinking`. The adapter forwards it as
11
+ * `{ kind: 'field', thinking }`. This is the good path.
12
+ *
13
+ * 2. NOT ASKED — the same model writes `<think>…</think>` straight into
14
+ * the answer text. The adapter recognizes the shape and forwards the
15
+ * whole answer as `{ kind: 'inline', content }`.
16
+ *
17
+ * **The library recognizes the inline shape; it never rewrites the
18
+ * answer.** Blocks produced from case 2 describe text that is STILL
19
+ * present, verbatim, in `LLMResponse.content` — because silently editing
20
+ * a model's answer is a meaning change, and that is the application's
21
+ * decision to make, not this library's. If you want the reasoning out of
22
+ * the answer, ask for it: turn `think` on, and the model stops putting it
23
+ * there.
24
+ *
25
+ * **No signature** — nothing on this wire is signed, so there is no
26
+ * round-trip integrity invariant (unlike Anthropic). `signature` stays
27
+ * undefined.
28
+ *
29
+ * **No `summary` flag** — this is raw reasoning, not a structured summary
30
+ * (unlike OpenAI's `reasoning_summary`).
31
+ *
32
+ * **`parseChunk`** — the adapter already emits `LLMChunk.thinkingDelta`
33
+ * directly while streaming (Ollama sends `message.thinking` deltas frame
34
+ * by frame), so the framework does not need this to see live reasoning.
35
+ * It is implemented anyway for consumers driving the handler themselves.
36
+ */
37
+ /** `<think>…</think>`, including an unclosed one from a truncated answer. */
38
+ const THINK_TAG = /<think>([\s\S]*?)(?:<\/think>|$)/gi;
39
+ /**
40
+ * Pull the reasoning out of text that carries `<think>` tags.
41
+ *
42
+ * All tag PARSING lives here, in the handler — the adapter only notices
43
+ * that a `<think` substring is present and tags the payload accordingly.
44
+ * Exported so a consumer driving normalization by hand can reuse it.
45
+ */
46
+ export function extractInlineThinking(text) {
47
+ if (!text.includes('<think'))
48
+ return [];
49
+ const out = [];
50
+ // `matchAll` needs the /g flag and a fresh lastIndex per call.
51
+ THINK_TAG.lastIndex = 0;
52
+ for (const match of text.matchAll(THINK_TAG)) {
53
+ const inner = (match[1] ?? '').trim();
54
+ if (inner.length > 0)
55
+ out.push(inner);
56
+ }
57
+ return out;
58
+ }
59
+ function isRawThinking(raw) {
60
+ return typeof raw === 'object' && raw !== null && 'kind' in raw;
61
+ }
62
+ export const ollamaThinkingHandler = {
63
+ id: 'ollama',
64
+ providerNames: ['ollama'],
65
+ normalize(raw) {
66
+ if (raw === undefined || raw === null)
67
+ return [];
68
+ // Bare string — a hand-fed value, or a consumer-authored adapter that
69
+ // passes `message.thinking` straight through. Treat it as reasoning,
70
+ // but still honor tags if they are in there.
71
+ if (typeof raw === 'string')
72
+ return blocksFromText(raw);
73
+ if (isRawThinking(raw)) {
74
+ if (raw.kind === 'field') {
75
+ return typeof raw.thinking === 'string' ? blocksFromText(raw.thinking) : [];
76
+ }
77
+ if (raw.kind === 'inline') {
78
+ if (typeof raw.content !== 'string')
79
+ return [];
80
+ return extractInlineThinking(raw.content).map(toBlock);
81
+ }
82
+ }
83
+ // Unknown shape — empty rather than throw. The framework catches throws
84
+ // and emits parse_failed; graceful empty is the right answer for a
85
+ // wire that may grow fields we have not seen yet.
86
+ return [];
87
+ },
88
+ parseChunk(chunk) {
89
+ if (typeof chunk !== 'object' || chunk === null)
90
+ return {};
91
+ const message = chunk.message;
92
+ const thinking = message?.thinking;
93
+ return typeof thinking === 'string' && thinking.length > 0 ? { thinkingDelta: thinking } : {};
94
+ },
95
+ };
96
+ /** Text → blocks. Tagged text yields one block per tag; plain text one block. */
97
+ function blocksFromText(text) {
98
+ const tagged = extractInlineThinking(text);
99
+ if (tagged.length > 0)
100
+ return tagged.map(toBlock);
101
+ const trimmed = text.trim();
102
+ return trimmed.length > 0 ? [toBlock(trimmed)] : [];
103
+ }
104
+ function toBlock(content) {
105
+ return { type: 'thinking', content };
106
+ }
107
+ //# sourceMappingURL=OllamaThinkingHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OllamaThinkingHandler.js","sourceRoot":"","sources":["../../../src/thinking/OllamaThinkingHandler.ts"],"names":[],"mappings":"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"}
@@ -52,4 +52,5 @@ export type { ThinkingBlock, ThinkingHandler } from './types.js';
52
52
  export { mockThinkingHandler, mockAnthropicRaw, mockOpenAIRaw } from './MockThinkingHandler.js';
53
53
  export { anthropicThinkingHandler } from './AnthropicThinkingHandler.js';
54
54
  export { openAIThinkingHandler } from './OpenAIThinkingHandler.js';
55
+ export { ollamaThinkingHandler, extractInlineThinking, type OllamaRawThinking, } from './OllamaThinkingHandler.js';
55
56
  export { SHIPPED_THINKING_HANDLERS, findThinkingHandler } from './registry.js';
@@ -51,5 +51,6 @@
51
51
  export { mockThinkingHandler, mockAnthropicRaw, mockOpenAIRaw } from './MockThinkingHandler.js';
52
52
  export { anthropicThinkingHandler } from './AnthropicThinkingHandler.js';
53
53
  export { openAIThinkingHandler } from './OpenAIThinkingHandler.js';
54
+ export { ollamaThinkingHandler, extractInlineThinking, } from './OllamaThinkingHandler.js';
54
55
  export { SHIPPED_THINKING_HANDLERS, findThinkingHandler } from './registry.js';
55
56
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/thinking/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAIH,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEhG,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/thinking/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAIH,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEhG,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GAEtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
@@ -15,6 +15,7 @@
15
15
  */
16
16
  import { anthropicThinkingHandler } from './AnthropicThinkingHandler.js';
17
17
  import { mockThinkingHandler } from './MockThinkingHandler.js';
18
+ import { ollamaThinkingHandler } from './OllamaThinkingHandler.js';
18
19
  import { openAIThinkingHandler } from './OpenAIThinkingHandler.js';
19
20
  /**
20
21
  * All thinking handlers shipped with the library. Append in alphabetical
@@ -23,6 +24,7 @@ import { openAIThinkingHandler } from './OpenAIThinkingHandler.js';
23
24
  export const SHIPPED_THINKING_HANDLERS = [
24
25
  anthropicThinkingHandler,
25
26
  mockThinkingHandler,
27
+ ollamaThinkingHandler,
26
28
  openAIThinkingHandler,
27
29
  ];
28
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/thinking/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGnE;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAA+B;IACnE,wBAAwB;IACxB,mBAAmB;IACnB,qBAAqB;CACtB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,KAAK,MAAM,OAAO,IAAI,yBAAyB,EAAE,CAAC;QAChD,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,OAAO,CAAC;IACnE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/thinking/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGnE;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAA+B;IACnE,wBAAwB;IACxB,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;CACtB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,KAAK,MAAM,OAAO,IAAI,yBAAyB,EAAE,CAAC;QAChD,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO,OAAO,CAAC;IACnE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}