@travisliu/open-dynamic-workflow 0.3.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 (466) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +312 -0
  4. package/dist/agents/antigravity-cli.d.ts +19 -0
  5. package/dist/agents/antigravity-cli.js +177 -0
  6. package/dist/agents/antigravity-cli.js.map +1 -0
  7. package/dist/agents/codex-exec.d.ts +12 -0
  8. package/dist/agents/codex-exec.js +283 -0
  9. package/dist/agents/codex-exec.js.map +1 -0
  10. package/dist/agents/execute-agent.d.ts +21 -0
  11. package/dist/agents/execute-agent.js +593 -0
  12. package/dist/agents/execute-agent.js.map +1 -0
  13. package/dist/agents/execution-types.d.ts +20 -0
  14. package/dist/agents/execution-types.js +2 -0
  15. package/dist/agents/execution-types.js.map +1 -0
  16. package/dist/agents/gemini-cli.d.ts +14 -0
  17. package/dist/agents/gemini-cli.js +176 -0
  18. package/dist/agents/gemini-cli.js.map +1 -0
  19. package/dist/agents/github-copilot-cli.d.ts +16 -0
  20. package/dist/agents/github-copilot-cli.js +256 -0
  21. package/dist/agents/github-copilot-cli.js.map +1 -0
  22. package/dist/agents/mock-adapter.d.ts +12 -0
  23. package/dist/agents/mock-adapter.js +66 -0
  24. package/dist/agents/mock-adapter.js.map +1 -0
  25. package/dist/agents/model-args.d.ts +2 -0
  26. package/dist/agents/model-args.js +15 -0
  27. package/dist/agents/model-args.js.map +1 -0
  28. package/dist/agents/opencode-cli.d.ts +22 -0
  29. package/dist/agents/opencode-cli.js +245 -0
  30. package/dist/agents/opencode-cli.js.map +1 -0
  31. package/dist/agents/pi-coding-agent.d.ts +31 -0
  32. package/dist/agents/pi-coding-agent.js +317 -0
  33. package/dist/agents/pi-coding-agent.js.map +1 -0
  34. package/dist/agents/process-runner.d.ts +2 -0
  35. package/dist/agents/process-runner.js +130 -0
  36. package/dist/agents/process-runner.js.map +1 -0
  37. package/dist/agents/provider-health.d.ts +3 -0
  38. package/dist/agents/provider-health.js +30 -0
  39. package/dist/agents/provider-health.js.map +1 -0
  40. package/dist/agents/registry.d.ts +12 -0
  41. package/dist/agents/registry.js +45 -0
  42. package/dist/agents/registry.js.map +1 -0
  43. package/dist/agents/resolve-model.d.ts +11 -0
  44. package/dist/agents/resolve-model.js +30 -0
  45. package/dist/agents/resolve-model.js.map +1 -0
  46. package/dist/agents/types.d.ts +2 -0
  47. package/dist/agents/types.js +2 -0
  48. package/dist/agents/types.js.map +1 -0
  49. package/dist/artifacts/call-cache.d.ts +117 -0
  50. package/dist/artifacts/call-cache.js +449 -0
  51. package/dist/artifacts/call-cache.js.map +1 -0
  52. package/dist/artifacts/logs.d.ts +13 -0
  53. package/dist/artifacts/logs.js +24 -0
  54. package/dist/artifacts/logs.js.map +1 -0
  55. package/dist/artifacts/manifest.d.ts +18 -0
  56. package/dist/artifacts/manifest.js +29 -0
  57. package/dist/artifacts/manifest.js.map +1 -0
  58. package/dist/artifacts/run-store.d.ts +22 -0
  59. package/dist/artifacts/run-store.js +148 -0
  60. package/dist/artifacts/run-store.js.map +1 -0
  61. package/dist/bin/open-dynamic-workflow.d.ts +2 -0
  62. package/dist/bin/open-dynamic-workflow.js +45 -0
  63. package/dist/bin/open-dynamic-workflow.js.map +1 -0
  64. package/dist/cli/args.d.ts +36 -0
  65. package/dist/cli/args.js +68 -0
  66. package/dist/cli/args.js.map +1 -0
  67. package/dist/cli/commands/doctor.d.ts +9 -0
  68. package/dist/cli/commands/doctor.js +109 -0
  69. package/dist/cli/commands/doctor.js.map +1 -0
  70. package/dist/cli/commands/init.d.ts +23 -0
  71. package/dist/cli/commands/init.js +147 -0
  72. package/dist/cli/commands/init.js.map +1 -0
  73. package/dist/cli/commands/list.d.ts +12 -0
  74. package/dist/cli/commands/list.js +65 -0
  75. package/dist/cli/commands/list.js.map +1 -0
  76. package/dist/cli/commands/resume.d.ts +5 -0
  77. package/dist/cli/commands/resume.js +81 -0
  78. package/dist/cli/commands/resume.js.map +1 -0
  79. package/dist/cli/commands/run.d.ts +18 -0
  80. package/dist/cli/commands/run.js +318 -0
  81. package/dist/cli/commands/run.js.map +1 -0
  82. package/dist/cli/commands/validate.d.ts +14 -0
  83. package/dist/cli/commands/validate.js +66 -0
  84. package/dist/cli/commands/validate.js.map +1 -0
  85. package/dist/cli/index.d.ts +2 -0
  86. package/dist/cli/index.js +169 -0
  87. package/dist/cli/index.js.map +1 -0
  88. package/dist/cli/init/defaults.d.ts +12 -0
  89. package/dist/cli/init/defaults.js +54 -0
  90. package/dist/cli/init/defaults.js.map +1 -0
  91. package/dist/cli/init/planner.d.ts +10 -0
  92. package/dist/cli/init/planner.js +163 -0
  93. package/dist/cli/init/planner.js.map +1 -0
  94. package/dist/cli/init/prompts.d.ts +15 -0
  95. package/dist/cli/init/prompts.js +83 -0
  96. package/dist/cli/init/prompts.js.map +1 -0
  97. package/dist/cli/init/providers.d.ts +13 -0
  98. package/dist/cli/init/providers.js +100 -0
  99. package/dist/cli/init/providers.js.map +1 -0
  100. package/dist/cli/init/renderer.d.ts +8 -0
  101. package/dist/cli/init/renderer.js +84 -0
  102. package/dist/cli/init/renderer.js.map +1 -0
  103. package/dist/cli/init/smoke-test.d.ts +15 -0
  104. package/dist/cli/init/smoke-test.js +47 -0
  105. package/dist/cli/init/smoke-test.js.map +1 -0
  106. package/dist/cli/init/summary.d.ts +11 -0
  107. package/dist/cli/init/summary.js +65 -0
  108. package/dist/cli/init/summary.js.map +1 -0
  109. package/dist/cli/init/types.d.ts +81 -0
  110. package/dist/cli/init/types.js +2 -0
  111. package/dist/cli/init/types.js.map +1 -0
  112. package/dist/cli/init/writer.d.ts +3 -0
  113. package/dist/cli/init/writer.js +57 -0
  114. package/dist/cli/init/writer.js.map +1 -0
  115. package/dist/cli/package-info.d.ts +1 -0
  116. package/dist/cli/package-info.js +13 -0
  117. package/dist/cli/package-info.js.map +1 -0
  118. package/dist/cli/paths.d.ts +2 -0
  119. package/dist/cli/paths.js +8 -0
  120. package/dist/cli/paths.js.map +1 -0
  121. package/dist/cli/print.d.ts +22 -0
  122. package/dist/cli/print.js +48 -0
  123. package/dist/cli/print.js.map +1 -0
  124. package/dist/config/defaults.d.ts +3 -0
  125. package/dist/config/defaults.js +116 -0
  126. package/dist/config/defaults.js.map +1 -0
  127. package/dist/config/load.d.ts +10 -0
  128. package/dist/config/load.js +72 -0
  129. package/dist/config/load.js.map +1 -0
  130. package/dist/config/merge.d.ts +10 -0
  131. package/dist/config/merge.js +58 -0
  132. package/dist/config/merge.js.map +1 -0
  133. package/dist/config/schema.d.ts +2 -0
  134. package/dist/config/schema.js +236 -0
  135. package/dist/config/schema.js.map +1 -0
  136. package/dist/config/types.d.ts +93 -0
  137. package/dist/config/types.js +2 -0
  138. package/dist/config/types.js.map +1 -0
  139. package/dist/discovery/collect-files.d.ts +10 -0
  140. package/dist/discovery/collect-files.js +189 -0
  141. package/dist/discovery/collect-files.js.map +1 -0
  142. package/dist/discovery/definition-call.d.ts +10 -0
  143. package/dist/discovery/definition-call.js +37 -0
  144. package/dist/discovery/definition-call.js.map +1 -0
  145. package/dist/discovery/diagnostics.d.ts +17 -0
  146. package/dist/discovery/diagnostics.js +32 -0
  147. package/dist/discovery/diagnostics.js.map +1 -0
  148. package/dist/discovery/directories.d.ts +8 -0
  149. package/dist/discovery/directories.js +32 -0
  150. package/dist/discovery/directories.js.map +1 -0
  151. package/dist/discovery/duplicate-detector.d.ts +8 -0
  152. package/dist/discovery/duplicate-detector.js +40 -0
  153. package/dist/discovery/duplicate-detector.js.map +1 -0
  154. package/dist/discovery/extract-agent.d.ts +2 -0
  155. package/dist/discovery/extract-agent.js +166 -0
  156. package/dist/discovery/extract-agent.js.map +1 -0
  157. package/dist/discovery/extract-tool.d.ts +2 -0
  158. package/dist/discovery/extract-tool.js +188 -0
  159. package/dist/discovery/extract-tool.js.map +1 -0
  160. package/dist/discovery/extract-workflow.d.ts +2 -0
  161. package/dist/discovery/extract-workflow.js +180 -0
  162. package/dist/discovery/extract-workflow.js.map +1 -0
  163. package/dist/discovery/file-patterns.d.ts +3 -0
  164. package/dist/discovery/file-patterns.js +93 -0
  165. package/dist/discovery/file-patterns.js.map +1 -0
  166. package/dist/discovery/index.d.ts +7 -0
  167. package/dist/discovery/index.js +8 -0
  168. package/dist/discovery/index.js.map +1 -0
  169. package/dist/discovery/schema-summary.d.ts +13 -0
  170. package/dist/discovery/schema-summary.js +37 -0
  171. package/dist/discovery/schema-summary.js.map +1 -0
  172. package/dist/discovery/service.d.ts +4 -0
  173. package/dist/discovery/service.js +135 -0
  174. package/dist/discovery/service.js.map +1 -0
  175. package/dist/discovery/static-values.d.ts +13 -0
  176. package/dist/discovery/static-values.js +68 -0
  177. package/dist/discovery/static-values.js.map +1 -0
  178. package/dist/discovery/types.d.ts +95 -0
  179. package/dist/discovery/types.js +2 -0
  180. package/dist/discovery/types.js.map +1 -0
  181. package/dist/doctors/public.d.ts +15 -0
  182. package/dist/doctors/public.js +2 -0
  183. package/dist/doctors/public.js.map +1 -0
  184. package/dist/errors/codes.d.ts +53 -0
  185. package/dist/errors/codes.js +53 -0
  186. package/dist/errors/codes.js.map +1 -0
  187. package/dist/errors/exit-codes.d.ts +13 -0
  188. package/dist/errors/exit-codes.js +72 -0
  189. package/dist/errors/exit-codes.js.map +1 -0
  190. package/dist/errors/list-errors.d.ts +4 -0
  191. package/dist/errors/list-errors.js +11 -0
  192. package/dist/errors/list-errors.js.map +1 -0
  193. package/dist/errors/serialize.d.ts +2 -0
  194. package/dist/errors/serialize.js +38 -0
  195. package/dist/errors/serialize.js.map +1 -0
  196. package/dist/errors/types.d.ts +15 -0
  197. package/dist/errors/types.js +13 -0
  198. package/dist/errors/types.js.map +1 -0
  199. package/dist/index.d.ts +3 -0
  200. package/dist/index.js +3 -0
  201. package/dist/index.js.map +1 -0
  202. package/dist/orchestration/cancellation.d.ts +13 -0
  203. package/dist/orchestration/cancellation.js +41 -0
  204. package/dist/orchestration/cancellation.js.map +1 -0
  205. package/dist/orchestration/event-bus.d.ts +24 -0
  206. package/dist/orchestration/event-bus.js +50 -0
  207. package/dist/orchestration/event-bus.js.map +1 -0
  208. package/dist/orchestration/fail-fast.d.ts +8 -0
  209. package/dist/orchestration/fail-fast.js +21 -0
  210. package/dist/orchestration/fail-fast.js.map +1 -0
  211. package/dist/orchestration/scheduler.d.ts +37 -0
  212. package/dist/orchestration/scheduler.js +330 -0
  213. package/dist/orchestration/scheduler.js.map +1 -0
  214. package/dist/orchestration/tool-limiter.d.ts +10 -0
  215. package/dist/orchestration/tool-limiter.js +62 -0
  216. package/dist/orchestration/tool-limiter.js.map +1 -0
  217. package/dist/output/events.d.ts +290 -0
  218. package/dist/output/events.js +10 -0
  219. package/dist/output/events.js.map +1 -0
  220. package/dist/output/failed-artifacts.d.ts +5 -0
  221. package/dist/output/failed-artifacts.js +62 -0
  222. package/dist/output/failed-artifacts.js.map +1 -0
  223. package/dist/output/json-reporter.d.ts +13 -0
  224. package/dist/output/json-reporter.js +31 -0
  225. package/dist/output/json-reporter.js.map +1 -0
  226. package/dist/output/jsonl-reporter.d.ts +12 -0
  227. package/dist/output/jsonl-reporter.js +29 -0
  228. package/dist/output/jsonl-reporter.js.map +1 -0
  229. package/dist/output/list-json-reporter.d.ts +9 -0
  230. package/dist/output/list-json-reporter.js +22 -0
  231. package/dist/output/list-json-reporter.js.map +1 -0
  232. package/dist/output/list-jsonl-reporter.d.ts +9 -0
  233. package/dist/output/list-jsonl-reporter.js +43 -0
  234. package/dist/output/list-jsonl-reporter.js.map +1 -0
  235. package/dist/output/list-pretty-reporter.d.ts +13 -0
  236. package/dist/output/list-pretty-reporter.js +120 -0
  237. package/dist/output/list-pretty-reporter.js.map +1 -0
  238. package/dist/output/list-reporter.d.ts +14 -0
  239. package/dist/output/list-reporter.js +20 -0
  240. package/dist/output/list-reporter.js.map +1 -0
  241. package/dist/output/pretty-format.d.ts +19 -0
  242. package/dist/output/pretty-format.js +75 -0
  243. package/dist/output/pretty-format.js.map +1 -0
  244. package/dist/output/pretty-renderer.d.ts +2 -0
  245. package/dist/output/pretty-renderer.js +97 -0
  246. package/dist/output/pretty-renderer.js.map +1 -0
  247. package/dist/output/pretty-reporter.d.ts +14 -0
  248. package/dist/output/pretty-reporter.js +155 -0
  249. package/dist/output/pretty-reporter.js.map +1 -0
  250. package/dist/output/pretty-view-builder.d.ts +26 -0
  251. package/dist/output/pretty-view-builder.js +374 -0
  252. package/dist/output/pretty-view-builder.js.map +1 -0
  253. package/dist/output/pretty-view.d.ts +85 -0
  254. package/dist/output/pretty-view.js +6 -0
  255. package/dist/output/pretty-view.js.map +1 -0
  256. package/dist/output/reporter.d.ts +34 -0
  257. package/dist/output/reporter.js +24 -0
  258. package/dist/output/reporter.js.map +1 -0
  259. package/dist/output/verbose-formatter.d.ts +6 -0
  260. package/dist/output/verbose-formatter.js +137 -0
  261. package/dist/output/verbose-formatter.js.map +1 -0
  262. package/dist/pipeline/artifacts.d.ts +6 -0
  263. package/dist/pipeline/artifacts.js +44 -0
  264. package/dist/pipeline/artifacts.js.map +1 -0
  265. package/dist/pipeline/concurrency.d.ts +11 -0
  266. package/dist/pipeline/concurrency.js +60 -0
  267. package/dist/pipeline/concurrency.js.map +1 -0
  268. package/dist/pipeline/context.d.ts +15 -0
  269. package/dist/pipeline/context.js +17 -0
  270. package/dist/pipeline/context.js.map +1 -0
  271. package/dist/pipeline/events.d.ts +10 -0
  272. package/dist/pipeline/events.js +83 -0
  273. package/dist/pipeline/events.js.map +1 -0
  274. package/dist/pipeline/id.d.ts +10 -0
  275. package/dist/pipeline/id.js +61 -0
  276. package/dist/pipeline/id.js.map +1 -0
  277. package/dist/pipeline/item-streaming.d.ts +3 -0
  278. package/dist/pipeline/item-streaming.js +122 -0
  279. package/dist/pipeline/item-streaming.js.map +1 -0
  280. package/dist/pipeline/results.d.ts +10 -0
  281. package/dist/pipeline/results.js +88 -0
  282. package/dist/pipeline/results.js.map +1 -0
  283. package/dist/pipeline/run.d.ts +10 -0
  284. package/dist/pipeline/run.js +93 -0
  285. package/dist/pipeline/run.js.map +1 -0
  286. package/dist/pipeline/stage-barrier.d.ts +3 -0
  287. package/dist/pipeline/stage-barrier.js +135 -0
  288. package/dist/pipeline/stage-barrier.js.map +1 -0
  289. package/dist/pipeline/stage-runner.d.ts +13 -0
  290. package/dist/pipeline/stage-runner.js +185 -0
  291. package/dist/pipeline/stage-runner.js.map +1 -0
  292. package/dist/pipeline/summary.d.ts +12 -0
  293. package/dist/pipeline/summary.js +24 -0
  294. package/dist/pipeline/summary.js.map +1 -0
  295. package/dist/pipeline/types.d.ts +92 -0
  296. package/dist/pipeline/types.js +2 -0
  297. package/dist/pipeline/types.js.map +1 -0
  298. package/dist/pipeline/validate.d.ts +11 -0
  299. package/dist/pipeline/validate.js +139 -0
  300. package/dist/pipeline/validate.js.map +1 -0
  301. package/dist/runtime/public.d.ts +3 -0
  302. package/dist/runtime/public.js +4 -0
  303. package/dist/runtime/public.js.map +1 -0
  304. package/dist/security/env.d.ts +38 -0
  305. package/dist/security/env.js +186 -0
  306. package/dist/security/env.js.map +1 -0
  307. package/dist/security/metadata.d.ts +6 -0
  308. package/dist/security/metadata.js +41 -0
  309. package/dist/security/metadata.js.map +1 -0
  310. package/dist/shared-agents/context.d.ts +2 -0
  311. package/dist/shared-agents/context.js +5 -0
  312. package/dist/shared-agents/context.js.map +1 -0
  313. package/dist/shared-agents/define-agent.d.ts +3 -0
  314. package/dist/shared-agents/define-agent.js +15 -0
  315. package/dist/shared-agents/define-agent.js.map +1 -0
  316. package/dist/shared-agents/execute.d.ts +24 -0
  317. package/dist/shared-agents/execute.js +63 -0
  318. package/dist/shared-agents/execute.js.map +1 -0
  319. package/dist/shared-agents/index.d.ts +5 -0
  320. package/dist/shared-agents/index.js +6 -0
  321. package/dist/shared-agents/index.js.map +1 -0
  322. package/dist/shared-agents/load.d.ts +8 -0
  323. package/dist/shared-agents/load.js +141 -0
  324. package/dist/shared-agents/load.js.map +1 -0
  325. package/dist/shared-agents/registry.d.ts +8 -0
  326. package/dist/shared-agents/registry.js +25 -0
  327. package/dist/shared-agents/registry.js.map +1 -0
  328. package/dist/shared-agents/render.d.ts +11 -0
  329. package/dist/shared-agents/render.js +31 -0
  330. package/dist/shared-agents/render.js.map +1 -0
  331. package/dist/shared-agents/resolver.d.ts +7 -0
  332. package/dist/shared-agents/resolver.js +22 -0
  333. package/dist/shared-agents/resolver.js.map +1 -0
  334. package/dist/shared-agents/types.d.ts +33 -0
  335. package/dist/shared-agents/types.js +2 -0
  336. package/dist/shared-agents/types.js.map +1 -0
  337. package/dist/shared-agents/validate.d.ts +7 -0
  338. package/dist/shared-agents/validate.js +223 -0
  339. package/dist/shared-agents/validate.js.map +1 -0
  340. package/dist/structured/extract-json.d.ts +11 -0
  341. package/dist/structured/extract-json.js +79 -0
  342. package/dist/structured/extract-json.js.map +1 -0
  343. package/dist/structured/normalize-agent-output.d.ts +18 -0
  344. package/dist/structured/normalize-agent-output.js +89 -0
  345. package/dist/structured/normalize-agent-output.js.map +1 -0
  346. package/dist/structured/structured-output.d.ts +14 -0
  347. package/dist/structured/structured-output.js +51 -0
  348. package/dist/structured/structured-output.js.map +1 -0
  349. package/dist/structured/validate-json.d.ts +13 -0
  350. package/dist/structured/validate-json.js +32 -0
  351. package/dist/structured/validate-json.js.map +1 -0
  352. package/dist/tools/artifacts.d.ts +8 -0
  353. package/dist/tools/artifacts.js +31 -0
  354. package/dist/tools/artifacts.js.map +1 -0
  355. package/dist/tools/define-tool.d.ts +10 -0
  356. package/dist/tools/define-tool.js +24 -0
  357. package/dist/tools/define-tool.js.map +1 -0
  358. package/dist/tools/executor-types.d.ts +40 -0
  359. package/dist/tools/executor-types.js +2 -0
  360. package/dist/tools/executor-types.js.map +1 -0
  361. package/dist/tools/executor.d.ts +23 -0
  362. package/dist/tools/executor.js +455 -0
  363. package/dist/tools/executor.js.map +1 -0
  364. package/dist/tools/index.d.ts +6 -0
  365. package/dist/tools/index.js +5 -0
  366. package/dist/tools/index.js.map +1 -0
  367. package/dist/tools/load.d.ts +7 -0
  368. package/dist/tools/load.js +133 -0
  369. package/dist/tools/load.js.map +1 -0
  370. package/dist/tools/registry.d.ts +9 -0
  371. package/dist/tools/registry.js +97 -0
  372. package/dist/tools/registry.js.map +1 -0
  373. package/dist/tools/serialization.d.ts +11 -0
  374. package/dist/tools/serialization.js +68 -0
  375. package/dist/tools/serialization.js.map +1 -0
  376. package/dist/tools/validate.d.ts +18 -0
  377. package/dist/tools/validate.js +55 -0
  378. package/dist/tools/validate.js.map +1 -0
  379. package/dist/types/agent.d.ts +136 -0
  380. package/dist/types/agent.js +2 -0
  381. package/dist/types/agent.js.map +1 -0
  382. package/dist/types/artifacts.d.ts +88 -0
  383. package/dist/types/artifacts.js +2 -0
  384. package/dist/types/artifacts.js.map +1 -0
  385. package/dist/types/common.d.ts +15 -0
  386. package/dist/types/common.js +2 -0
  387. package/dist/types/common.js.map +1 -0
  388. package/dist/types/config.d.ts +119 -0
  389. package/dist/types/config.js +2 -0
  390. package/dist/types/config.js.map +1 -0
  391. package/dist/types/errors.d.ts +21 -0
  392. package/dist/types/errors.js +50 -0
  393. package/dist/types/errors.js.map +1 -0
  394. package/dist/types/events.d.ts +4 -0
  395. package/dist/types/events.js +2 -0
  396. package/dist/types/events.js.map +1 -0
  397. package/dist/types/index.d.ts +11 -0
  398. package/dist/types/index.js +12 -0
  399. package/dist/types/index.js.map +1 -0
  400. package/dist/types/process.d.ts +20 -0
  401. package/dist/types/process.js +2 -0
  402. package/dist/types/process.js.map +1 -0
  403. package/dist/types/reporter.d.ts +1 -0
  404. package/dist/types/reporter.js +2 -0
  405. package/dist/types/reporter.js.map +1 -0
  406. package/dist/types/scheduler.d.ts +30 -0
  407. package/dist/types/scheduler.js +2 -0
  408. package/dist/types/scheduler.js.map +1 -0
  409. package/dist/types/tool.d.ts +129 -0
  410. package/dist/types/tool.js +2 -0
  411. package/dist/types/tool.js.map +1 -0
  412. package/dist/types/workflow.d.ts +127 -0
  413. package/dist/types/workflow.js +2 -0
  414. package/dist/types/workflow.js.map +1 -0
  415. package/dist/workflow/discovery.d.ts +15 -0
  416. package/dist/workflow/discovery.js +134 -0
  417. package/dist/workflow/discovery.js.map +1 -0
  418. package/dist/workflow/dsl.d.ts +13 -0
  419. package/dist/workflow/dsl.js +683 -0
  420. package/dist/workflow/dsl.js.map +1 -0
  421. package/dist/workflow/errors.d.ts +18 -0
  422. package/dist/workflow/errors.js +33 -0
  423. package/dist/workflow/errors.js.map +1 -0
  424. package/dist/workflow/invocation-artifacts.d.ts +42 -0
  425. package/dist/workflow/invocation-artifacts.js +114 -0
  426. package/dist/workflow/invocation-artifacts.js.map +1 -0
  427. package/dist/workflow/invocation-manager.d.ts +31 -0
  428. package/dist/workflow/invocation-manager.js +516 -0
  429. package/dist/workflow/invocation-manager.js.map +1 -0
  430. package/dist/workflow/invocation-types.d.ts +63 -0
  431. package/dist/workflow/invocation-types.js +15 -0
  432. package/dist/workflow/invocation-types.js.map +1 -0
  433. package/dist/workflow/json.d.ts +10 -0
  434. package/dist/workflow/json.js +117 -0
  435. package/dist/workflow/json.js.map +1 -0
  436. package/dist/workflow/load.d.ts +2 -0
  437. package/dist/workflow/load.js +18 -0
  438. package/dist/workflow/load.js.map +1 -0
  439. package/dist/workflow/parse.d.ts +2 -0
  440. package/dist/workflow/parse.js +135 -0
  441. package/dist/workflow/parse.js.map +1 -0
  442. package/dist/workflow/registry.d.ts +18 -0
  443. package/dist/workflow/registry.js +55 -0
  444. package/dist/workflow/registry.js.map +1 -0
  445. package/dist/workflow/resolve-target.d.ts +45 -0
  446. package/dist/workflow/resolve-target.js +162 -0
  447. package/dist/workflow/resolve-target.js.map +1 -0
  448. package/dist/workflow/runtime.d.ts +46 -0
  449. package/dist/workflow/runtime.js +398 -0
  450. package/dist/workflow/runtime.js.map +1 -0
  451. package/dist/workflow/sandbox.d.ts +14 -0
  452. package/dist/workflow/sandbox.js +79 -0
  453. package/dist/workflow/sandbox.js.map +1 -0
  454. package/dist/workflow/scope.d.ts +18 -0
  455. package/dist/workflow/scope.js +108 -0
  456. package/dist/workflow/scope.js.map +1 -0
  457. package/dist/workflow/types.d.ts +65 -0
  458. package/dist/workflow/types.js +2 -0
  459. package/dist/workflow/types.js.map +1 -0
  460. package/dist/workflow/validate.d.ts +28 -0
  461. package/dist/workflow/validate.js +1059 -0
  462. package/dist/workflow/validate.js.map +1 -0
  463. package/dist/workflow/workflow-call.d.ts +12 -0
  464. package/dist/workflow/workflow-call.js +61 -0
  465. package/dist/workflow/workflow-call.js.map +1 -0
  466. package/package.json +67 -0
