@theia/ai-ollama 1.71.0-next.8 → 1.71.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.
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ollama-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,qBACa,qCAAsC,YAAW,+BAA+B;IAGzF,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAE/C,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IAEpC,OAAO,IAAI,IAAI;IA0Bf,SAAS,CAAC,eAAe,IAAI,IAAI;IAKjC,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAYvD,SAAS,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB;CAQlF"}
1
+ {"version":3,"file":"ollama-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ollama-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAA4B,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAE1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,qBACa,qCAAsC,YAAW,+BAA+B;IAGzF,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAE/C,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IAEpC,OAAO,IAAI,IAAI;IA0Bf,SAAS,CAAC,eAAe,IAAI,IAAI;IAKjC,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAYvD,SAAS,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB;CAYlF"}
@@ -67,7 +67,11 @@ let OllamaFrontendApplicationContribution = class OllamaFrontendApplicationContr
67
67
  const id = `${OLLAMA_PROVIDER_ID}/${modelId}`;
68
68
  return {
69
69
  id: id,
70
- model: modelId
70
+ model: modelId,
71
+ // Whether the underlying model supports thinking is checked per-request via `ollama.show`;
72
+ // for non-thinking models the reasoning level is silently ignored, so it's safe to always
73
+ // advertise reasoning support and let the runtime decide.
74
+ reasoningSupport: common_1.OLLAMA_REASONING_SUPPORT
71
75
  };
72
76
  }
73
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/ollama-frontend-application-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mCAAmC;AACnC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAGhF,4DAAkE;AAClE,sCAAgF;AAChF,qEAAsE;AACtE,sCAAgD;AAEhD,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE7B,IAAM,qCAAqC,GAA3C,MAAM,qCAAqC;IAA3C;QAQO,eAAU,GAAa,EAAE,CAAC;IAqDxC,CAAC;IAnDG,OAAO;QACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,8BAAS,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;YAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,YAAY,EAAE,SAAS,CAAC,CAAC;YAC7E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEnC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAW,gCAAW,EAAE,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChH,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAE9B,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;gBAC/C,IAAI,KAAK,CAAC,cAAc,KAAK,8BAAS,EAAE,CAAC;oBACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,8BAAS,CAAC,CAAC,CAAC;oBACpE,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3B,CAAC;qBAAM,IAAI,KAAK,CAAC,cAAc,KAAK,gCAAW,EAAE,CAAC;oBAC9C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAW,gCAAW,EAAE,EAAE,CAAC,CAAC,CAAC;gBACnF,CAAC;qBAAM,IAAI,KAAK,CAAC,cAAc,KAAK,YAAY,EAAE,CAAC;oBAC/C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;oBACtF,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3B,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAES,eAAe;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAW,gCAAW,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;IAES,kBAAkB,CAAC,SAAmB;QAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,cAAc,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9E,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrH,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IAES,4BAA4B,CAAC,OAAe;QAClD,MAAM,EAAE,GAAG,GAAG,kBAAkB,IAAI,OAAO,EAAE,CAAC;QAE9C,OAAO;YACH,EAAE,EAAE,EAAE;YACN,KAAK,EAAE,OAAO;SACjB,CAAC;IACN,CAAC;CACJ,CAAA;AA7DY,sFAAqC;AAGpC;IADT,IAAA,kBAAM,EAAC,wBAAiB,CAAC;;gFACqB;AAGrC;IADT,IAAA,kBAAM,EAAC,oCAA2B,CAAC;;sEACW;gDANtC,qCAAqC;IADjD,IAAA,sBAAU,GAAE;GACA,qCAAqC,CA6DjD"}
1
+ {"version":3,"file":"ollama-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/ollama-frontend-application-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mCAAmC;AACnC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAGhF,4DAAkE;AAClE,sCAA0G;AAC1G,qEAAsE;AACtE,sCAAgD;AAEhD,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE7B,IAAM,qCAAqC,GAA3C,MAAM,qCAAqC;IAA3C;QAQO,eAAU,GAAa,EAAE,CAAC;IAyDxC,CAAC;IAvDG,OAAO;QACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,8BAAS,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;YAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,YAAY,EAAE,SAAS,CAAC,CAAC;YAC7E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEnC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAW,gCAAW,EAAE,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChH,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAE9B,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;gBAC/C,IAAI,KAAK,CAAC,cAAc,KAAK,8BAAS,EAAE,CAAC;oBACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,8BAAS,CAAC,CAAC,CAAC;oBACpE,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3B,CAAC;qBAAM,IAAI,KAAK,CAAC,cAAc,KAAK,gCAAW,EAAE,CAAC;oBAC9C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAW,gCAAW,EAAE,EAAE,CAAC,CAAC,CAAC;gBACnF,CAAC;qBAAM,IAAI,KAAK,CAAC,cAAc,KAAK,YAAY,EAAE,CAAC;oBAC/C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;oBACtF,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3B,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAES,eAAe;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAW,gCAAW,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;IAES,kBAAkB,CAAC,SAAmB;QAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,cAAc,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9E,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrH,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IAES,4BAA4B,CAAC,OAAe;QAClD,MAAM,EAAE,GAAG,GAAG,kBAAkB,IAAI,OAAO,EAAE,CAAC;QAE9C,OAAO;YACH,EAAE,EAAE,EAAE;YACN,KAAK,EAAE,OAAO;YACd,2FAA2F;YAC3F,0FAA0F;YAC1F,0DAA0D;YAC1D,gBAAgB,EAAE,iCAAwB;SAC7C,CAAC;IACN,CAAC;CACJ,CAAA;AAjEY,sFAAqC;AAGpC;IADT,IAAA,kBAAM,EAAC,wBAAiB,CAAC;;gFACqB;AAGrC;IADT,IAAA,kBAAM,EAAC,oCAA2B,CAAC;;sEACW;gDANtC,qCAAqC;IADjD,IAAA,sBAAU,GAAE;GACA,qCAAqC,CAiEjD"}
@@ -1,5 +1,12 @@
1
+ import { ReasoningSupport } from '@theia/ai-core';
1
2
  export declare const OLLAMA_LANGUAGE_MODELS_MANAGER_PATH = "/services/ollama/language-model-manager";
2
3
  export declare const OllamaLanguageModelsManager: unique symbol;
