@soulcraft/sdk 3.5.0 → 3.6.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.
@@ -35,21 +35,27 @@
35
35
  */
36
36
  import type { AiModule } from './types.js';
37
37
  /**
38
- * Creates an `AiModule` backed by the Anthropic Claude API.
38
+ * Creates an `AiModule` with pluggable provider support.
39
39
  *
40
- * Reads `ANTHROPIC_API_KEY` from the environment. In production, throws if
41
- * the key is absent so misconfigured deployments fail loudly at startup.
40
+ * By default, uses the Anthropic Claude API. Set `AI_DEFAULT_PROVIDER=local`
41
+ * or pass `provider: 'local'` per-call to route to Ollama instead.
42
42
  *
43
43
  * @returns A configured {@link AiModule} instance.
44
- * @throws {Error} If `ANTHROPIC_API_KEY` is absent in production.
45
44
  *
46
- * @example
45
+ * @example Default (Claude)
46
+ * ```typescript
47
+ * const ai = createAiModule()
48
+ * const result = await ai.complete({ messages: [...] }) // → Claude
49
+ * ```
50
+ *
51
+ * @example Mixed providers
47
52
  * ```typescript
48
53
  * const ai = createAiModule()
49
- * const result = await ai.complete({ messages: [...], model: 'claude-sonnet-4-6' })
54
+ * const plan = await ai.complete({ provider: 'anthropic', model: 'opus', messages }) // → Claude
55
+ * const exec = await ai.complete({ provider: 'local', model: 'haiku', messages }) // → Ollama
50
56
  * ```
51
57
  */
52
58
  export declare function createAiModule(): AiModule;
53
- export type { AiModule, AiCompleteOptions, AiCompleteResult, AiStreamOptions, AiStreamEvent, AiToolCall, AiMessage, AiContentBlock, AiTool, AiModel, } from './types.js';
54
- export { AI_MODELS } from './types.js';
59
+ export type { AiModule, AiCompleteOptions, AiCompleteResult, AiStreamOptions, AiStreamEvent, AiToolCall, AiMessage, AiContentBlock, AiTool, AiModel, AiProvider, } from './types.js';
60
+ export { AI_MODELS, OLLAMA_MODELS } from './types.js';
55
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/ai/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,KAAK,EACV,QAAQ,EAMT,MAAM,YAAY,CAAA;AAOnB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CA0CzC;AA6MD,YAAY,EACV,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,UAAU,EACV,SAAS,EACT,cAAc,EACd,MAAM,EACN,OAAO,GACR,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/ai/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,KAAK,EACV,QAAQ,EAOT,MAAM,YAAY,CAAA;AAgDnB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAqDzC;AA6MD,YAAY,EACV,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,UAAU,EACV,SAAS,EACT,cAAc,EACd,MAAM,EACN,OAAO,EACP,UAAU,GACX,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA"}
@@ -35,6 +35,7 @@
35
35
  */
36
36
  import Anthropic from '@anthropic-ai/sdk';
37
37
  import { AI_MODELS } from './types.js';
38
+ import { ollamaComplete, ollamaStream } from './ollama.js';
38
39
  // ─────────────────────────────────────────────────────────────────────────────
39
40
  // Factory
40
41
  // ─────────────────────────────────────────────────────────────────────────────
@@ -53,31 +54,83 @@ import { AI_MODELS } from './types.js';
53
54
  * const result = await ai.complete({ messages: [...], model: 'claude-sonnet-4-6' })
