@dexto/core 1.8.0 → 1.8.2

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 (166) hide show
  1. package/dist/agent/DextoAgent.cjs +10 -16
  2. package/dist/agent/DextoAgent.d.ts +2 -2
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +8 -5
  5. package/dist/agent/types.d.ts +1 -1
  6. package/dist/agent/types.d.ts.map +1 -1
  7. package/dist/context/compaction/overflow.d.ts +1 -1
  8. package/dist/context/compaction/overflow.d.ts.map +1 -1
  9. package/dist/context/manager.cjs +8 -8
  10. package/dist/context/manager.d.ts +1 -1
  11. package/dist/context/manager.d.ts.map +1 -1
  12. package/dist/context/manager.js +1 -1
  13. package/dist/context/types.d.ts +1 -1
  14. package/dist/context/types.d.ts.map +1 -1
  15. package/dist/context/utils.cjs +3 -3
  16. package/dist/context/utils.d.ts +1 -1
  17. package/dist/context/utils.d.ts.map +1 -1
  18. package/dist/context/utils.js +1 -1
  19. package/dist/events/index.d.ts +2 -2
  20. package/dist/events/index.d.ts.map +1 -1
  21. package/dist/index.browser.cjs +9 -9
  22. package/dist/index.browser.d.ts +4 -4
  23. package/dist/index.browser.d.ts.map +1 -1
  24. package/dist/index.browser.js +1 -1
  25. package/dist/llm/auth/index.cjs +16 -0
  26. package/dist/llm/auth/index.d.ts +2 -0
  27. package/dist/llm/auth/index.d.ts.map +1 -0
  28. package/dist/llm/auth/index.js +0 -0
  29. package/dist/llm/auth/types.cjs +16 -0
  30. package/dist/llm/auth/types.d.ts +25 -0
  31. package/dist/llm/auth/types.d.ts.map +1 -0
  32. package/dist/llm/auth/types.js +0 -0
  33. package/dist/llm/curation-config.cjs +3 -3
  34. package/dist/llm/curation-config.d.ts +1 -1
  35. package/dist/llm/curation-config.js +3 -3
  36. package/dist/llm/curation.cjs +2 -2
  37. package/dist/llm/curation.d.ts +2 -2
  38. package/dist/llm/curation.d.ts.map +1 -1
  39. package/dist/llm/curation.js +1 -1
  40. package/dist/llm/errors.cjs +3 -3
  41. package/dist/llm/errors.d.ts +1 -1
  42. package/dist/llm/errors.d.ts.map +1 -1
  43. package/dist/llm/errors.js +1 -1
  44. package/dist/llm/executor/provider-options.cjs +22 -25
  45. package/dist/llm/executor/provider-options.d.ts +1 -1
  46. package/dist/llm/executor/provider-options.d.ts.map +1 -1
  47. package/dist/llm/executor/provider-options.js +17 -16
  48. package/dist/llm/executor/stream-processor.d.ts +1 -1
  49. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  50. package/dist/llm/executor/turn-executor.d.ts +1 -1
  51. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  52. package/dist/llm/executor/types.d.ts +1 -1
  53. package/dist/llm/executor/types.d.ts.map +1 -1
  54. package/dist/llm/formatters/vercel.cjs +2 -2
  55. package/dist/llm/formatters/vercel.d.ts +1 -1
  56. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  57. package/dist/llm/index.cjs +0 -4
  58. package/dist/llm/index.d.ts +1 -2
  59. package/dist/llm/index.d.ts.map +1 -1
  60. package/dist/llm/index.js +0 -2
  61. package/dist/llm/registry/auto-update.cjs +5 -5
  62. package/dist/llm/registry/auto-update.d.ts.map +1 -1
  63. package/dist/llm/registry/auto-update.js +2 -2
  64. package/dist/llm/registry/index.cjs +96 -789
  65. package/dist/llm/registry/index.d.ts +4 -323
  66. package/dist/llm/registry/index.d.ts.map +1 -1
  67. package/dist/llm/registry/index.js +99 -762
  68. package/dist/llm/registry/sync.d.ts +2 -2
  69. package/dist/llm/registry/sync.d.ts.map +1 -1
  70. package/dist/llm/resolver.cjs +7 -6
  71. package/dist/llm/resolver.d.ts +1 -1
  72. package/dist/llm/resolver.js +4 -4
  73. package/dist/llm/schemas.cjs +14 -14
  74. package/dist/llm/schemas.d.ts +1 -1
  75. package/dist/llm/schemas.d.ts.map +1 -1
  76. package/dist/llm/schemas.js +5 -4
  77. package/dist/llm/services/factory.cjs +124 -33
  78. package/dist/llm/services/factory.d.ts.map +1 -1
  79. package/dist/llm/services/factory.js +128 -35
  80. package/dist/llm/services/types.d.ts +8 -1
  81. package/dist/llm/services/types.d.ts.map +1 -1
  82. package/dist/llm/usage-metadata.cjs +3 -3
  83. package/dist/llm/usage-metadata.d.ts +2 -2
  84. package/dist/llm/usage-metadata.d.ts.map +1 -1
  85. package/dist/llm/usage-metadata.js +1 -4
  86. package/dist/llm/usage-summary.d.ts +1 -1
  87. package/dist/llm/validation.cjs +4 -4
  88. package/dist/llm/validation.d.ts +1 -1
  89. package/dist/llm/validation.js +1 -1
  90. package/dist/session/chat-session.cjs +2 -12
  91. package/dist/session/chat-session.d.ts +2 -0
  92. package/dist/session/chat-session.d.ts.map +1 -1
  93. package/dist/session/chat-session.js +2 -13
  94. package/dist/session/session-manager.cjs +4 -1
  95. package/dist/session/session-manager.d.ts +5 -1
  96. package/dist/session/session-manager.d.ts.map +1 -1
  97. package/dist/session/session-manager.js +4 -1
  98. package/dist/utils/api-key-resolver.d.ts +1 -1
  99. package/dist/utils/api-key-resolver.d.ts.map +1 -1
  100. package/dist/utils/result.cjs +1 -1
  101. package/dist/utils/result.js +1 -1
  102. package/dist/utils/service-initializer.cjs +3 -0
  103. package/dist/utils/service-initializer.d.ts +2 -0
  104. package/dist/utils/service-initializer.d.ts.map +1 -1
  105. package/dist/utils/service-initializer.js +3 -0
  106. package/package.json +3 -2
  107. package/dist/llm/reasoning/anthropic-betas.cjs +0 -31
  108. package/dist/llm/reasoning/anthropic-betas.d.ts +0 -3
  109. package/dist/llm/reasoning/anthropic-betas.d.ts.map +0 -1
  110. package/dist/llm/reasoning/anthropic-betas.js +0 -7
  111. package/dist/llm/reasoning/anthropic-thinking.cjs +0 -79
  112. package/dist/llm/reasoning/anthropic-thinking.d.ts +0 -15
  113. package/dist/llm/reasoning/anthropic-thinking.d.ts.map +0 -1
  114. package/dist/llm/reasoning/anthropic-thinking.js +0 -52
  115. package/dist/llm/reasoning/openai-reasoning-effort.cjs +0 -86
  116. package/dist/llm/reasoning/openai-reasoning-effort.d.ts +0 -5
  117. package/dist/llm/reasoning/openai-reasoning-effort.d.ts.map +0 -1
  118. package/dist/llm/reasoning/openai-reasoning-effort.js +0 -61
  119. package/dist/llm/reasoning/profile.cjs +0 -113
  120. package/dist/llm/reasoning/profile.d.ts +0 -13
  121. package/dist/llm/reasoning/profile.d.ts.map +0 -1
  122. package/dist/llm/reasoning/profile.js +0 -92
  123. package/dist/llm/reasoning/profiles/anthropic.cjs +0 -61
  124. package/dist/llm/reasoning/profiles/anthropic.d.ts +0 -8
  125. package/dist/llm/reasoning/profiles/anthropic.d.ts.map +0 -1
  126. package/dist/llm/reasoning/profiles/anthropic.js +0 -45
  127. package/dist/llm/reasoning/profiles/bedrock.cjs +0 -54
  128. package/dist/llm/reasoning/profiles/bedrock.d.ts +0 -3
  129. package/dist/llm/reasoning/profiles/bedrock.d.ts.map +0 -1
  130. package/dist/llm/reasoning/profiles/bedrock.js +0 -36
  131. package/dist/llm/reasoning/profiles/google.cjs +0 -45
  132. package/dist/llm/reasoning/profiles/google.d.ts +0 -9
  133. package/dist/llm/reasoning/profiles/google.d.ts.map +0 -1
  134. package/dist/llm/reasoning/profiles/google.js +0 -21
  135. package/dist/llm/reasoning/profiles/openai-compatible.cjs +0 -39
  136. package/dist/llm/reasoning/profiles/openai-compatible.d.ts +0 -3
  137. package/dist/llm/reasoning/profiles/openai-compatible.d.ts.map +0 -1
  138. package/dist/llm/reasoning/profiles/openai-compatible.js +0 -16
  139. package/dist/llm/reasoning/profiles/openai.cjs +0 -41
  140. package/dist/llm/reasoning/profiles/openai.d.ts +0 -3
  141. package/dist/llm/reasoning/profiles/openai.d.ts.map +0 -1
  142. package/dist/llm/reasoning/profiles/openai.js +0 -18
  143. package/dist/llm/reasoning/profiles/openrouter.cjs +0 -83
  144. package/dist/llm/reasoning/profiles/openrouter.d.ts +0 -10
  145. package/dist/llm/reasoning/profiles/openrouter.d.ts.map +0 -1
  146. package/dist/llm/reasoning/profiles/openrouter.js +0 -59
  147. package/dist/llm/reasoning/profiles/shared.cjs +0 -80
  148. package/dist/llm/reasoning/profiles/shared.d.ts +0 -25
  149. package/dist/llm/reasoning/profiles/shared.d.ts.map +0 -1
  150. package/dist/llm/reasoning/profiles/shared.js +0 -53
  151. package/dist/llm/reasoning/profiles/vertex.cjs +0 -46
  152. package/dist/llm/reasoning/profiles/vertex.d.ts +0 -3
  153. package/dist/llm/reasoning/profiles/vertex.d.ts.map +0 -1
  154. package/dist/llm/reasoning/profiles/vertex.js +0 -23
  155. package/dist/llm/registry/models.generated.cjs +0 -10741
  156. package/dist/llm/registry/models.generated.d.ts +0 -2945
  157. package/dist/llm/registry/models.generated.d.ts.map +0 -1
  158. package/dist/llm/registry/models.generated.js +0 -10717
  159. package/dist/llm/registry/models.manual.cjs +0 -44
  160. package/dist/llm/registry/models.manual.d.ts +0 -22
  161. package/dist/llm/registry/models.manual.d.ts.map +0 -1
  162. package/dist/llm/registry/models.manual.js +0 -21
  163. package/dist/llm/types.cjs +0 -55
  164. package/dist/llm/types.d.ts +0 -39
  165. package/dist/llm/types.d.ts.map +0 -1
  166. package/dist/llm/types.js +0 -30
