@executioncontrolprotocol/cli 0.5.0 → 0.10.0

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 (307) hide show
  1. package/README.md +67 -47
  2. package/bin/dev.js +4 -5
  3. package/bin/ecp.js +7 -0
  4. package/bin/run.cmd +1 -1
  5. package/bin/run.js +2 -6
  6. package/dist/commands/compile.d.ts +15 -0
  7. package/dist/commands/compile.d.ts.map +1 -0
  8. package/dist/commands/compile.js +44 -0
  9. package/dist/commands/compile.js.map +1 -0
  10. package/dist/commands/config/secrets/add.d.ts +6 -5
  11. package/dist/commands/config/secrets/add.d.ts.map +1 -1
  12. package/dist/commands/config/secrets/add.js +30 -63
  13. package/dist/commands/config/secrets/add.js.map +1 -1
  14. package/dist/commands/config/secrets/get.d.ts +5 -5
  15. package/dist/commands/config/secrets/get.d.ts.map +1 -1
  16. package/dist/commands/config/secrets/get.js +21 -46
  17. package/dist/commands/config/secrets/get.js.map +1 -1
  18. package/dist/commands/config/secrets/list.d.ts +1 -5
  19. package/dist/commands/config/secrets/list.d.ts.map +1 -1
  20. package/dist/commands/config/secrets/list.js +11 -41
  21. package/dist/commands/config/secrets/list.js.map +1 -1
  22. package/dist/commands/config/secrets/remove.d.ts +3 -5
  23. package/dist/commands/config/secrets/remove.d.ts.map +1 -1
  24. package/dist/commands/config/secrets/remove.js +16 -42
  25. package/dist/commands/config/secrets/remove.js.map +1 -1
  26. package/dist/commands/config/secrets.d.ts +1 -0
  27. package/dist/commands/config/secrets.d.ts.map +1 -1
  28. package/dist/commands/config/secrets.js +14 -18
  29. package/dist/commands/config/secrets.js.map +1 -1
  30. package/dist/commands/decode.d.ts +18 -0
  31. package/dist/commands/decode.d.ts.map +1 -0
  32. package/dist/commands/decode.js +66 -0
  33. package/dist/commands/decode.js.map +1 -0
  34. package/dist/commands/describe.d.ts +13 -0
  35. package/dist/commands/describe.d.ts.map +1 -0
  36. package/dist/commands/describe.js +29 -0
  37. package/dist/commands/describe.js.map +1 -0
  38. package/dist/commands/encode.d.ts +18 -0
  39. package/dist/commands/encode.d.ts.map +1 -0
  40. package/dist/commands/encode.js +63 -0
  41. package/dist/commands/encode.js.map +1 -0
  42. package/dist/commands/run.d.ts +11 -17
  43. package/dist/commands/run.d.ts.map +1 -1
  44. package/dist/commands/run.js +39 -349
  45. package/dist/commands/run.js.map +1 -1
  46. package/dist/commands/search.d.ts +12 -0
  47. package/dist/commands/search.d.ts.map +1 -0
  48. package/dist/commands/search.js +26 -0
  49. package/dist/commands/search.js.map +1 -0
  50. package/dist/commands/validate.d.ts +6 -8
  51. package/dist/commands/validate.d.ts.map +1 -1
  52. package/dist/commands/validate.js +19 -86
  53. package/dist/commands/validate.js.map +1 -1
  54. package/dist/lib/command-helpers.d.ts +6 -8
  55. package/dist/lib/command-helpers.d.ts.map +1 -1
  56. package/dist/lib/command-helpers.js +21 -11
  57. package/dist/lib/command-helpers.js.map +1 -1
  58. package/dist/lib/env-module-command.d.ts +37 -0
  59. package/dist/lib/env-module-command.d.ts.map +1 -0
  60. package/dist/lib/env-module-command.js +59 -0
  61. package/dist/lib/env-module-command.js.map +1 -0
  62. package/dist/lib/format-cli.d.ts +13 -0
  63. package/dist/lib/format-cli.d.ts.map +1 -0
  64. package/dist/lib/format-cli.js +25 -0
  65. package/dist/lib/format-cli.js.map +1 -0
  66. package/dist/lib/secrets/store.d.ts +3 -0
  67. package/dist/lib/secrets/store.d.ts.map +1 -0
  68. package/dist/lib/secrets/store.js +6 -0
  69. package/dist/lib/secrets/store.js.map +1 -0
  70. package/package.json +17 -33
  71. package/bin/dev.cmd +0 -3
  72. package/dist/commands/config/endpoints/add.d.ts +0 -14
  73. package/dist/commands/config/endpoints/add.d.ts.map +0 -1
  74. package/dist/commands/config/endpoints/add.js +0 -29
  75. package/dist/commands/config/endpoints/add.js.map +0 -1
  76. package/dist/commands/config/endpoints/get.d.ts +0 -10
  77. package/dist/commands/config/endpoints/get.d.ts.map +0 -1
  78. package/dist/commands/config/endpoints/get.js +0 -35
  79. package/dist/commands/config/endpoints/get.js.map +0 -1
  80. package/dist/commands/config/endpoints/remove.d.ts +0 -13
  81. package/dist/commands/config/endpoints/remove.d.ts.map +0 -1
  82. package/dist/commands/config/endpoints/remove.js +0 -25
  83. package/dist/commands/config/endpoints/remove.js.map +0 -1
  84. package/dist/commands/config/endpoints/update.d.ts +0 -15
  85. package/dist/commands/config/endpoints/update.d.ts.map +0 -1
  86. package/dist/commands/config/endpoints/update.js +0 -36
  87. package/dist/commands/config/endpoints/update.js.map +0 -1
  88. package/dist/commands/config/get.d.ts +0 -11
  89. package/dist/commands/config/get.d.ts.map +0 -1
  90. package/dist/commands/config/get.js +0 -31
  91. package/dist/commands/config/get.js.map +0 -1
  92. package/dist/commands/config/init.d.ts +0 -13
  93. package/dist/commands/config/init.d.ts.map +0 -1
  94. package/dist/commands/config/init.js +0 -49
  95. package/dist/commands/config/init.js.map +0 -1
  96. package/dist/commands/config/loggers/allow/add.d.ts +0 -13
  97. package/dist/commands/config/loggers/allow/add.d.ts.map +0 -1
  98. package/dist/commands/config/loggers/allow/add.js +0 -25
  99. package/dist/commands/config/loggers/allow/add.js.map +0 -1
  100. package/dist/commands/config/loggers/allow/remove.d.ts +0 -13
  101. package/dist/commands/config/loggers/allow/remove.d.ts.map +0 -1
  102. package/dist/commands/config/loggers/allow/remove.js +0 -26
  103. package/dist/commands/config/loggers/allow/remove.js.map +0 -1
  104. package/dist/commands/config/loggers/default/add.d.ts +0 -13
  105. package/dist/commands/config/loggers/default/add.d.ts.map +0 -1
  106. package/dist/commands/config/loggers/default/add.js +0 -28
  107. package/dist/commands/config/loggers/default/add.js.map +0 -1
  108. package/dist/commands/config/loggers/default/remove.d.ts +0 -13
  109. package/dist/commands/config/loggers/default/remove.d.ts.map +0 -1
  110. package/dist/commands/config/loggers/default/remove.js +0 -25
  111. package/dist/commands/config/loggers/default/remove.js.map +0 -1
  112. package/dist/commands/config/loggers/get.d.ts +0 -10
  113. package/dist/commands/config/loggers/get.d.ts.map +0 -1
  114. package/dist/commands/config/loggers/get.js +0 -35
  115. package/dist/commands/config/loggers/get.js.map +0 -1
  116. package/dist/commands/config/loggers/logger/add.d.ts +0 -15
  117. package/dist/commands/config/loggers/logger/add.d.ts.map +0 -1
  118. package/dist/commands/config/loggers/logger/add.js +0 -55
  119. package/dist/commands/config/loggers/logger/add.js.map +0 -1
  120. package/dist/commands/config/loggers/logger/get.d.ts +0 -13
  121. package/dist/commands/config/loggers/logger/get.d.ts.map +0 -1
  122. package/dist/commands/config/loggers/logger/get.js +0 -30
  123. package/dist/commands/config/loggers/logger/get.js.map +0 -1
  124. package/dist/commands/config/loggers/logger/remove.d.ts +0 -13
  125. package/dist/commands/config/loggers/logger/remove.d.ts.map +0 -1
  126. package/dist/commands/config/loggers/logger/remove.js +0 -27
  127. package/dist/commands/config/loggers/logger/remove.js.map +0 -1
  128. package/dist/commands/config/loggers/logger/update.d.ts +0 -15
  129. package/dist/commands/config/loggers/logger/update.d.ts.map +0 -1
  130. package/dist/commands/config/loggers/logger/update.js +0 -55
  131. package/dist/commands/config/loggers/logger/update.js.map +0 -1
  132. package/dist/commands/config/models/allow/add.d.ts +0 -14
  133. package/dist/commands/config/models/allow/add.d.ts.map +0 -1
  134. package/dist/commands/config/models/allow/add.js +0 -36
  135. package/dist/commands/config/models/allow/add.js.map +0 -1
  136. package/dist/commands/config/models/allow/remove.d.ts +0 -14
  137. package/dist/commands/config/models/allow/remove.d.ts.map +0 -1
  138. package/dist/commands/config/models/allow/remove.js +0 -36
  139. package/dist/commands/config/models/allow/remove.js.map +0 -1
  140. package/dist/commands/config/models/default/update.d.ts +0 -14
  141. package/dist/commands/config/models/default/update.d.ts.map +0 -1
  142. package/dist/commands/config/models/default/update.js +0 -35
  143. package/dist/commands/config/models/default/update.js.map +0 -1
  144. package/dist/commands/config/models/get.d.ts +0 -10
  145. package/dist/commands/config/models/get.d.ts.map +0 -1
  146. package/dist/commands/config/models/get.js +0 -39
  147. package/dist/commands/config/models/get.js.map +0 -1
  148. package/dist/commands/config/models/ollama/update.d.ts +0 -13
  149. package/dist/commands/config/models/ollama/update.d.ts.map +0 -1
  150. package/dist/commands/config/models/ollama/update.js +0 -27
  151. package/dist/commands/config/models/ollama/update.js.map +0 -1
  152. package/dist/commands/config/path.d.ts +0 -12
  153. package/dist/commands/config/path.d.ts.map +0 -1
  154. package/dist/commands/config/path.js +0 -32
  155. package/dist/commands/config/path.js.map +0 -1
  156. package/dist/commands/config/plugins/add.d.ts +0 -16
  157. package/dist/commands/config/plugins/add.d.ts.map +0 -1
  158. package/dist/commands/config/plugins/add.js +0 -28
  159. package/dist/commands/config/plugins/add.js.map +0 -1
  160. package/dist/commands/config/plugins/allow/add.d.ts +0 -13
  161. package/dist/commands/config/plugins/allow/add.d.ts.map +0 -1
  162. package/dist/commands/config/plugins/allow/add.js +0 -25
  163. package/dist/commands/config/plugins/allow/add.js.map +0 -1
  164. package/dist/commands/config/plugins/allow/remove.d.ts +0 -13
  165. package/dist/commands/config/plugins/allow/remove.d.ts.map +0 -1
  166. package/dist/commands/config/plugins/allow/remove.js +0 -26
  167. package/dist/commands/config/plugins/allow/remove.js.map +0 -1
  168. package/dist/commands/config/plugins/default/add.d.ts +0 -13
  169. package/dist/commands/config/plugins/default/add.d.ts.map +0 -1
  170. package/dist/commands/config/plugins/default/add.js +0 -28
  171. package/dist/commands/config/plugins/default/add.js.map +0 -1
  172. package/dist/commands/config/plugins/default/remove.d.ts +0 -13
  173. package/dist/commands/config/plugins/default/remove.d.ts.map +0 -1
  174. package/dist/commands/config/plugins/default/remove.js +0 -25
  175. package/dist/commands/config/plugins/default/remove.js.map +0 -1
  176. package/dist/commands/config/plugins/get.d.ts +0 -10
  177. package/dist/commands/config/plugins/get.d.ts.map +0 -1
  178. package/dist/commands/config/plugins/get.js +0 -30
  179. package/dist/commands/config/plugins/get.js.map +0 -1
  180. package/dist/commands/config/plugins/installs/add.d.ts +0 -20
  181. package/dist/commands/config/plugins/installs/add.d.ts.map +0 -1
  182. package/dist/commands/config/plugins/installs/add.js +0 -51
  183. package/dist/commands/config/plugins/installs/add.js.map +0 -1
  184. package/dist/commands/config/plugins/installs/list.d.ts +0 -10
  185. package/dist/commands/config/plugins/installs/list.d.ts.map +0 -1
  186. package/dist/commands/config/plugins/installs/list.js +0 -29
  187. package/dist/commands/config/plugins/installs/list.js.map +0 -1
  188. package/dist/commands/config/plugins/installs/remove.d.ts +0 -13
  189. package/dist/commands/config/plugins/installs/remove.d.ts.map +0 -1
  190. package/dist/commands/config/plugins/installs/remove.js +0 -27
  191. package/dist/commands/config/plugins/installs/remove.js.map +0 -1
  192. package/dist/commands/config/plugins/security/update.d.ts +0 -5
  193. package/dist/commands/config/plugins/security/update.d.ts.map +0 -1
  194. package/dist/commands/config/plugins/security/update.js +0 -5
  195. package/dist/commands/config/plugins/security/update.js.map +0 -1
  196. package/dist/commands/config/secrets/providers/doctor.d.ts +0 -10
  197. package/dist/commands/config/secrets/providers/doctor.d.ts.map +0 -1
  198. package/dist/commands/config/secrets/providers/doctor.js +0 -40
  199. package/dist/commands/config/secrets/providers/doctor.js.map +0 -1
  200. package/dist/commands/config/secrets/providers/list.d.ts +0 -10
  201. package/dist/commands/config/secrets/providers/list.d.ts.map +0 -1
  202. package/dist/commands/config/secrets/providers/list.js +0 -31
  203. package/dist/commands/config/secrets/providers/list.js.map +0 -1
  204. package/dist/commands/config/secrets/providers.d.ts +0 -6
  205. package/dist/commands/config/secrets/providers.d.ts.map +0 -1
  206. package/dist/commands/config/secrets/providers.js +0 -9
  207. package/dist/commands/config/secrets/providers.js.map +0 -1
  208. package/dist/commands/config/secrets/yaml/get.d.ts +0 -11
  209. package/dist/commands/config/secrets/yaml/get.d.ts.map +0 -1
  210. package/dist/commands/config/secrets/yaml/get.js +0 -35
  211. package/dist/commands/config/secrets/yaml/get.js.map +0 -1
  212. package/dist/commands/config/secrets/yaml/set-default-provider.d.ts +0 -13
  213. package/dist/commands/config/secrets/yaml/set-default-provider.d.ts.map +0 -1
  214. package/dist/commands/config/secrets/yaml/set-default-provider.js +0 -24
  215. package/dist/commands/config/secrets/yaml/set-default-provider.js.map +0 -1
  216. package/dist/commands/config/secrets/yaml/set-policy.d.ts +0 -13
  217. package/dist/commands/config/secrets/yaml/set-policy.d.ts.map +0 -1
  218. package/dist/commands/config/secrets/yaml/set-policy.js +0 -29
  219. package/dist/commands/config/secrets/yaml/set-policy.js.map +0 -1
  220. package/dist/commands/config/security/get.d.ts +0 -11
  221. package/dist/commands/config/security/get.d.ts.map +0 -1
  222. package/dist/commands/config/security/get.js +0 -33
  223. package/dist/commands/config/security/get.js.map +0 -1
  224. package/dist/commands/config/security/plugins/update.d.ts +0 -13
  225. package/dist/commands/config/security/plugins/update.d.ts.map +0 -1
  226. package/dist/commands/config/security/plugins/update.js +0 -49
  227. package/dist/commands/config/security/plugins/update.js.map +0 -1
  228. package/dist/commands/config/tools/add.d.ts +0 -16
  229. package/dist/commands/config/tools/add.d.ts.map +0 -1
  230. package/dist/commands/config/tools/add.js +0 -60
  231. package/dist/commands/config/tools/add.js.map +0 -1
  232. package/dist/commands/config/tools/get.d.ts +0 -10
  233. package/dist/commands/config/tools/get.d.ts.map +0 -1
  234. package/dist/commands/config/tools/get.js +0 -29
  235. package/dist/commands/config/tools/get.js.map +0 -1
  236. package/dist/commands/config/tools/remove.d.ts +0 -13
  237. package/dist/commands/config/tools/remove.d.ts.map +0 -1
  238. package/dist/commands/config/tools/remove.js +0 -25
  239. package/dist/commands/config/tools/remove.js.map +0 -1
  240. package/dist/commands/config/tools/update.d.ts +0 -16
  241. package/dist/commands/config/tools/update.d.ts.map +0 -1
  242. package/dist/commands/config/tools/update.js +0 -59
  243. package/dist/commands/config/tools/update.js.map +0 -1
  244. package/dist/commands/config.d.ts +0 -8
  245. package/dist/commands/config.d.ts.map +0 -1
  246. package/dist/commands/config.js +0 -43
  247. package/dist/commands/config.js.map +0 -1
  248. package/dist/commands/graph.d.ts +0 -14
  249. package/dist/commands/graph.d.ts.map +0 -1
  250. package/dist/commands/graph.js +0 -39
  251. package/dist/commands/graph.js.map +0 -1
  252. package/dist/commands/trace/list.d.ts +0 -10
  253. package/dist/commands/trace/list.d.ts.map +0 -1
  254. package/dist/commands/trace/list.js +0 -32
  255. package/dist/commands/trace/list.js.map +0 -1
  256. package/dist/commands/trace.d.ts +0 -14
  257. package/dist/commands/trace.d.ts.map +0 -1
  258. package/dist/commands/trace.js +0 -43
  259. package/dist/commands/trace.js.map +0 -1
  260. package/dist/lib/config-flags.d.ts +0 -6
  261. package/dist/lib/config-flags.d.ts.map +0 -1
  262. package/dist/lib/config-flags.js +0 -14
  263. package/dist/lib/config-flags.js.map +0 -1
  264. package/dist/lib/default-ecp-config.d.ts +0 -5
  265. package/dist/lib/default-ecp-config.d.ts.map +0 -1
  266. package/dist/lib/default-ecp-config.js +0 -47
  267. package/dist/lib/default-ecp-config.js.map +0 -1
  268. package/dist/lib/ecp-environment-command.d.ts +0 -20
  269. package/dist/lib/ecp-environment-command.d.ts.map +0 -1
  270. package/dist/lib/ecp-environment-command.js +0 -33
  271. package/dist/lib/ecp-environment-command.js.map +0 -1
  272. package/dist/lib/ecp-home.d.ts +0 -3
  273. package/dist/lib/ecp-home.d.ts.map +0 -1
  274. package/dist/lib/ecp-home.js +0 -9
  275. package/dist/lib/ecp-home.js.map +0 -1
  276. package/dist/lib/inputs.d.ts +0 -3
  277. package/dist/lib/inputs.d.ts.map +0 -1
  278. package/dist/lib/inputs.js +0 -7
  279. package/dist/lib/inputs.js.map +0 -1
  280. package/dist/lib/parsing.d.ts +0 -12
  281. package/dist/lib/parsing.d.ts.map +0 -1
  282. package/dist/lib/parsing.js +0 -57
  283. package/dist/lib/parsing.js.map +0 -1
  284. package/dist/lib/progress.d.ts +0 -4
  285. package/dist/lib/progress.d.ts.map +0 -1
  286. package/dist/lib/progress.js +0 -111
  287. package/dist/lib/progress.js.map +0 -1
  288. package/dist/lib/secret-provider-ids.d.ts +0 -3
  289. package/dist/lib/secret-provider-ids.d.ts.map +0 -1
  290. package/dist/lib/secret-provider-ids.js +0 -3
  291. package/dist/lib/secret-provider-ids.js.map +0 -1
  292. package/dist/lib/secrets-config.d.ts +0 -15
  293. package/dist/lib/secrets-config.d.ts.map +0 -1
  294. package/dist/lib/secrets-config.js +0 -12
  295. package/dist/lib/secrets-config.js.map +0 -1
  296. package/dist/lib/system-config-cli.d.ts +0 -50
  297. package/dist/lib/system-config-cli.d.ts.map +0 -1
  298. package/dist/lib/system-config-cli.js +0 -108
  299. package/dist/lib/system-config-cli.js.map +0 -1
  300. package/dist/lib/trace-files.d.ts +0 -2
  301. package/dist/lib/trace-files.d.ts.map +0 -1
  302. package/dist/lib/trace-files.js +0 -14
  303. package/dist/lib/trace-files.js.map +0 -1
  304. package/dist/lib/trace-view.d.ts +0 -4
  305. package/dist/lib/trace-view.d.ts.map +0 -1
  306. package/dist/lib/trace-view.js +0 -8
  307. package/dist/lib/trace-view.js.map +0 -1
