agent-pipeline 0.1.0 ā 0.1.2
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/CLAUDE.md +4 -3
- package/{license ā LICENSE} +1 -1
- package/README.md +120 -55
- package/dist/cli/commands/agent/info.js +1 -1
- package/dist/cli/commands/agent/info.js.map +1 -1
- package/dist/cli/commands/agent/list.js +1 -1
- package/dist/cli/commands/agent/list.js.map +1 -1
- package/dist/cli/commands/agent/pull.d.ts +1 -0
- package/dist/cli/commands/agent/pull.d.ts.map +1 -1
- package/dist/cli/commands/agent/pull.js +67 -44
- package/dist/cli/commands/agent/pull.js.map +1 -1
- package/dist/cli/commands/cleanup.d.ts +4 -0
- package/dist/cli/commands/cleanup.d.ts.map +1 -1
- package/dist/cli/commands/cleanup.js +197 -37
- package/dist/cli/commands/cleanup.js.map +1 -1
- package/dist/cli/commands/history.d.ts.map +1 -1
- package/dist/cli/commands/history.js +3 -22
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/hooks.d.ts +10 -0
- package/dist/cli/commands/hooks.d.ts.map +1 -0
- package/dist/cli/commands/hooks.js +88 -0
- package/dist/cli/commands/hooks.js.map +1 -0
- package/dist/cli/commands/init.d.ts +1 -6
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +169 -88
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/loop-context.d.ts +2 -0
- package/dist/cli/commands/loop-context.d.ts.map +1 -0
- package/dist/cli/commands/loop-context.js +88 -0
- package/dist/cli/commands/loop-context.js.map +1 -0
- package/dist/cli/commands/pipeline/create.d.ts.map +1 -1
- package/dist/cli/commands/pipeline/create.js +156 -68
- package/dist/cli/commands/pipeline/create.js.map +1 -1
- package/dist/cli/commands/run.d.ts +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +29 -5
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/schema.d.ts +9 -0
- package/dist/cli/commands/schema.d.ts.map +1 -0
- package/dist/cli/commands/schema.js +541 -0
- package/dist/cli/commands/schema.js.map +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +0 -6
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/help/index.d.ts +6 -0
- package/dist/cli/help/index.d.ts.map +1 -0
- package/dist/cli/help/index.js +538 -0
- package/dist/cli/help/index.js.map +1 -0
- package/dist/cli/help/types.d.ts +22 -0
- package/dist/cli/help/types.d.ts.map +1 -0
- package/dist/cli/help/types.js +2 -0
- package/dist/cli/help/types.js.map +1 -0
- package/dist/cli/hooks.d.ts +5 -1
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +106 -12
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/templates/agents/code-review-agents/code-reviewer.md +46 -0
- package/dist/cli/templates/agents/code-review-agents/memory-doc-updater.md +189 -0
- package/dist/cli/templates/agents/code-review-agents/quality-checker.md +52 -0
- package/dist/cli/templates/agents/frontend-agents/brutalist_purist.md +563 -0
- package/dist/cli/templates/agents/frontend-agents/cyberpunk_hacker.md +824 -0
- package/dist/cli/templates/agents/frontend-agents/frontend-pipeline-ref.md +32 -0
- package/dist/cli/templates/agents/frontend-agents/indie_game_dev.md +715 -0
- package/dist/cli/templates/agents/frontend-agents/luxury_editorial.md +628 -0
- package/dist/cli/templates/agents/frontend-agents/product_owner.md +159 -0
- package/dist/cli/templates/agents/frontend-agents/retro_90s_webmaster.md +385 -0
- package/dist/cli/templates/agents/frontend-agents/showcase.md +362 -0
- package/dist/cli/templates/agents/frontend-agents/swiss_modernist.md +716 -0
- package/dist/cli/templates/agents/loop-agents/socratic-explorer.md +91 -0
- package/dist/cli/templates/instructions/handover.md +40 -0
- package/dist/cli/templates/instructions/loop.md +39 -0
- package/dist/cli/templates/pipelines/front-end-parallel-example.yml +81 -0
- package/dist/cli/templates/pipelines/loop-example.yml +25 -0
- package/dist/cli/templates/pipelines/post-commit-example.yml +49 -58
- package/dist/cli/templates/schema/pipeline-config.schema.json +400 -0
- package/dist/cli/templates/schema/pipeline-config.schema.yaml +302 -0
- package/dist/cli/utils/agent-importer.d.ts +1 -0
- package/dist/cli/utils/agent-importer.d.ts.map +1 -1
- package/dist/cli/utils/agent-importer.js +67 -0
- package/dist/cli/utils/agent-importer.js.map +1 -1
- package/dist/cli/utils/interactive-prompts.d.ts +4 -0
- package/dist/cli/utils/interactive-prompts.d.ts.map +1 -1
- package/dist/cli/utils/interactive-prompts.js +59 -13
- package/dist/cli/utils/interactive-prompts.js.map +1 -1
- package/dist/config/pipeline-loader.d.ts +4 -1
- package/dist/config/pipeline-loader.d.ts.map +1 -1
- package/dist/config/pipeline-loader.js +58 -0
- package/dist/config/pipeline-loader.js.map +1 -1
- package/dist/config/schema.d.ts +64 -35
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/core/abort-controller.d.ts +16 -0
- package/dist/core/abort-controller.d.ts.map +1 -0
- package/dist/core/abort-controller.js +52 -0
- package/dist/core/abort-controller.js.map +1 -0
- package/dist/core/agent-query-runner.d.ts +0 -1
- package/dist/core/agent-query-runner.d.ts.map +1 -1
- package/dist/core/agent-query-runner.js +0 -22
- package/dist/core/agent-query-runner.js.map +1 -1
- package/dist/core/agent-runtimes/claude-code-headless-runtime.d.ts +5 -1
- package/dist/core/agent-runtimes/claude-code-headless-runtime.d.ts.map +1 -1
- package/dist/core/agent-runtimes/claude-code-headless-runtime.js +127 -12
- package/dist/core/agent-runtimes/claude-code-headless-runtime.js.map +1 -1
- package/dist/core/agent-runtimes/claude-sdk-runtime.d.ts +0 -2
- package/dist/core/agent-runtimes/claude-sdk-runtime.d.ts.map +1 -1
- package/dist/core/agent-runtimes/claude-sdk-runtime.js +1 -22
- package/dist/core/agent-runtimes/claude-sdk-runtime.js.map +1 -1
- package/dist/core/agent-runtimes/codex-headless-runtime.d.ts +27 -0
- package/dist/core/agent-runtimes/codex-headless-runtime.d.ts.map +1 -0
- package/dist/core/agent-runtimes/codex-headless-runtime.js +623 -0
- package/dist/core/agent-runtimes/codex-headless-runtime.js.map +1 -0
- package/dist/core/agent-runtimes/openai-compatible-runtime.d.ts +17 -0
- package/dist/core/agent-runtimes/openai-compatible-runtime.d.ts.map +1 -0
- package/dist/core/agent-runtimes/openai-compatible-runtime.js +231 -0
- package/dist/core/agent-runtimes/openai-compatible-runtime.js.map +1 -0
- package/dist/core/branch-manager.d.ts +3 -1
- package/dist/core/branch-manager.d.ts.map +1 -1
- package/dist/core/branch-manager.js +11 -1
- package/dist/core/branch-manager.js.map +1 -1
- package/dist/core/git-manager.d.ts +17 -1
- package/dist/core/git-manager.d.ts.map +1 -1
- package/dist/core/git-manager.js +147 -3
- package/dist/core/git-manager.js.map +1 -1
- package/dist/core/group-execution-orchestrator.d.ts +4 -13
- package/dist/core/group-execution-orchestrator.d.ts.map +1 -1
- package/dist/core/group-execution-orchestrator.js +53 -142
- package/dist/core/group-execution-orchestrator.js.map +1 -1
- package/dist/core/handover-manager.d.ts +24 -0
- package/dist/core/handover-manager.d.ts.map +1 -0
- package/dist/core/handover-manager.js +214 -0
- package/dist/core/handover-manager.js.map +1 -0
- package/dist/core/instruction-loader.d.ts +23 -0
- package/dist/core/instruction-loader.d.ts.map +1 -0
- package/dist/core/instruction-loader.js +123 -0
- package/dist/core/instruction-loader.js.map +1 -0
- package/dist/core/loop-state-manager.d.ts +12 -7
- package/dist/core/loop-state-manager.d.ts.map +1 -1
- package/dist/core/loop-state-manager.js +49 -3
- package/dist/core/loop-state-manager.js.map +1 -1
- package/dist/core/parallel-executor.d.ts +8 -3
- package/dist/core/parallel-executor.d.ts.map +1 -1
- package/dist/core/parallel-executor.js +90 -16
- package/dist/core/parallel-executor.js.map +1 -1
- package/dist/core/pipeline-finalizer.d.ts +12 -4
- package/dist/core/pipeline-finalizer.d.ts.map +1 -1
- package/dist/core/pipeline-finalizer.js +244 -33
- package/dist/core/pipeline-finalizer.js.map +1 -1
- package/dist/core/pipeline-initializer.d.ts +13 -5
- package/dist/core/pipeline-initializer.d.ts.map +1 -1
- package/dist/core/pipeline-initializer.js +53 -25
- package/dist/core/pipeline-initializer.js.map +1 -1
- package/dist/core/pipeline-runner.d.ts +15 -1
- package/dist/core/pipeline-runner.d.ts.map +1 -1
- package/dist/core/pipeline-runner.js +434 -64
- package/dist/core/pipeline-runner.js.map +1 -1
- package/dist/core/pr-creator.d.ts +0 -1
- package/dist/core/pr-creator.d.ts.map +1 -1
- package/dist/core/pr-creator.js +12 -4
- package/dist/core/pr-creator.js.map +1 -1
- package/dist/core/stage-executor.d.ts +19 -11
- package/dist/core/stage-executor.d.ts.map +1 -1
- package/dist/core/stage-executor.js +151 -178
- package/dist/core/stage-executor.js.map +1 -1
- package/dist/core/types/agent-runtime.d.ts +3 -2
- package/dist/core/types/agent-runtime.d.ts.map +1 -1
- package/dist/core/worktree-manager.d.ts +21 -0
- package/dist/core/worktree-manager.d.ts.map +1 -0
- package/dist/core/worktree-manager.js +133 -0
- package/dist/core/worktree-manager.js.map +1 -0
- package/dist/index.js +147 -112
- package/dist/index.js.map +1 -1
- package/dist/notifications/notification-manager.d.ts +1 -0
- package/dist/notifications/notification-manager.d.ts.map +1 -1
- package/dist/notifications/notification-manager.js +17 -3
- package/dist/notifications/notification-manager.js.map +1 -1
- package/dist/notifications/notifiers/local-notifier.d.ts.map +1 -1
- package/dist/notifications/notifiers/local-notifier.js +5 -2
- package/dist/notifications/notifiers/local-notifier.js.map +1 -1
- package/dist/notifications/notifiers/slack-notifier.d.ts.map +1 -1
- package/dist/notifications/notifiers/slack-notifier.js +39 -8
- package/dist/notifications/notifiers/slack-notifier.js.map +1 -1
- package/dist/notifications/types.d.ts +1 -1
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/ui/components/execution-group.d.ts.map +1 -1
- package/dist/ui/components/execution-group.js +1 -1
- package/dist/ui/components/execution-group.js.map +1 -1
- package/dist/ui/components/interactive-summary.d.ts +9 -0
- package/dist/ui/components/interactive-summary.d.ts.map +1 -0
- package/dist/ui/components/interactive-summary.js +166 -0
- package/dist/ui/components/interactive-summary.js.map +1 -0
- package/dist/ui/components/keyboard-hints.d.ts +12 -0
- package/dist/ui/components/keyboard-hints.d.ts.map +1 -0
- package/dist/ui/components/keyboard-hints.js +13 -0
- package/dist/ui/components/keyboard-hints.js.map +1 -0
- package/dist/ui/components/live-timer.d.ts +9 -0
- package/dist/ui/components/live-timer.d.ts.map +1 -0
- package/dist/ui/components/live-timer.js +25 -0
- package/dist/ui/components/live-timer.js.map +1 -0
- package/dist/ui/components/loop-iteration-history.d.ts +8 -0
- package/dist/ui/components/loop-iteration-history.d.ts.map +1 -0
- package/dist/ui/components/loop-iteration-history.js +106 -0
- package/dist/ui/components/loop-iteration-history.js.map +1 -0
- package/dist/ui/components/loop-session-summary.d.ts +9 -0
- package/dist/ui/components/loop-session-summary.d.ts.map +1 -0
- package/dist/ui/components/loop-session-summary.js +39 -0
- package/dist/ui/components/loop-session-summary.js.map +1 -0
- package/dist/ui/components/stage-row.d.ts +0 -1
- package/dist/ui/components/stage-row.d.ts.map +1 -1
- package/dist/ui/components/stage-row.js +5 -15
- package/dist/ui/components/stage-row.js.map +1 -1
- package/dist/ui/components/status-badge.d.ts.map +1 -1
- package/dist/ui/components/status-badge.js +1 -0
- package/dist/ui/components/status-badge.js.map +1 -1
- package/dist/ui/pipeline-ui.d.ts +1 -0
- package/dist/ui/pipeline-ui.d.ts.map +1 -1
- package/dist/ui/pipeline-ui.js +22 -18
- package/dist/ui/pipeline-ui.js.map +1 -1
- package/dist/utils/error-factory.d.ts.map +1 -1
- package/dist/utils/error-factory.js +10 -2
- package/dist/utils/error-factory.js.map +1 -1
- package/dist/utils/pipeline-formatter.d.ts +8 -2
- package/dist/utils/pipeline-formatter.d.ts.map +1 -1
- package/dist/utils/pipeline-formatter.js +30 -26
- package/dist/utils/pipeline-formatter.js.map +1 -1
- package/dist/utils/pipeline-logger.d.ts +19 -0
- package/dist/utils/pipeline-logger.d.ts.map +1 -0
- package/dist/utils/pipeline-logger.js +80 -0
- package/dist/utils/pipeline-logger.js.map +1 -0
- package/dist/utils/platform-opener.d.ts +4 -0
- package/dist/utils/platform-opener.d.ts.map +1 -0
- package/dist/utils/platform-opener.js +52 -0
- package/dist/utils/platform-opener.js.map +1 -0
- package/dist/validators/agent-validator.d.ts +10 -0
- package/dist/validators/agent-validator.d.ts.map +1 -0
- package/dist/validators/agent-validator.js +87 -0
- package/dist/validators/agent-validator.js.map +1 -0
- package/dist/validators/dag-validator.d.ts +9 -0
- package/dist/validators/dag-validator.d.ts.map +1 -0
- package/dist/validators/dag-validator.js +51 -0
- package/dist/validators/dag-validator.js.map +1 -0
- package/dist/validators/environment-validator.d.ts +9 -0
- package/dist/validators/environment-validator.d.ts.map +1 -0
- package/dist/validators/environment-validator.js +35 -0
- package/dist/validators/environment-validator.js.map +1 -0
- package/dist/validators/execution-validator.d.ts +8 -0
- package/dist/validators/execution-validator.d.ts.map +1 -0
- package/dist/validators/execution-validator.js +51 -0
- package/dist/validators/execution-validator.js.map +1 -0
- package/dist/validators/git-validator.d.ts +13 -0
- package/dist/validators/git-validator.d.ts.map +1 -0
- package/dist/validators/git-validator.js +135 -0
- package/dist/validators/git-validator.js.map +1 -0
- package/dist/validators/notification-validator.d.ts +8 -0
- package/dist/validators/notification-validator.d.ts.map +1 -0
- package/dist/validators/notification-validator.js +27 -0
- package/dist/validators/notification-validator.js.map +1 -0
- package/dist/validators/pipeline-validator.d.ts +3 -26
- package/dist/validators/pipeline-validator.d.ts.map +1 -1
- package/dist/validators/pipeline-validator.js +5 -515
- package/dist/validators/pipeline-validator.js.map +1 -1
- package/dist/validators/retry-validator.d.ts +9 -0
- package/dist/validators/retry-validator.d.ts.map +1 -0
- package/dist/validators/retry-validator.js +34 -0
- package/dist/validators/retry-validator.js.map +1 -0
- package/dist/validators/runtime-validator.d.ts +9 -0
- package/dist/validators/runtime-validator.d.ts.map +1 -0
- package/dist/validators/runtime-validator.js +82 -0
- package/dist/validators/runtime-validator.js.map +1 -0
- package/dist/validators/structure-validator.d.ts +8 -0
- package/dist/validators/structure-validator.d.ts.map +1 -0
- package/dist/validators/structure-validator.js +39 -0
- package/dist/validators/structure-validator.js.map +1 -0
- package/dist/validators/types.d.ts +19 -0
- package/dist/validators/types.d.ts.map +1 -0
- package/dist/validators/types.js +2 -0
- package/dist/validators/types.js.map +1 -0
- package/dist/validators/validation-orchestrator.d.ts +9 -0
- package/dist/validators/validation-orchestrator.d.ts.map +1 -0
- package/dist/validators/validation-orchestrator.js +43 -0
- package/dist/validators/validation-orchestrator.js.map +1 -0
- package/package.json +18 -12
- package/dist/cli/commands/install.d.ts +0 -2
- package/dist/cli/commands/install.d.ts.map +0 -1
- package/dist/cli/commands/install.js +0 -15
- package/dist/cli/commands/install.js.map +0 -1
- package/dist/cli/commands/uninstall.d.ts +0 -2
- package/dist/cli/commands/uninstall.d.ts.map +0 -1
- package/dist/cli/commands/uninstall.js +0 -6
- package/dist/cli/commands/uninstall.js.map +0 -1
- package/dist/cli/templates/agents/cleanup-reporter.md +0 -107
- package/dist/cli/templates/agents/code-reducer.md +0 -51
- package/dist/cli/templates/agents/code-reviewer.md +0 -34
- package/dist/cli/templates/agents/context-reducer.md +0 -94
- package/dist/cli/templates/agents/dependency-auditor.md +0 -127
- package/dist/cli/templates/agents/detective-empath.md +0 -26
- package/dist/cli/templates/agents/detective-linguist.md +0 -26
- package/dist/cli/templates/agents/detective-logician.md +0 -26
- package/dist/cli/templates/agents/detective-skeptic.md +0 -26
- package/dist/cli/templates/agents/detective-statistician.md +0 -26
- package/dist/cli/templates/agents/doc-updater.md +0 -30
- package/dist/cli/templates/agents/judge.md +0 -27
- package/dist/cli/templates/agents/memory-updater.md +0 -72
- package/dist/cli/templates/agents/quality-checker.md +0 -32
- package/dist/cli/templates/agents/security-auditor.md +0 -32
- package/dist/cli/templates/agents/storyteller.md +0 -26
- package/dist/cli/templates/agents/summary.md +0 -32
- package/dist/cli/templates/agents/synthesizer.md +0 -26
- package/dist/cli/templates/pipelines/large-pipeline-example.yml +0 -178
- package/dist/cli/templates/pipelines/post-merge-example.yml +0 -78
- package/dist/cli/templates/pipelines/pre-commit-example.yml +0 -41
- package/dist/cli/templates/pipelines/pre-push-example.yml +0 -51
- package/dist/cli/templates/pipelines/test-pipeline.yml +0 -90
- package/dist/config/project-config-loader.d.ts +0 -11
- package/dist/config/project-config-loader.d.ts.map +0 -1
- package/dist/config/project-config-loader.js +0 -100
- package/dist/config/project-config-loader.js.map +0 -1
- package/dist/core/condition-evaluator.d.ts +0 -16
- package/dist/core/condition-evaluator.d.ts.map +0 -1
- package/dist/core/condition-evaluator.js +0 -121
- package/dist/core/condition-evaluator.js.map +0 -1
- package/dist/core/context-reducer.d.ts +0 -15
- package/dist/core/context-reducer.d.ts.map +0 -1
- package/dist/core/context-reducer.js +0 -224
- package/dist/core/context-reducer.js.map +0 -1
- package/dist/core/output-storage-manager.d.ts +0 -14
- package/dist/core/output-storage-manager.d.ts.map +0 -1
- package/dist/core/output-storage-manager.js +0 -68
- package/dist/core/output-storage-manager.js.map +0 -1
- package/dist/core/output-tool-builder.d.ts +0 -6
- package/dist/core/output-tool-builder.d.ts.map +0 -1
- package/dist/core/output-tool-builder.js +0 -50
- package/dist/core/output-tool-builder.js.map +0 -1
package/CLAUDE.md
CHANGED
|
@@ -47,8 +47,6 @@ The pipeline executes in this order:
|
|
|
47
47
|
|
|
48
48
|
**Output Extraction**: Agents report structured data via MCP `report_outputs` tool or text format. Tool-based extraction preserves types (objects, arrays, numbers). Text-based falls back to regex. Single reusable MCP server created via `OutputToolBuilder` with generic `z.record(z.string(), z.unknown())` schema.
|
|
49
49
|
|
|
50
|
-
**Conditional Execution**: Condition Evaluator (`src/core/condition-evaluator.ts`) parses template expressions like `{{ stages.review.outputs.issues > 0 }}` and evaluates against pipeline state before delegation to the orchestrator.
|
|
51
|
-
|
|
52
50
|
**Retry Mechanism**: Retry Handler (`src/core/retry-handler.ts`) implements exponential/linear/fixed backoff strategies. `StageExecutor` uses it to wrap agent execution with configurable retry logic.
|
|
53
51
|
|
|
54
52
|
**UI Architecture**: Dual-mode operation - Interactive mode uses Ink/React terminal UI (`src/ui/pipeline-ui.tsx`) with real-time updates. Non-interactive mode uses simple console logging.
|
|
@@ -127,8 +125,11 @@ Tests use Vitest with extensive mocking:
|
|
|
127
125
|
|
|
128
126
|
**Dry Run Mode**: When enabled, skip all git commits but execute agents. Useful for testing pipelines.
|
|
129
127
|
|
|
128
|
+
**Publishing**: Always use `git tag vX.Y.Z` alongside `npm publish` so the git history and npm registry stay aligned.
|
|
129
|
+
|
|
130
130
|
### Development Flow
|
|
131
131
|
When planning new features or fixes, if you notice the changes will require a large refactoring, only do a detailed plan of the first phase of required changes and ask user for review before the next phases.
|
|
132
132
|
|
|
133
133
|
### Testing Style
|
|
134
|
-
Spawn tasks or agents whenver you identify large patterned changes required in tests (eg. replace all instances of mockQuery(...) with mockRuntime.execute(...))
|
|
134
|
+
Spawn tasks or agents whenver you identify large patterned changes required in tests (eg. replace all instances of mockQuery(...) with mockRuntime.execute(...))
|
|
135
|
+
|
package/{license ā LICENSE}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2025 Fernando Rojas
|
|
3
|
+
Copyright (c) 2025 Fernando Rojas | FRE Studios (https://fre-studios.com/)
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -1,28 +1,74 @@
|
|
|
1
1
|
# Agent Pipeline
|
|
2
2
|
|
|
3
|
-
> Intelligent agent orchestration with
|
|
3
|
+
> Intelligent multi-runtime agent orchestration with DAG-planned parallelism, conditional logic, automated git hygiene, and multi-channel notifications. Supports Claude Code, Codex, and any OpenAI-compatible API.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
<p align="center">
|
|
6
|
+
<video src="https://github.com/user-attachments/assets/eef9bda8-6184-45db-af6e-77307695f02e" width="720" autoplay loop muted playsinline></video>
|
|
7
|
+
<em>Running the front-end-parallel-example pipeline (9x speed)</em>
|
|
8
|
+
<br>
|
|
9
|
+
<strong><a href="https://fre-studios.github.io/Agent-Pipeline/examples/front-end-exploration/index.html">See what the agents built ā</a></strong>
|
|
10
|
+
</p>
|
|
6
11
|
|
|
7
|
-
|
|
12
|
+
## Key Use Cases
|
|
8
13
|
|
|
9
|
-
|
|
14
|
+
- Offload common agentic tasks that consume time and context from the main agent loop.
|
|
15
|
+
- Quickly explore new and divergent design concepts.
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
## Agent Pipeline Ergonomics
|
|
18
|
+
|
|
19
|
+
- Everything is a file in the filesystem
|
|
20
|
+
- Agents are just `.md` files located in the `.agent-pipeline/agents/` directory.
|
|
21
|
+
- Agents use the `handover.md` file for handoff to the next agent via `.agent-pipeline/instructions/handover.md`.
|
|
22
|
+
- When looping is enabled, a dedicated loop agent runs after all stages to decide whether to queue the next iteration using `.agent-pipeline/instructions/loop.md`.
|
|
23
|
+
|
|
24
|
+
```yaml
|
|
25
|
+
name: my-pipeline
|
|
26
|
+
trigger: manual
|
|
27
|
+
|
|
28
|
+
agents:
|
|
29
|
+
- name: first-agent
|
|
30
|
+
agent: .agent-pipeline/agents/first-agent.md
|
|
31
|
+
|
|
32
|
+
- name: second-agent
|
|
33
|
+
agent: .agent-pipeline/agents/second-agent.md
|
|
34
|
+
dependsOn:
|
|
35
|
+
- first-agent
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Capable models (Claude Opus/Sonnet, GPT-5.2, DeepSeek V3.2, etc.) can understand directions very well: you can tell any agent (in their respective `.md` file) to "pass X data to next agent" or "create new pipeline for next plan phase if plan status is not complete" and the agent and pipeline will perform as you expect.
|
|
39
|
+
|
|
40
|
+
> **Note:** Looping must be enabled in the pipeline YAML for loops to run.
|
|
41
|
+
|
|
42
|
+
## Quick Start
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npm install -g agent-pipeline
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Then `cd` into an empty or existing project directory and run:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
agent-pipeline init
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Finally, run a pipeline:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# For new/empty projects
|
|
58
|
+
agent-pipeline run front-end-parallel-example
|
|
59
|
+
|
|
60
|
+
# For existing projects with code changes
|
|
61
|
+
agent-pipeline run post-commit-example
|
|
62
|
+
```
|
|
20
63
|
|
|
21
64
|
## Prerequisites
|
|
22
65
|
|
|
23
66
|
- **Node.js** (v18 or higher)
|
|
24
67
|
- **Git** (configured with user name and email)
|
|
25
|
-
- **
|
|
68
|
+
- **At least one agent runtime:**
|
|
69
|
+
- **Claude Code** (`claude` CLI) ā default runtime with full tool suite
|
|
70
|
+
- **Codex** (`codex` CLI) ā OpenAI's Codex with filesystem tools
|
|
71
|
+
- **OpenAI-compatible API key** ā for any Chat Completions endpoint (OpenAI, DeepSeek, Together, Groq, Ollama, etc.)
|
|
26
72
|
- **GitHub CLI** (`gh`) ā optional unless you enable automated PR creation
|
|
27
73
|
- Install: `brew install gh` (macOS) or [see docs](https://cli.github.com/)
|
|
28
74
|
- Authenticate: `gh auth login`
|
|
@@ -45,31 +91,31 @@ npm run build
|
|
|
45
91
|
npm link
|
|
46
92
|
```
|
|
47
93
|
|
|
48
|
-
##
|
|
94
|
+
## Usage Guide
|
|
49
95
|
|
|
50
96
|
### 1. Initialize New Project
|
|
51
97
|
|
|
52
98
|
```bash
|
|
53
|
-
# Initialize with minimal test pipeline
|
|
54
99
|
agent-pipeline init
|
|
55
|
-
|
|
56
|
-
# Initialize with a specific example
|
|
57
|
-
agent-pipeline init post-commit
|
|
58
|
-
|
|
59
|
-
# Initialize with all examples
|
|
60
|
-
agent-pipeline init --all
|
|
61
100
|
```
|
|
62
101
|
|
|
63
|
-
This scaffolds
|
|
102
|
+
This scaffolds three example pipelines (`front-end-parallel-example`, `post-commit-example`, and `loop-example`), required agent definitions, and the directory structure (`.agent-pipeline/`, `.agent-pipeline/agents/`). Agents from installed Claude Code plugins are automatically discovered, with support for additional runtime agent discovery coming soon.
|
|
64
103
|
|
|
65
104
|
### 2. Run Your First Pipeline
|
|
66
105
|
|
|
67
106
|
```bash
|
|
68
|
-
# Run
|
|
69
|
-
agent-pipeline run
|
|
107
|
+
# Run the parallel design exploration (works on any project)
|
|
108
|
+
agent-pipeline run front-end-parallel-example
|
|
109
|
+
|
|
110
|
+
# For existing projects, try the post-commit workflow
|
|
111
|
+
agent-pipeline run post-commit-example
|
|
112
|
+
|
|
113
|
+
# Try the looping Socratic exploration (demonstrates iterative agents)
|
|
114
|
+
agent-pipeline run loop-example
|
|
70
115
|
```
|
|
71
116
|
|
|
72
117
|
**What you'll see:** live terminal UI with status badges, real-time agent output streaming, atomic commits per stage, and a pipeline summary with timing and results.
|
|
118
|
+
Pipelines with git configured execute in isolated git worktrees by default, so your working directory stays untouched.
|
|
73
119
|
|
|
74
120
|
### 3. Explore Your Pipeline History
|
|
75
121
|
|
|
@@ -85,14 +131,12 @@ agent-pipeline analytics --pipeline <name> --days 30
|
|
|
85
131
|
### 4. Try Advanced Features
|
|
86
132
|
|
|
87
133
|
```bash
|
|
88
|
-
#
|
|
89
|
-
agent-pipeline
|
|
90
|
-
|
|
91
|
-
# Conditional logic based on previous stage outputs
|
|
92
|
-
agent-pipeline run conditional-example
|
|
134
|
+
# Install git hooks for automated post-commit reviews
|
|
135
|
+
agent-pipeline hooks install post-commit-example
|
|
136
|
+
# Requires git.branchStrategy configured in the pipeline
|
|
93
137
|
|
|
94
|
-
#
|
|
95
|
-
agent-pipeline
|
|
138
|
+
# Clone and customize a pipeline
|
|
139
|
+
agent-pipeline clone front-end-parallel-example my-custom-pipeline
|
|
96
140
|
```
|
|
97
141
|
|
|
98
142
|
---
|
|
@@ -106,25 +150,28 @@ agent-pipeline run git-workflow-example
|
|
|
106
150
|
name: my-pipeline
|
|
107
151
|
trigger: manual
|
|
108
152
|
|
|
109
|
-
|
|
153
|
+
git:
|
|
110
154
|
autoCommit: true
|
|
111
155
|
commitPrefix: "[pipeline:{{stage}}]"
|
|
112
|
-
failureStrategy: continue
|
|
113
|
-
preserveWorkingTree: false
|
|
114
156
|
|
|
115
157
|
agents:
|
|
116
158
|
- name: code-review
|
|
117
|
-
agent: .
|
|
118
|
-
|
|
159
|
+
agent: .agent-pipeline/agents/code-reviewer.md
|
|
160
|
+
|
|
161
|
+
- name: security-review
|
|
162
|
+
agent: .agent-pipeline/agents/security-reviewer.md
|
|
119
163
|
|
|
120
|
-
- name:
|
|
121
|
-
agent: .
|
|
164
|
+
- name: memory-updater
|
|
165
|
+
agent: .agent-pipeline/agents/memory-updater.md
|
|
166
|
+
dependsOn:
|
|
167
|
+
- code-review
|
|
168
|
+
- security-review
|
|
122
169
|
```
|
|
123
170
|
|
|
124
171
|
#### 2. Create Agent Definitions
|
|
125
172
|
|
|
126
173
|
```markdown
|
|
127
|
-
<!-- .
|
|
174
|
+
<!-- .agent-pipeline/agents/code-reviewer.md -->
|
|
128
175
|
# Code Review Agent
|
|
129
176
|
|
|
130
177
|
You are a code review agent in an automated pipeline.
|
|
@@ -144,8 +191,19 @@ agent-pipeline run my-pipeline
|
|
|
144
191
|
- `docs/configuration.md` ā Pipeline settings, git workflow, notifications, and context reduction details.
|
|
145
192
|
- `docs/examples.md` ā Ready-to-run sample pipelines shipped with the CLI.
|
|
146
193
|
- `docs/cli.md` ā Command reference for pipeline, agent, and git integration workflows.
|
|
147
|
-
|
|
148
|
-
|
|
194
|
+
|
|
195
|
+
## Features
|
|
196
|
+
|
|
197
|
+
- **Pipeline orchestration** ā `PipelineRunner` combines DAG planning, conditional gating, and per-stage retries backed by `RetryHandler`.
|
|
198
|
+
- **Git workflow automation** ā Worktrees isolate runs by default, while `BranchManager` and `PRCreator` manage dedicated branches and PRs.
|
|
199
|
+
- **State & context management** ā `StateManager` persists run history while `HandoverManager` enables filesystem-based communication between stages.
|
|
200
|
+
- **Runtime flexibility** ā Pluggable agent runtimes (Claude Code Headless, Claude SDK, Codex Headless, OpenAI-compatible) registered via `AgentRuntimeRegistry`.
|
|
201
|
+
- **Model flexibility** ā Mix models across runtimes and providers per stage for cost optimization (up to 90% savings on simple tasks).
|
|
202
|
+
- **Cost controls** ā Set `maxTurns` and `maxThinkingTokens` to prevent runaway agents and enable deep reasoning when needed.
|
|
203
|
+
- **Observability** ā Ink-powered live UI, interactive history browser, and analytics reports generated from stored run data.
|
|
204
|
+
- **Notifications** ā `NotificationManager` sends desktop and Slack notifications with event filtering and fail-safe delivery.
|
|
205
|
+
- **Permission control** ā Defaults to `acceptEdits` mode for automated workflows, respecting `.claude/settings.json` allow/deny rules.
|
|
206
|
+
- **YAML-first configuration** ā Schema-validated pipelines with filesystem-based stage handover and customizable commit messages.
|
|
149
207
|
|
|
150
208
|
## Architecture Overview
|
|
151
209
|
|
|
@@ -155,28 +213,35 @@ Key components:
|
|
|
155
213
|
- `src/core/group-execution-orchestrator.ts` ā Applies conditional logic, executes groups (parallel or sequential), and triggers context reduction.
|
|
156
214
|
- `src/core/stage-executor.ts` ā Runs individual agents with retries, token estimation, and git commits.
|
|
157
215
|
- `src/core/state-manager.ts` ā Persists pipeline state under `.agent-pipeline/state/runs/`.
|
|
216
|
+
- `src/core/worktree-manager.ts` ā Manages git worktrees for default pipeline isolation.
|
|
158
217
|
- `src/core/branch-manager.ts` / `src/core/git-manager.ts` ā Handle branch isolation and git commands.
|
|
218
|
+
- `src/core/handover-manager.ts` ā Manages filesystem-based stage communication via handover files.
|
|
159
219
|
- `src/core/pr-creator.ts` ā Integrates with GitHub CLI for PR automation.
|
|
220
|
+
- `src/core/agent-runtime-registry.ts` ā Registry for pluggable agent runtimes (Claude Code Headless, Claude SDK, Codex Headless, OpenAI-compatible).
|
|
160
221
|
- `src/utils/token-estimator.ts` ā Provides `smartCount()` for context window monitoring.
|
|
161
|
-
- `src/ui/pipeline-ui.tsx` & `src/
|
|
222
|
+
- `src/ui/pipeline-ui.tsx` & `src/cli/commands/history.tsx` ā Ink UIs for live runs and history browsing.
|
|
162
223
|
- `src/analytics/pipeline-analytics.ts` ā Generates aggregated metrics for the `analytics` command.
|
|
163
224
|
- `src/notifications/notification-manager.ts` ā Dispatches desktop and Slack notifications.
|
|
164
|
-
- `src/
|
|
225
|
+
- `src/validators/` ā Modular validation for pipeline structure, DAG, agents, and notifications.
|
|
226
|
+
- `src/cli/commands/` ā Command implementations (`run`, `cleanup`, `hooks`, `agent`, etc.).
|
|
165
227
|
|
|
166
228
|
```
|
|
167
229
|
agent-pipeline/
|
|
168
|
-
āāā .agent-pipeline/
|
|
230
|
+
āāā .agent-pipeline/
|
|
231
|
+
ā āāā agents/ # Agent prompt definitions (.md files)
|
|
232
|
+
ā āāā pipelines/ # Pipeline configurations (.yml files)
|
|
233
|
+
ā āāā state/runs/ # Persisted run history
|
|
169
234
|
āāā docs/ # User and developer documentation
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
āāā .
|
|
235
|
+
āāā src/
|
|
236
|
+
āāā analytics/ # Metrics and reporting
|
|
237
|
+
āāā cli/commands/ # Command implementations
|
|
238
|
+
āāā config/ # Schema and loader
|
|
239
|
+
āāā core/ # Execution engine
|
|
240
|
+
āāā notifications/ # Desktop and Slack notifiers
|
|
241
|
+
āāā ui/ # Ink terminal components
|
|
242
|
+
āāā utils/ # Logging, errors, helpers
|
|
243
|
+
āāā validators/ # Pipeline validation modules
|
|
244
|
+
āāā index.ts # CLI entry point
|
|
180
245
|
```
|
|
181
246
|
|
|
182
247
|
## Git History Example
|
|
@@ -3,7 +3,7 @@ import * as path from 'path';
|
|
|
3
3
|
import { PipelineLoader } from '../../../config/pipeline-loader.js';
|
|
4
4
|
export async function agentInfoCommand(repoPath, agentName) {
|
|
5
5
|
try {
|
|
6
|
-
const agentsDir = path.join(repoPath, '.
|
|
6
|
+
const agentsDir = path.join(repoPath, '.agent-pipeline', 'agents');
|
|
7
7
|
let agentPath = path.join(agentsDir, `${agentName}.md`);
|
|
8
8
|
try {
|
|
9
9
|
await fs.access(agentPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../src/cli/commands/agent/info.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,SAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../src/cli/commands/agent/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import * as fs from 'fs/promises';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
export async function listAgentsCommand(repoPath) {
|
|
4
4
|
try {
|
|
5
|
-
const agentsDir = path.join(repoPath, '.
|
|
5
|
+
const agentsDir = path.join(repoPath, '.agent-pipeline', 'agents');
|
|
6
6
|
try {
|
|
7
7
|
await fs.access(agentsDir);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/cli/commands/agent/list.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAS7B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACtD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/cli/commands/agent/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/agent/pull.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/agent/pull.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAsDf"}
|
|
@@ -3,62 +3,35 @@ import * as path from 'path';
|
|
|
3
3
|
import { AgentImporter } from '../../utils/agent-importer.js';
|
|
4
4
|
import { InteractivePrompts } from '../../utils/interactive-prompts.js';
|
|
5
5
|
export async function pullAgentsCommand(repoPath, options = {}) {
|
|
6
|
-
const agentsDir = path.join(repoPath, '.
|
|
6
|
+
const agentsDir = path.join(repoPath, '.agent-pipeline', 'agents');
|
|
7
7
|
try {
|
|
8
8
|
await fs.mkdir(agentsDir, { recursive: true });
|
|
9
9
|
if (options.source) {
|
|
10
10
|
console.log('ā ļø Custom source pull not yet implemented');
|
|
11
11
|
console.log(' Falling back to Claude Code plugins\n');
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
console.log('\nš¦ Searching for Claude Code plugin agents...');
|
|
14
|
+
const discoveredAgents = await AgentImporter.discoverPluginAgents();
|
|
15
|
+
if (discoveredAgents.length === 0) {
|
|
15
16
|
console.log('\nš” Tips for adding agents:');
|
|
16
17
|
console.log(' 1. Install Claude Code plugins with agent collections');
|
|
17
|
-
console.log(' 2. Create custom agents in .
|
|
18
|
+
console.log(' 2. Create custom agents in .agent-pipeline/agents/');
|
|
18
19
|
console.log(' 3. Import agents from files or URLs (coming soon)\n');
|
|
19
20
|
return;
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const source = await fs.readFile(agent.originalPath, 'utf-8');
|
|
32
|
-
const cleanExisting = existing.replace(/<!--[\s\S]*?-->\n\n/, '');
|
|
33
|
-
const cleanSource = source;
|
|
34
|
-
if (cleanExisting !== cleanSource) {
|
|
35
|
-
console.log(` š ${agent.agentName} - UPDATE AVAILABLE`);
|
|
36
|
-
const override = await InteractivePrompts.confirm(` Update ${agent.agentName}?`, false);
|
|
37
|
-
if (override) {
|
|
38
|
-
const enhancedContent = `<!--
|
|
39
|
-
Imported from Claude Code Plugin
|
|
40
|
-
Marketplace: ${agent.marketplace}
|
|
41
|
-
Plugin: ${agent.plugin}
|
|
42
|
-
Original: ${agent.agentName}.md
|
|
43
|
-
Imported: ${new Date().toISOString()}
|
|
44
|
-
Updated: ${new Date().toISOString()}
|
|
45
|
-
-->
|
|
46
|
-
|
|
47
|
-
${cleanSource}`;
|
|
48
|
-
await fs.writeFile(targetPath, enhancedContent, 'utf-8');
|
|
49
|
-
console.log(` ā
Updated\n`);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
console.log(` āļø Skipped\n`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
22
|
+
console.log(` Found ${discoveredAgents.length} agent(s) across installed plugins\n`);
|
|
23
|
+
if (options.all) {
|
|
24
|
+
await AgentImporter.importPluginAgents(agentsDir, { silent: true });
|
|
25
|
+
await showImportSummary(agentsDir, discoveredAgents);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const selectedAgents = await selectAgentsInteractively(discoveredAgents);
|
|
29
|
+
if (selectedAgents.length === 0) {
|
|
30
|
+
console.log('\nNo agents selected. Exiting.\n');
|
|
31
|
+
return;
|
|
60
32
|
}
|
|
61
|
-
|
|
33
|
+
await AgentImporter.importSelectedAgents(agentsDir, selectedAgents);
|
|
34
|
+
console.log('ā
Agent pull complete!\n');
|
|
62
35
|
console.log('š” Next steps:');
|
|
63
36
|
console.log(' - View agents: agent-pipeline agent list');
|
|
64
37
|
console.log(' - Create pipeline: agent-pipeline create\n');
|
|
@@ -68,4 +41,54 @@ ${cleanSource}`;
|
|
|
68
41
|
process.exit(1);
|
|
69
42
|
}
|
|
70
43
|
}
|
|
44
|
+
async function selectAgentsInteractively(agents) {
|
|
45
|
+
const grouped = agents.reduce((acc, agent) => {
|
|
46
|
+
const key = `${agent.marketplace}/${agent.plugin}`;
|
|
47
|
+
if (!acc[key])
|
|
48
|
+
acc[key] = [];
|
|
49
|
+
acc[key].push(agent);
|
|
50
|
+
return acc;
|
|
51
|
+
}, {});
|
|
52
|
+
const options = [];
|
|
53
|
+
const agentMap = new Map();
|
|
54
|
+
for (const [pluginKey, pluginAgents] of Object.entries(grouped)) {
|
|
55
|
+
for (const agent of pluginAgents) {
|
|
56
|
+
const key = `${agent.marketplace}:${agent.plugin}:${agent.agentName}`;
|
|
57
|
+
options.push({
|
|
58
|
+
name: `${agent.agentName} (${pluginKey})`,
|
|
59
|
+
value: key
|
|
60
|
+
});
|
|
61
|
+
agentMap.set(key, agent);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const selectedKeys = await InteractivePrompts.multiSelect('\nSelect agents to import:', options);
|
|
65
|
+
return selectedKeys
|
|
66
|
+
.map(key => agentMap.get(key))
|
|
67
|
+
.filter((agent) => agent !== undefined);
|
|
68
|
+
}
|
|
69
|
+
async function showImportSummary(agentsDir, agents) {
|
|
70
|
+
let imported = 0;
|
|
71
|
+
let skipped = 0;
|
|
72
|
+
for (const agent of agents) {
|
|
73
|
+
const targetPath = path.join(agentsDir, agent.targetName);
|
|
74
|
+
try {
|
|
75
|
+
await fs.access(targetPath);
|
|
76
|
+
const content = await fs.readFile(targetPath, 'utf-8');
|
|
77
|
+
if (content.includes('Imported from Claude Code Plugin')) {
|
|
78
|
+
imported++;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
skipped++;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
skipped++;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
console.log(`\nš Import complete: ${imported} imported, ${skipped} skipped\n`);
|
|
89
|
+
console.log('ā
Agent pull complete!\n');
|
|
90
|
+
console.log('š” Next steps:');
|
|
91
|
+
console.log(' - View agents: agent-pipeline agent list');
|
|
92
|
+
console.log(' - Create pipeline: agent-pipeline create\n');
|
|
93
|
+
}
|
|
71
94
|
//# sourceMappingURL=pull.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/cli/commands/agent/pull.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/cli/commands/agent/pull.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,10 @@ export interface CleanupOptions {
|
|
|
2
2
|
pipeline?: string;
|
|
3
3
|
force?: boolean;
|
|
4
4
|
deleteLogs?: boolean;
|
|
5
|
+
worktrees?: boolean;
|
|
6
|
+
all?: boolean;
|
|
7
|
+
prefix?: string;
|
|
8
|
+
deleteRemote?: boolean;
|
|
5
9
|
}
|
|
6
10
|
export declare function cleanupCommand(repoPath: string, options?: CleanupOptions): Promise<void>;
|
|
7
11
|
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cleanup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/cleanup.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAkNf"}
|