@mcoda/mswarm 0.1.71 → 0.1.73

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 (28) hide show
  1. package/dist/codali-executor.d.ts +61 -0
  2. package/dist/codali-executor.d.ts.map +1 -1
  3. package/dist/codali-executor.js +39 -0
  4. package/dist/codali-executor.js.map +1 -1
  5. package/dist/runtime.d.ts +10 -0
  6. package/dist/runtime.d.ts.map +1 -1
  7. package/dist/runtime.js +203 -6
  8. package/dist/runtime.js.map +1 -1
  9. package/dist/vendor/codali/agents/AgentResolver.d.ts +16 -1
  10. package/dist/vendor/codali/agents/AgentResolver.d.ts.map +1 -1
  11. package/dist/vendor/codali/agents/AgentResolver.js +53 -14
  12. package/dist/vendor/codali/cli/RunCommand.d.ts +15 -0
  13. package/dist/vendor/codali/cli/RunCommand.d.ts.map +1 -1
  14. package/dist/vendor/codali/cli/RunCommand.js +181 -24
  15. package/dist/vendor/codali/config/Config.d.ts +15 -0
  16. package/dist/vendor/codali/config/Config.d.ts.map +1 -1
  17. package/dist/vendor/codali/config/ConfigLoader.d.ts +14 -0
  18. package/dist/vendor/codali/config/ConfigLoader.d.ts.map +1 -1
  19. package/dist/vendor/codali/config/ConfigLoader.js +58 -0
  20. package/dist/vendor/codali/providers/OpenAiCompatibleProvider.d.ts +4 -0
  21. package/dist/vendor/codali/providers/OpenAiCompatibleProvider.d.ts.map +1 -1
  22. package/dist/vendor/codali/providers/OpenAiCompatibleProvider.js +109 -12
  23. package/dist/vendor/codali/providers/ProviderTypes.d.ts +15 -0
  24. package/dist/vendor/codali/providers/ProviderTypes.d.ts.map +1 -1
  25. package/dist/vendor/codali/runtime/CodaliRuntime.d.ts +18 -0
  26. package/dist/vendor/codali/runtime/CodaliRuntime.d.ts.map +1 -1
  27. package/dist/vendor/codali/runtime/CodaliRuntime.js +14 -0
  28. package/package.json +3 -3
@@ -68,6 +68,16 @@ export const parseArgs = (argv) => {
68
68
  .filter(Boolean);
69
69
  return items.length ? items : undefined;
70
70
  };
71
+ const parseJsonArg = (value, label) => {
72
+ if (!value)
73
+ return undefined;
74
+ try {
75
+ return JSON.parse(value);
76
+ }
77
+ catch {
78
+ throw new Error(`Invalid ${label}: expected JSON.`);
79
+ }
80
+ };
71
81
  const parsed = {};
72
82
  const positionals = [];
