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.
Files changed (323) hide show
  1. package/CLAUDE.md +2 -3
  2. package/README.md +110 -55
  3. package/dist/cli/commands/agent/info.js +1 -1
  4. package/dist/cli/commands/agent/info.js.map +1 -1
  5. package/dist/cli/commands/agent/list.js +1 -1
  6. package/dist/cli/commands/agent/list.js.map +1 -1
  7. package/dist/cli/commands/agent/pull.d.ts +1 -0
  8. package/dist/cli/commands/agent/pull.d.ts.map +1 -1
  9. package/dist/cli/commands/agent/pull.js +67 -44
  10. package/dist/cli/commands/agent/pull.js.map +1 -1
  11. package/dist/cli/commands/cleanup.d.ts +4 -0
  12. package/dist/cli/commands/cleanup.d.ts.map +1 -1
  13. package/dist/cli/commands/cleanup.js +197 -37
  14. package/dist/cli/commands/cleanup.js.map +1 -1
  15. package/dist/cli/commands/history.d.ts.map +1 -1
  16. package/dist/cli/commands/history.js +3 -22
  17. package/dist/cli/commands/history.js.map +1 -1
  18. package/dist/cli/commands/hooks.d.ts +10 -0
  19. package/dist/cli/commands/hooks.d.ts.map +1 -0
  20. package/dist/cli/commands/hooks.js +88 -0
  21. package/dist/cli/commands/hooks.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts +1 -6
  23. package/dist/cli/commands/init.d.ts.map +1 -1
  24. package/dist/cli/commands/init.js +173 -58
  25. package/dist/cli/commands/init.js.map +1 -1
  26. package/dist/cli/commands/loop-context.d.ts +2 -0
  27. package/dist/cli/commands/loop-context.d.ts.map +1 -0
  28. package/dist/cli/commands/loop-context.js +88 -0
  29. package/dist/cli/commands/loop-context.js.map +1 -0
  30. package/dist/cli/commands/pipeline/create.d.ts.map +1 -1
  31. package/dist/cli/commands/pipeline/create.js +156 -68
  32. package/dist/cli/commands/pipeline/create.js.map +1 -1
  33. package/dist/cli/commands/run.d.ts +1 -1
  34. package/dist/cli/commands/run.d.ts.map +1 -1
  35. package/dist/cli/commands/run.js +29 -5
  36. package/dist/cli/commands/run.js.map +1 -1
  37. package/dist/cli/commands/schema.d.ts +9 -0
  38. package/dist/cli/commands/schema.d.ts.map +1 -0
  39. package/dist/cli/commands/schema.js +541 -0
  40. package/dist/cli/commands/schema.js.map +1 -0
  41. package/dist/cli/commands/status.d.ts.map +1 -1
  42. package/dist/cli/commands/status.js +0 -6
  43. package/dist/cli/commands/status.js.map +1 -1
  44. package/dist/cli/help/index.d.ts +6 -0
  45. package/dist/cli/help/index.d.ts.map +1 -0
  46. package/dist/cli/help/index.js +538 -0
  47. package/dist/cli/help/index.js.map +1 -0
  48. package/dist/cli/help/types.d.ts +22 -0
  49. package/dist/cli/help/types.d.ts.map +1 -0
  50. package/dist/cli/help/types.js +2 -0
  51. package/dist/cli/help/types.js.map +1 -0
  52. package/dist/cli/hooks.d.ts +5 -1
  53. package/dist/cli/hooks.d.ts.map +1 -1
  54. package/dist/cli/hooks.js +106 -12
  55. package/dist/cli/hooks.js.map +1 -1
  56. package/dist/cli/templates/agents/code-review-agents/code-reviewer.md +46 -0
  57. package/dist/cli/templates/agents/code-review-agents/memory-doc-updater.md +189 -0
  58. package/dist/cli/templates/agents/code-review-agents/quality-checker.md +52 -0
  59. package/dist/cli/templates/agents/frontend-agents/brutalist_purist.md +563 -0
  60. package/dist/cli/templates/agents/frontend-agents/cyberpunk_hacker.md +824 -0
  61. package/dist/cli/templates/agents/frontend-agents/frontend-pipeline-ref.md +32 -0
  62. package/dist/cli/templates/agents/frontend-agents/indie_game_dev.md +715 -0
  63. package/dist/cli/templates/agents/frontend-agents/luxury_editorial.md +628 -0
  64. package/dist/cli/templates/agents/frontend-agents/product_owner.md +159 -0
  65. package/dist/cli/templates/agents/frontend-agents/retro_90s_webmaster.md +385 -0
  66. package/dist/cli/templates/agents/frontend-agents/showcase.md +362 -0
  67. package/dist/cli/templates/agents/frontend-agents/swiss_modernist.md +716 -0
  68. package/dist/cli/templates/agents/loop-agents/socratic-explorer.md +91 -0
  69. package/dist/cli/templates/instructions/handover.md +40 -0
  70. package/dist/cli/templates/instructions/loop.md +35 -0
  71. package/dist/cli/templates/pipelines/front-end-parallel-example.yml +81 -0
  72. package/dist/cli/templates/pipelines/loop-example.yml +25 -0
  73. package/dist/cli/templates/pipelines/post-commit-example.yml +49 -58
  74. package/dist/cli/templates/schema/pipeline-config.schema.json +400 -0
  75. package/dist/cli/templates/schema/pipeline-config.schema.yaml +301 -0
  76. package/dist/cli/utils/agent-importer.d.ts +1 -0
  77. package/dist/cli/utils/agent-importer.d.ts.map +1 -1
  78. package/dist/cli/utils/agent-importer.js +67 -0
  79. package/dist/cli/utils/agent-importer.js.map +1 -1
  80. package/dist/cli/utils/interactive-prompts.d.ts +4 -0
  81. package/dist/cli/utils/interactive-prompts.d.ts.map +1 -1
  82. package/dist/cli/utils/interactive-prompts.js +59 -13
  83. package/dist/cli/utils/interactive-prompts.js.map +1 -1
  84. package/dist/config/pipeline-loader.d.ts +4 -1
  85. package/dist/config/pipeline-loader.d.ts.map +1 -1
  86. package/dist/config/pipeline-loader.js +58 -0
  87. package/dist/config/pipeline-loader.js.map +1 -1
  88. package/dist/config/schema.d.ts +65 -35
  89. package/dist/config/schema.d.ts.map +1 -1
  90. package/dist/core/abort-controller.d.ts +16 -0
  91. package/dist/core/abort-controller.d.ts.map +1 -0
  92. package/dist/core/abort-controller.js +52 -0
  93. package/dist/core/abort-controller.js.map +1 -0
  94. package/dist/core/agent-query-runner.d.ts +0 -1
  95. package/dist/core/agent-query-runner.d.ts.map +1 -1
  96. package/dist/core/agent-query-runner.js +0 -22
  97. package/dist/core/agent-query-runner.js.map +1 -1
  98. package/dist/core/agent-runtimes/claude-code-headless-runtime.d.ts +5 -1
  99. package/dist/core/agent-runtimes/claude-code-headless-runtime.d.ts.map +1 -1
  100. package/dist/core/agent-runtimes/claude-code-headless-runtime.js +127 -12
  101. package/dist/core/agent-runtimes/claude-code-headless-runtime.js.map +1 -1
  102. package/dist/core/agent-runtimes/claude-sdk-runtime.d.ts +0 -2
  103. package/dist/core/agent-runtimes/claude-sdk-runtime.d.ts.map +1 -1
  104. package/dist/core/agent-runtimes/claude-sdk-runtime.js +1 -22
  105. package/dist/core/agent-runtimes/claude-sdk-runtime.js.map +1 -1
  106. package/dist/core/branch-manager.d.ts +3 -1
  107. package/dist/core/branch-manager.d.ts.map +1 -1
  108. package/dist/core/branch-manager.js +11 -1
  109. package/dist/core/branch-manager.js.map +1 -1
  110. package/dist/core/git-manager.d.ts +17 -1
  111. package/dist/core/git-manager.d.ts.map +1 -1
  112. package/dist/core/git-manager.js +147 -3
  113. package/dist/core/git-manager.js.map +1 -1
  114. package/dist/core/group-execution-orchestrator.d.ts +7 -13
  115. package/dist/core/group-execution-orchestrator.d.ts.map +1 -1
  116. package/dist/core/group-execution-orchestrator.js +53 -142
  117. package/dist/core/group-execution-orchestrator.js.map +1 -1
  118. package/dist/core/handover-manager.d.ts +24 -0
  119. package/dist/core/handover-manager.d.ts.map +1 -0
  120. package/dist/core/handover-manager.js +214 -0
  121. package/dist/core/handover-manager.js.map +1 -0
  122. package/dist/core/instruction-loader.d.ts +23 -0
  123. package/dist/core/instruction-loader.d.ts.map +1 -0
  124. package/dist/core/instruction-loader.js +112 -0
  125. package/dist/core/instruction-loader.js.map +1 -0
  126. package/dist/core/loop-state-manager.d.ts +12 -7
  127. package/dist/core/loop-state-manager.d.ts.map +1 -1
  128. package/dist/core/loop-state-manager.js +49 -3
  129. package/dist/core/loop-state-manager.js.map +1 -1
  130. package/dist/core/parallel-executor.d.ts +12 -3
  131. package/dist/core/parallel-executor.d.ts.map +1 -1
  132. package/dist/core/parallel-executor.js +92 -14
  133. package/dist/core/parallel-executor.js.map +1 -1
  134. package/dist/core/pipeline-finalizer.d.ts +12 -4
  135. package/dist/core/pipeline-finalizer.d.ts.map +1 -1
  136. package/dist/core/pipeline-finalizer.js +244 -33
  137. package/dist/core/pipeline-finalizer.js.map +1 -1
  138. package/dist/core/pipeline-initializer.d.ts +13 -5
  139. package/dist/core/pipeline-initializer.d.ts.map +1 -1
  140. package/dist/core/pipeline-initializer.js +53 -25
  141. package/dist/core/pipeline-initializer.js.map +1 -1
  142. package/dist/core/pipeline-runner.d.ts +13 -1
  143. package/dist/core/pipeline-runner.d.ts.map +1 -1
  144. package/dist/core/pipeline-runner.js +352 -60
  145. package/dist/core/pipeline-runner.js.map +1 -1
  146. package/dist/core/pr-creator.d.ts +0 -1
  147. package/dist/core/pr-creator.d.ts.map +1 -1
  148. package/dist/core/pr-creator.js +12 -4
  149. package/dist/core/pr-creator.js.map +1 -1
  150. package/dist/core/stage-executor.d.ts +17 -9
  151. package/dist/core/stage-executor.d.ts.map +1 -1
  152. package/dist/core/stage-executor.js +152 -166
  153. package/dist/core/stage-executor.js.map +1 -1
  154. package/dist/core/types/agent-runtime.d.ts +3 -2
  155. package/dist/core/types/agent-runtime.d.ts.map +1 -1
  156. package/dist/core/worktree-manager.d.ts +21 -0
  157. package/dist/core/worktree-manager.d.ts.map +1 -0
  158. package/dist/core/worktree-manager.js +133 -0
  159. package/dist/core/worktree-manager.js.map +1 -0
  160. package/dist/index.js +118 -112
  161. package/dist/index.js.map +1 -1
  162. package/dist/notifications/notification-manager.d.ts +1 -0
  163. package/dist/notifications/notification-manager.d.ts.map +1 -1
  164. package/dist/notifications/notification-manager.js +17 -3
  165. package/dist/notifications/notification-manager.js.map +1 -1
  166. package/dist/notifications/notifiers/local-notifier.d.ts.map +1 -1
  167. package/dist/notifications/notifiers/local-notifier.js +5 -2
  168. package/dist/notifications/notifiers/local-notifier.js.map +1 -1
  169. package/dist/notifications/notifiers/slack-notifier.d.ts.map +1 -1
  170. package/dist/notifications/notifiers/slack-notifier.js +39 -8
  171. package/dist/notifications/notifiers/slack-notifier.js.map +1 -1
  172. package/dist/notifications/types.d.ts +1 -1
  173. package/dist/notifications/types.d.ts.map +1 -1
  174. package/dist/ui/components/execution-group.d.ts.map +1 -1
  175. package/dist/ui/components/execution-group.js +1 -1
  176. package/dist/ui/components/execution-group.js.map +1 -1
  177. package/dist/ui/components/interactive-summary.d.ts +9 -0
  178. package/dist/ui/components/interactive-summary.d.ts.map +1 -0
  179. package/dist/ui/components/interactive-summary.js +166 -0
  180. package/dist/ui/components/interactive-summary.js.map +1 -0
  181. package/dist/ui/components/keyboard-hints.d.ts +12 -0
  182. package/dist/ui/components/keyboard-hints.d.ts.map +1 -0
  183. package/dist/ui/components/keyboard-hints.js +13 -0
  184. package/dist/ui/components/keyboard-hints.js.map +1 -0
  185. package/dist/ui/components/live-timer.d.ts +9 -0
  186. package/dist/ui/components/live-timer.d.ts.map +1 -0
  187. package/dist/ui/components/live-timer.js +25 -0
  188. package/dist/ui/components/live-timer.js.map +1 -0
  189. package/dist/ui/components/loop-iteration-history.d.ts +8 -0
  190. package/dist/ui/components/loop-iteration-history.d.ts.map +1 -0
  191. package/dist/ui/components/loop-iteration-history.js +106 -0
  192. package/dist/ui/components/loop-iteration-history.js.map +1 -0
  193. package/dist/ui/components/loop-session-summary.d.ts +9 -0
  194. package/dist/ui/components/loop-session-summary.d.ts.map +1 -0
  195. package/dist/ui/components/loop-session-summary.js +39 -0
  196. package/dist/ui/components/loop-session-summary.js.map +1 -0
  197. package/dist/ui/components/stage-row.d.ts +0 -1
  198. package/dist/ui/components/stage-row.d.ts.map +1 -1
  199. package/dist/ui/components/stage-row.js +5 -15
  200. package/dist/ui/components/stage-row.js.map +1 -1
  201. package/dist/ui/components/status-badge.d.ts.map +1 -1
  202. package/dist/ui/components/status-badge.js +1 -0
  203. package/dist/ui/components/status-badge.js.map +1 -1
  204. package/dist/ui/pipeline-ui.d.ts +1 -0
  205. package/dist/ui/pipeline-ui.d.ts.map +1 -1
  206. package/dist/ui/pipeline-ui.js +22 -18
  207. package/dist/ui/pipeline-ui.js.map +1 -1
  208. package/dist/utils/error-factory.d.ts.map +1 -1
  209. package/dist/utils/error-factory.js +10 -2
  210. package/dist/utils/error-factory.js.map +1 -1
  211. package/dist/utils/pipeline-formatter.d.ts +8 -2
  212. package/dist/utils/pipeline-formatter.d.ts.map +1 -1
  213. package/dist/utils/pipeline-formatter.js +30 -26
  214. package/dist/utils/pipeline-formatter.js.map +1 -1
  215. package/dist/utils/pipeline-logger.d.ts +19 -0
  216. package/dist/utils/pipeline-logger.d.ts.map +1 -0
  217. package/dist/utils/pipeline-logger.js +80 -0
  218. package/dist/utils/pipeline-logger.js.map +1 -0
  219. package/dist/utils/platform-opener.d.ts +4 -0
  220. package/dist/utils/platform-opener.d.ts.map +1 -0
  221. package/dist/utils/platform-opener.js +52 -0
  222. package/dist/utils/platform-opener.js.map +1 -0
  223. package/dist/validators/agent-validator.d.ts +10 -0
  224. package/dist/validators/agent-validator.d.ts.map +1 -0
  225. package/dist/validators/agent-validator.js +87 -0
  226. package/dist/validators/agent-validator.js.map +1 -0
  227. package/dist/validators/dag-validator.d.ts +9 -0
  228. package/dist/validators/dag-validator.d.ts.map +1 -0
  229. package/dist/validators/dag-validator.js +51 -0
  230. package/dist/validators/dag-validator.js.map +1 -0
  231. package/dist/validators/environment-validator.d.ts +9 -0
  232. package/dist/validators/environment-validator.d.ts.map +1 -0
  233. package/dist/validators/environment-validator.js +35 -0
  234. package/dist/validators/environment-validator.js.map +1 -0
  235. package/dist/validators/execution-validator.d.ts +8 -0
  236. package/dist/validators/execution-validator.d.ts.map +1 -0
  237. package/dist/validators/execution-validator.js +51 -0
  238. package/dist/validators/execution-validator.js.map +1 -0
  239. package/dist/validators/git-validator.d.ts +13 -0
  240. package/dist/validators/git-validator.d.ts.map +1 -0
  241. package/dist/validators/git-validator.js +135 -0
  242. package/dist/validators/git-validator.js.map +1 -0
  243. package/dist/validators/notification-validator.d.ts +8 -0
  244. package/dist/validators/notification-validator.d.ts.map +1 -0
  245. package/dist/validators/notification-validator.js +27 -0
  246. package/dist/validators/notification-validator.js.map +1 -0
  247. package/dist/validators/pipeline-validator.d.ts +3 -26
  248. package/dist/validators/pipeline-validator.d.ts.map +1 -1
  249. package/dist/validators/pipeline-validator.js +5 -515
  250. package/dist/validators/pipeline-validator.js.map +1 -1
  251. package/dist/validators/retry-validator.d.ts +9 -0
  252. package/dist/validators/retry-validator.d.ts.map +1 -0
  253. package/dist/validators/retry-validator.js +34 -0
  254. package/dist/validators/retry-validator.js.map +1 -0
  255. package/dist/validators/runtime-validator.d.ts +9 -0
  256. package/dist/validators/runtime-validator.d.ts.map +1 -0
  257. package/dist/validators/runtime-validator.js +82 -0
  258. package/dist/validators/runtime-validator.js.map +1 -0
  259. package/dist/validators/structure-validator.d.ts +8 -0
  260. package/dist/validators/structure-validator.d.ts.map +1 -0
  261. package/dist/validators/structure-validator.js +39 -0
  262. package/dist/validators/structure-validator.js.map +1 -0
  263. package/dist/validators/types.d.ts +19 -0
  264. package/dist/validators/types.d.ts.map +1 -0
  265. package/dist/validators/types.js +2 -0
  266. package/dist/validators/types.js.map +1 -0
  267. package/dist/validators/validation-orchestrator.d.ts +9 -0
  268. package/dist/validators/validation-orchestrator.d.ts.map +1 -0
  269. package/dist/validators/validation-orchestrator.js +43 -0
  270. package/dist/validators/validation-orchestrator.js.map +1 -0
  271. package/package.json +17 -11
  272. package/dist/cli/commands/install.d.ts +0 -2
  273. package/dist/cli/commands/install.d.ts.map +0 -1
  274. package/dist/cli/commands/install.js +0 -15
  275. package/dist/cli/commands/install.js.map +0 -1
  276. package/dist/cli/commands/uninstall.d.ts +0 -2
  277. package/dist/cli/commands/uninstall.d.ts.map +0 -1
  278. package/dist/cli/commands/uninstall.js +0 -6
  279. package/dist/cli/commands/uninstall.js.map +0 -1
  280. package/dist/cli/templates/agents/cleanup-reporter.md +0 -107
  281. package/dist/cli/templates/agents/code-reducer.md +0 -51
  282. package/dist/cli/templates/agents/code-reviewer.md +0 -34
  283. package/dist/cli/templates/agents/context-reducer.md +0 -94
  284. package/dist/cli/templates/agents/dependency-auditor.md +0 -127
  285. package/dist/cli/templates/agents/detective-empath.md +0 -26
  286. package/dist/cli/templates/agents/detective-linguist.md +0 -26
  287. package/dist/cli/templates/agents/detective-logician.md +0 -26
  288. package/dist/cli/templates/agents/detective-skeptic.md +0 -26
  289. package/dist/cli/templates/agents/detective-statistician.md +0 -26
  290. package/dist/cli/templates/agents/doc-updater.md +0 -30
  291. package/dist/cli/templates/agents/judge.md +0 -27
  292. package/dist/cli/templates/agents/memory-updater.md +0 -72
  293. package/dist/cli/templates/agents/quality-checker.md +0 -32
  294. package/dist/cli/templates/agents/security-auditor.md +0 -32
  295. package/dist/cli/templates/agents/storyteller.md +0 -26
  296. package/dist/cli/templates/agents/summary.md +0 -32
  297. package/dist/cli/templates/agents/synthesizer.md +0 -26
  298. package/dist/cli/templates/pipelines/large-pipeline-example.yml +0 -178
  299. package/dist/cli/templates/pipelines/post-merge-example.yml +0 -78
  300. package/dist/cli/templates/pipelines/pre-commit-example.yml +0 -41
  301. package/dist/cli/templates/pipelines/pre-push-example.yml +0 -51
  302. package/dist/cli/templates/pipelines/test-pipeline.yml +0 -90
  303. package/dist/config/project-config-loader.d.ts +0 -11
  304. package/dist/config/project-config-loader.d.ts.map +0 -1
  305. package/dist/config/project-config-loader.js +0 -100
  306. package/dist/config/project-config-loader.js.map +0 -1
  307. package/dist/core/condition-evaluator.d.ts +0 -16
  308. package/dist/core/condition-evaluator.d.ts.map +0 -1
  309. package/dist/core/condition-evaluator.js +0 -121
  310. package/dist/core/condition-evaluator.js.map +0 -1
  311. package/dist/core/context-reducer.d.ts +0 -15
  312. package/dist/core/context-reducer.d.ts.map +0 -1
  313. package/dist/core/context-reducer.js +0 -224
  314. package/dist/core/context-reducer.js.map +0 -1
  315. package/dist/core/output-storage-manager.d.ts +0 -14
  316. package/dist/core/output-storage-manager.d.ts.map +0 -1
  317. package/dist/core/output-storage-manager.js +0 -68
  318. package/dist/core/output-storage-manager.js.map +0 -1
  319. package/dist/core/output-tool-builder.d.ts +0 -6
  320. package/dist/core/output-tool-builder.d.ts.map +0 -1
  321. package/dist/core/output-tool-builder.js +0 -50
  322. package/dist/core/output-tool-builder.js.map +0 -1
  323. /package/{license → LICENSE} +0 -0