@@ -0,0 +1,92 @@
1
+ import type { AgentCallInput, AgentResult } from "../types/agent.js";
2
+ import type { SerializedError } from "../types/errors.js";
3
+ export type PipelineStrategy = "item-streaming" | "stage-barrier";
4
+ export interface PipelineOptions {
5
+ label?: string;
6
+ strategy?: PipelineStrategy;
7
+ concurrency?: number;
8
+ stageConcurrency?: Record<string, number>;
9
+ preserveOrder?: boolean;
10
+ failFast?: boolean;
11
+ }
12
+ export interface NormalizedPipelineOptions {
13
+ label?: string;
14
+ strategy: PipelineStrategy;
15
+ concurrency?: number;
16
+ stageConcurrency: Record<string, number>;
17
+ preserveOrder: boolean;
18
+ failFast: boolean;
19
+ }
20
+ export interface PipelineStageContext {
21
+ pipelineId: string;
22
+ runId: string;
23
+ artifactsDir: string;
24
+ itemIndex: number;
25
+ stageIndex: number;
26
+ stageName: string;
27
+ agent(input: AgentCallInput): Promise<AgentResult>;
28
+ log(message: string, data?: unknown): void;
29
+ agentId(suffix?: string): string;
30
+ signal: AbortSignal;
31
+ sleep(ms: number): Promise<void>;
32
+ }
33
+ export interface PipelineStage<I = unknown, O = unknown> {
34
+ name: string;
35
+ run: (input: I, context: PipelineStageContext) => Promise<O> | O;
36
+ concurrency?: number;
37
+ timeoutMs?: number;
38
+ }
39
+ export interface PipelineStageResult<O = unknown> {
40
+ stageName: string;
41
+ stageIndex: number;
42
+ status: "succeeded" | "failed" | "skipped" | "timed_out" | "cancelled";
43
+ startedAt: string;
44
+ finishedAt: string;
45
+ durationMs: number;
46
+ value?: O;
47
+ error?: SerializedError;
48
+ childAgentIds: string[];
49
+ }
50
+ export interface PipelineItemSuccess<O = unknown> {
51
+ itemIndex: number;
52
+ status: "succeeded";
53
+ startedAt: string;
54
+ finishedAt: string;
55
+ durationMs: number;
56
+ value: O;
57
+ stages: PipelineStageResult[];
58
+ }
59
+ export interface PipelineItemFailure {
60
+ itemIndex: number;
61
+ status: "failed" | "cancelled" | "timed_out";
62
+ startedAt: string;
63
+ finishedAt: string;
64
+ durationMs: number;
65
+ failedStage?: string;
66
+ error?: SerializedError;
67
+ stages: PipelineStageResult[];
68
+ }
69
+ export type PipelineItemResult<O = unknown> = PipelineItemSuccess<O> | PipelineItemFailure;
70
+ export type PipelineResult<O = unknown> = PipelineItemResult<O>[];
71
+ export interface PipelineStageArtifacts {
72
+ stageName: string;
73
+ stageIndex: number;
74
+ status: string;
75
+ value?: unknown;
76
+ error?: SerializedError;
77
+ childAgentIds: string[];
78
+ }
79
+ export interface PipelineSummary {
80
+ pipelineId: string;
81
+ label?: string | undefined;
82
+ strategy: PipelineStrategy;
83
+ status: "succeeded" | "failed" | "cancelled";
84
+ itemCount: number;
85
+ succeededCount: number;
86
+ failedCount: number;
87
+ cancelledCount: number;
88
+ skippedCount: number;
89
+ stageNames: string[];
90
+ durationMs: number;
91
+ artifactPath: string;
92
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pipeline/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { PipelineStage, NormalizedPipelineOptions } from "./types.js";
2
+ export declare const DEFAULT_PIPELINE_OPTIONS: {
3
+ readonly strategy: "item-streaming";
4
+ readonly preserveOrder: true;
5
+ readonly failFast: false;
6
+ };
7
+ export declare function validateAndNormalizePipelineArgs(items: unknown, stages: unknown, options?: unknown): {
8
+ normalizedItems: unknown[];
9
+ normalizedStages: PipelineStage[];
10
+ normalizedOptions: NormalizedPipelineOptions;
11
+ };
@@ -0,0 +1,139 @@
1
+ import { InvalidDslCallError } from "../workflow/errors.js";
2
+ import { assertValidPipelineStageName } from "./id.js";
3
+ export const DEFAULT_PIPELINE_OPTIONS = {
4
+ strategy: "item-streaming",
5
+ preserveOrder: true,
6
+ failFast: false
7
+ };
8
+ const ALLOWED_OPTION_KEYS = [
9
+ "label",
10
+ "strategy",
11
+ "concurrency",
12
+ "stageConcurrency",
13
+ "preserveOrder",
14
+ "failFast"
15
+ ];
16
+ export function validateAndNormalizePipelineArgs(items, stages, options) {
17
+ // 1. Validate items
18
+ if (!Array.isArray(items)) {
19
+ throw new InvalidDslCallError("pipeline() items must be an array.");
20
+ }
21
+ // 2. Validate stages
22
+ if (!Array.isArray(stages)) {
23
+ throw new InvalidDslCallError("pipeline() stages must be an array.");
24
+ }
25
+ if (stages.length === 0) {
26
+ throw new InvalidDslCallError("pipeline() stages cannot be empty.");
27
+ }
28
+ const normalizedStages = [];
29
+ const stageNames = new Set();
30
+ for (let i = 0; i < stages.length; i++) {
31
+ const stage = stages[i];
32
+ if (!stage || typeof stage !== "object") {
33
+ throw new InvalidDslCallError(`pipeline() stage at index ${i} must be an object.`);
34
+ }
35
+ const { name, run, concurrency, timeoutMs } = stage;
36
+ if (name === undefined) {
37
+ throw new InvalidDslCallError(`pipeline() stage at index ${i} is missing 'name'.`);
38
+ }
39
+ assertValidPipelineStageName(name);
40
+ if (stageNames.has(name)) {
41
+ throw new InvalidDslCallError(`pipeline() duplicate stage name detected: '${name}'.`);
42
+ }
43
+ stageNames.add(name);
44
+ if (run === undefined) {
45
+ throw new InvalidDslCallError(`pipeline() stage '${name}' is missing 'run' function.`);
46
+ }
47
+ if (typeof run !== "function") {
48
+ throw new InvalidDslCallError(`pipeline() stage '${name}' 'run' must be a function.`);
49
+ }
50
+ if (concurrency !== undefined) {
51
+ if (typeof concurrency !== "number" || concurrency <= 0 || !Number.isInteger(concurrency)) {
52
+ throw new InvalidDslCallError(`pipeline() stage '${name}' concurrency must be a positive integer.`);
53
+ }
54
+ }
55
+ if (timeoutMs !== undefined) {
56
+ if (typeof timeoutMs !== "number" || timeoutMs <= 0 || isNaN(timeoutMs)) {
57
+ throw new InvalidDslCallError(`pipeline() stage '${name}' timeoutMs must be a positive number.`);
58
+ }
59
+ }
60
+ normalizedStages.push({
61
+ name,
62
+ run,
63
+ ...(concurrency !== undefined ? { concurrency } : {}),
64
+ ...(timeoutMs !== undefined ? { timeoutMs } : {})
65
+ });
66
+ }
67
+ // 3. Validate options
68
+ let normalizedOptions = {
69
+ strategy: DEFAULT_PIPELINE_OPTIONS.strategy,
70
+ preserveOrder: DEFAULT_PIPELINE_OPTIONS.preserveOrder,
71
+ failFast: DEFAULT_PIPELINE_OPTIONS.failFast,
72
+ stageConcurrency: {}
73
+ };
74
+ if (options !== undefined) {
75
+ if (!options || typeof options !== "object" || Array.isArray(options)) {
76
+ throw new InvalidDslCallError("pipeline() options must be an object.");
77
+ }
78
+ // Check unsupported keys
79
+ const optionKeys = Object.keys(options);
80
+ for (const key of optionKeys) {
81
+ if (!ALLOWED_OPTION_KEYS.includes(key)) {
82
+ throw new InvalidDslCallError(`pipeline() options contain unsupported key '${key}'.`);
83
+ }
84
+ }
85
+ const opts = options;
86
+ if (opts.label !== undefined) {
87
+ if (typeof opts.label !== "string" || opts.label.trim() === "") {
88
+ throw new InvalidDslCallError("pipeline() options label must be a non-empty string.");
89
+ }
90
+ normalizedOptions.label = opts.label;
91
+ }
92
+ if (opts.strategy !== undefined) {
93
+ if (opts.strategy !== "item-streaming" && opts.strategy !== "stage-barrier") {
94
+ throw new InvalidDslCallError(`pipeline() options strategy must be 'item-streaming' or 'stage-barrier'.`);
95
+ }
96
+ normalizedOptions.strategy = opts.strategy;
97
+ }
98
+ if (opts.concurrency !== undefined) {
99
+ if (typeof opts.concurrency !== "number" || opts.concurrency <= 0 || !Number.isInteger(opts.concurrency)) {
100
+ throw new InvalidDslCallError("pipeline() options concurrency must be a positive integer.");
101
+ }
102
+ normalizedOptions.concurrency = opts.concurrency;
103
+ }
104
+ if (opts.preserveOrder !== undefined) {
105
+ if (typeof opts.preserveOrder !== "boolean") {
106
+ throw new InvalidDslCallError("pipeline() options preserveOrder must be a boolean.");
107
+ }
108
+ normalizedOptions.preserveOrder = opts.preserveOrder;
109
+ }
110
+ if (opts.failFast !== undefined) {
111
+ if (typeof opts.failFast !== "boolean") {
112
+ throw new InvalidDslCallError("pipeline() options failFast must be a boolean.");
113
+ }
114
+ normalizedOptions.failFast = opts.failFast;
115
+ }
116
+ if (opts.stageConcurrency !== undefined) {
117
+ if (!opts.stageConcurrency || typeof opts.stageConcurrency !== "object" || Array.isArray(opts.stageConcurrency)) {
118
+ throw new InvalidDslCallError("pipeline() options stageConcurrency must be an object.");
119
+ }
120
+ const stageConcurrencyKeys = Object.keys(opts.stageConcurrency);
121
+ for (const stageName of stageConcurrencyKeys) {
122
+ if (!stageNames.has(stageName)) {
123
+ throw new InvalidDslCallError(`pipeline() options stageConcurrency contains unknown stage name '${stageName}'.`);
124
+ }
125
+ const val = opts.stageConcurrency[stageName];
126
+ if (typeof val !== "number" || val <= 0 || !Number.isInteger(val)) {
127
+ throw new InvalidDslCallError(`pipeline() options stageConcurrency for stage '${stageName}' must be a positive integer.`);
128
+ }
129
+ normalizedOptions.stageConcurrency[stageName] = val;
130
+ }
131
+ }
132
+ }
133
+ return {
134
+ normalizedItems: items,
135
+ normalizedStages,
136
+ normalizedOptions
137
+ };
138
+ }
139
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/pipeline/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "../types/index.js";
2
+ export { defineTool, isDefinedTool } from "../tools/index.js";
3
+ export * from "../workflow/runtime.js";
@@ -0,0 +1,4 @@
1
+ export * from "../types/index.js";
2
+ export { defineTool, isDefinedTool } from "../tools/index.js";
3
+ export * from "../workflow/runtime.js";
4
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/runtime/public.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9D,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { ProviderCommand } from "../types/agent.js";
2
+ export declare const DEFAULT_REDACT_PATTERNS: string[];
3
+ export declare function shouldRedactEnvName(name: string, patterns?: string[]): boolean;
4
+ export declare function buildProviderEnv(input: {
5
+ baseEnv: NodeJS.ProcessEnv;
6
+ passEnv: string[];
7
+ explicitEnv?: Record<string, string>;
8
+ }): Record<string, string>;
9
+ export declare function redactText(input: string, secretValues: string[]): string;
10
+ /**
11
+ * Stateful redactor for streaming text.
12
+ * Ensures secrets split across chunks are correctly identified and redacted.
13
+ */
14
+ export declare class StreamRedactor {
15
+ private buffer;
16
+ private readonly secrets;
17
+ private readonly maxSecretLen;
18
+ constructor(secretValues: string[]);
19
+ /**
20
+ * Processes a new chunk of text and returns the redacted part that is safe to output.
21
+ */
22
+ process(chunk: string): string;
23
+ /**
24
+ * Flushes any remaining text in the buffer, redacting it one last time.
25
+ */
26
+ flush(): string;
27
+ }
28
+ export declare function collectSecretValues(baseEnv: NodeJS.ProcessEnv, patterns?: string[]): string[];
29
+ /**
30
+ * Redacts string values inside a JSON-like structure.
31
+ * Accepts JSON-like values only; must not contain circular references.
32
+ */
33
+ export declare function redactJsonValue(value: unknown, secretValues: string[]): unknown;
34
+ export declare function redactProviderCommand(command: ProviderCommand, secretValues: string[]): ProviderCommand;
35
+ export declare function redactSerializedError<T extends {
36
+ message?: string;
37
+ stack?: string;
38
+ }>(error: T, secretValues: string[]): T;
@@ -0,0 +1,186 @@
1
+ export const DEFAULT_REDACT_PATTERNS = [
2
+ "*_KEY",
3
+ "*_TOKEN",
4
+ "*_SECRET",
5
+ "PASSWORD",
6
+ "OPENAI_API_KEY",
7
+ "GEMINI_API_KEY",
8
+ "GOOGLE_API_KEY"
9
+ ];
10
+ export function shouldRedactEnvName(name, patterns = DEFAULT_REDACT_PATTERNS) {
11
+ const upperName = name.toUpperCase();
12
+ for (const pattern of patterns) {
13
+ const upperPattern = pattern.toUpperCase();
14
+ if (upperPattern.startsWith("*") && upperPattern.endsWith("*")) {
15
+ const core = upperPattern.slice(1, -1);
16
+ if (upperName.includes(core))
17
+ return true;
18
+ }
19
+ else if (upperPattern.startsWith("*")) {
20
+ const suffix = upperPattern.slice(1);
21
+ if (upperName.endsWith(suffix))
22
+ return true;
23
+ }
24
+ else if (upperPattern.endsWith("*")) {
25
+ const prefix = upperPattern.slice(0, -1);
26
+ if (upperName.startsWith(prefix))
27
+ return true;
28
+ }
29
+ else {
30
+ if (upperName === upperPattern)
31
+ return true;
32
+ }
33
+ }
34
+ return false;
35
+ }
36
+ export function buildProviderEnv(input) {
37
+ const env = {};
38
+ const systemKeys = ["PATH", "HOME", "USER", "LANG", "TERM", "SYSTEMROOT", "WINDIR"];
39
+ const allAllowedKeys = new Set([
40
+ ...systemKeys.map((k) => k.toUpperCase()),
41
+ ...input.passEnv.map((k) => k.toUpperCase())
42
+ ]);
43
+ for (const [key, value] of Object.entries(input.baseEnv)) {
44
+ if (value !== undefined && allAllowedKeys.has(key.toUpperCase())) {
45
+ env[key] = value;
46
+ }
47
+ }
48
+ if (input.explicitEnv) {
49
+ for (const [key, value] of Object.entries(input.explicitEnv)) {
50
+ env[key] = value;
51
+ }
52
+ }
53
+ return env;
54
+ }
55
+ export function redactText(input, secretValues) {
56
+ if (!input)
57
+ return input;
58
+ let redacted = input;
59
+ const validSecrets = secretValues
60
+ .map((s) => s.trim())
61
+ .filter((s) => s.length >= 4);
62
+ // Sort by length descending to ensure longer secrets are redacted first
63
+ const sortedSecrets = [...new Set(validSecrets)].sort((a, b) => b.length - a.length);
64
+ for (const secret of sortedSecrets) {
65
+ const escaped = secret.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
66
+ const regex = new RegExp(escaped, "g");
67
+ redacted = redacted.replace(regex, "[REDACTED]");
68
+ }
69
+ return redacted;
70
+ }
71
+ /**
72
+ * Stateful redactor for streaming text.
73
+ * Ensures secrets split across chunks are correctly identified and redacted.
74
+ */
75
+ export class StreamRedactor {
76
+ buffer = "";
77
+ secrets;
78
+ maxSecretLen;
79
+ constructor(secretValues) {
80
+ this.secrets = [...new Set(secretValues.map((s) => s.trim()).filter((s) => s.length >= 4))]
81
+ .sort((a, b) => b.length - a.length);
82
+ this.maxSecretLen = this.secrets.length > 0 ? Math.max(...this.secrets.map((s) => s.length)) : 0;
83
+ }
84
+ /**
85
+ * Processes a new chunk of text and returns the redacted part that is safe to output.
86
+ */
87
+ process(chunk) {
88
+ if (this.maxSecretLen === 0)
89
+ return chunk;
90
+ this.buffer += chunk;
91
+ let out = "";
92
+ // We keep at least maxSecretLen characters in the buffer to ensure we can
93
+ // identify any secret that might be starting or ending in this context.
94
+ while (this.buffer.length > this.maxSecretLen) {
95
+ // Use the existing redactText to see what the buffer looks like when redacted
96
+ const redacted = redactText(this.buffer, this.secrets);
97
+ if (redacted.startsWith("[REDACTED]")) {
98
+ // A secret was found at the very beginning of our buffer.
99
+ // We need to figure out which one it was so we can consume it from the original buffer.
100
+ let matchedSecretLen = 0;
101
+ for (const secret of this.secrets) {
102
+ if (this.buffer.startsWith(secret)) {
103
+ matchedSecretLen = secret.length;
104
+ break;
105
+ }
106
+ }
107
+ if (matchedSecretLen > 0) {
108
+ out += "[REDACTED]";
109
+ this.buffer = this.buffer.slice(matchedSecretLen);
110
+ continue;
111
+ }
112
+ }
113
+ // If no secret matched at the beginning, the first character is safe to output
114
+ // because we have at least maxSecretLen context following it.
115
+ out += this.buffer[0];
116
+ this.buffer = this.buffer.slice(1);
117
+ }
118
+ return out;
119
+ }
120
+ /**
121
+ * Flushes any remaining text in the buffer, redacting it one last time.
122
+ */
123
+ flush() {
124
+ if (!this.buffer)
125
+ return "";
126
+ const redacted = redactText(this.buffer, this.secrets);
127
+ this.buffer = "";
128
+ return redacted;
129
+ }
130
+ }
131
+ export function collectSecretValues(baseEnv, patterns = DEFAULT_REDACT_PATTERNS) {
132
+ const values = [];
133
+ for (const [key, value] of Object.entries(baseEnv)) {
134
+ if (value && shouldRedactEnvName(key, patterns)) {
135
+ values.push(value);
136
+ }
137
+ }
138
+ return values;
139
+ }
140
+ /**
141
+ * Redacts string values inside a JSON-like structure.
142
+ * Accepts JSON-like values only; must not contain circular references.
143
+ */
144
+ export function redactJsonValue(value, secretValues) {
145
+ if (typeof value === "string") {
146
+ return redactText(value, secretValues);
147
+ }
148
+ if (Array.isArray(value)) {
149
+ return value.map((v) => redactJsonValue(v, secretValues));
150
+ }
151
+ if (value !== null && typeof value === "object") {
152
+ const redacted = {};
153
+ for (const [key, val] of Object.entries(value)) {
154
+ redacted[key] = redactJsonValue(val, secretValues);
155
+ }
156
+ return redacted;
157
+ }
158
+ return value;
159
+ }
160
+ export function redactProviderCommand(command, secretValues) {
161
+ const redacted = {
162
+ ...command,
163
+ command: redactText(command.command, secretValues),
164
+ args: command.args.map((arg) => redactText(arg, secretValues)),
165
+ stdin: command.stdin ? redactText(command.stdin, secretValues) : command.stdin,
166
+ };
167
+ if (command.env) {
168
+ const env = {};
169
+ for (const [key, value] of Object.entries(command.env)) {
170
+ env[key] = redactText(value, secretValues);
171
+ }
172
+ redacted.env = env;
173
+ }
174
+ else {
175
+ redacted.env = undefined;
176
+ }
177
+ return redacted;
178
+ }
179
+ export function redactSerializedError(error, secretValues) {
180
+ return {
181
+ ...error,
182
+ message: error.message ? redactText(error.message, secretValues) : error.message,
183
+ stack: error.stack ? redactText(error.stack, secretValues) : error.stack
184
+ };
185
+ }
186
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/security/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Sanitizes metadata for external exposure in events, reports, and artifacts.
3
+ * This prevents sensitive data or excessive volume from leaking while preserving
4
+ * essential shared-agent and pipeline context.
5
+ */
6
+ export declare function sanitizeMetadata(metadata?: Record<string, any>): Record<string, any>;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Sanitizes metadata for external exposure in events, reports, and artifacts.
3
+ * This prevents sensitive data or excessive volume from leaking while preserving
4
+ * essential shared-agent and pipeline context.
5
+ */
6
+ export function sanitizeMetadata(metadata) {
7
+ if (!metadata || typeof metadata !== "object") {
8
+ return {};
9
+ }
10
+ const safeFields = new Set([
11
+ "sharedAgentId",
12
+ "sharedAgentSource",
13
+ "pipelineId",
14
+ "pipelineLabel",
15
+ "itemIndex",
16
+ "stageIndex",
17
+ "stageName",
18
+ "modelResolutionSource",
19
+ ]);
20
+ const MAX_STRING_LENGTH = 256;
21
+ const sanitized = {};
22
+ for (const [key, value] of Object.entries(metadata)) {
23
+ if (!safeFields.has(key)) {
24
+ continue;
25
+ }
26
+ if (typeof value === "string") {
27
+ sanitized[key] = value.length > MAX_STRING_LENGTH
28
+ ? value.substring(0, MAX_STRING_LENGTH) + "..."
29
+ : value;
30
+ }
31
+ else if (typeof value === "boolean") {
32
+ sanitized[key] = value;
33
+ }
34
+ else if (typeof value === "number" && Number.isFinite(value)) {
35
+ sanitized[key] = value;
36
+ }
37
+ // Objects and arrays are dropped as per requirements
38
+ }
39
+ return sanitized;
40
+ }
41
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/security/metadata.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA8B;IAC7D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;QACzB,eAAe;QACf,mBAAmB;QACnB,YAAY;QACZ,eAAe;QACf,WAAW;QACX,YAAY;QACZ,WAAW;QACX,uBAAuB;KACxB,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,GAAG,CAAC;IAC9B,MAAM,SAAS,GAAwB,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,iBAAiB;gBAC/C,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,KAAK;gBAC/C,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YACtC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/D,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;QACD,qDAAqD;IACvD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { SharedAgentDefinition } from "./types.js";
2
+ export declare function normalizeSharedAgentContext(definition: SharedAgentDefinition, context: unknown): Record<string, unknown>;
@@ -0,0 +1,5 @@
1
+ import { validateSharedAgentInput } from "./validate.js";
2
+ export function normalizeSharedAgentContext(definition, context) {
3
+ return validateSharedAgentInput(definition, context);
4
+ }
5
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/shared-agents/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAGzD,MAAM,UAAU,2BAA2B,CACzC,UAAiC,EACjC,OAAgB;IAEhB,OAAO,wBAAwB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SharedAgentDefinition } from "./types.js";
2
+ export declare function defineAgent<T extends SharedAgentDefinition>(definition: T): T;
3
+ export declare function isDefinedSharedAgent(value: unknown): value is SharedAgentDefinition;
@@ -0,0 +1,15 @@
1
+ const SHARED_AGENT_MARKER = Symbol.for("open-dynamic-workflow.sharedAgentDefinition");
2
+ export function defineAgent(definition) {
3
+ Object.defineProperty(definition, SHARED_AGENT_MARKER, {
4
+ value: true,
5
+ enumerable: false,
6
+ configurable: false
7
+ });
8
+ return definition;
9
+ }
10
+ export function isDefinedSharedAgent(value) {
11
+ return !!value &&
12
+ typeof value === "object" &&
13
+ value[SHARED_AGENT_MARKER] === true;
14
+ }
15
+ //# sourceMappingURL=define-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-agent.js","sourceRoot":"","sources":["../../src/shared-agents/define-agent.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;AAEtF,MAAM,UAAU,WAAW,CAAkC,UAAa;IACxE,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE;QACrD,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CAAC,CAAC,KAAK;QACZ,OAAO,KAAK,KAAK,QAAQ;QACxB,KAAiC,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;AACrE,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { DirectAgentCallInput, AgentResult } from "../types/agent.js";
2
+ import type { ResolvedConfig } from "../types/config.js";
3
+ import type { SharedAgentRegistry } from "./registry.js";
4
+ import type { SharedAgentPipelineMetadata } from "./types.js";
5
+ export interface ExecuteSharedAgentInput {
6
+ sharedAgentId: string;
7
+ context?: unknown;
8
+ origin: "workflow" | "pipeline-stage";
9
+ pipeline?: SharedAgentPipelineMetadata | undefined;
10
+ }
11
+ export interface ExecuteSharedAgentDeps {
12
+ registry: SharedAgentRegistry;
13
+ config: ResolvedConfig;
14
+ runId: string;
15
+ cwd: string;
16
+ signal: AbortSignal;
17
+ agent(input: DirectAgentCallInput): Promise<AgentResult>;
18
+ log(message: string, data?: unknown): void;
19
+ artifactsDir: string;
20
+ }
21
+ /**
22
+ * Executes a shared agent by resolving it, validating context, and executing its run() method.
23
+ */
24
+ export declare function executeSharedAgent(input: ExecuteSharedAgentInput, deps: ExecuteSharedAgentDeps): Promise<AgentResult>;