@posthog/agent 1.11.0 → 1.13.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 (268) hide show
  1. package/README.md +26 -65
  2. package/dist/_virtual/_commonjsHelpers.js +6 -0
  3. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  4. package/dist/_virtual/index.js +4 -0
  5. package/dist/_virtual/index.js.map +1 -0
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/node_modules/@ai-sdk/anthropic/dist/index.js +1154 -0
  9. package/dist/node_modules/@ai-sdk/anthropic/dist/index.js.map +1 -0
  10. package/dist/node_modules/@ai-sdk/provider/dist/index.js +296 -0
  11. package/dist/node_modules/@ai-sdk/provider/dist/index.js.map +1 -0
  12. package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js +576 -0
  13. package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js.map +1 -0
  14. package/dist/node_modules/@ai-sdk/ui-utils/dist/index.js +741 -0
  15. package/dist/node_modules/@ai-sdk/ui-utils/dist/index.js.map +1 -0
  16. package/dist/node_modules/@opentelemetry/api/build/esm/api/context.js +112 -0
  17. package/dist/node_modules/@opentelemetry/api/build/esm/api/context.js.map +1 -0
  18. package/dist/node_modules/@opentelemetry/api/build/esm/api/diag.js +123 -0
  19. package/dist/node_modules/@opentelemetry/api/build/esm/api/diag.js.map +1 -0
  20. package/dist/node_modules/@opentelemetry/api/build/esm/api/metrics.js +62 -0
  21. package/dist/node_modules/@opentelemetry/api/build/esm/api/metrics.js.map +1 -0
  22. package/dist/node_modules/@opentelemetry/api/build/esm/api/propagation.js +91 -0
  23. package/dist/node_modules/@opentelemetry/api/build/esm/api/propagation.js.map +1 -0
  24. package/dist/node_modules/@opentelemetry/api/build/esm/api/trace.js +79 -0
  25. package/dist/node_modules/@opentelemetry/api/build/esm/api/trace.js.map +1 -0
  26. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js +59 -0
  27. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js.map +1 -0
  28. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js +99 -0
  29. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js.map +1 -0
  30. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/utils.js +31 -0
  31. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/utils.js.map +1 -0
  32. package/dist/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js +69 -0
  33. package/dist/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js.map +1 -0
  34. package/dist/node_modules/@opentelemetry/api/build/esm/context/context.js +54 -0
  35. package/dist/node_modules/@opentelemetry/api/build/esm/context/context.js.map +1 -0
  36. package/dist/node_modules/@opentelemetry/api/build/esm/context-api.js +22 -0
  37. package/dist/node_modules/@opentelemetry/api/build/esm/context-api.js.map +1 -0
  38. package/dist/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js +104 -0
  39. package/dist/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js.map +1 -0
  40. package/dist/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js +44 -0
  41. package/dist/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js.map +1 -0
  42. package/dist/node_modules/@opentelemetry/api/build/esm/diag/types.js +43 -0
  43. package/dist/node_modules/@opentelemetry/api/build/esm/diag/types.js.map +1 -0
  44. package/dist/node_modules/@opentelemetry/api/build/esm/diag-api.js +27 -0
  45. package/dist/node_modules/@opentelemetry/api/build/esm/diag-api.js.map +1 -0
  46. package/dist/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js +62 -0
  47. package/dist/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js.map +1 -0
  48. package/dist/node_modules/@opentelemetry/api/build/esm/internal/semver.js +121 -0
  49. package/dist/node_modules/@opentelemetry/api/build/esm/internal/semver.js.map +1 -0
  50. package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js +167 -0
  51. package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js.map +1 -0
  52. package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js +33 -0
  53. package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js.map +1 -0
  54. package/dist/node_modules/@opentelemetry/api/build/esm/metrics-api.js +22 -0
  55. package/dist/node_modules/@opentelemetry/api/build/esm/metrics-api.js.map +1 -0
  56. package/dist/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js +21 -0
  57. package/dist/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js.map +1 -0
  58. package/dist/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js +35 -0
  59. package/dist/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js.map +1 -0
  60. package/dist/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js +40 -0
  61. package/dist/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js.map +1 -0
  62. package/dist/node_modules/@opentelemetry/api/build/esm/propagation-api.js +22 -0
  63. package/dist/node_modules/@opentelemetry/api/build/esm/propagation-api.js.map +1 -0
  64. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js +70 -0
  65. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js.map +1 -0
  66. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js +78 -0
  67. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js.map +1 -0
  68. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js +34 -0
  69. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js.map +1 -0
  70. package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js +55 -0
  71. package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js.map +1 -0
  72. package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js +56 -0
  73. package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js.map +1 -0
  74. package/dist/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js +76 -0
  75. package/dist/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js.map +1 -0
  76. package/dist/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js +27 -0
  77. package/dist/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js.map +1 -0
  78. package/dist/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js +45 -0
  79. package/dist/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js.map +1 -0
  80. package/dist/node_modules/@opentelemetry/api/build/esm/trace/status.js +22 -0
  81. package/dist/node_modules/@opentelemetry/api/build/esm/trace/status.js.map +1 -0
  82. package/dist/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js +25 -0
  83. package/dist/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js.map +1 -0
  84. package/dist/node_modules/@opentelemetry/api/build/esm/trace-api.js +24 -0
  85. package/dist/node_modules/@opentelemetry/api/build/esm/trace-api.js.map +1 -0
  86. package/dist/node_modules/@opentelemetry/api/build/esm/version.js +20 -0
  87. package/dist/node_modules/@opentelemetry/api/build/esm/version.js.map +1 -0
  88. package/dist/node_modules/ai/dist/index.js +2870 -0
  89. package/dist/node_modules/ai/dist/index.js.map +1 -0
  90. package/dist/node_modules/nanoid/non-secure/index.js +13 -0
  91. package/dist/node_modules/nanoid/non-secure/index.js.map +1 -0
  92. package/dist/node_modules/secure-json-parse/index.js +133 -0
  93. package/dist/node_modules/secure-json-parse/index.js.map +1 -0
  94. package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js +37 -0
  95. package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js.map +1 -0
  96. package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js +26 -0
  97. package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +1 -0
  98. package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +17 -0
  99. package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +1 -0
  100. package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +11 -0
  101. package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +1 -0
  102. package/dist/node_modules/zod-to-json-schema/dist/esm/index.js +8 -0
  103. package/dist/node_modules/zod-to-json-schema/dist/esm/index.js.map +1 -0
  104. package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js +66 -0
  105. package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +1 -0
  106. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +21 -0
  107. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +1 -0
  108. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +30 -0
  109. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +1 -0
  110. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +53 -0
  111. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +1 -0
  112. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +8 -0
  113. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +1 -0
  114. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +8 -0
  115. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +1 -0
  116. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +8 -0
  117. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +1 -0
  118. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +50 -0
  119. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +1 -0
  120. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +11 -0
  121. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +1 -0
  122. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +11 -0
  123. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +1 -0
  124. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +9 -0
  125. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +1 -0
  126. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +56 -0
  127. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +1 -0
  128. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +24 -0
  129. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +1 -0
  130. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +30 -0
  131. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +1 -0
  132. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +19 -0
  133. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +1 -0
  134. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +15 -0
  135. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +1 -0
  136. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +13 -0
  137. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +1 -0
  138. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +37 -0
  139. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +1 -0
  140. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +56 -0
  141. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +1 -0
  142. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +76 -0
  143. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +1 -0
  144. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +25 -0
  145. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +1 -0
  146. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +24 -0
  147. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +1 -0
  148. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +8 -0
  149. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +1 -0
  150. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +8 -0
  151. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +1 -0
  152. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +65 -0
  153. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +1 -0
  154. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +24 -0
  155. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +1 -0
  156. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +350 -0
  157. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
  158. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +36 -0
  159. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +1 -0
  160. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +10 -0
  161. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +1 -0
  162. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +84 -0
  163. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +1 -0
  164. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +8 -0
  165. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +1 -0
  166. package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js +110 -0
  167. package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +1 -0
  168. package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +90 -0
  169. package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +1 -0
  170. package/dist/src/adapters/types.d.ts +1 -1
  171. package/dist/src/agent.d.ts +3 -13
  172. package/dist/src/agent.d.ts.map +1 -1
  173. package/dist/src/agent.js +94 -504
  174. package/dist/src/agent.js.map +1 -1
  175. package/dist/src/agents/execution.d.ts +1 -1
  176. package/dist/src/agents/execution.js +2 -2
  177. package/dist/src/agents/execution.js.map +1 -1
  178. package/dist/src/agents/planning.d.ts +1 -1
  179. package/dist/src/agents/planning.d.ts.map +1 -1
  180. package/dist/src/agents/planning.js +1 -2
  181. package/dist/src/agents/planning.js.map +1 -1
  182. package/dist/src/agents/research.d.ts +1 -1
  183. package/dist/src/agents/research.d.ts.map +1 -1
  184. package/dist/src/agents/research.js +3 -6
  185. package/dist/src/agents/research.js.map +1 -1
  186. package/dist/src/git-manager.js +1 -1
  187. package/dist/src/git-manager.js.map +1 -1
  188. package/dist/src/posthog-api.d.ts +0 -8
  189. package/dist/src/posthog-api.d.ts.map +1 -1
  190. package/dist/src/posthog-api.js +0 -32
  191. package/dist/src/posthog-api.js.map +1 -1
  192. package/dist/src/prompt-builder.d.ts.map +1 -1
  193. package/dist/src/prompt-builder.js +0 -1
  194. package/dist/src/prompt-builder.js.map +1 -1
  195. package/dist/src/structured-extraction.d.ts +2 -2
  196. package/dist/src/structured-extraction.d.ts.map +1 -1
  197. package/dist/src/structured-extraction.js +51 -110
  198. package/dist/src/structured-extraction.js.map +1 -1
  199. package/dist/src/task-progress-reporter.d.ts +0 -6
  200. package/dist/src/task-progress-reporter.d.ts.map +1 -1
  201. package/dist/src/task-progress-reporter.js +2 -26
  202. package/dist/src/task-progress-reporter.js.map +1 -1
  203. package/dist/src/template-manager.d.ts.map +1 -1
  204. package/dist/src/template-manager.js +26 -4
  205. package/dist/src/template-manager.js.map +1 -1
  206. package/dist/src/types.d.ts +0 -4
  207. package/dist/src/types.d.ts.map +1 -1
  208. package/dist/src/types.js +0 -1
  209. package/dist/src/types.js.map +1 -1
  210. package/dist/src/workflow/config.d.ts +3 -0
  211. package/dist/src/workflow/config.d.ts.map +1 -0
  212. package/dist/src/workflow/config.js +43 -0
  213. package/dist/src/workflow/config.js.map +1 -0
  214. package/dist/src/workflow/steps/build.d.ts +3 -0
  215. package/dist/src/workflow/steps/build.d.ts.map +1 -0
  216. package/dist/src/workflow/steps/build.js +64 -0
  217. package/dist/src/workflow/steps/build.js.map +1 -0
  218. package/dist/src/workflow/steps/plan.d.ts +3 -0
  219. package/dist/src/workflow/steps/plan.d.ts.map +1 -0
  220. package/dist/src/workflow/steps/plan.js +86 -0
  221. package/dist/src/workflow/steps/plan.js.map +1 -0
  222. package/dist/src/workflow/steps/research.d.ts +3 -0
  223. package/dist/src/workflow/steps/research.d.ts.map +1 -0
  224. package/dist/src/workflow/steps/research.js +124 -0
  225. package/dist/src/workflow/steps/research.js.map +1 -0
  226. package/dist/src/workflow/types.d.ts +48 -0
  227. package/dist/src/workflow/types.d.ts.map +1 -0
  228. package/dist/src/workflow/utils.d.ts +12 -0
  229. package/dist/src/workflow/utils.d.ts.map +1 -0
  230. package/dist/src/workflow/utils.js +38 -0
  231. package/dist/src/workflow/utils.js.map +1 -0
  232. package/package.json +6 -4
  233. package/src/adapters/types.ts +1 -1
  234. package/src/agent.ts +114 -554
  235. package/src/agents/execution.ts +2 -2
  236. package/src/agents/planning.ts +1 -2
  237. package/src/agents/research.ts +3 -6
  238. package/src/git-manager.ts +1 -1
  239. package/src/posthog-api.ts +0 -40
  240. package/src/prompt-builder.ts +0 -2
  241. package/src/structured-extraction.ts +58 -115
  242. package/src/task-progress-reporter.ts +2 -34
  243. package/src/template-manager.ts +35 -5
  244. package/src/types.ts +0 -7
  245. package/src/workflow/config.ts +42 -0
  246. package/src/workflow/steps/build.ts +87 -0
  247. package/src/workflow/steps/plan.ts +112 -0
  248. package/src/workflow/steps/research.ts +156 -0
  249. package/src/workflow/types.ts +53 -0
  250. package/src/workflow/utils.ts +50 -0
  251. package/dist/src/agent-registry.d.ts +0 -16
  252. package/dist/src/agent-registry.d.ts.map +0 -1
  253. package/dist/src/agent-registry.js +0 -62
  254. package/dist/src/agent-registry.js.map +0 -1
  255. package/dist/src/stage-executor.d.ts +0 -20
  256. package/dist/src/stage-executor.d.ts.map +0 -1
  257. package/dist/src/stage-executor.js +0 -178
  258. package/dist/src/stage-executor.js.map +0 -1
  259. package/dist/src/workflow-registry.d.ts +0 -11
  260. package/dist/src/workflow-registry.d.ts.map +0 -1
  261. package/dist/src/workflow-registry.js +0 -27
  262. package/dist/src/workflow-registry.js.map +0 -1
  263. package/dist/src/workflow-types.d.ts +0 -45
  264. package/dist/src/workflow-types.d.ts.map +0 -1
  265. package/src/agent-registry.ts +0 -65
  266. package/src/stage-executor.ts +0 -210
  267. package/src/workflow-registry.ts +0 -30
  268. package/src/workflow-types.ts +0 -52