@@ -0,0 +1,82 @@
1
+ import { AgentRuntimeRegistry } from '../core/agent-runtime-registry.js';
2
+ export class RuntimeValidator {
3
+ name = 'runtime';
4
+ priority = 0;
5
+ shouldRun(context) {
6
+ return !!context.config.runtime || context.config.agents?.some((a) => a.runtime) || false;
7
+ }
8
+ async validate(context) {
9
+ const { config, errors } = context;
10
+ if (config.runtime) {
11
+ await this.validateRuntimeConfig(errors, 'runtime', config.runtime, config.execution?.permissionMode);
12
+ }
13
+ if (config.agents) {
14
+ for (const agent of config.agents) {
15
+ if (agent.runtime) {
16
+ await this.validateRuntimeConfig(errors, `agents.${agent.name}.runtime`, agent.runtime, config.execution?.permissionMode);
17
+ }
18
+ }
19
+ }
20
+ }
21
+ async validateRuntimeConfig(errors, field, runtime, permissionMode) {
22
+ if (!AgentRuntimeRegistry.hasRuntime(runtime.type)) {
23
+ const availableRuntimes = AgentRuntimeRegistry.getAvailableTypes().join(', ');
24
+ errors.push({
25
+ field,
26
+ message: `Unknown runtime type: ${runtime.type}. Available runtimes: [${availableRuntimes}]`,
27
+ severity: 'error',
28
+ });
29
+ return;
30
+ }
31
+ const runtimeInstance = AgentRuntimeRegistry.getRuntime(runtime.type);
32
+ const capabilities = runtimeInstance.getCapabilities();
33
+ try {
34
+ const validation = await runtimeInstance.validate();
35
+ for (const error of validation.errors) {
36
+ errors.push({
37
+ field,
38
+ message: `Runtime availability: ${error}`,
39
+ severity: 'warning',
40
+ });
41
+ }
42
+ for (const warning of validation.warnings) {
43
+ errors.push({
44
+ field,
45
+ message: warning,
46
+ severity: 'warning',
47
+ });
48
+ }
49
+ }
50
+ catch (error) {
51
+ errors.push({
52
+ field,
53
+ message: `Runtime validation failed: ${error instanceof Error ? error.message : String(error)}`,
54
+ severity: 'warning',
55
+ });
56
+ }
57
+ const model = runtime.options?.model;
58
+ if (model && typeof model === 'string') {
59
+ if (!capabilities.availableModels.includes(model.toLowerCase())) {
60
+ const availableModels = capabilities.availableModels.join(', ');
61
+ errors.push({
62
+ field: `${field}.options.model`,
63
+ message: `Model "${model}" not available for runtime "${runtime.type}". Available models: [${availableModels}]`,
64
+ severity: 'error',
65
+ });
66
+ }
67
+ }
68
+ const runtimePermissionMode = runtime.options?.permissionMode;
69
+ const effectivePermissionMode = runtimePermissionMode || permissionMode;
70
+ if (effectivePermissionMode) {
71
+ if (!capabilities.permissionModes.includes(effectivePermissionMode)) {
72
+ const availableModes = capabilities.permissionModes.join(', ');
73
+ errors.push({
74
+ field: `${field}.options.permissionMode`,
75
+ message: `Permission mode "${effectivePermissionMode}" not supported by runtime "${runtime.type}". Supported modes: [${availableModes}]`,
76
+ severity: 'error',
77
+ });
78
+ }
79
+ }
80
+ }
81
+ }
82
+ //# sourceMappingURL=runtime-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-validator.js","sourceRoot":"","sources":["../../src/validators/runtime-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Validator, ValidationContext } from './types.js';
2
+ export declare class StructureValidator implements Validator {
3
+ readonly name = "structure";
4
+ readonly priority: 0;
5
+ shouldRun(): boolean;
6
+ validate(context: ValidationContext): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=structure-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure-validator.d.ts","sourceRoot":"","sources":["../../src/validators/structure-validator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAK1D,qBAAa,kBAAmB,YAAW,SAAS;IAClD,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,QAAQ,EAAG,CAAC,CAAU;IAE/B,SAAS,IAAI,OAAO;IAId,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAiC1D"}
@@ -0,0 +1,39 @@
1
+ export class StructureValidator {
2
+ name = 'structure';
3
+ priority = 0;
4
+ shouldRun() {
5
+ return true;
6
+ }
7
+ async validate(context) {
8
+ const { config, errors } = context;
9
+ if (!config.name || config.name.trim() === '') {
10
+ errors.push({
11
+ field: 'name',
12
+ message: 'Pipeline name is required',
13
+ severity: 'error',
14
+ });
15
+ }
16
+ if (!config.trigger) {
17
+ errors.push({
18
+ field: 'trigger',
19
+ message: 'Pipeline trigger is required (manual or post-commit)',
20
+ severity: 'error',
21
+ });
22
+ }
23
+ else if (!['manual', 'post-commit'].includes(config.trigger)) {
24
+ errors.push({
25
+ field: 'trigger',
26
+ message: `Invalid trigger: ${config.trigger}. Must be 'manual' or 'post-commit'`,
27
+ severity: 'error',
28
+ });
29
+ }
30
+ if (!config.agents || config.agents.length === 0) {
31
+ errors.push({
32
+ field: 'agents',
33
+ message: 'Pipeline must have at least one agent',
34
+ severity: 'error',
35
+ });
36
+ }
37
+ }
38
+ }
39
+ //# sourceMappingURL=structure-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure-validator.js","sourceRoot":"","sources":["../../src/validators/structure-validator.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,WAAW,CAAC;IACnB,QAAQ,GAAG,CAAU,CAAC;IAE/B,SAAS;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA0B;QACvC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,2BAA2B;gBACpC,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,sDAAsD;gBAC/D,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,oBAAoB,MAAM,CAAC,OAAO,qCAAqC;gBAChF,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,uCAAuC;gBAChD,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { PipelineConfig } from '../config/schema.js';
2
+ export interface ValidationError {
3
+ field: string;
4
+ message: string;
5
+ severity: 'error' | 'warning';
6
+ }
7
+ export interface ValidationContext {
8
+ config: PipelineConfig;
9
+ repoPath: string;
10
+ errors: ValidationError[];
11
+ skipRemainingValidators?: boolean;
12
+ }
13
+ export interface Validator {
14
+ readonly name: string;
15
+ readonly priority: 0 | 1 | 2;
16
+ shouldRun(context: ValidationContext): boolean;
17
+ validate(context: ValidationContext): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/validators/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAKD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1B,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAMD,MAAM,WAAW,SAAS;IAExB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAM7B,SAAS,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAM/C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/validators/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { PipelineConfig } from '../config/schema.js';
2
+ import { ValidationError, Validator } from './types.js';
3
+ export declare class ValidationOrchestrator {
4
+ private validators;
5
+ constructor();
6
+ register(validator: Validator): void;
7
+ validate(config: PipelineConfig, repoPath: string): Promise<ValidationError[]>;
8
+ }
9
+ //# sourceMappingURL=validation-orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-orchestrator.d.ts","sourceRoot":"","sources":["../../src/validators/validation-orchestrator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAqB,SAAS,EAAE,MAAM,YAAY,CAAC;AAiB3E,qBAAa,sBAAsB;IACjC,OAAO,CAAC,UAAU,CAAmB;;IAqBrC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAS9B,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAiBrF"}
@@ -0,0 +1,43 @@
1
+ import { EnvironmentValidator } from './environment-validator.js';
2
+ import { GitValidator } from './git-validator.js';
3
+ import { StructureValidator } from './structure-validator.js';
4
+ import { RuntimeValidator } from './runtime-validator.js';
5
+ import { AgentValidator } from './agent-validator.js';
6
+ import { ExecutionValidator } from './execution-validator.js';
7
+ import { NotificationValidator } from './notification-validator.js';
8
+ import { RetryValidator } from './retry-validator.js';
9
+ import { DAGValidator } from './dag-validator.js';
10
+ export class ValidationOrchestrator {
11
+ validators = [];
12
+ constructor() {
13
+ this.register(new EnvironmentValidator());
14
+ this.register(new GitValidator());
15
+ this.register(new StructureValidator());
16
+ this.register(new RuntimeValidator());
17
+ this.register(new AgentValidator());
18
+ this.register(new ExecutionValidator());
19
+ this.register(new NotificationValidator());
20
+ this.register(new RetryValidator());
21
+ this.register(new DAGValidator());
22
+ }
23
+ register(validator) {
24
+ this.validators.push(validator);
25
+ this.validators.sort((a, b) => a.priority - b.priority);
26
+ }
27
+ async validate(config, repoPath) {
28
+ const context = {
29
+ config,
30
+ repoPath,
31
+ errors: [],
32
+ };
33
+ for (const validator of this.validators) {
34
+ if (context.skipRemainingValidators)
35
+ break;
36
+ if (validator.shouldRun(context)) {
37
+ await validator.validate(context);
38
+ }
39
+ }
40
+ return context.errors;
41
+ }
42
+ }
43
+ //# sourceMappingURL=validation-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-orchestrator.js","sourceRoot":"","sources":["../../src/validators/validation-orchestrator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,MAAM,OAAO,sBAAsB;IACzB,UAAU,GAAgB,EAAE,CAAC;IAErC;QAGE,IAAI,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAE3C,IAAI,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;IACpC,CAAC;IAKD,QAAQ,CAAC,SAAoB;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAMD,KAAK,CAAC,QAAQ,CAAC,MAAsB,EAAE,QAAgB;QACrD,MAAM,OAAO,GAAsB;YACjC,MAAM;YACN,QAAQ;YACR,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,uBAAuB;gBAAE,MAAM;YAE3C,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC;CACF"}
package/package.json CHANGED
@@ -1,23 +1,24 @@
1
1
  {
2
2
  "name": "agent-pipeline",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Intelligent agent orchestration with parallel execution, conditional logic, git workflow automation, and multi-channel notifications for Claude Code",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "bin": {
9
- "agent-pipeline": "./dist/index.js"
9
+ "agent-pipeline": "dist/index.js"
10
10
  },
11
11
  "publishConfig": {
12
12
  "access": "public"
13
13
  },
14
14
  "scripts": {
15
- "build": "node node_modules/typescript/bin/tsc && node scripts/copy-templates.mjs",
15
+ "build": "node node_modules/typescript/bin/tsc && node scripts/generate-schema.mjs && node scripts/copy-templates.mjs",
16
16
  "dev": "tsc --watch",
17
17
  "test": "vitest",
18
18
  "test:unit": "vitest --exclude '**/smoke/claude-cli-e2e.test.ts'",
19
19
  "test:e2e": "RUN_E2E_TESTS=true vitest src/__tests__/smoke/claude-cli-e2e.test.ts",
20
20
  "start": "node dist/index.js",
21
+ "generate:schema": "node scripts/generate-schema.mjs",
21
22
  "postinstall": "test ! -d node_modules/typescript || npm run build",
22
23
  "prepublishOnly": "npm run build"
23
24
  },
@@ -27,11 +28,13 @@
27
28
  "dist/**/*.d.ts.map",
28
29
  "dist/**/*.js.map",
29
30
  "dist/**/*.yml",
31
+ "dist/**/*.yaml",
32
+ "dist/**/*.json",
30
33
  "dist/**/*.md",
31
34
  "!dist/**/*.test.*",
32
35
  "!dist/__tests__",
33
36
  "README.md",
34
- "license",
37
+ "LICENSE",
35
38
  "CLAUDE.md"
36
39
  ],
37
40
  "keywords": [
@@ -63,25 +66,28 @@
63
66
  "url": "https://github.com/sponsors/FRE-Studios"
64
67
  },
65
68
  "dependencies": {
66
- "@anthropic-ai/claude-agent-sdk": "^0.1.0",
67
- "@types/node-notifier": "^8.0.5",
69
+ "@anthropic-ai/claude-agent-sdk": "^0.2.19",
70
+ "chalk": "^5.6.0",
68
71
  "ink": "^4.4.1",
69
72
  "ink-spinner": "^5.0.0",
73
+ "ink-text-input": "^5.0.1",
70
74
  "node-notifier": "^10.0.1",
71
75
  "react": "^18.2.0",
72
- "simple-git": "^3.25.0",
76
+ "simple-git": "^3.30.0",
73
77
  "tiktoken": "^1.0.22",
74
78
  "uuid": "^10.0.0",
75
- "yaml": "^2.4.5",
76
- "zod": "^3.24.1"
79
+ "yaml": "^2.8.0",
80
+ "zod": "^4.0.0"
77
81
  },
78
82
  "devDependencies": {
79
83
  "@types/node": "^20.14.0",
80
- "@types/react": "^18.2.0",
84
+ "@types/node-notifier": "^8.0.5",
85
+ "@types/react": "^18.3.0",
81
86
  "@types/uuid": "^10.0.0",
82
87
  "@vitest/coverage-v8": "^3.0.0",
83
88
  "ink-testing-library": "^4.0.0",
84
- "typescript": "^5.5.0",
89
+ "ts-json-schema-generator": "^2.4.0",
90
+ "typescript": "^5.8.0",
85
91
  "vitest": "^3.0.0"
86
92
  },
87
93
  "engines": {
@@ -1,2 +0,0 @@
1
- export declare function installCommand(repoPath: string, pipelineName: string): Promise<void>;
2
- //# sourceMappingURL=install.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -1,15 +0,0 @@
1
- import { PipelineLoader } from '../../config/pipeline-loader.js';
2
- import { HookInstaller } from '../hooks.js';
3
- export async function installCommand(repoPath, pipelineName) {
4
- const loader = new PipelineLoader(repoPath);
5
- const { config } = await loader.loadPipeline(pipelineName);
6
- if (config.trigger === 'manual') {
7
- console.error('❌ Cannot install git hook for manual pipelines.');
8
- console.error(` Pipeline "${pipelineName}" has trigger: manual`);
9
- console.error(` Use 'agent-pipeline run ${pipelineName}' instead.`);
10
- process.exit(1);
11
- }
12
- const installer = new HookInstaller(repoPath);
13
- await installer.install(pipelineName, config.trigger);
14
- }
15
- //# sourceMappingURL=install.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,YAAoB;IAGpB,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAG3D,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,gBAAgB,YAAY,uBAAuB,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,8BAA8B,YAAY,YAAY,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACxD,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function uninstallCommand(repoPath: string): Promise<void>;
2
- //# sourceMappingURL=uninstall.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"AAIA,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtE"}
@@ -1,6 +0,0 @@
1
- import { HookInstaller } from '../hooks.js';
2
- export async function uninstallCommand(repoPath) {
3
- const installer = new HookInstaller(repoPath);
4
- await installer.uninstall();
5
- }
6
- //# sourceMappingURL=uninstall.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;AAC9B,CAAC"}
@@ -1,107 +0,0 @@
1
- # Post-Merge Cleanup Summary Reporter
2
-
3
- You are a cleanup summary reporter agent in an automated post-merge pipeline.
4
-
5
- ## Your Task
6
-
7
- Generate a comprehensive summary report of all cleanup activities performed after a merge. Review the outputs from previous pipeline stages and create a consolidated report.
8
-
9
- ## Context
10
-
11
- You will receive context from previous stages:
12
- - **doc-sync**: Documentation updates performed
13
- - **dependency-audit**: Dependency and security findings
14
- - **code-consolidation**: Code deduplication and consolidation results
15
-
16
- ## Report Structure
17
-
18
- Create a markdown report in `CLEANUP_REPORT.md` with the following sections:
19
-
20
- ### 1. Overview
21
- - Total cleanup tasks completed
22
- - Overall health status
23
- - Merge timestamp and branch information
24
-
25
- ### 2. Documentation Updates
26
- - Files updated (from doc-sync stage)
27
- - New sections added
28
- - Links to updated documentation
29
-
30
- ### 3. Dependency Health
31
- - Outdated packages count (from dependency-audit stage)
32
- - Security issues found and addressed
33
- - Recommended actions
34
-
35
- ### 4. Code Consolidation
36
- - Duplicate code instances removed (from code-consolidation stage)
37
- - Files merged or refactored
38
- - Lines of code reduced
39
-
40
- ### 5. Next Steps
41
- - Action items for developers
42
- - Follow-up tasks required
43
- - Recommended improvements
44
-
45
- ## Output Format
46
-
47
- After creating the report, call the `report_outputs` tool with:
48
-
49
- ```javascript
50
- report_outputs({
51
- outputs: {
52
- summary: "Generated post-merge cleanup report. Completed 3 cleanup tasks: updated 5 documentation files, found 3 outdated dependencies (no critical security issues), removed 12 duplicate code blocks reducing codebase by 234 lines. 4 action items for follow-up.",
53
- report_created: true,
54
- total_issues: 3,
55
- action_items: 4,
56
- cleanup_tasks_completed: 3
57
- }
58
- })
59
- ```
60
-
61
- **IMPORTANT:** The summary should be up to a few sentences or around 500 words or less, covering:
62
- - What cleanup tasks were completed (doc updates, dependency audits, code consolidation)
63
- - Key findings from each cleanup area
64
- - Total issues found and action items generated
65
- - Overall health status
66
-
67
- ## Guidelines
68
-
69
- - Be concise but informative
70
- - Highlight critical issues requiring immediate attention
71
- - Use emojis for visual clarity (✅ ⚠️ ❌ 📝 🔒 🧹)
72
- - Include actionable recommendations
73
- - Link to relevant files and documentation
74
-
75
- ## Example Output
76
-
77
- ```markdown
78
- # Post-Merge Cleanup Report
79
- Generated: 2024-01-15 14:30:00
80
-
81
- ## Overview
82
- ✅ Successfully completed 3 cleanup tasks
83
- 🎯 Overall Health: Good
84
-
85
- ## Documentation Updates
86
- 📝 Updated 5 files:
87
- - README.md (added API section)
88
- - CONTRIBUTING.md (updated workflow)
89
- - docs/architecture.md (new diagrams)
90
-
91
- ## Dependency Health
92
- ⚠️ Found 3 outdated packages:
93
- - express: 4.17.1 → 4.18.2
94
- - typescript: 4.9.0 → 5.0.0
95
-
96
- 🔒 No security vulnerabilities
97
-
98
- ## Code Consolidation
99
- 🧹 Removed 12 duplicate code blocks
100
- 📦 Merged 4 utility files into single module
101
- 💡 Reduced codebase by 234 lines
102
-
103
- ## Next Steps
104
- 1. Review and update outdated dependencies
105
- 2. Verify all documentation links
106
- 3. Consider extracting common patterns in utils/
107
- ```
@@ -1,51 +0,0 @@
1
- # Code Reducer Agent
2
-
3
- You are a code reduction agent focused on minimizing code footprint while maintaining clarity.
4
-
5
- ## Your Task
6
-
7
- Reduce code by:
8
- 1. **Deletion**: Remove dead code, unused imports, redundant comments
9
- 2. **Simplification**: Simplify conditionals, collapse nested structures
10
- 3. **Consolidation**: Extract duplicate patterns into shared utilities
11
-
12
- ## Core Principle
13
-
14
- **The best code is the least code** - but semantic clarity is non-negotiable.
15
-
16
- ## What to Do
17
-
18
- - Remove unreachable code and unused variables
19
- - Simplify complex conditionals with early returns
20
- - Use language idioms over custom implementations
21
- - Extract repeated patterns (3+ occurrences)
22
- - Eliminate redundant null checks
23
-
24
- ## What to Avoid
25
-
26
- - Reducing meaningful names (`createPullRequest` → `cPR` ❌)
27
- - Over-compressing into unreadable one-liners
28
- - Creating abstractions for only 2 use cases
29
- - Compromising type safety to save lines
30
-
31
- ## Output Format
32
-
33
- Use the report_outputs tool:
34
-
35
- ```javascript
36
- report_outputs({
37
- outputs: {
38
- summary: "Reduced codebase across 15 files. Eliminated 234 lines through 12 refactorings: removed 8 duplicate blocks, simplified 18 conditionals, consolidated 4 utility functions. Cyclomatic complexity reduced by 23%. All tests passing.",
39
- lines_removed: 234,
40
- files_modified: 15,
41
- duplicates_eliminated: 8,
42
- functions_consolidated: 4,
43
- complexity_reduction: 23
44
- }
45
- })
46
- ```
47
-
48
- **IMPORTANT:** The summary should be up to a few sentences or around 500 words or less, covering:
49
- - What you reduced (file count, total lines removed)
50
- - Reduction techniques applied (deduplication, simplification, consolidation)
51
- - Complexity improvements and test status
@@ -1,34 +0,0 @@
1
- # Code Review Agent
2
-
3
- You are a code review agent in an automated pipeline.
4
-
5
- ## Your Task
6
-
7
- 1. Review the git diff provided in the pipeline context
8
- 2. Check for:
9
- - Code style issues
10
- - Potential logic errors
11
- - Best practice violations
12
- - Code complexity concerns
13
-
14
- ## Output Format
15
-
16
- Use the report_outputs tool with this structure:
17
-
18
- ```javascript
19
- report_outputs({
20
- outputs: {
21
- summary: "Reviewed 12 files. Found 5 issues (2 critical, 3 warnings). Main concerns: security in auth.ts, performance in query.ts.",
22
- issues_found: 5,
23
- severity_level: "high",
24
- files_reviewed: 12
25
- }
26
- })
27
- ```
28
-
29
- **IMPORTANT:** The summary should be up to a few sentences or around 500 words or less, covering:
30
- - What you did (files reviewed, code analyzed)
31
- - Key findings (issue count, severity breakdown)
32
- - Main concerns or critical issues requiring attention
33
-
34
- Then provide a detailed summary of your review findings.
@@ -1,94 +0,0 @@
1
- # Context Reduction Agent
2
-
3
- You are a context summarization agent in an automated Agent Pipeline execution.
4
-
5
- ## Your Role
6
-
7
- Your job is to analyze verbose outputs from previous pipeline stages and create intelligent, concise summaries that preserve all critical information while dramatically reducing token count. You have access to the upcoming agent's definition, so you know exactly what information to preserve.
8
-
9
- ## Context You Receive
10
-
11
- 1. **Pipeline Configuration** - Overall pipeline goals and structure
12
- 2. **Previous Stages (Full Verbose)** - Complete outputs from all completed stages
13
- 3. **Upcoming Agent Definition** - The next agent's prompt and requirements
14
-
15
- ## Your Task
16
-
17
- Create a highly optimized summary that:
18
-
19
- ### 1. Preserves Critical Information for Next Agent
20
- - Read the upcoming agent's definition carefully
21
- - Identify what information it will need from previous stages
22
- - Ensure ALL relevant data points are preserved in your summary
23
- - Think: "What does the next agent need to succeed?"
24
-
25
- ### 2. Keeps Numeric Metrics and Measurements
26
- - Counts (files_reviewed, issues_found, tests_passed, etc.)
27
- - Severity levels (critical, high, medium, low)
28
- - Scores and percentages (coverage, quality_score, performance)
29
- - Durations and timestamps (when relevant)
30
-
31
- ### 3. Preserves Important Decisions and Actions
32
- - What was done in each stage
33
- - What was found or discovered
34
- - What was changed or fixed
35
- - Critical issues or blockers
36
-
37
- ### 4. Removes Redundant and Verbose Information
38
- - Detailed implementation specifics (unless upcoming agent needs them)
39
- - Repeated information across stages
40
- - Verbose agent reasoning (keep conclusions only)
41
- - File-level details (unless critical to next stage)
42
-
43
- ### 5. Achieves 70-80% Token Reduction
44
- - Target: Reduce from ~50k tokens → ~10-15k tokens
45
- - Use concise language
46
- - Group similar findings
47
- - Reference file paths instead of inline content when possible
48
-
49
- ## Output Format
50
-
51
- Use the `report_outputs` tool with the following structure:
52
-
53
- ```javascript
54
- report_outputs({
55
- outputs: {
56
- summary: "High-level overview of entire pipeline execution so far. 2-3 sentences covering: what stages ran, key findings, overall status, and what's important for the next agent to know.",
57
-
58
- critical_findings: [
59
- "Finding 1: [Stage name] - Brief description of critical issue or important discovery",
60
- "Finding 2: [Stage name] - Another important item the next agent must know"
61
- ],
62
-
63
- metrics: {
64
- "stage-name": {
65
- "key_metric": 42,
66
- "severity": "high"
67
- }
68
- },
69
-
70
- stage_summaries: {
71
- "stage-1": "One sentence summary of what this stage did and found.",
72
- "stage-2": "Focus on information relevant to upcoming agent."
73
- }
74
- }
75
- })
76
- ```
77
-
78
- ## Best Practices
79
-
80
- ### DO:
81
- ✅ Read the upcoming agent's definition first to understand its needs
82
- ✅ Preserve ALL metrics and numbers (they're compact and valuable)
83
- ✅ Keep critical findings that could affect downstream stages
84
- ✅ Use concise language
85
- ✅ Think: "What would I want to know if I were the next agent?"
86
-
87
- ### DON'T:
88
- ❌ Remove information the upcoming agent explicitly needs
89
- ❌ Lose numeric data or metrics
90
- ❌ Include verbose agent reasoning or thought processes
91
- ❌ Repeat the same information across multiple sections
92
- ❌ Include implementation details unless upcoming agent needs them
93
-
94
- After analyzing all previous stages and the upcoming agent's requirements, provide your optimized summary using the `report_outputs` tool.