4
+ /**
5
+ * Coarse Ollama reasoning support advertised at registration time. Whether a given Ollama model
6
+ * actually supports thinking is discovered per-request via `ollama.show`; for models without it
7
+ * the selector value is silently ignored.
8
+ */
9
+ export declare const OLLAMA_REASONING_SUPPORT: ReasoningSupport;
3
10
  export interface OllamaModelDescription {
4
11
  /**
5
12
  * The identifier of the model which will be shown in the UI.
@@ -9,6 +16,11 @@ export interface OllamaModelDescription {
9
16
  * The name or ID of the model in the Ollama environment.
10
17
  */
11
18
  model: string;
19
+ /**
20
+ * When set, the chat exposes a reasoning selector for this model. Defaults to {@link OLLAMA_REASONING_SUPPORT};
21
+ * Ollama checks at request time whether the model supports thinking, so this is safe to leave on for any model.
22
+ */
23
+ reasoningSupport?: ReasoningSupport;
12
24
  }
13
25
  export interface OllamaLanguageModelsManager {
14
26
  host: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/ollama-language-models-manager.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,mCAAmC,4CAA4C,CAAC;AAC7F,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AAEjF,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IACxC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAChD,4BAA4B,CAAC,GAAG,MAAM,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACrD"}
1
+ {"version":3,"file":"ollama-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/ollama-language-models-manager.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,eAAO,MAAM,mCAAmC,4CAA4C,CAAC;AAC7F,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AAEjF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,gBAGtC,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAED,MAAM,WAAW,2BAA2B;IACxC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAChD,4BAA4B,CAAC,GAAG,MAAM,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACrD"}
@@ -15,7 +15,16 @@
15
15
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.OllamaLanguageModelsManager = exports.OLLAMA_LANGUAGE_MODELS_MANAGER_PATH = void 0;
18
+ exports.OLLAMA_REASONING_SUPPORT = exports.OllamaLanguageModelsManager = exports.OLLAMA_LANGUAGE_MODELS_MANAGER_PATH = void 0;
19
19
  exports.OLLAMA_LANGUAGE_MODELS_MANAGER_PATH = '/services/ollama/language-model-manager';
20
20
  exports.OllamaLanguageModelsManager = Symbol('OllamaLanguageModelsManager');
21
+ /**
22
+ * Coarse Ollama reasoning support advertised at registration time. Whether a given Ollama model
23
+ * actually supports thinking is discovered per-request via `ollama.show`; for models without it
24
+ * the selector value is silently ignored.
25
+ */
26
+ exports.OLLAMA_REASONING_SUPPORT = {
27
+ supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
28
+ defaultLevel: 'auto'
29
+ };
21
30
  //# sourceMappingURL=ollama-language-models-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-language-models-manager.js","sourceRoot":"","sources":["../../src/common/ollama-language-models-manager.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mCAAmC;AACnC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEnE,QAAA,mCAAmC,GAAG,yCAAyC,CAAC;AAChF,QAAA,2BAA2B,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC"}
1
+ {"version":3,"file":"ollama-language-models-manager.js","sourceRoot":"","sources":["../../src/common/ollama-language-models-manager.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mCAAmC;AACnC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAInE,QAAA,mCAAmC,GAAG,yCAAyC,CAAC;AAChF,QAAA,2BAA2B,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;AAEjF;;;;GAIG;AACU,QAAA,wBAAwB,GAAqB;IACtD,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;IACpE,YAAY,EAAE,MAAM;CACvB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { LanguageModel, LanguageModelParsedResponse, LanguageModelRequest, LanguageModelMessage, LanguageModelResponse, LanguageModelStreamResponse, ThinkingModeSettings, ToolRequest, TokenUsageService, LanguageModelStatus } from '@theia/ai-core';
1
+ import { LanguageModel, LanguageModelParsedResponse, LanguageModelMessage, LanguageModelResponse, LanguageModelStreamResponse, ReasoningSettings, ReasoningSupport, ToolRequest, LanguageModelRequest, LanguageModelStatus, UserRequest } from '@theia/ai-core';
2
2
  import { CancellationToken } from '@theia/core';
3
3
  import { ChatRequest, Message, Ollama, Tool } from 'ollama';
4
4
  export declare const OllamaModelIdentifier: unique symbol;
@@ -7,8 +7,8 @@ export declare class OllamaModel implements LanguageModel {
7
7
  protected readonly model: string;
8
8
  status: LanguageModelStatus;
9
9
  protected host: () => string | undefined;
10
- protected readonly tokenUsageService?: TokenUsageService | undefined;
11
10
  proxy?: string | undefined;
11
+ reasoningSupport?: ReasoningSupport | undefined;
12
12
  protected readonly DEFAULT_REQUEST_SETTINGS: Partial<Omit<ChatRequest, 'stream' | 'model'>>;
13
13
  readonly providerId = "ollama";
14
14
  readonly vendor: string;
@@ -17,16 +17,16 @@ export declare class OllamaModel implements LanguageModel {
17
17
  * @param model the unique model name as used in the Ollama environment.
18
18
  * @param hostProvider a function to provide the host URL for the Ollama server.
19
19
  */
20
- constructor(id: string, model: string, status: LanguageModelStatus, host: () => string | undefined, tokenUsageService?: TokenUsageService | undefined, proxy?: string | undefined);
21
- request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
20
+ constructor(id: string, model: string, status: LanguageModelStatus, host: () => string | undefined, proxy?: string | undefined, reasoningSupport?: ReasoningSupport | undefined);
21
+ request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
22
22
  /**
23
23
  * Retrieves the settings for the chat request, merging the request-specific settings with the default settings.
24
24
  * @param request The language model request containing specific settings.
25
25
  * @returns A partial ChatRequest object containing the merged settings.
26
26
  */
27
27
  protected getSettings(request: LanguageModelRequest): Partial<ChatRequest>;
28
- protected dispatchRequest(ollama: Ollama, ollamaRequest: ExtendedChatRequest, structured: boolean, cancellation?: CancellationToken, thinkingMode?: ThinkingModeSettings): Promise<LanguageModelResponse>;
29
- protected handleStreamingRequest(ollama: Ollama, chatRequest: ExtendedChatRequest, cancellation?: CancellationToken, thinkingMode?: ThinkingModeSettings): Promise<LanguageModelStreamResponse>;
28
+ protected dispatchRequest(ollama: Ollama, ollamaRequest: ExtendedChatRequest, structured: boolean, cancellation?: CancellationToken, reasoning?: ReasoningSettings): Promise<LanguageModelResponse>;
29
+ protected handleStreamingRequest(ollama: Ollama, chatRequest: ExtendedChatRequest, cancellation?: CancellationToken, reasoning?: ReasoningSettings): Promise<LanguageModelStreamResponse>;
30
30
  /**
31
31
  * Check if the Ollama server supports thinking.
32
32
  *
@@ -37,36 +37,13 @@ export declare class OllamaModel implements LanguageModel {
37
37
  * @returns A boolean indicating whether the Ollama model supports thinking.
38
38
  */
39
39
  protected checkThinkingSupport(ollama: Ollama, model: string): Promise<boolean>;
40
- /**
41
- * Determines the value for Ollama's 'think' parameter based on the request's thinking mode settings.
42
- *
43
- * Note: Most models support boolean values for 'think', but some models (e.g., GPT-OSS) require
44
- * effort levels ('low', 'medium', 'high') and ignore boolean values.
45
- *
46
- * @param thinkingMode The thinking mode settings from the request.
47
- * @param model The model name to check for special handling.
48
- * @returns The appropriate 'think' parameter value for the model.
49
- */
50
- protected getThinkingParameter(thinkingMode: ThinkingModeSettings | undefined, model: string): boolean | 'low' | 'medium' | 'high';
51
- /**
52
- * Checks if the model requires effort levels instead of boolean for the 'think' parameter.
53
- *
54
- * @param model The model name to check.
55
- * @returns true if the model requires effort levels.
56
- */
40
+ protected getThinkingParameter(reasoning: ReasoningSettings | undefined, model: string): boolean | 'low' | 'medium' | 'high';
41
+ /** Checks if the model requires effort levels instead of a boolean for `think`. */
57
42
  protected requiresEffortLevel(model: string): boolean;
58
- /**
59
- * Maps budget tokens to Ollama effort levels.
60
- *
61
- * @param budgetTokens Optional budget tokens from thinking mode settings.
62
- * @returns The effort level ('low', 'medium', or 'high').
63
- */
64
- protected budgetTokensToEffortLevel(budgetTokens: number | undefined): 'low' | 'medium' | 'high';
65
43
  protected handleStructuredOutputRequest(ollama: Ollama, chatRequest: ChatRequest): Promise<LanguageModelParsedResponse>;
66
- protected handleNonStreamingRequest(ollama: Ollama, chatRequest: ExtendedNonStreamingChatRequest, cancellation?: CancellationToken, thinkingMode?: ThinkingModeSettings): Promise<LanguageModelResponse>;
44
+ protected handleNonStreamingRequest(ollama: Ollama, chatRequest: ExtendedNonStreamingChatRequest, cancellation?: CancellationToken, reasoning?: ReasoningSettings): Promise<LanguageModelResponse>;
67
45
  private createToolCalls;
68
46
  private processToolCalls;
69
- private recordTokenUsage;
70
47
  protected initializeOllama(): Ollama;
71
48
  protected toOllamaTool(tool: ToolRequest): ToolWithHandler;
72
49
  protected toOllamaMessage(message: LanguageModelMessage): Message | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-language-model.d.ts","sourceRoot":"","sources":["../../src/node/ollama-language-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ollama-language-model.d.ts","sourceRoot":"","sources":["../../src/node/ollama-language-model.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ exports.OllamaModel = exports.OllamaModelIdentifier = void 0;
19
19
  const ai_core_1 = require("@theia/ai-core");
20
20
  const ollama_1 = require("ollama");
21
21
  const node_1 = require("@theia/ai-core/lib/node");
22
+ const ollama_reasoning_1 = require("./ollama-reasoning");
22
23
  exports.OllamaModelIdentifier = Symbol('OllamaModelIdentifier');
23
24
  class OllamaModel {
24
25
  /**
@@ -26,13 +27,13 @@ class OllamaModel {
26
27
  * @param model the unique model name as used in the Ollama environment.
27
28
  * @param hostProvider a function to provide the host URL for the Ollama server.
28
29
  */
29
- constructor(id, model, status, host, tokenUsageService, proxy) {
30
+ constructor(id, model, status, host, proxy, reasoningSupport) {
30
31
  this.id = id;
31
32
  this.model = model;
32
33
  this.status = status;
33
34
  this.host = host;
34
- this.tokenUsageService = tokenUsageService;
35
35
  this.proxy = proxy;
36
+ this.reasoningSupport = reasoningSupport;
36
37
  this.DEFAULT_REQUEST_SETTINGS = {
37
38
  keep_alive: '15m',
38
39
  // options see: https://github.com/ollama/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values
@@ -54,7 +55,7 @@ class OllamaModel {
54
55
  stream
55
56
  };
56
57
  const structured = request.response_format?.type === 'json_schema';
57
- return this.dispatchRequest(ollama, ollamaRequest, structured, cancellationToken, request.thinkingMode);
58
+ return this.dispatchRequest(ollama, ollamaRequest, structured, cancellationToken, request.reasoning);
58
59
  }
59
60
  /**
60
61
  * Retrieves the settings for the chat request, merging the request-specific settings with the default settings.
@@ -67,21 +68,21 @@ class OllamaModel {
67
68
  options: settings
68
69
  };
69
70
  }
70
- async dispatchRequest(ollama, ollamaRequest, structured, cancellation, thinkingMode) {
71
+ async dispatchRequest(ollama, ollamaRequest, structured, cancellation, reasoning) {
71
72
  // Handle structured output request
72
73
  if (structured) {
73
74
  return this.handleStructuredOutputRequest(ollama, ollamaRequest);
74
75
  }
75
76
  if (isNonStreaming(ollamaRequest)) {
76
77
  // handle non-streaming request
77
- return this.handleNonStreamingRequest(ollama, ollamaRequest, cancellation, thinkingMode);
78
+ return this.handleNonStreamingRequest(ollama, ollamaRequest, cancellation, reasoning);
78
79
  }
79
80
  // handle streaming request
80
- return this.handleStreamingRequest(ollama, ollamaRequest, cancellation, thinkingMode);
81
+ return this.handleStreamingRequest(ollama, ollamaRequest, cancellation, reasoning);
81
82
  }
82
- async handleStreamingRequest(ollama, chatRequest, cancellation, thinkingMode) {
83
+ async handleStreamingRequest(ollama, chatRequest, cancellation, reasoning) {
83
84
  const supportsThinking = await this.checkThinkingSupport(ollama, chatRequest.model);
84
- const thinkParam = supportsThinking ? this.getThinkingParameter(thinkingMode, chatRequest.model) : false;
85
+ const thinkParam = supportsThinking ? this.getThinkingParameter(reasoning, chatRequest.model) : false;
85
86
  const responseStream = await ollama.chat({
86
87
  ...chatRequest,
87
88
  stream: true,
@@ -117,7 +118,9 @@ class OllamaModel {
117
118
  toolCalls.push(...chunk.message.tool_calls);
118
119
  }
119
120
  if (chunk.done) {
120
- that.recordTokenUsage(chunk);
121
+ if (chunk.prompt_eval_count !== undefined && chunk.eval_count !== undefined) {
122
+ yield { input_tokens: chunk.prompt_eval_count, output_tokens: chunk.eval_count };
123
+ }
121
124
  if (chunk.done_reason && chunk.done_reason !== 'stop') {
122
125
  throw new Error('Ollama stopped unexpectedly. Reason: ' + chunk.done_reason);
123
126
  }
@@ -138,7 +141,7 @@ class OllamaModel {
138
141
  const processedToolCallsForResponse = await that.processToolCalls(toolCallsForResponse, chatRequest);
139
142
  yield { tool_calls: processedToolCallsForResponse };
140
143
  // Continue the conversation with tool results
141
- const continuedResponse = await that.handleStreamingRequest(ollama, chatRequest, cancellation, thinkingMode);
144
+ const continuedResponse = await that.handleStreamingRequest(ollama, chatRequest, cancellation, reasoning);
142
145
  // Stream the continued response
143
146
  for await (const nestedEvent of continuedResponse.stream) {
144
147
  yield nestedEvent;
@@ -166,54 +169,13 @@ class OllamaModel {
166
169
  const result = await ollama.show({ model });
167
170
  return result?.capabilities?.includes('thinking') || false;
168
171
  }
169
- /**
170
- * Determines the value for Ollama's 'think' parameter based on the request's thinking mode settings.
171
- *
172
- * Note: Most models support boolean values for 'think', but some models (e.g., GPT-OSS) require
173
- * effort levels ('low', 'medium', 'high') and ignore boolean values.
174
- *
175
- * @param thinkingMode The thinking mode settings from the request.
176
- * @param model The model name to check for special handling.
177
- * @returns The appropriate 'think' parameter value for the model.
178
- */
179
- getThinkingParameter(thinkingMode, model) {
180
- if (!thinkingMode?.enabled) {
181
- return false;
182
- }
183
- if (this.requiresEffortLevel(model)) {
184
- return this.budgetTokensToEffortLevel(thinkingMode.budgetTokens);
185
- }
186
- return true;
172
+ getThinkingParameter(reasoning, model) {
173
+ return (0, ollama_reasoning_1.ollamaThinkParamFor)(reasoning?.level, this.requiresEffortLevel(model));
187
174
  }
188
- /**
189
- * Checks if the model requires effort levels instead of boolean for the 'think' parameter.
190
- *
191
- * @param model The model name to check.
192
- * @returns true if the model requires effort levels.
193
- */
175
+ /** Checks if the model requires effort levels instead of a boolean for `think`. */
194
176
  requiresEffortLevel(model) {
195
177
  return model.toLowerCase().includes('gpt-oss');
196
178
  }
197
- /**
198
- * Maps budget tokens to Ollama effort levels.
199
- *
200
- * @param budgetTokens Optional budget tokens from thinking mode settings.
201
- * @returns The effort level ('low', 'medium', or 'high').
202
- */
203
- budgetTokensToEffortLevel(budgetTokens) {
204
- if (budgetTokens === undefined) {
205
- return 'medium';
206
- }
207
- if (budgetTokens <= 2000) {
208
- return 'low';
209
- }
210
- else if (budgetTokens <= 20000) {
211
- return 'medium';
212
- }
213
- else {
214
- return 'high';
215
- }
216
- }
217
179
  async handleStructuredOutputRequest(ollama, chatRequest) {
218
180
  const response = await ollama.chat({
219
181
  ...chatRequest,
@@ -221,27 +183,35 @@ class OllamaModel {
221
183
  stream: false,
222
184
  });
223
185
  try {
224
- return {
186
+ const result = {
225
187
  content: response.message.content,
226
188
  parsed: JSON.parse(response.message.content)
227
189
  };
190
+ if (response.prompt_eval_count !== undefined && response.eval_count !== undefined) {
191
+ result.usage = { input_tokens: response.prompt_eval_count, output_tokens: response.eval_count };
192
+ }
193
+ return result;
228
194
  }
229
195
  catch (error) {
230
196
  // TODO use ILogger
231
197
  console.log('Failed to parse structured response from the language model.', error);
232
- return {
198
+ const result = {
233
199
  content: response.message.content,
234
200
  parsed: {}
235
201
  };
202
+ if (response.prompt_eval_count !== undefined && response.eval_count !== undefined) {
203
+ result.usage = { input_tokens: response.prompt_eval_count, output_tokens: response.eval_count };
204
+ }
205
+ return result;
236
206
  }
237
207
  }
238
- async handleNonStreamingRequest(ollama, chatRequest, cancellation, thinkingMode) {
208
+ async handleNonStreamingRequest(ollama, chatRequest, cancellation, reasoning) {
239
209
  try {
240
210
  // even though we have a non-streaming request, we still use the streaming version for two reasons:
241
211
  // 1. we can abort the stream if the request is cancelled instead of having to wait for the entire response
242
212
  // 2. we can use think: true so the Ollama API separates thinking from content and we can filter out the thoughts in the response
243
213
  const supportsThinking = await this.checkThinkingSupport(ollama, chatRequest.model);
244
- const thinkParam = supportsThinking ? this.getThinkingParameter(thinkingMode, chatRequest.model) : false;
214
+ const thinkParam = supportsThinking ? this.getThinkingParameter(reasoning, chatRequest.model) : false;
245
215
  const responseStream = await ollama.chat({ ...chatRequest, stream: true, think: thinkParam });
246
216
  cancellation?.onCancellationRequested(() => {
247
217
  responseStream.abort();
@@ -249,6 +219,8 @@ class OllamaModel {
249
219
  const toolCalls = [];
250
220
  let content = '';
251
221
  let lastUpdated = new Date();
222
+ let inputTokenCount;
223
+ let outputTokenCount;
252
224
  // process the response stream
253
225
  for await (const chunk of responseStream) {
254
226
  // if the response contains content, append it to the result
@@ -260,10 +232,11 @@ class OllamaModel {
260
232
  if (chunk.message.tool_calls && chunk.message.tool_calls.length > 0) {
261
233
  toolCalls.push(...chunk.message.tool_calls);
262
234
  }
263
- // if the response is done, record the token usage and check the done reason
235
+ // if the response is done, capture token usage and check the done reason
264
236
  if (chunk.done) {
265
- this.recordTokenUsage(chunk);
266
237
  lastUpdated = chunk.created_at;
238
+ inputTokenCount = chunk.prompt_eval_count;
239
+ outputTokenCount = chunk.eval_count;
267
240
  if (chunk.done_reason && chunk.done_reason !== 'stop') {
268
241
  throw new Error('Ollama stopped unexpectedly. Reason: ' + chunk.done_reason);
269
242
  }
@@ -282,10 +255,14 @@ class OllamaModel {
282
255
  return { text: '' };
283
256
  }
284
257
  // recurse to get the final response content (the intermediate content remains hidden, it is only part of the conversation)
285
- return this.handleNonStreamingRequest(ollama, chatRequest, cancellation, thinkingMode);
258
+ return this.handleNonStreamingRequest(ollama, chatRequest, cancellation, reasoning);
286
259
  }
287
260
  // if no tool calls are necessary, return the final response content
288
- return { text: content };
261
+ const result = { text: content };
262
+ if (inputTokenCount !== undefined && outputTokenCount !== undefined) {
263
+ result.usage = { input_tokens: inputTokenCount, output_tokens: outputTokenCount };
264
+ }
265
+ return result;
289
266
  }
290
267
  catch (error) {
291
268
  console.error('Error in ollama call:', error.message);
@@ -333,15 +310,6 @@ class OllamaModel {
333
310
  }
334
311
  return toolCallsForResponse;
335
312
  }
336
- recordTokenUsage(response) {
337
- if (this.tokenUsageService && response.prompt_eval_count && response.eval_count) {
338
- this.tokenUsageService.recordTokenUsage(this.id, {
339
- inputTokens: response.prompt_eval_count,
340
- outputTokens: response.eval_count,
341
- requestId: `ollama_${response.created_at}`
342
- }).catch(error => console.error('Error recording token usage:', error));
343
- }
344
- }
345
313
  initializeOllama() {
346
314
  const host = this.host();
347
315
  if (!host) {
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-language-model.js","sourceRoot":"","sources":["../../src/node/ollama-language-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ollama-language-model.js","sourceRoot":"","sources":["../../src/node/ollama-language-model.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
- import { LanguageModelRegistry, LanguageModelStatus, TokenUsageService } from '@theia/ai-core';
1
+ import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
2
2
  import { OllamaLanguageModelsManager, OllamaModelDescription } from '../common';
3
3
  export declare class OllamaLanguageModelsManagerImpl implements OllamaLanguageModelsManager {
4
4
  protected _host: string | undefined;
5
5
  protected _proxyUrl: string | undefined;
6
6
  protected readonly languageModelRegistry: LanguageModelRegistry;
7
- protected readonly tokenUsageService: TokenUsageService;
8
7
  get host(): string | undefined;
9
8
  protected calculateStatus(host: string | undefined): LanguageModelStatus;
10
9
  createOrUpdateLanguageModels(...models: OllamaModelDescription[]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/ollama-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAI/F,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,qBACa,+BAAgC,YAAW,2BAA2B;IAE/E,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAGxC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAID,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB;IAIlE,4BAA4B,CAAC,GAAG,MAAM,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCtF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQzC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CASzD"}
1
+ {"version":3,"file":"ollama-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/ollama-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI5E,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,qBACa,+BAAgC,YAAW,2BAA2B;IAE/E,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAGxC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEhE,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAID,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB;IAIlE,4BAA4B,CAAC,GAAG,MAAM,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCtF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQzC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CASzD"}
@@ -45,13 +45,14 @@ let OllamaLanguageModelsManagerImpl = class OllamaLanguageModelsManagerImpl {
45
45
  const status = this.calculateStatus(host);
46
46
  await this.languageModelRegistry.patchLanguageModel(modelDescription.id, {
47
47
  proxy: proxyUrl,
48
- status
48
+ status,
49
+ reasoningSupport: modelDescription.reasoningSupport
49
50
  });
50
51
  }
51
52
  else {
52
53
  const status = this.calculateStatus(host);
53
54
  this.languageModelRegistry.addLanguageModels([
54
- new ollama_language_model_1.OllamaModel(modelDescription.id, modelDescription.model, status, hostProvider, this.tokenUsageService, proxyUrl)
55
+ new ollama_language_model_1.OllamaModel(modelDescription.id, modelDescription.model, status, hostProvider, proxyUrl, modelDescription.reasoningSupport)
55
56
  ]);
56
57
  }
57
58
  }
@@ -82,10 +83,6 @@ tslib_1.__decorate([
82
83
  (0, inversify_1.inject)(ai_core_1.LanguageModelRegistry),
83
84
  tslib_1.__metadata("design:type", Object)
84
85
  ], OllamaLanguageModelsManagerImpl.prototype, "languageModelRegistry", void 0);
85
- tslib_1.__decorate([
86
- (0, inversify_1.inject)(ai_core_1.TokenUsageService),
87
- tslib_1.__metadata("design:type", Object)
88
- ], OllamaLanguageModelsManagerImpl.prototype, "tokenUsageService", void 0);
89
86
  exports.OllamaLanguageModelsManagerImpl = OllamaLanguageModelsManagerImpl = tslib_1.__decorate([
90
87
  (0, inversify_1.injectable)()
91
88
  ], OllamaLanguageModelsManagerImpl);
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/ollama-language-models-manager-impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ollama-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/ollama-language-models-manager-impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ReasoningLevel } from '@theia/ai-core';
2
+ /**
3
+ * Translates a reasoning level to Ollama's `think` parameter. Most models accept a boolean,
4
+ * but some (e.g. GPT-OSS) require an effort string — set {@link requiresEffortLevel} for those.
5
+ * Returns `false` when reasoning is not requested or disabled.
6
+ */
7
+ export declare function ollamaThinkParamFor(level: ReasoningLevel | undefined, requiresEffortLevel: boolean): boolean | 'low' | 'medium' | 'high';
8
+ //# sourceMappingURL=ollama-reasoning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama-reasoning.d.ts","sourceRoot":"","sources":["../../src/node/ollama-reasoning.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,mBAAmB,EAAE,OAAO,GAC7B,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAarC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ollamaThinkParamFor = ollamaThinkParamFor;
19
+ /**
20
+ * Translates a reasoning level to Ollama's `think` parameter. Most models accept a boolean,
21
+ * but some (e.g. GPT-OSS) require an effort string — set {@link requiresEffortLevel} for those.
22
+ * Returns `false` when reasoning is not requested or disabled.
23
+ */
24
+ function ollamaThinkParamFor(level, requiresEffortLevel) {
25
+ if (!level || level === 'off') {
26
+ return false;
27
+ }
28
+ if (!requiresEffortLevel) {
29
+ return true;
30
+ }
31
+ switch (level) {
32
+ case 'minimal':
33
+ case 'low': return 'low';
34
+ case 'high': return 'high';
35
+ default: return 'medium'; // 'medium' and 'auto'
36
+ }
37
+ }
38
+ //# sourceMappingURL=ollama-reasoning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama-reasoning.js","sourceRoot":"","sources":["../../src/node/ollama-reasoning.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAShF,kDAgBC;AArBD;;;;GAIG;AACH,SAAgB,mBAAmB,CAC/B,KAAiC,EACjC,mBAA4B;IAE5B,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC;QACzB,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;QAC3B,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,sBAAsB;IACpD,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@theia/ai-ollama",
3
- "version": "1.71.0-next.8+8ec70800c",
3
+ "version": "1.71.0",
4
4
  "description": "Theia - Ollama Integration",
5
5
  "dependencies": {
6
- "@theia/ai-core": "1.71.0-next.8+8ec70800c",
7
- "@theia/core": "1.71.0-next.8+8ec70800c",
8
- "@theia/filesystem": "1.71.0-next.8+8ec70800c",
9
- "@theia/workspace": "1.71.0-next.8+8ec70800c",
10
- "ollama": "^0.5.16",
6
+ "@theia/ai-core": "1.71.0",
7
+ "@theia/core": "1.71.0",
8
+ "@theia/filesystem": "1.71.0",
9
+ "@theia/workspace": "1.71.0",
10
+ "ollama": "^0.5.18",
11
11
  "tslib": "^2.6.2"
12
12
  },
13
13
  "publishConfig": {
@@ -44,10 +44,10 @@
44
44
  "watch": "theiaext watch"
45
45
  },
46
46
  "devDependencies": {
47
- "@theia/ext-scripts": "1.70.0"
47
+ "@theia/ext-scripts": "1.71.0"
48
48
  },
49
49
  "nyc": {
50
50
  "extends": "../../configs/nyc.json"
51
51
  },
52
- "gitHead": "8ec70800c488b9fc44915e8896636628b7cb8636"
52
+ "gitHead": "d8a596fc99f0a8e68b466828ed162569d79e3a71"
53
53
  }
@@ -16,7 +16,7 @@
16
16
 
17
17
  import { FrontendApplicationContribution } from '@theia/core/lib/browser';
18
18
  import { inject, injectable } from '@theia/core/shared/inversify';
19
- import { OllamaLanguageModelsManager, OllamaModelDescription } from '../common';
19
+ import { OLLAMA_REASONING_SUPPORT, OllamaLanguageModelsManager, OllamaModelDescription } from '../common';
20
20
  import { HOST_PREF, MODELS_PREF } from '../common/ollama-preferences';
21
21
  import { PreferenceService } from '@theia/core';
22
22
 
@@ -80,7 +80,11 @@ export class OllamaFrontendApplicationContribution implements FrontendApplicatio
80
80
 
81
81
  return {
82
82
  id: id,
83
- model: modelId
83
+ model: modelId,
84
+ // Whether the underlying model supports thinking is checked per-request via `ollama.show`;
85
+ // for non-thinking models the reasoning level is silently ignored, so it's safe to always
86
+ // advertise reasoning support and let the runtime decide.
87
+ reasoningSupport: OLLAMA_REASONING_SUPPORT
84
88
  };
85
89
  }
86
90
  }
@@ -14,9 +14,21 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
+ import { ReasoningSupport } from '@theia/ai-core';
18
+
17
19
  export const OLLAMA_LANGUAGE_MODELS_MANAGER_PATH = '/services/ollama/language-model-manager';
18
20
  export const OllamaLanguageModelsManager = Symbol('OllamaLanguageModelsManager');
19
21
 
22
+ /**
23
+ * Coarse Ollama reasoning support advertised at registration time. Whether a given Ollama model
24
+ * actually supports thinking is discovered per-request via `ollama.show`; for models without it
25
+ * the selector value is silently ignored.
26
+ */
27
+ export const OLLAMA_REASONING_SUPPORT: ReasoningSupport = {
28
+ supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
29
+ defaultLevel: 'auto'
30
+ };
31
+
20
32
  export interface OllamaModelDescription {
21
33
  /**
22
34
  * The identifier of the model which will be shown in the UI.
@@ -26,6 +38,11 @@ export interface OllamaModelDescription {
26
38
  * The name or ID of the model in the Ollama environment.
27
39
  */
28
40
  model: string;
41
+ /**
42
+ * When set, the chat exposes a reasoning selector for this model. Defaults to {@link OLLAMA_REASONING_SUPPORT};
43
+ * Ollama checks at request time whether the model supports thinking, so this is safe to leave on for any model.
44
+ */
45
+ reasoningSupport?: ReasoningSupport;
29
46
  }
30
47
 
31
48
  export interface OllamaLanguageModelsManager {
@@ -17,22 +17,25 @@
17
17
  import {
18
18
  LanguageModel,
19
19
  LanguageModelParsedResponse,
20
- LanguageModelRequest,
21
20
  LanguageModelMessage,
22
21
  LanguageModelResponse,
23
22
  LanguageModelStreamResponse,
24
23
  LanguageModelStreamResponsePart,
25
- ThinkingModeSettings,
24
+ ReasoningSettings,
25
+ ReasoningSupport,
26
26
  ToolCall,
27
27
  ToolRequest,
28
28
  ToolRequestParametersProperties,
29
29
  ImageContent,
30
- TokenUsageService,
31
- LanguageModelStatus
30
+ LanguageModelRequest,
31
+ LanguageModelStatus,
32
+ LanguageModelTextResponse,
33
+ UserRequest
32
34
  } from '@theia/ai-core';
33
35
  import { CancellationToken } from '@theia/core';
34
- import { ChatRequest, Message, Ollama, Options, Tool, ToolCall as OllamaToolCall, ChatResponse } from 'ollama';
36
+ import { ChatRequest, Message, Ollama, Options, Tool, ToolCall as OllamaToolCall } from 'ollama';
35
37
  import { createProxyFetch } from '@theia/ai-core/lib/node';
38
+ import { ollamaThinkParamFor } from './ollama-reasoning';
36
39
 
37
40
  export const OllamaModelIdentifier = Symbol('OllamaModelIdentifier');
38
41
 
@@ -57,11 +60,11 @@ export class OllamaModel implements LanguageModel {
57
60
  protected readonly model: string,
58
61
  public status: LanguageModelStatus,
59
62
  protected host: () => string | undefined,
60
- protected readonly tokenUsageService?: TokenUsageService,
61
- public proxy?: string
63
+ public proxy?: string,
64
+ public reasoningSupport?: ReasoningSupport
62
65
  ) { }
63
66
 
64
- async request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
67
+ async request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
65
68
  const settings = this.getSettings(request);
66
69
  const ollama = this.initializeOllama();
67
70
  const stream = !(request.settings?.stream === false); // true by default, false only if explicitly specified
@@ -74,7 +77,7 @@ export class OllamaModel implements LanguageModel {
74
77
  stream
75
78
  };
76
79
  const structured = request.response_format?.type === 'json_schema';
77
- return this.dispatchRequest(ollama, ollamaRequest, structured, cancellationToken, request.thinkingMode);
80
+ return this.dispatchRequest(ollama, ollamaRequest, structured, cancellationToken, request.reasoning);
78
81
  }
79
82
 
80
83
  /**
@@ -94,7 +97,7 @@ export class OllamaModel implements LanguageModel {
94
97
  ollamaRequest: ExtendedChatRequest,
95
98
  structured: boolean,
96
99
  cancellation?: CancellationToken,
97
- thinkingMode?: ThinkingModeSettings
100
+ reasoning?: ReasoningSettings
98
101
  ): Promise<LanguageModelResponse> {
99
102
 
100
103
  // Handle structured output request
@@ -104,21 +107,21 @@ export class OllamaModel implements LanguageModel {
104
107
 
105
108
  if (isNonStreaming(ollamaRequest)) {
106
109
  // handle non-streaming request
107
- return this.handleNonStreamingRequest(ollama, ollamaRequest, cancellation, thinkingMode);
110
+ return this.handleNonStreamingRequest(ollama, ollamaRequest, cancellation, reasoning);
108
111
  }
109
112
 
110
113
  // handle streaming request
111
- return this.handleStreamingRequest(ollama, ollamaRequest, cancellation, thinkingMode);
114
+ return this.handleStreamingRequest(ollama, ollamaRequest, cancellation, reasoning);
112
115
  }
113
116
 
114
117
  protected async handleStreamingRequest(
115
118
  ollama: Ollama,
116
119
  chatRequest: ExtendedChatRequest,
117
120
  cancellation?: CancellationToken,
118
- thinkingMode?: ThinkingModeSettings
121
+ reasoning?: ReasoningSettings
119
122
  ): Promise<LanguageModelStreamResponse> {
120
123
  const supportsThinking = await this.checkThinkingSupport(ollama, chatRequest.model);
121
- const thinkParam = supportsThinking ? this.getThinkingParameter(thinkingMode, chatRequest.model) : false;
124
+ const thinkParam = supportsThinking ? this.getThinkingParameter(reasoning, chatRequest.model) : false;
122
125
  const responseStream = await ollama.chat({
123
126
  ...chatRequest,
124
127
  stream: true,
@@ -162,8 +165,9 @@ export class OllamaModel implements LanguageModel {
162
165
  }
163
166
 
164
167
  if (chunk.done) {
165
- that.recordTokenUsage(chunk);
166
-
168
+ if (chunk.prompt_eval_count !== undefined && chunk.eval_count !== undefined) {
169
+ yield { input_tokens: chunk.prompt_eval_count, output_tokens: chunk.eval_count };
170
+ }
167
171
  if (chunk.done_reason && chunk.done_reason !== 'stop') {
168
172
  throw new Error('Ollama stopped unexpectedly. Reason: ' + chunk.done_reason);
169
173
  }
@@ -192,7 +196,7 @@ export class OllamaModel implements LanguageModel {
192
196
  ollama,
193
197
  chatRequest,
194
198
  cancellation,
195
- thinkingMode
199
+ reasoning
196
200
  );
197
201
 
198
202
  // Stream the continued response
@@ -224,58 +228,15 @@ export class OllamaModel implements LanguageModel {
224
228
  return result?.capabilities?.includes('thinking') || false;
225
229
  }
226
230
 
227
- /**
228
- * Determines the value for Ollama's 'think' parameter based on the request's thinking mode settings.
229
- *
230
- * Note: Most models support boolean values for 'think', but some models (e.g., GPT-OSS) require
231
- * effort levels ('low', 'medium', 'high') and ignore boolean values.
232
- *
233
- * @param thinkingMode The thinking mode settings from the request.
234
- * @param model The model name to check for special handling.
235
- * @returns The appropriate 'think' parameter value for the model.
236
- */
237
- protected getThinkingParameter(thinkingMode: ThinkingModeSettings | undefined, model: string): boolean | 'low' | 'medium' | 'high' {
238
- if (!thinkingMode?.enabled) {
239
- return false;
240
- }
241
-
242
- if (this.requiresEffortLevel(model)) {
243
- return this.budgetTokensToEffortLevel(thinkingMode.budgetTokens);
244
- }
245
-
246
- return true;
231
+ protected getThinkingParameter(reasoning: ReasoningSettings | undefined, model: string): boolean | 'low' | 'medium' | 'high' {
232
+ return ollamaThinkParamFor(reasoning?.level, this.requiresEffortLevel(model));
247
233
  }
248
234
 
249
- /**
250
- * Checks if the model requires effort levels instead of boolean for the 'think' parameter.
251
- *
252
- * @param model The model name to check.
253
- * @returns true if the model requires effort levels.
254
- */
235
+ /** Checks if the model requires effort levels instead of a boolean for `think`. */
255
236
  protected requiresEffortLevel(model: string): boolean {
256
237
  return model.toLowerCase().includes('gpt-oss');
257
238
  }
258
239
 
259
- /**
260
- * Maps budget tokens to Ollama effort levels.
261
- *
262
- * @param budgetTokens Optional budget tokens from thinking mode settings.
263
- * @returns The effort level ('low', 'medium', or 'high').
264
- */
265
- protected budgetTokensToEffortLevel(budgetTokens: number | undefined): 'low' | 'medium' | 'high' {
266
- if (budgetTokens === undefined) {
267
- return 'medium';
268
- }
269
-
270
- if (budgetTokens <= 2000) {
271
- return 'low';
272
- } else if (budgetTokens <= 20000) {
273
- return 'medium';
274
- } else {
275
- return 'high';
276
- }
277
- }
278
-
279
240
  protected async handleStructuredOutputRequest(ollama: Ollama, chatRequest: ChatRequest): Promise<LanguageModelParsedResponse> {
280
241
  const response = await ollama.chat({
281
242
  ...chatRequest,
@@ -283,17 +244,25 @@ export class OllamaModel implements LanguageModel {
283
244
  stream: false,
284
245
  });
285
246
  try {
286
- return {
247
+ const result: LanguageModelParsedResponse = {
287
248
  content: response.message.content,
288
249
  parsed: JSON.parse(response.message.content)
289
250
  };
251
+ if (response.prompt_eval_count !== undefined && response.eval_count !== undefined) {
252
+ result.usage = { input_tokens: response.prompt_eval_count, output_tokens: response.eval_count };
253
+ }
254
+ return result;
290
255
  } catch (error) {
291
256
  // TODO use ILogger
292
257
  console.log('Failed to parse structured response from the language model.', error);
293
- return {
258
+ const result: LanguageModelParsedResponse = {
294
259
  content: response.message.content,
295
260
  parsed: {}
296
261
  };
262
+ if (response.prompt_eval_count !== undefined && response.eval_count !== undefined) {
263
+ result.usage = { input_tokens: response.prompt_eval_count, output_tokens: response.eval_count };
264
+ }
265
+ return result;
297
266
  }
298
267
  }
299
268
 
@@ -301,14 +270,14 @@ export class OllamaModel implements LanguageModel {
301
270
  ollama: Ollama,
302
271
  chatRequest: ExtendedNonStreamingChatRequest,
303
272
  cancellation?: CancellationToken,
304
- thinkingMode?: ThinkingModeSettings
273
+ reasoning?: ReasoningSettings
305
274
  ): Promise<LanguageModelResponse> {
306
275
  try {
307
276
  // even though we have a non-streaming request, we still use the streaming version for two reasons:
308
277
  // 1. we can abort the stream if the request is cancelled instead of having to wait for the entire response
309
278
  // 2. we can use think: true so the Ollama API separates thinking from content and we can filter out the thoughts in the response
310
279
  const supportsThinking = await this.checkThinkingSupport(ollama, chatRequest.model);
311
- const thinkParam = supportsThinking ? this.getThinkingParameter(thinkingMode, chatRequest.model) : false;
280
+ const thinkParam = supportsThinking ? this.getThinkingParameter(reasoning, chatRequest.model) : false;
312
281
  const responseStream = await ollama.chat({ ...chatRequest, stream: true, think: thinkParam });
313
282
  cancellation?.onCancellationRequested(() => {
314
283
  responseStream.abort();
@@ -317,6 +286,8 @@ export class OllamaModel implements LanguageModel {
317
286
  const toolCalls: OllamaToolCall[] = [];
318
287
  let content = '';
319
288
  let lastUpdated: Date = new Date();
289
+ let inputTokenCount: number | undefined;
290
+ let outputTokenCount: number | undefined;
320
291
 
321
292
  // process the response stream
322
293
  for await (const chunk of responseStream) {
@@ -331,10 +302,11 @@ export class OllamaModel implements LanguageModel {
331
302
  toolCalls.push(...chunk.message.tool_calls);
332
303
  }
333
304
 
334
- // if the response is done, record the token usage and check the done reason
305
+ // if the response is done, capture token usage and check the done reason
335
306
  if (chunk.done) {
336
- this.recordTokenUsage(chunk);
337
307
  lastUpdated = chunk.created_at;
308
+ inputTokenCount = chunk.prompt_eval_count;
309
+ outputTokenCount = chunk.eval_count;
338
310
  if (chunk.done_reason && chunk.done_reason !== 'stop') {
339
311
  throw new Error('Ollama stopped unexpectedly. Reason: ' + chunk.done_reason);
340
312
  }
@@ -356,11 +328,15 @@ export class OllamaModel implements LanguageModel {
356
328
  }
357
329
 
358
330
  // recurse to get the final response content (the intermediate content remains hidden, it is only part of the conversation)
359
- return this.handleNonStreamingRequest(ollama, chatRequest, cancellation, thinkingMode);
331
+ return this.handleNonStreamingRequest(ollama, chatRequest, cancellation, reasoning);
360
332
  }
361
333
 
362
334
  // if no tool calls are necessary, return the final response content
363
- return { text: content };
335
+ const result: LanguageModelTextResponse = { text: content };
336
+ if (inputTokenCount !== undefined && outputTokenCount !== undefined) {
337
+ result.usage = { input_tokens: inputTokenCount, output_tokens: outputTokenCount };
338
+ }
339
+ return result;
364
340
  } catch (error) {
365
341
  console.error('Error in ollama call:', error.message);
366
342
  throw error;
@@ -413,16 +389,6 @@ export class OllamaModel implements LanguageModel {
413
389
  return toolCallsForResponse;
414
390
  }
415
391
 
416
- private recordTokenUsage(response: ChatResponse): void {
417
- if (this.tokenUsageService && response.prompt_eval_count && response.eval_count) {
418
- this.tokenUsageService.recordTokenUsage(this.id, {
419
- inputTokens: response.prompt_eval_count,
420
- outputTokens: response.eval_count,
421
- requestId: `ollama_${response.created_at}`
422
- }).catch(error => console.error('Error recording token usage:', error));
423
- }
424
- }
425
-
426
392
  protected initializeOllama(): Ollama {
427
393
  const host = this.host();
428
394
  if (!host) {
@@ -14,7 +14,7 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
- import { LanguageModelRegistry, LanguageModelStatus, TokenUsageService } from '@theia/ai-core';
17
+ import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
18
18
  import { getProxyUrl } from '@theia/ai-core/lib/node';
19
19
  import { inject, injectable } from '@theia/core/shared/inversify';
20
20
  import { OllamaModel } from './ollama-language-model';
@@ -29,9 +29,6 @@ export class OllamaLanguageModelsManagerImpl implements OllamaLanguageModelsMana
29
29
  @inject(LanguageModelRegistry)
30
30
  protected readonly languageModelRegistry: LanguageModelRegistry;
31
31
 
32
- @inject(TokenUsageService)
33
- protected readonly tokenUsageService: TokenUsageService;
34
-
35
32
  get host(): string | undefined {
36
33
  return this._host ?? process.env.OLLAMA_HOST;
37
34
  }
@@ -59,7 +56,8 @@ export class OllamaLanguageModelsManagerImpl implements OllamaLanguageModelsMana
59
56
  const status = this.calculateStatus(host);
60
57
  await this.languageModelRegistry.patchLanguageModel<OllamaModel>(modelDescription.id, {
61
58
  proxy: proxyUrl,
62
- status
59
+ status,
60
+ reasoningSupport: modelDescription.reasoningSupport
63
61
  });
64
62
  } else {
65
63
  const status = this.calculateStatus(host);
@@ -69,8 +67,8 @@ export class OllamaLanguageModelsManagerImpl implements OllamaLanguageModelsMana
69
67
  modelDescription.model,
70
68
  status,
71
69
  hostProvider,
72
- this.tokenUsageService,
73
- proxyUrl
70
+ proxyUrl,
71
+ modelDescription.reasoningSupport
74
72
  )
75
73
  ]);
76
74
  }
@@ -0,0 +1,40 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 EclipseSource GmbH.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { ReasoningLevel } from '@theia/ai-core';
18
+
19
+ /**
20
+ * Translates a reasoning level to Ollama's `think` parameter. Most models accept a boolean,
21
+ * but some (e.g. GPT-OSS) require an effort string — set {@link requiresEffortLevel} for those.
22
+ * Returns `false` when reasoning is not requested or disabled.
23
+ */
24
+ export function ollamaThinkParamFor(
25
+ level: ReasoningLevel | undefined,
26
+ requiresEffortLevel: boolean
27
+ ): boolean | 'low' | 'medium' | 'high' {
28
+ if (!level || level === 'off') {
29
+ return false;
30
+ }
31
+ if (!requiresEffortLevel) {
32
+ return true;
33
+ }
34
+ switch (level) {
35
+ case 'minimal':
36
+ case 'low': return 'low';
37
+ case 'high': return 'high';
38
+ default: return 'medium'; // 'medium' and 'auto'
39
+ }
40
+ }