@@ -1 +0,0 @@
1
- {"version":3,"file":"stage-executor.js","sources":["../../src/stage-executor.ts"],"sourcesContent":["import { query } from '@anthropic-ai/claude-agent-sdk';\nimport { Logger } from './utils/logger.js';\nimport { ClaudeAdapter } from './adapters/claude/claude-adapter.js';\nimport { AgentRegistry } from './agent-registry.js';\nimport type { AgentEvent, Task, McpServerConfig } from './types.js';\nimport type { WorkflowStage, WorkflowStageExecutionResult, WorkflowExecutionOptions } from './workflow-types.js';\nimport { RESEARCH_SYSTEM_PROMPT } from './agents/research.js';\nimport { PLANNING_SYSTEM_PROMPT } from './agents/planning.js';\nimport { EXECUTION_SYSTEM_PROMPT } from './agents/execution.js';\nimport { PromptBuilder } from './prompt-builder.js';\n\nexport class StageExecutor {\n private registry: AgentRegistry;\n private logger: Logger;\n private adapter: ClaudeAdapter;\n private promptBuilder: PromptBuilder;\n private eventHandler?: (event: AgentEvent) => void;\n private mcpServers?: Record<string, McpServerConfig>;\n\n constructor(\n registry: AgentRegistry,\n logger: Logger,\n promptBuilder?: PromptBuilder,\n eventHandler?: (event: AgentEvent) => void,\n mcpServers?: Record<string, McpServerConfig>,\n ) {\n this.registry = registry;\n this.logger = logger.child('StageExecutor');\n this.adapter = new ClaudeAdapter();\n this.promptBuilder = promptBuilder || new PromptBuilder({\n getTaskFiles: async () => [],\n generatePlanTemplate: async () => '',\n logger,\n });\n this.eventHandler = eventHandler;\n this.mcpServers = mcpServers;\n }\n\n setEventHandler(handler?: (event: AgentEvent) => void): void {\n this.eventHandler = handler;\n }\n\n async execute(task: Task, stage: WorkflowStage, options: WorkflowExecutionOptions): Promise<WorkflowStageExecutionResult> {\n const isManual = stage.is_manual_only === true;\n if (isManual) {\n this.logger.info('Manual stage detected; skipping agent execution', { stage: stage.key });\n return { results: [] };\n }\n\n const inferredAgent = stage.key.toLowerCase().includes('plan') ? 'planning_basic' : 'code_generation';\n const agentName = stage.agent_name || inferredAgent;\n const agent = this.registry.getAgent(agentName);\n if (!agent) {\n throw new Error(`Unknown agent '${agentName}' for stage '${stage.key}'`);\n }\n\n const permissionMode = (options.permissionMode as any) || 'acceptEdits';\n const cwd = options.repositoryPath || process.cwd();\n\n switch (agent.agent_type) {\n case 'research':\n return this.runResearch(task, cwd, options, stage.key);\n case 'planning':\n return this.runPlanning(task, cwd, options, stage.key);\n case 'execution':\n return this.runExecution(task, cwd, permissionMode, options, stage.key);\n case 'review': // TODO: Implement review\n case 'testing': // TODO: Implement testing\n default:\n // throw new Error(`Unsupported agent type: ${agent.agent_type}`);\n console.warn(`Unsupported agent type: ${agent.agent_type}`);\n return { results: [] };\n }\n }\n\n private async runResearch(task: Task, cwd: string, options: WorkflowExecutionOptions, stageKey: string): Promise<WorkflowStageExecutionResult> {\n const contextPrompt = await this.promptBuilder.buildResearchPrompt(task, cwd);\n let prompt = RESEARCH_SYSTEM_PROMPT + '\\n\\n' + contextPrompt;\n\n const stageOverrides = options.stageOverrides?.[stageKey] || options.stageOverrides?.['research'];\n const mergedOverrides = {\n ...(options.queryOverrides || {}),\n ...(stageOverrides?.queryOverrides || {}),\n } as Record<string, any>;\n\n const baseOptions: Record<string, any> = {\n model: 'claude-sonnet-4-5-20250929',\n cwd,\n permissionMode: 'plan',\n settingSources: ['local'],\n mcpServers: this.mcpServers\n };\n\n const response = query({\n prompt,\n options: { ...baseOptions, ...mergedOverrides },\n });\n\n let research = '';\n for await (const message of response) {\n // Emit raw SDK event first\n this.eventHandler?.(this.adapter.createRawSDKEvent(message));\n\n // Then emit transformed event\n const transformed = this.adapter.transform(message);\n if (transformed) {\n if (transformed.type !== 'token') {\n this.logger.debug('Research event', { type: transformed.type });\n }\n this.eventHandler?.(transformed);\n }\n\n if (message.type === 'assistant' && message.message?.content) {\n for (const c of message.message.content) {\n if (c.type === 'text' && c.text) research += c.text + '\\n';\n }\n }\n }\n\n return { plan: research.trim() }; // Return as 'plan' field to match existing interface\n }\n\n private async runPlanning(task: Task, cwd: string, options: WorkflowExecutionOptions, stageKey: string): Promise<WorkflowStageExecutionResult> {\n const contextPrompt = await this.promptBuilder.buildPlanningPrompt(task, cwd);\n let prompt = PLANNING_SYSTEM_PROMPT + '\\n\\n' + contextPrompt;\n\n const stageOverrides = options.stageOverrides?.[stageKey] || options.stageOverrides?.['plan'];\n const mergedOverrides = {\n ...(options.queryOverrides || {}),\n ...(stageOverrides?.queryOverrides || {}),\n } as Record<string, any>;\n\n const baseOptions: Record<string, any> = {\n model: 'claude-sonnet-4-5-20250929',\n cwd,\n permissionMode: 'plan',\n settingSources: ['local'],\n mcpServers: this.mcpServers\n };\n\n const response = query({\n prompt,\n options: { ...baseOptions, ...mergedOverrides },\n });\n\n let plan = '';\n for await (const message of response) {\n // Emit raw SDK event first\n this.eventHandler?.(this.adapter.createRawSDKEvent(message));\n\n // Then emit transformed event\n const transformed = this.adapter.transform(message);\n if (transformed) {\n if (transformed.type !== 'token') {\n this.logger.debug('Planning event', { type: transformed.type });\n }\n this.eventHandler?.(transformed);\n }\n\n if (message.type === 'assistant' && message.message?.content) {\n for (const c of message.message.content) {\n if (c.type === 'text' && c.text) plan += c.text + '\\n';\n }\n }\n }\n\n return { plan: plan.trim() };\n }\n\n private async runExecution(task: Task, cwd: string, permissionMode: WorkflowExecutionOptions['permissionMode'], options: WorkflowExecutionOptions, stageKey: string): Promise<WorkflowStageExecutionResult> {\n const contextPrompt = await this.promptBuilder.buildExecutionPrompt(task, cwd);\n let prompt = EXECUTION_SYSTEM_PROMPT + '\\n\\n' + contextPrompt;\n\n const stageOverrides = options.stageOverrides?.[stageKey];\n const mergedOverrides = {\n ...(options.queryOverrides || {}),\n ...(stageOverrides?.queryOverrides || {}),\n } as Record<string, any>;\n\n const baseOptions: Record<string, any> = {\n model: 'claude-sonnet-4-5-20250929',\n cwd,\n permissionMode,\n settingSources: ['local'],\n mcpServers: this.mcpServers\n };\n\n const response = query({\n prompt,\n options: { ...baseOptions, ...mergedOverrides },\n });\n const results: any[] = [];\n for await (const message of response) {\n // Emit raw SDK event first\n this.eventHandler?.(this.adapter.createRawSDKEvent(message));\n\n // Then emit transformed event\n const transformed = this.adapter.transform(message);\n if (transformed) {\n if (transformed.type !== 'token') {\n this.logger.debug('Execution event', { type: transformed.type });\n }\n this.eventHandler?.(transformed);\n }\n\n results.push(message);\n }\n return { results };\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { WorkflowDefinition } from './workflow-types.js';
2
- import { PostHogAPIClient } from './posthog-api.js';
3
- export declare class WorkflowRegistry {
4
- private workflowsById;
5
- private apiClient?;
6
- constructor(apiClient?: PostHogAPIClient, staticDefinitions?: WorkflowDefinition[]);
7
- loadWorkflows(): Promise<void>;
8
- getWorkflow(id: string): WorkflowDefinition | undefined;
9
- listWorkflows(): WorkflowDefinition[];
10
- }
11
- //# sourceMappingURL=workflow-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-registry.d.ts","sourceRoot":"","sources":["../../src/workflow-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,SAAS,CAAC,CAAmB;gBAEzB,SAAS,CAAC,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,kBAAkB,EAAE;IAO5E,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIvD,aAAa,IAAI,kBAAkB,EAAE;CAGtC"}
@@ -1,27 +0,0 @@
1
- class WorkflowRegistry {
2
- workflowsById = new Map();
3
- apiClient;
4
- constructor(apiClient, staticDefinitions) {
5
- this.apiClient = apiClient;
6
- if (staticDefinitions) {
7
- for (const w of staticDefinitions)
8
- this.workflowsById.set(w.id, w);
9
- }
10
- }
11
- async loadWorkflows() {
12
- if (this.apiClient) {
13
- const workflows = await this.apiClient.listWorkflows();
14
- for (const w of workflows)
15
- this.workflowsById.set(w.id, w);
16
- }
17
- }
18
- getWorkflow(id) {
19
- return this.workflowsById.get(id);
20
- }
21
- listWorkflows() {
22
- return Array.from(this.workflowsById.values());
23
- }
24
- }
25
-
26
- export { WorkflowRegistry };
27
- //# sourceMappingURL=workflow-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-registry.js","sources":["../../src/workflow-registry.ts"],"sourcesContent":["import type { WorkflowDefinition } from './workflow-types.js';\nimport { PostHogAPIClient } from './posthog-api.js';\n\nexport class WorkflowRegistry {\n private workflowsById: Map<string, WorkflowDefinition> = new Map();\n private apiClient?: PostHogAPIClient;\n\n constructor(apiClient?: PostHogAPIClient, staticDefinitions?: WorkflowDefinition[]) {\n this.apiClient = apiClient;\n if (staticDefinitions) {\n for (const w of staticDefinitions) this.workflowsById.set(w.id, w);\n }\n }\n\n async loadWorkflows(): Promise<void> {\n if (this.apiClient) {\n const workflows = await this.apiClient.listWorkflows();\n for (const w of workflows) this.workflowsById.set(w.id, w);\n }\n }\n\n getWorkflow(id: string): WorkflowDefinition | undefined {\n return this.workflowsById.get(id);\n }\n\n listWorkflows(): WorkflowDefinition[] {\n return Array.from(this.workflowsById.values());\n }\n}\n\n"],"names":[],"mappings":"MAGa,gBAAgB,CAAA;AACnB,IAAA,aAAa,GAAoC,IAAI,GAAG,EAAE;AAC1D,IAAA,SAAS;IAEjB,WAAA,CAAY,SAA4B,EAAE,iBAAwC,EAAA;AAChF,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAC1B,IAAI,iBAAiB,EAAE;YACrB,KAAK,MAAM,CAAC,IAAI,iBAAiB;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE;IACF;AAEA,IAAA,MAAM,aAAa,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;YACtD,KAAK,MAAM,CAAC,IAAI,SAAS;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D;IACF;AAEA,IAAA,WAAW,CAAC,EAAU,EAAA;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;IACnC;IAEA,aAAa,GAAA;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IAChD;AACD;;;;"}
@@ -1,45 +0,0 @@
1
- import type { PermissionMode, AgentEvent } from './types.js';
2
- export type AgentType = 'research' | 'planning' | 'execution' | 'review' | 'testing';
3
- export interface AgentDefinition {
4
- id: string;
5
- name: string;
6
- agent_type: AgentType;
7
- description?: string;
8
- config?: Record<string, any>;
9
- }
10
- export interface WorkflowStage {
11
- id: string;
12
- key: string;
13
- name: string;
14
- position: number;
15
- agent_name?: string | null;
16
- is_manual_only?: boolean;
17
- color?: string;
18
- }
19
- export interface WorkflowDefinition {
20
- id: string;
21
- name: string;
22
- description?: string;
23
- stages: WorkflowStage[];
24
- }
25
- export interface StageOverrideOptions {
26
- permissionMode?: PermissionMode;
27
- createPlanningBranch?: boolean;
28
- createImplementationBranch?: boolean;
29
- openPullRequest?: boolean;
30
- queryOverrides?: Record<string, any>;
31
- }
32
- export interface WorkflowStageExecutionResult {
33
- plan?: string;
34
- results?: any[];
35
- }
36
- export interface WorkflowExecutionOptions {
37
- repositoryPath?: string;
38
- permissionMode?: PermissionMode;
39
- autoProgress?: boolean;
40
- resumeFromCurrentStage?: boolean;
41
- stageOverrides?: Record<string, StageOverrideOptions>;
42
- onEvent?: (event: AgentEvent) => void;
43
- queryOverrides?: Record<string, any>;
44
- }
45
- //# sourceMappingURL=workflow-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-types.d.ts","sourceRoot":"","sources":["../../src/workflow-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACtC"}
@@ -1,65 +0,0 @@
1
- import type { AgentDefinition, AgentType } from './workflow-types.js';
2
-
3
- export class AgentRegistry {
4
- private agentsByName: Map<string, AgentDefinition> = new Map();
5
-
6
- constructor(definitions?: AgentDefinition[]) {
7
- if (definitions) {
8
- for (const def of definitions) this.register(def);
9
- } else {
10
- for (const def of AgentRegistry.getDefaultAgents()) this.register(def);
11
- }
12
- }
13
-
14
- static getDefaultAgents(): AgentDefinition[] {
15
- return [
16
- {
17
- id: 'research',
18
- name: 'research',
19
- agent_type: 'research',
20
- description: 'Explore codebase and generate clarifying questions',
21
- },
22
- {
23
- id: 'planning',
24
- name: 'planning',
25
- agent_type: 'planning',
26
- description: 'Analyze repo and produce implementation plan',
27
- },
28
- {
29
- id: 'code_generation',
30
- name: 'code_generation',
31
- agent_type: 'execution',
32
- description: 'Implements code changes using Claude SDK',
33
- },
34
- {
35
- id: 'review',
36
- name: 'review',
37
- agent_type: 'review',
38
- description: 'Reviews changes and suggests fixes',
39
- },
40
- {
41
- id: 'testing',
42
- name: 'testing',
43
- agent_type: 'testing',
44
- description: 'Runs tests and reports results',
45
- },
46
- ];
47
- }
48
-
49
- register(def: AgentDefinition): void {
50
- this.agentsByName.set(def.name, def);
51
- }
52
-
53
- getAgent(name: string): AgentDefinition | undefined {
54
- return this.agentsByName.get(name);
55
- }
56
-
57
- listAgents(): AgentDefinition[] {
58
- return Array.from(this.agentsByName.values());
59
- }
60
-
61
- exportForPostHog(): { id: string; name: string; agent_type: AgentType; description?: string }[] {
62
- return this.listAgents().map(({ id, name, agent_type, description }) => ({ id, name, agent_type, description }));
63
- }
64
- }
65
-
@@ -1,210 +0,0 @@
1
- import { query } from '@anthropic-ai/claude-agent-sdk';
2
- import { Logger } from './utils/logger.js';
3
- import { ClaudeAdapter } from './adapters/claude/claude-adapter.js';
4
- import { AgentRegistry } from './agent-registry.js';
5
- import type { AgentEvent, Task, McpServerConfig } from './types.js';
6
- import type { WorkflowStage, WorkflowStageExecutionResult, WorkflowExecutionOptions } from './workflow-types.js';
7
- import { RESEARCH_SYSTEM_PROMPT } from './agents/research.js';
8
- import { PLANNING_SYSTEM_PROMPT } from './agents/planning.js';
9
- import { EXECUTION_SYSTEM_PROMPT } from './agents/execution.js';
10
- import { PromptBuilder } from './prompt-builder.js';
11
-
12
- export class StageExecutor {
13
- private registry: AgentRegistry;
14
- private logger: Logger;
15
- private adapter: ClaudeAdapter;
16
- private promptBuilder: PromptBuilder;
17
- private eventHandler?: (event: AgentEvent) => void;
18
- private mcpServers?: Record<string, McpServerConfig>;
19
-
20
- constructor(
21
- registry: AgentRegistry,
22
- logger: Logger,
23
- promptBuilder?: PromptBuilder,
24
- eventHandler?: (event: AgentEvent) => void,
25
- mcpServers?: Record<string, McpServerConfig>,
26
- ) {
27
- this.registry = registry;
28
- this.logger = logger.child('StageExecutor');
29
- this.adapter = new ClaudeAdapter();
30
- this.promptBuilder = promptBuilder || new PromptBuilder({
31
- getTaskFiles: async () => [],
32
- generatePlanTemplate: async () => '',
33
- logger,
34
- });
35
- this.eventHandler = eventHandler;
36
- this.mcpServers = mcpServers;
37
- }
38
-
39
- setEventHandler(handler?: (event: AgentEvent) => void): void {
40
- this.eventHandler = handler;
41
- }
42
-
43
- async execute(task: Task, stage: WorkflowStage, options: WorkflowExecutionOptions): Promise<WorkflowStageExecutionResult> {
44
- const isManual = stage.is_manual_only === true;
45
- if (isManual) {
46
- this.logger.info('Manual stage detected; skipping agent execution', { stage: stage.key });
47
- return { results: [] };
48
- }
49
-
50
- const inferredAgent = stage.key.toLowerCase().includes('plan') ? 'planning_basic' : 'code_generation';
51
- const agentName = stage.agent_name || inferredAgent;
52
- const agent = this.registry.getAgent(agentName);
53
- if (!agent) {
54
- throw new Error(`Unknown agent '${agentName}' for stage '${stage.key}'`);
55
- }
56
-
57
- const permissionMode = (options.permissionMode as any) || 'acceptEdits';
58
- const cwd = options.repositoryPath || process.cwd();
59
-
60
- switch (agent.agent_type) {
61
- case 'research':
62
- return this.runResearch(task, cwd, options, stage.key);
63
- case 'planning':
64
- return this.runPlanning(task, cwd, options, stage.key);
65
- case 'execution':
66
- return this.runExecution(task, cwd, permissionMode, options, stage.key);
67
- case 'review': // TODO: Implement review
68
- case 'testing': // TODO: Implement testing
69
- default:
70
- // throw new Error(`Unsupported agent type: ${agent.agent_type}`);
71
- console.warn(`Unsupported agent type: ${agent.agent_type}`);
72
- return { results: [] };
73
- }
74
- }
75
-
76
- private async runResearch(task: Task, cwd: string, options: WorkflowExecutionOptions, stageKey: string): Promise<WorkflowStageExecutionResult> {
77
- const contextPrompt = await this.promptBuilder.buildResearchPrompt(task, cwd);
78
- let prompt = RESEARCH_SYSTEM_PROMPT + '\n\n' + contextPrompt;
79
-
80
- const stageOverrides = options.stageOverrides?.[stageKey] || options.stageOverrides?.['research'];
81
- const mergedOverrides = {
82
- ...(options.queryOverrides || {}),
83
- ...(stageOverrides?.queryOverrides || {}),
84
- } as Record<string, any>;
85
-
86
- const baseOptions: Record<string, any> = {
87
- model: 'claude-sonnet-4-5-20250929',
88
- cwd,
89
- permissionMode: 'plan',
90
- settingSources: ['local'],
91
- mcpServers: this.mcpServers
92
- };
93
-
94
- const response = query({
95
- prompt,
96
- options: { ...baseOptions, ...mergedOverrides },
97
- });
98
-
99
- let research = '';
100
- for await (const message of response) {
101
- // Emit raw SDK event first
102
- this.eventHandler?.(this.adapter.createRawSDKEvent(message));
103
-
104
- // Then emit transformed event
105
- const transformed = this.adapter.transform(message);
106
- if (transformed) {
107
- if (transformed.type !== 'token') {
108
- this.logger.debug('Research event', { type: transformed.type });
109
- }
110
- this.eventHandler?.(transformed);
111
- }
112
-
113
- if (message.type === 'assistant' && message.message?.content) {
114
- for (const c of message.message.content) {
115
- if (c.type === 'text' && c.text) research += c.text + '\n';
116
- }
117
- }
118
- }
119
-
120
- return { plan: research.trim() }; // Return as 'plan' field to match existing interface
121
- }
122
-
123
- private async runPlanning(task: Task, cwd: string, options: WorkflowExecutionOptions, stageKey: string): Promise<WorkflowStageExecutionResult> {
124
- const contextPrompt = await this.promptBuilder.buildPlanningPrompt(task, cwd);
125
- let prompt = PLANNING_SYSTEM_PROMPT + '\n\n' + contextPrompt;
126
-
127
- const stageOverrides = options.stageOverrides?.[stageKey] || options.stageOverrides?.['plan'];
128
- const mergedOverrides = {
129
- ...(options.queryOverrides || {}),
130
- ...(stageOverrides?.queryOverrides || {}),
131
- } as Record<string, any>;
132
-
133
- const baseOptions: Record<string, any> = {
134
- model: 'claude-sonnet-4-5-20250929',
135
- cwd,
136
- permissionMode: 'plan',
137
- settingSources: ['local'],
138
- mcpServers: this.mcpServers
139
- };
140
-
141
- const response = query({
142
- prompt,
143
- options: { ...baseOptions, ...mergedOverrides },
144
- });
145
-
146
- let plan = '';
147
- for await (const message of response) {
148
- // Emit raw SDK event first
149
- this.eventHandler?.(this.adapter.createRawSDKEvent(message));
150
-
151
- // Then emit transformed event
152
- const transformed = this.adapter.transform(message);
153
- if (transformed) {
154
- if (transformed.type !== 'token') {
155
- this.logger.debug('Planning event', { type: transformed.type });
156
- }
157
- this.eventHandler?.(transformed);
158
- }
159
-
160
- if (message.type === 'assistant' && message.message?.content) {
161
- for (const c of message.message.content) {
162
- if (c.type === 'text' && c.text) plan += c.text + '\n';
163
- }
164
- }
165
- }
166
-
167
- return { plan: plan.trim() };
168
- }
169
-
170
- private async runExecution(task: Task, cwd: string, permissionMode: WorkflowExecutionOptions['permissionMode'], options: WorkflowExecutionOptions, stageKey: string): Promise<WorkflowStageExecutionResult> {
171
- const contextPrompt = await this.promptBuilder.buildExecutionPrompt(task, cwd);
172
- let prompt = EXECUTION_SYSTEM_PROMPT + '\n\n' + contextPrompt;
173
-
174
- const stageOverrides = options.stageOverrides?.[stageKey];
175
- const mergedOverrides = {
176
- ...(options.queryOverrides || {}),
177
- ...(stageOverrides?.queryOverrides || {}),
178
- } as Record<string, any>;
179
-
180
- const baseOptions: Record<string, any> = {
181
- model: 'claude-sonnet-4-5-20250929',
182
- cwd,
183
- permissionMode,
184
- settingSources: ['local'],
185
- mcpServers: this.mcpServers
186
- };
187
-
188
- const response = query({
189
- prompt,
190
- options: { ...baseOptions, ...mergedOverrides },
191
- });
192
- const results: any[] = [];
193
- for await (const message of response) {
194
- // Emit raw SDK event first
195
- this.eventHandler?.(this.adapter.createRawSDKEvent(message));
196
-
197
- // Then emit transformed event
198
- const transformed = this.adapter.transform(message);
199
- if (transformed) {
200
- if (transformed.type !== 'token') {
201
- this.logger.debug('Execution event', { type: transformed.type });
202
- }
203
- this.eventHandler?.(transformed);
204
- }
205
-
206
- results.push(message);
207
- }
208
- return { results };
209
- }
210
- }
@@ -1,30 +0,0 @@
1
- import type { WorkflowDefinition } from './workflow-types.js';
2
- import { PostHogAPIClient } from './posthog-api.js';
3
-
4
- export class WorkflowRegistry {
5
- private workflowsById: Map<string, WorkflowDefinition> = new Map();
6
- private apiClient?: PostHogAPIClient;
7
-
8
- constructor(apiClient?: PostHogAPIClient, staticDefinitions?: WorkflowDefinition[]) {
9
- this.apiClient = apiClient;
10
- if (staticDefinitions) {
11
- for (const w of staticDefinitions) this.workflowsById.set(w.id, w);
12
- }
13
- }
14
-
15
- async loadWorkflows(): Promise<void> {
16
- if (this.apiClient) {
17
- const workflows = await this.apiClient.listWorkflows();
18
- for (const w of workflows) this.workflowsById.set(w.id, w);
19
- }
20
- }
21
-
22
- getWorkflow(id: string): WorkflowDefinition | undefined {
23
- return this.workflowsById.get(id);
24
- }
25
-
26
- listWorkflows(): WorkflowDefinition[] {
27
- return Array.from(this.workflowsById.values());
28
- }
29
- }
30
-
@@ -1,52 +0,0 @@
1
- import type { PermissionMode, AgentEvent } from './types.js';
2
-
3
- export type AgentType = 'research' | 'planning' | 'execution' | 'review' | 'testing';
4
-
5
- export interface AgentDefinition {
6
- id: string;
7
- name: string;
8
- agent_type: AgentType;
9
- description?: string;
10
- config?: Record<string, any>;
11
- }
12
-
13
- export interface WorkflowStage {
14
- id: string;
15
- key: string;
16
- name: string;
17
- position: number;
18
- agent_name?: string | null;
19
- is_manual_only?: boolean;
20
- color?: string;
21
- }
22
-
23
- export interface WorkflowDefinition {
24
- id: string;
25
- name: string;
26
- description?: string;
27
- stages: WorkflowStage[];
28
- }
29
-
30
- export interface StageOverrideOptions {
31
- permissionMode?: PermissionMode;
32
- createPlanningBranch?: boolean;
33
- createImplementationBranch?: boolean;
34
- openPullRequest?: boolean;
35
- queryOverrides?: Record<string, any>;
36
- }
37
-
38
- export interface WorkflowStageExecutionResult {
39
- plan?: string;
40
- results?: any[];
41
- }
42
-
43
- export interface WorkflowExecutionOptions {
44
- repositoryPath?: string;
45
- permissionMode?: PermissionMode;
46
- autoProgress?: boolean;
47
- resumeFromCurrentStage?: boolean;
48
- stageOverrides?: Record<string, StageOverrideOptions>;
49
- onEvent?: (event: AgentEvent) => void;
50
- queryOverrides?: Record<string, any>;
51
- }
52
-