agent-orcha 0.0.1

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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +917 -0
  3. package/bin/cli.js +2 -0
  4. package/dist/lib/agents/agent-executor.d.ts +13 -0
  5. package/dist/lib/agents/agent-executor.d.ts.map +1 -0
  6. package/dist/lib/agents/agent-executor.js +158 -0
  7. package/dist/lib/agents/agent-executor.js.map +1 -0
  8. package/dist/lib/agents/agent-loader.d.ts +13 -0
  9. package/dist/lib/agents/agent-loader.d.ts.map +1 -0
  10. package/dist/lib/agents/agent-loader.js +39 -0
  11. package/dist/lib/agents/agent-loader.js.map +1 -0
  12. package/dist/lib/agents/index.d.ts +5 -0
  13. package/dist/lib/agents/index.d.ts.map +1 -0
  14. package/dist/lib/agents/index.js +4 -0
  15. package/dist/lib/agents/index.js.map +1 -0
  16. package/dist/lib/agents/types.d.ts +140 -0
  17. package/dist/lib/agents/types.d.ts.map +1 -0
  18. package/dist/lib/agents/types.js +28 -0
  19. package/dist/lib/agents/types.js.map +1 -0
  20. package/dist/lib/functions/function-loader.d.ts +30 -0
  21. package/dist/lib/functions/function-loader.d.ts.map +1 -0
  22. package/dist/lib/functions/function-loader.js +107 -0
  23. package/dist/lib/functions/function-loader.js.map +1 -0
  24. package/dist/lib/functions/index.d.ts +3 -0
  25. package/dist/lib/functions/index.d.ts.map +1 -0
  26. package/dist/lib/functions/index.js +2 -0
  27. package/dist/lib/functions/index.js.map +1 -0
  28. package/dist/lib/functions/simple-function-wrapper.d.ts +33 -0
  29. package/dist/lib/functions/simple-function-wrapper.d.ts.map +1 -0
  30. package/dist/lib/functions/simple-function-wrapper.js +66 -0
  31. package/dist/lib/functions/simple-function-wrapper.js.map +1 -0
  32. package/dist/lib/index.d.ts +16 -0
  33. package/dist/lib/index.d.ts.map +1 -0
  34. package/dist/lib/index.js +17 -0
  35. package/dist/lib/index.js.map +1 -0
  36. package/dist/lib/llm/index.d.ts +6 -0
  37. package/dist/lib/llm/index.d.ts.map +1 -0
  38. package/dist/lib/llm/index.js +4 -0
  39. package/dist/lib/llm/index.js.map +1 -0
  40. package/dist/lib/llm/llm-config.d.ts +138 -0
  41. package/dist/lib/llm/llm-config.d.ts.map +1 -0
  42. package/dist/lib/llm/llm-config.js +75 -0
  43. package/dist/lib/llm/llm-config.js.map +1 -0
  44. package/dist/lib/llm/llm-factory.d.ts +30 -0
  45. package/dist/lib/llm/llm-factory.d.ts.map +1 -0
  46. package/dist/lib/llm/llm-factory.js +103 -0
  47. package/dist/lib/llm/llm-factory.js.map +1 -0
  48. package/dist/lib/llm/provider-detector.d.ts +12 -0
  49. package/dist/lib/llm/provider-detector.d.ts.map +1 -0
  50. package/dist/lib/llm/provider-detector.js +46 -0
  51. package/dist/lib/llm/provider-detector.js.map +1 -0
  52. package/dist/lib/llm/types.d.ts +19 -0
  53. package/dist/lib/llm/types.d.ts.map +1 -0
  54. package/dist/lib/llm/types.js +18 -0
  55. package/dist/lib/llm/types.js.map +1 -0
  56. package/dist/lib/logger.d.ts +43 -0
  57. package/dist/lib/logger.d.ts.map +1 -0
  58. package/dist/lib/logger.js +113 -0
  59. package/dist/lib/logger.js.map +1 -0
  60. package/dist/lib/mcp/index.d.ts +4 -0
  61. package/dist/lib/mcp/index.d.ts.map +1 -0
  62. package/dist/lib/mcp/index.js +3 -0
  63. package/dist/lib/mcp/index.js.map +1 -0
  64. package/dist/lib/mcp/mcp-client.d.ts +17 -0
  65. package/dist/lib/mcp/mcp-client.d.ts.map +1 -0
  66. package/dist/lib/mcp/mcp-client.js +166 -0
  67. package/dist/lib/mcp/mcp-client.js.map +1 -0
  68. package/dist/lib/mcp/types.d.ts +146 -0
  69. package/dist/lib/mcp/types.d.ts.map +1 -0
  70. package/dist/lib/mcp/types.js +24 -0
  71. package/dist/lib/mcp/types.js.map +1 -0
  72. package/dist/lib/orchestrator.d.ts +64 -0
  73. package/dist/lib/orchestrator.d.ts.map +1 -0
  74. package/dist/lib/orchestrator.js +201 -0
  75. package/dist/lib/orchestrator.js.map +1 -0
  76. package/dist/lib/tools/built-in/index.d.ts +2 -0
  77. package/dist/lib/tools/built-in/index.d.ts.map +1 -0
  78. package/dist/lib/tools/built-in/index.js +2 -0
  79. package/dist/lib/tools/built-in/index.js.map +1 -0
  80. package/dist/lib/tools/built-in/vector-search.tool.d.ts +4 -0
  81. package/dist/lib/tools/built-in/vector-search.tool.d.ts.map +1 -0
  82. package/dist/lib/tools/built-in/vector-search.tool.js +26 -0
  83. package/dist/lib/tools/built-in/vector-search.tool.js.map +1 -0
  84. package/dist/lib/tools/index.d.ts +3 -0
  85. package/dist/lib/tools/index.d.ts.map +1 -0
  86. package/dist/lib/tools/index.js +3 -0
  87. package/dist/lib/tools/index.js.map +1 -0
  88. package/dist/lib/tools/tool-registry.d.ts +20 -0
  89. package/dist/lib/tools/tool-registry.d.ts.map +1 -0
  90. package/dist/lib/tools/tool-registry.js +76 -0
  91. package/dist/lib/tools/tool-registry.js.map +1 -0
  92. package/dist/lib/vectors/index.d.ts +5 -0
  93. package/dist/lib/vectors/index.d.ts.map +1 -0
  94. package/dist/lib/vectors/index.js +4 -0
  95. package/dist/lib/vectors/index.js.map +1 -0
  96. package/dist/lib/vectors/types.d.ts +212 -0
  97. package/dist/lib/vectors/types.d.ts.map +1 -0
  98. package/dist/lib/vectors/types.js +39 -0
  99. package/dist/lib/vectors/types.js.map +1 -0
  100. package/dist/lib/vectors/vector-store-factory.d.ts +14 -0
  101. package/dist/lib/vectors/vector-store-factory.d.ts.map +1 -0
  102. package/dist/lib/vectors/vector-store-factory.js +350 -0
  103. package/dist/lib/vectors/vector-store-factory.js.map +1 -0
  104. package/dist/lib/vectors/vector-store-manager.d.ts +18 -0
  105. package/dist/lib/vectors/vector-store-manager.d.ts.map +1 -0
  106. package/dist/lib/vectors/vector-store-manager.js +79 -0
  107. package/dist/lib/vectors/vector-store-manager.js.map +1 -0
  108. package/dist/lib/workflows/index.d.ts +5 -0
  109. package/dist/lib/workflows/index.d.ts.map +1 -0
  110. package/dist/lib/workflows/index.js +4 -0
  111. package/dist/lib/workflows/index.js.map +1 -0
  112. package/dist/lib/workflows/types.d.ts +630 -0
  113. package/dist/lib/workflows/types.d.ts.map +1 -0
  114. package/dist/lib/workflows/types.js +51 -0
  115. package/dist/lib/workflows/types.js.map +1 -0
  116. package/dist/lib/workflows/workflow-executor.d.ts +22 -0
  117. package/dist/lib/workflows/workflow-executor.d.ts.map +1 -0
  118. package/dist/lib/workflows/workflow-executor.js +276 -0
  119. package/dist/lib/workflows/workflow-executor.js.map +1 -0
  120. package/dist/lib/workflows/workflow-loader.d.ts +13 -0
  121. package/dist/lib/workflows/workflow-loader.d.ts.map +1 -0
  122. package/dist/lib/workflows/workflow-loader.js +39 -0
  123. package/dist/lib/workflows/workflow-loader.js.map +1 -0
  124. package/dist/public/index.html +762 -0
  125. package/dist/src/cli/commands/init.d.ts +2 -0
  126. package/dist/src/cli/commands/init.d.ts.map +1 -0
  127. package/dist/src/cli/commands/init.js +108 -0
  128. package/dist/src/cli/commands/init.js.map +1 -0
  129. package/dist/src/cli/commands/start.d.ts +3 -0
  130. package/dist/src/cli/commands/start.d.ts.map +1 -0
  131. package/dist/src/cli/commands/start.js +114 -0
  132. package/dist/src/cli/commands/start.js.map +1 -0
  133. package/dist/src/cli/index.d.ts +3 -0
  134. package/dist/src/cli/index.d.ts.map +1 -0
  135. package/dist/src/cli/index.js +59 -0
  136. package/dist/src/cli/index.js.map +1 -0
  137. package/dist/src/index.d.ts +2 -0
  138. package/dist/src/index.d.ts.map +1 -0
  139. package/dist/src/index.js +62 -0
  140. package/dist/src/index.js.map +1 -0
  141. package/dist/src/routes/agents.route.d.ts +3 -0
  142. package/dist/src/routes/agents.route.d.ts.map +1 -0
  143. package/dist/src/routes/agents.route.js +58 -0
  144. package/dist/src/routes/agents.route.js.map +1 -0
  145. package/dist/src/routes/llm.route.d.ts +3 -0
  146. package/dist/src/routes/llm.route.d.ts.map +1 -0
  147. package/dist/src/routes/llm.route.js +97 -0
  148. package/dist/src/routes/llm.route.js.map +1 -0
  149. package/dist/src/routes/vectors.route.d.ts +3 -0
  150. package/dist/src/routes/vectors.route.d.ts.map +1 -0
  151. package/dist/src/routes/vectors.route.js +74 -0
  152. package/dist/src/routes/vectors.route.js.map +1 -0
  153. package/dist/src/routes/workflows.route.d.ts +3 -0
  154. package/dist/src/routes/workflows.route.d.ts.map +1 -0
  155. package/dist/src/routes/workflows.route.js +58 -0
  156. package/dist/src/routes/workflows.route.js.map +1 -0
  157. package/dist/src/server.d.ts +9 -0
  158. package/dist/src/server.d.ts.map +1 -0
  159. package/dist/src/server.js +34 -0
  160. package/dist/src/server.js.map +1 -0
  161. package/dist/templates/.env.example +6 -0
  162. package/dist/templates/README.md +234 -0
  163. package/dist/templates/agents/example.agent.yaml +32 -0
  164. package/dist/templates/agents/knowledge.agent.yaml +36 -0
  165. package/dist/templates/agents/math.agent.yaml +38 -0
  166. package/dist/templates/agents/time.agent.yaml +42 -0
  167. package/dist/templates/functions/README.md +195 -0
  168. package/dist/templates/functions/fibonacci.function.js +55 -0
  169. package/dist/templates/llm.json +44 -0
  170. package/dist/templates/mcp.json +18 -0
  171. package/dist/templates/vectors/example-chroma.vector.yaml +43 -0
  172. package/dist/templates/vectors/example.vector.yaml +28 -0
  173. package/dist/templates/vectors/sample-data/example-document.txt +15 -0
  174. package/dist/templates/workflows/example.workflow.yaml +79 -0
  175. package/package.json +77 -0
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Simple function parameter definition (no imports needed for user code)
4
+ */
5
+ export interface SimpleFunctionParameter {
6
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'enum';
7
+ description: string;
8
+ values?: string[];
9
+ required?: boolean;
10
+ default?: any;
11
+ }
12
+ /**
13
+ * Simple function definition (no imports needed for user code)
14
+ */
15
+ export interface SimpleFunctionDefinition {
16
+ name: string;
17
+ description: string;
18
+ parameters?: Record<string, SimpleFunctionParameter>;
19
+ execute: (args: any) => Promise<string> | string;
20
+ }
21
+ /**
22
+ * Wraps a simple function definition into a LangChain StructuredTool
23
+ */
24
+ export declare function wrapSimpleFunction(definition: SimpleFunctionDefinition): import("@langchain/core/tools").DynamicStructuredTool<z.ZodObject<Record<string, z.ZodTypeAny>, "strip", z.ZodTypeAny, {
25
+ [x: string]: any;
26
+ }, {
27
+ [x: string]: any;
28
+ }>, {
29
+ [x: string]: any;
30
+ }, {
31
+ [x: string]: any;
32
+ }, string, string>;
33
+ //# sourceMappingURL=simple-function-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-function-wrapper.d.ts","sourceRoot":"","sources":["../../../lib/functions/simple-function-wrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CAClD;AAgDD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,wBAAwB;;;;;;;;mBAwBtE"}
@@ -0,0 +1,66 @@
1
+ import { tool } from '@langchain/core/tools';
2
+ import { z } from 'zod';
3
+ /**
4
+ * Converts a simple parameter definition to a Zod schema
5
+ */
6
+ function parameterToZodSchema(param) {
7
+ let schema;
8
+ switch (param.type) {
9
+ case 'string':
10
+ schema = z.string();
11
+ break;
12
+ case 'number':
13
+ schema = z.number();
14
+ break;
15
+ case 'boolean':
16
+ schema = z.boolean();
17
+ break;
18
+ case 'array':
19
+ schema = z.array(z.any());
20
+ break;
21
+ case 'object':
22
+ schema = z.object({}).passthrough();
23
+ break;
24
+ case 'enum':
25
+ if (!param.values || param.values.length === 0) {
26
+ throw new Error('Enum parameter must have values array');
27
+ }
28
+ schema = z.enum(param.values);
29
+ break;
30
+ default:
31
+ throw new Error(`Unsupported parameter type: ${param.type}`);
32
+ }
33
+ // Add description
34
+ schema = schema.describe(param.description);
35
+ // Handle optional/default
36
+ if (param.required === false || param.default !== undefined) {
37
+ schema = schema.optional();
38
+ if (param.default !== undefined) {
39
+ schema = schema.default(param.default);
40
+ }
41
+ }
42
+ return schema;
43
+ }
44
+ /**
45
+ * Wraps a simple function definition into a LangChain StructuredTool
46
+ */
47
+ export function wrapSimpleFunction(definition) {
48
+ // Build Zod schema from parameters
49
+ const schemaShape = {};
50
+ if (definition.parameters) {
51
+ for (const [key, param] of Object.entries(definition.parameters)) {
52
+ schemaShape[key] = parameterToZodSchema(param);
53
+ }
54
+ }
55
+ const schema = z.object(schemaShape);
56
+ // Create the LangChain tool
57
+ return tool(async (args) => {
58
+ const result = await definition.execute(args);
59
+ return String(result);
60
+ }, {
61
+ name: definition.name,
62
+ description: definition.description,
63
+ schema,
64
+ });
65
+ }
66
+ //# sourceMappingURL=simple-function-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-function-wrapper.js","sourceRoot":"","sources":["../../../lib/functions/simple-function-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuBxB;;GAEG;AACH,SAAS,oBAAoB,CAAC,KAA8B;IAC1D,IAAI,MAAoB,CAAC;IAEzB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM;QACR,KAAK,OAAO;YACV,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAC1B,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM;QACR,KAAK,MAAM;YACT,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAA+B,CAAC,CAAC;YACvD,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,kBAAkB;IAClB,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAE5C,0BAA0B;IAC1B,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5D,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAoC;IACrE,mCAAmC;IACnC,MAAM,WAAW,GAAiC,EAAE,CAAC;IAErD,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjE,WAAW,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAErC,4BAA4B;IAC5B,OAAO,IAAI,CACT,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,EACD;QACE,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,MAAM;KACP,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ export { Orchestrator } from './orchestrator.js';
2
+ export type { OrchestratorConfig } from './orchestrator.js';
3
+ export { AgentLoader, AgentExecutor } from './agents/index.js';
4
+ export type { AgentDefinition, AgentInstance, AgentResult, ToolReference, OutputConfig, ToolCallRecord, } from './agents/index.js';
5
+ export { WorkflowLoader, WorkflowExecutor } from './workflows/index.js';
6
+ export type { WorkflowDefinition, WorkflowStep, WorkflowResult, WorkflowContext, StepResult, InputMapping, ParallelSteps, } from './workflows/index.js';
7
+ export { VectorStoreFactory, VectorStoreManager } from './vectors/index.js';
8
+ export type { VectorConfig, VectorStoreInstance, SearchResult, DocumentInput, } from './vectors/index.js';
9
+ export { LLMFactory } from './llm/index.js';
10
+ export type { ModelConfig, AgentLLMRef } from './llm/index.js';
11
+ export { MCPClientManager } from './mcp/index.js';
12
+ export type { MCPConfig, MCPServerConfig } from './mcp/index.js';
13
+ export { ToolRegistry, createVectorSearchTool } from './tools/index.js';
14
+ export { FunctionLoader } from './functions/index.js';
15
+ export type { FunctionMetadata, LoadedFunction } from './functions/index.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,aAAa,GACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,17 @@
1
+ // Main orchestrator
2
+ export { Orchestrator } from './orchestrator.js';
3
+ // Agents
4
+ export { AgentLoader, AgentExecutor } from './agents/index.js';
5
+ // Workflows
6
+ export { WorkflowLoader, WorkflowExecutor } from './workflows/index.js';
7
+ // Vectors
8
+ export { VectorStoreFactory, VectorStoreManager } from './vectors/index.js';
9
+ // LLM
10
+ export { LLMFactory } from './llm/index.js';
11
+ // MCP
12
+ export { MCPClientManager } from './mcp/index.js';
13
+ // Tools
14
+ export { ToolRegistry, createVectorSearchTool } from './tools/index.js';
15
+ // Functions
16
+ export { FunctionLoader } from './functions/index.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAU/D,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAWxE,UAAU;AACV,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQ5E,MAAM;AACN,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,MAAM;AACN,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,QAAQ;AACR,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAExE,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { LLMFactory } from './llm-factory.js';
2
+ export { loadLLMConfig, getModelConfig, getEmbeddingConfig, listModelConfigs, listEmbeddingConfigs, isLLMConfigLoaded, } from './llm-config.js';
3
+ export type { ModelConfig, EmbeddingModelConfig, LLMJsonConfig } from './llm-config.js';
4
+ export { AgentLLMRefSchema, resolveAgentLLMRef } from './types.js';
5
+ export type { AgentLLMRef } from './types.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/llm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACnE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { LLMFactory } from './llm-factory.js';
2
+ export { loadLLMConfig, getModelConfig, getEmbeddingConfig, listModelConfigs, listEmbeddingConfigs, isLLMConfigLoaded, } from './llm-config.js';
3
+ export { AgentLLMRefSchema, resolveAgentLLMRef } from './types.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/llm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,138 @@
1
+ import { z } from 'zod';
2
+ export declare const ModelConfigSchema: z.ZodObject<{
3
+ provider: z.ZodOptional<z.ZodEnum<["openai", "gemini", "anthropic", "local"]>>;
4
+ baseUrl: z.ZodOptional<z.ZodString>;
5
+ apiKey: z.ZodString;
6
+ model: z.ZodString;
7
+ temperature: z.ZodOptional<z.ZodNumber>;
8
+ maxTokens: z.ZodOptional<z.ZodNumber>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ apiKey: string;
11
+ model: string;
12
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
13
+ baseUrl?: string | undefined;
14
+ temperature?: number | undefined;
15
+ maxTokens?: number | undefined;
16
+ }, {
17
+ apiKey: string;
18
+ model: string;
19
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
20
+ baseUrl?: string | undefined;
21
+ temperature?: number | undefined;
22
+ maxTokens?: number | undefined;
23
+ }>;
24
+ export declare const EmbeddingModelConfigSchema: z.ZodObject<{
25
+ provider: z.ZodOptional<z.ZodEnum<["openai", "gemini", "anthropic", "local"]>>;
26
+ baseUrl: z.ZodOptional<z.ZodString>;
27
+ apiKey: z.ZodString;
28
+ model: z.ZodString;
29
+ dimensions: z.ZodOptional<z.ZodNumber>;
30
+ eosToken: z.ZodOptional<z.ZodString>;
31
+ }, "strip", z.ZodTypeAny, {
32
+ apiKey: string;
33
+ model: string;
34
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
35
+ baseUrl?: string | undefined;
36
+ dimensions?: number | undefined;
37
+ eosToken?: string | undefined;
38
+ }, {
39
+ apiKey: string;
40
+ model: string;
41
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
42
+ baseUrl?: string | undefined;
43
+ dimensions?: number | undefined;
44
+ eosToken?: string | undefined;
45
+ }>;
46
+ export declare const LLMJsonConfigSchema: z.ZodObject<{
47
+ version: z.ZodDefault<z.ZodString>;
48
+ models: z.ZodRecord<z.ZodString, z.ZodObject<{
49
+ provider: z.ZodOptional<z.ZodEnum<["openai", "gemini", "anthropic", "local"]>>;
50
+ baseUrl: z.ZodOptional<z.ZodString>;
51
+ apiKey: z.ZodString;
52
+ model: z.ZodString;
53
+ temperature: z.ZodOptional<z.ZodNumber>;
54
+ maxTokens: z.ZodOptional<z.ZodNumber>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ apiKey: string;
57
+ model: string;
58
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
59
+ baseUrl?: string | undefined;
60
+ temperature?: number | undefined;
61
+ maxTokens?: number | undefined;
62
+ }, {
63
+ apiKey: string;
64
+ model: string;
65
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
66
+ baseUrl?: string | undefined;
67
+ temperature?: number | undefined;
68
+ maxTokens?: number | undefined;
69
+ }>>;
70
+ embeddings: z.ZodRecord<z.ZodString, z.ZodObject<{
71
+ provider: z.ZodOptional<z.ZodEnum<["openai", "gemini", "anthropic", "local"]>>;
72
+ baseUrl: z.ZodOptional<z.ZodString>;
73
+ apiKey: z.ZodString;
74
+ model: z.ZodString;
75
+ dimensions: z.ZodOptional<z.ZodNumber>;
76
+ eosToken: z.ZodOptional<z.ZodString>;
77
+ }, "strip", z.ZodTypeAny, {
78
+ apiKey: string;
79
+ model: string;
80
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
81
+ baseUrl?: string | undefined;
82
+ dimensions?: number | undefined;
83
+ eosToken?: string | undefined;
84
+ }, {
85
+ apiKey: string;
86
+ model: string;
87
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
88
+ baseUrl?: string | undefined;
89
+ dimensions?: number | undefined;
90
+ eosToken?: string | undefined;
91
+ }>>;
92
+ }, "strip", z.ZodTypeAny, {
93
+ version: string;
94
+ models: Record<string, {
95
+ apiKey: string;
96
+ model: string;
97
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
98
+ baseUrl?: string | undefined;
99
+ temperature?: number | undefined;
100
+ maxTokens?: number | undefined;
101
+ }>;
102
+ embeddings: Record<string, {
103
+ apiKey: string;
104
+ model: string;
105
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
106
+ baseUrl?: string | undefined;
107
+ dimensions?: number | undefined;
108
+ eosToken?: string | undefined;
109
+ }>;
110
+ }, {
111
+ models: Record<string, {
112
+ apiKey: string;
113
+ model: string;
114
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
115
+ baseUrl?: string | undefined;
116
+ temperature?: number | undefined;
117
+ maxTokens?: number | undefined;
118
+ }>;
119
+ embeddings: Record<string, {
120
+ apiKey: string;
121
+ model: string;
122
+ provider?: "openai" | "gemini" | "anthropic" | "local" | undefined;
123
+ baseUrl?: string | undefined;
124
+ dimensions?: number | undefined;
125
+ eosToken?: string | undefined;
126
+ }>;
127
+ version?: string | undefined;
128
+ }>;
129
+ export type ModelConfig = z.infer<typeof ModelConfigSchema>;
130
+ export type EmbeddingModelConfig = z.infer<typeof EmbeddingModelConfigSchema>;
131
+ export type LLMJsonConfig = z.infer<typeof LLMJsonConfigSchema>;
132
+ export declare function loadLLMConfig(llmJsonPath: string): Promise<LLMJsonConfig>;
133
+ export declare function getModelConfig(name: string): ModelConfig;
134
+ export declare function getEmbeddingConfig(name: string): EmbeddingModelConfig;
135
+ export declare function listModelConfigs(): string[];
136
+ export declare function listEmbeddingConfigs(): string[];
137
+ export declare function isLLMConfigLoaded(): boolean;
138
+ //# sourceMappingURL=llm-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-config.d.ts","sourceRoot":"","sources":["../../../lib/llm/llm-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAO5B,CAAC;AAGH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;EAOrC,CAAC;AAGH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI9B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAKhE,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAU/E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAYxD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAYrE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAK3C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAK/C;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
@@ -0,0 +1,75 @@
1
+ import * as fs from 'fs/promises';
2
+ import { z } from 'zod';
3
+ import { logger } from '../logger.js';
4
+ // Schema for individual model configuration
5
+ export const ModelConfigSchema = z.object({
6
+ provider: z.enum(['openai', 'gemini', 'anthropic', 'local']).optional(),
7
+ baseUrl: z.string().optional(),
8
+ apiKey: z.string(),
9
+ model: z.string(),
10
+ temperature: z.number().min(0).max(2).optional(),
11
+ maxTokens: z.number().optional(),
12
+ });
13
+ // Schema for individual embedding configuration
14
+ export const EmbeddingModelConfigSchema = z.object({
15
+ provider: z.enum(['openai', 'gemini', 'anthropic', 'local']).optional(),
16
+ baseUrl: z.string().optional(),
17
+ apiKey: z.string(),
18
+ model: z.string(),
19
+ dimensions: z.number().optional(), // Embedding dimensions (optional, e.g., for OpenAI)
20
+ eosToken: z.string().optional(), // EOS token to append to text (e.g., for Nomic models)
21
+ });
22
+ // Schema for the entire llm.json file
23
+ export const LLMJsonConfigSchema = z.object({
24
+ version: z.string().default('1.0'),
25
+ models: z.record(z.string(), ModelConfigSchema),
26
+ embeddings: z.record(z.string(), EmbeddingModelConfigSchema),
27
+ });
28
+ // Singleton config manager
29
+ let loadedConfig = null;
30
+ export async function loadLLMConfig(llmJsonPath) {
31
+ const content = await fs.readFile(llmJsonPath, 'utf-8');
32
+ const parsed = JSON.parse(content);
33
+ const validated = LLMJsonConfigSchema.parse(parsed);
34
+ loadedConfig = validated;
35
+ logger.info(`[LLMConfig] Loaded ${Object.keys(validated.models).length} model(s), ${Object.keys(validated.embeddings).length} embedding(s)`);
36
+ return validated;
37
+ }
38
+ export function getModelConfig(name) {
39
+ if (!loadedConfig) {
40
+ throw new Error('LLM config not loaded. Call loadLLMConfig() first.');
41
+ }
42
+ const config = loadedConfig.models[name];
43
+ if (!config) {
44
+ const available = Object.keys(loadedConfig.models).join(', ');
45
+ throw new Error(`Model config "${name}" not found. Available: ${available}`);
46
+ }
47
+ return config;
48
+ }
49
+ export function getEmbeddingConfig(name) {
50
+ if (!loadedConfig) {
51
+ throw new Error('LLM config not loaded. Call loadLLMConfig() first.');
52
+ }
53
+ const config = loadedConfig.embeddings[name];
54
+ if (!config) {
55
+ const available = Object.keys(loadedConfig.embeddings).join(', ');
56
+ throw new Error(`Embedding config "${name}" not found. Available: ${available}`);
57
+ }
58
+ return config;
59
+ }
60
+ export function listModelConfigs() {
61
+ if (!loadedConfig) {
62
+ return [];
63
+ }
64
+ return Object.keys(loadedConfig.models);
65
+ }
66
+ export function listEmbeddingConfigs() {
67
+ if (!loadedConfig) {
68
+ return [];
69
+ }
70
+ return Object.keys(loadedConfig.embeddings);
71
+ }
72
+ export function isLLMConfigLoaded() {
73
+ return loadedConfig !== null;
74
+ }
75
+ //# sourceMappingURL=llm-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-config.js","sourceRoot":"","sources":["../../../lib/llm/llm-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import { type AgentLLMRef } from './types.js';
3
+ export declare class LLMFactory {
4
+ private static instances;
5
+ /**
6
+ * Create an LLM instance from a config name (defined in llm.json)
7
+ * @param ref - Config name as string, or object with name and optional temperature override
8
+ */
9
+ static create(ref?: AgentLLMRef): BaseChatModel;
10
+ /**
11
+ * Create OpenAI LLM instance
12
+ */
13
+ private static createOpenAI;
14
+ /**
15
+ * Create Google Gemini LLM instance
16
+ */
17
+ private static createGemini;
18
+ /**
19
+ * Create Anthropic Claude LLM instance
20
+ */
21
+ private static createAnthropic;
22
+ /**
23
+ * Create Local LLM instance (OpenAI-compatible)
24
+ * Used for LM Studio, Ollama, and other OpenAI-compatible local servers
25
+ */
26
+ private static createLocal;
27
+ private static getCacheKey;
28
+ static clearCache(): void;
29
+ }
30
+ //# sourceMappingURL=llm-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-factory.d.ts","sourceRoot":"","sources":["../../../lib/llm/llm-factory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAEjF,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAIlE,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAyC;IAEjE;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,GAAE,WAAuB,GAAG,aAAa;IAsC1D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAe3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAc3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAc9B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,MAAM,CAAC,UAAU,IAAI,IAAI;CAG1B"}
@@ -0,0 +1,103 @@
1
+ import { ChatOpenAI } from '@langchain/openai';
2
+ import { ChatGoogleGenerativeAI } from '@langchain/google-genai';
3
+ import { ChatAnthropic } from '@langchain/anthropic';
4
+ import { getModelConfig } from './llm-config.js';
5
+ import { resolveAgentLLMRef } from './types.js';
6
+ import { detectProvider } from './provider-detector.js';
7
+ import { logger } from '../logger.js';
8
+ export class LLMFactory {
9
+ static instances = new Map();
10
+ /**
11
+ * Create an LLM instance from a config name (defined in llm.json)
12
+ * @param ref - Config name as string, or object with name and optional temperature override
13
+ */
14
+ static create(ref = 'default') {
15
+ const { name, temperature: tempOverride } = resolveAgentLLMRef(ref);
16
+ const config = getModelConfig(name);
17
+ const provider = detectProvider(config);
18
+ // Apply temperature override if provided, otherwise use config temperature
19
+ const temperature = tempOverride ?? config.temperature;
20
+ const key = this.getCacheKey(name, temperature ?? 0);
21
+ const cached = this.instances.get(key);
22
+ if (cached) {
23
+ return cached;
24
+ }
25
+ logger.info(`[LLMFactory] Creating LLM: ${name} (provider: ${provider}, model: ${config.model}, temp: ${temperature ?? 'default'})`);
26
+ let llm;
27
+ switch (provider) {
28
+ case 'openai':
29
+ llm = this.createOpenAI(config, temperature);
30
+ break;
31
+ case 'gemini':
32
+ llm = this.createGemini(config, temperature);
33
+ break;
34
+ case 'anthropic':
35
+ llm = this.createAnthropic(config, temperature);
36
+ break;
37
+ case 'local':
38
+ llm = this.createLocal(config, temperature);
39
+ break;
40
+ default:
41
+ throw new Error(`Unsupported provider: ${provider}`);
42
+ }
43
+ this.instances.set(key, llm);
44
+ return llm;
45
+ }
46
+ /**
47
+ * Create OpenAI LLM instance
48
+ */
49
+ static createOpenAI(config, temperature) {
50
+ const options = {
51
+ modelName: config.model,
52
+ openAIApiKey: config.apiKey,
53
+ maxTokens: config.maxTokens,
54
+ configuration: config.baseUrl ? { baseURL: config.baseUrl } : undefined,
55
+ };
56
+ if (temperature !== undefined) {
57
+ options.temperature = temperature;
58
+ }
59
+ return new ChatOpenAI(options);
60
+ }
61
+ /**
62
+ * Create Google Gemini LLM instance
63
+ */
64
+ static createGemini(config, temperature) {
65
+ const options = {
66
+ model: config.model,
67
+ apiKey: config.apiKey,
68
+ maxOutputTokens: config.maxTokens,
69
+ };
70
+ if (temperature !== undefined) {
71
+ options.temperature = temperature;
72
+ }
73
+ return new ChatGoogleGenerativeAI(options);
74
+ }
75
+ /**
76
+ * Create Anthropic Claude LLM instance
77
+ */
78
+ static createAnthropic(config, temperature) {
79
+ const options = {
80
+ modelName: config.model,
81
+ anthropicApiKey: config.apiKey,
82
+ maxTokens: config.maxTokens,
83
+ };
84
+ if (temperature !== undefined) {
85
+ options.temperature = temperature;
86
+ }
87
+ return new ChatAnthropic(options);
88
+ }
89
+ /**
90
+ * Create Local LLM instance (OpenAI-compatible)
91
+ * Used for LM Studio, Ollama, and other OpenAI-compatible local servers
92
+ */
93
+ static createLocal(config, temperature) {
94
+ return this.createOpenAI(config, temperature);
95
+ }
96
+ static getCacheKey(name, temperature) {
97
+ return `${name}-${temperature}`;
98
+ }
99
+ static clearCache() {
100
+ this.instances.clear();
101
+ }
102
+ }
103
+ //# sourceMappingURL=llm-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-factory.js","sourceRoot":"","sources":["../../../lib/llm/llm-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ModelConfig } from './llm-config.js';
2
+ export type LLMProvider = 'openai' | 'gemini' | 'anthropic' | 'local';
3
+ /**
4
+ * Detects which LLM provider to use based on configuration
5
+ * Priority:
6
+ * 1. Explicit provider field
7
+ * 2. Auto-detect from baseUrl
8
+ * 3. Auto-detect from model name
9
+ * 4. Default to 'openai' for backwards compatibility
10
+ */
11
+ export declare function detectProvider(config: ModelConfig): LLMProvider;
12
+ //# sourceMappingURL=provider-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-detector.d.ts","sourceRoot":"","sources":["../../../lib/llm/provider-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAEtE;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAuC/D"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Detects which LLM provider to use based on configuration
3
+ * Priority:
4
+ * 1. Explicit provider field
5
+ * 2. Auto-detect from baseUrl
6
+ * 3. Auto-detect from model name
7
+ * 4. Default to 'openai' for backwards compatibility
8
+ */
9
+ export function detectProvider(config) {
10
+ // 1. Explicit provider field takes precedence
11
+ if (config.provider) {
12
+ return config.provider;
13
+ }
14
+ // 2. Auto-detect from baseUrl
15
+ if (config.baseUrl) {
16
+ if (config.baseUrl.includes('api.openai.com')) {
17
+ return 'openai';
18
+ }
19
+ if (config.baseUrl.includes('generativelanguage.googleapis.com')) {
20
+ // Check if using OpenAI-compatible endpoint
21
+ if (config.baseUrl.includes('/openai/')) {
22
+ return 'local'; // Treat OpenAI-compatible Gemini as local
23
+ }
24
+ return 'gemini'; // Native Google API
25
+ }
26
+ if (config.baseUrl.includes('api.anthropic.com')) {
27
+ return 'anthropic';
28
+ }
29
+ // Any other baseUrl is assumed to be an OpenAI-compatible local server
30
+ return 'local';
31
+ }
32
+ // 3. Auto-detect from model name patterns
33
+ const modelLower = config.model.toLowerCase();
34
+ if (modelLower.startsWith('gpt-')) {
35
+ return 'openai';
36
+ }
37
+ if (modelLower.startsWith('gemini-')) {
38
+ return 'gemini';
39
+ }
40
+ if (modelLower.startsWith('claude-')) {
41
+ return 'anthropic';
42
+ }
43
+ // 4. Default to openai for backwards compatibility
44
+ return 'openai';
45
+ }
46
+ //# sourceMappingURL=provider-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-detector.js","sourceRoot":"","sources":["../../../lib/llm/provider-detector.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB;IAChD,8CAA8C;IAC9C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,8BAA8B;IAC9B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9C,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;YACjE,4CAA4C;YAC5C,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,OAAO,OAAO,CAAC,CAAC,0CAA0C;YAC5D,CAAC;YACD,OAAO,QAAQ,CAAC,CAAC,oBAAoB;QACvC,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACjD,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,uEAAuE;QACvE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,0CAA0C;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,mDAAmD;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { z } from 'zod';
2
+ export type { ModelConfig, EmbeddingModelConfig, LLMJsonConfig, } from './llm-config.js';
3
+ export { ModelConfigSchema, EmbeddingModelConfigSchema, LLMJsonConfigSchema, } from './llm-config.js';
4
+ export declare const AgentLLMRefSchema: z.ZodUnion<[z.ZodString, z.ZodObject<{
5
+ name: z.ZodString;
6
+ temperature: z.ZodOptional<z.ZodNumber>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ name: string;
9
+ temperature?: number | undefined;
10
+ }, {
11
+ name: string;
12
+ temperature?: number | undefined;
13
+ }>]>;
14
+ export type AgentLLMRef = z.infer<typeof AgentLLMRefSchema>;
15
+ export declare function resolveAgentLLMRef(ref: AgentLLMRef): {
16
+ name: string;
17
+ temperature?: number;
18
+ };
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/llm/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,eAAO,MAAM,iBAAiB;;;;;;;;;IAM5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAK3F"}