73
83
  for (let i = 0; i < argv.length; i += 1) {
@@ -186,6 +196,76 @@ export const parseArgs = (argv) => {
186
196
  i += 1;
187
197
  continue;
188
198
  }
199
+ if (arg === "--local-runner-json" && next) {
200
+ parsed.localRunner = parseJsonArg(next, "--local-runner-json");
201
+ i += 1;
202
+ continue;
203
+ }
204
+ if (arg === "--runner-kind" && next) {
205
+ parsed.runnerKind = next;
206
+ i += 1;
207
+ continue;
208
+ }
209
+ if (arg === "--auth-mode" && next) {
210
+ parsed.authMode = next;
211
+ i += 1;
212
+ continue;
213
+ }
214
+ if (arg === "--dummy-bearer-token" && next) {
215
+ parsed.dummyBearerToken = next;
216
+ i += 1;
217
+ continue;
218
+ }
219
+ if (arg === "--headers-json" && next) {
220
+ parsed.headers = parseJsonArg(next, "--headers-json");
221
+ i += 1;
222
+ continue;
223
+ }
224
+ if (arg === "--extra-body-json" && next) {
225
+ parsed.extraBody = parseJsonArg(next, "--extra-body-json");
226
+ i += 1;
227
+ continue;
228
+ }
229
+ if (arg === "--response-format-strategy" && next) {
230
+ parsed.responseFormatStrategy = next;
231
+ i += 1;
232
+ continue;
233
+ }
234
+ if (arg === "--health-path" && next) {
235
+ parsed.healthPath = next;
236
+ i += 1;
237
+ continue;
238
+ }
239
+ if (arg === "--models-path" && next) {
240
+ parsed.modelsPath = next;
241
+ i += 1;
242
+ continue;
243
+ }
244
+ if (arg === "--require-model-in-request" && next) {
245
+ parsed.requireModelInRequest = parseBooleanArg(next);
246
+ i += 1;
247
+ continue;
248
+ }
249
+ if (arg === "--supports-streaming" && next) {
250
+ parsed.supportsStreaming = parseBooleanArg(next);
251
+ i += 1;
252
+ continue;
253
+ }
254
+ if (arg === "--supports-tools" && next) {
255
+ parsed.supportsTools = parseBooleanArg(next);
256
+ i += 1;
257
+ continue;
258
+ }
259
+ if (arg === "--supports-json-schema" && next) {
260
+ parsed.supportsJsonSchema = parseBooleanArg(next);
261
+ i += 1;
262
+ continue;
263
+ }
264
+ if (arg === "--supports-gbnf" && next) {
265
+ parsed.supportsGbnf = parseBooleanArg(next);
266
+ i += 1;
267
+ continue;
268
+ }
189
269
  if ((arg === "--workflow-profile" || arg === "--profile") && next) {
190
270
  parsed.workflowProfile = next;
191
271
  i += 1;
@@ -575,6 +655,54 @@ const isPhaseProvider = (value) => value === "librarian" ||
575
655
  value === "builder" ||
576
656
  value === "critic" ||
577
657
  value === "interpreter";
658
+ const copyLocalRunnerProviderFields = (config) => ({
659
+ localRunner: config.localRunner,
660
+ runnerKind: config.runnerKind,
661
+ authMode: config.authMode,
662
+ dummyBearerToken: config.dummyBearerToken,
663
+ headers: config.headers,
664
+ extraBody: config.extraBody,
665
+ responseFormatStrategy: config.responseFormatStrategy,
666
+ healthPath: config.healthPath,
667
+ modelsPath: config.modelsPath,
668
+ requireModelInRequest: config.requireModelInRequest,
669
+ supportsStreaming: config.supportsStreaming,
670
+ supportsTools: config.supportsTools,
671
+ supportsJsonSchema: config.supportsJsonSchema,
672
+ supportsGbnf: config.supportsGbnf,
673
+ });
674
+ const buildDefaultProviderConfig = (config) => ({
675
+ model: config.model,
676
+ apiKey: config.apiKey,
677
+ baseUrl: config.baseUrl,
678
+ timeoutMs: config.limits.timeoutMs,
679
+ ...copyLocalRunnerProviderFields(config),
680
+ });
681
+ const applyResolvedAgentProviderDefaults = (config, resolved, options) => {
682
+ if (options.overwrite || !config.provider)
683
+ config.provider = resolved.provider;
684
+ if (options.overwrite || !config.model)
685
+ config.model = resolved.model;
686
+ if (options.overwrite || config.apiKey === undefined)
687
+ config.apiKey = resolved.apiKey;
688
+ if (options.overwrite || config.baseUrl === undefined)
689
+ config.baseUrl = resolved.baseUrl;
690
+ const fill = (current, next) => options.overwrite || current === undefined ? next : current;
691
+ config.localRunner = fill(config.localRunner, resolved.localRunner);
692
+ config.runnerKind = fill(config.runnerKind, resolved.runnerKind);
693
+ config.authMode = fill(config.authMode, resolved.authMode);
694
+ config.dummyBearerToken = fill(config.dummyBearerToken, resolved.dummyBearerToken);
695
+ config.headers = fill(config.headers, resolved.headers);
696
+ config.extraBody = fill(config.extraBody, resolved.extraBody);
697
+ config.responseFormatStrategy = fill(config.responseFormatStrategy, resolved.responseFormatStrategy);
698
+ config.healthPath = fill(config.healthPath, resolved.healthPath);
699
+ config.modelsPath = fill(config.modelsPath, resolved.modelsPath);
700
+ config.requireModelInRequest = fill(config.requireModelInRequest, resolved.requireModelInRequest);
701
+ config.supportsStreaming = fill(config.supportsStreaming, resolved.supportsStreaming);
702
+ config.supportsTools = fill(config.supportsTools, resolved.supportsTools);
703
+ config.supportsJsonSchema = fill(config.supportsJsonSchema, resolved.supportsJsonSchema);
704
+ config.supportsGbnf = fill(config.supportsGbnf, resolved.supportsGbnf);
705
+ };
578
706
  const resolveInterpreterRoute = (config, phaseRoutes) => {
579
707
  const requestedProvider = config.interpreter.provider?.trim() || "auto";
580
708
  const requestedModel = config.interpreter.model?.trim() || "auto";
@@ -596,6 +724,7 @@ const resolveInterpreterRoute = (config, phaseRoutes) => {
596
724
  apiKey: config.apiKey,
597
725
  baseUrl: config.baseUrl,
598
726
  timeoutMs: config.interpreter.timeoutMs,
727
+ ...copyLocalRunnerProviderFields(config),
599
728
  };
600
729
  if (!baseConfig.baseUrl) {
601
730
  const sameProviderBaseUrl = Object.values(phaseRoutes)
@@ -1034,6 +1163,20 @@ export class RunCommand {
1034
1163
  const model = parsed.model ?? resolvedAgent?.model;
1035
1164
  const apiKey = parsed.apiKey ?? resolvedAgent?.apiKey;
1036
1165
  const baseUrl = parsed.baseUrl ?? resolvedAgent?.baseUrl;
1166
+ const localRunner = parsed.localRunner ?? resolvedAgent?.localRunner;
1167
+ const runnerKind = parsed.runnerKind ?? resolvedAgent?.runnerKind;
1168
+ const authMode = parsed.authMode ?? resolvedAgent?.authMode;
1169
+ const dummyBearerToken = parsed.dummyBearerToken ?? resolvedAgent?.dummyBearerToken;
1170
+ const headers = parsed.headers ?? resolvedAgent?.headers;
1171
+ const extraBody = parsed.extraBody ?? resolvedAgent?.extraBody;
1172
+ const responseFormatStrategy = parsed.responseFormatStrategy ?? resolvedAgent?.responseFormatStrategy;
1173
+ const healthPath = parsed.healthPath ?? resolvedAgent?.healthPath;
1174
+ const modelsPath = parsed.modelsPath ?? resolvedAgent?.modelsPath;
1175
+ const requireModelInRequest = parsed.requireModelInRequest ?? resolvedAgent?.requireModelInRequest;
1176
+ const supportsStreaming = parsed.supportsStreaming ?? resolvedAgent?.supportsStreaming;
1177
+ const supportsTools = parsed.supportsTools ?? resolvedAgent?.supportsTools;
1178
+ const supportsJsonSchema = parsed.supportsJsonSchema ?? resolvedAgent?.supportsJsonSchema;
1179
+ const supportsGbnf = parsed.supportsGbnf ?? resolvedAgent?.supportsGbnf;
1037
1180
  const agentId = resolvedAgent?.agent.id ?? parsed.agentId;
1038
1181
  const agentSlug = resolvedAgent?.agent.slug ?? parsed.agentSlug;
1039
1182
  const cliConfig = {};
@@ -1072,6 +1215,35 @@ export class RunCommand {
1072
1215
  cliConfig.apiKey = apiKey;
1073
1216
  if (baseUrl)
1074
1217
  cliConfig.baseUrl = baseUrl;
1218
+ if (localRunner)
1219
+ cliConfig.localRunner = localRunner;
1220
+ if (runnerKind)
1221
+ cliConfig.runnerKind = runnerKind;
1222
+ if (authMode)
1223
+ cliConfig.authMode = authMode;
1224
+ if (dummyBearerToken)
1225
+ cliConfig.dummyBearerToken = dummyBearerToken;
1226
+ if (headers)
1227
+ cliConfig.headers = headers;
1228
+ if (extraBody)
1229
+ cliConfig.extraBody = extraBody;
1230
+ if (responseFormatStrategy)
1231
+ cliConfig.responseFormatStrategy = responseFormatStrategy;
1232
+ if (healthPath)
1233
+ cliConfig.healthPath = healthPath;
1234
+ if (modelsPath)
1235
+ cliConfig.modelsPath = modelsPath;
1236
+ if (requireModelInRequest !== undefined) {
1237
+ cliConfig.requireModelInRequest = requireModelInRequest;
1238
+ }
1239
+ if (supportsStreaming !== undefined)
1240
+ cliConfig.supportsStreaming = supportsStreaming;
1241
+ if (supportsTools !== undefined)
1242
+ cliConfig.supportsTools = supportsTools;
1243
+ if (supportsJsonSchema !== undefined)
1244
+ cliConfig.supportsJsonSchema = supportsJsonSchema;
1245
+ if (supportsGbnf !== undefined)
1246
+ cliConfig.supportsGbnf = supportsGbnf;
1075
1247
  if (parsed.workflowProfile) {
1076
1248
  cliConfig.workflow = { profile: parsed.workflowProfile };
1077
1249
  }
@@ -1515,17 +1687,11 @@ export class RunCommand {
1515
1687
  if (!fallbackResolved) {
1516
1688
  throw new Error("No eligible agents found in the mcoda agent registry. Run `mcoda agent list` or supply --agent/--provider/--model.");
1517
1689
  }
1518
- config.provider = fallbackResolved.provider;
1519
- config.model = fallbackResolved.model;
1520
- config.apiKey = fallbackResolved.apiKey;
1521
- config.baseUrl = fallbackResolved.baseUrl;
1690
+ applyResolvedAgentProviderDefaults(config, fallbackResolved, { overwrite: true });
1522
1691
  }
1523
1692
  else if (!config.provider || !config.model) {
1524
1693
  if (fallbackResolved) {
1525
- config.provider = config.provider || fallbackResolved.provider;
1526
- config.model = config.model || fallbackResolved.model;
1527
- config.apiKey = config.apiKey ?? fallbackResolved.apiKey;
1528
- config.baseUrl = config.baseUrl ?? fallbackResolved.baseUrl;
1694
+ applyResolvedAgentProviderDefaults(config, fallbackResolved, { overwrite: false });
1529
1695
  }
1530
1696
  }
1531
1697
  if (!config.provider || !config.model) {
@@ -1533,12 +1699,7 @@ export class RunCommand {
1533
1699
  }
1534
1700
  const defaults = {
1535
1701
  provider: config.provider,
1536
- config: {
1537
- model: config.model,
1538
- apiKey: config.apiKey,
1539
- baseUrl: config.baseUrl,
1540
- timeoutMs: config.limits.timeoutMs,
1541
- },
1702
+ config: buildDefaultProviderConfig(config),
1542
1703
  };
1543
1704
  const selectedPhaseModels = new Set(Object.values(phaseSelections)
1544
1705
  .map((selection) => selection.resolved?.model)
@@ -1592,6 +1753,8 @@ export class RunCommand {
1592
1753
  apiKey: selected.apiKey,
1593
1754
  baseUrl: selected.baseUrl,
1594
1755
  timeoutMs: config.limits.timeoutMs,
1756
+ ...copyLocalRunnerProviderFields(config),
1757
+ ...copyLocalRunnerProviderFields(selected),
1595
1758
  },
1596
1759
  }
1597
1760
  : defaults;
@@ -1959,6 +2122,8 @@ export class RunCommand {
1959
2122
  apiKey: nextResolved.apiKey,
1960
2123
  baseUrl: nextResolved.baseUrl,
1961
2124
  timeoutMs: config.limits.timeoutMs,
2125
+ ...copyLocalRunnerProviderFields(config),
2126
+ ...copyLocalRunnerProviderFields(nextResolved),
1962
2127
  },
1963
2128
  };
1964
2129
  const nextRoute = buildRoutedProvider(phase, phaseDefaults, config.routing, true);
@@ -2120,21 +2285,13 @@ export class RunCommand {
2120
2285
  throw new Error("Run cancelled due to cost limit");
2121
2286
  }
2122
2287
  }
2123
- const provider = createProvider(config.provider, {
2124
- model: config.model,
2125
- apiKey: config.apiKey,
2126
- baseUrl: config.baseUrl,
2127
- timeoutMs: config.limits.timeoutMs,
2128
- });
2288
+ const provider = createProvider(config.provider, buildDefaultProviderConfig(config));
2129
2289
  const result = await runCodaliTask({
2130
2290
  task: workflowTaskInput,
2131
2291
  workspace: { root: config.workspaceRoot },
2132
2292
  provider: {
2133
2293
  name: config.provider,
2134
- model: config.model,
2135
- apiKey: config.apiKey,
2136
- baseUrl: config.baseUrl,
2137
- timeoutMs: config.limits.timeoutMs,
2294
+ ...buildDefaultProviderConfig(config),
2138
2295
  },
2139
2296
  docdex: {
2140
2297
  baseUrl: config.docdex.baseUrl,
@@ -1,3 +1,4 @@
1
+ import type { LocalOpenAiCompatibleRunnerConfig, LocalRunnerAuthMode, LocalRunnerKind, LocalRunnerResponseFormatStrategy } from "@mcoda/shared";
1
2
  export interface DocdexConfig {
2
3
  baseUrl: string;
3
4
  repoRoot?: string;
@@ -204,6 +205,20 @@ export interface CodaliConfig {
204
205
  model: string;
205
206
  apiKey?: string;
206
207
  baseUrl?: string;
208
+ localRunner?: LocalOpenAiCompatibleRunnerConfig;
209
+ runnerKind?: LocalRunnerKind;
210
+ authMode?: LocalRunnerAuthMode;
211
+ dummyBearerToken?: string;
212
+ headers?: Record<string, string>;
213
+ extraBody?: Record<string, unknown>;
214
+ responseFormatStrategy?: LocalRunnerResponseFormatStrategy;
215
+ healthPath?: string;
216
+ modelsPath?: string;
217
+ requireModelInRequest?: boolean;
218
+ supportsStreaming?: boolean;
219
+ supportsTools?: boolean;
220
+ supportsJsonSchema?: boolean;
221
+ supportsGbnf?: boolean;
207
222
  workflow?: WorkflowConfig;
208
223
  resolvedWorkflowProfile?: ResolvedWorkflowProfile;
209
224
  docdex: DocdexConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,20 @@ export interface ConfigSource {
28
28
  model?: string;
29
29
  apiKey?: string;
30
30
  baseUrl?: string;
31
+ localRunner?: CodaliConfig["localRunner"];
32
+ runnerKind?: CodaliConfig["runnerKind"];
33
+ authMode?: CodaliConfig["authMode"];
34
+ dummyBearerToken?: string;
35
+ headers?: Record<string, string>;
36
+ extraBody?: Record<string, unknown>;
37
+ responseFormatStrategy?: CodaliConfig["responseFormatStrategy"];
38
+ healthPath?: string;
39
+ modelsPath?: string;
40
+ requireModelInRequest?: boolean;
41
+ supportsStreaming?: boolean;
42
+ supportsTools?: boolean;
43
+ supportsJsonSchema?: boolean;
44
+ supportsGbnf?: boolean;
31
45
  workflow?: WorkflowConfigSource;
32
46
  docdex?: Partial<DocdexConfig>;
33
47
  tools?: Partial<ToolConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigLoader.d.ts","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigLoader.d.ts","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":"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"}
@@ -782,6 +782,43 @@ const loadEnvConfig = (env) => {
782
782
  config.apiKey = env.CODALI_API_KEY;
783
783
  if (env.CODALI_BASE_URL)
784
784
  config.baseUrl = env.CODALI_BASE_URL;
785
+ const localRunner = parseJson(env.CODALI_LOCAL_RUNNER_JSON);
786
+ if (localRunner)
787
+ config.localRunner = localRunner;
788
+ if (env.CODALI_RUNNER_KIND)
789
+ config.runnerKind = env.CODALI_RUNNER_KIND;
790
+ if (env.CODALI_AUTH_MODE)
791
+ config.authMode = env.CODALI_AUTH_MODE;
792
+ if (env.CODALI_DUMMY_BEARER_TOKEN)
793
+ config.dummyBearerToken = env.CODALI_DUMMY_BEARER_TOKEN;
794
+ const headers = parseJson(env.CODALI_HEADERS_JSON);
795
+ if (headers)
796
+ config.headers = headers;
797
+ const extraBody = parseJson(env.CODALI_EXTRA_BODY_JSON);
798
+ if (extraBody)
799
+ config.extraBody = extraBody;
800
+ if (env.CODALI_RESPONSE_FORMAT_STRATEGY) {
801
+ config.responseFormatStrategy = env.CODALI_RESPONSE_FORMAT_STRATEGY;
802
+ }
803
+ if (env.CODALI_HEALTH_PATH)
804
+ config.healthPath = env.CODALI_HEALTH_PATH;
805
+ if (env.CODALI_MODELS_PATH)
806
+ config.modelsPath = env.CODALI_MODELS_PATH;
807
+ const requireModelInRequest = parseBoolean(env.CODALI_REQUIRE_MODEL_IN_REQUEST);
808
+ if (requireModelInRequest !== undefined)
809
+ config.requireModelInRequest = requireModelInRequest;
810
+ const supportsStreaming = parseBoolean(env.CODALI_SUPPORTS_STREAMING);
811
+ if (supportsStreaming !== undefined)
812
+ config.supportsStreaming = supportsStreaming;
813
+ const supportsTools = parseBoolean(env.CODALI_SUPPORTS_TOOLS);
814
+ if (supportsTools !== undefined)
815
+ config.supportsTools = supportsTools;
816
+ const supportsJsonSchema = parseBoolean(env.CODALI_SUPPORTS_JSON_SCHEMA);
817
+ if (supportsJsonSchema !== undefined)
818
+ config.supportsJsonSchema = supportsJsonSchema;
819
+ const supportsGbnf = parseBoolean(env.CODALI_SUPPORTS_GBNF);
820
+ if (supportsGbnf !== undefined)
821
+ config.supportsGbnf = supportsGbnf;
785
822
  return config;
786
823
  };
787
824
  const mergeDeepInvestigationConfigs = (defaults, ...sources) => {
@@ -997,6 +1034,12 @@ const mergeConfigs = (defaults, fileConfig, envConfig, cliConfig) => {
997
1034
  ...envConfig?.logging,
998
1035
  ...cliConfig?.logging,
999
1036
  };
1037
+ const localRunner = {
1038
+ ...(defaults.localRunner ?? {}),
1039
+ ...(fileConfig?.localRunner ?? {}),
1040
+ ...(envConfig?.localRunner ?? {}),
1041
+ ...(cliConfig?.localRunner ?? {}),
1042
+ };
1000
1043
  return {
1001
1044
  ...defaults,
1002
1045
  ...fileConfig,
@@ -1018,6 +1061,7 @@ const mergeConfigs = (defaults, fileConfig, envConfig, cliConfig) => {
1018
1061
  workflow,
1019
1062
  logging,
1020
1063
  routing,
1064
+ localRunner: localRunner && Object.keys(localRunner).length ? localRunner : undefined,
1021
1065
  };
1022
1066
  };
1023
1067
  const mergeRoutingConfigs = (...sources) => {
@@ -1177,6 +1221,20 @@ export const loadConfig = async (options = {}) => {
1177
1221
  model: "",
1178
1222
  apiKey: undefined,
1179
1223
  baseUrl: undefined,
1224
+ localRunner: undefined,
1225
+ runnerKind: undefined,
1226
+ authMode: undefined,
1227
+ dummyBearerToken: undefined,
1228
+ headers: undefined,
1229
+ extraBody: undefined,
1230
+ responseFormatStrategy: undefined,
1231
+ healthPath: undefined,
1232
+ modelsPath: undefined,
1233
+ requireModelInRequest: undefined,
1234
+ supportsStreaming: undefined,
1235
+ supportsTools: undefined,
1236
+ supportsJsonSchema: undefined,
1237
+ supportsGbnf: undefined,
1180
1238
  smart: true,
1181
1239
  docdex: {
1182
1240
  baseUrl: envConfig.docdex?.baseUrl ?? DEFAULT_DOCDEX_BASE_URL,
@@ -2,7 +2,11 @@ import type { Provider, ProviderConfig, ProviderRequest, ProviderResponse } from
2
2
  export declare class OpenAiCompatibleProvider implements Provider {
3
3
  private config;
4
4
  name: string;
5
+ private localRunner;
6
+ private authMode;
7
+ private responseFormatStrategy;
5
8
  constructor(config: ProviderConfig);
6
9
  generate(request: ProviderRequest): Promise<ProviderResponse>;
10
+ private resolveAuth;
7
11
  }
8
12
  //# sourceMappingURL=OpenAiCompatibleProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiCompatibleProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OpenAiCompatibleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,eAAe,EACf,gBAAgB,EAGjB,MAAM,oBAAoB,CAAC;AAuD5B,qBAAa,wBAAyB,YAAW,QAAQ;IAG3C,OAAO,CAAC,MAAM;IAF1B,IAAI,SAAuB;gBAEP,MAAM,EAAE,cAAc;IAEpC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA2KpE"}
1
+ {"version":3,"file":"OpenAiCompatibleProvider.d.ts","sourceRoot":"","sources":["../../src/providers/OpenAiCompatibleProvider.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EAEd,eAAe,EACf,gBAAgB,EAGjB,MAAM,oBAAoB,CAAC;AAsH5B,qBAAa,wBAAyB,YAAW,QAAQ;IAM3C,OAAO,CAAC,MAAM;IAL1B,IAAI,SAAuB;IAC3B,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,sBAAsB,CAAoC;gBAE9C,MAAM,EAAE,cAAc;IAWpC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsMnE,OAAO,CAAC,WAAW;CAepB"}
@@ -1,3 +1,4 @@
1
+ import { normalizeLocalOpenAiCompatibleRunnerConfig, } from "@mcoda/shared";
1
2
  const parseToolArgs = (raw) => {
2
3
  try {
3
4
  return JSON.parse(raw);
@@ -10,9 +11,36 @@ const normalizeBaseUrl = (baseUrl) => {
10
11
  const root = baseUrl ?? "https://api.openai.com/v1";
11
12
  return root.endsWith("/") ? root : `${root}/`;
12
13
  };
13
- const toResponseFormat = (format) => {
14
+ const enforcedIssueCodes = new Set([
15
+ "invalid_auth_mode",
16
+ "invalid_headers",
17
+ "invalid_header_value",
18
+ "secret_header",
19
+ "invalid_extra_body",
20
+ "reserved_extra_body_key",
21
+ ]);
22
+ const assertLocalConfigIssues = (issues) => {
23
+ const enforced = issues.filter((issue) => enforcedIssueCodes.has(issue.code));
24
+ if (enforced.length === 0)
25
+ return;
26
+ throw new Error(`Invalid OpenAI-compatible local runner config: ${enforced
27
+ .map((issue) => `${issue.path}: ${issue.message}`)
28
+ .join("; ")}`);
29
+ };
30
+ const toResponseFormat = (format, strategy = "openai") => {
14
31
  if (!format)
15
32
  return undefined;
33
+ if (strategy === "none" || strategy === "prompt-only" || strategy === "gbnf") {
34
+ return undefined;
35
+ }
36
+ if (strategy === "json-object") {
37
+ if (format.type === "text")
38
+ return { type: "text" };
39
+ if (format.type === "json" || format.type === "json_schema") {
40
+ return { type: "json_object" };
41
+ }
42
+ return undefined;
43
+ }
16
44
  if (format.type === "json") {
17
45
  return { type: "json_object" };
18
46
  }
@@ -24,14 +52,51 @@ const toResponseFormat = (format) => {
24
52
  }
25
53
  return undefined;
26
54
  };
55
+ const buildPromptOnlyFormatInstruction = (format) => {
56
+ if (!format || format.type === "text")
57
+ return undefined;
58
+ if (format.type === "json") {
59
+ return [
60
+ "Output format constraint:",
61
+ "Return exactly one valid JSON object.",
62
+ "Do not include markdown fences, reasoning, commentary, or text outside the JSON object.",
63
+ ].join("\n");
64
+ }
65
+ if (format.type === "json_schema") {
66
+ return [
67
+ "Output format constraint:",
68
+ "Return exactly one valid JSON object matching this schema:",
69
+ JSON.stringify(format.schema ?? {}),
70
+ "Do not include markdown fences, reasoning, commentary, or text outside the JSON object.",
71
+ ].join("\n");
72
+ }
73
+ if (format.type === "gbnf") {
74
+ return [
75
+ "Output format constraint:",
76
+ "Return output that conforms to this GBNF grammar:",
77
+ format.grammar ?? "",
78
+ "Do not include markdown fences, reasoning, commentary, or text outside the grammar output.",
79
+ ].join("\n");
80
+ }
81
+ return undefined;
82
+ };
27
83
  export class OpenAiCompatibleProvider {
28
84
  constructor(config) {
29
85
  this.config = config;
30
86
  this.name = "openai-compatible";
87
+ const normalizedLocal = normalizeLocalOpenAiCompatibleRunnerConfig({
88
+ config,
89
+ agentConfig: config.localRunner,
90
+ });
91
+ assertLocalConfigIssues(normalizedLocal.issues);
92
+ this.localRunner = normalizedLocal.config;
93
+ this.authMode = normalizedLocal.config.authMode ?? (config.apiKey ? "bearer" : "none");
94
+ this.responseFormatStrategy = normalizedLocal.config.responseFormatStrategy ?? "openai";
31
95
  }
32
96
  async generate(request) {
33
- const baseUrl = normalizeBaseUrl(this.config.baseUrl);
97
+ const baseUrl = normalizeBaseUrl(this.localRunner.baseUrl ?? this.config.baseUrl);
34
98
  const url = new URL("chat/completions", baseUrl).toString();
99
+ const auth = this.resolveAuth();
35
100
  const emitToken = (token) => {
36
101
  if (request.onEvent) {
37
102
  request.onEvent({ type: "token", content: token });
@@ -40,19 +105,25 @@ export class OpenAiCompatibleProvider {
40
105
  request.onToken?.(token);
41
106
  };
42
107
  const headers = {
108
+ ...(this.localRunner.headers ?? {}),
43
109
  "content-type": "application/json",
110
+ ...(auth.authorization ? { authorization: auth.authorization } : {}),
44
111
  };
45
- if (this.config.apiKey) {
46
- headers.authorization = `Bearer ${this.config.apiKey}`;
112
+ const promptOnlyInstruction = this.responseFormatStrategy === "prompt-only"
113
+ ? buildPromptOnlyFormatInstruction(request.responseFormat)
114
+ : undefined;
115
+ const messages = request.messages.map((message) => ({
116
+ role: message.role,
117
+ content: message.content,
118
+ name: message.name,
119
+ tool_call_id: message.toolCallId,
120
+ }));
121
+ if (promptOnlyInstruction) {
122
+ messages.unshift({ role: "system", content: promptOnlyInstruction });
47
123
  }
48
124
  const body = {
49
- model: this.config.model,
50
- messages: request.messages.map((message) => ({
51
- role: message.role,
52
- content: message.content,
53
- name: message.name,
54
- tool_call_id: message.toolCallId,
55
- })),
125
+ ...(this.localRunner.requireModelInRequest === false ? {} : { model: this.config.model }),
126
+ messages,
56
127
  tools: request.tools?.map((tool) => ({
57
128
  type: "function",
58
129
  function: {
@@ -64,10 +135,21 @@ export class OpenAiCompatibleProvider {
64
135
  tool_choice: request.toolChoice,
65
136
  max_tokens: request.maxTokens,
66
137
  temperature: request.temperature,
67
- response_format: toResponseFormat(request.responseFormat),
138
+ response_format: toResponseFormat(request.responseFormat, this.responseFormatStrategy),
68
139
  stream: request.stream ?? false,
69
140
  stream_options: request.stream ? { include_usage: true } : undefined,
70
141
  };
142
+ if (this.responseFormatStrategy === "gbnf" &&
143
+ request.responseFormat?.type === "gbnf" &&
144
+ request.responseFormat.grammar) {
145
+ body.grammar = request.responseFormat.grammar;
146
+ }
147
+ if (this.localRunner.extraBody) {
148
+ for (const [key, value] of Object.entries(this.localRunner.extraBody)) {
149
+ if (body[key] === undefined)
150
+ body[key] = value;
151
+ }
152
+ }
71
153
  const controller = new AbortController();
72
154
  const timeoutMs = this.config.timeoutMs ?? 60000;
73
155
  const timeout = setTimeout(() => controller.abort(), timeoutMs);
@@ -189,4 +271,19 @@ export class OpenAiCompatibleProvider {
189
271
  clearTimeout(timeout);
190
272
  }
191
273
  }
274
+ resolveAuth() {
275
+ if (this.authMode === "none") {
276
+ return { mode: "none" };
277
+ }
278
+ if (this.authMode === "dummy-bearer") {
279
+ return {
280
+ mode: "dummy-bearer",
281
+ authorization: `Bearer ${this.localRunner.dummyBearerToken ?? "local"}`,
282
+ };
283
+ }
284
+ if (!this.config.apiKey) {
285
+ throw new Error("AUTH_REQUIRED: OpenAI-compatible provider API key missing; set CODALI_API_KEY.");
286
+ }
287
+ return { mode: "bearer", authorization: `Bearer ${this.config.apiKey}` };
288
+ }
192
289
  }