@@ -1,5 +1,5 @@
1
- import type { LLMProvider } from '../types.js';
2
- import type { ModelInfo } from './index.js';
1
+ import type { LLMProvider } from '@dexto/llm';
2
+ import type { ModelInfo } from '@dexto/llm';
3
3
  export declare const MODELS_DEV_URL = "https://models.dev/api.json";
4
4
  type ModelsDevApi = Record<string, ModelsDevProvider>;
5
5
  type ModelsDevProvider = {
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/llm/registry/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAK5C,eAAO,MAAM,cAAc,gCAAgC,CAAC;AAE5D,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AACtD,KAAK,iBAAiB,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC1C,CAAC;AACF,KAAK,cAAc,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE;QACP,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,KAAK,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,CAAC,EACL;QACI,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC;QAC3D,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC;KAC/D,GACD,SAAS,CAAC;IAChB,IAAI,CAAC,EACC;QACI,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GACD,SAAS,CAAC;CACnB,CAAC;AA2CF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CA6J7D;AAmKD,wBAAgB,sCAAsC,CAAC,MAAM,EAAE;IAC3D,YAAY,EAAE,YAAY,CAAC;CAC9B,GAAG,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,CAuJnC;AAED,wBAAsB,+BAA+B,CAAC,OAAO,CAAC,EAAE;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAoB5C"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/llm/registry/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAK5C,eAAO,MAAM,cAAc,gCAAgC,CAAC;AAE5D,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AACtD,KAAK,iBAAiB,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC1C,CAAC;AACF,KAAK,cAAc,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE;QACP,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,KAAK,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,CAAC,EACL;QACI,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC;QAC3D,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC;KAC/D,GACD,SAAS,CAAC;IAChB,IAAI,CAAC,EACC;QACI,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GACD,SAAS,CAAC;CACnB,CAAC;AA2CF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CA6J7D;AAmKD,wBAAgB,sCAAsC,CAAC,MAAM,EAAE;IAC3D,YAAY,EAAE,YAAY,CAAC;CAC9B,GAAG,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,CAuJnC;AAED,wBAAsB,+BAA+B,CAAC,OAAO,CAAC,EAAE;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAoB5C"}
@@ -27,6 +27,7 @@ var import_result = require("../utils/result.js");
27
27
  var import_types = require("../errors/types.js");
