@yagr/agent 0.2.8 → 0.2.10

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 (150) hide show
  1. package/README.md +8 -8
  2. package/dist/cli.js +206 -9
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config/yagr-config-service.d.ts +1 -1
  5. package/dist/config/yagr-config-service.d.ts.map +1 -1
  6. package/dist/config/yagr-home.d.ts +7 -0
  7. package/dist/config/yagr-home.d.ts.map +1 -1
  8. package/dist/config/yagr-home.js +19 -0
  9. package/dist/config/yagr-home.js.map +1 -1
  10. package/dist/gateway/format-message.d.ts +3 -0
  11. package/dist/gateway/format-message.d.ts.map +1 -1
  12. package/dist/gateway/format-message.js +63 -10
  13. package/dist/gateway/format-message.js.map +1 -1
  14. package/dist/gateway/interactive-ui.d.ts.map +1 -1
  15. package/dist/gateway/interactive-ui.js +49 -4
  16. package/dist/gateway/interactive-ui.js.map +1 -1
  17. package/dist/gateway/local-open-bridge.d.ts +3 -0
  18. package/dist/gateway/local-open-bridge.d.ts.map +1 -0
  19. package/dist/gateway/local-open-bridge.js +54 -0
  20. package/dist/gateway/local-open-bridge.js.map +1 -0
  21. package/dist/gateway/webui.d.ts.map +1 -1
  22. package/dist/gateway/webui.js +50 -53
  23. package/dist/gateway/webui.js.map +1 -1
  24. package/dist/gateway/workflow-links.d.ts +12 -0
  25. package/dist/gateway/workflow-links.d.ts.map +1 -0
  26. package/dist/gateway/workflow-links.js +53 -0
  27. package/dist/gateway/workflow-links.js.map +1 -0
  28. package/dist/llm/anthropic-account.d.ts +20 -0
  29. package/dist/llm/anthropic-account.d.ts.map +1 -0
  30. package/dist/llm/anthropic-account.js +111 -0
  31. package/dist/llm/anthropic-account.js.map +1 -0
  32. package/dist/llm/copilot-account.d.ts +36 -0
  33. package/dist/llm/copilot-account.d.ts.map +1 -0
  34. package/dist/llm/copilot-account.js +573 -0
  35. package/dist/llm/copilot-account.js.map +1 -0
  36. package/dist/llm/create-language-model.d.ts +2 -2
  37. package/dist/llm/create-language-model.d.ts.map +1 -1
  38. package/dist/llm/create-language-model.js +187 -38
  39. package/dist/llm/create-language-model.js.map +1 -1
  40. package/dist/llm/google-account.d.ts +31 -0
  41. package/dist/llm/google-account.d.ts.map +1 -0
  42. package/dist/llm/google-account.js +851 -0
  43. package/dist/llm/google-account.js.map +1 -0
  44. package/dist/llm/model-catalog-cache.d.ts +4 -0
  45. package/dist/llm/model-catalog-cache.d.ts.map +1 -0
  46. package/dist/llm/model-catalog-cache.js +46 -0
  47. package/dist/llm/model-catalog-cache.js.map +1 -0
  48. package/dist/llm/openai-account.d.ts +33 -0
  49. package/dist/llm/openai-account.d.ts.map +1 -0
  50. package/dist/llm/openai-account.js +430 -0
  51. package/dist/llm/openai-account.js.map +1 -0
  52. package/dist/llm/provider-discovery.d.ts +3 -0
  53. package/dist/llm/provider-discovery.d.ts.map +1 -0
  54. package/dist/llm/provider-discovery.js +40 -0
  55. package/dist/llm/provider-discovery.js.map +1 -0
  56. package/dist/llm/provider-registry.d.ts +37 -0
  57. package/dist/llm/provider-registry.d.ts.map +1 -0
  58. package/dist/llm/provider-registry.js +186 -0
  59. package/dist/llm/provider-registry.js.map +1 -0
  60. package/dist/llm/proxy-runtime.d.ts +37 -0
  61. package/dist/llm/proxy-runtime.d.ts.map +1 -0
  62. package/dist/llm/proxy-runtime.js +462 -0
  63. package/dist/llm/proxy-runtime.js.map +1 -0
  64. package/dist/llm/test-model-policy.d.ts +3 -0
  65. package/dist/llm/test-model-policy.d.ts.map +1 -0
  66. package/dist/llm/test-model-policy.js +16 -0
  67. package/dist/llm/test-model-policy.js.map +1 -0
  68. package/dist/n8n-local/bootstrap.d.ts +12 -0
  69. package/dist/n8n-local/bootstrap.d.ts.map +1 -0
  70. package/dist/n8n-local/bootstrap.js +281 -0
  71. package/dist/n8n-local/bootstrap.js.map +1 -0
  72. package/dist/n8n-local/browser-auth.d.ts +12 -0
  73. package/dist/n8n-local/browser-auth.d.ts.map +1 -0
  74. package/dist/n8n-local/browser-auth.js +159 -0
  75. package/dist/n8n-local/browser-auth.js.map +1 -0
  76. package/dist/n8n-local/detect.d.ts +50 -0
  77. package/dist/n8n-local/detect.d.ts.map +1 -0
  78. package/dist/n8n-local/detect.js +202 -0
  79. package/dist/n8n-local/detect.js.map +1 -0
  80. package/dist/n8n-local/direct-manager.d.ts +15 -0
  81. package/dist/n8n-local/direct-manager.d.ts.map +1 -0
  82. package/dist/n8n-local/direct-manager.js +231 -0
  83. package/dist/n8n-local/direct-manager.js.map +1 -0
  84. package/dist/n8n-local/docker-manager.d.ts +18 -0
  85. package/dist/n8n-local/docker-manager.d.ts.map +1 -0
  86. package/dist/n8n-local/docker-manager.js +216 -0
  87. package/dist/n8n-local/docker-manager.js.map +1 -0
  88. package/dist/n8n-local/owner-credentials.d.ts +15 -0
  89. package/dist/n8n-local/owner-credentials.d.ts.map +1 -0
  90. package/dist/n8n-local/owner-credentials.js +50 -0
  91. package/dist/n8n-local/owner-credentials.js.map +1 -0
  92. package/dist/n8n-local/plan.d.ts +16 -0
  93. package/dist/n8n-local/plan.d.ts.map +1 -0
  94. package/dist/n8n-local/plan.js +48 -0
  95. package/dist/n8n-local/plan.js.map +1 -0
  96. package/dist/n8n-local/state.d.ts +41 -0
  97. package/dist/n8n-local/state.d.ts.map +1 -0
  98. package/dist/n8n-local/state.js +80 -0
  99. package/dist/n8n-local/state.js.map +1 -0
  100. package/dist/n8n-local/workflow-open.d.ts +21 -0
  101. package/dist/n8n-local/workflow-open.d.ts.map +1 -0
  102. package/dist/n8n-local/workflow-open.js +50 -0
  103. package/dist/n8n-local/workflow-open.js.map +1 -0
  104. package/dist/runtime/context-compaction.d.ts.map +1 -1
  105. package/dist/runtime/context-compaction.js +7 -0
  106. package/dist/runtime/context-compaction.js.map +1 -1
  107. package/dist/runtime/run-engine.d.ts.map +1 -1
  108. package/dist/runtime/run-engine.js +52 -1
  109. package/dist/runtime/run-engine.js.map +1 -1
  110. package/dist/setup/setup-wizard.d.ts +35 -3
  111. package/dist/setup/setup-wizard.d.ts.map +1 -1
  112. package/dist/setup/setup-wizard.js +461 -54
  113. package/dist/setup/setup-wizard.js.map +1 -1
  114. package/dist/setup.d.ts +2 -1
  115. package/dist/setup.d.ts.map +1 -1
  116. package/dist/setup.js +201 -87
  117. package/dist/setup.js.map +1 -1
  118. package/dist/system/open-external.d.ts +2 -0
  119. package/dist/system/open-external.d.ts.map +1 -0
  120. package/dist/system/open-external.js +25 -0
  121. package/dist/system/open-external.js.map +1 -0
  122. package/dist/system/package-manager.d.ts +6 -0
  123. package/dist/system/package-manager.d.ts.map +1 -0
  124. package/dist/system/package-manager.js +13 -0
  125. package/dist/system/package-manager.js.map +1 -0
  126. package/dist/tools/build-tools.d.ts +110 -65
  127. package/dist/tools/build-tools.d.ts.map +1 -1
  128. package/dist/tools/deploy.d.ts +14 -14
  129. package/dist/tools/generate-workflow.d.ts +5 -5
  130. package/dist/tools/n8nac.d.ts +96 -53
  131. package/dist/tools/n8nac.d.ts.map +1 -1
  132. package/dist/tools/n8nac.js +52 -20
  133. package/dist/tools/n8nac.js.map +1 -1
  134. package/dist/tools/observer.d.ts +1 -0
  135. package/dist/tools/observer.d.ts.map +1 -1
  136. package/dist/tools/observer.js.map +1 -1
  137. package/dist/tools/present-workflow-result.d.ts +2 -0
  138. package/dist/tools/present-workflow-result.d.ts.map +1 -1
  139. package/dist/tools/present-workflow-result.js +11 -2
  140. package/dist/tools/present-workflow-result.js.map +1 -1
  141. package/dist/tools/request-required-action.d.ts +7 -7
  142. package/dist/tools/request-required-action.js +4 -4
  143. package/dist/tools/request-required-action.js.map +1 -1
  144. package/dist/tools/validate.d.ts +14 -14
  145. package/dist/tools/write-workspace-file.d.ts +5 -5
  146. package/dist/types.d.ts +1 -0
  147. package/dist/types.d.ts.map +1 -1
  148. package/dist/webui/app.js +14 -5
  149. package/dist/webui/app.js.map +2 -2
  150. package/package.json +14 -2
