agent-pipeline 0.1.0 ā 0.1.1
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 +2 -3
- package/README.md +110 -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 +173 -58
- 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 +35 -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 +301 -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 +65 -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/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 +7 -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 +112 -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 +12 -3
- package/dist/core/parallel-executor.d.ts.map +1 -1
- package/dist/core/parallel-executor.js +92 -14
- 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 +13 -1
- package/dist/core/pipeline-runner.d.ts.map +1 -1
- package/dist/core/pipeline-runner.js +352 -60
- 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 +17 -9
- package/dist/core/stage-executor.d.ts.map +1 -1
- package/dist/core/stage-executor.js +152 -166
- 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 +118 -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 +17 -11
- 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/{license ā LICENSE} +0 -0
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.
|
|
@@ -131,4 +129,5 @@ Tests use Vitest with extensive mocking:
|
|
|
131
129
|
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
130
|
|
|
133
131
|
### 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(...))
|
|
132
|
+
Spawn tasks or agents whenver you identify large patterned changes required in tests (eg. replace all instances of mockQuery(...) with mockRuntime.execute(...))
|
|
133
|
+
|
package/README.md
CHANGED
|
@@ -1,28 +1,64 @@
|
|
|
1
1
|
# Agent Pipeline
|
|
2
2
|
|
|
3
|
-
> Intelligent agent orchestration with
|
|
3
|
+
> Intelligent agent orchestration with DAG-planned parallelism, conditional logic, automated git hygiene, and multi-channel notifications for Claude Code.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Key Use Cases
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- Offload common agentic tasks that consume time and context off the main agent loop.
|
|
8
|
+
- Quickly explore new and divergent design concepts.
|
|
8
9
|
|
|
9
|
-
##
|
|
10
|
+
## Agent Pipeline Ergonomics
|
|
10
11
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
- Everything is a file in the filesystem
|
|
13
|
+
- Agents are just `.md` files located in the `.agent-pipeline/agents/` directory.
|
|
14
|
+
- Agents use the `handover.md` file for handoff to the next agent via `.agent-pipeline/instructions/handover.md`.
|
|
15
|
+
- The last agent in a pipeline may create a loop using `.agent-pipeline/instructions/loop.md`.
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
name: my-pipeline
|
|
19
|
+
trigger: manual
|
|
20
|
+
|
|
21
|
+
agents:
|
|
22
|
+
- name: first-agent
|
|
23
|
+
agent: .agent-pipeline/agents/first-agent.md
|
|
24
|
+
|
|
25
|
+
- name: second-agent
|
|
26
|
+
agent: .agent-pipeline/agents/second-agent.md
|
|
27
|
+
dependsOn:
|
|
28
|
+
- first-agent
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
SOTA models like Claude Opus 4.5 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.
|
|
32
|
+
|
|
33
|
+
> **Note:** Looping must be enabled in the pipeline YAML for loops to run.
|
|
34
|
+
|
|
35
|
+
## Quick Start
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install -g agent-pipeline
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Then `cd` into an empty or existing project directory and run:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
agent-pipeline init
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Finally, run a pipeline:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# For new/empty projects
|
|
51
|
+
agent-pipeline run front-end-parallel-example
|
|
52
|
+
|
|
53
|
+
# For existing projects with code changes
|
|
54
|
+
agent-pipeline run post-commit-example
|
|
55
|
+
```
|
|
20
56
|
|
|
21
57
|
## Prerequisites
|
|
22
58
|
|
|
23
59
|
- **Node.js** (v18 or higher)
|
|
24
60
|
- **Git** (configured with user name and email)
|
|
25
|
-
- **Claude API Key** (set in
|
|
61
|
+
- **Claude Login or API Key** (set in Claude Code settings or in environment)
|
|
26
62
|
- **GitHub CLI** (`gh`) ā optional unless you enable automated PR creation
|
|
27
63
|
- Install: `brew install gh` (macOS) or [see docs](https://cli.github.com/)
|
|
28
64
|
- Authenticate: `gh auth login`
|
|
@@ -45,31 +81,31 @@ npm run build
|
|
|
45
81
|
npm link
|
|
46
82
|
```
|
|
47
83
|
|
|
48
|
-
##
|
|
84
|
+
## Usage Guide
|
|
49
85
|
|
|
50
86
|
### 1. Initialize New Project
|
|
51
87
|
|
|
52
88
|
```bash
|
|
53
|
-
# Initialize with minimal test pipeline
|
|
54
89
|
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
90
|
```
|
|
62
91
|
|
|
63
|
-
This scaffolds
|
|
92
|
+
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.
|
|
64
93
|
|
|
65
94
|
### 2. Run Your First Pipeline
|
|
66
95
|
|
|
67
96
|
```bash
|
|
68
|
-
# Run
|
|
69
|
-
agent-pipeline run
|
|
97
|
+
# Run the parallel design exploration (works on any project)
|
|
98
|
+
agent-pipeline run front-end-parallel-example
|
|
99
|
+
|
|
100
|
+
# For existing projects, try the post-commit workflow
|
|
101
|
+
agent-pipeline run post-commit-example
|
|
102
|
+
|
|
103
|
+
# Try the looping Socratic exploration (demonstrates iterative agents)
|
|
104
|
+
agent-pipeline run loop-example
|
|
70
105
|
```
|
|
71
106
|
|
|
72
107
|
**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.
|
|
108
|
+
Git configured runs execute in isolated git worktrees by default, so your working directory stays untouched.
|
|
73
109
|
|
|
74
110
|
### 3. Explore Your Pipeline History
|
|
75
111
|
|
|
@@ -85,14 +121,12 @@ agent-pipeline analytics --pipeline <name> --days 30
|
|
|
85
121
|
### 4. Try Advanced Features
|
|
86
122
|
|
|
87
123
|
```bash
|
|
88
|
-
#
|
|
89
|
-
agent-pipeline
|
|
90
|
-
|
|
91
|
-
# Conditional logic based on previous stage outputs
|
|
92
|
-
agent-pipeline run conditional-example
|
|
124
|
+
# Install git hooks for automated post-commit reviews
|
|
125
|
+
agent-pipeline hooks install post-commit-example
|
|
126
|
+
# Requires git.branchStrategy configured in the pipeline
|
|
93
127
|
|
|
94
|
-
#
|
|
95
|
-
agent-pipeline
|
|
128
|
+
# Clone and customize a pipeline
|
|
129
|
+
agent-pipeline clone front-end-parallel-example my-custom-pipeline
|
|
96
130
|
```
|
|
97
131
|
|
|
98
132
|
---
|
|
@@ -106,25 +140,28 @@ agent-pipeline run git-workflow-example
|
|
|
106
140
|
name: my-pipeline
|
|
107
141
|
trigger: manual
|
|
108
142
|
|
|
109
|
-
|
|
143
|
+
git:
|
|
110
144
|
autoCommit: true
|
|
111
145
|
commitPrefix: "[pipeline:{{stage}}]"
|
|
112
|
-
failureStrategy: continue
|
|
113
|
-
preserveWorkingTree: false
|
|
114
146
|
|
|
115
147
|
agents:
|
|
116
148
|
- name: code-review
|
|
117
|
-
agent: .
|
|
118
|
-
|
|
149
|
+
agent: .agent-pipeline/agents/code-reviewer.md
|
|
150
|
+
|
|
151
|
+
- name: security-review
|
|
152
|
+
agent: .agent-pipeline/agents/security-reviewer.md
|
|
119
153
|
|
|
120
|
-
- name:
|
|
121
|
-
agent: .
|
|
154
|
+
- name: memory-updater
|
|
155
|
+
agent: .agent-pipeline/agents/memory-updater.md
|
|
156
|
+
dependsOn:
|
|
157
|
+
- code-review
|
|
158
|
+
- security-review
|
|
122
159
|
```
|
|
123
160
|
|
|
124
161
|
#### 2. Create Agent Definitions
|
|
125
162
|
|
|
126
163
|
```markdown
|
|
127
|
-
<!-- .
|
|
164
|
+
<!-- .agent-pipeline/agents/code-reviewer.md -->
|
|
128
165
|
# Code Review Agent
|
|
129
166
|
|
|
130
167
|
You are a code review agent in an automated pipeline.
|
|
@@ -144,8 +181,19 @@ agent-pipeline run my-pipeline
|
|
|
144
181
|
- `docs/configuration.md` ā Pipeline settings, git workflow, notifications, and context reduction details.
|
|
145
182
|
- `docs/examples.md` ā Ready-to-run sample pipelines shipped with the CLI.
|
|
146
183
|
- `docs/cli.md` ā Command reference for pipeline, agent, and git integration workflows.
|
|
147
|
-
|
|
148
|
-
|
|
184
|
+
|
|
185
|
+
## Features
|
|
186
|
+
|
|
187
|
+
- **Pipeline orchestration** ā `PipelineRunner` combines DAG planning, conditional gating, and per-stage retries backed by `RetryHandler`.
|
|
188
|
+
- **Git workflow automation** ā Worktrees isolate runs by default, while `BranchManager` and `PRCreator` manage dedicated branches and PRs.
|
|
189
|
+
- **State & context management** ā `StateManager` persists run history while `HandoverManager` enables filesystem-based communication between stages.
|
|
190
|
+
- **Runtime flexibility** ā Pluggable agent runtimes (Claude SDK, Claude Code Headless) registered via `AgentRuntimeRegistry`.
|
|
191
|
+
- **Model flexibility** ā Mix Haiku, Sonnet, and Opus models per stage for cost optimization (up to 90% savings on simple tasks).
|
|
192
|
+
- **Cost controls** ā Set `maxTurns` and `maxThinkingTokens` to prevent runaway agents and enable deep reasoning when needed.
|
|
193
|
+
- **Observability** ā Ink-powered live UI, interactive history browser, and analytics reports generated from stored run data.
|
|
194
|
+
- **Notifications** ā `NotificationManager` sends desktop and Slack notifications with event filtering and fail-safe delivery.
|
|
195
|
+
- **Permission control** ā Defaults to `acceptEdits` mode for automated workflows, respecting `.claude/settings.json` allow/deny rules.
|
|
196
|
+
- **YAML-first configuration** ā Schema-validated pipelines with filesystem-based stage handover and customizable commit messages.
|
|
149
197
|
|
|
150
198
|
## Architecture Overview
|
|
151
199
|
|
|
@@ -155,28 +203,35 @@ Key components:
|
|
|
155
203
|
- `src/core/group-execution-orchestrator.ts` ā Applies conditional logic, executes groups (parallel or sequential), and triggers context reduction.
|
|
156
204
|
- `src/core/stage-executor.ts` ā Runs individual agents with retries, token estimation, and git commits.
|
|
157
205
|
- `src/core/state-manager.ts` ā Persists pipeline state under `.agent-pipeline/state/runs/`.
|
|
206
|
+
- `src/core/worktree-manager.ts` ā Manages git worktrees for default pipeline isolation.
|
|
158
207
|
- `src/core/branch-manager.ts` / `src/core/git-manager.ts` ā Handle branch isolation and git commands.
|
|
208
|
+
- `src/core/handover-manager.ts` ā Manages filesystem-based stage communication via handover files.
|
|
159
209
|
- `src/core/pr-creator.ts` ā Integrates with GitHub CLI for PR automation.
|
|
210
|
+
- `src/core/agent-runtime-registry.ts` ā Registry for pluggable agent runtimes (Claude SDK, Claude Code Headless).
|
|
160
211
|
- `src/utils/token-estimator.ts` ā Provides `smartCount()` for context window monitoring.
|
|
161
|
-
- `src/ui/pipeline-ui.tsx` & `src/
|
|
212
|
+
- `src/ui/pipeline-ui.tsx` & `src/cli/commands/history.tsx` ā Ink UIs for live runs and history browsing.
|
|
162
213
|
- `src/analytics/pipeline-analytics.ts` ā Generates aggregated metrics for the `analytics` command.
|
|
163
214
|
- `src/notifications/notification-manager.ts` ā Dispatches desktop and Slack notifications.
|
|
164
|
-
- `src/
|
|
215
|
+
- `src/validators/` ā Modular validation for pipeline structure, DAG, agents, and notifications.
|
|
216
|
+
- `src/cli/commands/` ā Command implementations (`run`, `cleanup`, `hooks`, `agent`, etc.).
|
|
165
217
|
|
|
166
218
|
```
|
|
167
219
|
agent-pipeline/
|
|
168
|
-
āāā .agent-pipeline/
|
|
220
|
+
āāā .agent-pipeline/
|
|
221
|
+
ā āāā agents/ # Agent prompt definitions (.md files)
|
|
222
|
+
ā āāā pipelines/ # Pipeline configurations (.yml files)
|
|
223
|
+
ā āāā state/runs/ # Persisted run history
|
|
169
224
|
āāā docs/ # User and developer documentation
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
āāā .
|
|
225
|
+
āāā src/
|
|
226
|
+
āāā analytics/ # Metrics and reporting
|
|
227
|
+
āāā cli/commands/ # Command implementations
|
|
228
|
+
āāā config/ # Schema and loader
|
|
229
|
+
āāā core/ # Execution engine
|
|
230
|
+
āāā notifications/ # Desktop and Slack notifiers
|
|
231
|
+
āāā ui/ # Ink terminal components
|
|
232
|
+
āāā utils/ # Logging, errors, helpers
|
|
233
|
+
āāā validators/ # Pipeline validation modules
|
|
234
|
+
āāā index.ts # CLI entry point
|
|
180
235
|
```
|
|
181
236
|
|
|
182
237
|
## 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":"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,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAGD,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAGrD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAEpE,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;gBAChC,IAAI,EAAE,IAAI;gBACV,WAAW;gBACX,QAAQ,EAAE,KAAK,CAAC,KAAK;aACtB,CAAC,CAAC;QACL,CAAC;QAGD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAGpD,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,UAAU,CACX,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBACtC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC7C,WAAW,CACZ,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA6B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -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"}
|