@@ -1,362 +1,52 @@
1
- import { Flags, Args } from "@oclif/core";
2
- import { resolve } from "node:path";
3
- import ora from "ora";
4
- import { BUILTIN_PLUGIN_VERSION, createDefaultSecretBroker, ECPEngine, loadContext, resolveInputs, resolveSystemConfig, MCPToolInvoker, A2AAgentTransport, ExtensionRegistry, registerBuiltinModelProviders, registerBuiltinLoggers, registerBuiltinPlugins, TraceCollector, ConsoleTraceExporter, JsonFileTraceExporter, getSecurityConfig, resolveAgentEndpointsMap, } from "@executioncontrolprotocol/runtime";
5
- import { getContextPlugins } from "@executioncontrolprotocol/spec";
6
- import { commandErrorMessage } from "../lib/command-helpers.js";
7
- import { parseKeyValueInputs, splitCommaSeparated } from "../lib/parsing.js";
8
- import { createProgressHandler } from "../lib/progress.js";
9
- import { getDefaultTraceDir } from "../lib/ecp-home.js";
10
- import { EcpEnvironmentCommand } from "../lib/ecp-environment-command.js";
11
- import { resolveDotenvPathFromConfig, resolveSecretPolicyFromConfig } from "../lib/secrets-config.js";
12
- function contextHasMemory(context) {
13
- const visit = (orchestrator) => {
14
- if (orchestrator.memory)
15
- return true;
16
- for (const executor of orchestrator.executors ?? []) {
17
- if (executor.memory)
18
- return true;
19
- }
20
- for (const child of orchestrator.orchestrators ?? []) {
21
- if (visit(child))
22
- return true;
23
- }
24
- return false;
25
- };
26
- if (context.orchestrator && visit(context.orchestrator))
27
- return true;
28
- return (context.executors ?? []).some((e) => e.memory != null);
29
- }
30
- function inferModelProviderFromContext(context) {
31
- const providers = new Set();
32
- const visitExecutor = (executor) => {
33
- const providerName = executor.model?.provider?.name;
34
- if (providerName)
35
- providers.add(providerName);
36
- };
37
- const visitOrchestrator = (orchestrator) => {
38
- for (const executor of orchestrator.executors ?? []) {
39
- visitExecutor(executor);
40
- }
41
- for (const child of orchestrator.orchestrators ?? []) {
42
- visitOrchestrator(child);
43
- }
1
+ import { Flags } from "@oclif/core";
2
+ import { loadWorkflowFile } from "@executioncontrolprotocol/core/loaders";
3
+ import { readJsonFile, runWithCommandError } from "../lib/command-helpers.js";
4
+ import { WorkflowEnvCommand } from "../lib/env-module-command.js";
5
+ /** Execute a workflow in an environment. */
6
+ export default class Run extends WorkflowEnvCommand {
7
+ static summary = "Run a workflow";
8
+ static description = "Compile (if needed) and execute a workflow using the runtime and extensions from --env.";
9
+ static examples = [
10
+ "<%= config.bin %> <%= command.id %> examples/01-echo/workflow.ts --env examples/01-echo/environment.ts",
11
+ "<%= config.bin %> <%= command.id %> workflow.json --env environment.ts --input input.json",
12
+ "<%= config.bin %> <%= command.id %> workflow.ts --env environment.ts --dry-run",
13
+ ];
14
+ static args = {
15
+ ...WorkflowEnvCommand.args,
44
16
  };
45
- if (context.orchestrator)
46
- visitOrchestrator(context.orchestrator);
47
- for (const executor of context.executors ?? []) {
48
- visitExecutor(executor);
49
- }
50
- if (providers.size === 1)
51
- return [...providers][0];
52
- if (providers.size === 0)
53
- return undefined;
54
- throw new Error(`Context declares multiple model providers (${[...providers].join(", ")}). Please pass --provider.`);
55
- }
56
- export default class Run extends EcpEnvironmentCommand {
57
- static summary = "Execute a Context manifest";
58
17
  static flags = {
59
- ...EcpEnvironmentCommand.flags,
18
+ ...WorkflowEnvCommand.flags,
60
19
  input: Flags.string({
61
- char: "i",
62
- multiple: true,
63
- description: "Set an input value (repeatable, key=value)",
64
- summary: "Input value (key=value)",
65
- }),
66
- model: Flags.string({
67
- char: "m",
68
- description: "Override model name (must be allowed by system config policy)",
69
- }),
70
- provider: Flags.string({
71
- char: "p",
72
- description: "Override provider (must be allowed by system config policy)",
73
- options: ["openai", "ollama"],
74
- }),
75
- config: Flags.string({
76
- char: "c",
77
- description: "Path to system config (YAML/JSON). Default: ./ecp.config.yaml, ./ecp.config.json, then ~/.ecp/ (see ecp config path)",
78
- default: "",
20
+ description: "Path to JSON file with workflow input object",
79
21
  }),
80
- trace: Flags.boolean({
81
- char: "t",
82
- description: "Enable tracing (saves to the user traces directory by default)",
83
- default: true,
84
- allowNo: true,
85
- }),
86
- "trace-dir": Flags.string({
87
- description: "Directory for trace files",
88
- default: getDefaultTraceDir(),
89
- }),
90
- logger: Flags.string({
91
- char: "l",
92
- multiple: true,
93
- multipleNonGreedy: true,
94
- description: "Enable a logger plugin (e.g. file). Repeatable or comma-separated.",
95
- }),
96
- debug: Flags.boolean({
97
- char: "d",
98
- description: "Enable debug logging",
22
+ "dry-run": Flags.boolean({
23
+ description: "Validate and plan execution without invoking capabilities",
99
24
  default: false,
100
25
  }),
101
26
  };
102
- static args = {
103
- contextPath: Args.string({
104
- required: true,
105
- description: "Path to context.yaml (or context.json)",
106
- }),
107
- };
108
27
  async run() {
109
28
  const { args, flags } = await this.parse(Run);
110
- this.applyEnvironmentFlag(flags);
111
- const contextPath = resolve(args.contextPath);
112
- const inputs = (() => {
113
- try {
114
- return parseKeyValueInputs(flags.input, "--input");
115
- }
116
- catch (err) {
117
- this.error(commandErrorMessage(err), { exit: 1 });
118
- }
119
- })();
120
- const cwd = process.cwd();
121
- const systemConfig = (() => {
122
- try {
123
- return resolveSystemConfig(flags.config ? flags.config : undefined, cwd);
124
- }
125
- catch (err) {
126
- this.error(commandErrorMessage(err), { exit: 1 });
127
- }
128
- })();
129
- const loggerRaw = splitCommaSeparated(flags.logger);
130
- const context = loadContext(contextPath);
131
- let providerToUse;
132
- try {
133
- providerToUse = flags.provider ?? inferModelProviderFromContext(context);
134
- }
135
- catch (err) {
136
- this.error(commandErrorMessage(err), { exit: 1 });
137
- }
138
- if (!providerToUse) {
139
- this.error('Model provider could not be inferred from the Context. Pass --provider openai|ollama.', { exit: 1 });
140
- }
141
- this.assertProviderAllowedByPolicy(providerToUse, systemConfig);
142
- const selectedModel = flags.model;
143
- if (selectedModel) {
144
- this.assertModelAllowedByPolicy(providerToUse, selectedModel, systemConfig);
145
- }
146
- const secModels = getSecurityConfig(systemConfig)?.models;
147
- const enableFromConfig = secModels?.defaultProviders ?? [];
148
- const enableForRun = [...new Set([...enableFromConfig, providerToUse])];
149
- const allowProviders = secModels?.allowProviders;
150
- if (allowProviders && allowProviders.length > 0) {
151
- for (const id of enableForRun) {
152
- if (!allowProviders.includes(id)) {
153
- this.error(`Provider "${id}" cannot be used because it is not in system config security.models.allowProviders.\n` +
154
- `Allowed: ${allowProviders.join(", ")}\n` +
155
- `Update your config first (ecp.config.yaml / ecp config) and rerun.`, { exit: 1 });
156
- }
157
- }
158
- }
159
- const dotenvPath = this.effectiveDotenvPath ?? resolveDotenvPathFromConfig(cwd, systemConfig);
160
- const { broker: secretBroker } = createDefaultSecretBroker({
161
- policy: resolveSecretPolicyFromConfig(systemConfig),
162
- dotenvPath,
163
- cwd,
164
- });
165
- const registry = new ExtensionRegistry();
166
- const providers = systemConfig?.models?.providers ?? {};
167
- const openaiDefaults = providers.openai ?? {};
168
- const ollamaDefaults = providers.ollama ?? {};
169
- const ollamaBaseURL = typeof ollamaDefaults.config?.baseURL === "string"
170
- ? ollamaDefaults.config.baseURL
171
- : undefined;
172
- registerBuiltinModelProviders(registry, {
173
- version: BUILTIN_PLUGIN_VERSION,
174
- openai: { defaultModel: selectedModel ?? openaiDefaults.defaultModel },
175
- ollama: {
176
- baseURL: ollamaBaseURL,
177
- defaultModel: selectedModel ?? ollamaDefaults.defaultModel,
178
- },
29
+ let runStatus;
30
+ await runWithCommandError(this, async () => {
31
+ const input = flags.input
32
+ ? await readJsonFile(flags.input, "--input")
33
+ : undefined;
34
+ const ecp = await this.loadEcp(flags);
35
+ const workflow = await loadWorkflowFile(args["workflow-path"]);
36
+ const result = await ecp.run(workflow, {
37
+ input,
38
+ dryRun: flags["dry-run"],
39
+ });
40
+ runStatus = result.run.status;
41
+ this.log(JSON.stringify(result, null, 2));
179
42
  });
180
- registerBuiltinLoggers(registry, { version: BUILTIN_PLUGIN_VERSION, file: {} });
181
- registerBuiltinPlugins(registry, { version: BUILTIN_PLUGIN_VERSION });
182
- registry.lock();
183
- const modelProvider = this.createModelProviderOrFail(registry, providerToUse);
184
- const toolInvoker = new MCPToolInvoker();
185
- const agentTransport = new A2AAgentTransport();
186
- const toolServers = systemConfig?.tools?.servers;
187
- const mcpServerAllowList = getSecurityConfig(systemConfig)?.tools?.allowServers;
188
- if (ollamaBaseURL) {
189
- try {
190
- new URL(ollamaBaseURL);
191
- }
192
- catch {
193
- this.error(`Invalid models.providers.ollama.config.baseURL in system config: "${ollamaBaseURL}"`, { exit: 1 });
194
- }
195
- }
196
- const loggerCallbacks = [];
197
- const loggersConfig = systemConfig?.loggers;
198
- const secLoggers = getSecurityConfig(systemConfig)?.loggers;
199
- const loggersEnabled = loggerRaw.length > 0 ? loggerRaw : secLoggers?.defaultEnable ?? [];
200
- const loggersAllow = secLoggers?.allowEnable;
201
- if (loggersAllow && loggersAllow.length > 0) {
202
- for (const id of loggersEnabled) {
203
- if (!loggersAllow.includes(id)) {
204
- this.error(`Logger "${id}" is not in system config security.loggers.allowEnable. Allowed: ${loggersAllow.join(", ")}`, { exit: 1 });
205
- }
206
- }
207
- }
208
- for (const id of loggersEnabled) {
209
- try {
210
- const cb = registry.createLogger(id, loggersConfig?.config?.[id]);
211
- loggerCallbacks.push(cb);
212
- }
213
- catch (err) {
214
- this.error(`Failed to create logger "${id}": ${commandErrorMessage(err)}`, { exit: 1 });
215
- }
216
- }
217
- const spinner = flags.debug ? undefined : ora({ stream: process.stderr }).start("Loading context...");
218
- const builtInProgress = spinner
219
- ? createProgressHandler(spinner, contextPath, context.metadata.name)
220
- : undefined;
221
- const onProgress = builtInProgress && loggerCallbacks.length > 0
222
- ? [builtInProgress, ...loggerCallbacks]
223
- : builtInProgress ?? (loggerCallbacks.length > 0 ? loggerCallbacks : undefined);
224
- if (flags.debug) {
225
- console.log(`\n Running: ${contextPath}\n`);
226
- }
227
- // Keep memory-store lifecycle in the CLI so we can close it after a run.
228
- let memoryStore;
229
- if (contextHasMemory(context)) {
230
- const pluginReg = registry.listPlugins().find((p) => p.id === "memory");
231
- if (pluginReg) {
232
- try {
233
- const instance = pluginReg.create(getContextPlugins(context)?.config?.memory);
234
- memoryStore = await instance.open();
235
- }
236
- catch (err) {
237
- if (flags.debug) {
238
- console.error(` Memory plugin open failed: ${commandErrorMessage(err)}\n`);
239
- }
240
- }
241
- }
242
- }
243
- const agentEndpoints = resolveAgentEndpointsMap(systemConfig);
244
- const agentEndpointsForEngine = Object.keys(agentEndpoints).length > 0 ? agentEndpoints : undefined;
245
- const engine = new ECPEngine(modelProvider, toolInvoker, agentTransport, {
246
- toolServers,
247
- mcpServerAllowList,
248
- secretBroker,
249
- agentEndpoints: agentEndpointsForEngine,
250
- defaultModel: selectedModel ?? openaiDefaults.defaultModel ?? ollamaDefaults.defaultModel,
251
- modelOverride: selectedModel,
252
- debug: flags.debug,
253
- trace: flags.trace,
254
- memoryStore,
255
- onProgress,
256
- plugins: {
257
- registry,
258
- enable: enableForRun,
259
- allowEnable: secModels?.allowProviders,
260
- security: getSecurityConfig(systemConfig)?.plugins ?? getContextPlugins(context)?.security,
261
- },
262
- });
263
- if (flags.trace) {
264
- const collector = new TraceCollector();
265
- collector.addExporters(new ConsoleTraceExporter(), new JsonFileTraceExporter({ outputDir: flags["trace-dir"] }));
266
- engine.setTraceCollector(collector);
267
- }
268
- let resolvedInputs;
269
- try {
270
- resolvedInputs = resolveInputs(context, inputs);
271
- }
272
- catch (err) {
273
- const msg = commandErrorMessage(err);
274
- const missing = msg.match(/^Missing required input: "([^"]+)"$/);
275
- if (missing) {
276
- const inputName = missing[1];
277
- this.error(`\n Error: Missing required input "${inputName}" defined in the Context manifest.\n` +
278
- ` Provide it via --input ${inputName}=<value> (e.g. -i ${inputName}="...").\n`, { exit: 1 });
279
- }
280
- throw err;
281
- }
282
- const result = await engine.run({ context, inputs: resolvedInputs });
283
- if (memoryStore && typeof memoryStore.close === "function") {
284
- await memoryStore.close();
285
- }
286
- if (spinner) {
287
- if (result.success)
288
- spinner.succeed("Execution completed.");
289
- else
290
- spinner.fail("Execution failed.");
291
- }
292
- console.log("\n--- Execution Result ---");
293
- console.log(` Run ID: ${result.runId}`);
294
- console.log(` Context: ${result.contextName} v${result.contextVersion}`);
295
- console.log(` Success: ${result.success}`);
296
- console.log(` Duration: ${result.durationMs}ms`);
297
- console.log(` Tool calls: ${result.totalBudgetUsage.toolCalls}`);
298
- if (result.error) {
299
- console.log(` Error: ${result.error}`);
300
- }
301
- if (result.output) {
302
- console.log("\n--- Output ---");
303
- console.log(JSON.stringify(result.output, null, 2));
304
- }
305
- if (!spinner) {
306
- console.log("\n--- Executor Outputs ---");
307
- for (const [name, output] of Object.entries(result.executorOutputs)) {
308
- console.log(`\n [${name}]`);
309
- console.log(JSON.stringify(output, null, 2));
310
- }
311
- }
312
- if (flags.debug) {
313
- console.log("\n--- Execution Log ---");
314
- for (const entry of result.log) {
315
- console.log(` [${entry.level.toUpperCase().padEnd(5)}] ${entry.message}`);
316
- }
317
- }
318
- if (flags.trace) {
319
- console.log(`\n Trace saved to: ${flags["trace-dir"]}/${result.runId}.json`);
320
- console.log(` View with: ecp trace ${result.runId}`);
321
- console.log(` Graph with: ecp trace --output graph ${result.runId}`);
322
- }
323
- this.exit(result.success ? 0 : 1);
324
- }
325
- createModelProviderOrFail(registry, providerId) {
326
- const registration = registry.getModelProviderRegistration(providerId);
327
- if (!registration) {
328
- const known = registry.listModelProviders().map((p) => p.id).join(", ");
329
- this.error(`Unknown provider "${providerId}". Registered providers: ${known}`, { exit: 1 });
330
- }
331
- try {
332
- return registry.createModelProvider(providerId);
333
- }
334
- catch (err) {
335
- const rawMsg = commandErrorMessage(err);
336
- const hint = err && typeof err === "object" && "hint" in err ? err.hint : undefined;
337
- this.error(`${rawMsg}${hint ? `\n${hint}` : ""}`, { exit: 1 });
338
- }
339
- }
340
- assertProviderAllowedByPolicy(providerId, systemConfig) {
341
- const allowProviders = getSecurityConfig(systemConfig)?.models?.allowProviders;
342
- if (allowProviders?.length && !allowProviders.includes(providerId)) {
343
- this.error(`Provider "${providerId}" is blocked by system config security.models.allowProviders.\n` +
344
- `Allowed: ${allowProviders.join(", ")}\n` +
345
- `Update your config first (ecp.config.yaml / ecp config) and rerun.`, { exit: 1 });
346
- }
347
- const allowIds = getSecurityConfig(systemConfig)?.plugins?.allowIds;
348
- if (allowIds?.length && !allowIds.includes(providerId)) {
349
- this.error(`Provider "${providerId}" is blocked by system config security.plugins.allowIds.\n` +
350
- `Allowed IDs: ${allowIds.join(", ")}\n` +
351
- `Update your config first (ecp.config.yaml / ecp config) and rerun.`, { exit: 1 });
352
- }
353
- }
354
- assertModelAllowedByPolicy(providerId, modelName, systemConfig) {
355
- const allowedModels = systemConfig?.models?.providers?.[providerId]?.allowedModels;
356
- if (allowedModels?.length && !allowedModels.includes(modelName)) {
357
- this.error(`Model "${modelName}" is blocked for provider "${providerId}" by system config models.providers.${providerId}.allowedModels.\n` +
358
- `Allowed models: ${allowedModels.join(", ")}\n` +
359
- `Update your config first (ecp.config.yaml / ecp config) and rerun.`, { exit: 1 });
43
+ // A successful run is one that completed. Any other terminal status
44
+ // (failed, cancelled, paused) must surface a non-zero exit code so CI
45
+ // and shell callers can trust `ecp run`.
46
+ if (runStatus !== undefined && runStatus !== "completed") {
47
+ this.error(`Workflow run did not complete (status: ${runStatus})`, {
48
+ exit: 1,
49
+ });
360
50
  }
361
51
  }
362
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE,4CAA4C;AAC5C,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,kBAAkB;IACjD,MAAM,CAAC,OAAO,GAAG,gBAAgB,CAAA;IAEjC,MAAM,CAAC,WAAW,GAChB,yFAAyF,CAAA;IAE3F,MAAM,CAAC,QAAQ,GAAG;QAChB,wGAAwG;QACxG,2FAA2F;QAC3F,gFAAgF;KACjF,CAAA;IAED,MAAM,CAAC,IAAI,GAAG;QACZ,GAAG,kBAAkB,CAAC,IAAI;KAC3B,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,kBAAkB,CAAC,KAAK;QAC3B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,8CAA8C;SAC5D,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YACvB,WAAW,EAAE,2DAA2D;YACxE,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC7C,IAAI,SAA6B,CAAA;QACjC,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;gBACvB,CAAC,CAAC,MAAM,YAAY,CAA0B,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;gBACrE,CAAC,CAAC,SAAS,CAAA;YACb,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACrC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;YAC9D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE;gBACrC,KAAK;gBACL,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;aACzB,CAAC,CAAA;YACF,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAA;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QACF,oEAAoE;QACpE,sEAAsE;QACtE,yCAAyC;QACzC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,0CAA0C,SAAS,GAAG,EAAE;gBACjE,IAAI,EAAE,CAAC;aACR,CAAC,CAAA;QACJ,CAAC;IACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { EnvModuleCommand } from "../lib/env-module-command.js";
2
+ /** Search environment capabilities by query string. */
3
+ export default class Search extends EnvModuleCommand {
4
+ static summary: string;
5
+ static description: string;
6
+ static examples: string[];
7
+ static args: {
8
+ query: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAE/D,uDAAuD;AACvD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,gBAAgB;IAClD,MAAM,CAAC,OAAO,SAAoC;IAElD,MAAM,CAAC,WAAW,SAC6D;IAE/E,MAAM,CAAC,QAAQ,WAGd;IAED,MAAM,CAAC,IAAI;;MAKV;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAO3B"}
@@ -0,0 +1,26 @@
1
+ import { Args } from "@oclif/core";
2
+ import { runWithCommandError } from "../lib/command-helpers.js";
3
+ import { EnvModuleCommand } from "../lib/env-module-command.js";
4
+ /** Search environment capabilities by query string. */
5
+ export default class Search extends EnvModuleCommand {
6
+ static summary = "Search environment capabilities";
7
+ static description = "Fuzzy-match capabilities in --env by id or label. Quote multi-word queries.";
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %> "echo" --env examples/01-echo/environment.ts',
10
+ "<%= config.bin %> <%= command.id %> slack --env environment.ts",
11
+ ];
12
+ static args = {
13
+ query: Args.string({
14
+ required: true,
15
+ description: "Search query (capability id or label substring)",
16
+ }),
17
+ };
18
+ async run() {
19
+ const { args, flags } = await this.parse(Search);
20
+ await runWithCommandError(this, async () => {
21
+ const ecp = await this.loadEcp(flags);
22
+ this.log(JSON.stringify(await ecp.search(args.query), null, 2));
23
+ });
24
+ }
25
+ }
26
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAE/D,uDAAuD;AACvD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,gBAAgB;IAClD,MAAM,CAAC,OAAO,GAAG,iCAAiC,CAAA;IAElD,MAAM,CAAC,WAAW,GAChB,6EAA6E,CAAA;IAE/E,MAAM,CAAC,QAAQ,GAAG;QAChB,kFAAkF;QAClF,gEAAgE;KACjE,CAAA;IAED,MAAM,CAAC,IAAI,GAAG;QACZ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;YACjB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,iDAAiD;SAC/D,CAAC;KACH,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChD,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACrC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;IACJ,CAAC"}
@@ -1,13 +1,11 @@
1
- import { EcpEnvironmentCommand } from "../lib/ecp-environment-command.js";
2
- export default class Validate extends EcpEnvironmentCommand {
1
+ import { WorkflowEnvCommand } from "../lib/env-module-command.js";
2
+ /** Validate a workflow against an environment. */
3
+ export default class Validate extends WorkflowEnvCommand {
3
4
  static summary: string;
4
- static flags: {
5
- input: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
- "skip-inputs": import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
- environment: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
- };
5
+ static description: string;
6
+ static examples: string[];
9
7
  static args: {
10
- contextPath: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
8
+ "workflow-path": import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
11
9
  };
12
10
  run(): Promise<void>;
13
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AA8B1E,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,qBAAqB;IACzD,MAAM,CAAC,OAAO,SAAiC;IAE/C,MAAM,CAAC,KAAK;;;;MAaV;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+C3B"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE,kDAAkD;AAClD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,kBAAkB;IACtD,MAAM,CAAC,OAAO,SAAiC;IAE/C,MAAM,CAAC,WAAW,SACqF;IAEvG,MAAM,CAAC,QAAQ,WAEd;IAED,MAAM,CAAC,IAAI;;MAEV;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAU3B"}
@@ -1,93 +1,26 @@
1
- import { Flags, Args } from "@oclif/core";
2
- import { resolve } from "node:path";
3
- import { loadContext, resolveInputs } from "@executioncontrolprotocol/runtime";
4
- import { commandErrorMessage } from "../lib/command-helpers.js";
5
- import { parseKeyValueInputs } from "../lib/parsing.js";
6
- import { getRequiredInputNames } from "../lib/inputs.js";
7
- import { EcpEnvironmentCommand } from "../lib/ecp-environment-command.js";
8
- function collectExecutionObjectNames(context) {
9
- const names = new Set();
10
- const addName = (name) => {
11
- names.add(name);
12
- };
13
- const visitOrchestrator = (orchestrator) => {
14
- addName(orchestrator.name);
15
- for (const executor of orchestrator.executors ?? []) {
16
- addName(executor.name);
17
- }
18
- for (const child of orchestrator.orchestrators ?? []) {
19
- visitOrchestrator(child);
20
- }
21
- };
22
- if (context.orchestrator) {
23
- visitOrchestrator(context.orchestrator);
24
- }
25
- for (const executor of context.executors ?? []) {
26
- addName(executor.name);
27
- }
28
- return [...names];
29
- }
30
- export default class Validate extends EcpEnvironmentCommand {
31
- static summary = "Validate a Context manifest";
32
- static flags = {
33
- ...EcpEnvironmentCommand.flags,
34
- input: Flags.string({
35
- char: "i",
36
- multiple: true,
37
- description: "Set an input value (repeatable, key=value)",
38
- summary: "Input value (key=value)",
39
- }),
40
- "skip-inputs": Flags.boolean({
41
- description: "Validate the Context manifest itself but skip runtime input resolution (prints required inputs instead).",
42
- default: false,
43
- }),
44
- };
1
+ import { loadWorkflowFile } from "@executioncontrolprotocol/core/loaders";
2
+ import { runWithCommandError } from "../lib/command-helpers.js";
3
+ import { WorkflowEnvCommand } from "../lib/env-module-command.js";
4
+ /** Validate a workflow against an environment. */
5
+ export default class Validate extends WorkflowEnvCommand {
6
+ static summary = "Validate a workflow manifest";
7
+ static description = "Compile (if needed) and validate a workflow against the extensions, runtime, and policies in --env.";
8
+ static examples = [
9
+ "<%= config.bin %> <%= command.id %> examples/01-echo/workflow.ts --env examples/01-echo/environment.ts",
10
+ ];
45
11
  static args = {
46
- contextPath: Args.string({
47
- required: true,
48
- description: "Path to context.yaml (or context.json)",
49
- }),
12
+ ...WorkflowEnvCommand.args,
50
13
  };
51
14
  async run() {
52
15
  const { args, flags } = await this.parse(Validate);
53
- this.applyEnvironmentFlag(flags);
54
- const contextPath = resolve(args.contextPath);
55
- console.log(`\nValidating: ${contextPath}\n`);
56
- let context;
57
- try {
58
- const inputs = parseKeyValueInputs(flags.input, "--input");
59
- context = loadContext(contextPath);
60
- if (!flags["skip-inputs"]) {
61
- resolveInputs(context, inputs);
62
- }
63
- const strategy = context.orchestration?.strategy ?? context.orchestrator?.strategy;
64
- const executionObjectNames = collectExecutionObjectNames(context);
65
- console.log(` Context: ${context.metadata.name} v${context.metadata.version}`);
66
- console.log(` Strategy: ${strategy ?? "unknown"}`);
67
- console.log(` Execution objects: ${executionObjectNames.join(", ")}`);
68
- console.log(` Schemas: ${Object.keys(context.schemas ?? {}).join(", ")}`);
69
- if (flags["skip-inputs"]) {
70
- const requiredInputs = getRequiredInputNames(context);
71
- if (requiredInputs.length > 0) {
72
- console.log(`\n Required inputs (from Context): ${requiredInputs.join(", ")}`);
73
- }
74
- else {
75
- console.log(`\n No required inputs declared in Context.`);
76
- }
77
- }
78
- console.log(`\n Validation passed.\n`);
79
- }
80
- catch (err) {
81
- const msg = commandErrorMessage(err);
82
- const missing = msg.match(/^Missing required input: "([^"]+)"$/);
83
- if (missing && context) {
84
- const inputName = missing[1];
85
- this.error(`\n Missing required input "${inputName}" is defined in the Context.\n` +
86
- ` Provide it via --input ${inputName}=<value> (e.g. -i ${inputName}="...").\n`, { exit: 1 });
87
- return;
88
- }
89
- this.error(`\n Validation failed: ${msg}\n`, { exit: 1 });
90
- }
16
+ await runWithCommandError(this, async () => {
17
+ const ecp = await this.loadEcp(flags);
18
+ const workflow = await loadWorkflowFile(args["workflow-path"]);
19
+ const result = await ecp.validate(workflow);
20
+ this.log(JSON.stringify(result, null, 2));
21
+ if (!result.valid)
22
+ this.exit(1);
23
+ });
91
24
  }
92
25
  }
93
26
  //# sourceMappingURL=validate.js.map