@@ -0,0 +1,40 @@
1
+ import { getDefaultBaseUrlForProvider, getProviderDefinition } from './provider-registry.js';
2
+ export async function fetchAvailableModels(provider, apiKey, baseUrl) {
3
+ const definition = getProviderDefinition(provider);
4
+ const discovery = definition.modelDiscovery;
5
+ if (!discovery) {
6
+ return [];
7
+ }
8
+ const discoveryUrl = discovery.buildUrl(baseUrl || getDefaultBaseUrlForProvider(provider));
9
+ if (!discoveryUrl) {
10
+ return [];
11
+ }
12
+ const headers = {
13
+ 'Content-Type': 'application/json',
14
+ };
15
+ if ((discovery.authMode === 'bearer-optional' || discovery.authMode === 'bearer-required') && apiKey) {
16
+ headers.Authorization = `Bearer ${apiKey}`;
17
+ }
18
+ if (discovery.authMode === 'x-api-key-required' && apiKey) {
19
+ headers['x-api-key'] = apiKey;
20
+ headers['anthropic-version'] = '2023-06-01';
21
+ }
22
+ if (discovery.authMode === 'bearer-required' && !apiKey) {
23
+ return [];
24
+ }
25
+ if (discovery.authMode === 'x-api-key-required' && !apiKey) {
26
+ return [];
27
+ }
28
+ try {
29
+ const response = await fetch(discoveryUrl, { headers });
30
+ if (!response.ok) {
31
+ throw new Error(`${response.status} ${response.statusText}`);
32
+ }
33
+ const payload = await response.json();
34
+ return discovery.mapResponse(payload).sort((left, right) => left.localeCompare(right));
35
+ }
36
+ catch {
37
+ return [];
38
+ }
39
+ }
40
+ //# sourceMappingURL=provider-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-discovery.js","sourceRoot":"","sources":["../../src/llm/provider-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAA0B,MAAM,wBAAwB,CAAC;AAErH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAA2B,EAC3B,MAAe,EACf,OAAgB;IAEhB,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,UAAU,CAAC,cAAc,CAAC;IAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,IAAI,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3F,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAEF,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,iBAAiB,IAAI,SAAS,CAAC,QAAQ,KAAK,iBAAiB,CAAC,IAAI,MAAM,EAAE,CAAC;QACrG,OAAO,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,CAAC;IAC7C,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,KAAK,oBAAoB,IAAI,MAAM,EAAE,CAAC;QAC1D,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;QAC9B,OAAO,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAAC;IAC9C,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,KAAK,iBAAiB,IAAI,CAAC,MAAM,EAAE,CAAC;QACxD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,KAAK,oBAAoB,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6B,CAAC;QACjE,OAAO,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACzF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { YagrLocalConfig } from '../config/yagr-config-service.js';
2
+ export type YagrModelProvider = 'anthropic' | 'openai' | 'google' | 'groq' | 'mistral' | 'openrouter' | 'openai-proxy' | 'anthropic-proxy' | 'google-proxy' | 'copilot-proxy';
3
+ export interface YagrProviderDefinition {
4
+ id: YagrModelProvider;
5
+ displayName?: string;
6
+ defaultModel: string;
7
+ defaultBaseUrl?: string;
8
+ requiresApiKey: boolean;
9
+ usesOpenAiCompatibleApi: boolean;
10
+ experimental?: boolean;
11
+ setupHint?: string;
12
+ managedProxy?: {
13
+ packageName: string;
14
+ executable: string;
15
+ args?: string[];
16
+ readyTimeoutMs?: number;
17
+ startupNotes?: string[];
18
+ };
19
+ modelDiscovery?: {
20
+ buildUrl: (baseUrl?: string) => string | undefined;
21
+ authMode: 'bearer-optional' | 'bearer-required' | 'x-api-key-required' | 'none';
22
+ mapResponse: (data: Record<string, unknown>) => string[];
23
+ };
24
+ }
25
+ export declare const YAGR_PROVIDER_DEFINITIONS: Record<YagrModelProvider, YagrProviderDefinition>;
26
+ export declare const YAGR_MODEL_PROVIDERS: readonly YagrModelProvider[];
27
+ export declare function getProviderDefinition(provider: YagrModelProvider): YagrProviderDefinition;
28
+ export declare function getDefaultBaseUrlForProvider(provider: YagrModelProvider): string | undefined;
29
+ export declare function getDefaultModelForProvider(provider: YagrModelProvider): string;
30
+ export declare function providerNeedsBaseUrlInput(provider: YagrModelProvider): boolean;
31
+ export declare function providerRequiresApiKey(provider: YagrModelProvider): boolean;
32
+ export declare function isExperimentalProvider(provider: YagrModelProvider): boolean;
33
+ export declare function getProviderSetupHint(provider: YagrModelProvider): string | undefined;
34
+ export declare function getProviderDisplayName(provider: YagrModelProvider): string;
35
+ export declare function isOAuthAccountProvider(provider: YagrModelProvider): boolean;
36
+ export declare function isProviderConfigured(localConfig: YagrLocalConfig, getApiKey: (provider: YagrModelProvider) => string | undefined): boolean;
37
+ //# sourceMappingURL=provider-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../../src/llm/provider-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAMxE,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,SAAS,GACT,YAAY,GACZ,cAAc,GACd,iBAAiB,GACjB,cAAc,GACd,eAAe,CAAC;AAEpB,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,iBAAiB,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,uBAAuB,EAAE,OAAO,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,cAAc,CAAC,EAAE;QACf,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;QACnD,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,MAAM,CAAC;QAChF,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;KAC1D,CAAC;CACH;AAYD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAoHvF,CAAC;AAEF,eAAO,MAAM,oBAAoB,8BAA+E,CAAC;AAEjH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,sBAAsB,CAEzF;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAE5F;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAM9E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAE3E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAE3E;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAEpF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAE1E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAE3E;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,CAe1I"}
@@ -0,0 +1,186 @@
1
+ import { DEFAULT_COPILOT_API_BASE_URL, GITHUB_COPILOT_DEFAULT_MODEL } from './copilot-account.js';
2
+ import { ANTHROPIC_ACCOUNT_DEFAULT_MODEL } from './anthropic-account.js';
3
+ import { GEMINI_ACCOUNT_DEFAULT_MODEL } from './google-account.js';
4
+ import { OPENAI_ACCOUNT_BASE_URL, OPENAI_ACCOUNT_DEFAULT_MODEL } from './openai-account.js';
5
+ const MODEL_LIST_MAPPER = (data) => data.data?.map((model) => model.id) ?? [];
6
+ const GOOGLE_OPENAI_MODEL_LIST_MAPPER = (data) => data.data
7
+ ?.map((model) => model.id?.replace(/^models\//, ''))
8
+ .filter((id) => typeof id === 'string' && /^gemini-/i.test(id))
9
+ .filter((id) => Boolean(id))
10
+ ?? [];
11
+ export const YAGR_PROVIDER_DEFINITIONS = {
12
+ anthropic: {
13
+ id: 'anthropic',
14
+ displayName: 'Claude',
15
+ defaultModel: 'claude-sonnet-4-5',
16
+ requiresApiKey: true,
17
+ usesOpenAiCompatibleApi: false,
18
+ modelDiscovery: {
19
+ buildUrl: () => 'https://api.anthropic.com/v1/models',
20
+ authMode: 'x-api-key-required',
21
+ mapResponse: MODEL_LIST_MAPPER,
22
+ },
23
+ },
24
+ openai: {
25
+ id: 'openai',
26
+ displayName: 'OpenAI',
27
+ defaultModel: 'gpt-4o',
28
+ requiresApiKey: true,
29
+ usesOpenAiCompatibleApi: true,
30
+ modelDiscovery: {
31
+ buildUrl: () => 'https://api.openai.com/v1/models',
32
+ authMode: 'bearer-required',
33
+ mapResponse: MODEL_LIST_MAPPER,
34
+ },
35
+ },
36
+ google: {
37
+ id: 'google',
38
+ displayName: 'Gemini',
39
+ defaultModel: 'gemini-2.5-flash',
40
+ defaultBaseUrl: 'https://generativelanguage.googleapis.com/v1beta/openai',
41
+ requiresApiKey: true,
42
+ usesOpenAiCompatibleApi: true,
43
+ modelDiscovery: {
44
+ buildUrl: () => 'https://generativelanguage.googleapis.com/v1beta/openai/models',
45
+ authMode: 'bearer-required',
46
+ mapResponse: GOOGLE_OPENAI_MODEL_LIST_MAPPER,
47
+ },
48
+ },
49
+ groq: {
50
+ id: 'groq',
51
+ displayName: 'Groq',
52
+ defaultModel: 'llama-3.1-70b-versatile',
53
+ defaultBaseUrl: 'https://api.groq.com/openai/v1',
54
+ requiresApiKey: true,
55
+ usesOpenAiCompatibleApi: true,
56
+ modelDiscovery: {
57
+ buildUrl: () => 'https://api.groq.com/openai/v1/models',
58
+ authMode: 'bearer-required',
59
+ mapResponse: MODEL_LIST_MAPPER,
60
+ },
61
+ },
62
+ mistral: {
63
+ id: 'mistral',
64
+ displayName: 'Mistral',
65
+ defaultModel: 'mistral-large-latest',
66
+ defaultBaseUrl: 'https://api.mistral.ai/v1',
67
+ requiresApiKey: true,
68
+ usesOpenAiCompatibleApi: true,
69
+ modelDiscovery: {
70
+ buildUrl: () => 'https://api.mistral.ai/v1/models',
71
+ authMode: 'bearer-required',
72
+ mapResponse: MODEL_LIST_MAPPER,
73
+ },
74
+ },
75
+ openrouter: {
76
+ id: 'openrouter',
77
+ displayName: 'OpenRouter',
78
+ defaultModel: 'anthropic/claude-3.5-sonnet',
79
+ defaultBaseUrl: 'https://openrouter.ai/api/v1',
80
+ requiresApiKey: true,
81
+ usesOpenAiCompatibleApi: true,
82
+ modelDiscovery: {
83
+ buildUrl: () => 'https://openrouter.ai/api/v1/models',
84
+ authMode: 'bearer-required',
85
+ mapResponse: MODEL_LIST_MAPPER,
86
+ },
87
+ },
88
+ 'openai-proxy': {
89
+ id: 'openai-proxy',
90
+ displayName: 'OpenAI',
91
+ defaultModel: OPENAI_ACCOUNT_DEFAULT_MODEL,
92
+ defaultBaseUrl: OPENAI_ACCOUNT_BASE_URL,
93
+ requiresApiKey: false,
94
+ usesOpenAiCompatibleApi: true,
95
+ setupHint: 'ChatGPT subscription, no API key required',
96
+ modelDiscovery: {
97
+ buildUrl: () => `${OPENAI_ACCOUNT_BASE_URL}/models`,
98
+ authMode: 'bearer-required',
99
+ mapResponse: MODEL_LIST_MAPPER,
100
+ },
101
+ },
102
+ 'anthropic-proxy': {
103
+ id: 'anthropic-proxy',
104
+ displayName: 'Claude',
105
+ defaultModel: ANTHROPIC_ACCOUNT_DEFAULT_MODEL,
106
+ requiresApiKey: false,
107
+ usesOpenAiCompatibleApi: false,
108
+ setupHint: 'Claude setup-token from `claude setup-token`',
109
+ },
110
+ 'google-proxy': {
111
+ id: 'google-proxy',
112
+ displayName: 'Gemini',
113
+ defaultModel: GEMINI_ACCOUNT_DEFAULT_MODEL,
114
+ requiresApiKey: false,
115
+ usesOpenAiCompatibleApi: false,
116
+ setupHint: 'Gemini subscription, no API key required (unofficial, not recommended)',
117
+ },
118
+ 'copilot-proxy': {
119
+ id: 'copilot-proxy',
120
+ displayName: 'GitHub',
121
+ defaultModel: GITHUB_COPILOT_DEFAULT_MODEL,
122
+ defaultBaseUrl: DEFAULT_COPILOT_API_BASE_URL,
123
+ requiresApiKey: false,
124
+ usesOpenAiCompatibleApi: true,
125
+ setupHint: 'Copilot subscription, no API key required',
126
+ },
127
+ };
128
+ export const YAGR_MODEL_PROVIDERS = Object.freeze(Object.keys(YAGR_PROVIDER_DEFINITIONS));
129
+ export function getProviderDefinition(provider) {
130
+ return YAGR_PROVIDER_DEFINITIONS[provider];
131
+ }
132
+ export function getDefaultBaseUrlForProvider(provider) {
133
+ return getProviderDefinition(provider).defaultBaseUrl;
134
+ }
135
+ export function getDefaultModelForProvider(provider) {
136
+ return getProviderDefinition(provider).defaultModel;
137
+ }
138
+ export function providerNeedsBaseUrlInput(provider) {
139
+ if (isOAuthAccountProvider(provider)) {
140
+ return false;
141
+ }
142
+ return provider.endsWith('-proxy') || provider === 'groq' || provider === 'mistral' || provider === 'openrouter';
143
+ }
144
+ export function providerRequiresApiKey(provider) {
145
+ return getProviderDefinition(provider).requiresApiKey;
146
+ }
147
+ export function isExperimentalProvider(provider) {
148
+ return getProviderDefinition(provider).experimental === true;
149
+ }
150
+ export function getProviderSetupHint(provider) {
151
+ return getProviderDefinition(provider).setupHint;
152
+ }
153
+ export function getProviderDisplayName(provider) {
154
+ return getProviderDefinition(provider).displayName ?? provider;
155
+ }
156
+ export function isOAuthAccountProvider(provider) {
157
+ return provider === 'openai-proxy' || provider === 'anthropic-proxy' || provider === 'google-proxy' || provider === 'copilot-proxy';
158
+ }
159
+ export function isProviderConfigured(localConfig, getApiKey) {
160
+ if (!localConfig.provider || !localConfig.model) {
161
+ return false;
162
+ }
163
+ const definition = getProviderDefinition(localConfig.provider);
164
+ if (definition.requiresApiKey && !getApiKey(localConfig.provider)) {
165
+ return false;
166
+ }
167
+ if (providerNeedsBaseUrlInput(localConfig.provider) && !(localConfig.baseUrl || definition.defaultBaseUrl)) {
168
+ return false;
169
+ }
170
+ return true;
171
+ }
172
+ function normalizeProxyModelsUrl(baseUrl) {
173
+ const normalizedBaseUrl = normalizeBaseUrl(baseUrl);
174
+ if (!normalizedBaseUrl) {
175
+ return undefined;
176
+ }
177
+ return normalizedBaseUrl.endsWith('/models') ? normalizedBaseUrl : `${normalizedBaseUrl}/models`;
178
+ }
179
+ function normalizeBaseUrl(baseUrl) {
180
+ const trimmed = baseUrl?.trim();
181
+ if (!trimmed) {
182
+ return undefined;
183
+ }
184
+ return trimmed.endsWith('/') ? trimmed.slice(0, -1) : trimmed;
185
+ }
186
+ //# sourceMappingURL=provider-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../../src/llm/provider-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { type YagrModelProvider } from './provider-registry.js';
2
+ export interface PreparedProviderRuntime {
3
+ provider: YagrModelProvider;
4
+ baseUrl: string;
5
+ apiKey?: string;
6
+ models: string[];
7
+ notes: string[];
8
+ logPath?: string;
9
+ autoStarted: boolean;
10
+ }
11
+ export interface PrepareProviderRuntimeResult {
12
+ ready: boolean;
13
+ runtime?: PreparedProviderRuntime;
14
+ reason?: string;
15
+ notes: string[];
16
+ }
17
+ export interface ProxyRuntimeStatus {
18
+ provider: YagrModelProvider;
19
+ configuredBaseUrl?: string;
20
+ running: boolean;
21
+ pid?: number;
22
+ command?: string;
23
+ logPath?: string;
24
+ startedAt?: string;
25
+ managed: boolean;
26
+ }
27
+ export declare function prepareProviderRuntime(provider: YagrModelProvider, options?: {
28
+ apiKey?: string;
29
+ baseUrl?: string;
30
+ }): Promise<PrepareProviderRuntimeResult>;
31
+ export declare function startProviderProxy(provider: YagrModelProvider, options?: {
32
+ baseUrl?: string;
33
+ }): ProxyRuntimeStatus;
34
+ export declare function stopProviderProxy(provider: YagrModelProvider): ProxyRuntimeStatus;
35
+ export declare function getProxyRuntimeStatus(provider: YagrModelProvider): ProxyRuntimeStatus;
36
+ export declare function listProxyRuntimeStatuses(): ProxyRuntimeStatus[];
37
+ //# sourceMappingURL=proxy-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-runtime.d.ts","sourceRoot":"","sources":["../../src/llm/proxy-runtime.ts"],"names":[],"mappings":"AAwBA,OAAO,EAA+E,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAe7I,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,OAAO,CAAC,4BAA4B,CAAC,CAyTvC;AA4CD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,kBAAkB,CA2BtH;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB,CAgBjF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB,CAarF;AAED,wBAAgB,wBAAwB,IAAI,kBAAkB,EAAE,CAI/D"}