54
55
  * ```
55
56
  */
57
+ /**
58
+ * @description Resolve the Ollama base URL for a given provider type.
59
+ * @param provider - 'local' or 'remote'.
60
+ * @returns The Ollama API base URL.
61
+ */
62
+ function _resolveOllamaUrl(provider) {
63
+ if (provider === 'local') {
64
+ return process.env['AI_LOCAL_URL'] || 'http://localhost:11434';
65
+ }
66
+ if (provider === 'remote') {
67
+ const url = process.env['AI_REMOTE_URL'];
68
+ if (!url)
69
+ throw new Error('AI_REMOTE_URL is required when using provider: "remote"');
70
+ return url;
71
+ }
72
+ throw new Error(`Unknown provider: ${provider}`);
73
+ }
74
+ /**
75
+ * @description Resolve which provider to use for a given call.
76
+ * Per-call `options.provider` overrides the `AI_DEFAULT_PROVIDER` env var.
77
+ */
78
+ function _resolveProvider(options) {
79
+ return options.provider ?? process.env['AI_DEFAULT_PROVIDER'] ?? 'anthropic';
80
+ }
81
+ /**
82
+ * Creates an `AiModule` with pluggable provider support.
83
+ *
84
+ * By default, uses the Anthropic Claude API. Set `AI_DEFAULT_PROVIDER=local`
85
+ * or pass `provider: 'local'` per-call to route to Ollama instead.
86
+ *
87
+ * @returns A configured {@link AiModule} instance.
88
+ *
89
+ * @example Default (Claude)
90
+ * ```typescript
91
+ * const ai = createAiModule()
92
+ * const result = await ai.complete({ messages: [...] }) // → Claude
93
+ * ```
94
+ *
95
+ * @example Mixed providers
96
+ * ```typescript
97
+ * const ai = createAiModule()
98
+ * const plan = await ai.complete({ provider: 'anthropic', model: 'opus', messages }) // → Claude
99
+ * const exec = await ai.complete({ provider: 'local', model: 'haiku', messages }) // → Ollama
100
+ * ```
101
+ */
56
102
  export function createAiModule() {
57
103
  const apiKey = process.env['ANTHROPIC_API_KEY'];
58
- if (!apiKey && process.env['NODE_ENV'] === 'production') {
59
- throw new Error('ANTHROPIC_API_KEY is required in production. ' +
60
- 'Set this environment variable to your Anthropic API key.');
104
+ const defaultProvider = process.env['AI_DEFAULT_PROVIDER'] ?? 'anthropic';
105
+ if (!apiKey && defaultProvider === 'anthropic' && process.env['NODE_ENV'] === 'production') {
106
+ throw new Error('ANTHROPIC_API_KEY is required when AI_DEFAULT_PROVIDER is "anthropic" in production.');
61
107
  }
62
- if (!apiKey) {
63
- console.warn('[SDK/ai] ANTHROPIC_API_KEY is not set. ' +
64
- 'sdk.ai.complete() and sdk.ai.stream() will throw until it is configured.');
108
+ if (!apiKey && defaultProvider === 'anthropic') {
109
+ console.warn('[SDK/ai] ANTHROPIC_API_KEY is not set. Anthropic provider will throw on use. ' +
110
+ 'Set AI_DEFAULT_PROVIDER=local to use Ollama instead.');
65
111
  }
66
- // When the API key is absent in non-production, we defer the error to call time
67
- // so the SDK can be constructed (e.g. for testing non-AI paths) without throwing.
68
112
  const client = apiKey ? new Anthropic({ apiKey }) : null;
69
113
  return {
70
114
  async complete(options) {
115
+ const provider = _resolveProvider(options);
116
+ if (provider === 'local' || provider === 'remote') {
117
+ return ollamaComplete(_resolveOllamaUrl(provider), options);
118
+ }
71
119
  if (!client) {
72
120
  throw new Error('ANTHROPIC_API_KEY is not set. ' +
73
- 'Configure this environment variable to use sdk.ai.complete().');
121
+ 'Set it, or use provider: "local" / AI_DEFAULT_PROVIDER=local for Ollama.');
74
122
  }
75
123
  return _complete(client, options);
76
124
  },
77
125
  async *stream(options) {
126
+ const provider = _resolveProvider(options);
127
+ if (provider === 'local' || provider === 'remote') {
128
+ yield* ollamaStream(_resolveOllamaUrl(provider), options);
129
+ return;
130
+ }
78
131
  if (!client) {
79
132
  throw new Error('ANTHROPIC_API_KEY is not set. ' +
80
- 'Configure this environment variable to use sdk.ai.stream().');
133
+ 'Set it, or use provider: "local" / AI_DEFAULT_PROVIDER=local for Ollama.');
81
134
  }
82
135
  yield* _stream(client, options);
83
136
  },
@@ -273,5 +326,5 @@ function _parseResponse(response) {
273
326
  },
274
327
  };
275
328
  }
276
- export { AI_MODELS } from './types.js';
329
+ export { AI_MODELS, OLLAMA_MODELS } from './types.js';
277
330
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/ai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/ai/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @module modules/ai/ollama
3
+ * @description Ollama provider for the SDK AI module. Translates Anthropic-format
4
+ * requests to Ollama's OpenAI-compatible API and back.
5
+ *
6
+ * Supports:
7
+ * - Non-streaming completion via `/api/chat`
8
+ * - Streaming completion via `/api/chat` with `stream: true`
9
+ * - Tool calling (Ollama supports OpenAI-format tools)
10
+ * - Automatic model tier mapping (claude-* → Ollama model names)
11
+ */
12
+ import type { AiCompleteOptions, AiCompleteResult, AiStreamEvent } from './types.js';
13
+ /**
14
+ * @description Execute a non-streaming completion against Ollama.
15
+ * @param baseUrl - The Ollama API base URL (e.g. 'http://localhost:11434').
16
+ * @param options - SDK completion options.
17
+ * @returns SDK-formatted completion result.
18
+ */
19
+ export declare function ollamaComplete(baseUrl: string, options: AiCompleteOptions): Promise<AiCompleteResult>;
20
+ /**
21
+ * @description Execute a streaming completion against Ollama.
22
+ * @param baseUrl - The Ollama API base URL.
23
+ * @param options - SDK completion options.
24
+ * @yields SDK-formatted stream events.
25
+ */
26
+ export declare function ollamaStream(baseUrl: string, options: AiCompleteOptions): AsyncIterable<AiStreamEvent>;
27
+ //# sourceMappingURL=ollama.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../src/modules/ai/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EAEd,MAAM,YAAY,CAAA;AA2EnB;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CA6D3B;AAED;;;;;GAKG;AACH,wBAAuB,YAAY,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,GACzB,aAAa,CAAC,aAAa,CAAC,CAgG9B"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * @module modules/ai/ollama
3
+ * @description Ollama provider for the SDK AI module. Translates Anthropic-format
4
+ * requests to Ollama's OpenAI-compatible API and back.
5
+ *
6
+ * Supports:
7
+ * - Non-streaming completion via `/api/chat`
8
+ * - Streaming completion via `/api/chat` with `stream: true`
9
+ * - Tool calling (Ollama supports OpenAI-format tools)
10
+ * - Automatic model tier mapping (claude-* → Ollama model names)
11
+ */
12
+ import { AI_MODELS, OLLAMA_MODELS } from './types.js';
13
+ /**
14
+ * @description Resolve the Ollama model name from a Claude model ID or tier name.
15
+ * @param model - The model string from AiCompleteOptions (e.g. 'claude-sonnet-4-6' or 'haiku').
16
+ * @returns The Ollama model tag (e.g. 'qwen2.5:7b').
17
+ */
18
+ function resolveModel(model) {
19
+ if (!model)
20
+ return OLLAMA_MODELS[AI_MODELS.sonnet] ?? 'qwen2.5:7b';
21
+ return OLLAMA_MODELS[model] ?? model;
22
+ }
23
+ /**
24
+ * @description Convert SDK messages to Ollama/OpenAI chat format.
25
+ */
26
+ function toOllamaMessages(messages, systemPrompt) {
27
+ const result = [];
28
+ if (systemPrompt) {
29
+ result.push({ role: 'system', content: systemPrompt });
30
+ }
31
+ for (const msg of messages) {
32
+ if (typeof msg.content === 'string') {
33
+ result.push({ role: msg.role, content: msg.content });
34
+ }
35
+ else {
36
+ // Flatten content blocks to text + handle tool results
37
+ const textParts = [];
38
+ for (const block of msg.content) {
39
+ if (block.type === 'text') {
40
+ textParts.push(block.text);
41
+ }
42
+ else if (block.type === 'tool_result') {
43
+ result.push({ role: 'tool', content: block.content });
44
+ }
45
+ else if (block.type === 'tool_use') {
46
+ // Assistant's tool call — reconstruct as OpenAI format
47
+ result.push({
48
+ role: 'assistant',
49
+ content: '',
50
+ tool_calls: [{
51
+ id: block.id,
52
+ type: 'function',
53
+ function: { name: block.name, arguments: JSON.stringify(block.input) },
54
+ }],
55
+ });
56
+ continue;
57
+ }
58
+ }
59
+ if (textParts.length > 0) {
60
+ result.push({ role: msg.role, content: textParts.join('\n') });
61
+ }
62
+ }
63
+ }
64
+ return result;
65
+ }
66
+ /**
67
+ * @description Convert SDK tool definitions to Ollama/OpenAI format.
68
+ */
69
+ function toOllamaTools(tools) {
70
+ if (!tools || tools.length === 0)
71
+ return undefined;
72
+ return tools.map((t) => ({
73
+ type: 'function',
74
+ function: {
75
+ name: t.name,
76
+ description: t.description,
77
+ parameters: t.inputSchema,
78
+ },
79
+ }));
80
+ }
81
+ /**
82
+ * @description Execute a non-streaming completion against Ollama.
83
+ * @param baseUrl - The Ollama API base URL (e.g. 'http://localhost:11434').
84
+ * @param options - SDK completion options.
85
+ * @returns SDK-formatted completion result.
86
+ */
87
+ export async function ollamaComplete(baseUrl, options) {
88
+ const model = resolveModel(options.model);
89
+ const messages = toOllamaMessages(options.messages, options.systemPrompt);
90
+ const tools = toOllamaTools(options.tools);
91
+ const body = {
92
+ model,
93
+ messages,
94
+ stream: false,
95
+ options: {
96
+ num_predict: options.maxTokens ?? 8192,
97
+ ...(options.temperature !== undefined ? { temperature: options.temperature } : {}),
98
+ },
99
+ };
100
+ if (tools)
101
+ body.tools = tools;
102
+ const res = await fetch(`${baseUrl}/api/chat`, {
103
+ method: 'POST',
104
+ headers: { 'Content-Type': 'application/json' },
105
+ body: JSON.stringify(body),
106
+ });
107
+ if (!res.ok) {
108
+ const text = await res.text();
109
+ throw new Error(`Ollama error (${res.status}): ${text}`);
110
+ }
111
+ const data = await res.json();
112
+ const toolCalls = [];
113
+ if (data.message.tool_calls) {
114
+ for (const tc of data.message.tool_calls) {
115
+ let input = {};
116
+ try {
117
+ input = JSON.parse(tc.function.arguments);
118
+ }
119
+ catch { }
120
+ toolCalls.push({
121
+ id: `tool_${crypto.randomUUID().slice(0, 8)}`,
122
+ name: tc.function.name,
123
+ input,
124
+ });
125
+ }
126
+ }
127
+ return {
128
+ text: data.message.content || null,
129
+ toolCalls: toolCalls.length > 0 ? toolCalls : null,
130
+ stopReason: toolCalls.length > 0 ? 'tool_use' : 'end_turn',
131
+ usage: {
132
+ inputTokens: data.prompt_eval_count ?? 0,
133
+ outputTokens: data.eval_count ?? 0,
134
+ },
135
+ };
136
+ }
137
+ /**
138
+ * @description Execute a streaming completion against Ollama.
139
+ * @param baseUrl - The Ollama API base URL.
140
+ * @param options - SDK completion options.
141
+ * @yields SDK-formatted stream events.
142
+ */
143
+ export async function* ollamaStream(baseUrl, options) {
144
+ const model = resolveModel(options.model);
145
+ const messages = toOllamaMessages(options.messages, options.systemPrompt);
146
+ const tools = toOllamaTools(options.tools);
147
+ const body = {
148
+ model,
149
+ messages,
150
+ stream: true,
151
+ options: {
152
+ num_predict: options.maxTokens ?? 8192,
153
+ ...(options.temperature !== undefined ? { temperature: options.temperature } : {}),
154
+ },
155
+ };
156
+ if (tools)
157
+ body.tools = tools;
158
+ const res = await fetch(`${baseUrl}/api/chat`, {
159
+ method: 'POST',
160
+ headers: { 'Content-Type': 'application/json' },
161
+ body: JSON.stringify(body),
162
+ });
163
+ if (!res.ok) {
164
+ const text = await res.text();
165
+ throw new Error(`Ollama error (${res.status}): ${text}`);
166
+ }
167
+ const reader = res.body?.getReader();
168
+ if (!reader)
169
+ throw new Error('No response body from Ollama');
170
+ const decoder = new TextDecoder();
171
+ let buffer = '';
172
+ let accumulatedText = '';
173
+ const accumulatedToolCalls = [];
174
+ let totalInputTokens = 0;
175
+ let totalOutputTokens = 0;
176
+ while (true) {
177
+ const { done, value } = await reader.read();
178
+ if (done)
179
+ break;
180
+ buffer += decoder.decode(value, { stream: true });
181
+ const lines = buffer.split('\n');
182
+ buffer = lines.pop() ?? '';
183
+ for (const line of lines) {
184
+ if (!line.trim())
185
+ continue;
186
+ try {
187
+ const chunk = JSON.parse(line);
188
+ if (chunk.message?.content) {
189
+ accumulatedText += chunk.message.content;
190
+ yield { type: 'text', text: chunk.message.content };
191
+ }
192
+ if (chunk.message?.tool_calls) {
193
+ for (const tc of chunk.message.tool_calls) {
194
+ let input = {};
195
+ try {
196
+ input = JSON.parse(tc.function.arguments);
197
+ }
198
+ catch { }
199
+ const toolCall = {
200
+ id: `tool_${crypto.randomUUID().slice(0, 8)}`,
201
+ name: tc.function.name,
202
+ input,
203
+ };
204
+ accumulatedToolCalls.push(toolCall);
205
+ yield { type: 'tool_use', toolCall };
206
+ }
207
+ }
208
+ if (chunk.done) {
209
+ totalInputTokens = chunk.prompt_eval_count ?? 0;
210
+ totalOutputTokens = chunk.eval_count ?? 0;
211
+ }
212
+ }
213
+ catch {
214
+ // Skip malformed NDJSON lines
215
+ }
216
+ }
217
+ }
218
+ yield {
219
+ type: 'done',
220
+ result: {
221
+ text: accumulatedText || null,
222
+ toolCalls: accumulatedToolCalls.length > 0 ? accumulatedToolCalls : null,
223
+ stopReason: accumulatedToolCalls.length > 0 ? 'tool_use' : 'end_turn',
224
+ usage: {
225
+ inputTokens: totalInputTokens,
226
+ outputTokens: totalOutputTokens,
227
+ },
228
+ },
229
+ };
230
+ }
231
+ //# sourceMappingURL=ollama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../src/modules/ai/ollama.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,20 @@ export declare const AI_MODELS: {
24
24
  /** Most capable — complex reasoning, long-form synthesis, multi-step planning. */
25
25
  readonly opus: "claude-opus-4-6";
26
26
  };
27
+ /**
28
+ * @description AI provider identifiers. Each provider maps model tiers
29
+ * (haiku/sonnet/opus) to its own model names automatically.
30
+ *
31
+ * - `anthropic` — Claude via Anthropic API (default)
32
+ * - `local` — Ollama on localhost (CPU/GPU inference)
33
+ * - `remote` — Ollama on a remote server (e.g. llm.bxl9000.com)
34
+ */
35
+ export type AiProvider = 'anthropic' | 'local' | 'remote';
36
+ /**
37
+ * @description Model tier mapping for Ollama providers. Maps Soulcraft's
38
+ * standard tiers to specific Ollama model tags.
39
+ */
40
+ export declare const OLLAMA_MODELS: Record<string, string>;
27
41
  /** A valid Soulcraft Claude model tier ID. */
28
42
  export type AiModel = typeof AI_MODELS[keyof typeof AI_MODELS] | string;
29
43
  /**
@@ -106,6 +120,26 @@ export interface AiCompleteOptions {
106
120
  * @default AI_MODELS.sonnet
107
121
  */
108
122
  model?: AiModel;
123
+ /**
124
+ * AI provider to use for this specific call. Overrides the default provider
125
+ * set via `AI_DEFAULT_PROVIDER` environment variable.
126
+ *
127
+ * - `'anthropic'` — Claude via Anthropic API (default)
128
+ * - `'local'` — Ollama on localhost (`AI_LOCAL_URL`, default `http://localhost:11434`)
129
+ * - `'remote'` — Ollama on a remote server (`AI_REMOTE_URL`)
130
+ *
131
+ * Enables mixing providers in a single workflow — e.g. Claude for planning,
132
+ * local models for fast execution tasks.
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * // Deep reasoning with Claude
137
+ * const plan = await ai.complete({ provider: 'anthropic', model: 'opus', messages })
138
+ * // Fast execution with local LLM
139
+ * const result = await ai.complete({ provider: 'local', model: 'haiku', messages })
140
+ * ```
141
+ */
142
+ provider?: AiProvider;
109
143
  /**
110
144
  * Tools available to Claude during this completion.
111
145
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/ai/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/ai/types.ts"],"names":[],"mappings":"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"}
@@ -27,4 +27,17 @@ export const AI_MODELS = {
27
27
  /** Most capable — complex reasoning, long-form synthesis, multi-step planning. */
28
28
  opus: 'claude-opus-4-6',
29
29
  };
30
+ /**
31
+ * @description Model tier mapping for Ollama providers. Maps Soulcraft's
32
+ * standard tiers to specific Ollama model tags.
33
+ */
34
+ export const OLLAMA_MODELS = {
35
+ 'claude-haiku-4-5-20251001': 'qwen2.5:7b',
36
+ 'claude-sonnet-4-6': 'qwen2.5:32b-instruct-q4_K_M',
37
+ 'claude-opus-4-6': 'llama3.1:70b',
38
+ // Also accept tier shortnames
39
+ haiku: 'qwen2.5:7b',
40
+ sonnet: 'qwen2.5:32b-instruct-q4_K_M',
41
+ opus: 'llama3.1:70b',
42
+ };
30
43
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/modules/ai/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,uEAAuE;IACvE,KAAK,EAAE,2BAA2B;IAClC,oEAAoE;IACpE,MAAM,EAAE,mBAAmB;IAC3B,kFAAkF;IAClF,IAAI,EAAE,iBAAiB;CACf,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/modules/ai/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,uEAAuE;IACvE,KAAK,EAAE,2BAA2B;IAClC,oEAAoE;IACpE,MAAM,EAAE,mBAAmB;IAC3B,kFAAkF;IAClF,IAAI,EAAE,iBAAiB;CACf,CAAA;AAYV;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,2BAA2B,EAAE,YAAY;IACzC,mBAAmB,EAAE,6BAA6B;IAClD,iBAAiB,EAAE,cAAc;IACjC,8BAA8B;IAC9B,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,6BAA6B;IACrC,IAAI,EAAE,cAAc;CACrB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soulcraft/sdk",
3
- "version": "3.5.0",
3
+ "version": "3.6.0",
4
4
  "description": "The unified Soulcraft platform SDK — data, auth, AI, billing, and notifications",
5
5
  "type": "module",
6
6
  "publishConfig": {