@nemesis-oss/ollama-sdk 1.8.0 → 1.9.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 (46) hide show
  1. package/CHANGELOG.md +158 -0
  2. package/README.md +181 -10
  3. package/dist/{anthropic-B_UXplNF.d.ts → anthropic-5oYIRS6D.d.ts} +4 -2
  4. package/dist/{anthropic-CVDFy_a0.d.cts → anthropic-BIh45UXj.d.cts} +4 -2
  5. package/dist/{compose-DLStUfaF.d.ts → compose-DCVYMvOL.d.ts} +1 -1
  6. package/dist/{compose-DS-UWFx8.d.cts → compose-Dj6FdF2n.d.cts} +1 -1
  7. package/dist/generated-api.cjs +42 -3
  8. package/dist/generated-api.cjs.map +1 -1
  9. package/dist/generated-api.d.cts +96 -6
  10. package/dist/generated-api.d.ts +96 -6
  11. package/dist/generated-api.js +41 -4
  12. package/dist/generated-api.js.map +1 -1
  13. package/dist/generated-models-schemas.cjs +62 -2
  14. package/dist/generated-models-schemas.cjs.map +1 -1
  15. package/dist/generated-models-schemas.d.cts +108 -3
  16. package/dist/generated-models-schemas.d.ts +108 -3
  17. package/dist/generated-models-schemas.js +56 -3
  18. package/dist/generated-models-schemas.js.map +1 -1
  19. package/dist/generated-runtime.cjs +105 -5
  20. package/dist/generated-runtime.cjs.map +1 -1
  21. package/dist/generated-runtime.d.cts +2 -2
  22. package/dist/generated-runtime.d.ts +2 -2
  23. package/dist/generated-runtime.js +105 -5
  24. package/dist/generated-runtime.js.map +1 -1
  25. package/dist/index.cjs +1384 -51
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +1312 -14
  28. package/dist/index.d.ts +1312 -14
  29. package/dist/index.js +1352 -52
  30. package/dist/index.js.map +1 -1
  31. package/dist/mcp/tools.json +43 -24
  32. package/dist/mcp-generated.cjs +43 -1
  33. package/dist/mcp-generated.cjs.map +1 -1
  34. package/dist/mcp-generated.d.cts +2 -2
  35. package/dist/mcp-generated.d.ts +2 -2
  36. package/dist/mcp-generated.js +43 -1
  37. package/dist/mcp-generated.js.map +1 -1
  38. package/dist/{runtime-C6UYtBRB.d.ts → runtime-C3rfpkZw.d.ts} +69 -2
  39. package/dist/{runtime-DTmUeU6K.d.cts → runtime-D2W9TfCJ.d.cts} +69 -2
  40. package/dist/skills.cjs.map +1 -1
  41. package/dist/skills.d.cts +3 -3
  42. package/dist/skills.d.ts +3 -3
  43. package/dist/skills.js.map +1 -1
  44. package/dist/{types-5PAjLoCp.d.cts → types-DVcX_zMp.d.cts} +110 -10
  45. package/dist/{types-5PAjLoCp.d.ts → types-DVcX_zMp.d.ts} +110 -10
  46. package/package.json +8 -5
@@ -1,6 +1,24 @@
1
1
  {
2
2
  "_comment": "AUTO-GENERATED by `npm run contract:generate`. DO NOT EDIT. Source: contracts/ir/ollama.ir.json.",
3
3
  "tools": [
4
+ {
5
+ "name": "ollama_balance",
6
+ "description": "Ollama GET /api/balance (native domain)\n\n- Cloud-only account endpoint — targets https://ollama.com, not the local Ollama server.\n- Requires an Ollama Cloud API key (set via OllamaClient credentials).\n- Takes no parameters. For usage history see the usage operation.\n- Rate limited to 10 requests/minute per user; 429 responses carry a Retry-After header.\n- Use OllamaClient.balance() — the generated NativeApi class does not expose this operation.",
7
+ "inputSchema": {
8
+ "type": "object",
9
+ "properties": {},
10
+ "additionalProperties": false,
11
+ "description": "GET /api/balance takes no request body."
12
+ },
13
+ "annotations": {
14
+ "title": "balance (Ollama)",
15
+ "readOnlyHint": true,
16
+ "destructiveHint": false,
17
+ "idempotentHint": true,
18
+ "openWorldHint": false
19
+ },
20
+ "_operationId": "balance"
21
+ },
4
22
  {
5
23
  "name": "ollama_blobs",
6
24
  "description": "Ollama HEAD /api/blobs/{digest} (native domain)\n\n- HEAD-only endpoint for blob existence checks; declared in OpenAPI but not in the legacy parity manifest.",
@@ -390,6 +408,13 @@
390
408
  "type": "string",
391
409
  "description": "Minimum Ollama version required by the model"
392
410
  },
411
+ "capabilities": {
412
+ "type": "array",
413
+ "items": {
414
+ "type": "string"
415
+ },
416
+ "description": "Capabilities to add without removing inherited or inferred capabilities (e.g. `decision` for compatible decision models)"
417
+ },
393
418
  "stream": {
394
419
  "type": "boolean",
395
420
  "default": true,
@@ -406,30 +431,6 @@
406
431
  },
407
432
  "_operationId": "create"
408
433
  },
409
- {
410
- "name": "ollama_createBlob",
411
- "description": "Ollama POST /api/blobs/{digest} (native domain)\n\n- POST endpoint for blob creation; takes a binary body (application/octet-stream).\n- Handled by OllamaClient.createBlob() — the generated NativeApi does not expose this operation because the runtime JSON-encodes request bodies.",
412
- "inputSchema": {
413
- "type": "object",
414
- "properties": {
415
- "digest": {
416
- "type": "string",
417
- "description": "path parameter: digest"
418
- }
419
- },
420
- "required": ["digest"],
421
- "additionalProperties": false,
422
- "description": "POST /api/blobs/{digest} — 1 parameter."
423
- },
424
- "annotations": {
425
- "title": "createBlob (Ollama)",
426
- "readOnlyHint": false,
427
- "destructiveHint": false,
428
- "idempotentHint": false,
429
- "openWorldHint": false
430
- },
431
- "_operationId": "createBlob"
432
- },
433
434
  {
434
435
  "name": "ollama_delete",
435
436
  "description": "Ollama DELETE /api/delete (native domain)",
@@ -1015,6 +1016,24 @@
1015
1016
  },
1016
1017
  "_operationId": "tags"
1017
1018
  },
