agent-pipeline 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/CLAUDE.md +134 -0
  2. package/README.md +209 -0
  3. package/dist/analytics/pipeline-analytics.d.ts +19 -0
  4. package/dist/analytics/pipeline-analytics.d.ts.map +1 -0
  5. package/dist/analytics/pipeline-analytics.js +155 -0
  6. package/dist/analytics/pipeline-analytics.js.map +1 -0
  7. package/dist/analytics/types.d.ts +31 -0
  8. package/dist/analytics/types.d.ts.map +1 -0
  9. package/dist/analytics/types.js +2 -0
  10. package/dist/analytics/types.js.map +1 -0
  11. package/dist/cli/commands/agent/info.d.ts +2 -0
  12. package/dist/cli/commands/agent/info.d.ts.map +1 -0
  13. package/dist/cli/commands/agent/info.js +62 -0
  14. package/dist/cli/commands/agent/info.js.map +1 -0
  15. package/dist/cli/commands/agent/list.d.ts +2 -0
  16. package/dist/cli/commands/agent/list.d.ts.map +1 -0
  17. package/dist/cli/commands/agent/list.js +57 -0
  18. package/dist/cli/commands/agent/list.js.map +1 -0
  19. package/dist/cli/commands/agent/pull.d.ts +5 -0
  20. package/dist/cli/commands/agent/pull.d.ts.map +1 -0
  21. package/dist/cli/commands/agent/pull.js +71 -0
  22. package/dist/cli/commands/agent/pull.js.map +1 -0
  23. package/dist/cli/commands/analytics.d.ts +6 -0
  24. package/dist/cli/commands/analytics.d.ts.map +1 -0
  25. package/dist/cli/commands/analytics.js +101 -0
  26. package/dist/cli/commands/analytics.js.map +1 -0
  27. package/dist/cli/commands/cleanup.d.ts +7 -0
  28. package/dist/cli/commands/cleanup.d.ts.map +1 -0
  29. package/dist/cli/commands/cleanup.js +76 -0
  30. package/dist/cli/commands/cleanup.js.map +1 -0
  31. package/dist/cli/commands/history.d.ts +7 -0
  32. package/dist/cli/commands/history.d.ts.map +1 -0
  33. package/dist/cli/commands/history.js +173 -0
  34. package/dist/cli/commands/history.js.map +1 -0
  35. package/dist/cli/commands/init.d.ts +7 -0
  36. package/dist/cli/commands/init.d.ts.map +1 -0
  37. package/dist/cli/commands/init.js +158 -0
  38. package/dist/cli/commands/init.js.map +1 -0
  39. package/dist/cli/commands/install.d.ts +2 -0
  40. package/dist/cli/commands/install.d.ts.map +1 -0
  41. package/dist/cli/commands/install.js +15 -0
  42. package/dist/cli/commands/install.js.map +1 -0
  43. package/dist/cli/commands/list.d.ts +2 -0
  44. package/dist/cli/commands/list.d.ts.map +1 -0
  45. package/dist/cli/commands/list.js +13 -0
  46. package/dist/cli/commands/list.js.map +1 -0
  47. package/dist/cli/commands/pipeline/clone.d.ts +2 -0
  48. package/dist/cli/commands/pipeline/clone.d.ts.map +1 -0
  49. package/dist/cli/commands/pipeline/clone.js +42 -0
  50. package/dist/cli/commands/pipeline/clone.js.map +1 -0
  51. package/dist/cli/commands/pipeline/config.d.ts +2 -0
  52. package/dist/cli/commands/pipeline/config.d.ts.map +1 -0
  53. package/dist/cli/commands/pipeline/config.js +23 -0
  54. package/dist/cli/commands/pipeline/config.js.map +1 -0
  55. package/dist/cli/commands/pipeline/create.d.ts +2 -0
  56. package/dist/cli/commands/pipeline/create.d.ts.map +1 -0
  57. package/dist/cli/commands/pipeline/create.js +86 -0
  58. package/dist/cli/commands/pipeline/create.js.map +1 -0
  59. package/dist/cli/commands/pipeline/delete.d.ts +6 -0
  60. package/dist/cli/commands/pipeline/delete.d.ts.map +1 -0
  61. package/dist/cli/commands/pipeline/delete.js +60 -0
  62. package/dist/cli/commands/pipeline/delete.js.map +1 -0
  63. package/dist/cli/commands/pipeline/edit.d.ts +2 -0
  64. package/dist/cli/commands/pipeline/edit.d.ts.map +1 -0
  65. package/dist/cli/commands/pipeline/edit.js +50 -0
  66. package/dist/cli/commands/pipeline/edit.js.map +1 -0
  67. package/dist/cli/commands/pipeline/export.d.ts +6 -0
  68. package/dist/cli/commands/pipeline/export.d.ts.map +1 -0
  69. package/dist/cli/commands/pipeline/export.js +48 -0
  70. package/dist/cli/commands/pipeline/export.js.map +1 -0
  71. package/dist/cli/commands/pipeline/import.d.ts +2 -0
  72. package/dist/cli/commands/pipeline/import.d.ts.map +1 -0
  73. package/dist/cli/commands/pipeline/import.js +59 -0
  74. package/dist/cli/commands/pipeline/import.js.map +1 -0
  75. package/dist/cli/commands/pipeline/validate.d.ts +2 -0
  76. package/dist/cli/commands/pipeline/validate.d.ts.map +1 -0
  77. package/dist/cli/commands/pipeline/validate.js +28 -0
  78. package/dist/cli/commands/pipeline/validate.js.map +1 -0
  79. package/dist/cli/commands/rollback.d.ts +6 -0
  80. package/dist/cli/commands/rollback.d.ts.map +1 -0
  81. package/dist/cli/commands/rollback.js +49 -0
  82. package/dist/cli/commands/rollback.js.map +1 -0
  83. package/dist/cli/commands/run.d.ts +15 -0
  84. package/dist/cli/commands/run.d.ts.map +1 -0
  85. package/dist/cli/commands/run.js +61 -0
  86. package/dist/cli/commands/run.js.map +1 -0
  87. package/dist/cli/commands/status.d.ts +2 -0
  88. package/dist/cli/commands/status.d.ts.map +1 -0
  89. package/dist/cli/commands/status.js +52 -0
  90. package/dist/cli/commands/status.js.map +1 -0
  91. package/dist/cli/commands/test.d.ts +5 -0
  92. package/dist/cli/commands/test.d.ts.map +1 -0
  93. package/dist/cli/commands/test.js +18 -0
  94. package/dist/cli/commands/test.js.map +1 -0
  95. package/dist/cli/commands/uninstall.d.ts +2 -0
  96. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  97. package/dist/cli/commands/uninstall.js +6 -0
  98. package/dist/cli/commands/uninstall.js.map +1 -0
  99. package/dist/cli/hooks.d.ts +8 -0
  100. package/dist/cli/hooks.d.ts.map +1 -0
  101. package/dist/cli/hooks.js +98 -0
  102. package/dist/cli/hooks.js.map +1 -0
  103. package/dist/cli/templates/agents/cleanup-reporter.md +107 -0
  104. package/dist/cli/templates/agents/code-reducer.md +51 -0
  105. package/dist/cli/templates/agents/code-reviewer.md +34 -0
  106. package/dist/cli/templates/agents/context-reducer.md +94 -0
  107. package/dist/cli/templates/agents/dependency-auditor.md +127 -0
  108. package/dist/cli/templates/agents/detective-empath.md +26 -0
  109. package/dist/cli/templates/agents/detective-linguist.md +26 -0
  110. package/dist/cli/templates/agents/detective-logician.md +26 -0
  111. package/dist/cli/templates/agents/detective-skeptic.md +26 -0
  112. package/dist/cli/templates/agents/detective-statistician.md +26 -0
  113. package/dist/cli/templates/agents/doc-updater.md +30 -0
  114. package/dist/cli/templates/agents/judge.md +27 -0
  115. package/dist/cli/templates/agents/memory-updater.md +72 -0
  116. package/dist/cli/templates/agents/quality-checker.md +32 -0
  117. package/dist/cli/templates/agents/security-auditor.md +32 -0
  118. package/dist/cli/templates/agents/storyteller.md +26 -0
  119. package/dist/cli/templates/agents/summary.md +32 -0
  120. package/dist/cli/templates/agents/synthesizer.md +26 -0
  121. package/dist/cli/templates/pipelines/large-pipeline-example.yml +178 -0
  122. package/dist/cli/templates/pipelines/post-commit-example.yml +67 -0
  123. package/dist/cli/templates/pipelines/post-merge-example.yml +78 -0
  124. package/dist/cli/templates/pipelines/pre-commit-example.yml +41 -0
  125. package/dist/cli/templates/pipelines/pre-push-example.yml +51 -0
  126. package/dist/cli/templates/pipelines/test-pipeline.yml +90 -0
  127. package/dist/cli/utils/agent-importer.d.ts +21 -0
  128. package/dist/cli/utils/agent-importer.d.ts.map +1 -0
  129. package/dist/cli/utils/agent-importer.js +150 -0
  130. package/dist/cli/utils/agent-importer.js.map +1 -0
  131. package/dist/cli/utils/interactive-prompts.d.ts +10 -0
  132. package/dist/cli/utils/interactive-prompts.d.ts.map +1 -0
  133. package/dist/cli/utils/interactive-prompts.js +75 -0
  134. package/dist/cli/utils/interactive-prompts.js.map +1 -0
  135. package/dist/config/pipeline-loader.d.ts +14 -0
  136. package/dist/config/pipeline-loader.d.ts.map +1 -0
  137. package/dist/config/pipeline-loader.js +71 -0
  138. package/dist/config/pipeline-loader.js.map +1 -0
  139. package/dist/config/project-config-loader.d.ts +11 -0
  140. package/dist/config/project-config-loader.d.ts.map +1 -0
  141. package/dist/config/project-config-loader.js +100 -0
  142. package/dist/config/project-config-loader.js.map +1 -0
  143. package/dist/config/schema.d.ts +165 -0
  144. package/dist/config/schema.d.ts.map +1 -0
  145. package/dist/config/schema.js +2 -0
  146. package/dist/config/schema.js.map +1 -0
  147. package/dist/core/agent-query-runner.d.ts +25 -0
  148. package/dist/core/agent-query-runner.d.ts.map +1 -0
  149. package/dist/core/agent-query-runner.js +76 -0
  150. package/dist/core/agent-query-runner.js.map +1 -0
  151. package/dist/core/agent-runtime-registry.d.ts +11 -0
  152. package/dist/core/agent-runtime-registry.d.ts.map +1 -0
  153. package/dist/core/agent-runtime-registry.js +32 -0
  154. package/dist/core/agent-runtime-registry.js.map +1 -0
  155. package/dist/core/agent-runtimes/claude-code-headless-runtime.d.ts +16 -0
  156. package/dist/core/agent-runtimes/claude-code-headless-runtime.d.ts.map +1 -0
  157. package/dist/core/agent-runtimes/claude-code-headless-runtime.js +301 -0
  158. package/dist/core/agent-runtimes/claude-code-headless-runtime.js.map +1 -0
  159. package/dist/core/agent-runtimes/claude-sdk-runtime.d.ts +15 -0
  160. package/dist/core/agent-runtimes/claude-sdk-runtime.d.ts.map +1 -0
  161. package/dist/core/agent-runtimes/claude-sdk-runtime.js +92 -0
  162. package/dist/core/agent-runtimes/claude-sdk-runtime.js.map +1 -0
  163. package/dist/core/branch-manager.d.ts +15 -0
  164. package/dist/core/branch-manager.d.ts.map +1 -0
  165. package/dist/core/branch-manager.js +90 -0
  166. package/dist/core/branch-manager.js.map +1 -0
  167. package/dist/core/condition-evaluator.d.ts +16 -0
  168. package/dist/core/condition-evaluator.d.ts.map +1 -0
  169. package/dist/core/condition-evaluator.js +121 -0
  170. package/dist/core/condition-evaluator.js.map +1 -0
  171. package/dist/core/context-reducer.d.ts +15 -0
  172. package/dist/core/context-reducer.d.ts.map +1 -0
  173. package/dist/core/context-reducer.js +224 -0
  174. package/dist/core/context-reducer.js.map +1 -0
  175. package/dist/core/dag-planner.d.ts +13 -0
  176. package/dist/core/dag-planner.d.ts.map +1 -0
  177. package/dist/core/dag-planner.js +233 -0
  178. package/dist/core/dag-planner.js.map +1 -0
  179. package/dist/core/git-manager.d.ts +14 -0
  180. package/dist/core/git-manager.d.ts.map +1 -0
  181. package/dist/core/git-manager.js +70 -0
  182. package/dist/core/git-manager.js.map +1 -0
  183. package/dist/core/group-execution-orchestrator.d.ts +34 -0
  184. package/dist/core/group-execution-orchestrator.d.ts.map +1 -0
  185. package/dist/core/group-execution-orchestrator.js +238 -0
  186. package/dist/core/group-execution-orchestrator.js.map +1 -0
  187. package/dist/core/loop-state-manager.d.ts +29 -0
  188. package/dist/core/loop-state-manager.d.ts.map +1 -0
  189. package/dist/core/loop-state-manager.js +78 -0
  190. package/dist/core/loop-state-manager.js.map +1 -0
  191. package/dist/core/output-storage-manager.d.ts +14 -0
  192. package/dist/core/output-storage-manager.d.ts.map +1 -0
  193. package/dist/core/output-storage-manager.js +68 -0
  194. package/dist/core/output-storage-manager.js.map +1 -0
  195. package/dist/core/output-tool-builder.d.ts +6 -0
  196. package/dist/core/output-tool-builder.d.ts.map +1 -0
  197. package/dist/core/output-tool-builder.js +50 -0
  198. package/dist/core/output-tool-builder.js.map +1 -0
  199. package/dist/core/parallel-executor.d.ts +21 -0
  200. package/dist/core/parallel-executor.d.ts.map +1 -0
  201. package/dist/core/parallel-executor.js +93 -0
  202. package/dist/core/parallel-executor.js.map +1 -0
  203. package/dist/core/pipeline-finalizer.d.ts +24 -0
  204. package/dist/core/pipeline-finalizer.d.ts.map +1 -0
  205. package/dist/core/pipeline-finalizer.js +103 -0
  206. package/dist/core/pipeline-finalizer.js.map +1 -0
  207. package/dist/core/pipeline-initializer.d.ts +36 -0
  208. package/dist/core/pipeline-initializer.d.ts.map +1 -0
  209. package/dist/core/pipeline-initializer.js +105 -0
  210. package/dist/core/pipeline-initializer.js.map +1 -0
  211. package/dist/core/pipeline-runner.d.ts +36 -0
  212. package/dist/core/pipeline-runner.d.ts.map +1 -0
  213. package/dist/core/pipeline-runner.js +326 -0
  214. package/dist/core/pipeline-runner.js.map +1 -0
  215. package/dist/core/pr-creator.d.ts +23 -0
  216. package/dist/core/pr-creator.d.ts.map +1 -0
  217. package/dist/core/pr-creator.js +138 -0
  218. package/dist/core/pr-creator.js.map +1 -0
  219. package/dist/core/retry-handler.d.ts +15 -0
  220. package/dist/core/retry-handler.d.ts.map +1 -0
  221. package/dist/core/retry-handler.js +95 -0
  222. package/dist/core/retry-handler.js.map +1 -0
  223. package/dist/core/stage-executor.d.ts +27 -0
  224. package/dist/core/stage-executor.d.ts.map +1 -0
  225. package/dist/core/stage-executor.js +365 -0
  226. package/dist/core/stage-executor.js.map +1 -0
  227. package/dist/core/state-manager.d.ts +10 -0
  228. package/dist/core/state-manager.d.ts.map +1 -0
  229. package/dist/core/state-manager.js +61 -0
  230. package/dist/core/state-manager.js.map +1 -0
  231. package/dist/core/types/agent-runtime.d.ts +51 -0
  232. package/dist/core/types/agent-runtime.d.ts.map +1 -0
  233. package/dist/core/types/agent-runtime.js +2 -0
  234. package/dist/core/types/agent-runtime.js.map +1 -0
  235. package/dist/core/types/execution-graph.d.ts +29 -0
  236. package/dist/core/types/execution-graph.d.ts.map +1 -0
  237. package/dist/core/types/execution-graph.js +2 -0
  238. package/dist/core/types/execution-graph.js.map +1 -0
  239. package/dist/index.d.ts +3 -0
  240. package/dist/index.d.ts.map +1 -0
  241. package/dist/index.js +400 -0
  242. package/dist/index.js.map +1 -0
  243. package/dist/notifications/notification-manager.d.ts +12 -0
  244. package/dist/notifications/notification-manager.d.ts.map +1 -0
  245. package/dist/notifications/notification-manager.js +74 -0
  246. package/dist/notifications/notification-manager.js.map +1 -0
  247. package/dist/notifications/notifiers/base-notifier.d.ts +9 -0
  248. package/dist/notifications/notifiers/base-notifier.d.ts.map +1 -0
  249. package/dist/notifications/notifiers/base-notifier.js +27 -0
  250. package/dist/notifications/notifiers/base-notifier.js.map +1 -0
  251. package/dist/notifications/notifiers/local-notifier.d.ts +11 -0
  252. package/dist/notifications/notifiers/local-notifier.d.ts.map +1 -0
  253. package/dist/notifications/notifiers/local-notifier.js +91 -0
  254. package/dist/notifications/notifiers/local-notifier.js.map +1 -0
  255. package/dist/notifications/notifiers/slack-notifier.d.ts +13 -0
  256. package/dist/notifications/notifiers/slack-notifier.d.ts.map +1 -0
  257. package/dist/notifications/notifiers/slack-notifier.js +209 -0
  258. package/dist/notifications/notifiers/slack-notifier.js.map +1 -0
  259. package/dist/notifications/types.d.ts +34 -0
  260. package/dist/notifications/types.d.ts.map +1 -0
  261. package/dist/notifications/types.js +2 -0
  262. package/dist/notifications/types.js.map +1 -0
  263. package/dist/ui/components/execution-group.d.ts +10 -0
  264. package/dist/ui/components/execution-group.d.ts.map +1 -0
  265. package/dist/ui/components/execution-group.js +19 -0
  266. package/dist/ui/components/execution-group.js.map +1 -0
  267. package/dist/ui/components/stage-row.d.ts +10 -0
  268. package/dist/ui/components/stage-row.d.ts.map +1 -0
  269. package/dist/ui/components/stage-row.js +69 -0
  270. package/dist/ui/components/stage-row.js.map +1 -0
  271. package/dist/ui/components/status-badge.d.ts +7 -0
  272. package/dist/ui/components/status-badge.d.ts.map +1 -0
  273. package/dist/ui/components/status-badge.js +18 -0
  274. package/dist/ui/components/status-badge.js.map +1 -0
  275. package/dist/ui/components/summary-line.d.ts +9 -0
  276. package/dist/ui/components/summary-line.d.ts.map +1 -0
  277. package/dist/ui/components/summary-line.js +13 -0
  278. package/dist/ui/components/summary-line.js.map +1 -0
  279. package/dist/ui/pipeline-ui.d.ts +8 -0
  280. package/dist/ui/pipeline-ui.d.ts.map +1 -0
  281. package/dist/ui/pipeline-ui.js +82 -0
  282. package/dist/ui/pipeline-ui.js.map +1 -0
  283. package/dist/utils/error-factory.d.ts +21 -0
  284. package/dist/utils/error-factory.d.ts.map +1 -0
  285. package/dist/utils/error-factory.js +74 -0
  286. package/dist/utils/error-factory.js.map +1 -0
  287. package/dist/utils/errors.d.ts +11 -0
  288. package/dist/utils/errors.d.ts.map +1 -0
  289. package/dist/utils/errors.js +21 -0
  290. package/dist/utils/errors.js.map +1 -0
  291. package/dist/utils/gh-cli-checker.d.ts +6 -0
  292. package/dist/utils/gh-cli-checker.d.ts.map +1 -0
  293. package/dist/utils/gh-cli-checker.js +42 -0
  294. package/dist/utils/gh-cli-checker.js.map +1 -0
  295. package/dist/utils/logger.d.ts +16 -0
  296. package/dist/utils/logger.d.ts.map +1 -0
  297. package/dist/utils/logger.js +39 -0
  298. package/dist/utils/logger.js.map +1 -0
  299. package/dist/utils/pipeline-formatter.d.ts +10 -0
  300. package/dist/utils/pipeline-formatter.d.ts.map +1 -0
  301. package/dist/utils/pipeline-formatter.js +92 -0
  302. package/dist/utils/pipeline-formatter.js.map +1 -0
  303. package/dist/utils/token-estimator.d.ts +15 -0
  304. package/dist/utils/token-estimator.d.ts.map +1 -0
  305. package/dist/utils/token-estimator.js +46 -0
  306. package/dist/utils/token-estimator.js.map +1 -0
  307. package/dist/validators/pipeline-validator.d.ts +31 -0
  308. package/dist/validators/pipeline-validator.d.ts.map +1 -0
  309. package/dist/validators/pipeline-validator.js +540 -0
  310. package/dist/validators/pipeline-validator.js.map +1 -0
  311. package/license +21 -0
  312. package/package.json +90 -0
