@jterrats/open-orchestra 0.5.2 → 0.5.4

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,3 +1,5 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { isAbsolute, resolve } from "node:path";
1
3
  import { GeminiModelProvider } from "./gemini-provider.js";
2
4
  import { OllamaModelProvider } from "./ollama-provider.js";
3
5
  export { GeminiModelProvider } from "./gemini-provider.js";
@@ -29,19 +31,70 @@ export class InMemoryModelProviderRegistry {
29
31
  return [...this.providers.values()];
30
32
  }
31
33
  }
32
- export function createModelProvider(providerId) {
34
+ export function createModelProvider(providerId, options = {}) {
33
35
  if (providerId === "fake")
34
36
  return new FakeModelProvider();
35
37
  if (providerId === "openai")
36
- return new OpenAIModelProvider();
38
+ return new OpenAIModelProvider(options);
37
39
  if (providerId === "anthropic")
38
- return new AnthropicModelProvider();
40
+ return new AnthropicModelProvider(options);
39
41
  if (providerId === "gemini")
40
- return new GeminiModelProvider();
42
+ return new GeminiModelProvider(options);
41
43
  if (providerId === "ollama")
42
- return new OllamaModelProvider();
44
+ return new OllamaModelProvider(options);
43
45
  throw new Error(`unknown provider: ${providerId}`);
44
46
  }
47
+ export function providerEnvFromCredentialConfig(providerId, credential, baseEnv = process.env) {
48
+ if (!credential)
49
+ return baseEnv;
50
+ const nextEnv = { ...baseEnv };
51
+ const apiKeyFileEnv = credential.apiKeyFileEnv ?? defaultApiKeyFileEnv(providerId);
52
+ const apiKeyEnv = credential.apiKeyEnv ?? defaultApiKeyEnv(providerId);
53
+ const baseUrlEnv = credential.baseUrlEnv ?? defaultBaseUrlEnv(providerId);
54
+ if (credential.apiKeyFile && apiKeyFileEnv) {
55
+ nextEnv[apiKeyFileEnv] = credential.apiKeyFile;
56
+ }
57
+ if (credential.apiKeyFile && apiKeyEnv) {
58
+ delete nextEnv[apiKeyEnv];
59
+ }
60
+ if (credential.baseUrl && baseUrlEnv) {
61
+ nextEnv[baseUrlEnv] = credential.baseUrl;
62
+ }
63
+ return nextEnv;
64
+ }
65
+ export function defaultApiKeyFileEnv(providerId) {
66
+ if (providerId === "openai")
67
+ return "OPENAI_API_KEY_FILE";
68
+ if (providerId === "anthropic")
69
+ return "ANTHROPIC_API_KEY_FILE";
70
+ if (providerId === "gemini")
71
+ return "GEMINI_API_KEY_FILE";
72
+ if (providerId === "ollama")
73
+ return "OLLAMA_API_KEY_FILE";
74
+ return undefined;
75
+ }
76
+ export function defaultApiKeyEnv(providerId) {
77
+ if (providerId === "openai")
78
+ return "OPENAI_API_KEY";
79
+ if (providerId === "anthropic")
80
+ return "ANTHROPIC_API_KEY";
81
+ if (providerId === "gemini")
82
+ return "GEMINI_API_KEY";
83
+ if (providerId === "ollama")
84
+ return "OLLAMA_API_KEY";
85
+ return undefined;
86
+ }
87
+ export function defaultBaseUrlEnv(providerId) {
88
+ if (providerId === "openai")
89
+ return "OPENAI_BASE_URL";
90
+ if (providerId === "anthropic")
91
+ return "ANTHROPIC_BASE_URL";
92
+ if (providerId === "gemini")
93
+ return "GEMINI_BASE_URL";
94
+ if (providerId === "ollama")
95
+ return "OLLAMA_BASE_URL";
96
+ return undefined;
97
+ }
45
98
  export function assertProviderAllowed(providerId, policy) {
46
99
  if (policy?.blockedProviders?.includes(providerId)) {
47
100
  throw new Error(`provider is blocked by policy: ${providerId}`);
@@ -103,7 +156,7 @@ export class OpenAIModelProvider {
103
156
  this.env = env;
104
157
  }
105
158
  async complete(request) {
106
- const apiKey = this.env.OPENAI_API_KEY;
159
+ const apiKey = apiKeyFromEnv(this.env, "OPENAI_API_KEY");
107
160
  if (!apiKey) {
108
161
  throw new Error("OPENAI_API_KEY is required for provider openai");
109
162
  }
@@ -151,7 +204,7 @@ export class AnthropicModelProvider {
151
204
  this.env = env;
152
205
  }
153
206
  async complete(request) {
154
- const apiKey = this.env.ANTHROPIC_API_KEY;
207
+ const apiKey = apiKeyFromEnv(this.env, "ANTHROPIC_API_KEY");
155
208
  if (!apiKey) {
156
209
  throw new Error("ANTHROPIC_API_KEY is required for provider anthropic");
157
210
  }
@@ -218,6 +271,20 @@ function anthropicMessagesEndpoint(baseUrl) {
218
271
  ? url.pathname
219
272
  : joinUrlPath(url.pathname, "v1/messages"), url.origin).toString();
220
273
  }
274
+ function apiKeyFromEnv(env, keyName) {
275
+ const inlineKey = env[keyName];
276
+ if (inlineKey?.trim())
277
+ return inlineKey.trim();
278
+ const keyFile = env[`${keyName}_FILE`];
279
+ if (!keyFile?.trim())
280
+ return undefined;
281
+ const keyPath = keyFile.trim();
282
+ const resolvedPath = resolve(keyPath);
283
+ if (!isAbsolute(keyPath) || resolvedPath !== keyPath) {
284
+ throw new Error(`${keyName}_FILE must be an absolute path`);
285
+ }
286
+ return readFileSync(resolvedPath, "utf8").trim();
287
+ }
221
288
  function openAIRequestBody(request) {
222
289
  return {
223
290
  model: request.model,
@@ -1 +1 @@
1
- {"version":3,"file":"model-providers.js","sourceRoot":"","sources":["../src/model-providers.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,mBAAmB,GAA8B;IACrD,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;IACf,gBAAgB,EAAE,CAAC;IACnB,SAAS,EAAE,KAAK;CACjB,CAAC;AAEF,MAAM,OAAO,6BAA6B;IACvB,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE9D,QAAQ,CAAC,QAAuB;QAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,GAAG,CAAC,UAAkB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,IAAI,iBAAiB,EAAE,CAAC;IAC1D,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,mBAAmB,EAAE,CAAC;IAC9D,IAAI,UAAU,KAAK,WAAW;QAAE,OAAO,IAAI,sBAAsB,EAAE,CAAC;IACpE,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,mBAAmB,EAAE,CAAC;IAC9D,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,mBAAmB,EAAE,CAAC;IAC9D,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,MAAwC;IAExC,IAAI,MAAM,EAAE,gBAAgB,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IACE,MAAM,EAAE,gBAAgB;QACxB,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAClC,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC7C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,UAAkB,EAClB,MAAwC;IAExC,IAAI,CAAC,MAAM,EAAE,kCAAkC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,wCAAwC,UAAU,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED,MAAM,OAAO,iBAAiB;IACnB,EAAE,CAAS;IACX,YAAY,CAA4B;IAChC,UAAU,CAAU;IAErC,YAAY,EACV,EAAE,GAAG,MAAM,EACX,YAAY,GAAG,mBAAmB,EAClC,UAAU,GAAG,KAAK,MAKhB,EAAE;QACJ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAqB;QAClC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ;YAC9B,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC3B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,OAAO;YACL,EAAE,EAAE,eAAe;YACnB,QAAQ,EAAE,IAAI,CAAC,EAAE;YACjB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO;YACP,KAAK,EAAE;gBACL,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;gBACpC,YAAY,EAAE,CAAC;aAChB;YACD,YAAY,EAAE,MAAM;SACrB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,mBAAmB;IACrB,EAAE,GAAG,QAAQ,CAAC;IACd,YAAY,GAA8B;QACjD,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,IAAI;QACd,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;IACe,OAAO,CAAe;IACtB,GAAG,CAAoB;IAExC,YAAY,EACV,OAAO,GAAG,KAAK,EACf,GAAG,GAAG,OAAO,CAAC,GAAG,MAIf,EAAE;QACJ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAqB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,EAAE;gBACjC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,EAAE,WAAW,CAAC,OAAO,CACzB,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CACjD;SACF,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA0B,CAAC;QACjE,OAAO;YACL,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,iBAAiB,CAAC;YAC7C,QAAQ,EAAE,IAAI,CAAC,EAAE;YACjB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;YAC/C,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;YAClC,KAAK,EAAE;gBACL,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC;gBACpD,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;aACvD;YACD,YAAY,EAAE,kBAAkB,CAAC,OAAO,CAAC;SAC1C,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,sBAAsB;IACxB,EAAE,GAAG,WAAW,CAAC;IACjB,YAAY,GAA8B;QACjD,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,IAAI;QACd,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;IACe,OAAO,CAAe;IACtB,GAAG,CAAoB;IAExC,YAAY,EACV,OAAO,GAAG,KAAK,EACf,GAAG,GAAG,OAAO,CAAC,GAAG,MAIf,EAAE;QACJ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAqB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC5C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,WAAW,EAAE,MAAM;gBACnB,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,YAAY;gBACvE,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,EAAE,WAAW,CAAC,OAAO,CACzB,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CACjD;SACF,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA6B,CAAC;QACpE,OAAO;YACL,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,oBAAoB,CAAC;YAChD,QAAQ,EAAE,IAAI,CAAC,EAAE;YACjB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;YAC/C,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC;YACrC,KAAK,EAAE;gBACL,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC;gBACpD,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;aACvD;YACD,YAAY,EAAE,qBAAqB,CAAC,OAAO,CAAC;SAC7C,CAAC;IACJ,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,OAAqB;IAC7C,MAAM,MAAM,GAAG,qBAAqB,CAAC;IACrC,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;SACtC,OAAO,EAAE;SACT,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,IAAI,WAAW,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,OAAO,EAAE,mCAAmC;QAC5C,KAAK,EAAE,uCAAuC;QAC9C,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;AACL,CAAC;AA2BD,SAAS,uBAAuB,CAAC,OAA2B;IAC1D,MAAM,KAAK,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,2BAA2B,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,GAAG,CACZ,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjC,CAAC,CAAC,GAAG,CAAC,QAAQ;QACd,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,EAC1C,GAAG,CAAC,MAAM,CACX,CAAC,QAAQ,EAAE,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CAAC,OAA2B;IAC5D,MAAM,KAAK,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,2BAA2B,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,GAAG,CACZ,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;QACnC,CAAC,CAAC,GAAG,CAAC,QAAQ;QACd,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,EAC5C,GAAG,CAAC,MAAM,CACX,CAAC,QAAQ,EAAE,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAqB;IAC9C,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;YAC5D,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;YACtC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,QAAQ;YAClB,CAAC,CAAC;gBACE,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN,IAAI,EAAE,aAAa;wBACnB,IAAI,EAAE,yBAAyB;wBAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE;wBACtD,MAAM,EAAE,KAAK;qBACd;iBACF;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAqB;IACjD,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ;SACpC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;SAC9C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;SAC9B,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;SAC9C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjB,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;QACzD,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC,CAAC;IACN,MAAM,eAAe,GACnB,+EAA+E,CAAC;IAElF,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACrC,QAAQ,EACN,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YACrC,CAAC,CAAC;gBACE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxB;oBACE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,MAAM;oBACnD,OAAO,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,OAAO,eAAe,EAAE;iBACjF;aACF;YACH,CAAC,CAAC,QAAQ;QACd,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;YAC3B,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACzC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;YACtC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA8B;IACtD,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,WAAW,CAAC;IACxE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACxC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACzC,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,OAAO,CAAC,IAAI,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAiC;IAC5D,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC5C,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,kBAAkB,CACzB,OAA8B;IAE9B,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY;QAAE,OAAO,QAAQ,CAAC;IACrD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAiC;IAEjC,IAAI,OAAO,CAAC,WAAW,KAAK,YAAY;QAAE,OAAO,QAAQ,CAAC;IAC1D,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACtD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,OAAe;IACpD,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,QAAgB;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC3C,MAAM,SAAS,GAAgC,EAAE,CAAC;IAClD,IAAI,QAAQ,EAAE,CAAC;QACb,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5E,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAChB,KAAa,EACb,OAAwB;IAExB,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;QACpC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,gBAAgB;QACxC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;QAClC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC;QACjC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC;QACnC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;QACrC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC;QAC7B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,EAAE;KACzD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"model-providers.js","sourceRoot":"","sources":["../src/model-providers.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { isAbsolute, resolve } from "node:path";
1
3
  export class OllamaModelProvider {
2
4
  id = "ollama";
3
5
  capabilities = {
@@ -19,7 +21,7 @@ export class OllamaModelProvider {
19
21
  method: "POST",
20
22
  headers: {
21
23
  "content-type": "application/json",
22
- authorization: `Bearer ${this.env.OLLAMA_API_KEY ?? "ollama"}`,
24
+ authorization: `Bearer ${ollamaApiKey(this.env)}`,
23
25
  },
24
26
  body: JSON.stringify(ollamaRequestBody(request)),
25
27
  signal: AbortSignal.timeout(request.timeoutMs ?? this.capabilities.timeoutMs),
@@ -41,6 +43,20 @@ export class OllamaModelProvider {
41
43
  };
42
44
  }
43
45
  }
46
+ function ollamaApiKey(env) {
47
+ const inlineKey = env.OLLAMA_API_KEY;
48
+ if (inlineKey?.trim())
49
+ return inlineKey.trim();
50
+ const keyFile = env.OLLAMA_API_KEY_FILE;
51
+ if (!keyFile?.trim())
52
+ return "ollama";
53
+ const keyPath = keyFile.trim();
54
+ const resolvedPath = resolve(keyPath);
55
+ if (!isAbsolute(keyPath) || resolvedPath !== keyPath) {
56
+ throw new Error("OLLAMA_API_KEY_FILE must be an absolute path");
57
+ }
58
+ return readFileSync(resolvedPath, "utf8").trim();
59
+ }
44
60
  function ollamaChatCompletionsEndpoint(baseUrl) {
45
61
  const value = baseUrl?.trim() || "http://localhost:11434/v1";
46
62
  const url = new URL(value);
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-provider.js","sourceRoot":"","sources":["../src/ollama-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ollama-provider.js","sourceRoot":"","sources":["../src/ollama-provider.ts"],"names":[],"mappings":"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"}
@@ -145,6 +145,16 @@ export interface ProviderPolicyConfig {
145
145
  blockedProviders?: string[];
146
146
  allowVendorFallbackWithoutApproval?: boolean;
147
147
  }
148
+ export interface ProviderCredentialConfig {
149
+ apiKeyFile?: string;
150
+ apiKeyFileEnv?: string;
151
+ apiKeyEnv?: string;
152
+ baseUrl?: string;
153
+ baseUrlEnv?: string;
154
+ }
155
+ export interface ProviderCredentialsConfig {
156
+ byProvider: Record<string, ProviderCredentialConfig>;
157
+ }
148
158
  export interface BudgetLimit {
149
159
  maxRequests?: number;
150
160
  maxInputTokens?: number;
@@ -188,6 +198,7 @@ export interface NotificationsConfig {
188
198
  export interface WorkflowConfig {
189
199
  version: number;
190
200
  providers: WorkflowProvidersConfig;
201
+ providerCredentials?: ProviderCredentialsConfig;
191
202
  budgets?: BudgetPolicy;
192
203
  workflow?: {
193
204
  phaseSequence?: string[];
package/dist/types.d.ts CHANGED
@@ -3,7 +3,7 @@ import type { ModelProvenanceRecord, TelemetryConsentState } from "./types/model
3
3
  import type { CollaborationFlowRecommendation, MemoryPacket, SkillPlan, SkillRenderTarget, WorkflowTemplateSelection } from "./types/skills.js";
4
4
  import type { EventEntry, LockEntry, Task, TaskStatus } from "./types/tasks.js";
5
5
  export type { ContextBudgetMetadata, ContextBudgetSection, } from "./types/context.js";
6
- export type { BudgetLimit, BudgetPolicy, ConfiguredProviderSummary, GitHubConfig, GitHubNotificationConfig, ModelMessage, ModelProvider, ModelProviderCapabilities, ModelProviderError, ModelProvenanceInput, ModelProvenanceRecord, ModelRequest, ModelResponse, ModelStreamEvent, NotificationChannelResult, NotificationsConfig, PhaseExecutionMode, PhaseExecutorPhase, PhaseLlmResult, PhaseOutcome, PhaseStructuredOutput, ProviderFallbackResult, ProviderPolicyConfig, ProviderRouting, SlackNotificationConfig, TelemetryConsentState, TelemetryLevel, ToolConfig, WorkflowConfig, WorkflowProvidersConfig, } from "./types/model-config.js";
6
+ export type { BudgetLimit, BudgetPolicy, ConfiguredProviderSummary, GitHubConfig, GitHubNotificationConfig, ModelMessage, ModelProvider, ModelProviderCapabilities, ModelProviderError, ModelProvenanceInput, ModelProvenanceRecord, ModelRequest, ModelResponse, ModelStreamEvent, NotificationChannelResult, NotificationsConfig, PhaseExecutionMode, PhaseExecutorPhase, PhaseLlmResult, PhaseOutcome, PhaseStructuredOutput, ProviderFallbackResult, ProviderCredentialConfig, ProviderCredentialsConfig, ProviderPolicyConfig, ProviderRouting, SlackNotificationConfig, TelemetryConsentState, TelemetryLevel, ToolConfig, WorkflowConfig, WorkflowProvidersConfig, } from "./types/model-config.js";
7
7
  export type { RuntimeAdapter, RuntimeAdapterKind, RuntimeBrief, RuntimeDelegationAssignment, RuntimeDelegationMode, RuntimeDelegationPacket, RuntimeDelegationPolicy, RuntimeExecutionAdapter, RuntimeExecutionCapabilities, RuntimeExecutionId, RuntimeExecutionPolicy, RuntimeExecutorConfig, RuntimeSelection, RuntimeSubagentCapabilities, } from "./types/runtime.js";
8
8
  export type { AgentLesson, AgentLessonInput, CollaborationFlow, CollaborationFlowRecommendation, CollaborationFlowStep, MemoryHookPoint, MemoryLessonSnippet, MemoryPacket, MemoryPromptSnippet, MemorySectionReport, Skill, SkillLoadBudget, SkillPlan, SkillPlanItem, SkillRenderTarget, SkillValidationReport, RenderedWorkflowTemplate, WorkflowTemplate, WorkflowTemplateSelection, } from "./types/skills.js";
9
9
  export { SIZING_LABELS, type BenchmarkQualitySignals, type BenchmarkResult, type BenchmarkSummary, type BurndownPoint, type BurndownSeries, type CalibrationReport, type CalibrationRoleReport, type EstimateConfidence, type EstimateInput, type EstimateRecord, type SizingLabel, type SprintRecord, type SprintVelocity, type SprintVelocityReport, type TaskEstimateBreakdown, type VelocityReport, type VelocityWeek, } from "./types/metrics.js";
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA2FA,OAAO,EACL,aAAa,GAkBd,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA6FA,OAAO,EACL,aAAa,GAkBd,MAAM,oBAAoB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AddTaskInput, ArtifactResult, BudgetCheckResult, BudgetEstimatePreflight, BudgetEscalationDecision, BudgetEscalationResult, ClaimLockInput, ConfiguredProviderSummary, DependencyReport, DecisionInput, DecisionRecord, EventEntry, ExecutionPlan, ExecutionRun, GateEvaluationResult, HandoffInput, LockEntry, ProviderRouting, ProviderFallbackResult, PreRunValidationReport, ModelProvenanceInput, ModelProvenanceRecord, ReadinessReport, Role, Task, TaskContext, TaskGraphBatchRun, TaskGraphDryRunMode, TaskGraphDryRunPreview, TaskGraphPlan, UsageReport, UpdateTaskInput, WorkflowStatus, WorkflowConfig } from "./types.js";
1
+ import type { AddTaskInput, ArtifactResult, BudgetCheckResult, BudgetEstimatePreflight, BudgetEscalationDecision, BudgetEscalationResult, ClaimLockInput, ConfiguredProviderSummary, DependencyReport, DecisionInput, DecisionRecord, EventEntry, ExecutionPlan, ExecutionRun, GateEvaluationResult, HandoffInput, LockEntry, ProviderRouting, ProviderFallbackResult, ProviderCredentialConfig, PreRunValidationReport, ModelProvenanceInput, ModelProvenanceRecord, ReadinessReport, Role, Task, TaskContext, TaskGraphBatchRun, TaskGraphDryRunMode, TaskGraphDryRunPreview, TaskGraphPlan, UsageReport, UpdateTaskInput, WorkflowStatus, WorkflowConfig } from "./types.js";
2
2
  export { addEvidence, addPlaywrightEvidence, listEvidence, listReviews, recordReview, } from "./workflow-evidence-service.js";
3
3
  export { generatePlaywrightTestPlan, generatePullRequestSummary, getWorkflowSummary, } from "./workflow-summary-service.js";
4
4
  export { approveApproval, approveWorkflowGate, listApprovals, rejectApproval, showApproval, } from "./workflow-approval-service.js";
@@ -60,6 +60,30 @@ export declare function completeWithProviderFallback(routing: ProviderRouting, p
60
60
  providerMode?: "fake" | "real";
61
61
  }): Promise<ProviderFallbackResult>;
62
62
  export declare function setRoleModelProvider(role: string, routing: ProviderRouting, root?: string): Promise<ProviderRouting>;
63
+ export interface ConnectModelProviderInput {
64
+ provider: string;
65
+ model: string;
66
+ roles: string[];
67
+ fallbacks: string[];
68
+ maxTokens: number;
69
+ maxCostUsd: number;
70
+ timeoutMs: number;
71
+ retries: number;
72
+ requiredCapabilities: string[];
73
+ apiKeyFile?: string;
74
+ apiKeyFileEnv?: string;
75
+ baseUrl?: string;
76
+ baseUrlEnv?: string;
77
+ allowDirectProviderApi: boolean;
78
+ }
79
+ export interface ConnectModelProviderResult {
80
+ provider: string;
81
+ model: string;
82
+ roles: string[];
83
+ credential?: ProviderCredentialConfig;
84
+ allowDirectProviderApi: boolean;
85
+ }
86
+ export declare function connectModelProvider(input: ConnectModelProviderInput, root?: string): Promise<ConnectModelProviderResult>;
63
87
  export declare function recordModelProvenance(input: ModelProvenanceInput, root?: string): Promise<ModelProvenanceRecord>;
64
88
  export declare function listModelProvenance(taskId?: string, root?: string): Promise<ModelProvenanceRecord[]>;
65
89
  export declare function getUsageReport(taskId?: string, root?: string): Promise<UsageReport>;
@@ -3,7 +3,7 @@ import path from "node:path";
3
3
  import { FILES } from "./constants.js";
4
4
  import { removeUndefined } from "./command-utils.js";
5
5
  import { ensureDir, readJson, resolveWorkflowPath, updateJsonFile, writeJson, } from "./fs-utils.js";
6
- import { assertProviderAllowed, assertVendorFallbackAllowed, createModelProvider, FakeModelProvider, InMemoryModelProviderRegistry, summarizeConfiguredProviders, } from "./model-providers.js";
6
+ import { assertProviderAllowed, assertVendorFallbackAllowed, createModelProvider, defaultApiKeyFileEnv, defaultBaseUrlEnv, FakeModelProvider, InMemoryModelProviderRegistry, providerEnvFromCredentialConfig, summarizeConfiguredProviders, } from "./model-providers.js";
7
7
  import { appendEvent, loadWorkspace, readEvents, writeArtifact, } from "./workspace.js";
8
8
  import { validateReadiness } from "./validation.js";
9
9
  import { getWorkflowGate } from "./workflow-gates.js";
@@ -1048,7 +1048,9 @@ export async function completeWithProviderFallback(routing, prompt, { failingPro
1048
1048
  assertProviderAllowed(providerId, config.providerPolicy);
1049
1049
  }
1050
1050
  registry.register(providerMode === "real" && !failingProviders.includes(providerId)
1051
- ? createModelProvider(providerId)
1051
+ ? createModelProvider(providerId, {
1052
+ env: providerEnvFromCredentialConfig(providerId, config.providerCredentials?.byProvider?.[providerId]),
1053
+ })
1052
1054
  : new FakeModelProvider({
1053
1055
  id: providerId,
1054
1056
  shouldFail: failingProviders.includes(providerId),
@@ -1129,6 +1131,91 @@ export async function setRoleModelProvider(role, routing, root = process.cwd())
1129
1131
  });
1130
1132
  return routing;
1131
1133
  }
1134
+ export async function connectModelProvider(input, root = process.cwd()) {
1135
+ const workspace = await loadWorkspace(root);
1136
+ for (const role of input.roles) {
1137
+ if (!workspace.roleIds.has(role)) {
1138
+ throw new Error(`unknown role: ${role}`);
1139
+ }
1140
+ }
1141
+ const configPath = resolveWorkflowPath(root, FILES.config);
1142
+ const config = await readJson(configPath, {});
1143
+ const routing = {
1144
+ provider: input.provider,
1145
+ model: input.model,
1146
+ fallbacks: input.fallbacks,
1147
+ maxTokens: input.maxTokens,
1148
+ maxCostUsd: input.maxCostUsd,
1149
+ timeoutMs: input.timeoutMs,
1150
+ retries: input.retries,
1151
+ requiredCapabilities: input.requiredCapabilities,
1152
+ };
1153
+ const byRole = { ...(config.providers?.byRole ?? {}) };
1154
+ for (const role of input.roles) {
1155
+ byRole[role] = routing;
1156
+ }
1157
+ config.providers = {
1158
+ defaults: config.providers?.defaults ?? routing,
1159
+ byRole,
1160
+ };
1161
+ const credential = removeUndefined({
1162
+ apiKeyFile: input.apiKeyFile,
1163
+ apiKeyFileEnv: input.apiKeyFileEnv ??
1164
+ (input.apiKeyFile ? defaultApiKeyFileEnv(input.provider) : undefined),
1165
+ baseUrl: input.baseUrl,
1166
+ baseUrlEnv: input.baseUrlEnv ??
1167
+ (input.baseUrl ? defaultBaseUrlEnv(input.provider) : undefined),
1168
+ });
1169
+ if (Object.keys(credential).length > 0) {
1170
+ config.providerCredentials = {
1171
+ byProvider: {
1172
+ ...(config.providerCredentials?.byProvider ?? {}),
1173
+ [input.provider]: credential,
1174
+ },
1175
+ };
1176
+ }
1177
+ if (input.allowDirectProviderApi) {
1178
+ config.providerPolicy = {
1179
+ ...(config.providerPolicy ?? {}),
1180
+ allowedProviders: unique([
1181
+ ...(config.providerPolicy?.allowedProviders ?? []),
1182
+ input.provider,
1183
+ ]),
1184
+ };
1185
+ config.runtimePolicy = {
1186
+ ...(config.runtimePolicy ?? {}),
1187
+ byRole: config.runtimePolicy?.byRole ?? {},
1188
+ byTask: config.runtimePolicy?.byTask ?? {},
1189
+ delegation: {
1190
+ mode: config.runtimePolicy?.delegation?.mode ?? "runtime-native",
1191
+ allowDirectProviderApi: true,
1192
+ },
1193
+ };
1194
+ }
1195
+ await writeJson(configPath, config);
1196
+ await appendEvent(root, {
1197
+ type: "MODEL_ROUTING_CONFIGURED",
1198
+ actor: "parent",
1199
+ summary: `Model provider connected: ${input.provider}`,
1200
+ metadata: {
1201
+ provider: input.provider,
1202
+ model: input.model,
1203
+ roles: input.roles,
1204
+ apiKeyFileEnv: credential.apiKeyFileEnv,
1205
+ allowDirectProviderApi: input.allowDirectProviderApi,
1206
+ },
1207
+ });
1208
+ return removeUndefined({
1209
+ provider: input.provider,
1210
+ model: input.model,
1211
+ roles: input.roles,
1212
+ credential: Object.keys(credential).length > 0 ? credential : undefined,
1213
+ allowDirectProviderApi: input.allowDirectProviderApi,
1214
+ });
1215
+ }
1216
+ function unique(values) {
1217
+ return [...new Set(values)];
1218
+ }
1132
1219
  export async function recordModelProvenance(input, root = process.cwd()) {
1133
1220
  const workspace = await loadWorkspace(root);
1134
1221
  if (!workspace.tasks.some((task) => task.id === input.task)) {