@crewx/sdk 0.8.0-rc.58

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 (303) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1022 -0
  3. package/dist/adapters/MastraToolAdapter.d.ts +9 -0
  4. package/dist/adapters/MastraToolAdapter.js +66 -0
  5. package/dist/adapters/MastraToolAdapter.js.map +1 -0
  6. package/dist/api/index.d.ts +2 -0
  7. package/dist/api/index.js +8 -0
  8. package/dist/api/index.js.map +1 -0
  9. package/dist/boxing/box-storage.interface.d.ts +13 -0
  10. package/dist/boxing/box-storage.interface.js +3 -0
  11. package/dist/boxing/box-storage.interface.js.map +1 -0
  12. package/dist/boxing/box.service.d.ts +15 -0
  13. package/dist/boxing/box.service.js +70 -0
  14. package/dist/boxing/box.service.js.map +1 -0
  15. package/dist/boxing/box.types.d.ts +86 -0
  16. package/dist/boxing/box.types.js +3 -0
  17. package/dist/boxing/box.types.js.map +1 -0
  18. package/dist/boxing/context-builder.d.ts +8 -0
  19. package/dist/boxing/context-builder.js +76 -0
  20. package/dist/boxing/context-builder.js.map +1 -0
  21. package/dist/boxing/index.d.ts +6 -0
  22. package/dist/boxing/index.js +11 -0
  23. package/dist/boxing/index.js.map +1 -0
  24. package/dist/boxing/tokenizer.d.ts +3 -0
  25. package/dist/boxing/tokenizer.js +11 -0
  26. package/dist/boxing/tokenizer.js.map +1 -0
  27. package/dist/config/api-provider-parser.d.ts +58 -0
  28. package/dist/config/api-provider-parser.js +212 -0
  29. package/dist/config/api-provider-parser.js.map +1 -0
  30. package/dist/config/index.d.ts +3 -0
  31. package/dist/config/index.js +20 -0
  32. package/dist/config/index.js.map +1 -0
  33. package/dist/config/log.config.d.ts +7 -0
  34. package/dist/config/log.config.js +20 -0
  35. package/dist/config/log.config.js.map +1 -0
  36. package/dist/config/pricing.d.ts +10 -0
  37. package/dist/config/pricing.js +44 -0
  38. package/dist/config/pricing.js.map +1 -0
  39. package/dist/config/timeout.config.d.ts +14 -0
  40. package/dist/config/timeout.config.js +34 -0
  41. package/dist/config/timeout.config.js.map +1 -0
  42. package/dist/config/yaml-loader.d.ts +8 -0
  43. package/dist/config/yaml-loader.js +155 -0
  44. package/dist/config/yaml-loader.js.map +1 -0
  45. package/dist/constants/index.d.ts +4 -0
  46. package/dist/constants/index.js +8 -0
  47. package/dist/constants/index.js.map +1 -0
  48. package/dist/constants.d.ts +1 -0
  49. package/dist/constants.js +18 -0
  50. package/dist/constants.js.map +1 -0
  51. package/dist/conversation/conversation-config.d.ts +9 -0
  52. package/dist/conversation/conversation-config.js +22 -0
  53. package/dist/conversation/conversation-config.js.map +1 -0
  54. package/dist/conversation/conversation-history.interface.d.ts +36 -0
  55. package/dist/conversation/conversation-history.interface.js +3 -0
  56. package/dist/conversation/conversation-history.interface.js.map +1 -0
  57. package/dist/conversation/conversation-storage.service.d.ts +16 -0
  58. package/dist/conversation/conversation-storage.service.js +213 -0
  59. package/dist/conversation/conversation-storage.service.js.map +1 -0
  60. package/dist/conversation/index.d.ts +3 -0
  61. package/dist/conversation/index.js +20 -0
  62. package/dist/conversation/index.js.map +1 -0
  63. package/dist/core/agent/agent-factory.d.ts +37 -0
  64. package/dist/core/agent/agent-factory.js +68 -0
  65. package/dist/core/agent/agent-factory.js.map +1 -0
  66. package/dist/core/agent/agent-runtime.d.ts +52 -0
  67. package/dist/core/agent/agent-runtime.js +206 -0
  68. package/dist/core/agent/agent-runtime.js.map +1 -0
  69. package/dist/core/agent/event-bus.d.ts +44 -0
  70. package/dist/core/agent/event-bus.js +43 -0
  71. package/dist/core/agent/event-bus.js.map +1 -0
  72. package/dist/core/agent/index.d.ts +3 -0
  73. package/dist/core/agent/index.js +13 -0
  74. package/dist/core/agent/index.js.map +1 -0
  75. package/dist/core/env-defaults.d.ts +1 -0
  76. package/dist/core/env-defaults.js +7 -0
  77. package/dist/core/env-defaults.js.map +1 -0
  78. package/dist/core/parallel/helpers.d.ts +27 -0
  79. package/dist/core/parallel/helpers.js +252 -0
  80. package/dist/core/parallel/helpers.js.map +1 -0
  81. package/dist/core/parallel/index.d.ts +4 -0
  82. package/dist/core/parallel/index.js +11 -0
  83. package/dist/core/parallel/index.js.map +1 -0
  84. package/dist/core/parallel/parallel-runner.d.ts +16 -0
  85. package/dist/core/parallel/parallel-runner.js +230 -0
  86. package/dist/core/parallel/parallel-runner.js.map +1 -0
  87. package/dist/core/parallel/types.d.ts +41 -0
  88. package/dist/core/parallel/types.js +3 -0
  89. package/dist/core/parallel/types.js.map +1 -0
  90. package/dist/core/providers/MastraAPIProvider.d.ts +31 -0
  91. package/dist/core/providers/MastraAPIProvider.js +365 -0
  92. package/dist/core/providers/MastraAPIProvider.js.map +1 -0
  93. package/dist/core/providers/ai-provider.interface.d.ts +78 -0
  94. package/dist/core/providers/ai-provider.interface.js +23 -0
  95. package/dist/core/providers/ai-provider.interface.js.map +1 -0
  96. package/dist/core/providers/base-ai.provider.d.ts +80 -0
  97. package/dist/core/providers/base-ai.provider.js +1183 -0
  98. package/dist/core/providers/base-ai.provider.js.map +1 -0
  99. package/dist/core/providers/base-ai.types.d.ts +26 -0
  100. package/dist/core/providers/base-ai.types.js +3 -0
  101. package/dist/core/providers/base-ai.types.js.map +1 -0
  102. package/dist/core/providers/claude.provider.d.ts +19 -0
  103. package/dist/core/providers/claude.provider.js +170 -0
  104. package/dist/core/providers/claude.provider.js.map +1 -0
  105. package/dist/core/providers/codex.provider.d.ts +21 -0
  106. package/dist/core/providers/codex.provider.js +134 -0
  107. package/dist/core/providers/codex.provider.js.map +1 -0
  108. package/dist/core/providers/copilot.provider.d.ts +24 -0
  109. package/dist/core/providers/copilot.provider.js +146 -0
  110. package/dist/core/providers/copilot.provider.js.map +1 -0
  111. package/dist/core/providers/dynamic-provider.factory.d.ts +74 -0
  112. package/dist/core/providers/dynamic-provider.factory.js +643 -0
  113. package/dist/core/providers/dynamic-provider.factory.js.map +1 -0
  114. package/dist/core/providers/gemini.provider.d.ts +16 -0
  115. package/dist/core/providers/gemini.provider.js +101 -0
  116. package/dist/core/providers/gemini.provider.js.map +1 -0
  117. package/dist/core/providers/index.d.ts +8 -0
  118. package/dist/core/providers/index.js +20 -0
  119. package/dist/core/providers/index.js.map +1 -0
  120. package/dist/core/providers/mock.provider.d.ts +13 -0
  121. package/dist/core/providers/mock.provider.js +55 -0
  122. package/dist/core/providers/mock.provider.js.map +1 -0
  123. package/dist/core/providers/provider-factory.d.ts +3 -0
  124. package/dist/core/providers/provider-factory.js +65 -0
  125. package/dist/core/providers/provider-factory.js.map +1 -0
  126. package/dist/core/providers/tool-call.types.d.ts +39 -0
  127. package/dist/core/providers/tool-call.types.js +3 -0
  128. package/dist/core/providers/tool-call.types.js.map +1 -0
  129. package/dist/core/remote/index.d.ts +3 -0
  130. package/dist/core/remote/index.js +20 -0
  131. package/dist/core/remote/index.js.map +1 -0
  132. package/dist/core/remote/remote-agent-manager.d.ts +24 -0
  133. package/dist/core/remote/remote-agent-manager.js +195 -0
  134. package/dist/core/remote/remote-agent-manager.js.map +1 -0
  135. package/dist/core/remote/remote-transport.d.ts +15 -0
  136. package/dist/core/remote/remote-transport.js +70 -0
  137. package/dist/core/remote/remote-transport.js.map +1 -0
  138. package/dist/core/remote/types.d.ts +79 -0
  139. package/dist/core/remote/types.js +3 -0
  140. package/dist/core/remote/types.js.map +1 -0
  141. package/dist/index.d.ts +56 -0
  142. package/dist/index.js +133 -0
  143. package/dist/index.js.map +1 -0
  144. package/dist/internal/index.d.ts +1 -0
  145. package/dist/internal/index.js +6 -0
  146. package/dist/internal/index.js.map +1 -0
  147. package/dist/knowledge/DocumentManager.d.ts +4 -0
  148. package/dist/knowledge/DocumentManager.js +119 -0
  149. package/dist/knowledge/DocumentManager.js.map +1 -0
  150. package/dist/knowledge/index.d.ts +1 -0
  151. package/dist/knowledge/index.js +18 -0
  152. package/dist/knowledge/index.js.map +1 -0
  153. package/dist/parsers/agent-call.util.d.ts +3 -0
  154. package/dist/parsers/agent-call.util.js +17 -0
  155. package/dist/parsers/agent-call.util.js.map +1 -0
  156. package/dist/parsers/claude.parser.d.ts +2 -0
  157. package/dist/parsers/claude.parser.js +46 -0
  158. package/dist/parsers/claude.parser.js.map +1 -0
  159. package/dist/parsers/codex.parser.d.ts +2 -0
  160. package/dist/parsers/codex.parser.js +89 -0
  161. package/dist/parsers/codex.parser.js.map +1 -0
  162. package/dist/parsers/copilot.parser.d.ts +2 -0
  163. package/dist/parsers/copilot.parser.js +58 -0
  164. package/dist/parsers/copilot.parser.js.map +1 -0
  165. package/dist/parsers/gemini.parser.d.ts +2 -0
  166. package/dist/parsers/gemini.parser.js +36 -0
  167. package/dist/parsers/gemini.parser.js.map +1 -0
  168. package/dist/parsers/index.d.ts +7 -0
  169. package/dist/parsers/index.js +45 -0
  170. package/dist/parsers/index.js.map +1 -0
  171. package/dist/schema/skills-parser.d.ts +8 -0
  172. package/dist/schema/skills-parser.js +438 -0
  173. package/dist/schema/skills-parser.js.map +1 -0
  174. package/dist/schema/skills.types.d.ts +158 -0
  175. package/dist/schema/skills.types.js +41 -0
  176. package/dist/schema/skills.types.js.map +1 -0
  177. package/dist/schemas/api-provider.schema.d.ts +432 -0
  178. package/dist/schemas/api-provider.schema.js +50 -0
  179. package/dist/schemas/api-provider.schema.js.map +1 -0
  180. package/dist/services/index.d.ts +2 -0
  181. package/dist/services/index.js +19 -0
  182. package/dist/services/index.js.map +1 -0
  183. package/dist/services/layout-loader.service.d.ts +18 -0
  184. package/dist/services/layout-loader.service.js +271 -0
  185. package/dist/services/layout-loader.service.js.map +1 -0
  186. package/dist/services/layout-renderer.service.d.ts +34 -0
  187. package/dist/services/layout-renderer.service.js +325 -0
  188. package/dist/services/layout-renderer.service.js.map +1 -0
  189. package/dist/services/props-validator.service.d.ts +29 -0
  190. package/dist/services/props-validator.service.js +332 -0
  191. package/dist/services/props-validator.service.js.map +1 -0
  192. package/dist/skills/adapter/claude-skill-adapter.d.ts +11 -0
  193. package/dist/skills/adapter/claude-skill-adapter.js +222 -0
  194. package/dist/skills/adapter/claude-skill-adapter.js.map +1 -0
  195. package/dist/skills/index.d.ts +6 -0
  196. package/dist/skills/index.js +31 -0
  197. package/dist/skills/index.js.map +1 -0
  198. package/dist/skills/runtime/progressive-loader.d.ts +27 -0
  199. package/dist/skills/runtime/progressive-loader.js +186 -0
  200. package/dist/skills/runtime/progressive-loader.js.map +1 -0
  201. package/dist/skills/runtime/runtime-requirements-validator.d.ts +23 -0
  202. package/dist/skills/runtime/runtime-requirements-validator.js +248 -0
  203. package/dist/skills/runtime/runtime-requirements-validator.js.map +1 -0
  204. package/dist/skills/runtime/skill-runtime.service.d.ts +42 -0
  205. package/dist/skills/runtime/skill-runtime.service.js +434 -0
  206. package/dist/skills/runtime/skill-runtime.service.js.map +1 -0
  207. package/dist/tools/file-system.service.d.ts +10 -0
  208. package/dist/tools/file-system.service.js +33 -0
  209. package/dist/tools/file-system.service.js.map +1 -0
  210. package/dist/tools/find.tool.d.ts +85 -0
  211. package/dist/tools/find.tool.js +139 -0
  212. package/dist/tools/find.tool.js.map +1 -0
  213. package/dist/tools/glob.tool.d.ts +100 -0
  214. package/dist/tools/glob.tool.js +153 -0
  215. package/dist/tools/glob.tool.js.map +1 -0
  216. package/dist/tools/grep.tool.d.ts +30 -0
  217. package/dist/tools/grep.tool.js +137 -0
  218. package/dist/tools/grep.tool.js.map +1 -0
  219. package/dist/tools/index.d.ts +12 -0
  220. package/dist/tools/index.js +40 -0
  221. package/dist/tools/index.js.map +1 -0
  222. package/dist/tools/ls.tool.d.ts +24 -0
  223. package/dist/tools/ls.tool.js +94 -0
  224. package/dist/tools/ls.tool.js.map +1 -0
  225. package/dist/tools/read-file.tool.d.ts +30 -0
  226. package/dist/tools/read-file.tool.js +69 -0
  227. package/dist/tools/read-file.tool.js.map +1 -0
  228. package/dist/tools/replace.tool.d.ts +36 -0
  229. package/dist/tools/replace.tool.js +68 -0
  230. package/dist/tools/replace.tool.js.map +1 -0
  231. package/dist/tools/run-shell-command.tool.d.ts +24 -0
  232. package/dist/tools/run-shell-command.tool.js +64 -0
  233. package/dist/tools/run-shell-command.tool.js.map +1 -0
  234. package/dist/tools/tree.tool.d.ts +24 -0
  235. package/dist/tools/tree.tool.js +109 -0
  236. package/dist/tools/tree.tool.js.map +1 -0
  237. package/dist/tools/types.d.ts +42 -0
  238. package/dist/tools/types.js +13 -0
  239. package/dist/tools/types.js.map +1 -0
  240. package/dist/tools/utils/file-utils.d.ts +5 -0
  241. package/dist/tools/utils/file-utils.js +221 -0
  242. package/dist/tools/utils/file-utils.js.map +1 -0
  243. package/dist/tools/write-file.tool.d.ts +24 -0
  244. package/dist/tools/write-file.tool.js +55 -0
  245. package/dist/tools/write-file.tool.js.map +1 -0
  246. package/dist/types/agent.types.d.ts +134 -0
  247. package/dist/types/agent.types.js +16 -0
  248. package/dist/types/agent.types.js.map +1 -0
  249. package/dist/types/api-provider.types.d.ts +85 -0
  250. package/dist/types/api-provider.types.js +65 -0
  251. package/dist/types/api-provider.types.js.map +1 -0
  252. package/dist/types/index.d.ts +6 -0
  253. package/dist/types/index.js +23 -0
  254. package/dist/types/index.js.map +1 -0
  255. package/dist/types/layout.types.d.ts +115 -0
  256. package/dist/types/layout.types.js +22 -0
  257. package/dist/types/layout.types.js.map +1 -0
  258. package/dist/types/provider.types.d.ts +12 -0
  259. package/dist/types/provider.types.js +3 -0
  260. package/dist/types/provider.types.js.map +1 -0
  261. package/dist/types/skill-runtime.types.d.ts +244 -0
  262. package/dist/types/skill-runtime.types.js +44 -0
  263. package/dist/types/skill-runtime.types.js.map +1 -0
  264. package/dist/types/structured-payload.types.d.ts +46 -0
  265. package/dist/types/structured-payload.types.js +65 -0
  266. package/dist/types/structured-payload.types.js.map +1 -0
  267. package/dist/types/task-log.types.d.ts +14 -0
  268. package/dist/types/task-log.types.js +3 -0
  269. package/dist/types/task-log.types.js.map +1 -0
  270. package/dist/types/template.types.d.ts +38 -0
  271. package/dist/types/template.types.js +3 -0
  272. package/dist/types/template.types.js.map +1 -0
  273. package/dist/types.d.ts +1 -0
  274. package/dist/types.js +18 -0
  275. package/dist/types.js.map +1 -0
  276. package/dist/utils/api-provider-normalizer.d.ts +16 -0
  277. package/dist/utils/api-provider-normalizer.js +135 -0
  278. package/dist/utils/api-provider-normalizer.js.map +1 -0
  279. package/dist/utils/base-message-formatter.d.ts +32 -0
  280. package/dist/utils/base-message-formatter.js +170 -0
  281. package/dist/utils/base-message-formatter.js.map +1 -0
  282. package/dist/utils/error-utils.d.ts +3 -0
  283. package/dist/utils/error-utils.js +27 -0
  284. package/dist/utils/error-utils.js.map +1 -0
  285. package/dist/utils/index.d.ts +4 -0
  286. package/dist/utils/index.js +21 -0
  287. package/dist/utils/index.js.map +1 -0
  288. package/dist/utils/math-utils.d.ts +3 -0
  289. package/dist/utils/math-utils.js +10 -0
  290. package/dist/utils/math-utils.js.map +1 -0
  291. package/dist/utils/mention-parser.d.ts +18 -0
  292. package/dist/utils/mention-parser.js +136 -0
  293. package/dist/utils/mention-parser.js.map +1 -0
  294. package/dist/utils/string-utils.d.ts +1 -0
  295. package/dist/utils/string-utils.js +10 -0
  296. package/dist/utils/string-utils.js.map +1 -0
  297. package/dist/utils.d.ts +3 -0
  298. package/dist/utils.js +20 -0
  299. package/dist/utils.js.map +1 -0
  300. package/package.json +134 -0
  301. package/schema/api-provider-config.json +138 -0
  302. package/schema/crewx-config.json +224 -0
  303. package/schema/skills-config.json +306 -0
