@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.
- package/CHANGELOG.md +20 -0
- package/LICENSE +21 -0
- package/README.md +312 -0
- package/dist/agents/antigravity-cli.d.ts +19 -0
- package/dist/agents/antigravity-cli.js +177 -0
- package/dist/agents/antigravity-cli.js.map +1 -0
- package/dist/agents/codex-exec.d.ts +12 -0
- package/dist/agents/codex-exec.js +283 -0
- package/dist/agents/codex-exec.js.map +1 -0
- package/dist/agents/execute-agent.d.ts +21 -0
- package/dist/agents/execute-agent.js +593 -0
- package/dist/agents/execute-agent.js.map +1 -0
- package/dist/agents/execution-types.d.ts +20 -0
- package/dist/agents/execution-types.js +2 -0
- package/dist/agents/execution-types.js.map +1 -0
- package/dist/agents/gemini-cli.d.ts +14 -0
- package/dist/agents/gemini-cli.js +176 -0
- package/dist/agents/gemini-cli.js.map +1 -0
- package/dist/agents/github-copilot-cli.d.ts +16 -0
- package/dist/agents/github-copilot-cli.js +256 -0
- package/dist/agents/github-copilot-cli.js.map +1 -0
- package/dist/agents/mock-adapter.d.ts +12 -0
- package/dist/agents/mock-adapter.js +66 -0
- package/dist/agents/mock-adapter.js.map +1 -0
- package/dist/agents/model-args.d.ts +2 -0
- package/dist/agents/model-args.js +15 -0
- package/dist/agents/model-args.js.map +1 -0
- package/dist/agents/opencode-cli.d.ts +22 -0
- package/dist/agents/opencode-cli.js +245 -0
- package/dist/agents/opencode-cli.js.map +1 -0
- package/dist/agents/pi-coding-agent.d.ts +31 -0
- package/dist/agents/pi-coding-agent.js +317 -0
- package/dist/agents/pi-coding-agent.js.map +1 -0
- package/dist/agents/process-runner.d.ts +2 -0
- package/dist/agents/process-runner.js +130 -0
- package/dist/agents/process-runner.js.map +1 -0
- package/dist/agents/provider-health.d.ts +3 -0
- package/dist/agents/provider-health.js +30 -0
- package/dist/agents/provider-health.js.map +1 -0
- package/dist/agents/registry.d.ts +12 -0
- package/dist/agents/registry.js +45 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/resolve-model.d.ts +11 -0
- package/dist/agents/resolve-model.js +30 -0
- package/dist/agents/resolve-model.js.map +1 -0
- package/dist/agents/types.d.ts +2 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/artifacts/call-cache.d.ts +117 -0
- package/dist/artifacts/call-cache.js +449 -0
- package/dist/artifacts/call-cache.js.map +1 -0
- package/dist/artifacts/logs.d.ts +13 -0
- package/dist/artifacts/logs.js +24 -0
- package/dist/artifacts/logs.js.map +1 -0
- package/dist/artifacts/manifest.d.ts +18 -0
- package/dist/artifacts/manifest.js +29 -0
- package/dist/artifacts/manifest.js.map +1 -0
- package/dist/artifacts/run-store.d.ts +22 -0
- package/dist/artifacts/run-store.js +148 -0
- package/dist/artifacts/run-store.js.map +1 -0
- package/dist/bin/open-dynamic-workflow.d.ts +2 -0
- package/dist/bin/open-dynamic-workflow.js +45 -0
- package/dist/bin/open-dynamic-workflow.js.map +1 -0
- package/dist/cli/args.d.ts +36 -0
- package/dist/cli/args.js +68 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +9 -0
- package/dist/cli/commands/doctor.js +109 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +23 -0
- package/dist/cli/commands/init.js +147 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list.d.ts +12 -0
- package/dist/cli/commands/list.js +65 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/resume.d.ts +5 -0
- package/dist/cli/commands/resume.js +81 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/run.d.ts +18 -0
- package/dist/cli/commands/run.js +318 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +14 -0
- package/dist/cli/commands/validate.js +66 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +169 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init/defaults.d.ts +12 -0
- package/dist/cli/init/defaults.js +54 -0
- package/dist/cli/init/defaults.js.map +1 -0
- package/dist/cli/init/planner.d.ts +10 -0
- package/dist/cli/init/planner.js +163 -0
- package/dist/cli/init/planner.js.map +1 -0
- package/dist/cli/init/prompts.d.ts +15 -0
- package/dist/cli/init/prompts.js +83 -0
- package/dist/cli/init/prompts.js.map +1 -0
- package/dist/cli/init/providers.d.ts +13 -0
- package/dist/cli/init/providers.js +100 -0
- package/dist/cli/init/providers.js.map +1 -0
- package/dist/cli/init/renderer.d.ts +8 -0
- package/dist/cli/init/renderer.js +84 -0
- package/dist/cli/init/renderer.js.map +1 -0
- package/dist/cli/init/smoke-test.d.ts +15 -0
- package/dist/cli/init/smoke-test.js +47 -0
- package/dist/cli/init/smoke-test.js.map +1 -0
- package/dist/cli/init/summary.d.ts +11 -0
- package/dist/cli/init/summary.js +65 -0
- package/dist/cli/init/summary.js.map +1 -0
- package/dist/cli/init/types.d.ts +81 -0
- package/dist/cli/init/types.js +2 -0
- package/dist/cli/init/types.js.map +1 -0
- package/dist/cli/init/writer.d.ts +3 -0
- package/dist/cli/init/writer.js +57 -0
- package/dist/cli/init/writer.js.map +1 -0
- package/dist/cli/package-info.d.ts +1 -0
- package/dist/cli/package-info.js +13 -0
- package/dist/cli/package-info.js.map +1 -0
- package/dist/cli/paths.d.ts +2 -0
- package/dist/cli/paths.js +8 -0
- package/dist/cli/paths.js.map +1 -0
- package/dist/cli/print.d.ts +22 -0
- package/dist/cli/print.js +48 -0
- package/dist/cli/print.js.map +1 -0
- package/dist/config/defaults.d.ts +3 -0
- package/dist/config/defaults.js +116 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/load.d.ts +10 -0
- package/dist/config/load.js +72 -0
- package/dist/config/load.js.map +1 -0
- package/dist/config/merge.d.ts +10 -0
- package/dist/config/merge.js +58 -0
- package/dist/config/merge.js.map +1 -0
- package/dist/config/schema.d.ts +2 -0
- package/dist/config/schema.js +236 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/types.d.ts +93 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/discovery/collect-files.d.ts +10 -0
- package/dist/discovery/collect-files.js +189 -0
- package/dist/discovery/collect-files.js.map +1 -0
- package/dist/discovery/definition-call.d.ts +10 -0
- package/dist/discovery/definition-call.js +37 -0
- package/dist/discovery/definition-call.js.map +1 -0
- package/dist/discovery/diagnostics.d.ts +17 -0
- package/dist/discovery/diagnostics.js +32 -0
- package/dist/discovery/diagnostics.js.map +1 -0
- package/dist/discovery/directories.d.ts +8 -0
- package/dist/discovery/directories.js +32 -0
- package/dist/discovery/directories.js.map +1 -0
- package/dist/discovery/duplicate-detector.d.ts +8 -0
- package/dist/discovery/duplicate-detector.js +40 -0
- package/dist/discovery/duplicate-detector.js.map +1 -0
- package/dist/discovery/extract-agent.d.ts +2 -0
- package/dist/discovery/extract-agent.js +166 -0
- package/dist/discovery/extract-agent.js.map +1 -0
- package/dist/discovery/extract-tool.d.ts +2 -0
- package/dist/discovery/extract-tool.js +188 -0
- package/dist/discovery/extract-tool.js.map +1 -0
- package/dist/discovery/extract-workflow.d.ts +2 -0
- package/dist/discovery/extract-workflow.js +180 -0
- package/dist/discovery/extract-workflow.js.map +1 -0
- package/dist/discovery/file-patterns.d.ts +3 -0
- package/dist/discovery/file-patterns.js +93 -0
- package/dist/discovery/file-patterns.js.map +1 -0
- package/dist/discovery/index.d.ts +7 -0
- package/dist/discovery/index.js +8 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/schema-summary.d.ts +13 -0
- package/dist/discovery/schema-summary.js +37 -0
- package/dist/discovery/schema-summary.js.map +1 -0
- package/dist/discovery/service.d.ts +4 -0
- package/dist/discovery/service.js +135 -0
- package/dist/discovery/service.js.map +1 -0
- package/dist/discovery/static-values.d.ts +13 -0
- package/dist/discovery/static-values.js +68 -0
- package/dist/discovery/static-values.js.map +1 -0
- package/dist/discovery/types.d.ts +95 -0
- package/dist/discovery/types.js +2 -0
- package/dist/discovery/types.js.map +1 -0
- package/dist/doctors/public.d.ts +15 -0
- package/dist/doctors/public.js +2 -0
- package/dist/doctors/public.js.map +1 -0
- package/dist/errors/codes.d.ts +53 -0
- package/dist/errors/codes.js +53 -0
- package/dist/errors/codes.js.map +1 -0
- package/dist/errors/exit-codes.d.ts +13 -0
- package/dist/errors/exit-codes.js +72 -0
- package/dist/errors/exit-codes.js.map +1 -0
- package/dist/errors/list-errors.d.ts +4 -0
- package/dist/errors/list-errors.js +11 -0
- package/dist/errors/list-errors.js.map +1 -0
- package/dist/errors/serialize.d.ts +2 -0
- package/dist/errors/serialize.js +38 -0
- package/dist/errors/serialize.js.map +1 -0
- package/dist/errors/types.d.ts +15 -0
- package/dist/errors/types.js +13 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestration/cancellation.d.ts +13 -0
- package/dist/orchestration/cancellation.js +41 -0
- package/dist/orchestration/cancellation.js.map +1 -0
- package/dist/orchestration/event-bus.d.ts +24 -0
- package/dist/orchestration/event-bus.js +50 -0
- package/dist/orchestration/event-bus.js.map +1 -0
- package/dist/orchestration/fail-fast.d.ts +8 -0
- package/dist/orchestration/fail-fast.js +21 -0
- package/dist/orchestration/fail-fast.js.map +1 -0
- package/dist/orchestration/scheduler.d.ts +37 -0
- package/dist/orchestration/scheduler.js +330 -0
- package/dist/orchestration/scheduler.js.map +1 -0
- package/dist/orchestration/tool-limiter.d.ts +10 -0
- package/dist/orchestration/tool-limiter.js +62 -0
- package/dist/orchestration/tool-limiter.js.map +1 -0
- package/dist/output/events.d.ts +290 -0
- package/dist/output/events.js +10 -0
- package/dist/output/events.js.map +1 -0
- package/dist/output/failed-artifacts.d.ts +5 -0
- package/dist/output/failed-artifacts.js +62 -0
- package/dist/output/failed-artifacts.js.map +1 -0
- package/dist/output/json-reporter.d.ts +13 -0
- package/dist/output/json-reporter.js +31 -0
- package/dist/output/json-reporter.js.map +1 -0
- package/dist/output/jsonl-reporter.d.ts +12 -0
- package/dist/output/jsonl-reporter.js +29 -0
- package/dist/output/jsonl-reporter.js.map +1 -0
- package/dist/output/list-json-reporter.d.ts +9 -0
- package/dist/output/list-json-reporter.js +22 -0
- package/dist/output/list-json-reporter.js.map +1 -0
- package/dist/output/list-jsonl-reporter.d.ts +9 -0
- package/dist/output/list-jsonl-reporter.js +43 -0
- package/dist/output/list-jsonl-reporter.js.map +1 -0
- package/dist/output/list-pretty-reporter.d.ts +13 -0
- package/dist/output/list-pretty-reporter.js +120 -0
- package/dist/output/list-pretty-reporter.js.map +1 -0
- package/dist/output/list-reporter.d.ts +14 -0
- package/dist/output/list-reporter.js +20 -0
- package/dist/output/list-reporter.js.map +1 -0
- package/dist/output/pretty-format.d.ts +19 -0
- package/dist/output/pretty-format.js +75 -0
- package/dist/output/pretty-format.js.map +1 -0
- package/dist/output/pretty-renderer.d.ts +2 -0
- package/dist/output/pretty-renderer.js +97 -0
- package/dist/output/pretty-renderer.js.map +1 -0
- package/dist/output/pretty-reporter.d.ts +14 -0
- package/dist/output/pretty-reporter.js +155 -0
- package/dist/output/pretty-reporter.js.map +1 -0
- package/dist/output/pretty-view-builder.d.ts +26 -0
- package/dist/output/pretty-view-builder.js +374 -0
- package/dist/output/pretty-view-builder.js.map +1 -0
- package/dist/output/pretty-view.d.ts +85 -0
- package/dist/output/pretty-view.js +6 -0
- package/dist/output/pretty-view.js.map +1 -0
- package/dist/output/reporter.d.ts +34 -0
- package/dist/output/reporter.js +24 -0
- package/dist/output/reporter.js.map +1 -0
- package/dist/output/verbose-formatter.d.ts +6 -0
- package/dist/output/verbose-formatter.js +137 -0
- package/dist/output/verbose-formatter.js.map +1 -0
- package/dist/pipeline/artifacts.d.ts +6 -0
- package/dist/pipeline/artifacts.js +44 -0
- package/dist/pipeline/artifacts.js.map +1 -0
- package/dist/pipeline/concurrency.d.ts +11 -0
- package/dist/pipeline/concurrency.js +60 -0
- package/dist/pipeline/concurrency.js.map +1 -0
- package/dist/pipeline/context.d.ts +15 -0
- package/dist/pipeline/context.js +17 -0
- package/dist/pipeline/context.js.map +1 -0
- package/dist/pipeline/events.d.ts +10 -0
- package/dist/pipeline/events.js +83 -0
- package/dist/pipeline/events.js.map +1 -0
- package/dist/pipeline/id.d.ts +10 -0
- package/dist/pipeline/id.js +61 -0
- package/dist/pipeline/id.js.map +1 -0
- package/dist/pipeline/item-streaming.d.ts +3 -0
- package/dist/pipeline/item-streaming.js +122 -0
- package/dist/pipeline/item-streaming.js.map +1 -0
- package/dist/pipeline/results.d.ts +10 -0
- package/dist/pipeline/results.js +88 -0
- package/dist/pipeline/results.js.map +1 -0
- package/dist/pipeline/run.d.ts +10 -0
- package/dist/pipeline/run.js +93 -0
- package/dist/pipeline/run.js.map +1 -0
- package/dist/pipeline/stage-barrier.d.ts +3 -0
- package/dist/pipeline/stage-barrier.js +135 -0
- package/dist/pipeline/stage-barrier.js.map +1 -0
- package/dist/pipeline/stage-runner.d.ts +13 -0
- package/dist/pipeline/stage-runner.js +185 -0
- package/dist/pipeline/stage-runner.js.map +1 -0
- package/dist/pipeline/summary.d.ts +12 -0
- package/dist/pipeline/summary.js +24 -0
- package/dist/pipeline/summary.js.map +1 -0
- package/dist/pipeline/types.d.ts +92 -0
- package/dist/pipeline/types.js +2 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/pipeline/validate.d.ts +11 -0
- package/dist/pipeline/validate.js +139 -0
- package/dist/pipeline/validate.js.map +1 -0
- package/dist/runtime/public.d.ts +3 -0
- package/dist/runtime/public.js +4 -0
- package/dist/runtime/public.js.map +1 -0
- package/dist/security/env.d.ts +38 -0
- package/dist/security/env.js +186 -0
- package/dist/security/env.js.map +1 -0
- package/dist/security/metadata.d.ts +6 -0
- package/dist/security/metadata.js +41 -0
- package/dist/security/metadata.js.map +1 -0
- package/dist/shared-agents/context.d.ts +2 -0
- package/dist/shared-agents/context.js +5 -0
- package/dist/shared-agents/context.js.map +1 -0
- package/dist/shared-agents/define-agent.d.ts +3 -0
- package/dist/shared-agents/define-agent.js +15 -0
- package/dist/shared-agents/define-agent.js.map +1 -0
- package/dist/shared-agents/execute.d.ts +24 -0
- package/dist/shared-agents/execute.js +63 -0
- package/dist/shared-agents/execute.js.map +1 -0
- package/dist/shared-agents/index.d.ts +5 -0
- package/dist/shared-agents/index.js +6 -0
- package/dist/shared-agents/index.js.map +1 -0
- package/dist/shared-agents/load.d.ts +8 -0
- package/dist/shared-agents/load.js +141 -0
- package/dist/shared-agents/load.js.map +1 -0
- package/dist/shared-agents/registry.d.ts +8 -0
- package/dist/shared-agents/registry.js +25 -0
- package/dist/shared-agents/registry.js.map +1 -0
- package/dist/shared-agents/render.d.ts +11 -0
- package/dist/shared-agents/render.js +31 -0
- package/dist/shared-agents/render.js.map +1 -0
- package/dist/shared-agents/resolver.d.ts +7 -0
- package/dist/shared-agents/resolver.js +22 -0
- package/dist/shared-agents/resolver.js.map +1 -0
- package/dist/shared-agents/types.d.ts +33 -0
- package/dist/shared-agents/types.js +2 -0
- package/dist/shared-agents/types.js.map +1 -0
- package/dist/shared-agents/validate.d.ts +7 -0
- package/dist/shared-agents/validate.js +223 -0
- package/dist/shared-agents/validate.js.map +1 -0
- package/dist/structured/extract-json.d.ts +11 -0
- package/dist/structured/extract-json.js +79 -0
- package/dist/structured/extract-json.js.map +1 -0
- package/dist/structured/normalize-agent-output.d.ts +18 -0
- package/dist/structured/normalize-agent-output.js +89 -0
- package/dist/structured/normalize-agent-output.js.map +1 -0
- package/dist/structured/structured-output.d.ts +14 -0
- package/dist/structured/structured-output.js +51 -0
- package/dist/structured/structured-output.js.map +1 -0
- package/dist/structured/validate-json.d.ts +13 -0
- package/dist/structured/validate-json.js +32 -0
- package/dist/structured/validate-json.js.map +1 -0
- package/dist/tools/artifacts.d.ts +8 -0
- package/dist/tools/artifacts.js +31 -0
- package/dist/tools/artifacts.js.map +1 -0
- package/dist/tools/define-tool.d.ts +10 -0
- package/dist/tools/define-tool.js +24 -0
- package/dist/tools/define-tool.js.map +1 -0
- package/dist/tools/executor-types.d.ts +40 -0
- package/dist/tools/executor-types.js +2 -0
- package/dist/tools/executor-types.js.map +1 -0
- package/dist/tools/executor.d.ts +23 -0
- package/dist/tools/executor.js +455 -0
- package/dist/tools/executor.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/load.d.ts +7 -0
- package/dist/tools/load.js +133 -0
- package/dist/tools/load.js.map +1 -0
- package/dist/tools/registry.d.ts +9 -0
- package/dist/tools/registry.js +97 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/serialization.d.ts +11 -0
- package/dist/tools/serialization.js +68 -0
- package/dist/tools/serialization.js.map +1 -0
- package/dist/tools/validate.d.ts +18 -0
- package/dist/tools/validate.js +55 -0
- package/dist/tools/validate.js.map +1 -0
- package/dist/types/agent.d.ts +136 -0
- package/dist/types/agent.js +2 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/artifacts.d.ts +88 -0
- package/dist/types/artifacts.js +2 -0
- package/dist/types/artifacts.js.map +1 -0
- package/dist/types/common.d.ts +15 -0
- package/dist/types/common.js +2 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/config.d.ts +119 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/errors.d.ts +21 -0
- package/dist/types/errors.js +50 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/events.d.ts +4 -0
- package/dist/types/events.js +2 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/process.d.ts +20 -0
- package/dist/types/process.js +2 -0
- package/dist/types/process.js.map +1 -0
- package/dist/types/reporter.d.ts +1 -0
- package/dist/types/reporter.js +2 -0
- package/dist/types/reporter.js.map +1 -0
- package/dist/types/scheduler.d.ts +30 -0
- package/dist/types/scheduler.js +2 -0
- package/dist/types/scheduler.js.map +1 -0
- package/dist/types/tool.d.ts +129 -0
- package/dist/types/tool.js +2 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/types/workflow.d.ts +127 -0
- package/dist/types/workflow.js +2 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/workflow/discovery.d.ts +15 -0
- package/dist/workflow/discovery.js +134 -0
- package/dist/workflow/discovery.js.map +1 -0
- package/dist/workflow/dsl.d.ts +13 -0
- package/dist/workflow/dsl.js +683 -0
- package/dist/workflow/dsl.js.map +1 -0
- package/dist/workflow/errors.d.ts +18 -0
- package/dist/workflow/errors.js +33 -0
- package/dist/workflow/errors.js.map +1 -0
- package/dist/workflow/invocation-artifacts.d.ts +42 -0
- package/dist/workflow/invocation-artifacts.js +114 -0
- package/dist/workflow/invocation-artifacts.js.map +1 -0
- package/dist/workflow/invocation-manager.d.ts +31 -0
- package/dist/workflow/invocation-manager.js +516 -0
- package/dist/workflow/invocation-manager.js.map +1 -0
- package/dist/workflow/invocation-types.d.ts +63 -0
- package/dist/workflow/invocation-types.js +15 -0
- package/dist/workflow/invocation-types.js.map +1 -0
- package/dist/workflow/json.d.ts +10 -0
- package/dist/workflow/json.js +117 -0
- package/dist/workflow/json.js.map +1 -0
- package/dist/workflow/load.d.ts +2 -0
- package/dist/workflow/load.js +18 -0
- package/dist/workflow/load.js.map +1 -0
- package/dist/workflow/parse.d.ts +2 -0
- package/dist/workflow/parse.js +135 -0
- package/dist/workflow/parse.js.map +1 -0
- package/dist/workflow/registry.d.ts +18 -0
- package/dist/workflow/registry.js +55 -0
- package/dist/workflow/registry.js.map +1 -0
- package/dist/workflow/resolve-target.d.ts +45 -0
- package/dist/workflow/resolve-target.js +162 -0
- package/dist/workflow/resolve-target.js.map +1 -0
- package/dist/workflow/runtime.d.ts +46 -0
- package/dist/workflow/runtime.js +398 -0
- package/dist/workflow/runtime.js.map +1 -0
- package/dist/workflow/sandbox.d.ts +14 -0
- package/dist/workflow/sandbox.js +79 -0
- package/dist/workflow/sandbox.js.map +1 -0
- package/dist/workflow/scope.d.ts +18 -0
- package/dist/workflow/scope.js +108 -0
- package/dist/workflow/scope.js.map +1 -0
- package/dist/workflow/types.d.ts +65 -0
- package/dist/workflow/types.js +2 -0
- package/dist/workflow/types.js.map +1 -0
- package/dist/workflow/validate.d.ts +28 -0
- package/dist/workflow/validate.js +1059 -0
- package/dist/workflow/validate.js.map +1 -0
- package/dist/workflow/workflow-call.d.ts +12 -0
- package/dist/workflow/workflow-call.js +61 -0
- package/dist/workflow/workflow-call.js.map +1 -0
- package/package.json +67 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [0.3.0] - 2026-06-16
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **Shared Agents**: Introduce support for defining, validating, loading, and executing reusable shared agent definitions across workflows.
|
|
9
|
+
- **Child Workflows (Nested Workflows)**: Support invoking child workflows within a parent workflow context with structured output collection, error propagation, and nested cancellation.
|
|
10
|
+
- **Project Scaffolding (`init` command)**: Added the `init` command to easily bootstrap a new project config (`config.yaml`), agent directories, tool directories, and starter workflows.
|
|
11
|
+
- **Name-Based Execution**: Allow validating and running workflows by their declared name (`meta.name`) in addition to direct file paths.
|
|
12
|
+
- **Resource Discovery (`list` command)**: Added a command to discover and list all registered workflows, agents, and tools in the current project.
|
|
13
|
+
- **New Provider Adapters**: Integrated support for GitHub Copilot CLI, antigravity-cli, opencode-cli, and pi-coding-agent.
|
|
14
|
+
- **Resumable Cache**: Implemented resumable cache support for tools, including result replay and strict path traversal safety validations.
|
|
15
|
+
|
|
16
|
+
### Refactored & Improved
|
|
17
|
+
- **Project Renaming**: Renamed the package, CLI binary, skills directory, configurations, and documentation from `openflow` (or `@prmflow/openflow`) to `@travisliu/open-dynamic-workflow` (CLI executable `open-dynamic-workflow` / alias `odw`).
|
|
18
|
+
- **Event-Driven Pretty Reporter**: Refactored the pretty reporter into a modular, event-driven architecture, separating tree aggregation, status rendering, and format styling.
|
|
19
|
+
- **Cache Normalization**: Cleaned up materialized results to remove undefined properties from cache files.
|
|
20
|
+
- **Test Infrastructure**: Increased Vitest package execution and global installation test timeouts to 30s to ensure consistent CI runs.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Open Dynamic Workflow contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
# Open Dynamic Workflow
|
|
2
|
+
|
|
3
|
+
Open Dynamic Workflow is a local-first workflow runner for orchestrating external coding-agent CLIs such as Codex, Gemini, Copilot, OpenCode, Antigravity, Pi, and a deterministic mock provider.
|
|
4
|
+
|
|
5
|
+
Natural-language prompts are flexible, but they are not always reliable for repeated engineering work. Open Dynamic Workflow turns repeatable agent tasks into workflow scripts, so execution is explicit, version-controlled, validated, and easier to reproduce.
|
|
6
|
+
|
|
7
|
+
A workflow script defines which agents run, how they are coordinated, what outputs are expected, and how failures are handled. This gives teams more stable execution than ad-hoc prompting, while making workflows easier to review, debug, reuse, and maintain.
|
|
8
|
+
|
|
9
|
+
## Start with an AI-generated workflow
|
|
10
|
+
|
|
11
|
+
`Run a workflow that uses Codex to review correctness and security, uses Gemini to review tests and operations, then uses Gemini to summarize the result.`
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
## Supported coding agents
|
|
16
|
+
|
|
17
|
+
Open Dynamic Workflow orchestrates external coding-agent CLIs through provider adapters. It does not implement its own coding agent.
|
|
18
|
+
|
|
19
|
+
| Provider | CLI |
|
|
20
|
+
| ------------- | ---------------------- |
|
|
21
|
+
| `mock` | built-in mock provider |
|
|
22
|
+
| `codex` | Codex CLI |
|
|
23
|
+
| `gemini` | Gemini CLI |
|
|
24
|
+
| `copilot` | GitHub Copilot CLI |
|
|
25
|
+
| `opencode` | OpenCode CLI |
|
|
26
|
+
| `antigravity` | Antigravity CLI |
|
|
27
|
+
| `pi` | Pi Coding Agent |
|
|
28
|
+
|
|
29
|
+
The default provider can be configured during initialization or later in `.open-dynamic-workflow/config.yaml`. Individual workflow steps can still choose a specific provider:
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
const review = await agent({
|
|
33
|
+
id: "security-review",
|
|
34
|
+
provider: "codex",
|
|
35
|
+
prompt: "Review this change for security risks."
|
|
36
|
+
});
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Install and initialize
|
|
40
|
+
|
|
41
|
+
Run Open Dynamic Workflow directly with `npx` (you can also use the shorthand `odw` alias if installed locally):
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npx @travisliu/open-dynamic-workflow --help
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Initialize Open Dynamic Workflow in your project:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx @travisliu/open-dynamic-workflow init
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
This sets up the local Open Dynamic Workflow project structure, such as `.open-dynamic-workflow/config.yaml`, example workflow files, and default provider configuration.
|
|
54
|
+
|
|
55
|
+
Check your environment:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx @travisliu/open-dynamic-workflow doctor
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
List discoverable workflows, shared agents, and tools:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx @travisliu/open-dynamic-workflow list
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Validate a workflow before running providers:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npx @travisliu/open-dynamic-workflow validate workflows/parallel-pr-review.ts
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Run the workflow with local pretty output:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npx @travisliu/open-dynamic-workflow run parallel-pr-review --report pretty
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Basic Usage
|
|
80
|
+
|
|
81
|
+
The fastest way to create an Open Dynamic Workflow workflow is to ask the `openflow-workflow-writer` skill to generate one from a task description.
|
|
82
|
+
|
|
83
|
+
Use this prompt shape:
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
/openflow-workflow-writer Create an Open Dynamic Workflow workflow that <does the task>. Use <providers>. Include commands to validate and run it.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The skill will choose the right workflow pattern, generate a valid workflow file, and include run instructions.
|
|
90
|
+
|
|
91
|
+
| Pattern | Use when |
|
|
92
|
+
| ---------------- | ----------------------------------------------------------------------- |
|
|
93
|
+
| Single agent | One agent can complete the task. |
|
|
94
|
+
| Parallel review | Multiple independent reviews can run at the same time. |
|
|
95
|
+
| Pipeline | Many items need to pass through the same ordered stages. |
|
|
96
|
+
| Fan-out / fan-in | Multiple branches run first, then a final agent summarizes the results. |
|
|
97
|
+
|
|
98
|
+
### Demo 1: Single Agent Workflow
|
|
99
|
+
|
|
100
|
+
Use this when one agent can complete the task.
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
/openflow-workflow-writer Create a workflow named single-review that uses Codex to review the current project for correctness, security, and maintainability issues. Include structured output for findings and commands to validate and run it.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Expected result:
|
|
107
|
+
|
|
108
|
+
* A workflow that calls `agent()` once.
|
|
109
|
+
* A clear `review` phase.
|
|
110
|
+
* A structured findings schema.
|
|
111
|
+
* Commands such as `openflow validate workflows/single-review.ts` and `openflow run workflows/single-review.ts`.
|
|
112
|
+
|
|
113
|
+
### Demo 2: Parallel Review Workflow
|
|
114
|
+
|
|
115
|
+
Use this when several independent perspectives should run at the same time.
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
/openflow-workflow-writer Create a workflow that runs three independent reviews in parallel: Codex reviews correctness, Codex reviews security, and Gemini reviews tests. Then return all review results. Include commands to validate, run locally, and run with the mock provider for CI.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Expected result:
|
|
122
|
+
|
|
123
|
+
* A workflow that uses `parallel()`.
|
|
124
|
+
* Independent review branches.
|
|
125
|
+
* Stable agent IDs such as `correctness-review`, `security-review`, and `test-review`.
|
|
126
|
+
* CLI examples for local and CI usage.
|
|
127
|
+
|
|
128
|
+
### Demo 3: Pipeline Workflow
|
|
129
|
+
|
|
130
|
+
Use this when multiple items need the same ordered stages.
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
/openflow-workflow-writer Create a pipeline workflow that reviews these files: src/auth.ts, src/billing.ts, and src/api.ts. Each file should go through analyze, plan, and review-plan stages. Use Codex for code analysis and plan review, Gemini for remediation planning, item-streaming strategy, concurrency 3, and failFast false. Include validation and run commands.
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Expected result:
|
|
137
|
+
|
|
138
|
+
* A workflow that uses `pipeline()`.
|
|
139
|
+
* Named stages such as `analyze`, `plan`, and `review-plan`.
|
|
140
|
+
* `ctx.agent()` inside pipeline stages.
|
|
141
|
+
* Pipeline options such as `strategy`, `concurrency`, and `failFast`.
|
|
142
|
+
|
|
143
|
+
### Demo 4: Fan-Out / Fan-In Workflow
|
|
144
|
+
|
|
145
|
+
Use this when multiple branches should run first, then a final agent should summarize the results.
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
/openflow-workflow-writer Create a workflow that uses Codex to review correctness and security, uses Gemini to review tests and operations, then uses Gemini to summarize the results, deduplicate findings, and recommend next steps. Include commands to validate and run it.
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Expected result:
|
|
152
|
+
|
|
153
|
+
* A workflow that uses `parallel()` for the fan-out step.
|
|
154
|
+
* A final `agent()` call for the fan-in summary.
|
|
155
|
+
* Separate `review` and `summarize` phases.
|
|
156
|
+
* A final exported result containing both raw reviews and summary.
|
|
157
|
+
|
|
158
|
+
### Demo 5: Tool-Assisted Workflow
|
|
159
|
+
|
|
160
|
+
Use this when the workflow should load or compute local data through a registered tool before asking an agent to analyze it.
|
|
161
|
+
|
|
162
|
+
```text
|
|
163
|
+
/openflow-workflow-writer Create a workflow that uses a registered read-json tool to load input.json, then uses Codex to analyze the loaded data for anomalies and correctness issues. Keep tool usage at the workflow top level. Include validation and run commands.
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Expected result:
|
|
167
|
+
|
|
168
|
+
* A workflow that calls `tool()` before agent analysis.
|
|
169
|
+
* A provider-backed `agent()` call that receives the loaded tool output.
|
|
170
|
+
* No `tool()` calls inside `parallel()` or `pipeline()` stages.
|
|
171
|
+
|
|
172
|
+
### Demo 6: Child Workflow Composition
|
|
173
|
+
|
|
174
|
+
Use this when a larger workflow should reuse smaller workflow files.
|
|
175
|
+
|
|
176
|
+
```text
|
|
177
|
+
/openflow-workflow-writer Create a parent workflow that invokes a child workflow named security-review for src/auth.ts and src/billing.ts, collects child results with failureMode settled, then uses Gemini to summarize the results. Include the child workflow, the parent workflow, and commands to validate and run both.
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Expected result:
|
|
181
|
+
|
|
182
|
+
* A reusable child workflow.
|
|
183
|
+
* A parent workflow that calls `workflow()`.
|
|
184
|
+
* JSON-safe `args` passed to the child workflow.
|
|
185
|
+
* A final summary step in the parent workflow.
|
|
186
|
+
|
|
187
|
+
### Prompting Tips
|
|
188
|
+
|
|
189
|
+
* Name the workflow you want.
|
|
190
|
+
* Describe the input files, documents, or targets.
|
|
191
|
+
* Say which providers to use, such as Codex for correctness/security and Gemini for tests/summarization.
|
|
192
|
+
* Say whether failures should stop the workflow or be collected.
|
|
193
|
+
* Ask for validation and run commands.
|
|
194
|
+
* Ask for structured output when downstream steps need machine-readable results.
|
|
195
|
+
|
|
196
|
+
## openflow-workflow-writer Skills
|
|
197
|
+
|
|
198
|
+
For AI/coding agents developing workflows in this repository, a pre-configured skill is located at [skills/openflow-workflow-writer/](skills/openflow-workflow-writer/).
|
|
199
|
+
|
|
200
|
+
This directory contains:
|
|
201
|
+
- [SKILL.md](skills/openflow-workflow-writer/SKILL.md): Instructions and guidelines for AI agents to write, validate, and troubleshoot Open Dynamic Workflow workflows.
|
|
202
|
+
- Reference documentation under [references/](skills/openflow-workflow-writer/references/):
|
|
203
|
+
- [api-document.md](skills/openflow-workflow-writer/references/api-document.md): Complete guide on workflow syntax, DSL primitives (`agent`, `parallel`, `pipeline`), structured outputs, and exit codes.
|
|
204
|
+
- [cli-commands.md](skills/openflow-workflow-writer/references/cli-commands.md): Detailed usage details for the `run`, `validate`, and `doctor` commands.
|
|
205
|
+
- [configuration.md](skills/openflow-workflow-writer/references/configuration.md): Schema structure, precedence rules, and model customization guidelines for `.openflow/config.yaml`.
|
|
206
|
+
- Reusable templates under `assets/` for building new workflows.
|
|
207
|
+
|
|
208
|
+
## Artifacts
|
|
209
|
+
|
|
210
|
+
Every run creates a local artifact directory.
|
|
211
|
+
|
|
212
|
+
```text
|
|
213
|
+
.openflow/runs/<runId>/
|
|
214
|
+
manifest.json
|
|
215
|
+
workflow.input.ts
|
|
216
|
+
config.resolved.json
|
|
217
|
+
run-input.json
|
|
218
|
+
calls.jsonl
|
|
219
|
+
cache-index.json
|
|
220
|
+
events.jsonl
|
|
221
|
+
report.json
|
|
222
|
+
agents/
|
|
223
|
+
<agentId>/
|
|
224
|
+
prompt.txt
|
|
225
|
+
stdout.log
|
|
226
|
+
stderr.log
|
|
227
|
+
raw-result.json
|
|
228
|
+
normalized-result.json
|
|
229
|
+
schema.json
|
|
230
|
+
validation-error.json
|
|
231
|
+
permissions.json
|
|
232
|
+
metadata.json
|
|
233
|
+
workflows/
|
|
234
|
+
<workflowInvocationId>/
|
|
235
|
+
input.json
|
|
236
|
+
result.json
|
|
237
|
+
error.json
|
|
238
|
+
summary.json
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Artifacts are always enabled so failed or partial runs remain debuggable.
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
## Configuration
|
|
245
|
+
|
|
246
|
+
By default, Open Dynamic Workflow loads:
|
|
247
|
+
|
|
248
|
+
```text
|
|
249
|
+
.openflow/config.yaml
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Example:
|
|
253
|
+
|
|
254
|
+
```yaml
|
|
255
|
+
defaultProvider: codex
|
|
256
|
+
concurrency: 4
|
|
257
|
+
timeoutMs: 900000
|
|
258
|
+
|
|
259
|
+
providers:
|
|
260
|
+
codex:
|
|
261
|
+
command: codex
|
|
262
|
+
args:
|
|
263
|
+
- exec
|
|
264
|
+
- --json
|
|
265
|
+
- --ephemeral
|
|
266
|
+
defaultModel: null
|
|
267
|
+
|
|
268
|
+
gemini:
|
|
269
|
+
command: gemini
|
|
270
|
+
args:
|
|
271
|
+
- --output-format
|
|
272
|
+
- json
|
|
273
|
+
defaultModel: gemini-3-flash-preview
|
|
274
|
+
|
|
275
|
+
security:
|
|
276
|
+
passEnv: []
|
|
277
|
+
redactEnv:
|
|
278
|
+
- OPENAI_API_KEY
|
|
279
|
+
- GEMINI_API_KEY
|
|
280
|
+
- GOOGLE_API_KEY
|
|
281
|
+
- '*_TOKEN'
|
|
282
|
+
- '*_SECRET'
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Configuration precedence:
|
|
286
|
+
|
|
287
|
+
1. CLI safety ceilings and hard overrides.
|
|
288
|
+
2. Explicit `agent()` options.
|
|
289
|
+
3. Workflow defaults, if introduced later.
|
|
290
|
+
4. Config file.
|
|
291
|
+
5. Built-in defaults.
|
|
292
|
+
|
|
293
|
+
`--provider` sets the default provider. It does not override an explicit provider inside an `agent()` call.
|
|
294
|
+
|
|
295
|
+
#### Safety & System Context:
|
|
296
|
+
|
|
297
|
+
- **No Scoped Sandbox:** The `dangerously-full-access` mode is **not** a sandbox or a scoped-write system. It grants full permission mapping to the underlying provider CLI, bypassing safety boundaries in that provider context.
|
|
298
|
+
- **Provider Support Behavior:**
|
|
299
|
+
- `codex`: Maps `dangerously-full-access` to the Codex write-capable flag (`--dangerously-bypass-approvals-and-sandbox`).
|
|
300
|
+
- `gemini`: Supports `dangerously-full-access`. By default, Gemini runs in read-only `--approval-mode plan`. Specifying `dangerously-full-access` switches Gemini to `--approval-mode yolo`, enabling write-capable execution. This is the explicit opt-in; Gemini's own trust and sandbox rules still apply.
|
|
301
|
+
- `copilot`: Default mode does not add broad allow-all or yolo flags. `dangerously-full-access` maps to `--yolo`.
|
|
302
|
+
- `opencode`: Maps `dangerously-full-access` to `--dangerously-skip-permissions` and skips read-only environment injection.
|
|
303
|
+
- `antigravity`: Maps `dangerously-full-access` to `--dangerously-skip-permissions`.
|
|
304
|
+
- `pi`: Switches from read-only tools to configured `fullAccessTools`. It does not imply automatic approval.
|
|
305
|
+
- `mock`: Accepts `dangerously-full-access` without changing its deterministic mock behavior (useful for dry runs and testing).
|
|
306
|
+
- Workflows that omit the `permissions` field default to `{ mode: "default" }` (which does not pass any write-enabling flags to the provider).
|
|
307
|
+
|
|
308
|
+
Be careful before sharing `.openflow/runs/<runId>` artifacts, because they may contain prompts, source snippets, stdout, stderr, and model outputs.
|
|
309
|
+
|
|
310
|
+
## License
|
|
311
|
+
|
|
312
|
+
MIT
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AgentAdapter, ProviderHealth, AgentRunInput, ProviderCommand, ProviderParseInput, ProviderParsedResult, ProviderConfig } from "./types.js";
|
|
2
|
+
export interface AntigravityProviderConfig extends ProviderConfig {
|
|
3
|
+
promptFlag?: string;
|
|
4
|
+
modelFlag?: string;
|
|
5
|
+
promptMode?: "stdin" | "arg";
|
|
6
|
+
sandboxFlag?: string;
|
|
7
|
+
dangerouslySkipPermissionsFlag?: string;
|
|
8
|
+
useSandboxByDefault?: boolean;
|
|
9
|
+
permissionPolicy?: "sandbox" | "native";
|
|
10
|
+
printTimeoutFlag?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class AntigravityCliAdapter implements AgentAdapter {
|
|
13
|
+
readonly name = "antigravity";
|
|
14
|
+
private readonly config;
|
|
15
|
+
constructor(config?: AntigravityProviderConfig);
|
|
16
|
+
checkHealth(): Promise<ProviderHealth>;
|
|
17
|
+
buildCommand(input: AgentRunInput): Promise<ProviderCommand>;
|
|
18
|
+
parseResult(input: ProviderParseInput): Promise<ProviderParsedResult>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { runProcess } from "./process-runner.js";
|
|
2
|
+
import { shouldRedactEnvName } from "../security/env.js";
|
|
3
|
+
import { appendModelArg } from "./model-args.js";
|
|
4
|
+
import { extractJson } from "../structured/extract-json.js";
|
|
5
|
+
import { resolveStructuredOutputPrompt } from "../structured/structured-output.js";
|
|
6
|
+
import { OpenDynamicWorkflowError } from "../errors/types.js";
|
|
7
|
+
import { ErrorCode } from "../errors/codes.js";
|
|
8
|
+
const DEFAULT_ANTIGRAVITY_CONFIG = {
|
|
9
|
+
command: "agy",
|
|
10
|
+
args: [],
|
|
11
|
+
defaultModel: null,
|
|
12
|
+
promptMode: "arg",
|
|
13
|
+
promptFlag: "-p",
|
|
14
|
+
modelArg: { flag: "--model" },
|
|
15
|
+
sandboxFlag: "--sandbox",
|
|
16
|
+
dangerouslySkipPermissionsFlag: "--dangerously-skip-permissions",
|
|
17
|
+
useSandboxByDefault: true,
|
|
18
|
+
permissionPolicy: "sandbox"
|
|
19
|
+
};
|
|
20
|
+
export class AntigravityCliAdapter {
|
|
21
|
+
name = "antigravity";
|
|
22
|
+
config;
|
|
23
|
+
constructor(config) {
|
|
24
|
+
this.config = { ...DEFAULT_ANTIGRAVITY_CONFIG, ...(config ?? {}) };
|
|
25
|
+
}
|
|
26
|
+
async checkHealth() {
|
|
27
|
+
const command = this.config.command ?? "agy";
|
|
28
|
+
try {
|
|
29
|
+
await runProcess({
|
|
30
|
+
command,
|
|
31
|
+
args: ["--help"],
|
|
32
|
+
cwd: process.cwd(),
|
|
33
|
+
timeoutMs: 2000
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
provider: "antigravity",
|
|
37
|
+
available: true,
|
|
38
|
+
command,
|
|
39
|
+
supportsModelSelection: this.config.modelArg !== false
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
return {
|
|
44
|
+
provider: "antigravity",
|
|
45
|
+
available: false,
|
|
46
|
+
command,
|
|
47
|
+
message: `Command '${command}' is not available.`,
|
|
48
|
+
error: {
|
|
49
|
+
name: err.name,
|
|
50
|
+
message: err.message
|
|
51
|
+
},
|
|
52
|
+
supportsModelSelection: this.config.modelArg !== false
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async buildCommand(input) {
|
|
57
|
+
const command = this.config.command ?? "agy";
|
|
58
|
+
const args = [...(this.config.args ?? [])];
|
|
59
|
+
const structuredPrompt = resolveStructuredOutputPrompt({
|
|
60
|
+
prompt: input.prompt,
|
|
61
|
+
schema: input.schema,
|
|
62
|
+
structuredOutput: input.structuredOutput
|
|
63
|
+
});
|
|
64
|
+
if (structuredPrompt.nativeRequested) {
|
|
65
|
+
throw new OpenDynamicWorkflowError(ErrorCode.CLI_USAGE_ERROR, 'Antigravity does not support structuredOutput.transport="native" yet.');
|
|
66
|
+
}
|
|
67
|
+
const promptMode = this.config.promptMode ?? "arg";
|
|
68
|
+
let stdin = undefined;
|
|
69
|
+
if (promptMode === "stdin") {
|
|
70
|
+
stdin = structuredPrompt.prompt;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
args.push(this.config.promptFlag ?? "-p", structuredPrompt.prompt);
|
|
74
|
+
}
|
|
75
|
+
appendModelArg(args, input.model ?? this.config.defaultModel ?? undefined, this.config.modelArg, this.config.modelFlag ?? "--model");
|
|
76
|
+
if (input.permissions?.mode === "dangerously-full-access") {
|
|
77
|
+
args.push(this.config.dangerouslySkipPermissionsFlag ?? "--dangerously-skip-permissions");
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
if (this.config.useSandboxByDefault === true || this.config.permissionPolicy === "sandbox") {
|
|
81
|
+
args.push(this.config.sandboxFlag ?? "--sandbox");
|
|
82
|
+
}
|
|
83
|
+
else if (this.config.permissionPolicy !== "native") {
|
|
84
|
+
throw new OpenDynamicWorkflowError(ErrorCode.CLI_USAGE_ERROR, "Antigravity default execution requires sandbox or native policy.");
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const filteredEnv = {};
|
|
88
|
+
for (const [key, value] of Object.entries(input.env)) {
|
|
89
|
+
if (!shouldRedactEnvName(key)) {
|
|
90
|
+
filteredEnv[key] = value;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const cmd = {
|
|
94
|
+
command,
|
|
95
|
+
args,
|
|
96
|
+
cwd: input.cwd,
|
|
97
|
+
env: filteredEnv
|
|
98
|
+
};
|
|
99
|
+
if (stdin !== undefined) {
|
|
100
|
+
cmd.stdin = stdin;
|
|
101
|
+
}
|
|
102
|
+
return cmd;
|
|
103
|
+
}
|
|
104
|
+
async parseResult(input) {
|
|
105
|
+
const trimmed = input.stdout.trim();
|
|
106
|
+
if (!trimmed) {
|
|
107
|
+
return {
|
|
108
|
+
text: "",
|
|
109
|
+
parseWarnings: ["Empty stdout"]
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const parsed = JSON.parse(trimmed);
|
|
114
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
115
|
+
const textFields = ["text", "response", "content"];
|
|
116
|
+
let text = undefined;
|
|
117
|
+
for (const field of textFields) {
|
|
118
|
+
if (typeof parsed[field] === "string") {
|
|
119
|
+
text = parsed[field];
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (text !== undefined) {
|
|
124
|
+
const res = {
|
|
125
|
+
text,
|
|
126
|
+
json: parsed,
|
|
127
|
+
raw: parsed
|
|
128
|
+
};
|
|
129
|
+
const sj = tryParseEmbeddedJson(text);
|
|
130
|
+
if (sj !== undefined) {
|
|
131
|
+
res.structuredJson = sj;
|
|
132
|
+
}
|
|
133
|
+
return res;
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
json: parsed,
|
|
137
|
+
structuredJson: parsed,
|
|
138
|
+
raw: parsed
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
else if (Array.isArray(parsed)) {
|
|
142
|
+
return {
|
|
143
|
+
json: parsed,
|
|
144
|
+
structuredJson: parsed,
|
|
145
|
+
raw: parsed
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// Malformed JSON, fall back to plain text
|
|
151
|
+
}
|
|
152
|
+
const result = {
|
|
153
|
+
text: input.stdout
|
|
154
|
+
};
|
|
155
|
+
const structured = tryParseEmbeddedJson(input.stdout);
|
|
156
|
+
if (structured !== undefined) {
|
|
157
|
+
result.structuredJson = structured;
|
|
158
|
+
}
|
|
159
|
+
if (tryParseJson(trimmed) === undefined) {
|
|
160
|
+
result.parseWarnings = ["Malformed JSON: Unexpected token"];
|
|
161
|
+
}
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function tryParseJson(text) {
|
|
166
|
+
try {
|
|
167
|
+
return JSON.parse(text);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function tryParseEmbeddedJson(text) {
|
|
174
|
+
const extracted = extractJson(text);
|
|
175
|
+
return extracted.ok ? extracted.value : undefined;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=antigravity-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity-cli.js","sourceRoot":"","sources":["../../src/agents/antigravity-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AgentAdapter, ProviderHealth, AgentRunInput, ProviderCommand, ProviderParseInput, ProviderParsedResult, ProviderConfig } from "./types.js";
|
|
2
|
+
export interface CodexProviderConfig extends ProviderConfig {
|
|
3
|
+
promptMode?: "stdin" | "arg";
|
|
4
|
+
}
|
|
5
|
+
export declare class CodexExecAdapter implements AgentAdapter {
|
|
6
|
+
readonly name = "codex";
|
|
7
|
+
private readonly config;
|
|
8
|
+
constructor(config?: CodexProviderConfig);
|
|
9
|
+
checkHealth(): Promise<ProviderHealth>;
|
|
10
|
+
buildCommand(input: AgentRunInput): Promise<ProviderCommand>;
|
|
11
|
+
parseResult(input: ProviderParseInput): Promise<ProviderParsedResult>;
|
|
12
|
+
}
|