28
28
  var import_error_codes = require("./error-codes.js");
29
29
  var import_schemas2 = require("./schemas.js");
30
+ var import_llm = require("@dexto/llm");
30
31
  var import_registry = require("./registry/index.js");
31
32
  var import_openrouter_model_registry = require("./providers/openrouter-model-registry.js");
32
33
  var import_api_key_resolver = require("../utils/api-key-resolver.js");
@@ -43,7 +44,7 @@ async function resolveLLMConfig(previous, updates, logger) {
43
44
  const warnings = [];
44
45
  const provider = updates.provider ?? (updates.model && !updates.model.includes("/") ? (() => {
45
46
  try {
46
- return (0, import_registry.getProviderFromModel)(updates.model);
47
+ return (0, import_llm.getProviderFromModel)(updates.model);
47
48
  } catch {
48
49
  return previous.provider;
49
50
  }
@@ -70,8 +71,8 @@ async function resolveLLMConfig(previous, updates, logger) {
70
71
  });
71
72
  }
72
73
  let model = updates.model ?? previous.model;
73
- if (provider !== previous.provider && !(0, import_registry.acceptsAnyModel)(provider) && !(0, import_registry.supportsCustomModels)(provider) && !(0, import_registry.isValidProviderModel)(provider, model)) {
74
- model = (0, import_registry.getDefaultModelForProvider)(provider) ?? previous.model;
74
+ if (provider !== previous.provider && !(0, import_llm.acceptsAnyModel)(provider) && !(0, import_llm.supportsCustomModels)(provider) && !(0, import_llm.isValidProviderModel)(provider, model)) {
75
+ model = (0, import_llm.getDefaultModelForProvider)(provider) ?? previous.model;
75
76
  warnings.push({
76
77
  code: import_error_codes.LLMErrorCode.MODEL_INCOMPATIBLE,
77
78
  message: `Model set to default '${model}' for provider '${provider}'`,
@@ -81,8 +82,8 @@ async function resolveLLMConfig(previous, updates, logger) {
81
82
  context: { provider, model }
82
83
  });
83
84
  }
84
- if (provider !== previous.provider && updates.model == null && (0, import_registry.hasAllRegistryModelsSupport)(provider) && !model.includes("/")) {
85
- const defaultGatewayModel = (0, import_registry.getDefaultModelForProvider)(provider);
85
+ if (provider !== previous.provider && updates.model == null && (0, import_llm.hasAllRegistryModelsSupport)(provider) && !model.includes("/")) {
86
+ const defaultGatewayModel = (0, import_llm.getDefaultModelForProvider)(provider);
86
87
  if (defaultGatewayModel) {
87
88
  model = defaultGatewayModel;
88
89
  warnings.push({
@@ -98,7 +99,7 @@ async function resolveLLMConfig(previous, updates, logger) {
98
99
  let baseURL;
99
100
  if (updates.baseURL) {
100
101
  baseURL = updates.baseURL;
101
- } else if ((0, import_registry.supportsBaseURL)(provider)) {
102
+ } else if ((0, import_llm.supportsBaseURL)(provider)) {
102
103
  baseURL = previous.baseURL;
103
104
  } else {
104
105
  baseURL = void 0;
@@ -1,7 +1,7 @@
1
1
  import { Result } from '../utils/result.js';
2
2
  import { Issue } from '../errors/types.js';
3
3
  import { type ValidatedLLMConfig, type LLMUpdates, type LLMConfig } from './schemas.js';
4
- import type { LLMUpdateContext } from './types.js';
4
+ import type { LLMUpdateContext } from '@dexto/llm';
5
5
  import type { Logger } from '../logger/v2/types.js';
6
6
  /**
7
7
  * Convenience function that combines resolveLLM and validateLLM
@@ -6,13 +6,13 @@ import { LLMConfigSchema } from "./schemas.js";
6
6
  import {
7
7
  getDefaultModelForProvider,
8
8
  acceptsAnyModel,
9
- getProviderFromModel,
10
9
  isValidProviderModel,
11
- getEffectiveMaxInputTokens,
12
10
  supportsBaseURL,
13
11
  supportsCustomModels,
14
- hasAllRegistryModelsSupport
15
- } from "./registry/index.js";
12
+ hasAllRegistryModelsSupport,
13
+ getProviderFromModel
14
+ } from "@dexto/llm";
15
+ import { getEffectiveMaxInputTokens } from "./registry/index.js";
16
16
  import {
17
17
  lookupOpenRouterModel,
18
18
  refreshOpenRouterModelCache
@@ -28,11 +28,11 @@ var import_types = require("../errors/types.js");
28
28
  var import_errors = require("../errors/index.js");
29
29
  var import_result = require("../utils/result.js");
30
30
  var import_zod = require("zod");
31
+ var import_llm = require("@dexto/llm");
31
32
  var import_registry = require("./registry/index.js");
32
- var import_types2 = require("./types.js");
33
- var import_profile = require("./reasoning/profile.js");
33
+ var import_llm2 = require("@dexto/llm");
34
34
  const LLMConfigFields = {
35
- provider: import_zod.z.enum(import_types2.LLM_PROVIDERS).describe("LLM provider (e.g., 'openai', 'anthropic', 'google', 'groq')"),
35
+ provider: import_zod.z.enum(import_llm2.LLM_PROVIDERS).describe("LLM provider (e.g., 'openai', 'anthropic', 'google', 'groq')"),
36
36
  model: import_result.NonEmptyTrimmed.describe("Specific model name for the selected provider"),
37
37
  // Expand $ENV refs and trim; final validation happens with provider context
38
38
  // Optional for providers that don't need API keys (Ollama, vLLM, etc.)
@@ -76,7 +76,7 @@ const LLMConfigBaseSchema = import_zod.z.object({
76
76
  const LLMConfigSchema = LLMConfigBaseSchema.superRefine((data, ctx) => {
77
77
  const baseURLIsSet = data.baseURL != null && data.baseURL.trim() !== "";
78
78
  const maxInputTokensIsSet = data.maxInputTokens != null;
79
- if ((0, import_registry.hasAllRegistryModelsSupport)(data.provider) && !data.model.includes("/")) {
79
+ if ((0, import_llm.hasAllRegistryModelsSupport)(data.provider) && !data.model.includes("/")) {
80
80
  ctx.addIssue({
81
81
  code: import_zod.z.ZodIssueCode.custom,
82
82
  path: ["model"],
@@ -89,7 +89,7 @@ const LLMConfigSchema = LLMConfigBaseSchema.superRefine((data, ctx) => {
89
89
  });
90
90
  }
91
91
  if (baseURLIsSet) {
92
- if (!(0, import_registry.supportsBaseURL)(data.provider)) {
92
+ if (!(0, import_llm.supportsBaseURL)(data.provider)) {
93
93
  ctx.addIssue({
94
94
  code: import_zod.z.ZodIssueCode.custom,
95
95
  path: ["provider"],
@@ -102,10 +102,10 @@ const LLMConfigSchema = LLMConfigBaseSchema.superRefine((data, ctx) => {
102
102
  });
103
103
  }
104
104
  }
105
- if (!baseURLIsSet || (0, import_registry.supportsBaseURL)(data.provider)) {
106
- if (!(0, import_registry.acceptsAnyModel)(data.provider) && !(0, import_registry.supportsCustomModels)(data.provider)) {
107
- const supportedModelsList = (0, import_registry.getSupportedModels)(data.provider);
108
- if (!(0, import_registry.isValidProviderModel)(data.provider, data.model)) {
105
+ if (!baseURLIsSet || (0, import_llm.supportsBaseURL)(data.provider)) {
106
+ if (!(0, import_llm.acceptsAnyModel)(data.provider) && !(0, import_llm.supportsCustomModels)(data.provider)) {
107
+ const supportedModelsList = (0, import_llm.getSupportedModels)(data.provider);
108
+ if (!(0, import_llm.isValidProviderModel)(data.provider, data.model)) {
109
109
  ctx.addIssue({
110
110
  code: import_zod.z.ZodIssueCode.custom,
111
111
  path: ["model"],
@@ -118,7 +118,7 @@ const LLMConfigSchema = LLMConfigBaseSchema.superRefine((data, ctx) => {
118
118
  });
119
119
  }
120
120
  }
121
- if (maxInputTokensIsSet && !(0, import_registry.acceptsAnyModel)(data.provider) && !(0, import_registry.supportsCustomModels)(data.provider)) {
121
+ if (maxInputTokensIsSet && !(0, import_llm.acceptsAnyModel)(data.provider) && !(0, import_llm.supportsCustomModels)(data.provider)) {
122
122
  try {
123
123
  const cap = (0, import_registry.getMaxInputTokensForModel)(data.provider, data.model);
124
124
  if (data.maxInputTokens > cap) {
@@ -162,10 +162,10 @@ const LLMConfigSchema = LLMConfigBaseSchema.superRefine((data, ctx) => {
162
162
  }
163
163
  }
164
164
  if (data.reasoning) {
165
- const profile = (0, import_profile.getReasoningProfile)(data.provider, data.model);
165
+ const profile = (0, import_llm.getReasoningProfile)(data.provider, data.model);
166
166
  const variant = data.reasoning.variant;
167
167
  const budgetTokens = data.reasoning.budgetTokens;
168
- if (!(0, import_profile.supportsReasoningVariant)(profile, variant)) {
168
+ if (!(0, import_llm.supportsReasoningVariant)(profile, variant)) {
169
169
  ctx.addIssue({
170
170
  code: import_zod.z.ZodIssueCode.custom,
171
171
  path: ["reasoning", "variant"],
@@ -205,10 +205,10 @@ const LLMUpdatesSchema = import_zod.z.object({
205
205
  });
206
206
  }
207
207
  if (data.reasoning && data.reasoning !== null && typeof data.provider === "string" && typeof data.model === "string") {
208
- const profile = (0, import_profile.getReasoningProfile)(data.provider, data.model);
208
+ const profile = (0, import_llm.getReasoningProfile)(data.provider, data.model);
209
209
  const variant = data.reasoning.variant;
210
210
  const budgetTokens = data.reasoning.budgetTokens;
211
- if (!(0, import_profile.supportsReasoningVariant)(profile, variant)) {
211
+ if (!(0, import_llm.supportsReasoningVariant)(profile, variant)) {
212
212
  ctx.addIssue({
213
213
  code: import_zod.z.ZodIssueCode.custom,
214
214
  path: ["reasoning", "variant"],
@@ -109,5 +109,5 @@ export declare const LLMUpdatesSchema: z.ZodObject<{
109
109
  allowedMediaTypes: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
110
110
  }, z.core.$strip>;
111
111
  export type LLMUpdates = z.input<typeof LLMUpdatesSchema>;
112
- export type { LLMUpdateContext } from '../llm/types.js';
112
+ export type { LLMUpdateContext } from '@dexto/llm';
113
113
  //# sourceMappingURL=schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/llm/schemas.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuFxB,4CAA4C;AAG5C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiBnB,CAAC;AAEd;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAyJ1B,CAAC;AAGH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAIlE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4DvB,CAAC;AACP,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/llm/schemas.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwFxB,4CAA4C;AAG5C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiBnB,CAAC;AAEd;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAyJ1B,CAAC;AAGH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AAIlE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4DvB,CAAC;AACP,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -10,11 +10,12 @@ import {
10
10
  supportsCustomModels,
11
11
  hasAllRegistryModelsSupport,
12
12
  getSupportedModels,
13
+ getReasoningProfile,
13
14
  isValidProviderModel,
14
- getMaxInputTokensForModel
15
- } from "./registry/index.js";
16
- import { LLM_PROVIDERS } from "./types.js";
17
- import { getReasoningProfile, supportsReasoningVariant } from "./reasoning/profile.js";
15
+ supportsReasoningVariant
16
+ } from "@dexto/llm";
17
+ import { getMaxInputTokensForModel } from "./registry/index.js";
18
+ import { LLM_PROVIDERS } from "@dexto/llm";
18
19
  const LLMConfigFields = {
19
20
  provider: z.enum(LLM_PROVIDERS).describe("LLM provider (e.g., 'openai', 'anthropic', 'google', 'groq')"),
20
21
  model: NonEmptyTrimmed.describe("Specific model name for the selected provider"),
@@ -36,13 +36,11 @@ var import_ai_sdk_provider = require("@openrouter/ai-sdk-provider");
36
36
  var import_vercel = require("./vercel.js");
37
37
  var import_cohere = require("@ai-sdk/cohere");
38
38
  var import_ai_sdk_adapter = require("../providers/local/ai-sdk-adapter.js");
39
- var import_registry = require("../registry/index.js");
39
+ var import_llm = require("@dexto/llm");
40
40
  var import_api_key_resolver = require("../../utils/api-key-resolver.js");
41
41
  var import_codex_app_server = require("../providers/codex-app-server.js");
42
42
  var import_codex_base_url = require("../providers/codex-base-url.js");
43
43
  var import_execution_context = require("../../utils/execution-context.js");
44
- var import_anthropic_betas = require("../reasoning/anthropic-betas.js");
45
- var import_anthropic_thinking = require("../reasoning/anthropic-thinking.js");
46
44
  function isLanguageModel(value) {
47
45
  if (!value || typeof value !== "object") return false;
48
46
  const candidate = value;
@@ -77,34 +75,95 @@ function resolveProviderWorkingDirectory(explicitCwd) {
77
75
  }
78
76
  return (0, import_execution_context.findDextoProjectRoot)(process.cwd()) ?? process.cwd();
79
77
  }
78
+ function mergeHeaders(base, override) {
79
+ const merged = {
80
+ ...base ?? {},
81
+ ...override ?? {}
82
+ };
83
+ return Object.keys(merged).length > 0 ? merged : void 0;
84
+ }
85
+ function logRuntimeAuthResolution(input) {
86
+ const {
87
+ context,
88
+ provider,
89
+ model,
90
+ configApiKey,
91
+ resolvedApiKey,
92
+ runtimeAuth,
93
+ effectiveBaseURL
94
+ } = input;
95
+ if (!context?.logger) {
96
+ return;
97
+ }
98
+ const auth = runtimeAuth?.auth ?? (configApiKey?.trim() ? { source: "config_api_key" } : resolvedApiKey?.trim() ? { source: "environment", envVar: (0, import_api_key_resolver.getPrimaryApiKeyEnvVar)(provider) } : { source: "none" });
99
+ context.logger.info("LLM runtime auth resolved", {
100
+ provider,
101
+ model,
102
+ auth,
103
+ runtime: {
104
+ hasRuntimeFetch: Boolean(runtimeAuth?.fetch),
105
+ hasRuntimeHeaders: Boolean(runtimeAuth?.headers),
106
+ hasRuntimeBaseURL: Boolean(runtimeAuth?.baseURL),
107
+ hasEffectiveBaseURL: Boolean(effectiveBaseURL)
108
+ }
109
+ });
110
+ }
80
111
  function createVercelModel(llmConfig, context) {
81
112
  const { provider, model, baseURL } = llmConfig;
82
- const apiKey = llmConfig.apiKey || (0, import_api_key_resolver.resolveApiKeyForProvider)(provider);
83
- if ((0, import_registry.requiresApiKey)(provider) && !apiKey?.trim()) {
113
+ const runtimeAuth = context?.authResolver?.resolveRuntimeAuth({
114
+ provider,
115
+ model,
116
+ apiKey: llmConfig.apiKey,
117
+ baseURL
118
+ }) ?? null;
119
+ const resolvedProviderApiKey = (0, import_api_key_resolver.resolveApiKeyForProvider)(provider);
120
+ const apiKey = runtimeAuth?.apiKey || llmConfig.apiKey || resolvedProviderApiKey;
121
+ const runtimeBaseURL = runtimeAuth?.baseURL;
122
+ const runtimeHeaders = runtimeAuth?.headers;
123
+ const runtimeFetch = runtimeAuth?.fetch;
124
+ const effectiveBaseURL = runtimeBaseURL?.replace(/\/$/, "") || baseURL?.replace(/\/$/, "");
125
+ const usesCodexRuntimeAuth = runtimeBaseURL ? (0, import_codex_base_url.isCodexBaseURL)(runtimeBaseURL) : false;
126
+ logRuntimeAuthResolution({
127
+ context,
128
+ provider,
129
+ model,
130
+ configApiKey: llmConfig.apiKey,
131
+ resolvedApiKey: resolvedProviderApiKey,
132
+ runtimeAuth,
133
+ effectiveBaseURL
134
+ });
135
+ if ((0, import_llm.requiresApiKey)(provider) && !usesCodexRuntimeAuth && !apiKey?.trim()) {
84
136
  const envVar = (0, import_api_key_resolver.getPrimaryApiKeyEnvVar)(provider);
85
137
  throw import_errors.LLMError.apiKeyMissing(provider, envVar);
86
138
  }
87
139
  switch (provider.toLowerCase()) {
88
140
  case "openai": {
89
- return (0, import_openai.createOpenAI)({ apiKey: apiKey ?? "" }).responses(model);
90
- }
91
- case "openai-compatible": {
92
- const compatibleBaseURL = baseURL?.replace(/\/$/, "") || process.env.OPENAI_BASE_URL?.replace(/\/$/, "");
93
- if (!compatibleBaseURL) {
94
- throw import_errors.LLMError.baseUrlMissing("openai-compatible");
95
- }
96
- if ((0, import_codex_base_url.isCodexBaseURL)(compatibleBaseURL)) {
141
+ if (usesCodexRuntimeAuth && runtimeBaseURL) {
97
142
  return (0, import_codex_app_server.createCodexLanguageModel)({
98
143
  modelId: model,
99
- baseURL: compatibleBaseURL,
144
+ baseURL: runtimeBaseURL,
100
145
  cwd: resolveProviderWorkingDirectory(context?.cwd),
101
146
  ...context?.onCodexRateLimitStatus ? { onRateLimitStatus: context.onCodexRateLimitStatus } : {}
102
147
  });
103
148
  }
149
+ return (0, import_openai.createOpenAI)({
150
+ apiKey: apiKey ?? "",
151
+ ...effectiveBaseURL ? { baseURL: effectiveBaseURL } : {},
152
+ ...runtimeHeaders ? { headers: runtimeHeaders } : {},
153
+ ...runtimeFetch ? { fetch: runtimeFetch } : {}
154
+ }).responses(model);
155
+ }
156
+ case "openai-compatible": {
157
+ const compatibleBaseURL = effectiveBaseURL || process.env.OPENAI_BASE_URL?.replace(/\/$/, "");
158
+ if (!compatibleBaseURL) {
159
+ throw import_errors.LLMError.baseUrlMissing("openai-compatible");
160
+ }
104
161
  const provider2 = (0, import_openai_compatible.createOpenAICompatible)({
105
162
  name: "openaiCompatible",
106
163
  baseURL: compatibleBaseURL,
107
- ...apiKey?.trim() ? { apiKey } : {}
164
+ ...apiKey?.trim() ? { apiKey } : {},
165
+ ...runtimeHeaders ? { headers: runtimeHeaders } : {},
166
+ ...runtimeFetch ? { fetch: runtimeFetch } : {}
108
167
  });
109
168
  return provider2.chatModel(model);
110
169
  }
@@ -126,26 +185,47 @@ function createVercelModel(llmConfig, context) {
126
185
  return chatModel;
127
186
  }
128
187
  case "minimax": {
129
- const minimaxBaseURL = baseURL || "https://api.minimax.chat/v1";
130
- return (0, import_openai.createOpenAI)({ apiKey: apiKey ?? "", baseURL: minimaxBaseURL }).chat(model);
188
+ const minimaxBaseURL = effectiveBaseURL || "https://api.minimax.chat/v1";
189
+ return (0, import_openai.createOpenAI)({
190
+ apiKey: apiKey ?? "",
191
+ baseURL: minimaxBaseURL,
192
+ ...runtimeHeaders ? { headers: runtimeHeaders } : {},
193
+ ...runtimeFetch ? { fetch: runtimeFetch } : {}
194
+ }).chat(model);
131
195
  }
132
196
  case "glm": {
133
- const glmBaseURL = baseURL || "https://open.bigmodel.cn/api/paas/v4";
134
- return (0, import_openai.createOpenAI)({ apiKey: apiKey ?? "", baseURL: glmBaseURL }).chat(model);
197
+ const glmBaseURL = effectiveBaseURL || "https://open.bigmodel.cn/api/paas/v4";
198
+ return (0, import_openai.createOpenAI)({
199
+ apiKey: apiKey ?? "",
200
+ baseURL: glmBaseURL,
201
+ ...runtimeHeaders ? { headers: runtimeHeaders } : {},
202
+ ...runtimeFetch ? { fetch: runtimeFetch } : {}
203
+ }).chat(model);
135
204
  }
136
205
  case "litellm": {
137
- if (!baseURL) {
206
+ if (!effectiveBaseURL) {
138
207
  throw import_errors.LLMError.baseUrlMissing("litellm");
139
208
  }
140
- return (0, import_openai.createOpenAI)({ apiKey: apiKey ?? "", baseURL }).chat(model);
209
+ return (0, import_openai.createOpenAI)({
210
+ apiKey: apiKey ?? "",
211
+ baseURL: effectiveBaseURL,
212
+ ...runtimeHeaders ? { headers: runtimeHeaders } : {},
213
+ ...runtimeFetch ? { fetch: runtimeFetch } : {}
214
+ }).chat(model);
141
215
  }
142
216
  case "glama": {
143
- const glamaBaseURL = "https://glama.ai/api/gateway/openai/v1";
144
- return (0, import_openai.createOpenAI)({ apiKey: apiKey ?? "", baseURL: glamaBaseURL }).chat(model);
217
+ const glamaBaseURL = effectiveBaseURL || "https://glama.ai/api/gateway/openai/v1";
218
+ return (0, import_openai.createOpenAI)({
219
+ apiKey: apiKey ?? "",
220
+ baseURL: glamaBaseURL,
221
+ ...runtimeHeaders ? { headers: runtimeHeaders } : {},
222
+ ...runtimeFetch ? { fetch: runtimeFetch } : {}
223
+ }).chat(model);
145
224
  }
146
225
  case "dexto-nova": {
147
226
  const dextoBaseURL = resolveDextoGatewayBaseURL(baseURL);
148
227
  const headers = {
228
+ ...runtimeHeaders ?? {},
149
229
  [DEXTO_GATEWAY_HEADERS.CLIENT_SOURCE]: context?.clientSource ?? "cli"
150
230
  };
151
231
  if (context?.sessionId) {
@@ -154,14 +234,13 @@ function createVercelModel(llmConfig, context) {
154
234
  if (process.env.DEXTO_CLI_VERSION) {
155
235
  headers[DEXTO_GATEWAY_HEADERS.CLIENT_VERSION] = process.env.DEXTO_CLI_VERSION;
156
236
  }
157
- const provider2 = (0, import_ai_sdk_provider.createOpenRouter)({
158
- apiKey: apiKey ?? "",
237
+ const provider2 = (0, import_openai_compatible.createOpenAICompatible)({
238
+ name: "dexto-nova",
159
239
  baseURL: dextoBaseURL,
160
240
  headers,
161
- // This is an OpenRouter-compatible gateway; keep strict mode to enable OR features.
162
- compatibility: "strict"
241
+ ...apiKey?.trim() ? { apiKey } : {}
163
242
  });
164
- const chatModel = provider2.chat(model);
243
+ const chatModel = provider2.chatModel(model);
165
244
  if (!isLanguageModel(chatModel)) {
166
245
  throw import_errors.LLMError.generationFailed(
167
246
  "Dexto gateway provider returned an invalid language model instance",
@@ -181,7 +260,7 @@ function createVercelModel(llmConfig, context) {
181
260
  }
182
261
  const location = process.env.GOOGLE_VERTEX_LOCATION;
183
262
  if (model.includes("claude")) {
184
- const headers = (0, import_anthropic_thinking.supportsAnthropicInterleavedThinking)(model) ? { [import_anthropic_betas.ANTHROPIC_BETA_HEADER]: import_anthropic_betas.ANTHROPIC_INTERLEAVED_THINKING_BETA } : void 0;
263
+ const headers = (0, import_llm.supportsAnthropicInterleavedThinking)(model) ? { [import_llm.ANTHROPIC_BETA_HEADER]: import_llm.ANTHROPIC_INTERLEAVED_THINKING_BETA } : void 0;
185
264
  return (0, import_anthropic2.createVertexAnthropic)({
186
265
  project: projectId,
187
266
  location: location || "us-east5",
@@ -210,10 +289,15 @@ function createVercelModel(llmConfig, context) {
210
289
  return (0, import_amazon_bedrock.createAmazonBedrock)({ region })(modelId);
211
290
  }
212
291
  case "anthropic": {
213
- const headers = (0, import_anthropic_thinking.supportsAnthropicInterleavedThinking)(model) ? { [import_anthropic_betas.ANTHROPIC_BETA_HEADER]: import_anthropic_betas.ANTHROPIC_INTERLEAVED_THINKING_BETA } : void 0;
292
+ const headers = mergeHeaders(
293
+ (0, import_llm.supportsAnthropicInterleavedThinking)(model) ? { [import_llm.ANTHROPIC_BETA_HEADER]: import_llm.ANTHROPIC_INTERLEAVED_THINKING_BETA } : void 0,
294
+ runtimeHeaders
295
+ );
214
296
  return (0, import_anthropic.createAnthropic)({
215
297
  apiKey: apiKey ?? "",
216
- ...headers ? { headers } : {}
298
+ ...effectiveBaseURL ? { baseURL: effectiveBaseURL } : {},
299
+ ...headers ? { headers } : {},
300
+ ...runtimeFetch ? { fetch: runtimeFetch } : {}
217
301
  })(model);
218
302
  }
219
303
  case "google":
@@ -225,8 +309,13 @@ function createVercelModel(llmConfig, context) {
225
309
  case "cohere":
226
310
  return (0, import_cohere.createCohere)({ apiKey: apiKey ?? "" })(model);
227
311
  case "ollama": {
228
- const ollamaBaseURL = baseURL || "http://localhost:11434/v1";
229
- return (0, import_openai.createOpenAI)({ apiKey: "ollama", baseURL: ollamaBaseURL }).chat(model);
312
+ const ollamaBaseURL = effectiveBaseURL || "http://localhost:11434/v1";
313
+ return (0, import_openai.createOpenAI)({
314
+ apiKey: apiKey ?? "ollama",
315
+ baseURL: ollamaBaseURL,
316
+ ...runtimeHeaders ? { headers: runtimeHeaders } : {},
317
+ ...runtimeFetch ? { fetch: runtimeFetch } : {}
318
+ }).chat(model);
230
319
  }
231
320
  case "local": {
232
321
  return (0, import_ai_sdk_adapter.createLocalLanguageModel)({
@@ -242,6 +331,8 @@ function createLLMService(config, toolManager, systemPromptManager, conversation
242
331
  const providerContext = {
243
332
  sessionId,
244
333
  ...options.cwd !== void 0 ? { cwd: options.cwd } : {},
334
+ authResolver: options.authResolver ?? null,
335
+ logger,
245
336
  onCodexRateLimitStatus: (snapshot) => {
246
337
  sessionEventBus.emit("llm:rate-limit-status", {
247
338
  provider: config.provider,
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/llm/services/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAYnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EACR,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACvB,MAAM,YAAY,CAAC;AA6DpB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,kBAAkB,EAC7B,OAAO,CAAC,EAAE,oBAAoB,GAC/B,aAAa,CAyOf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,kBAAkB,EAC1B,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,OAAO,0BAA0B,EAAE,eAAe,EACnE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,uBAAuB,EAChC,oBAAoB,CAAC,EAAE,oBAAoB,GAC5C,gBAAgB,CAqClB"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/llm/services/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAYnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EACR,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACvB,MAAM,YAAY,CAAC;AAqHpB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,kBAAkB,EAC7B,OAAO,CAAC,EAAE,oBAAoB,GAC/B,aAAa,CAsSf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,kBAAkB,EAC1B,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,OAAO,0BAA0B,EAAE,eAAe,EACnE,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,uBAAuB,EAChC,oBAAoB,CAAC,EAAE,oBAAoB,GAC5C,gBAAgB,CAuClB"}