@@ -0,0 +1,643 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.BaseDynamicProviderFactory = void 0;
37
+ const base_ai_provider_1 = require("./base-ai.provider");
38
+ const ai_provider_interface_1 = require("./ai-provider.interface");
39
+ const timeout_config_1 = require("../../config/timeout.config");
40
+ const api_provider_types_1 = require("../../types/api-provider.types");
41
+ class ConsoleLogger {
42
+ constructor(context) {
43
+ this.context = context;
44
+ }
45
+ log(message, ...optionalParams) {
46
+ console.log(`[${this.context}]`, message, ...optionalParams);
47
+ }
48
+ warn(message, ...optionalParams) {
49
+ console.warn(`[${this.context}]`, message, ...optionalParams);
50
+ }
51
+ error(message, ...optionalParams) {
52
+ const resolved = message instanceof Error ? message.message : message;
53
+ console.error(`[${this.context}]`, resolved, ...optionalParams);
54
+ }
55
+ }
56
+ class BaseDynamicProviderFactory {
57
+ constructor(options = {}) {
58
+ this.timeoutConfig = (0, timeout_config_1.getTimeoutConfig)();
59
+ this.logger = options.logger ?? new ConsoleLogger('DynamicProviderFactory');
60
+ this.crewxVersion = options.crewxVersion ?? 'unknown';
61
+ this.taskLogHandler = options.taskLogHandler;
62
+ }
63
+ createProvider(config) {
64
+ const providerId = config.type === 'api' ? config.provider : config.id;
65
+ this.logger.log(`Creating dynamic provider: ${providerId}`);
66
+ if (config.type === 'plugin') {
67
+ return this.createPluginProvider(config);
68
+ }
69
+ if (config.type === 'remote') {
70
+ return this.createRemoteProvider(config);
71
+ }
72
+ if (config.type === 'api') {
73
+ return this.createAPIProvider(config);
74
+ }
75
+ throw new Error(`Unknown provider type: ${config.type}`);
76
+ }
77
+ validateConfig(config) {
78
+ if (!config || typeof config !== 'object') {
79
+ return false;
80
+ }
81
+ const base = config;
82
+ if (base.type === 'plugin') {
83
+ if (!base.id || typeof base.id !== 'string') {
84
+ return false;
85
+ }
86
+ return (typeof base.cli_command === 'string' &&
87
+ Array.isArray(base.query_args) &&
88
+ Array.isArray(base.execute_args) &&
89
+ typeof base.prompt_in_args === 'boolean');
90
+ }
91
+ if (base.type === 'remote') {
92
+ if (!base.id || typeof base.id !== 'string') {
93
+ return false;
94
+ }
95
+ return (typeof base.location === 'string' &&
96
+ typeof base.external_agent_id === 'string');
97
+ }
98
+ if (base.type === 'api') {
99
+ return (typeof base.provider === 'string' &&
100
+ api_provider_types_1.API_PROVIDER_TYPES.includes(base.provider) &&
101
+ typeof base.model === 'string');
102
+ }
103
+ return false;
104
+ }
105
+ createPluginProvider(config) {
106
+ this.validateCliCommand(config.cli_command);
107
+ this.validateCliArgs(config.query_args);
108
+ this.validateCliArgs(config.execute_args);
109
+ this.validateErrorPatterns(config.error_patterns);
110
+ this.validateEnv(config.env);
111
+ const factory = this;
112
+ class DynamicAIProvider extends base_ai_provider_1.BaseAIProvider {
113
+ constructor() {
114
+ super(`DynamicProvider:${ai_provider_interface_1.ProviderNamespace.PLUGIN}/${config.id}`, {
115
+ crewxVersion: factory.crewxVersion,
116
+ taskLogHandler: factory.taskLogHandler,
117
+ });
118
+ this.name = `${ai_provider_interface_1.ProviderNamespace.PLUGIN}/${config.id}`;
119
+ }
120
+ getCliCommand() {
121
+ return config.cli_command;
122
+ }
123
+ getDefaultArgs() {
124
+ return config.query_args || [];
125
+ }
126
+ getExecuteArgs() {
127
+ return config.execute_args || [];
128
+ }
129
+ getDefaultModel() {
130
+ return config.default_model || 'default';
131
+ }
132
+ getPromptInArgs() {
133
+ return config.prompt_in_args ?? false;
134
+ }
135
+ shouldPipeContext() {
136
+ if (this.getPromptInArgs()) {
137
+ return false;
138
+ }
139
+ return super.shouldPipeContext();
140
+ }
141
+ getNotInstalledMessage() {
142
+ return (config.not_installed_message ||
143
+ `${config.display_name || config.id} CLI is not installed.`);
144
+ }
145
+ getDefaultQueryTimeout() {
146
+ return config.timeout?.query ?? 600000;
147
+ }
148
+ getDefaultExecuteTimeout() {
149
+ return config.timeout?.execute ?? factory.timeoutConfig.parallel;
150
+ }
151
+ getEnv() {
152
+ return config.env || {};
153
+ }
154
+ async isAvailable() {
155
+ const cliCommand = this.getCliCommand();
156
+ if (cliCommand.includes('/') || cliCommand.includes('\\')) {
157
+ try {
158
+ const { access } = await Promise.resolve().then(() => __importStar(require('fs/promises')));
159
+ const { constants } = await Promise.resolve().then(() => __importStar(require('fs')));
160
+ const { resolve } = await Promise.resolve().then(() => __importStar(require('path')));
161
+ const absolutePath = resolve(process.cwd(), cliCommand);
162
+ await access(absolutePath, constants.X_OK);
163
+ return true;
164
+ }
165
+ catch {
166
+ return false;
167
+ }
168
+ }
169
+ return super.isAvailable();
170
+ }
171
+ parseProviderError(stderr, stdout) {
172
+ if (!config.error_patterns) {
173
+ return super.parseProviderError(stderr, stdout);
174
+ }
175
+ const combinedOutput = stderr || stdout;
176
+ for (const errorPattern of config.error_patterns) {
177
+ if (combinedOutput.includes(errorPattern.pattern)) {
178
+ return {
179
+ error: true,
180
+ message: errorPattern.message,
181
+ };
182
+ }
183
+ }
184
+ return super.parseProviderError(stderr, stdout);
185
+ }
186
+ }
187
+ return new DynamicAIProvider();
188
+ }
189
+ createRemoteProvider(config) {
190
+ this.logger.log(`Creating remote provider: ${config.id}`);
191
+ this.validateRemoteConfig(config);
192
+ const factory = this;
193
+ class RemoteAIProvider extends base_ai_provider_1.BaseAIProvider {
194
+ constructor() {
195
+ super(`RemoteProvider:${ai_provider_interface_1.ProviderNamespace.REMOTE}/${config.id}`, {
196
+ crewxVersion: factory.crewxVersion,
197
+ taskLogHandler: factory.taskLogHandler,
198
+ });
199
+ this.name = `${ai_provider_interface_1.ProviderNamespace.REMOTE}/${config.id}`;
200
+ }
201
+ getCliCommand() {
202
+ if (config.location.startsWith('file://')) {
203
+ return 'crewx';
204
+ }
205
+ return 'curl';
206
+ }
207
+ getDefaultArgs() {
208
+ if (config.location.startsWith('file://')) {
209
+ const configPath = config.location.replace('file://', '');
210
+ return [
211
+ 'query',
212
+ '--raw',
213
+ `--config=${configPath}`,
214
+ ];
215
+ }
216
+ const args = [
217
+ '-X', 'POST',
218
+ `${config.location}/mcp/query`,
219
+ '-H', 'Content-Type: application/json',
220
+ ];
221
+ const authHeader = this.getAuthHeader();
222
+ if (authHeader) {
223
+ args.push('-H', `Authorization: ${authHeader}`);
224
+ }
225
+ return args;
226
+ }
227
+ getExecuteArgs() {
228
+ if (config.location.startsWith('file://')) {
229
+ const configPath = config.location.replace('file://', '');
230
+ return [
231
+ 'execute',
232
+ '--raw',
233
+ `--config=${configPath}`,
234
+ ];
235
+ }
236
+ const args = [
237
+ '-X', 'POST',
238
+ `${config.location}/mcp/execute`,
239
+ '-H', 'Content-Type: application/json',
240
+ ];
241
+ const authHeader = this.getAuthHeader();
242
+ if (authHeader) {
243
+ args.push('-H', `Authorization: ${authHeader}`);
244
+ }
245
+ return args;
246
+ }
247
+ getDefaultModel() {
248
+ return config.default_model || 'default';
249
+ }
250
+ getPromptInArgs() {
251
+ return true;
252
+ }
253
+ getNotInstalledMessage() {
254
+ if (config.location.startsWith('file://')) {
255
+ const configPath = config.location.replace('file://', '');
256
+ return `Remote CrewX configuration not found: ${configPath}`;
257
+ }
258
+ return `Remote CrewX server not accessible: ${config.location}`;
259
+ }
260
+ getDefaultQueryTimeout() {
261
+ return config.timeout?.query ?? 300000;
262
+ }
263
+ getDefaultExecuteTimeout() {
264
+ return config.timeout?.execute ?? 600000;
265
+ }
266
+ getAuthHeader() {
267
+ if (!config.auth || config.auth.type === 'none') {
268
+ return '';
269
+ }
270
+ if (config.auth.type === 'bearer' && config.auth.token) {
271
+ return `Bearer ${config.auth.token}`;
272
+ }
273
+ if (config.auth.type === 'api_key' && config.auth.token) {
274
+ return `Api-Key ${config.auth.token}`;
275
+ }
276
+ return '';
277
+ }
278
+ getAuthHeaders() {
279
+ const headers = {};
280
+ if (!config.auth || config.auth.type === 'none') {
281
+ return headers;
282
+ }
283
+ if (config.auth.token) {
284
+ if (config.auth.type === 'bearer') {
285
+ headers['Authorization'] = `Bearer ${config.auth.token}`;
286
+ }
287
+ else if (config.auth.type === 'api_key') {
288
+ headers['Api-Key'] = config.auth.token;
289
+ }
290
+ }
291
+ return headers;
292
+ }
293
+ async isAvailable() {
294
+ if (config.location.startsWith('file://')) {
295
+ try {
296
+ const { access } = await Promise.resolve().then(() => __importStar(require('fs/promises')));
297
+ const { constants } = await Promise.resolve().then(() => __importStar(require('fs')));
298
+ const configPath = config.location.replace('file://', '');
299
+ await access(configPath, constants.R_OK);
300
+ const cliAvailable = await super.isAvailable();
301
+ return cliAvailable;
302
+ }
303
+ catch {
304
+ return false;
305
+ }
306
+ }
307
+ try {
308
+ const controller = new AbortController();
309
+ const timeoutId = setTimeout(() => controller.abort(), 5000);
310
+ const healthHeaders = {
311
+ ...(config.headers || {}),
312
+ ...this.getAuthHeaders(),
313
+ };
314
+ const response = await fetch(`${config.location}/health`, {
315
+ method: 'GET',
316
+ signal: controller.signal,
317
+ headers: healthHeaders,
318
+ });
319
+ clearTimeout(timeoutId);
320
+ return response.ok;
321
+ }
322
+ catch {
323
+ return false;
324
+ }
325
+ }
326
+ async query(prompt, options) {
327
+ if (config.location.startsWith('http')) {
328
+ return this.httpQuery(prompt, options);
329
+ }
330
+ const validated = await this.ensureFileConfigExists(options);
331
+ if (!validated.ok) {
332
+ return validated.response;
333
+ }
334
+ const userQuery = this.parseUserQueryForRemote(prompt);
335
+ const formattedPrompt = userQuery
336
+ ? `@${config.external_agent_id} ${userQuery}`
337
+ : `@${config.external_agent_id}`;
338
+ const structuredPayload = this.normalizeStructuredPayload(prompt, options);
339
+ const extendedOptions = {
340
+ ...options,
341
+ };
342
+ if (structuredPayload) {
343
+ extendedOptions.pipedContext = structuredPayload;
344
+ }
345
+ else {
346
+ delete extendedOptions.pipedContext;
347
+ }
348
+ return super.query(formattedPrompt, extendedOptions);
349
+ }
350
+ async execute(prompt, options) {
351
+ if (config.location.startsWith('http')) {
352
+ return super.execute(prompt, options);
353
+ }
354
+ const validated = await this.ensureFileConfigExists(options);
355
+ if (!validated.ok) {
356
+ return validated.response;
357
+ }
358
+ const userQuery = this.parseUserQueryForRemote(prompt);
359
+ const formattedPrompt = userQuery
360
+ ? `@${config.external_agent_id} ${userQuery}`
361
+ : `@${config.external_agent_id}`;
362
+ const structuredPayload = this.normalizeStructuredPayload(prompt, options);
363
+ const extendedOptions = {
364
+ ...options,
365
+ };
366
+ if (structuredPayload) {
367
+ extendedOptions.pipedContext = structuredPayload;
368
+ }
369
+ else {
370
+ delete extendedOptions.pipedContext;
371
+ }
372
+ return super.execute(formattedPrompt, extendedOptions);
373
+ }
374
+ async httpQuery(prompt, options) {
375
+ const requestBody = {
376
+ prompt,
377
+ agent_id: config.external_agent_id,
378
+ task_id: options?.taskId,
379
+ model: options?.model || this.getDefaultModel(),
380
+ working_directory: options?.workingDirectory,
381
+ };
382
+ const structuredPayload = this.normalizeStructuredPayload(prompt, options);
383
+ if (structuredPayload) {
384
+ requestBody.structured_payload = structuredPayload;
385
+ }
386
+ if (options?.messages && options.messages.length > 0) {
387
+ requestBody.messages = options.messages;
388
+ }
389
+ if (options?.pipedContext) {
390
+ const trimmed = options.pipedContext.trim();
391
+ if (!this.isStructuredPayload(trimmed)) {
392
+ requestBody.context = trimmed;
393
+ }
394
+ }
395
+ try {
396
+ const controller = new AbortController();
397
+ const timeoutMs = options?.timeout || this.getDefaultQueryTimeout();
398
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
399
+ const response = await fetch(`${config.location}/mcp/query`, {
400
+ method: 'POST',
401
+ headers: {
402
+ 'Content-Type': 'application/json',
403
+ ...this.getAuthHeaders(),
404
+ ...(config.headers || {}),
405
+ },
406
+ body: JSON.stringify(requestBody),
407
+ signal: controller.signal,
408
+ });
409
+ clearTimeout(timeoutId);
410
+ if (!response.ok) {
411
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
412
+ }
413
+ const result = await response.json();
414
+ return {
415
+ content: result.content,
416
+ provider: this.name,
417
+ command: `remote query to ${config.location}`,
418
+ success: result.success !== false,
419
+ error: result.error,
420
+ taskId: result.task_id,
421
+ toolCall: result.tool_call,
422
+ };
423
+ }
424
+ catch (error) {
425
+ return {
426
+ content: '',
427
+ provider: this.name,
428
+ command: `remote query to ${config.location}`,
429
+ success: false,
430
+ error: error.message,
431
+ taskId: options?.taskId,
432
+ };
433
+ }
434
+ }
435
+ parseUserQueryForRemote(prompt) {
436
+ if (!prompt) {
437
+ return '';
438
+ }
439
+ const match = prompt.match(/<user_query[^>]*>\s*([\s\S]*?)\s*<\/user_query>/i);
440
+ if (match && match[1]) {
441
+ return match[1].trim();
442
+ }
443
+ return prompt.trim();
444
+ }
445
+ normalizeStructuredPayload(prompt, options) {
446
+ const existing = options?.pipedContext?.trim();
447
+ if (existing) {
448
+ if (this.isStructuredPayload(existing)) {
449
+ return existing;
450
+ }
451
+ return this.createStructuredPayload(prompt, existing, options);
452
+ }
453
+ if (options?.messages && options.messages.length > 0) {
454
+ return this.createStructuredPayload(prompt, null, options);
455
+ }
456
+ return null;
457
+ }
458
+ async ensureFileConfigExists(options) {
459
+ if (!config.location.startsWith('file://')) {
460
+ return { ok: true };
461
+ }
462
+ const configPath = config.location.replace('file://', '');
463
+ try {
464
+ const { access } = await Promise.resolve().then(() => __importStar(require('fs/promises')));
465
+ const { constants } = await Promise.resolve().then(() => __importStar(require('fs')));
466
+ await access(configPath, constants.R_OK);
467
+ return { ok: true };
468
+ }
469
+ catch {
470
+ return {
471
+ ok: false,
472
+ response: {
473
+ content: `Remote CrewX configuration not found: ${configPath}`,
474
+ provider: this.name,
475
+ command: `crewx --config=${configPath}`,
476
+ success: false,
477
+ error: `Remote CrewX configuration not found: ${configPath}`,
478
+ taskId: options?.taskId,
479
+ },
480
+ };
481
+ }
482
+ }
483
+ }
484
+ return new RemoteAIProvider();
485
+ }
486
+ createAPIProvider(config) {
487
+ this.logger.log(`Creating API provider: ${config.provider}`);
488
+ this.validateAPIProviderConfig(config);
489
+ const factory = this;
490
+ class DynamicAPIProvider extends base_ai_provider_1.BaseAIProvider {
491
+ constructor() {
492
+ super(`APIProvider:${config.provider}`, {
493
+ taskLogHandler: factory.taskLogHandler,
494
+ });
495
+ this.name = config.provider;
496
+ }
497
+ getCliCommand() {
498
+ return 'echo';
499
+ }
500
+ getDefaultArgs() {
501
+ return [];
502
+ }
503
+ getExecuteArgs() {
504
+ return [];
505
+ }
506
+ getDefaultModel() {
507
+ return config.model;
508
+ }
509
+ getPromptInArgs() {
510
+ return false;
511
+ }
512
+ getNotInstalledMessage() {
513
+ return `API provider ${config.provider} requires API key configuration`;
514
+ }
515
+ getDefaultQueryTimeout() {
516
+ return 60000;
517
+ }
518
+ getDefaultExecuteTimeout() {
519
+ return factory.timeoutConfig.parallel;
520
+ }
521
+ async isAvailable() {
522
+ return !!config.model;
523
+ }
524
+ async query(_prompt, options) {
525
+ factory.logger.warn(`API provider ${config.provider} query() called but not implemented. ` +
526
+ 'Extend this factory to provide actual API implementation.');
527
+ return {
528
+ content: `[API Provider ${config.provider}] Implementation required. Model: ${config.model}`,
529
+ provider: this.name,
530
+ command: `API call to ${config.provider}`,
531
+ success: false,
532
+ error: 'API provider not implemented - extend BaseDynamicProviderFactory',
533
+ taskId: options?.taskId,
534
+ };
535
+ }
536
+ async execute(_prompt, options) {
537
+ factory.logger.warn(`API provider ${config.provider} execute() called but not implemented. ` +
538
+ 'Extend this factory to provide actual API implementation.');
539
+ return {
540
+ content: `[API Provider ${config.provider}] Implementation required. Model: ${config.model}`,
541
+ provider: this.name,
542
+ command: `API call to ${config.provider}`,
543
+ success: false,
544
+ error: 'API provider not implemented - extend BaseDynamicProviderFactory',
545
+ taskId: options?.taskId,
546
+ };
547
+ }
548
+ getAPIConfig() {
549
+ return config;
550
+ }
551
+ }
552
+ return new DynamicAPIProvider();
553
+ }
554
+ validateAPIProviderConfig(config) {
555
+ if (!config.provider || typeof config.provider !== 'string') {
556
+ throw new Error('API provider requires a provider field (e.g., api/openai)');
557
+ }
558
+ if (!api_provider_types_1.API_PROVIDER_TYPES.includes(config.provider)) {
559
+ throw new Error(`Invalid API provider '${config.provider}'. Valid providers: ${api_provider_types_1.API_PROVIDER_TYPES.join(', ')}`);
560
+ }
561
+ if (!config.model || typeof config.model !== 'string') {
562
+ throw new Error('API provider requires a model field');
563
+ }
564
+ if (config.temperature !== undefined) {
565
+ if (typeof config.temperature !== 'number' || config.temperature < 0 || config.temperature > 2) {
566
+ throw new Error(`Temperature must be a number between 0 and 2, got: ${config.temperature}`);
567
+ }
568
+ }
569
+ if (config.maxTokens !== undefined) {
570
+ if (typeof config.maxTokens !== 'number' || config.maxTokens < 1 || !Number.isInteger(config.maxTokens)) {
571
+ throw new Error(`maxTokens must be a positive integer, got: ${config.maxTokens}`);
572
+ }
573
+ }
574
+ }
575
+ validateCliCommand(cliCommand) {
576
+ if (!cliCommand || typeof cliCommand !== 'string') {
577
+ throw new Error('Plugin provider requires a CLI command');
578
+ }
579
+ }
580
+ validateCliArgs(args) {
581
+ if (!Array.isArray(args)) {
582
+ throw new Error('CLI arguments must be an array');
583
+ }
584
+ for (const arg of args) {
585
+ if (typeof arg !== 'string') {
586
+ throw new Error('CLI argument must be a string');
587
+ }
588
+ }
589
+ }
590
+ validateErrorPatterns(patterns) {
591
+ if (!patterns) {
592
+ return;
593
+ }
594
+ for (const { pattern } of patterns) {
595
+ try {
596
+ new RegExp(pattern);
597
+ }
598
+ catch (error) {
599
+ throw new Error(`Invalid regex pattern '${pattern}': ${error.message}`);
600
+ }
601
+ }
602
+ }
603
+ validateEnv(env) {
604
+ if (!env) {
605
+ return;
606
+ }
607
+ for (const [key, value] of Object.entries(env)) {
608
+ if (typeof key !== 'string' || typeof value !== 'string') {
609
+ throw new Error('Environment variables must be string key/value pairs');
610
+ }
611
+ }
612
+ }
613
+ validateRemoteConfig(config) {
614
+ if (!config.location) {
615
+ throw new Error('Remote provider requires a location (file:// or http(s):// URL)');
616
+ }
617
+ if (!config.external_agent_id) {
618
+ throw new Error('Remote provider requires an external_agent_id');
619
+ }
620
+ if (!config.location.startsWith('file://') &&
621
+ !config.location.startsWith('http://') &&
622
+ !config.location.startsWith('https://')) {
623
+ throw new Error('Remote location must start with file://, http://, or https://');
624
+ }
625
+ if (config.location.startsWith('file://')) {
626
+ const filePath = config.location.replace('file://', '');
627
+ if (filePath.includes('..')) {
628
+ throw new Error('Path traversal (..) is not allowed in remote file locations');
629
+ }
630
+ }
631
+ if (config.auth) {
632
+ const validAuthTypes = ['bearer', 'api_key', 'none'];
633
+ if (!validAuthTypes.includes(config.auth.type)) {
634
+ throw new Error(`Invalid auth type: ${config.auth.type}. Must be one of: ${validAuthTypes.join(', ')}`);
635
+ }
636
+ if (config.auth.type !== 'none' && !config.auth.token) {
637
+ throw new Error(`Auth type '${config.auth.type}' requires a token`);
638
+ }
639
+ }
640
+ }
641
+ }
642
+ exports.BaseDynamicProviderFactory = BaseDynamicProviderFactory;
643
+ //# sourceMappingURL=dynamic-provider.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-provider.factory.js","sourceRoot":"","sources":["../../../src/core/providers/dynamic-provider.factory.ts"],"names":[],"mappings":"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"}