package/CLAUDE.md ADDED
@@ -0,0 +1,134 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ **Documentation Philosophy**: Keep all documentation minimal and scannable. Write only essential information in 1-2 sentences per concept. Avoid verbose explanations, extensive examples, or redundant details.
6
+
7
+ **Agent Pipeline Philosophy**: Less is more. Break up all tasks to the smallest fully coherent unit and use one agent per small task. This micro multi agent approach is how to get the most use of Agent Pipeline. Using the same agent with different inputs is perfectly fine as long as the agent itself is focused. The anti-pattern would be having a Swiss Army knife agent that does completely different things based on inputs.
8
+
9
+ See @README.md for comprehensive feature documentation and usage examples. Deep dives now live under:
10
+ - `docs/configuration.md` – pipeline settings, git workflow, notifications
11
+ - `docs/examples.md` – shipped pipeline templates
12
+ - `docs/cli.md` – command reference
13
+
14
+ ## Tech Stack
15
+ - **Language**: TypeScript (ES2022, ESNext modules)
16
+ - **UI Framework**: Ink (React for terminal) + React 18
17
+ - **Platforms**: Node.js v18+, cross-platform (macOS, Windows, Linux)
18
+ - **Key Dependencies**: Claude Agent SDK, simple-git, YAML parser, node-notifier
19
+
20
+ ## Architecture
21
+
22
+ ### Core Execution Flow
23
+
24
+ The pipeline executes in this order:
25
+
26
+ 1. **Pipeline Loader** (`src/config/pipeline-loader.ts`) - Parses YAML configurations
27
+ 2. **Pipeline Validator** (`src/validators/pipeline-validator.ts`) - Pre-flight checks, DAG cycle detection
28
+ 3. **DAG Planner** (`src/core/dag-planner.ts`) - Analyzes dependencies, creates execution graph with topological sort
29
+ 4. **Pipeline Runner** (`src/core/pipeline-runner.ts`) - Coordinates the run lifecycle via:
30
+ - **Pipeline Initializer** (`src/core/pipeline-initializer.ts`) – prepares git state, notifications, and execution context
31
+ - **Group Execution Orchestrator** (`src/core/group-execution-orchestrator.ts`) – evaluates conditions, executes stage groups (parallel or sequential), triggers context reduction
32
+ - **Pipeline Finalizer** (`src/core/pipeline-finalizer.ts`) – restores branches, summarizes results, optionally creates PRs
33
+ 5. **Parallel Executor** (`src/core/parallel-executor.ts`) - Runs independent stages concurrently
34
+ 6. **Stage Executor** (`src/core/stage-executor.ts`) - Executes individual agent stages with retry logic
35
+ 7. **Output Tool Builder** (`src/core/output-tool-builder.ts`) - Provides MCP `report_outputs` tool for structured data extraction
36
+ 8. **State Manager** (`src/core/state-manager.ts`) - Persists execution state to `.agent-pipeline/state/runs/`
37
+ 9. **PR Creator** (`src/core/pr-creator.ts`) - Creates GitHub PRs via `gh` CLI
38
+ 10. **Notification Manager** (`src/notifications/notification-manager.ts`) - Sends desktop/Slack notifications
39
+
40
+ ### Key Architectural Patterns
41
+
42
+ **DAG Execution**: Stages declare dependencies via `dependsOn` array. DAG Planner performs topological sort and groups stages by execution level. Each level runs in parallel, levels execute sequentially.
43
+
44
+ **State Management**: Each pipeline run gets a unique `runId`. State is saved after each stage group completes by `StateManager`. This enables rollback, analytics, and history browsing.
45
+
46
+ **Git Workflow**: Pipelines run on isolated branches (`pipeline/{name}` or `pipeline/{name}-{runId}`). Each stage creates an atomic commit. Original branch is restored after completion.
47
+
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
+
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
+ **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
+
54
+ **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.
55
+
56
+ **Permission Control**: Agents default to `acceptEdits` mode for automated workflows, allowing file operations without prompts while respecting `.claude/settings.json` allow/deny rules. Configurable per pipeline via `settings.permissionMode`.
57
+
58
+ ### Critical Files
59
+
60
+ - `src/config/schema.ts` - TypeScript interfaces for all configuration and state types
61
+ - `src/core/pipeline-runner.ts` - Entry point that wires initializer, group orchestrator, and finalizer
62
+ - `src/core/pipeline-initializer.ts` - Pre-run setup (git, notifications, parallel executor)
63
+ - `src/core/group-execution-orchestrator.ts` - Executes DAG groups, handles skips, saves state
64
+ - `src/core/pipeline-finalizer.ts` - Cleans up, restores branches, triggers PR creation/summaries
65
+ - `src/core/stage-executor.ts` - Stage execution with MCP tool integration and output extraction
66
+ - `src/core/output-tool-builder.ts` - Singleton MCP server for `report_outputs` tool
67
+ - `src/core/types/execution-graph.ts` - DAG type definitions
68
+ - `src/index.ts` - CLI entry point with command routing
69
+
70
+ ## Build Commands
71
+
72
+ ```bash
73
+ # Build TypeScript to dist/
74
+ npm run build
75
+
76
+ # Watch mode for development
77
+ npm run dev
78
+
79
+ # Run CLI in development (after build)
80
+ node dist/index.js <command>
81
+ # OR after npm link:
82
+ agent-pipeline <command>
83
+ ```
84
+
85
+ ## Test Commands
86
+
87
+ ```bash
88
+ # Run all tests with Vitest
89
+ npm test -- --run
90
+
91
+ # Run tests in watch mode
92
+ npm run test -- --watch
93
+
94
+ # Run specific test file
95
+ npm test src/__tests__/core/pipeline-runner.test.ts -- --run
96
+
97
+ # Run tests with coverage
98
+ npm test -- --coverage --run
99
+ ```
100
+
101
+ **IMPORTANT**: When running test commands via Bash, always include `--run` to avoid entering Vitest's interactive mode accidentally.
102
+
103
+ ### Test Architecture
104
+
105
+ Tests use Vitest with extensive mocking:
106
+ - `src/__tests__/mocks/` - Mock implementations (claude-sdk, git-manager, simple-git, etc.)
107
+ - `src/__tests__/fixtures/` - Test data (pipeline configs, states, git states)
108
+ - All core modules have 100% test coverage
109
+
110
+ ## Development Notes
111
+
112
+ **Module System**: Uses ESNext modules. All imports require `.js` extension (e.g., `import './foo.js'` even for `.ts` files).
113
+
114
+ **Git Manager**: Wraps `simple-git` for all git operations. Never use git directly - always use GitManager or BranchManager.
115
+
116
+ **Error Handling**: Custom error types in `src/utils/errors.ts`. Use `Logger` from `src/utils/logger.ts` for consistent logging.
117
+
118
+ **Notification System**: All notifications wrapped in try/catch - must never crash pipeline. Parallel sends to all channels (desktop + Slack).
119
+
120
+ **PR Creation**: Requires `gh` CLI installed and authenticated. Always check if PR exists before creating. Falls back gracefully if `gh` unavailable.
121
+
122
+ **State Files**: Located in `.agent-pipeline/state/runs/{runId}.json`. Each run is immutable once completed.
123
+
124
+ **Branch Strategies**:
125
+ - `reusable` - Same branch per pipeline (`pipeline/commit-review`)
126
+ - `unique-per-run` - Unique branch per run (`pipeline/commit-review-{runId}`)
127
+
128
+ **Dry Run Mode**: When enabled, skip all git commits but execute agents. Useful for testing pipelines.
129
+
130
+ ### Development Flow
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
+
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(...))
package/README.md ADDED
@@ -0,0 +1,209 @@
1
+ # Agent Pipeline
2
+
3
+ > Intelligent agent orchestration with parallel execution, conditional logic, git workflow automation, and multi-channel notifications for Claude Code
4
+
5
+ Last update: 2025-10-28
6
+
7
+ Agent Pipeline delivers an agent-driven CI/CD workflow with full visibility. Execute Claude agents with DAG-planned parallelism, conditional logic, retries, and automated git hygiene. Branch isolation, GitHub PR creation, local/Slack notifications, and a live terminal UI keep humans in the loop.
8
+
9
+ ## Features
10
+
11
+ - **Pipeline orchestration** – `PipelineRunner` combines DAG planning, conditional gating, and per-stage retries backed by `RetryHandler`.
12
+ - **Git workflow automation** – `BranchManager` and `PRCreator` isolate work on dedicated branches and open PRs via GitHub CLI.
13
+ - **State & context management** – `StateManager` persists run history while `ContextReducer` trims prompts using token-aware summaries and saved artifacts.
14
+ - **Model flexibility** – Mix Haiku, Sonnet, and Opus models per stage for cost optimization (up to 90% savings on simple tasks).
15
+ - **Cost controls** – Set `maxTurns` and `maxThinkingTokens` to prevent runaway agents and enable deep reasoning when needed.
16
+ - **Observability** – Ink-powered live UI, interactive history browser, and analytics reports generated from stored run data.
17
+ - **Notifications** – `NotificationManager` sends desktop and Slack notifications with event filtering and fail-safe delivery.
18
+ - **Permission control** – Defaults to `acceptEdits` mode for automated workflows, respecting `.claude/settings.json` allow/deny rules.
19
+ - **YAML-first configuration** – Schema-validated pipelines with structured agent outputs and customizable commit messages.
20
+
21
+ ## Prerequisites
22
+
23
+ - **Node.js** (v18 or higher)
24
+ - **Git** (configured with user name and email)
25
+ - **Claude API Key** (set in environment or Claude Code settings)
26
+ - **GitHub CLI** (`gh`) – optional unless you enable automated PR creation
27
+ - Install: `brew install gh` (macOS) or [see docs](https://cli.github.com/)
28
+ - Authenticate: `gh auth login`
29
+
30
+ ## Installation
31
+
32
+ ### npm (Recommended)
33
+
34
+ ```bash
35
+ npm install -g agent-pipeline
36
+ ```
37
+
38
+ ### From Source
39
+
40
+ ```bash
41
+ git clone https://github.com/FRE-Studios/agent-pipeline.git
42
+ cd agent-pipeline
43
+ npm install
44
+ npm run build
45
+ npm link
46
+ ```
47
+
48
+ ## Quick Start
49
+
50
+ ### 1. Initialize New Project
51
+
52
+ ```bash
53
+ # Initialize with minimal test pipeline
54
+ 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
+ ```
62
+
63
+ This scaffolds the `test-pipeline`, optional example pipelines, required agent definitions, and the directory structure (`.agent-pipeline/`, `.claude/agents/`). Agents from installed Claude Code plugins are automatically imported.
64
+
65
+ ### 2. Run Your First Pipeline
66
+
67
+ ```bash
68
+ # Run with interactive live UI (default)
69
+ agent-pipeline run test-pipeline
70
+ ```
71
+
72
+ **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.
73
+
74
+ ### 3. Explore Your Pipeline History
75
+
76
+ ```bash
77
+ # Browse past runs interactively
78
+ agent-pipeline history
79
+
80
+ # View performance metrics and analytics
81
+ agent-pipeline analytics
82
+ agent-pipeline analytics --pipeline <name> --days 30
83
+ ```
84
+
85
+ ### 4. Try Advanced Features
86
+
87
+ ```bash
88
+ # Parallel execution with DAG dependencies
89
+ agent-pipeline run parallel-example
90
+
91
+ # Conditional logic based on previous stage outputs
92
+ agent-pipeline run conditional-example
93
+
94
+ # Git workflow with branch isolation and PR creation
95
+ agent-pipeline run git-workflow-example
96
+ ```
97
+
98
+ ---
99
+
100
+ ### Manual Setup (Alternative)
101
+
102
+ #### 1. Create a Pipeline Configuration
103
+
104
+ ```yaml
105
+ # .agent-pipeline/pipelines/my-pipeline.yml
106
+ name: my-pipeline
107
+ trigger: manual
108
+
109
+ settings:
110
+ autoCommit: true
111
+ commitPrefix: "[pipeline:{{stage}}]"
112
+ failureStrategy: continue
113
+ preserveWorkingTree: false
114
+
115
+ agents:
116
+ - name: code-review
117
+ agent: .claude/agents/code-reviewer.md
118
+ timeout: 120
119
+
120
+ - name: code-reducer
121
+ agent: .claude/agents/code-reducer.md
122
+ ```
123
+
124
+ #### 2. Create Agent Definitions
125
+
126
+ ```markdown
127
+ <!-- .claude/agents/code-reviewer.md -->
128
+ # Code Review Agent
129
+
130
+ You are a code review agent in an automated pipeline.
131
+
132
+ ## Your Task
133
+ Review the code changes and provide feedback...
134
+ ```
135
+
136
+ #### 3. Run the Pipeline
137
+
138
+ ```bash
139
+ agent-pipeline run my-pipeline
140
+ ```
141
+
142
+ ## Documentation
143
+
144
+ - `docs/configuration.md` – Pipeline settings, git workflow, notifications, and context reduction details.
145
+ - `docs/examples.md` – Ready-to-run sample pipelines shipped with the CLI.
146
+ - `docs/cli.md` – Command reference for pipeline, agent, and git integration workflows.
147
+ - `docs/data-flow-map.md` – Visual data flow diagrams showing how data moves through the system.
148
+ - `docs/dev/` – Historical design notes and roadmap snapshots.
149
+
150
+ ## Architecture Overview
151
+
152
+ Key components:
153
+
154
+ - `src/core/pipeline-runner.ts` – Orchestrates initialization, execution groups, and finalization.
155
+ - `src/core/group-execution-orchestrator.ts` – Applies conditional logic, executes groups (parallel or sequential), and triggers context reduction.
156
+ - `src/core/stage-executor.ts` – Runs individual agents with retries, token estimation, and git commits.
157
+ - `src/core/state-manager.ts` – Persists pipeline state under `.agent-pipeline/state/runs/`.
158
+ - `src/core/branch-manager.ts` / `src/core/git-manager.ts` – Handle branch isolation and git commands.
159
+ - `src/core/pr-creator.ts` – Integrates with GitHub CLI for PR automation.
160
+ - `src/utils/token-estimator.ts` – Provides `smartCount()` for context window monitoring.
161
+ - `src/ui/pipeline-ui.tsx` & `src/ui/history-browser.tsx` – Ink UIs for live runs and history browsing.
162
+ - `src/analytics/pipeline-analytics.ts` – Generates aggregated metrics for the `analytics` command.
163
+ - `src/notifications/notification-manager.ts` – Dispatches desktop and Slack notifications.
164
+ - `src/cli/commands/` – Command implementations (`run`, `install`, `cleanup`, `rollback`, etc.).
165
+
166
+ ```
167
+ agent-pipeline/
168
+ ├── .agent-pipeline/ # Pipeline definitions and run history
169
+ ├── docs/ # User and developer documentation
170
+ ├── src/
171
+ │ ├── analytics/
172
+ │ ├── cli/commands/
173
+ │ ├── config/
174
+ │ ├── core/
175
+ │ ├── notifications/
176
+ │ ├── ui/
177
+ │ ├── utils/
178
+ │ └── index.ts # CLI entry point
179
+ └── .claude/agents/ # Example agent prompts
180
+ ```
181
+
182
+ ## Git History Example
183
+
184
+ ```
185
+ * a3f9d2c [pipeline:memory-manager] Update CLAUDE.md with findings
186
+ * 8c2e4a1 [pipeline:doc-updater] Add documentation updates
187
+ * 5b7f3d9 [pipeline:quality-check] Refactor for better readability
188
+ * 2e1c8f4 [pipeline:security-audit] Fix security issues
189
+ * 9d4a2b6 [pipeline:code-review] Apply style improvements
190
+ * 7a3b5c8 feat: add user authentication
191
+ ```
192
+
193
+ Atomic commits make it easy to review changes, roll back specific stages, or bisect when issues arise.
194
+
195
+ ## Development
196
+
197
+ ```bash
198
+ # Install dependencies
199
+ npm install
200
+
201
+ # Build
202
+ npm run build
203
+
204
+ # Watch mode
205
+ npm run dev
206
+
207
+ # Run tests
208
+ npm test
209
+ ```
@@ -0,0 +1,19 @@
1
+ import { StateManager } from '../core/state-manager.js';
2
+ import { PipelineMetrics, LoopMetrics } from './types.js';
3
+ export declare class PipelineAnalytics {
4
+ private stateManager;
5
+ private loopStateManager;
6
+ constructor(stateManager: StateManager, repoPath: string);
7
+ generateMetrics(pipelineName?: string, timeRange?: {
8
+ start: Date;
9
+ end: Date;
10
+ }): Promise<PipelineMetrics>;
11
+ private calculateStageMetrics;
12
+ private analyzeFailures;
13
+ private calculateTrends;
14
+ generateLoopMetrics(timeRange?: {
15
+ start: Date;
16
+ end: Date;
17
+ }): Promise<LoopMetrics>;
18
+ }
19
+ //# sourceMappingURL=pipeline-analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-analytics.d.ts","sourceRoot":"","sources":["../../src/analytics/pipeline-analytics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,eAAe,EAAgC,WAAW,EAAE,MAAM,YAAY,CAAC;AAGxF,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,YAAY;IAHtB,OAAO,CAAC,gBAAgB,CAAmB;gBAGjC,YAAY,EAAE,YAAY,EAClC,QAAQ,EAAE,MAAM;IAKZ,eAAe,CACnB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,GACrC,OAAO,CAAC,eAAe,CAAC;IA+C3B,OAAO,CAAC,qBAAqB;IA0D7B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,eAAe;IAkCjB,mBAAmB,CACvB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,GACrC,OAAO,CAAC,WAAW,CAAC;CAsDxB"}
@@ -0,0 +1,155 @@
1
+ import { LoopStateManager } from '../core/loop-state-manager.js';
2
+ export class PipelineAnalytics {
3
+ stateManager;
4
+ loopStateManager;
5
+ constructor(stateManager, repoPath) {
6
+ this.stateManager = stateManager;
7
+ this.loopStateManager = new LoopStateManager(repoPath);
8
+ }
9
+ async generateMetrics(pipelineName, timeRange) {
10
+ const runs = await this.stateManager.getAllRuns();
11
+ const filteredRuns = runs.filter((run) => {
12
+ if (pipelineName && run.pipelineConfig.name !== pipelineName) {
13
+ return false;
14
+ }
15
+ if (timeRange) {
16
+ const runTime = new Date(run.trigger.timestamp);
17
+ if (runTime < timeRange.start || runTime > timeRange.end) {
18
+ return false;
19
+ }
20
+ }
21
+ return true;
22
+ });
23
+ const totalRuns = filteredRuns.length;
24
+ const successfulRuns = filteredRuns.filter((r) => r.status === 'completed').length;
25
+ const successRate = totalRuns > 0 ? successfulRuns / totalRuns : 0;
26
+ const totalDuration = filteredRuns.reduce((sum, run) => sum + run.artifacts.totalDuration, 0);
27
+ const averageDuration = totalRuns > 0 ? totalDuration / totalRuns : 0;
28
+ const stageMetrics = this.calculateStageMetrics(filteredRuns);
29
+ const failureReasons = this.analyzeFailures(filteredRuns);
30
+ const trendsOverTime = this.calculateTrends(filteredRuns);
31
+ return {
32
+ totalRuns,
33
+ successRate,
34
+ averageDuration,
35
+ stageMetrics,
36
+ failureReasons,
37
+ trendsOverTime
38
+ };
39
+ }
40
+ calculateStageMetrics(runs) {
41
+ const aggregates = new Map();
42
+ for (const run of runs) {
43
+ for (const stage of run.stages) {
44
+ const aggregate = aggregates.get(stage.stageName) ?? {
45
+ stageName: stage.stageName,
46
+ totalRuns: 0,
47
+ successCount: 0,
48
+ failureCount: 0,
49
+ durationTotal: 0,
50
+ durationSamples: 0
51
+ };
52
+ aggregate.totalRuns++;
53
+ if (stage.status === 'success') {
54
+ aggregate.successCount++;
55
+ }
56
+ else if (stage.status === 'failed') {
57
+ aggregate.failureCount++;
58
+ }
59
+ if (typeof stage.duration === 'number') {
60
+ aggregate.durationTotal += stage.duration;
61
+ aggregate.durationSamples++;
62
+ }
63
+ aggregates.set(stage.stageName, aggregate);
64
+ }
65
+ }
66
+ const metrics = new Map();
67
+ for (const aggregate of aggregates.values()) {
68
+ const { stageName, totalRuns, successCount, failureCount, durationTotal, durationSamples } = aggregate;
69
+ metrics.set(stageName, {
70
+ stageName,
71
+ totalRuns,
72
+ failureCount,
73
+ successRate: totalRuns > 0 ? successCount / totalRuns : 0,
74
+ averageDuration: durationSamples > 0 ? durationTotal / durationSamples : 0
75
+ });
76
+ }
77
+ return metrics;
78
+ }
79
+ analyzeFailures(runs) {
80
+ const failures = new Map();
81
+ for (const run of runs) {
82
+ for (const stage of run.stages) {
83
+ if (stage.status === 'failed' && stage.error) {
84
+ const reason = stage.error.message.split('\n')[0];
85
+ failures.set(reason, (failures.get(reason) || 0) + 1);
86
+ }
87
+ }
88
+ }
89
+ return failures;
90
+ }
91
+ calculateTrends(runs) {
92
+ const dataByDay = new Map();
93
+ for (const run of runs) {
94
+ const day = new Date(run.trigger.timestamp).toISOString().split('T')[0];
95
+ if (!dataByDay.has(day)) {
96
+ dataByDay.set(day, { successes: 0, failures: 0 });
97
+ }
98
+ const dayData = dataByDay.get(day);
99
+ if (run.status === 'completed') {
100
+ dayData.successes++;
101
+ }
102
+ else if (run.status === 'failed') {
103
+ dayData.failures++;
104
+ }
105
+ }
106
+ return Array.from(dataByDay.entries())
107
+ .map(([date, data]) => {
108
+ const totalRuns = data.successes + data.failures;
109
+ return {
110
+ date,
111
+ successRate: totalRuns > 0 ? data.successes / totalRuns : 0,
112
+ totalRuns
113
+ };
114
+ })
115
+ .sort((a, b) => a.date.localeCompare(b.date));
116
+ }
117
+ async generateLoopMetrics(timeRange) {
118
+ const allSessions = await this.loopStateManager.getAllSessions();
119
+ const filteredSessions = timeRange
120
+ ? allSessions.filter((session) => {
121
+ const sessionTime = new Date(session.startTime);
122
+ return sessionTime >= timeRange.start && sessionTime <= timeRange.end;
123
+ })
124
+ : allSessions;
125
+ const totalSessions = filteredSessions.length;
126
+ const completedSessions = filteredSessions.filter(s => s.status === 'completed').length;
127
+ const failedSessions = filteredSessions.filter(s => s.status === 'failed').length;
128
+ const limitReachedSessions = filteredSessions.filter(s => s.status === 'limit-reached').length;
129
+ const totalIterations = filteredSessions.reduce((sum, s) => sum + s.totalIterations, 0);
130
+ const averageIterationsPerSession = totalSessions > 0
131
+ ? totalIterations / totalSessions
132
+ : 0;
133
+ const pipelineCounts = new Map();
134
+ for (const session of filteredSessions) {
135
+ for (const iteration of session.iterations) {
136
+ pipelineCounts.set(iteration.pipelineName, (pipelineCounts.get(iteration.pipelineName) || 0) + 1);
137
+ }
138
+ }
139
+ const terminationReasons = new Map();
140
+ for (const session of filteredSessions) {
141
+ terminationReasons.set(session.status, (terminationReasons.get(session.status) || 0) + 1);
142
+ }
143
+ return {
144
+ totalSessions,
145
+ completedSessions,
146
+ failedSessions,
147
+ limitReachedSessions,
148
+ averageIterationsPerSession,
149
+ totalIterations,
150
+ mostCommonPipelines: pipelineCounts,
151
+ terminationReasons
152
+ };
153
+ }
154
+ }
155
+ //# sourceMappingURL=pipeline-analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-analytics.js","sourceRoot":"","sources":["../../src/analytics/pipeline-analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export interface PipelineMetrics {
2
+ totalRuns: number;
3
+ successRate: number;
4
+ averageDuration: number;
5
+ stageMetrics: Map<string, StageMetrics>;
6
+ failureReasons: Map<string, number>;
7
+ trendsOverTime: TimeSeriesData[];
8
+ }
9
+ export interface StageMetrics {
10
+ stageName: string;
11
+ successRate: number;
12
+ averageDuration: number;
13
+ failureCount: number;
14
+ totalRuns: number;
15
+ }
16
+ export interface TimeSeriesData {
17
+ date: string;
18
+ successRate: number;
19
+ totalRuns: number;
20
+ }
21
+ export interface LoopMetrics {
22
+ totalSessions: number;
23
+ completedSessions: number;
24
+ failedSessions: number;
25
+ limitReachedSessions: number;
26
+ averageIterationsPerSession: number;
27
+ totalIterations: number;
28
+ mostCommonPipelines: Map<string, number>;
29
+ terminationReasons: Map<string, number>;
30
+ }
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,cAAc,EAAE,cAAc,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2BAA2B,EAAE,MAAM,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare function agentInfoCommand(repoPath: string, agentName: string): Promise<void>;
2
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/agent/info.ts"],"names":[],"mappings":"AAMA,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAsEf"}
@@ -0,0 +1,62 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import { PipelineLoader } from '../../../config/pipeline-loader.js';
4
+ export async function agentInfoCommand(repoPath, agentName) {
5
+ try {
6
+ const agentsDir = path.join(repoPath, '.claude', 'agents');
7
+ let agentPath = path.join(agentsDir, `${agentName}.md`);
8
+ try {
9
+ await fs.access(agentPath);
10
+ }
11
+ catch {
12
+ agentPath = path.join(agentsDir, agentName);
13
+ await fs.access(agentPath);
14
+ }
15
+ const content = await fs.readFile(agentPath, 'utf-8');
16
+ const stats = await fs.stat(agentPath);
17
+ const loader = new PipelineLoader(repoPath);
18
+ const allPipelines = await loader.listPipelines();
19
+ const usingPipelines = [];
20
+ for (const pipelineName of allPipelines) {
21
+ try {
22
+ const { config } = await loader.loadPipeline(pipelineName);
23
+ const agentFile = path.basename(agentPath);
24
+ const isUsed = config.agents.some(a => a.agent.endsWith(agentFile) ||
25
+ a.agent.endsWith(agentName));
26
+ if (isUsed) {
27
+ usingPipelines.push(pipelineName);
28
+ }
29
+ }
30
+ catch {
31
+ }
32
+ }
33
+ console.log(`\n${'='.repeat(80)}`);
34
+ console.log(`Agent: ${path.basename(agentPath, '.md')}`);
35
+ console.log(`${'='.repeat(80)}\n`);
36
+ console.log(`File: ${path.relative(repoPath, agentPath)}`);
37
+ console.log(`Size: ${stats.size} bytes`);
38
+ console.log(`Modified: ${stats.mtime.toLocaleString()}`);
39
+ if (usingPipelines.length > 0) {
40
+ console.log(`\nUsed by ${usingPipelines.length} pipeline(s):`);
41
+ usingPipelines.forEach(p => console.log(` - ${p}`));
42
+ }
43
+ else {
44
+ console.log('\nNot currently used by any pipelines');
45
+ }
46
+ console.log(`\n${'─'.repeat(80)}\n`);
47
+ console.log('Content:\n');
48
+ console.log(content);
49
+ console.log(`\n${'='.repeat(80)}\n`);
50
+ }
51
+ catch (error) {
52
+ if (error.code === 'ENOENT') {
53
+ console.error(`❌ Agent "${agentName}" not found`);
54
+ console.error(' Run "agent-pipeline agent list" to see available agents\n');
55
+ }
56
+ else {
57
+ console.error(`❌ Failed to read agent info: ${error.message}`);
58
+ }
59
+ process.exit(1);
60
+ }
61
+ }
62
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../src/cli/commands/agent/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function listAgentsCommand(repoPath: string): Promise<void>;
2
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/agent/list.ts"],"names":[],"mappings":"AAYA,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsEvE"}