1019
+ {
1020
+ "name": "ollama_usage",
1021
+ "description": "Ollama GET /api/usage (native domain)\n\n- Cloud-only account endpoint — targets https://ollama.com, not the local Ollama server.\n- Requires an Ollama Cloud API key (set via OllamaClient credentials).\n- Query parameters (not modeled by the generated runtime): range = 24h | 7d | 30d (server default 7d), scope = self | team (server default self; team scope requires a team admin).\n- Rate limited to 10 requests/minute per user; 429 responses carry a Retry-After header.\n- Use OllamaClient.usage() — the generated NativeApi class does not expose this operation.",
1022
+ "inputSchema": {
1023
+ "type": "object",
1024
+ "properties": {},
1025
+ "additionalProperties": false,
1026
+ "description": "GET /api/usage takes no request body."
1027
+ },
1028
+ "annotations": {
1029
+ "title": "usage (Ollama)",
1030
+ "readOnlyHint": true,
1031
+ "destructiveHint": false,
1032
+ "idempotentHint": true,
1033
+ "openWorldHint": false
1034
+ },
1035
+ "_operationId": "usage"
1036
+ },
1018
1037
  {
1019
1038
  "name": "ollama_version",
1020
1039
  "description": "Ollama GET /api/version (native domain)",
@@ -20,6 +20,7 @@ var operations_exports = {};
20
20
  __export(operations_exports, {
21
21
  allOperations: () => allOperations,
22
22
  anthropicMessagesOp: () => anthropicMessagesOp,
23
+ balanceOp: () => balanceOp,
23
24
  blobsOp: () => blobsOp,
24
25
  chatOp: () => chatOp,
25
26
  copyOp: () => copyOp,
@@ -40,13 +41,33 @@ __export(operations_exports, {
40
41
  showOp: () => showOp,
41
42
  systemOneOp: () => systemOneOp,
42
43
  tagsOp: () => tagsOp,
44
+ usageOp: () => usageOp,
43
45
  versionOp: () => versionOp,
44
46
  webFetchOp: () => webFetchOp,
45
47
  webSearchOp: () => webSearchOp
46
48
  });
47
- var blobsOp, chatOp, copyOp, createOp, createBlobOp, deleteOp, embedOp, generateOp, psOp, pullOp, pushOp, showOp, systemOneOp, tagsOp, versionOp, webFetchOp, webSearchOp, openaiChatCompletionsOp, openaiCompletionsOp, openaiEmbeddingsOp, openaiModelsOp, openaiModelsGetOneOp, openaiResponsesOp, anthropicMessagesOp, allOperations;
49
+ var balanceOp, blobsOp, chatOp, copyOp, createOp, createBlobOp, deleteOp, embedOp, generateOp, psOp, pullOp, pushOp, showOp, systemOneOp, tagsOp, usageOp, versionOp, webFetchOp, webSearchOp, openaiChatCompletionsOp, openaiCompletionsOp, openaiEmbeddingsOp, openaiModelsOp, openaiModelsGetOneOp, openaiResponsesOp, anthropicMessagesOp, allOperations;
48
50
  var init_operations = __esm({
49
51
  "src/generated/api/operations.ts"() {
52
+ balanceOp = {
53
+ operationId: "balance",
54
+ method: "GET",
55
+ path: "/api/balance",
56
+ response: { $ref: "#/schemas/BalanceResponse" },
57
+ environment: { local: false, cloud: true },
58
+ host: "https://ollama.com",
59
+ transport: { mode: "json", streaming: false },
60
+ capabilities: {},
61
+ status: { documented: true },
62
+ domain: "native",
63
+ notes: [
64
+ "Cloud-only account endpoint \u2014 targets https://ollama.com, not the local Ollama server.",
65
+ "Requires an Ollama Cloud API key (set via OllamaClient credentials).",
66
+ "Takes no parameters. For usage history see the usage operation.",
67
+ "Rate limited to 10 requests/minute per user; 429 responses carry a Retry-After header.",
68
+ "Use OllamaClient.balance() \u2014 the generated NativeApi class does not expose this operation."
69
+ ]
70
+ };
50
71
  blobsOp = {
51
72
  operationId: "blobs",
52
73
  method: "HEAD",
@@ -254,6 +275,25 @@ var init_operations = __esm({
254
275
  status: { documented: true },
255
276
  domain: "native"
256
277
  };
278
+ usageOp = {
279
+ operationId: "usage",
280
+ method: "GET",
281
+ path: "/api/usage",
282
+ response: { $ref: "#/schemas/UsageResponse" },
283
+ environment: { local: false, cloud: true },
284
+ host: "https://ollama.com",
285
+ transport: { mode: "json", streaming: false },
286
+ capabilities: {},
287
+ status: { documented: true },
288
+ domain: "native",
289
+ notes: [
290
+ "Cloud-only account endpoint \u2014 targets https://ollama.com, not the local Ollama server.",
291
+ "Requires an Ollama Cloud API key (set via OllamaClient credentials).",
292
+ "Query parameters (not modeled by the generated runtime): range = 24h | 7d | 30d (server default 7d), scope = self | team (server default self; team scope requires a team admin).",
293
+ "Rate limited to 10 requests/minute per user; 429 responses carry a Retry-After header.",
294
+ "Use OllamaClient.usage() \u2014 the generated NativeApi class does not expose this operation."
295
+ ]
296
+ };
257
297
  versionOp = {
258
298
  operationId: "version",
259
299
  method: "GET",
@@ -390,6 +430,7 @@ var init_operations = __esm({
390
430
  ]
391
431
  };
392
432
  allOperations = [
433
+ balanceOp,
393
434
  blobsOp,
394
435
  chatOp,
395
436
  copyOp,
@@ -404,6 +445,7 @@ var init_operations = __esm({
404
445
  showOp,
405
446
  systemOneOp,
406
447
  tagsOp,
448
+ usageOp,
407
449
  versionOp,
408
450
  webFetchOp,
409
451
  webSearchOp,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/generated/api/operations.ts","../src/mcp/generated-bridge.ts"],"names":["dirname","fileURLToPath","resolve","readFileSync"],"mappings":"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","file":"mcp-generated.cjs","sourcesContent":["/**\n * AUTO-GENERATED by `npm run contract:generate`. DO NOT EDIT.\n * Source: contracts/ir/ollama.ir.json (canonical Ollama IR).\n * Each OperationDefinition captures what Ollama exposes; the runtime\n * in src/generated/runtime/runtime.ts captures how the SDK behaves.\n */\n\nimport type { OperationDefinition } from '../runtime/operation-definition.js';\n\nexport const blobsOp = {\n operationId: 'blobs',\n method: 'HEAD',\n path: '/api/blobs/{digest}',\n environment: { local: true, cloud: false },\n parameters: [{ name: 'digest', in: 'path', required: true, schema: { type: 'string' } }],\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'HEAD-only endpoint for blob existence checks; declared in OpenAPI but not in the legacy parity manifest.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const chatOp = {\n operationId: 'chat',\n method: 'POST',\n path: '/api/chat',\n request: { $ref: '#/schemas/ChatRequest' },\n response: { $ref: '#/schemas/ChatResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'ndjson', streaming: true, streamingDefault: true },\n capabilities: {\n thinking: 'model-dependent',\n tools: 'model-dependent',\n vision: 'model-dependent',\n structuredOutput: 'supported',\n logprobs: 'supported',\n },\n status: { documented: true },\n domain: 'native',\n notes: [\n 'Use /api/show to discover model-specific thinking values and defaults.',\n 'Structured output (format field) is rejected by Ollama Cloud.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const copyOp = {\n operationId: 'copy',\n method: 'POST',\n path: '/api/copy',\n request: { $ref: '#/schemas/CopyRequest' },\n environment: { local: true, cloud: false },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const createOp = {\n operationId: 'create',\n method: 'POST',\n path: '/api/create',\n request: { $ref: '#/schemas/CreateRequest' },\n response: { $ref: '#/schemas/StatusResponse' },\n environment: { local: true, cloud: false },\n transport: { mode: 'ndjson', streaming: true, streamingDefault: true },\n capabilities: { thinking: 'unsupported', tools: 'unsupported' },\n status: { documented: true },\n domain: 'native',\n notes: ['Model creation is local-only; Ollama Cloud does not support it.'],\n} as const satisfies OperationDefinition;\n\nexport const createBlobOp = {\n operationId: 'createBlob',\n method: 'POST',\n path: '/api/blobs/{digest}',\n environment: { local: true, cloud: false },\n parameters: [{ name: 'digest', in: 'path', required: true, schema: { type: 'string' } }],\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'POST endpoint for blob creation; takes a binary body (application/octet-stream).',\n 'Handled by OllamaClient.createBlob() — the generated NativeApi does not expose this operation because the runtime JSON-encodes request bodies.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const deleteOp = {\n operationId: 'delete',\n method: 'DELETE',\n path: '/api/delete',\n request: { $ref: '#/schemas/DeleteRequest' },\n environment: { local: true, cloud: false },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const embedOp = {\n operationId: 'embed',\n method: 'POST',\n path: '/api/embed',\n request: { $ref: '#/schemas/EmbedRequest' },\n response: { $ref: '#/schemas/EmbedResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: { embeddings: 'supported' },\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const generateOp = {\n operationId: 'generate',\n method: 'POST',\n path: '/api/generate',\n request: { $ref: '#/schemas/GenerateRequest' },\n response: { $ref: '#/schemas/GenerateResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'ndjson', streaming: true, streamingDefault: true },\n capabilities: {\n thinking: 'model-dependent',\n vision: 'supported',\n structuredOutput: 'supported',\n logprobs: 'supported',\n },\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const psOp = {\n operationId: 'ps',\n method: 'GET',\n path: '/api/ps',\n response: { $ref: '#/schemas/PsResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const pullOp = {\n operationId: 'pull',\n method: 'POST',\n path: '/api/pull',\n request: { $ref: '#/schemas/PullRequest' },\n response: { $ref: '#/schemas/StatusResponse' },\n environment: { local: true, cloud: false },\n transport: { mode: 'ndjson', streaming: true, streamingDefault: true },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const pushOp = {\n operationId: 'push',\n method: 'POST',\n path: '/api/push',\n request: { $ref: '#/schemas/PushRequest' },\n response: { $ref: '#/schemas/StatusResponse' },\n environment: { local: true, cloud: false },\n transport: { mode: 'ndjson', streaming: true, streamingDefault: true },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const showOp = {\n operationId: 'show',\n method: 'POST',\n path: '/api/show',\n request: { $ref: '#/schemas/ShowRequest' },\n response: { $ref: '#/schemas/ShowResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'Capabilities source: /api/show is the runtime source of truth for model-dependent capability values (tools, vision, thinking, embeddings).',\n ],\n} as const satisfies OperationDefinition;\n\nexport const systemOneOp = {\n operationId: 'systemOne',\n method: 'POST',\n path: '/v1/systemone',\n request: { $ref: '#/schemas/SystemOneRequest' },\n response: { $ref: '#/schemas/SystemOneResponse' },\n environment: { local: true, cloud: false },\n transport: { mode: 'json', streaming: false },\n capabilities: {\n thinking: 'unsupported',\n tools: 'unsupported',\n vision: 'model-dependent',\n structuredOutput: 'unsupported',\n logprobs: 'unsupported',\n embeddings: 'unsupported',\n },\n constraints: {\n minOllamaVersion: '0.35.0',\n maxRequestBytes: 65536,\n maxRequestBytesWithImages: 33554432,\n },\n status: { documented: true, experimental: true },\n domain: 'native',\n notes: [\n 'Local-only; Ollama Cloud rejects /v1/systemone.',\n '64 KiB request limit without images, 32 MiB with images (includes JSON/base64 overhead).',\n 'No tools, no generation controls (temperature, top_p, etc.).',\n 'Vision is model-dependent: images are accepted by vision-weighted models (Clef/Clef Flash) but not by text-only models.',\n 'Experimental: behavioral surface may change between Ollama releases.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const tagsOp = {\n operationId: 'tags',\n method: 'GET',\n path: '/api/tags',\n response: { $ref: '#/schemas/ListResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const versionOp = {\n operationId: 'version',\n method: 'GET',\n path: '/api/version',\n response: { $ref: '#/schemas/VersionResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const webFetchOp = {\n operationId: 'webFetch',\n method: 'POST',\n path: '/api/web_fetch',\n request: { $ref: '#/schemas/WebFetchRequest' },\n response: { $ref: '#/schemas/WebFetchResponse' },\n environment: { local: false, cloud: true },\n host: 'https://ollama.com',\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'Cloud-only capability endpoint — targets https://ollama.com, not the local Ollama server.',\n 'Requires an Ollama Cloud API key (set via OllamaClient credentials).',\n 'Use OllamaClient.webFetch() — the generated NativeApi class does not expose this operation.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const webSearchOp = {\n operationId: 'webSearch',\n method: 'POST',\n path: '/api/web_search',\n request: { $ref: '#/schemas/WebSearchRequest' },\n response: { $ref: '#/schemas/WebSearchResponse' },\n environment: { local: false, cloud: true },\n host: 'https://ollama.com',\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'Cloud-only capability endpoint — targets https://ollama.com, not the local Ollama server.',\n 'Requires an Ollama Cloud API key (set via OllamaClient credentials).',\n 'Use OllamaClient.webSearch() — the generated NativeApi class does not expose this operation.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const openaiChatCompletionsOp = {\n operationId: 'openaiChatCompletions',\n method: 'POST',\n path: '/v1/chat/completions',\n environment: { local: true, cloud: true },\n transport: { mode: 'sse', streaming: true, streamingDefault: false },\n capabilities: {\n thinking: 'model-dependent',\n tools: 'model-dependent',\n vision: 'model-dependent',\n structuredOutput: 'supported',\n logprobs: 'supported',\n },\n status: { documented: true },\n domain: 'openai',\n notes: [\n 'Ollama exposes a subset of the OpenAI Chat Completions request fields; see docs/upstream/ollama-openai-compatibility.mdx.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const openaiCompletionsOp = {\n operationId: 'openaiCompletions',\n method: 'POST',\n path: '/v1/completions',\n environment: { local: true, cloud: true },\n transport: { mode: 'sse', streaming: true, streamingDefault: false },\n capabilities: { logprobs: 'supported' },\n status: { documented: true },\n domain: 'openai',\n} as const satisfies OperationDefinition;\n\nexport const openaiEmbeddingsOp = {\n operationId: 'openaiEmbeddings',\n method: 'POST',\n path: '/v1/embeddings',\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: { embeddings: 'supported' },\n status: { documented: true },\n domain: 'openai',\n} as const satisfies OperationDefinition;\n\nexport const openaiModelsOp = {\n operationId: 'openaiModels',\n method: 'GET',\n path: '/v1/models',\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'openai',\n} as const satisfies OperationDefinition;\n\nexport const openaiModelsGetOneOp = {\n operationId: 'openaiModelsGetOne',\n method: 'GET',\n path: '/v1/models/{model}',\n environment: { local: true, cloud: true },\n parameters: [{ name: 'model', in: 'path', required: true, schema: { type: 'string' } }],\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'openai',\n notes: ['Returns metadata for a single OpenAI-compat model by id.'],\n} as const satisfies OperationDefinition;\n\nexport const openaiResponsesOp = {\n operationId: 'openaiResponses',\n method: 'POST',\n path: '/v1/responses',\n environment: { local: true, cloud: true },\n transport: { mode: 'sse', streaming: true, streamingDefault: false },\n capabilities: { thinking: 'model-dependent', tools: 'model-dependent' },\n status: { documented: true },\n domain: 'openai',\n notes: [\n 'Ollama implements a subset of the OpenAI Responses API; previous_response_id and conversation are explicitly unsupported.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const anthropicMessagesOp = {\n operationId: 'anthropicMessages',\n method: 'POST',\n path: '/v1/messages',\n environment: { local: true, cloud: true },\n transport: { mode: 'sse', streaming: true, streamingDefault: false },\n capabilities: { thinking: 'model-dependent', tools: 'model-dependent' },\n status: { documented: true },\n domain: 'anthropic',\n notes: [\n \"tool_choice and metadata are explicitly unsupported by Ollama's Anthropic compat layer.\",\n 'Nested cache_control fields under messages[].content[].cache_control are unsupported.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const allOperations = [\n blobsOp,\n chatOp,\n copyOp,\n createOp,\n createBlobOp,\n deleteOp,\n embedOp,\n generateOp,\n psOp,\n pullOp,\n pushOp,\n showOp,\n systemOneOp,\n tagsOp,\n versionOp,\n webFetchOp,\n webSearchOp,\n openaiChatCompletionsOp,\n openaiCompletionsOp,\n openaiEmbeddingsOp,\n openaiModelsOp,\n openaiModelsGetOneOp,\n openaiResponsesOp,\n anthropicMessagesOp,\n] as const;\n","/**\n * Generated Ollama MCP tools — runtime adapter.\n *\n * Reads the descriptor list from `src/generated/mcp/tools.json` (the Wave 6\n * MCP emitter output) and exposes them as a `McpToolDescriptor[]` that\n * `McpBridge` can register. The actual call execution delegates to the\n * generated `OllamaRuntime` via the user-provided runtime instance.\n *\n * Usage:\n * ```ts\n * import { NativeApi, OllamaRuntime } from '@nemesis-oss/ollama-sdk/runtime';\n * import { createGeneratedOllamaTools } from '@nemesis-oss/ollama-sdk/mcp/generated';\n *\n * const runtime = new OllamaRuntime({ http });\n * const tools = createGeneratedOllamaTools(runtime);\n * bridge.registerTools(tools);\n * ```\n *\n * This is a Wave 6 opt-in feature — the existing McpBridge continues to work\n * unchanged. Users who want generated MCP tools import this adapter\n * explicitly.\n */\nimport { readFileSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport { resolve, dirname } from 'node:path';\nimport type { McpToolDescriptor } from './types.js';\nimport { OllamaRuntime } from '../generated/runtime/runtime.js';\nimport type { OperationDefinition } from '../generated/runtime/operation-definition.js';\n\ninterface GeneratedToolEntry extends McpToolDescriptor {\n readonly _operationId: string;\n}\n\ninterface GeneratedToolsFile {\n readonly _comment?: string;\n readonly tools: readonly GeneratedToolEntry[];\n}\n\n/**\n * Resolve the path to `tools.json` across runtime environments:\n *\n * - **In source (development):** `src/generated/mcp/tools.json`\n * - **In the published tarball:** `dist/mcp/tools.json` (copied by tsup's\n * `onSuccess` hook; see tsup.config.ts)\n *\n * The dist bundle is at `dist/mcp-generated.js`, so the JSON sits two\n * directories up + into `mcp/`. The source file is at\n * `src/mcp/generated-bridge.ts`, so the JSON sits one directory up +\n * into `generated/mcp/`.\n */\nconst HERE = dirname(fileURLToPath(import.meta.url));\nconst TOOLS_JSON_PATH = (() => {\n // Try the source layout first (development), then fall back to the dist\n // layout (published). The order matters because in a tsx-run dev env\n // we may be executing from `src/mcp/generated-bridge.ts`, but in a\n // consumer install we're at `dist/mcp-generated.js`.\n const candidates = [\n resolve(HERE, '../generated/mcp/tools.json'), // source layout\n resolve(HERE, 'mcp/tools.json'), // dist layout (next to mcp-generated.js)\n resolve(HERE, '../mcp/tools.json'), // alt dist layout (sibling of bundled dir)\n ];\n for (const candidate of candidates) {\n try {\n readFileSync(candidate, 'utf8');\n return candidate;\n } catch {\n // try next candidate\n }\n }\n // Fall back to the source-layout path; the error will surface with a\n // clearer message when the loader is actually invoked.\n return candidates[0] ?? resolve(HERE, '../generated/mcp/tools.json');\n})();\n\nlet cachedTools: readonly GeneratedToolEntry[] | undefined;\n\n/** Load and cache the generated tool descriptors from tools.json. */\nexport function loadGeneratedOllamaTools(): readonly GeneratedToolEntry[] {\n if (cachedTools) return cachedTools;\n const raw = readFileSync(TOOLS_JSON_PATH, 'utf8');\n const parsed = JSON.parse(raw) as GeneratedToolsFile;\n cachedTools = parsed.tools;\n return cachedTools;\n}\n\n/** Drop the `_operationId` field before exposing the descriptor externally. */\nfunction publicDescriptor(entry: GeneratedToolEntry): McpToolDescriptor {\n const { _operationId, ...rest } = entry;\n void _operationId;\n return rest;\n}\n\n/**\n * Build a list of MCP tool descriptors for the generated Ollama operations.\n * Each tool can be invoked by name via {@link callGeneratedOllamaTool}.\n *\n * The descriptors are read once and cached for the lifetime of the process.\n */\nexport function listGeneratedOllamaTools(): readonly McpToolDescriptor[] {\n return loadGeneratedOllamaTools().map(publicDescriptor);\n}\n\n/**\n * Invoke a generated tool by name. The `name` must match a tool from\n * {@link listGeneratedOllamaTools}.\n *\n * Returns a `McpCallToolResult` containing the structured response. The\n * caller (typically `McpBridge`) is responsible for serializing the result\n * back over the MCP transport.\n */\nexport async function callGeneratedOllamaTool(\n runtime: OllamaRuntime,\n name: string,\n args: Record<string, unknown>,\n options?: { signal?: AbortSignal },\n): Promise<{ content: readonly { type: 'text'; text: string }[]; structuredContent: unknown }> {\n const tools = loadGeneratedOllamaTools();\n const entry = tools.find((t) => t.name === name);\n if (!entry) {\n return {\n content: [{ type: 'text', text: `Unknown tool: ${name}` }],\n structuredContent: { error: 'unknown_tool', name },\n };\n }\n\n // Look up the operation in the IR by id. We re-import the operations\n // module to avoid a circular dependency at module-load time.\n const operations = await import('../generated/api/operations.js');\n const opKey = `${entry._operationId}Op` as keyof typeof operations;\n const operation = operations[opKey] as OperationDefinition | undefined;\n if (!operation || typeof operation !== 'object' || !('operationId' in operation)) {\n return {\n content: [{ type: 'text', text: `Operation not found for ${name}` }],\n structuredContent: { error: 'operation_not_found', name },\n };\n }\n\n try {\n // Wave 15 (P0): split path/query/header parameters from the request\n // body. The MCP input schema may declare path parameters (e.g. `model`\n // for /v1/models/{model}) — those must be passed as `pathParams` to\n // the runtime, not put in the request body. The operation's\n // `parameters` field tells us which args are path/query/header vs body.\n const opParams = operation.parameters ?? [];\n const pathParams: Record<string, string> = {};\n const queryParams: Record<string, string> = {};\n const headerParams: Record<string, string> = {};\n const bodyArgs: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(args)) {\n const paramDef = opParams.find((p) => p.name === key);\n if (paramDef) {\n if (paramDef.in === 'path') {\n pathParams[key] = String(value);\n } else if (paramDef.in === 'query') {\n queryParams[key] = String(value);\n } else if (paramDef.in === 'header') {\n headerParams[key] = String(value);\n }\n } else {\n // Not a declared parameter → goes in the request body.\n bodyArgs[key] = value;\n }\n }\n\n const hasBody = Object.keys(bodyArgs).length > 0;\n const result = await runtime.invoke<unknown>({\n operation,\n body: hasBody ? bodyArgs : undefined,\n ...(Object.keys(pathParams).length > 0 ? { pathParams } : {}),\n ...(Object.keys(queryParams).length > 0 ? { queryParams } : {}),\n ...(Object.keys(headerParams).length > 0 ? { headerParams } : {}),\n ...(options?.signal !== undefined ? { signal: options.signal } : {}),\n });\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n structuredContent: result,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n content: [{ type: 'text', text: `Ollama tool ${name} failed: ${message}` }],\n structuredContent: { error: 'tool_failed', name, message },\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/generated/api/operations.ts","../src/mcp/generated-bridge.ts"],"names":["dirname","fileURLToPath","resolve","readFileSync"],"mappings":"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","file":"mcp-generated.cjs","sourcesContent":["/**\n * AUTO-GENERATED by `npm run contract:generate`. DO NOT EDIT.\n * Source: contracts/ir/ollama.ir.json (canonical Ollama IR).\n * Each OperationDefinition captures what Ollama exposes; the runtime\n * in src/generated/runtime/runtime.ts captures how the SDK behaves.\n */\n\nimport type { OperationDefinition } from '../runtime/operation-definition.js';\n\nexport const balanceOp = {\n operationId: 'balance',\n method: 'GET',\n path: '/api/balance',\n response: { $ref: '#/schemas/BalanceResponse' },\n environment: { local: false, cloud: true },\n host: 'https://ollama.com',\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'Cloud-only account endpoint — targets https://ollama.com, not the local Ollama server.',\n 'Requires an Ollama Cloud API key (set via OllamaClient credentials).',\n 'Takes no parameters. For usage history see the usage operation.',\n 'Rate limited to 10 requests/minute per user; 429 responses carry a Retry-After header.',\n 'Use OllamaClient.balance() — the generated NativeApi class does not expose this operation.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const blobsOp = {\n operationId: 'blobs',\n method: 'HEAD',\n path: '/api/blobs/{digest}',\n environment: { local: true, cloud: false },\n parameters: [{ name: 'digest', in: 'path', required: true, schema: { type: 'string' } }],\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'HEAD-only endpoint for blob existence checks; declared in OpenAPI but not in the legacy parity manifest.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const chatOp = {\n operationId: 'chat',\n method: 'POST',\n path: '/api/chat',\n request: { $ref: '#/schemas/ChatRequest' },\n response: { $ref: '#/schemas/ChatResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'ndjson', streaming: true, streamingDefault: true },\n capabilities: {\n thinking: 'model-dependent',\n tools: 'model-dependent',\n vision: 'model-dependent',\n structuredOutput: 'supported',\n logprobs: 'supported',\n },\n status: { documented: true },\n domain: 'native',\n notes: [\n 'Use /api/show to discover model-specific thinking values and defaults.',\n 'Structured output (format field) is rejected by Ollama Cloud.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const copyOp = {\n operationId: 'copy',\n method: 'POST',\n path: '/api/copy',\n request: { $ref: '#/schemas/CopyRequest' },\n environment: { local: true, cloud: false },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const createOp = {\n operationId: 'create',\n method: 'POST',\n path: '/api/create',\n request: { $ref: '#/schemas/CreateRequest' },\n response: { $ref: '#/schemas/StatusResponse' },\n environment: { local: true, cloud: false },\n transport: { mode: 'ndjson', streaming: true, streamingDefault: true },\n capabilities: { thinking: 'unsupported', tools: 'unsupported' },\n status: { documented: true },\n domain: 'native',\n notes: ['Model creation is local-only; Ollama Cloud does not support it.'],\n} as const satisfies OperationDefinition;\n\nexport const createBlobOp = {\n operationId: 'createBlob',\n method: 'POST',\n path: '/api/blobs/{digest}',\n environment: { local: true, cloud: false },\n parameters: [{ name: 'digest', in: 'path', required: true, schema: { type: 'string' } }],\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'POST endpoint for blob creation; takes a binary body (application/octet-stream).',\n 'Handled by OllamaClient.createBlob() — the generated NativeApi does not expose this operation because the runtime JSON-encodes request bodies.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const deleteOp = {\n operationId: 'delete',\n method: 'DELETE',\n path: '/api/delete',\n request: { $ref: '#/schemas/DeleteRequest' },\n environment: { local: true, cloud: false },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const embedOp = {\n operationId: 'embed',\n method: 'POST',\n path: '/api/embed',\n request: { $ref: '#/schemas/EmbedRequest' },\n response: { $ref: '#/schemas/EmbedResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: { embeddings: 'supported' },\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const generateOp = {\n operationId: 'generate',\n method: 'POST',\n path: '/api/generate',\n request: { $ref: '#/schemas/GenerateRequest' },\n response: { $ref: '#/schemas/GenerateResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'ndjson', streaming: true, streamingDefault: true },\n capabilities: {\n thinking: 'model-dependent',\n vision: 'supported',\n structuredOutput: 'supported',\n logprobs: 'supported',\n },\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const psOp = {\n operationId: 'ps',\n method: 'GET',\n path: '/api/ps',\n response: { $ref: '#/schemas/PsResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const pullOp = {\n operationId: 'pull',\n method: 'POST',\n path: '/api/pull',\n request: { $ref: '#/schemas/PullRequest' },\n response: { $ref: '#/schemas/StatusResponse' },\n environment: { local: true, cloud: false },\n transport: { mode: 'ndjson', streaming: true, streamingDefault: true },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const pushOp = {\n operationId: 'push',\n method: 'POST',\n path: '/api/push',\n request: { $ref: '#/schemas/PushRequest' },\n response: { $ref: '#/schemas/StatusResponse' },\n environment: { local: true, cloud: false },\n transport: { mode: 'ndjson', streaming: true, streamingDefault: true },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const showOp = {\n operationId: 'show',\n method: 'POST',\n path: '/api/show',\n request: { $ref: '#/schemas/ShowRequest' },\n response: { $ref: '#/schemas/ShowResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'Capabilities source: /api/show is the runtime source of truth for model-dependent capability values (tools, vision, thinking, embeddings).',\n ],\n} as const satisfies OperationDefinition;\n\nexport const systemOneOp = {\n operationId: 'systemOne',\n method: 'POST',\n path: '/v1/systemone',\n request: { $ref: '#/schemas/SystemOneRequest' },\n response: { $ref: '#/schemas/SystemOneResponse' },\n environment: { local: true, cloud: false },\n transport: { mode: 'json', streaming: false },\n capabilities: {\n thinking: 'unsupported',\n tools: 'unsupported',\n vision: 'model-dependent',\n structuredOutput: 'unsupported',\n logprobs: 'unsupported',\n embeddings: 'unsupported',\n },\n constraints: {\n minOllamaVersion: '0.35.0',\n maxRequestBytes: 65536,\n maxRequestBytesWithImages: 33554432,\n },\n status: { documented: true, experimental: true },\n domain: 'native',\n notes: [\n 'Local-only; Ollama Cloud rejects /v1/systemone.',\n '64 KiB request limit without images, 32 MiB with images (includes JSON/base64 overhead).',\n 'No tools, no generation controls (temperature, top_p, etc.).',\n 'Vision is model-dependent: images are accepted by vision-weighted models (Clef/Clef Flash) but not by text-only models.',\n 'Experimental: behavioral surface may change between Ollama releases.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const tagsOp = {\n operationId: 'tags',\n method: 'GET',\n path: '/api/tags',\n response: { $ref: '#/schemas/ListResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const usageOp = {\n operationId: 'usage',\n method: 'GET',\n path: '/api/usage',\n response: { $ref: '#/schemas/UsageResponse' },\n environment: { local: false, cloud: true },\n host: 'https://ollama.com',\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'Cloud-only account endpoint — targets https://ollama.com, not the local Ollama server.',\n 'Requires an Ollama Cloud API key (set via OllamaClient credentials).',\n 'Query parameters (not modeled by the generated runtime): range = 24h | 7d | 30d (server default 7d), scope = self | team (server default self; team scope requires a team admin).',\n 'Rate limited to 10 requests/minute per user; 429 responses carry a Retry-After header.',\n 'Use OllamaClient.usage() — the generated NativeApi class does not expose this operation.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const versionOp = {\n operationId: 'version',\n method: 'GET',\n path: '/api/version',\n response: { $ref: '#/schemas/VersionResponse' },\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n} as const satisfies OperationDefinition;\n\nexport const webFetchOp = {\n operationId: 'webFetch',\n method: 'POST',\n path: '/api/web_fetch',\n request: { $ref: '#/schemas/WebFetchRequest' },\n response: { $ref: '#/schemas/WebFetchResponse' },\n environment: { local: false, cloud: true },\n host: 'https://ollama.com',\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'Cloud-only capability endpoint — targets https://ollama.com, not the local Ollama server.',\n 'Requires an Ollama Cloud API key (set via OllamaClient credentials).',\n 'Use OllamaClient.webFetch() — the generated NativeApi class does not expose this operation.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const webSearchOp = {\n operationId: 'webSearch',\n method: 'POST',\n path: '/api/web_search',\n request: { $ref: '#/schemas/WebSearchRequest' },\n response: { $ref: '#/schemas/WebSearchResponse' },\n environment: { local: false, cloud: true },\n host: 'https://ollama.com',\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'native',\n notes: [\n 'Cloud-only capability endpoint — targets https://ollama.com, not the local Ollama server.',\n 'Requires an Ollama Cloud API key (set via OllamaClient credentials).',\n 'Use OllamaClient.webSearch() — the generated NativeApi class does not expose this operation.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const openaiChatCompletionsOp = {\n operationId: 'openaiChatCompletions',\n method: 'POST',\n path: '/v1/chat/completions',\n environment: { local: true, cloud: true },\n transport: { mode: 'sse', streaming: true, streamingDefault: false },\n capabilities: {\n thinking: 'model-dependent',\n tools: 'model-dependent',\n vision: 'model-dependent',\n structuredOutput: 'supported',\n logprobs: 'supported',\n },\n status: { documented: true },\n domain: 'openai',\n notes: [\n 'Ollama exposes a subset of the OpenAI Chat Completions request fields; see docs/upstream/ollama-openai-compatibility.mdx.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const openaiCompletionsOp = {\n operationId: 'openaiCompletions',\n method: 'POST',\n path: '/v1/completions',\n environment: { local: true, cloud: true },\n transport: { mode: 'sse', streaming: true, streamingDefault: false },\n capabilities: { logprobs: 'supported' },\n status: { documented: true },\n domain: 'openai',\n} as const satisfies OperationDefinition;\n\nexport const openaiEmbeddingsOp = {\n operationId: 'openaiEmbeddings',\n method: 'POST',\n path: '/v1/embeddings',\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: { embeddings: 'supported' },\n status: { documented: true },\n domain: 'openai',\n} as const satisfies OperationDefinition;\n\nexport const openaiModelsOp = {\n operationId: 'openaiModels',\n method: 'GET',\n path: '/v1/models',\n environment: { local: true, cloud: true },\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'openai',\n} as const satisfies OperationDefinition;\n\nexport const openaiModelsGetOneOp = {\n operationId: 'openaiModelsGetOne',\n method: 'GET',\n path: '/v1/models/{model}',\n environment: { local: true, cloud: true },\n parameters: [{ name: 'model', in: 'path', required: true, schema: { type: 'string' } }],\n transport: { mode: 'json', streaming: false },\n capabilities: {},\n status: { documented: true },\n domain: 'openai',\n notes: ['Returns metadata for a single OpenAI-compat model by id.'],\n} as const satisfies OperationDefinition;\n\nexport const openaiResponsesOp = {\n operationId: 'openaiResponses',\n method: 'POST',\n path: '/v1/responses',\n environment: { local: true, cloud: true },\n transport: { mode: 'sse', streaming: true, streamingDefault: false },\n capabilities: { thinking: 'model-dependent', tools: 'model-dependent' },\n status: { documented: true },\n domain: 'openai',\n notes: [\n 'Ollama implements a subset of the OpenAI Responses API; previous_response_id and conversation are explicitly unsupported.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const anthropicMessagesOp = {\n operationId: 'anthropicMessages',\n method: 'POST',\n path: '/v1/messages',\n environment: { local: true, cloud: true },\n transport: { mode: 'sse', streaming: true, streamingDefault: false },\n capabilities: { thinking: 'model-dependent', tools: 'model-dependent' },\n status: { documented: true },\n domain: 'anthropic',\n notes: [\n \"tool_choice and metadata are explicitly unsupported by Ollama's Anthropic compat layer.\",\n 'Nested cache_control fields under messages[].content[].cache_control are unsupported.',\n ],\n} as const satisfies OperationDefinition;\n\nexport const allOperations = [\n balanceOp,\n blobsOp,\n chatOp,\n copyOp,\n createOp,\n createBlobOp,\n deleteOp,\n embedOp,\n generateOp,\n psOp,\n pullOp,\n pushOp,\n showOp,\n systemOneOp,\n tagsOp,\n usageOp,\n versionOp,\n webFetchOp,\n webSearchOp,\n openaiChatCompletionsOp,\n openaiCompletionsOp,\n openaiEmbeddingsOp,\n openaiModelsOp,\n openaiModelsGetOneOp,\n openaiResponsesOp,\n anthropicMessagesOp,\n] as const;\n","/**\n * Generated Ollama MCP tools — runtime adapter.\n *\n * Reads the descriptor list from `src/generated/mcp/tools.json` (the Wave 6\n * MCP emitter output) and exposes them as a `McpToolDescriptor[]` that\n * `McpBridge` can register. The actual call execution delegates to the\n * generated `OllamaRuntime` via the user-provided runtime instance.\n *\n * Usage:\n * ```ts\n * import { NativeApi, OllamaRuntime } from '@nemesis-oss/ollama-sdk/runtime';\n * import { createGeneratedOllamaTools } from '@nemesis-oss/ollama-sdk/mcp/generated';\n *\n * const runtime = new OllamaRuntime({ http });\n * const tools = createGeneratedOllamaTools(runtime);\n * bridge.registerTools(tools);\n * ```\n *\n * This is a Wave 6 opt-in feature — the existing McpBridge continues to work\n * unchanged. Users who want generated MCP tools import this adapter\n * explicitly.\n */\nimport { readFileSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport { resolve, dirname } from 'node:path';\nimport type { McpToolDescriptor } from './types.js';\nimport { OllamaRuntime } from '../generated/runtime/runtime.js';\nimport type { OperationDefinition } from '../generated/runtime/operation-definition.js';\n\ninterface GeneratedToolEntry extends McpToolDescriptor {\n readonly _operationId: string;\n}\n\ninterface GeneratedToolsFile {\n readonly _comment?: string;\n readonly tools: readonly GeneratedToolEntry[];\n}\n\n/**\n * Resolve the path to `tools.json` across runtime environments:\n *\n * - **In source (development):** `src/generated/mcp/tools.json`\n * - **In the published tarball:** `dist/mcp/tools.json` (copied by tsup's\n * `onSuccess` hook; see tsup.config.ts)\n *\n * The dist bundle is at `dist/mcp-generated.js`, so the JSON sits two\n * directories up + into `mcp/`. The source file is at\n * `src/mcp/generated-bridge.ts`, so the JSON sits one directory up +\n * into `generated/mcp/`.\n */\nconst HERE = dirname(fileURLToPath(import.meta.url));\nconst TOOLS_JSON_PATH = (() => {\n // Try the source layout first (development), then fall back to the dist\n // layout (published). The order matters because in a tsx-run dev env\n // we may be executing from `src/mcp/generated-bridge.ts`, but in a\n // consumer install we're at `dist/mcp-generated.js`.\n const candidates = [\n resolve(HERE, '../generated/mcp/tools.json'), // source layout\n resolve(HERE, 'mcp/tools.json'), // dist layout (next to mcp-generated.js)\n resolve(HERE, '../mcp/tools.json'), // alt dist layout (sibling of bundled dir)\n ];\n for (const candidate of candidates) {\n try {\n readFileSync(candidate, 'utf8');\n return candidate;\n } catch {\n // try next candidate\n }\n }\n // Fall back to the source-layout path; the error will surface with a\n // clearer message when the loader is actually invoked.\n return candidates[0] ?? resolve(HERE, '../generated/mcp/tools.json');\n})();\n\nlet cachedTools: readonly GeneratedToolEntry[] | undefined;\n\n/** Load and cache the generated tool descriptors from tools.json. */\nexport function loadGeneratedOllamaTools(): readonly GeneratedToolEntry[] {\n if (cachedTools) return cachedTools;\n const raw = readFileSync(TOOLS_JSON_PATH, 'utf8');\n const parsed = JSON.parse(raw) as GeneratedToolsFile;\n cachedTools = parsed.tools;\n return cachedTools;\n}\n\n/** Drop the `_operationId` field before exposing the descriptor externally. */\nfunction publicDescriptor(entry: GeneratedToolEntry): McpToolDescriptor {\n const { _operationId, ...rest } = entry;\n void _operationId;\n return rest;\n}\n\n/**\n * Build a list of MCP tool descriptors for the generated Ollama operations.\n * Each tool can be invoked by name via {@link callGeneratedOllamaTool}.\n *\n * The descriptors are read once and cached for the lifetime of the process.\n */\nexport function listGeneratedOllamaTools(): readonly McpToolDescriptor[] {\n return loadGeneratedOllamaTools().map(publicDescriptor);\n}\n\n/**\n * Invoke a generated tool by name. The `name` must match a tool from\n * {@link listGeneratedOllamaTools}.\n *\n * Returns a `McpCallToolResult` containing the structured response. The\n * caller (typically `McpBridge`) is responsible for serializing the result\n * back over the MCP transport.\n */\nexport async function callGeneratedOllamaTool(\n runtime: OllamaRuntime,\n name: string,\n args: Record<string, unknown>,\n options?: { signal?: AbortSignal },\n): Promise<{ content: readonly { type: 'text'; text: string }[]; structuredContent: unknown }> {\n const tools = loadGeneratedOllamaTools();\n const entry = tools.find((t) => t.name === name);\n if (!entry) {\n return {\n content: [{ type: 'text', text: `Unknown tool: ${name}` }],\n structuredContent: { error: 'unknown_tool', name },\n };\n }\n\n // Look up the operation in the IR by id. We re-import the operations\n // module to avoid a circular dependency at module-load time.\n const operations = await import('../generated/api/operations.js');\n const opKey = `${entry._operationId}Op` as keyof typeof operations;\n const operation = operations[opKey] as OperationDefinition | undefined;\n if (!operation || typeof operation !== 'object' || !('operationId' in operation)) {\n return {\n content: [{ type: 'text', text: `Operation not found for ${name}` }],\n structuredContent: { error: 'operation_not_found', name },\n };\n }\n\n try {\n // Wave 15 (P0): split path/query/header parameters from the request\n // body. The MCP input schema may declare path parameters (e.g. `model`\n // for /v1/models/{model}) — those must be passed as `pathParams` to\n // the runtime, not put in the request body. The operation's\n // `parameters` field tells us which args are path/query/header vs body.\n const opParams = operation.parameters ?? [];\n const pathParams: Record<string, string> = {};\n const queryParams: Record<string, string> = {};\n const headerParams: Record<string, string> = {};\n const bodyArgs: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(args)) {\n const paramDef = opParams.find((p) => p.name === key);\n if (paramDef) {\n if (paramDef.in === 'path') {\n pathParams[key] = String(value);\n } else if (paramDef.in === 'query') {\n queryParams[key] = String(value);\n } else if (paramDef.in === 'header') {\n headerParams[key] = String(value);\n }\n } else {\n // Not a declared parameter → goes in the request body.\n bodyArgs[key] = value;\n }\n }\n\n const hasBody = Object.keys(bodyArgs).length > 0;\n const result = await runtime.invoke<unknown>({\n operation,\n body: hasBody ? bodyArgs : undefined,\n ...(Object.keys(pathParams).length > 0 ? { pathParams } : {}),\n ...(Object.keys(queryParams).length > 0 ? { queryParams } : {}),\n ...(Object.keys(headerParams).length > 0 ? { headerParams } : {}),\n ...(options?.signal !== undefined ? { signal: options.signal } : {}),\n });\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n structuredContent: result,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n content: [{ type: 'text', text: `Ollama tool ${name} failed: ${message}` }],\n structuredContent: { error: 'tool_failed', name, message },\n };\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { a as McpToolDescriptor } from './types-CI-gM2u5.cjs';
2
- import { O as OllamaRuntime } from './runtime-DTmUeU6K.cjs';
2
+ import { O as OllamaRuntime } from './runtime-D2W9TfCJ.cjs';
3
3
  import 'zod';
4
- import './types-5PAjLoCp.cjs';
4
+ import './types-DVcX_zMp.cjs';
5
5
 
6
6
  interface GeneratedToolEntry extends McpToolDescriptor {
7
7
  readonly _operationId: string;
@@ -1,7 +1,7 @@
1
1
  import { a as McpToolDescriptor } from './types-CI-gM2u5.js';
2
- import { O as OllamaRuntime } from './runtime-C6UYtBRB.js';
2
+ import { O as OllamaRuntime } from './runtime-C3rfpkZw.js';
3
3
  import 'zod';
4
- import './types-5PAjLoCp.js';
4
+ import './types-DVcX_zMp.js';
5
5
 
6
6
  interface GeneratedToolEntry extends McpToolDescriptor {
7
7
  readonly _operationId: string;
@@ -17,6 +17,7 @@ var operations_exports = {};
17
17
  __export(operations_exports, {
18
18
  allOperations: () => allOperations,
19
19
  anthropicMessagesOp: () => anthropicMessagesOp,
20
+ balanceOp: () => balanceOp,
20
21
  blobsOp: () => blobsOp,
21
22
  chatOp: () => chatOp,
22
23
  copyOp: () => copyOp,
@@ -37,13 +38,33 @@ __export(operations_exports, {
37
38
  showOp: () => showOp,
38
39
  systemOneOp: () => systemOneOp,
39
40
  tagsOp: () => tagsOp,
41
+ usageOp: () => usageOp,
40
42
  versionOp: () => versionOp,
41
43
  webFetchOp: () => webFetchOp,
42
44
  webSearchOp: () => webSearchOp
43
45
  });
44
- var blobsOp, chatOp, copyOp, createOp, createBlobOp, deleteOp, embedOp, generateOp, psOp, pullOp, pushOp, showOp, systemOneOp, tagsOp, versionOp, webFetchOp, webSearchOp, openaiChatCompletionsOp, openaiCompletionsOp, openaiEmbeddingsOp, openaiModelsOp, openaiModelsGetOneOp, openaiResponsesOp, anthropicMessagesOp, allOperations;
46
+ var balanceOp, blobsOp, chatOp, copyOp, createOp, createBlobOp, deleteOp, embedOp, generateOp, psOp, pullOp, pushOp, showOp, systemOneOp, tagsOp, usageOp, versionOp, webFetchOp, webSearchOp, openaiChatCompletionsOp, openaiCompletionsOp, openaiEmbeddingsOp, openaiModelsOp, openaiModelsGetOneOp, openaiResponsesOp, anthropicMessagesOp, allOperations;
45
47
  var init_operations = __esm({
46
48
  "src/generated/api/operations.ts"() {
49
+ balanceOp = {
50
+ operationId: "balance",
51
+ method: "GET",
52
+ path: "/api/balance",
53
+ response: { $ref: "#/schemas/BalanceResponse" },
54
+ environment: { local: false, cloud: true },
55
+ host: "https://ollama.com",
56
+ transport: { mode: "json", streaming: false },
57
+ capabilities: {},
58
+ status: { documented: true },
59
+ domain: "native",
60
+ notes: [
61
+ "Cloud-only account endpoint \u2014 targets https://ollama.com, not the local Ollama server.",
62
+ "Requires an Ollama Cloud API key (set via OllamaClient credentials).",
63
+ "Takes no parameters. For usage history see the usage operation.",
64
+ "Rate limited to 10 requests/minute per user; 429 responses carry a Retry-After header.",
65
+ "Use OllamaClient.balance() \u2014 the generated NativeApi class does not expose this operation."
66
+ ]
67
+ };
47
68
  blobsOp = {
48
69
  operationId: "blobs",
49
70
  method: "HEAD",
@@ -251,6 +272,25 @@ var init_operations = __esm({
251
272
  status: { documented: true },
252
273
  domain: "native"
253
274
  };
275
+ usageOp = {
276
+ operationId: "usage",
277
+ method: "GET",
278
+ path: "/api/usage",
279
+ response: { $ref: "#/schemas/UsageResponse" },
280
+ environment: { local: false, cloud: true },
281
+ host: "https://ollama.com",
282
+ transport: { mode: "json", streaming: false },
283
+ capabilities: {},
284
+ status: { documented: true },
285
+ domain: "native",
286
+ notes: [
287
+ "Cloud-only account endpoint \u2014 targets https://ollama.com, not the local Ollama server.",
288
+ "Requires an Ollama Cloud API key (set via OllamaClient credentials).",
289
+ "Query parameters (not modeled by the generated runtime): range = 24h | 7d | 30d (server default 7d), scope = self | team (server default self; team scope requires a team admin).",
290
+ "Rate limited to 10 requests/minute per user; 429 responses carry a Retry-After header.",
291
+ "Use OllamaClient.usage() \u2014 the generated NativeApi class does not expose this operation."
292
+ ]
293
+ };
254
294
  versionOp = {
255
295
  operationId: "version",
256
296
  method: "GET",
@@ -387,6 +427,7 @@ var init_operations = __esm({
387
427
  ]
388
428
  };
389
429
  allOperations = [
430
+ balanceOp,
390
431
  blobsOp,
391
432
  chatOp,
392
433
  copyOp,
@@ -401,6 +442,7 @@ var init_operations = __esm({
401
442
  showOp,
402
443
  systemOneOp,
403
444
  tagsOp,
445
+ usageOp,
404
446
  versionOp,
405
447
  webFetchOp,
406
448
  webSearchOp,