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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../src/cli/commands/pipeline/export.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAOpE,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAgB,EAChB,YAAoB,EACpB,UAAyB,EAAE;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAE3D,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAGpC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,uBAAuB,CAAC;YAElC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACnD,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAC3D,MAAM,IAAI,YAAY,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,KAAK,CAAC;oBACtD,MAAM,IAAI,eAAe,CAAC;oBAC1B,MAAM,IAAI,YAAY,CAAC;oBACvB,MAAM,IAAI,WAAW,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,YAAY,KAAK,CAAC,IAAI,2BAA2B,KAAK,CAAC,KAAK,MAAM,CAAC;gBAC/E,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,2BAA2B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAEzD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,MAAM,CAAC,MAAM,iBAAiB,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,eAAe,YAAY,aAAa,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,gCAAiC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function importPipelineCommand(repoPath: string, source: string): Promise<void>;
2
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/pipeline/import.ts"],"names":[],"mappings":"AAQA,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAwEf"}
@@ -0,0 +1,59 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import * as YAML from 'yaml';
4
+ import { PipelineValidator } from '../../../validators/pipeline-validator.js';
5
+ import { InteractivePrompts } from '../../utils/interactive-prompts.js';
6
+ export async function importPipelineCommand(repoPath, source) {
7
+ try {
8
+ console.log('\n๐Ÿ“ฅ Importing pipeline...\n');
9
+ let content;
10
+ if (source.startsWith('http://') || source.startsWith('https://')) {
11
+ console.log(` Fetching from: ${source}`);
12
+ const response = await fetch(source);
13
+ if (!response.ok) {
14
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
15
+ }
16
+ content = await response.text();
17
+ }
18
+ else {
19
+ console.log(` Reading from: ${source}`);
20
+ content = await fs.readFile(source, 'utf-8');
21
+ }
22
+ const config = YAML.parse(content);
23
+ if (!config.name) {
24
+ console.error('โŒ Invalid pipeline: missing name field');
25
+ process.exit(1);
26
+ }
27
+ console.log(` Pipeline name: ${config.name}\n`);
28
+ console.log('๐Ÿ“‹ Validating pipeline...\n');
29
+ const isValid = await PipelineValidator.validateAndReport(config, repoPath);
30
+ if (!isValid) {
31
+ console.error('โŒ Pipeline validation failed');
32
+ process.exit(1);
33
+ }
34
+ const pipelinesDir = path.join(repoPath, '.agent-pipeline', 'pipelines');
35
+ const targetPath = path.join(pipelinesDir, `${config.name}.yml`);
36
+ try {
37
+ await fs.access(targetPath);
38
+ const overwrite = await InteractivePrompts.confirm(`\nโš ๏ธ Pipeline "${config.name}" already exists. Overwrite?`, false);
39
+ if (!overwrite) {
40
+ console.log('Cancelled.');
41
+ return;
42
+ }
43
+ }
44
+ catch {
45
+ }
46
+ await fs.mkdir(pipelinesDir, { recursive: true });
47
+ await fs.writeFile(targetPath, YAML.stringify(config), 'utf-8');
48
+ console.log(`\nโœ… Pipeline imported successfully!`);
49
+ console.log(` Location: .agent-pipeline/pipelines/${config.name}.yml`);
50
+ console.log(`\n๐Ÿ’ก Next steps:`);
51
+ console.log(` - Review configuration: agent-pipeline config ${config.name}`);
52
+ console.log(` - Run the pipeline: agent-pipeline run ${config.name}\n`);
53
+ }
54
+ catch (error) {
55
+ console.error(`โŒ Failed to import pipeline: ${error.message}`);
56
+ process.exit(1);
57
+ }
58
+ }
59
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../../../src/cli/commands/pipeline/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function validatePipelineCommand(repoPath: string, pipelineName: string): Promise<void>;
2
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/pipeline/validate.ts"],"names":[],"mappings":"AAKA,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -0,0 +1,28 @@
1
+ import { PipelineLoader } from '../../../config/pipeline-loader.js';
2
+ import { PipelineValidator } from '../../../validators/pipeline-validator.js';
3
+ export async function validatePipelineCommand(repoPath, pipelineName) {
4
+ try {
5
+ console.log(`\n๐Ÿ“‹ Validating pipeline: ${pipelineName}\n`);
6
+ const loader = new PipelineLoader(repoPath);
7
+ const { config } = await loader.loadPipeline(pipelineName);
8
+ const isValid = await PipelineValidator.validateAndReport(config, repoPath);
9
+ if (isValid) {
10
+ console.log('\nโœ… Pipeline is valid!\n');
11
+ process.exit(0);
12
+ }
13
+ else {
14
+ console.log('\nโŒ Pipeline has validation errors\n');
15
+ process.exit(1);
16
+ }
17
+ }
18
+ catch (error) {
19
+ if (error.message?.includes('Pipeline not found')) {
20
+ console.error(`โŒ Pipeline "${pipelineName}" not found`);
21
+ }
22
+ else {
23
+ console.error(`โŒ Validation failed: ${error.message}`);
24
+ }
25
+ process.exit(1);
26
+ }
27
+ }
28
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/cli/commands/pipeline/validate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAE9E,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,YAAoB;IAEpB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,IAAI,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE5E,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,eAAe,YAAY,aAAa,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,wBAAyB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface RollbackOptions {
2
+ runId?: string;
3
+ stages?: number;
4
+ }
5
+ export declare function rollbackCommand(repoPath: string, options: RollbackOptions): Promise<void>;
6
+ //# sourceMappingURL=rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/rollback.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CA+Df"}
@@ -0,0 +1,49 @@
1
+ import * as readline from 'readline';
2
+ import { GitManager } from '../../core/git-manager.js';
3
+ import { StateManager } from '../../core/state-manager.js';
4
+ export async function rollbackCommand(repoPath, options) {
5
+ const gitManager = new GitManager(repoPath);
6
+ const stateManager = new StateManager(repoPath);
7
+ const state = options.runId
8
+ ? await stateManager.loadState(options.runId)
9
+ : await stateManager.getLatestRun();
10
+ if (!state) {
11
+ console.error('โŒ No pipeline run found to rollback');
12
+ return;
13
+ }
14
+ console.log(`\n๐Ÿ”„ Rolling back pipeline: ${state.pipelineConfig.name}`);
15
+ console.log(` Run ID: ${state.runId}`);
16
+ let targetCommit;
17
+ if (options.stages) {
18
+ const successfulStages = state.stages.filter(s => s.commitSha);
19
+ if (options.stages > successfulStages.length) {
20
+ console.error(`โŒ Cannot rollback ${options.stages} stages, only ${successfulStages.length} commits found`);
21
+ return;
22
+ }
23
+ const targetStage = successfulStages[successfulStages.length - options.stages - 1];
24
+ targetCommit = targetStage?.commitSha || state.trigger.commitSha;
25
+ console.log(` Rolling back ${options.stages} stage(s)`);
26
+ }
27
+ else {
28
+ targetCommit = state.trigger.commitSha;
29
+ console.log(` Rolling back to initial commit`);
30
+ }
31
+ console.log(` Target: ${targetCommit.substring(0, 7)}`);
32
+ const rl = readline.createInterface({
33
+ input: process.stdin,
34
+ output: process.stdout
35
+ });
36
+ const answer = await new Promise((resolve) => {
37
+ rl.question('\nโš ๏ธ This will reset your branch. Continue? (y/N): ', resolve);
38
+ });
39
+ rl.close();
40
+ if (answer.toLowerCase() !== 'y') {
41
+ console.log('Cancelled.');
42
+ return;
43
+ }
44
+ await gitManager.revertToCommit(targetCommit);
45
+ console.log(`\nโœ… Rolled back successfully`);
46
+ console.log(` Current HEAD: ${targetCommit.substring(0, 7)}`);
47
+ console.log(`\n๐Ÿ’ก Tip: Use 'git reflog' to see all commits if you need to recover\n`);
48
+ }
49
+ //# sourceMappingURL=rollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../../src/cli/commands/rollback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { PipelineMetadata } from '../../config/schema.js';
2
+ export interface RunOptions {
3
+ dryRun?: boolean;
4
+ interactive?: boolean;
5
+ noPr?: boolean;
6
+ baseBranch?: string;
7
+ prDraft?: boolean;
8
+ prWeb?: boolean;
9
+ noNotifications?: boolean;
10
+ loop?: boolean;
11
+ loopMetadata?: PipelineMetadata;
12
+ maxLoopIterations?: number;
13
+ }
14
+ export declare function runCommand(repoPath: string, pipelineName: string, options?: RunOptions): Promise<void>;
15
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAuEf"}
@@ -0,0 +1,61 @@
1
+ import React from 'react';
2
+ import { render } from 'ink';
3
+ import { PipelineRunner } from '../../core/pipeline-runner.js';
4
+ import { PipelineLoader } from '../../config/pipeline-loader.js';
5
+ import { PipelineValidator } from '../../validators/pipeline-validator.js';
6
+ import { PipelineUI } from '../../ui/pipeline-ui.js';
7
+ export async function runCommand(repoPath, pipelineName, options = {}) {
8
+ const loader = new PipelineLoader(repoPath);
9
+ const { config, metadata } = await loader.loadPipeline(pipelineName);
10
+ if (options.noNotifications) {
11
+ config.notifications = { enabled: false };
12
+ }
13
+ if (options.noPr && config.git?.pullRequest) {
14
+ config.git.pullRequest.autoCreate = false;
15
+ }
16
+ if (options.baseBranch && config.git) {
17
+ config.git.baseBranch = options.baseBranch;
18
+ }
19
+ if (options.prDraft && config.git?.pullRequest) {
20
+ config.git.pullRequest.draft = true;
21
+ }
22
+ if (options.prWeb && config.git?.pullRequest) {
23
+ config.git.pullRequest.web = true;
24
+ }
25
+ const isValid = await PipelineValidator.validateAndReport(config, repoPath);
26
+ if (!isValid) {
27
+ process.exit(1);
28
+ }
29
+ const runner = new PipelineRunner(repoPath, options.dryRun);
30
+ const interactive = options.interactive ?? true;
31
+ const loopMetadata = options.loopMetadata ?? metadata;
32
+ let uiInstance;
33
+ if (interactive) {
34
+ uiInstance = render(React.createElement(PipelineUI, {
35
+ onStateChange: (callback) => {
36
+ runner.onStateChange(callback);
37
+ }
38
+ }));
39
+ }
40
+ try {
41
+ const result = await runner.runPipeline(config, {
42
+ interactive,
43
+ loop: options.loop,
44
+ loopMetadata,
45
+ maxLoopIterations: options.maxLoopIterations
46
+ });
47
+ const exitCode = result.status === 'completed'
48
+ ? (result.loopContext?.terminationReason === 'limit-reached' ? 1 : 0)
49
+ : 1;
50
+ process.exit(exitCode);
51
+ }
52
+ catch (error) {
53
+ throw error;
54
+ }
55
+ finally {
56
+ if (uiInstance) {
57
+ uiInstance.unmount();
58
+ }
59
+ }
60
+ }
61
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function statusCommand(repoPath: string): Promise<void>;
2
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DnE"}
@@ -0,0 +1,52 @@
1
+ import { StateManager } from '../../core/state-manager.js';
2
+ export async function statusCommand(repoPath) {
3
+ const stateManager = new StateManager(repoPath);
4
+ const latestRun = await stateManager.getLatestRun();
5
+ if (!latestRun) {
6
+ console.log('No pipeline runs found');
7
+ return;
8
+ }
9
+ console.log(`\n${'='.repeat(60)}`);
10
+ console.log(`Latest Pipeline Run: ${latestRun.pipelineConfig.name}`);
11
+ console.log(`${'='.repeat(60)}\n`);
12
+ console.log(`Run ID: ${latestRun.runId}`);
13
+ console.log(`Status: ${latestRun.status.toUpperCase()}`);
14
+ console.log(`Duration: ${latestRun.artifacts.totalDuration.toFixed(2)}s`);
15
+ console.log(`Timestamp: ${latestRun.trigger.timestamp}`);
16
+ console.log(`Trigger: ${latestRun.trigger.type}`);
17
+ console.log(`Initial Commit: ${latestRun.artifacts.initialCommit?.substring(0, 7) || 'N/A'}`);
18
+ console.log(`Final Commit: ${latestRun.artifacts.finalCommit?.substring(0, 7) || 'N/A'}`);
19
+ if (latestRun.artifacts.pullRequest) {
20
+ console.log(`Pull Request: ${latestRun.artifacts.pullRequest.url}`);
21
+ console.log(`PR Branch: ${latestRun.artifacts.pullRequest.branch}`);
22
+ }
23
+ console.log(`\n${'โ”€'.repeat(60)}`);
24
+ console.log('Stages:\n');
25
+ latestRun.stages.forEach(stage => {
26
+ const statusIcon = stage.status === 'success' ? 'โœ…' :
27
+ stage.status === 'failed' ? 'โŒ' :
28
+ stage.status === 'skipped' ? 'โญ๏ธ' : 'โณ';
29
+ const duration = stage.duration ? `${stage.duration.toFixed(1)}s` : 'N/A';
30
+ console.log(`${statusIcon} ${stage.stageName}`);
31
+ console.log(` Status: ${stage.status}`);
32
+ console.log(` Duration: ${duration}`);
33
+ if (stage.commitSha) {
34
+ console.log(` Commit: ${stage.commitSha.substring(0, 7)}`);
35
+ }
36
+ if (stage.extractedData && Object.keys(stage.extractedData).length > 0) {
37
+ console.log(` Extracted Data:`);
38
+ for (const [key, value] of Object.entries(stage.extractedData)) {
39
+ console.log(` - ${key}: ${value}`);
40
+ }
41
+ }
42
+ if (stage.error) {
43
+ console.log(` Error: ${stage.error.message}`);
44
+ if (stage.error.suggestion) {
45
+ console.log(` ๐Ÿ’ก ${stage.error.suggestion}`);
46
+ }
47
+ }
48
+ console.log('');
49
+ });
50
+ console.log(`${'='.repeat(60)}\n`);
51
+ }
52
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface TestOptions {
2
+ notifications?: boolean;
3
+ }
4
+ export declare function testCommand(repoPath: string, pipelineName: string, options?: TestOptions): Promise<void>;
5
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -0,0 +1,18 @@
1
+ import { PipelineLoader } from '../../config/pipeline-loader.js';
2
+ import { NotificationManager } from '../../notifications/notification-manager.js';
3
+ export async function testCommand(repoPath, pipelineName, options = {}) {
4
+ if (options.notifications) {
5
+ const loader = new PipelineLoader(repoPath);
6
+ const { config } = await loader.loadPipeline(pipelineName);
7
+ if (!config.notifications) {
8
+ console.log('โŒ No notification configuration found in pipeline');
9
+ process.exit(1);
10
+ }
11
+ const manager = new NotificationManager(config.notifications);
12
+ await manager.test();
13
+ }
14
+ else {
15
+ console.log('Usage: agent-pipeline test <pipeline-name> --notifications');
16
+ }
17
+ }
18
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAMlF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,YAAoB,EACpB,UAAuB,EAAE;IAEzB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function uninstallCommand(repoPath: string): Promise<void>;
2
+ //# sourceMappingURL=uninstall.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,6 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,8 @@
1
+ export declare class HookInstaller {
2
+ private repoPath;
3
+ constructor(repoPath: string);
4
+ install(pipelineName: string, hookType: string): Promise<void>;
5
+ uninstall(hookType?: string): Promise<void>;
6
+ private generateHookScript;
7
+ }
8
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAKA,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAE9B,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC9D,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyEjD,OAAO,CAAC,kBAAkB;CAO3B"}
@@ -0,0 +1,98 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ export class HookInstaller {
4
+ repoPath;
5
+ constructor(repoPath) {
6
+ this.repoPath = repoPath;
7
+ }
8
+ async install(pipelineName, hookType) {
9
+ const hookPath = path.join(this.repoPath, '.git', 'hooks', hookType);
10
+ let existingHook = '';
11
+ try {
12
+ existingHook = await fs.readFile(hookPath, 'utf-8');
13
+ }
14
+ catch {
15
+ }
16
+ const hookScript = this.generateHookScript(pipelineName);
17
+ const hookMarker = `# Agent Pipeline (${hookType}): ${pipelineName}`;
18
+ if (existingHook) {
19
+ if (existingHook.includes(hookMarker)) {
20
+ console.log(`โš ๏ธ Agent Pipeline already installed for ${pipelineName} on ${hookType}`);
21
+ return;
22
+ }
23
+ const combinedHook = `${existingHook}\n\n${hookMarker}\n${hookScript}`;
24
+ await fs.writeFile(hookPath, combinedHook, 'utf-8');
25
+ }
26
+ else {
27
+ await fs.writeFile(hookPath, `#!/bin/bash\n\n${hookMarker}\n${hookScript}`, 'utf-8');
28
+ }
29
+ await fs.chmod(hookPath, 0o755);
30
+ console.log(`โœ… ${hookType} hook installed`);
31
+ console.log(` Pipeline: ${pipelineName}`);
32
+ console.log(` Hook: .git/hooks/${hookType}`);
33
+ }
34
+ async uninstall(hookType) {
35
+ const hookTypes = hookType
36
+ ? [hookType]
37
+ : ['pre-commit', 'post-commit', 'pre-push', 'post-merge'];
38
+ let uninstalledCount = 0;
39
+ for (const type of hookTypes) {
40
+ const hookPath = path.join(this.repoPath, '.git', 'hooks', type);
41
+ try {
42
+ const content = await fs.readFile(hookPath, 'utf-8');
43
+ const lines = content.split('\n');
44
+ const filtered = [];
45
+ let inPipelineSection = false;
46
+ let blankLineCount = 0;
47
+ for (let i = 0; i < lines.length; i++) {
48
+ const line = lines[i];
49
+ if (line.includes('# Agent Pipeline')) {
50
+ inPipelineSection = true;
51
+ blankLineCount = 0;
52
+ continue;
53
+ }
54
+ if (inPipelineSection) {
55
+ if (line.trim() === '') {
56
+ blankLineCount++;
57
+ if (blankLineCount >= 2 || i === lines.length - 1) {
58
+ inPipelineSection = false;
59
+ blankLineCount = 0;
60
+ }
61
+ continue;
62
+ }
63
+ else {
64
+ blankLineCount = 0;
65
+ continue;
66
+ }
67
+ }
68
+ filtered.push(line);
69
+ }
70
+ const newContent = filtered.join('\n').trim();
71
+ if (newContent === '#!/bin/bash' || !newContent) {
72
+ await fs.unlink(hookPath);
73
+ console.log(`โœ… ${type} hook removed (was only agent-pipeline)`);
74
+ uninstalledCount++;
75
+ }
76
+ else {
77
+ await fs.writeFile(hookPath, newContent, 'utf-8');
78
+ console.log(`โœ… Agent Pipeline section removed from ${type} hook`);
79
+ uninstalledCount++;
80
+ }
81
+ }
82
+ catch (error) {
83
+ continue;
84
+ }
85
+ }
86
+ if (uninstalledCount === 0) {
87
+ console.log('โ„น๏ธ No Agent Pipeline hooks found to uninstall');
88
+ }
89
+ }
90
+ generateHookScript(pipelineName) {
91
+ return `# Run Agent Pipeline in background to avoid blocking
92
+ nohup npx agent-pipeline run ${pipelineName} > /dev/null 2>&1 &
93
+
94
+ # Optional: Notify user
95
+ echo "๐Ÿค– Agent Pipeline running in background (${pipelineName})"`;
96
+ }
97
+ }
98
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
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
+ ```