@posthog/agent 1.26.0 → 1.28.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 (572) hide show
  1. package/dist/index.d.ts +1274 -20
  2. package/dist/index.js +7327 -11
  3. package/dist/index.js.map +1 -1
  4. package/package.json +6 -12
  5. package/src/agent.ts +42 -5
  6. package/src/types.ts +1 -1
  7. package/src/worktree-manager.ts +45 -0
  8. package/dist/_virtual/_commonjsHelpers.js +0 -6
  9. package/dist/_virtual/_commonjsHelpers.js.map +0 -1
  10. package/dist/_virtual/_tslib.js +0 -74
  11. package/dist/_virtual/_tslib.js.map +0 -1
  12. package/dist/_virtual/additionalItems.js +0 -4
  13. package/dist/_virtual/additionalItems.js.map +0 -1
  14. package/dist/_virtual/additionalProperties.js +0 -4
  15. package/dist/_virtual/additionalProperties.js.map +0 -1
  16. package/dist/_virtual/ajv.js +0 -4
  17. package/dist/_virtual/ajv.js.map +0 -1
  18. package/dist/_virtual/allOf.js +0 -4
  19. package/dist/_virtual/allOf.js.map +0 -1
  20. package/dist/_virtual/anyOf.js +0 -4
  21. package/dist/_virtual/anyOf.js.map +0 -1
  22. package/dist/_virtual/applicability.js +0 -4
  23. package/dist/_virtual/applicability.js.map +0 -1
  24. package/dist/_virtual/boolSchema.js +0 -4
  25. package/dist/_virtual/boolSchema.js.map +0 -1
  26. package/dist/_virtual/code.js +0 -4
  27. package/dist/_virtual/code.js.map +0 -1
  28. package/dist/_virtual/code2.js +0 -4
  29. package/dist/_virtual/code2.js.map +0 -1
  30. package/dist/_virtual/const.js +0 -4
  31. package/dist/_virtual/const.js.map +0 -1
  32. package/dist/_virtual/contains.js +0 -4
  33. package/dist/_virtual/contains.js.map +0 -1
  34. package/dist/_virtual/core.js +0 -4
  35. package/dist/_virtual/core.js.map +0 -1
  36. package/dist/_virtual/dataType.js +0 -4
  37. package/dist/_virtual/dataType.js.map +0 -1
  38. package/dist/_virtual/defaults.js +0 -4
  39. package/dist/_virtual/defaults.js.map +0 -1
  40. package/dist/_virtual/dependencies.js +0 -4
  41. package/dist/_virtual/dependencies.js.map +0 -1
  42. package/dist/_virtual/draft7.js +0 -4
  43. package/dist/_virtual/draft7.js.map +0 -1
  44. package/dist/_virtual/enum.js +0 -4
  45. package/dist/_virtual/enum.js.map +0 -1
  46. package/dist/_virtual/equal.js +0 -4
  47. package/dist/_virtual/equal.js.map +0 -1
  48. package/dist/_virtual/errors.js +0 -4
  49. package/dist/_virtual/errors.js.map +0 -1
  50. package/dist/_virtual/format.js +0 -4
  51. package/dist/_virtual/format.js.map +0 -1
  52. package/dist/_virtual/formats.js +0 -4
  53. package/dist/_virtual/formats.js.map +0 -1
  54. package/dist/_virtual/id.js +0 -4
  55. package/dist/_virtual/id.js.map +0 -1
  56. package/dist/_virtual/if.js +0 -4
  57. package/dist/_virtual/if.js.map +0 -1
  58. package/dist/_virtual/index.js +0 -4
  59. package/dist/_virtual/index.js.map +0 -1
  60. package/dist/_virtual/index10.js +0 -4
  61. package/dist/_virtual/index10.js.map +0 -1
  62. package/dist/_virtual/index11.js +0 -4
  63. package/dist/_virtual/index11.js.map +0 -1
  64. package/dist/_virtual/index2.js +0 -4
  65. package/dist/_virtual/index2.js.map +0 -1
  66. package/dist/_virtual/index3.js +0 -4
  67. package/dist/_virtual/index3.js.map +0 -1
  68. package/dist/_virtual/index4.js +0 -4
  69. package/dist/_virtual/index4.js.map +0 -1
  70. package/dist/_virtual/index5.js +0 -4
  71. package/dist/_virtual/index5.js.map +0 -1
  72. package/dist/_virtual/index6.js +0 -4
  73. package/dist/_virtual/index6.js.map +0 -1
  74. package/dist/_virtual/index7.js +0 -4
  75. package/dist/_virtual/index7.js.map +0 -1
  76. package/dist/_virtual/index8.js +0 -4
  77. package/dist/_virtual/index8.js.map +0 -1
  78. package/dist/_virtual/index9.js +0 -4
  79. package/dist/_virtual/index9.js.map +0 -1
  80. package/dist/_virtual/items.js +0 -4
  81. package/dist/_virtual/items.js.map +0 -1
  82. package/dist/_virtual/items2020.js +0 -4
  83. package/dist/_virtual/items2020.js.map +0 -1
  84. package/dist/_virtual/keyword.js +0 -4
  85. package/dist/_virtual/keyword.js.map +0 -1
  86. package/dist/_virtual/limit.js +0 -4
  87. package/dist/_virtual/limit.js.map +0 -1
  88. package/dist/_virtual/limitItems.js +0 -4
  89. package/dist/_virtual/limitItems.js.map +0 -1
  90. package/dist/_virtual/limitLength.js +0 -4
  91. package/dist/_virtual/limitLength.js.map +0 -1
  92. package/dist/_virtual/limitNumber.js +0 -4
  93. package/dist/_virtual/limitNumber.js.map +0 -1
  94. package/dist/_virtual/limitProperties.js +0 -4
  95. package/dist/_virtual/limitProperties.js.map +0 -1
  96. package/dist/_virtual/metadata.js +0 -4
  97. package/dist/_virtual/metadata.js.map +0 -1
  98. package/dist/_virtual/multipleOf.js +0 -4
  99. package/dist/_virtual/multipleOf.js.map +0 -1
  100. package/dist/_virtual/names.js +0 -4
  101. package/dist/_virtual/names.js.map +0 -1
  102. package/dist/_virtual/not.js +0 -4
  103. package/dist/_virtual/not.js.map +0 -1
  104. package/dist/_virtual/oneOf.js +0 -4
  105. package/dist/_virtual/oneOf.js.map +0 -1
  106. package/dist/_virtual/pattern.js +0 -4
  107. package/dist/_virtual/pattern.js.map +0 -1
  108. package/dist/_virtual/patternProperties.js +0 -4
  109. package/dist/_virtual/patternProperties.js.map +0 -1
  110. package/dist/_virtual/prefixItems.js +0 -4
  111. package/dist/_virtual/prefixItems.js.map +0 -1
  112. package/dist/_virtual/properties.js +0 -4
  113. package/dist/_virtual/properties.js.map +0 -1
  114. package/dist/_virtual/propertyNames.js +0 -4
  115. package/dist/_virtual/propertyNames.js.map +0 -1
  116. package/dist/_virtual/ref.js +0 -4
  117. package/dist/_virtual/ref.js.map +0 -1
  118. package/dist/_virtual/ref_error.js +0 -4
  119. package/dist/_virtual/ref_error.js.map +0 -1
  120. package/dist/_virtual/required.js +0 -4
  121. package/dist/_virtual/required.js.map +0 -1
  122. package/dist/_virtual/resolve.js +0 -4
  123. package/dist/_virtual/resolve.js.map +0 -1
  124. package/dist/_virtual/rules.js +0 -4
  125. package/dist/_virtual/rules.js.map +0 -1
  126. package/dist/_virtual/scope.js +0 -4
  127. package/dist/_virtual/scope.js.map +0 -1
  128. package/dist/_virtual/subschema.js +0 -4
  129. package/dist/_virtual/subschema.js.map +0 -1
  130. package/dist/_virtual/thenElse.js +0 -4
  131. package/dist/_virtual/thenElse.js.map +0 -1
  132. package/dist/_virtual/types.js +0 -4
  133. package/dist/_virtual/types.js.map +0 -1
  134. package/dist/_virtual/ucs2length.js +0 -4
  135. package/dist/_virtual/ucs2length.js.map +0 -1
  136. package/dist/_virtual/uniqueItems.js +0 -4
  137. package/dist/_virtual/uniqueItems.js.map +0 -1
  138. package/dist/_virtual/uri.js +0 -4
  139. package/dist/_virtual/uri.js.map +0 -1
  140. package/dist/_virtual/util.js +0 -4
  141. package/dist/_virtual/util.js.map +0 -1
  142. package/dist/_virtual/validation_error.js +0 -4
  143. package/dist/_virtual/validation_error.js.map +0 -1
  144. package/dist/example-client.d.ts +0 -3
  145. package/dist/example-client.d.ts.map +0 -1
  146. package/dist/example.d.ts +0 -3
  147. package/dist/example.d.ts.map +0 -1
  148. package/dist/index.d.ts.map +0 -1
  149. package/dist/node_modules/@agentclientprotocol/sdk/dist/acp.js +0 -891
  150. package/dist/node_modules/@agentclientprotocol/sdk/dist/acp.js.map +0 -1
  151. package/dist/node_modules/@agentclientprotocol/sdk/dist/schema.js +0 -876
  152. package/dist/node_modules/@agentclientprotocol/sdk/dist/schema.js.map +0 -1
  153. package/dist/node_modules/@agentclientprotocol/sdk/dist/stream.js +0 -66
  154. package/dist/node_modules/@agentclientprotocol/sdk/dist/stream.js.map +0 -1
  155. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +0 -23
  156. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js.map +0 -1
  157. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +0 -331
  158. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +0 -1
  159. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +0 -717
  160. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +0 -1
  161. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +0 -221
  162. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +0 -1
  163. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +0 -56
  164. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +0 -1
  165. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +0 -440
  166. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +0 -1
  167. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js +0 -94
  168. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js.map +0 -1
  169. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +0 -1610
  170. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +0 -1
  171. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +0 -91
  172. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +0 -1
  173. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/ZodError.js +0 -133
  174. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/ZodError.js.map +0 -1
  175. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/errors.js +0 -9
  176. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/errors.js.map +0 -1
  177. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/errorUtil.js +0 -9
  178. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/errorUtil.js.map +0 -1
  179. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/parseUtil.js +0 -112
  180. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/parseUtil.js.map +0 -1
  181. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/util.js +0 -136
  182. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/util.js.map +0 -1
  183. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/locales/en.js +0 -112
  184. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/locales/en.js.map +0 -1
  185. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/types.js +0 -3297
  186. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/types.js.map +0 -1
  187. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/errors.js +0 -44
  188. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/errors.js.map +0 -1
  189. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/iso.js +0 -36
  190. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/iso.js.map +0 -1
  191. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/parse.js +0 -10
  192. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/parse.js.map +0 -1
  193. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/schemas.js +0 -657
  194. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/schemas.js.map +0 -1
  195. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/api.js +0 -449
  196. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/api.js.map +0 -1
  197. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/checks.js +0 -413
  198. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/checks.js.map +0 -1
  199. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/core.js +0 -57
  200. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/core.js.map +0 -1
  201. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/doc.js +0 -38
  202. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/doc.js.map +0 -1
  203. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/errors.js +0 -86
  204. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/errors.js.map +0 -1
  205. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/parse.js +0 -61
  206. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/parse.js.map +0 -1
  207. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/regexes.js +0 -80
  208. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/regexes.js.map +0 -1
  209. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/registries.js +0 -52
  210. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/registries.js.map +0 -1
  211. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/schemas.js +0 -1307
  212. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/schemas.js.map +0 -1
  213. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/to-json-schema.js +0 -842
  214. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/to-json-schema.js.map +0 -1
  215. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/util.js +0 -335
  216. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/util.js.map +0 -1
  217. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/versions.js +0 -8
  218. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/versions.js.map +0 -1
  219. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/mini/schemas.js +0 -51
  220. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/mini/schemas.js.map +0 -1
  221. package/dist/node_modules/ajv/dist/ajv.js +0 -69
  222. package/dist/node_modules/ajv/dist/ajv.js.map +0 -1
  223. package/dist/node_modules/ajv/dist/compile/codegen/code.js +0 -169
  224. package/dist/node_modules/ajv/dist/compile/codegen/code.js.map +0 -1
  225. package/dist/node_modules/ajv/dist/compile/codegen/index.js +0 -712
  226. package/dist/node_modules/ajv/dist/compile/codegen/index.js.map +0 -1
  227. package/dist/node_modules/ajv/dist/compile/codegen/scope.js +0 -157
  228. package/dist/node_modules/ajv/dist/compile/codegen/scope.js.map +0 -1
  229. package/dist/node_modules/ajv/dist/compile/errors.js +0 -140
  230. package/dist/node_modules/ajv/dist/compile/errors.js.map +0 -1
  231. package/dist/node_modules/ajv/dist/compile/index.js +0 -253
  232. package/dist/node_modules/ajv/dist/compile/index.js.map +0 -1
  233. package/dist/node_modules/ajv/dist/compile/names.js +0 -40
  234. package/dist/node_modules/ajv/dist/compile/names.js.map +0 -1
  235. package/dist/node_modules/ajv/dist/compile/ref_error.js +0 -25
  236. package/dist/node_modules/ajv/dist/compile/ref_error.js.map +0 -1
  237. package/dist/node_modules/ajv/dist/compile/resolve.js +0 -162
  238. package/dist/node_modules/ajv/dist/compile/resolve.js.map +0 -1
  239. package/dist/node_modules/ajv/dist/compile/rules.js +0 -29
  240. package/dist/node_modules/ajv/dist/compile/rules.js.map +0 -1
  241. package/dist/node_modules/ajv/dist/compile/util.js +0 -183
  242. package/dist/node_modules/ajv/dist/compile/util.js.map +0 -1
  243. package/dist/node_modules/ajv/dist/compile/validate/applicability.js +0 -30
  244. package/dist/node_modules/ajv/dist/compile/validate/applicability.js.map +0 -1
  245. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js +0 -64
  246. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js.map +0 -1
  247. package/dist/node_modules/ajv/dist/compile/validate/dataType.js +0 -213
  248. package/dist/node_modules/ajv/dist/compile/validate/dataType.js.map +0 -1
  249. package/dist/node_modules/ajv/dist/compile/validate/defaults.js +0 -49
  250. package/dist/node_modules/ajv/dist/compile/validate/defaults.js.map +0 -1
  251. package/dist/node_modules/ajv/dist/compile/validate/index.js +0 -544
  252. package/dist/node_modules/ajv/dist/compile/validate/index.js.map +0 -1
  253. package/dist/node_modules/ajv/dist/compile/validate/keyword.js +0 -139
  254. package/dist/node_modules/ajv/dist/compile/validate/keyword.js.map +0 -1
  255. package/dist/node_modules/ajv/dist/compile/validate/subschema.js +0 -95
  256. package/dist/node_modules/ajv/dist/compile/validate/subschema.js.map +0 -1
  257. package/dist/node_modules/ajv/dist/core.js +0 -639
  258. package/dist/node_modules/ajv/dist/core.js.map +0 -1
  259. package/dist/node_modules/ajv/dist/refs/data.json.js +0 -31
  260. package/dist/node_modules/ajv/dist/refs/data.json.js.map +0 -1
  261. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +0 -254
  262. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +0 -1
  263. package/dist/node_modules/ajv/dist/runtime/equal.js +0 -9
  264. package/dist/node_modules/ajv/dist/runtime/equal.js.map +0 -1
  265. package/dist/node_modules/ajv/dist/runtime/ucs2length.js +0 -25
  266. package/dist/node_modules/ajv/dist/runtime/ucs2length.js.map +0 -1
  267. package/dist/node_modules/ajv/dist/runtime/uri.js +0 -8
  268. package/dist/node_modules/ajv/dist/runtime/uri.js.map +0 -1
  269. package/dist/node_modules/ajv/dist/runtime/validation_error.js +0 -22
  270. package/dist/node_modules/ajv/dist/runtime/validation_error.js.map +0 -1
  271. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +0 -53
  272. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +0 -1
  273. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +0 -112
  274. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +0 -1
  275. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js +0 -26
  276. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +0 -1
  277. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +0 -14
  278. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +0 -1
  279. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js +0 -99
  280. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +0 -1
  281. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +0 -93
  282. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +0 -1
  283. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js +0 -70
  284. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js.map +0 -1
  285. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +0 -77
  286. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js.map +0 -1
  287. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js +0 -57
  288. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js.map +0 -1
  289. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js +0 -37
  290. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +0 -1
  291. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js +0 -29
  292. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js.map +0 -1
  293. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +0 -64
  294. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +0 -1
  295. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +0 -80
  296. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +0 -1
  297. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +0 -15
  298. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +0 -1
  299. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js +0 -61
  300. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +0 -1
  301. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +0 -42
  302. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +0 -1
  303. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +0 -16
  304. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +0 -1
  305. package/dist/node_modules/ajv/dist/vocabularies/code.js +0 -146
  306. package/dist/node_modules/ajv/dist/vocabularies/code.js.map +0 -1
  307. package/dist/node_modules/ajv/dist/vocabularies/core/id.js +0 -11
  308. package/dist/node_modules/ajv/dist/vocabularies/core/id.js.map +0 -1
  309. package/dist/node_modules/ajv/dist/vocabularies/core/index.js +0 -21
  310. package/dist/node_modules/ajv/dist/vocabularies/core/index.js.map +0 -1
  311. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js +0 -131
  312. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js.map +0 -1
  313. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js +0 -113
  314. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +0 -1
  315. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js +0 -12
  316. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +0 -1
  317. package/dist/node_modules/ajv/dist/vocabularies/draft7.js +0 -28
  318. package/dist/node_modules/ajv/dist/vocabularies/draft7.js.map +0 -1
  319. package/dist/node_modules/ajv/dist/vocabularies/format/format.js +0 -94
  320. package/dist/node_modules/ajv/dist/vocabularies/format/format.js.map +0 -1
  321. package/dist/node_modules/ajv/dist/vocabularies/format/index.js +0 -9
  322. package/dist/node_modules/ajv/dist/vocabularies/format/index.js.map +0 -1
  323. package/dist/node_modules/ajv/dist/vocabularies/metadata.js +0 -21
  324. package/dist/node_modules/ajv/dist/vocabularies/metadata.js.map +0 -1
  325. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js +0 -31
  326. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js.map +0 -1
  327. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js +0 -54
  328. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js.map +0 -1
  329. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +0 -54
  330. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js.map +0 -1
  331. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js +0 -26
  332. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +0 -1
  333. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js +0 -33
  334. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +0 -1
  335. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +0 -29
  336. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +0 -1
  337. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +0 -26
  338. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +0 -1
  339. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +0 -28
  340. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +0 -1
  341. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js +0 -27
  342. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +0 -1
  343. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js +0 -84
  344. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js.map +0 -1
  345. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +0 -72
  346. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +0 -1
  347. package/dist/node_modules/ajv-formats/dist/formats.js +0 -212
  348. package/dist/node_modules/ajv-formats/dist/formats.js.map +0 -1
  349. package/dist/node_modules/ajv-formats/dist/index.js +0 -52
  350. package/dist/node_modules/ajv-formats/dist/index.js.map +0 -1
  351. package/dist/node_modules/ajv-formats/dist/limit.js +0 -75
  352. package/dist/node_modules/ajv-formats/dist/limit.js.map +0 -1
  353. package/dist/node_modules/diff/libesm/diff/base.js +0 -256
  354. package/dist/node_modules/diff/libesm/diff/base.js.map +0 -1
  355. package/dist/node_modules/diff/libesm/diff/line.js +0 -64
  356. package/dist/node_modules/diff/libesm/diff/line.js.map +0 -1
  357. package/dist/node_modules/diff/libesm/patch/create.js +0 -185
  358. package/dist/node_modules/diff/libesm/patch/create.js.map +0 -1
  359. package/dist/node_modules/fast-deep-equal/index.js +0 -47
  360. package/dist/node_modules/fast-deep-equal/index.js.map +0 -1
  361. package/dist/node_modules/fast-uri/index.js +0 -347
  362. package/dist/node_modules/fast-uri/index.js.map +0 -1
  363. package/dist/node_modules/fast-uri/lib/schemes.js +0 -255
  364. package/dist/node_modules/fast-uri/lib/schemes.js.map +0 -1
  365. package/dist/node_modules/fast-uri/lib/utils.js +0 -334
  366. package/dist/node_modules/fast-uri/lib/utils.js.map +0 -1
  367. package/dist/node_modules/json-schema-traverse/index.js +0 -98
  368. package/dist/node_modules/json-schema-traverse/index.js.map +0 -1
  369. package/dist/node_modules/uuid/dist/rng.js +0 -14
  370. package/dist/node_modules/uuid/dist/rng.js.map +0 -1
  371. package/dist/node_modules/uuid/dist/stringify.js +0 -29
  372. package/dist/node_modules/uuid/dist/stringify.js.map +0 -1
  373. package/dist/node_modules/uuid/dist/v7.js +0 -65
  374. package/dist/node_modules/uuid/dist/v7.js.map +0 -1
  375. package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js +0 -37
  376. package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js.map +0 -1
  377. package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js +0 -26
  378. package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +0 -1
  379. package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +0 -17
  380. package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +0 -1
  381. package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +0 -11
  382. package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +0 -1
  383. package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js +0 -66
  384. package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +0 -1
  385. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +0 -21
  386. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +0 -1
  387. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +0 -30
  388. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +0 -1
  389. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +0 -53
  390. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +0 -1
  391. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +0 -8
  392. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +0 -1
  393. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +0 -8
  394. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +0 -1
  395. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +0 -8
  396. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +0 -1
  397. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +0 -50
  398. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +0 -1
  399. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +0 -11
  400. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +0 -1
  401. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +0 -11
  402. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +0 -1
  403. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +0 -9
  404. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +0 -1
  405. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +0 -56
  406. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +0 -1
  407. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +0 -24
  408. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +0 -1
  409. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +0 -30
  410. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +0 -1
  411. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +0 -19
  412. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +0 -1
  413. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +0 -15
  414. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +0 -1
  415. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +0 -13
  416. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +0 -1
  417. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +0 -37
  418. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +0 -1
  419. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +0 -56
  420. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +0 -1
  421. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +0 -76
  422. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +0 -1
  423. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +0 -25
  424. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +0 -1
  425. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +0 -24
  426. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +0 -1
  427. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +0 -8
  428. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +0 -1
  429. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +0 -8
  430. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +0 -1
  431. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +0 -65
  432. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +0 -1
  433. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +0 -24
  434. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +0 -1
  435. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +0 -350
  436. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +0 -1
  437. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +0 -36
  438. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +0 -1
  439. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +0 -10
  440. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +0 -1
  441. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +0 -84
  442. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +0 -1
  443. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +0 -8
  444. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +0 -1
  445. package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js +0 -109
  446. package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +0 -1
  447. package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +0 -90
  448. package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +0 -1
  449. package/dist/node_modules/zod-to-json-schema/node_modules/zod/v3/types.js +0 -42
  450. package/dist/node_modules/zod-to-json-schema/node_modules/zod/v3/types.js.map +0 -1
  451. package/dist/package.json.js +0 -8
  452. package/dist/package.json.js.map +0 -1
  453. package/dist/src/acp-extensions.d.ts +0 -91
  454. package/dist/src/acp-extensions.d.ts.map +0 -1
  455. package/dist/src/acp-extensions.js +0 -38
  456. package/dist/src/acp-extensions.js.map +0 -1
  457. package/dist/src/adapters/claude/claude.d.ts +0 -136
  458. package/dist/src/adapters/claude/claude.d.ts.map +0 -1
  459. package/dist/src/adapters/claude/claude.js +0 -1128
  460. package/dist/src/adapters/claude/claude.js.map +0 -1
  461. package/dist/src/adapters/claude/mcp-server.d.ts +0 -30
  462. package/dist/src/adapters/claude/mcp-server.d.ts.map +0 -1
  463. package/dist/src/adapters/claude/mcp-server.js +0 -668
  464. package/dist/src/adapters/claude/mcp-server.js.map +0 -1
  465. package/dist/src/adapters/claude/tools.d.ts +0 -35
  466. package/dist/src/adapters/claude/tools.d.ts.map +0 -1
  467. package/dist/src/adapters/claude/tools.js +0 -473
  468. package/dist/src/adapters/claude/tools.js.map +0 -1
  469. package/dist/src/adapters/claude/utils.d.ts +0 -48
  470. package/dist/src/adapters/claude/utils.d.ts.map +0 -1
  471. package/dist/src/adapters/claude/utils.js +0 -158
  472. package/dist/src/adapters/claude/utils.js.map +0 -1
  473. package/dist/src/agent.d.ts +0 -58
  474. package/dist/src/agent.d.ts.map +0 -1
  475. package/dist/src/agent.js +0 -576
  476. package/dist/src/agent.js.map +0 -1
  477. package/dist/src/agents/execution.d.ts +0 -2
  478. package/dist/src/agents/execution.d.ts.map +0 -1
  479. package/dist/src/agents/execution.js +0 -40
  480. package/dist/src/agents/execution.js.map +0 -1
  481. package/dist/src/agents/planning.d.ts +0 -2
  482. package/dist/src/agents/planning.d.ts.map +0 -1
  483. package/dist/src/agents/planning.js +0 -63
  484. package/dist/src/agents/planning.js.map +0 -1
  485. package/dist/src/agents/research.d.ts +0 -2
  486. package/dist/src/agents/research.d.ts.map +0 -1
  487. package/dist/src/agents/research.js +0 -163
  488. package/dist/src/agents/research.js.map +0 -1
  489. package/dist/src/file-manager.d.ts +0 -43
  490. package/dist/src/file-manager.d.ts.map +0 -1
  491. package/dist/src/file-manager.js +0 -266
  492. package/dist/src/file-manager.js.map +0 -1
  493. package/dist/src/git-manager.d.ts +0 -79
  494. package/dist/src/git-manager.d.ts.map +0 -1
  495. package/dist/src/git-manager.js +0 -454
  496. package/dist/src/git-manager.js.map +0 -1
  497. package/dist/src/posthog-api.d.ts +0 -48
  498. package/dist/src/posthog-api.d.ts.map +0 -1
  499. package/dist/src/posthog-api.js +0 -260
  500. package/dist/src/posthog-api.js.map +0 -1
  501. package/dist/src/prompt-builder.d.ts +0 -49
  502. package/dist/src/prompt-builder.d.ts.map +0 -1
  503. package/dist/src/prompt-builder.js +0 -397
  504. package/dist/src/prompt-builder.js.map +0 -1
  505. package/dist/src/schemas.d.ts +0 -980
  506. package/dist/src/schemas.d.ts.map +0 -1
  507. package/dist/src/schemas.js +0 -196
  508. package/dist/src/schemas.js.map +0 -1
  509. package/dist/src/session-store.d.ts +0 -58
  510. package/dist/src/session-store.d.ts.map +0 -1
  511. package/dist/src/session-store.js +0 -206
  512. package/dist/src/session-store.js.map +0 -1
  513. package/dist/src/task-manager.d.ts +0 -25
  514. package/dist/src/task-manager.d.ts.map +0 -1
  515. package/dist/src/task-manager.js +0 -123
  516. package/dist/src/task-manager.js.map +0 -1
  517. package/dist/src/template-manager.d.ts +0 -30
  518. package/dist/src/template-manager.d.ts.map +0 -1
  519. package/dist/src/template-manager.js +0 -152
  520. package/dist/src/template-manager.js.map +0 -1
  521. package/dist/src/todo-manager.d.ts +0 -29
  522. package/dist/src/todo-manager.d.ts.map +0 -1
  523. package/dist/src/todo-manager.js +0 -135
  524. package/dist/src/todo-manager.js.map +0 -1
  525. package/dist/src/tools/registry.d.ts +0 -25
  526. package/dist/src/tools/registry.d.ts.map +0 -1
  527. package/dist/src/tools/registry.js +0 -120
  528. package/dist/src/tools/registry.js.map +0 -1
  529. package/dist/src/tools/types.d.ts +0 -80
  530. package/dist/src/tools/types.d.ts.map +0 -1
  531. package/dist/src/types.d.ts +0 -193
  532. package/dist/src/types.d.ts.map +0 -1
  533. package/dist/src/types.js +0 -11
  534. package/dist/src/types.js.map +0 -1
  535. package/dist/src/utils/logger.d.ts +0 -37
  536. package/dist/src/utils/logger.d.ts.map +0 -1
  537. package/dist/src/utils/logger.js +0 -83
  538. package/dist/src/utils/logger.js.map +0 -1
  539. package/dist/src/utils/tapped-stream.d.ts +0 -17
  540. package/dist/src/utils/tapped-stream.d.ts.map +0 -1
  541. package/dist/src/utils/tapped-stream.js +0 -45
  542. package/dist/src/utils/tapped-stream.js.map +0 -1
  543. package/dist/src/workflow/config.d.ts +0 -3
  544. package/dist/src/workflow/config.d.ts.map +0 -1
  545. package/dist/src/workflow/config.js +0 -54
  546. package/dist/src/workflow/config.js.map +0 -1
  547. package/dist/src/workflow/steps/build.d.ts +0 -3
  548. package/dist/src/workflow/steps/build.d.ts.map +0 -1
  549. package/dist/src/workflow/steps/build.js +0 -108
  550. package/dist/src/workflow/steps/build.js.map +0 -1
  551. package/dist/src/workflow/steps/finalize.d.ts +0 -3
  552. package/dist/src/workflow/steps/finalize.d.ts.map +0 -1
  553. package/dist/src/workflow/steps/finalize.js +0 -188
  554. package/dist/src/workflow/steps/finalize.js.map +0 -1
  555. package/dist/src/workflow/steps/plan.d.ts +0 -3
  556. package/dist/src/workflow/steps/plan.d.ts.map +0 -1
  557. package/dist/src/workflow/steps/plan.js +0 -136
  558. package/dist/src/workflow/steps/plan.js.map +0 -1
  559. package/dist/src/workflow/steps/research.d.ts +0 -3
  560. package/dist/src/workflow/steps/research.d.ts.map +0 -1
  561. package/dist/src/workflow/steps/research.js +0 -189
  562. package/dist/src/workflow/steps/research.js.map +0 -1
  563. package/dist/src/workflow/types.d.ts +0 -51
  564. package/dist/src/workflow/types.d.ts.map +0 -1
  565. package/dist/src/workflow/utils.d.ts +0 -12
  566. package/dist/src/workflow/utils.d.ts.map +0 -1
  567. package/dist/src/workflow/utils.js +0 -41
  568. package/dist/src/workflow/utils.js.map +0 -1
  569. package/dist/src/worktree-manager.d.ts +0 -39
  570. package/dist/src/worktree-manager.d.ts.map +0 -1
  571. package/dist/src/worktree-manager.js +0 -808
  572. package/dist/src/worktree-manager.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-manager.js","sources":["../../src/file-manager.ts"],"sourcesContent":["import { promises as fs } from \"node:fs\";\nimport { extname, join } from \"node:path\";\nimport z from \"zod\";\nimport type { ResearchEvaluation, SupportingFile } from \"./types.js\";\nimport { Logger } from \"./utils/logger.js\";\n\nexport interface TaskFile {\n name: string;\n content: string;\n type: \"plan\" | \"context\" | \"reference\" | \"output\" | \"artifact\";\n}\n\nexport interface LocalArtifact {\n name: string;\n content: string;\n type: TaskFile[\"type\"];\n contentType: string;\n size: number;\n}\n\nexport class PostHogFileManager {\n private repositoryPath: string;\n private logger: Logger;\n\n constructor(repositoryPath: string, logger?: Logger) {\n this.repositoryPath = repositoryPath;\n this.logger =\n logger || new Logger({ debug: false, prefix: \"[FileManager]\" });\n }\n\n private getTaskDirectory(taskId: string): string {\n return join(this.repositoryPath, \".posthog\", taskId);\n }\n\n private getTaskFilePath(taskId: string, fileName: string): string {\n return join(this.getTaskDirectory(taskId), fileName);\n }\n\n async ensureTaskDirectory(taskId: string): Promise<void> {\n const taskDir = this.getTaskDirectory(taskId);\n try {\n await fs.access(taskDir);\n } catch {\n await fs.mkdir(taskDir, { recursive: true });\n }\n }\n\n async writeTaskFile(taskId: string, file: TaskFile): Promise<void> {\n await this.ensureTaskDirectory(taskId);\n const filePath = this.getTaskFilePath(taskId, file.name);\n\n this.logger.debug(\"Writing task file\", {\n filePath,\n contentLength: file.content.length,\n contentType: typeof file.content,\n });\n\n await fs.writeFile(filePath, file.content, \"utf8\");\n\n this.logger.debug(\"File written successfully\", { filePath });\n }\n\n async readTaskFile(taskId: string, fileName: string): Promise<string | null> {\n try {\n const filePath = this.getTaskFilePath(taskId, fileName);\n return await fs.readFile(filePath, \"utf8\");\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return null;\n }\n throw error;\n }\n }\n\n async listTaskFiles(taskId: string): Promise<string[]> {\n try {\n const taskDir = this.getTaskDirectory(taskId);\n const files = await fs.readdir(taskDir);\n return files.filter((file) => !file.startsWith(\".\"));\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return [];\n }\n throw error;\n }\n }\n\n async deleteTaskFile(taskId: string, fileName: string): Promise<void> {\n try {\n const filePath = this.getTaskFilePath(taskId, fileName);\n await fs.unlink(filePath);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n throw error;\n }\n }\n }\n\n async taskDirectoryExists(taskId: string): Promise<boolean> {\n try {\n const taskDir = this.getTaskDirectory(taskId);\n await fs.access(taskDir);\n return true;\n } catch {\n return false;\n }\n }\n\n async cleanupTaskDirectory(taskId: string): Promise<void> {\n try {\n const taskDir = this.getTaskDirectory(taskId);\n await fs.rm(taskDir, { recursive: true, force: true });\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n throw error;\n }\n }\n }\n\n // Convenience methods for common file types\n async writePlan(taskId: string, plan: string): Promise<void> {\n this.logger.debug(\"Writing plan\", {\n taskId,\n planLength: plan.length,\n contentPreview: plan.substring(0, 200),\n });\n\n await this.writeTaskFile(taskId, {\n name: \"plan.md\",\n content: plan,\n type: \"plan\",\n });\n\n this.logger.info(\"Plan file written\", { taskId });\n }\n\n async readPlan(taskId: string): Promise<string | null> {\n return await this.readTaskFile(taskId, \"plan.md\");\n }\n\n async writeContext(taskId: string, context: string): Promise<void> {\n await this.writeTaskFile(taskId, {\n name: \"context.md\",\n content: context,\n type: \"context\",\n });\n }\n\n async readContext(taskId: string): Promise<string | null> {\n return await this.readTaskFile(taskId, \"context.md\");\n }\n\n async writeRequirements(taskId: string, requirements: string): Promise<void> {\n await this.writeTaskFile(taskId, {\n name: \"requirements.md\",\n content: requirements,\n type: \"reference\",\n });\n }\n\n async readRequirements(taskId: string): Promise<string | null> {\n return await this.readTaskFile(taskId, \"requirements.md\");\n }\n\n async writeResearch(taskId: string, data: ResearchEvaluation): Promise<void> {\n this.logger.debug(\"Writing research\", {\n taskId,\n score: data.actionabilityScore,\n hasQuestions: !!data.questions,\n questionCount: data.questions?.length ?? 0,\n answered: data.answered ?? false,\n });\n\n await this.writeTaskFile(taskId, {\n name: \"research.json\",\n content: JSON.stringify(data, null, 2),\n type: \"artifact\",\n });\n\n this.logger.info(\"Research file written\", {\n taskId,\n score: data.actionabilityScore,\n hasQuestions: !!data.questions,\n answered: data.answered ?? false,\n });\n }\n\n async readResearch(taskId: string): Promise<ResearchEvaluation | null> {\n try {\n const content = await this.readTaskFile(taskId, \"research.json\");\n return content ? (JSON.parse(content) as ResearchEvaluation) : null;\n } catch (error) {\n this.logger.debug(\"Failed to parse research.json\", { error });\n return null;\n }\n }\n\n async writeTodos(taskId: string, data: unknown): Promise<void> {\n const todos = z.object({\n metadata: z.object({\n total: z.number(),\n completed: z.number(),\n }),\n });\n\n const validatedData = todos.parse(data);\n this.logger.debug(\"Writing todos\", {\n taskId,\n total: validatedData.metadata?.total ?? 0,\n completed: validatedData.metadata?.completed ?? 0,\n });\n\n await this.writeTaskFile(taskId, {\n name: \"todos.json\",\n content: JSON.stringify(validatedData, null, 2),\n type: \"artifact\",\n });\n\n this.logger.info(\"Todos file written\", {\n taskId,\n total: validatedData.metadata?.total ?? 0,\n completed: validatedData.metadata?.completed ?? 0,\n });\n }\n\n async readTodos(taskId: string): Promise<unknown | null> {\n try {\n const content = await this.readTaskFile(taskId, \"todos.json\");\n return content ? JSON.parse(content) : null;\n } catch (error) {\n this.logger.debug(\"Failed to parse todos.json\", { error });\n return null;\n }\n }\n\n async getTaskFiles(taskId: string): Promise<SupportingFile[]> {\n const fileNames = await this.listTaskFiles(taskId);\n const files: SupportingFile[] = [];\n\n for (const fileName of fileNames) {\n const content = await this.readTaskFile(taskId, fileName);\n if (content !== null) {\n // Determine type based on file name\n const type = this.resolveFileType(fileName);\n\n files.push({\n name: fileName,\n content,\n type,\n created_at: new Date().toISOString(), // Could be enhanced with file stats\n });\n }\n }\n\n return files;\n }\n\n async collectTaskArtifacts(taskId: string): Promise<LocalArtifact[]> {\n const fileNames = await this.listTaskFiles(taskId);\n const artifacts: LocalArtifact[] = [];\n\n for (const fileName of fileNames) {\n const content = await this.readTaskFile(taskId, fileName);\n if (content === null) {\n continue;\n }\n\n const type = this.resolveFileType(fileName);\n const contentType = this.inferContentType(fileName);\n const size = Buffer.byteLength(content, \"utf8\");\n\n artifacts.push({\n name: fileName,\n content,\n type,\n contentType,\n size,\n });\n }\n\n return artifacts;\n }\n\n private resolveFileType(fileName: string): TaskFile[\"type\"] {\n if (fileName === \"plan.md\") return \"plan\";\n if (fileName === \"context.md\") return \"context\";\n if (fileName === \"requirements.md\") return \"reference\";\n if (fileName.startsWith(\"output_\")) return \"output\";\n if (fileName.endsWith(\".md\")) return \"reference\";\n return \"artifact\";\n }\n\n private inferContentType(fileName: string): string {\n const extension = extname(fileName).toLowerCase();\n switch (extension) {\n case \".md\":\n return \"text/markdown\";\n case \".json\":\n return \"application/json\";\n case \".txt\":\n return \"text/plain\";\n default:\n return \"text/plain\";\n }\n }\n}\n"],"names":["fs"],"mappings":"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"}
@@ -1,79 +0,0 @@
1
- import { Logger } from "./utils/logger.js";
2
- export interface GitConfig {
3
- repositoryPath: string;
4
- authorName?: string;
5
- authorEmail?: string;
6
- logger?: Logger;
7
- }
8
- export interface BranchInfo {
9
- name: string;
10
- exists: boolean;
11
- isCurrentBranch: boolean;
12
- }
13
- export declare class GitManager {
14
- private repositoryPath;
15
- private authorName?;
16
- private authorEmail?;
17
- private logger;
18
- constructor(config: GitConfig);
19
- private escapeShellArg;
20
- private runGitCommand;
21
- private runCommand;
22
- isGitRepository(): Promise<boolean>;
23
- getCurrentBranch(): Promise<string>;
24
- getDefaultBranch(): Promise<string>;
25
- branchExists(branchName: string): Promise<boolean>;
26
- createBranch(branchName: string, baseBranch?: string): Promise<void>;
27
- switchToBranch(branchName: string): Promise<void>;
28
- resetToDefaultBranchIfNeeded(): Promise<boolean>;
29
- createOrSwitchToBranch(branchName: string, baseBranch?: string): Promise<void>;
30
- addFiles(paths: string[]): Promise<void>;
31
- addAllPostHogFiles(): Promise<void>;
32
- commitChanges(message: string, options?: {
33
- authorName?: string;
34
- authorEmail?: string;
35
- }): Promise<string>;
36
- hasChanges(): Promise<boolean>;
37
- hasStagedChanges(): Promise<boolean>;
38
- private ensureCleanWorkingDirectory;
39
- private generateUniqueBranchName;
40
- private ensureOnDefaultBranch;
41
- private buildCommitCommand;
42
- getRemoteUrl(): Promise<string | null>;
43
- pushBranch(branchName: string, force?: boolean): Promise<void>;
44
- /**
45
- * Tracks whether commits were made during an operation by comparing HEAD SHA
46
- * before and after. Returns an object with methods to finalize the operation.
47
- *
48
- * Usage:
49
- * const tracker = await gitManager.trackCommitsDuring();
50
- * // ... do work that might create commits ...
51
- * const result = await tracker.finalize({ commitMessage: 'fallback message', push: true });
52
- */
53
- trackCommitsDuring(): Promise<{
54
- finalize: (options: {
55
- commitMessage: string;
56
- push?: boolean;
57
- }) => Promise<{
58
- commitCreated: boolean;
59
- pushedBranch: boolean;
60
- }>;
61
- }>;
62
- createTaskBranch(taskSlug: string): Promise<string>;
63
- createTaskPlanningBranch(taskId: string, baseBranch?: string): Promise<string>;
64
- createTaskImplementationBranch(taskId: string, planningBranchName?: string): Promise<string>;
65
- commitPlan(taskId: string, taskTitle: string): Promise<string>;
66
- commitImplementation(taskId: string, taskTitle: string, planSummary?: string): Promise<string>;
67
- deleteBranch(branchName: string, force?: boolean): Promise<void>;
68
- deleteRemoteBranch(branchName: string): Promise<void>;
69
- getBranchInfo(branchName: string): Promise<BranchInfo>;
70
- getCommitSha(ref?: string): Promise<string>;
71
- getCommitMessage(ref?: string): Promise<string>;
72
- createPullRequest(branchName: string, title: string, body: string, baseBranch?: string): Promise<string>;
73
- getTaskBranch(taskSlug: string): Promise<string | null>;
74
- commitAndPush(message: string, options?: {
75
- allowEmpty?: boolean;
76
- }): Promise<void>;
77
- isWorktree(): Promise<boolean>;
78
- }
79
- //# sourceMappingURL=git-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-manager.d.ts","sourceRoot":"","sources":["../../src/git-manager.ts"],"names":[],"mappings":"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"}
@@ -1,454 +0,0 @@
1
- import { exec } from 'node:child_process';
2
- import { promisify } from 'node:util';
3
- import { Logger } from './utils/logger.js';
4
-
5
- const execAsync = promisify(exec);
6
- class GitManager {
7
- repositoryPath;
8
- authorName;
9
- authorEmail;
10
- logger;
11
- constructor(config) {
12
- this.repositoryPath = config.repositoryPath;
13
- this.authorName = config.authorName;
14
- this.authorEmail = config.authorEmail;
15
- this.logger =
16
- config.logger || new Logger({ debug: false, prefix: "[GitManager]" });
17
- }
18
- escapeShellArg(str) {
19
- return str
20
- .replace(/\\/g, "\\\\")
21
- .replace(/"/g, '\\"')
22
- .replace(/`/g, "\\`")
23
- .replace(/\$/g, "\\$");
24
- }
25
- async runGitCommand(command) {
26
- try {
27
- const { stdout } = await execAsync(`cd "${this.repositoryPath}" && git ${command}`);
28
- return stdout.trim();
29
- }
30
- catch (error) {
31
- throw new Error(`Git command failed: ${command}\n${error}`);
32
- }
33
- }
34
- async runCommand(command) {
35
- try {
36
- const { stdout } = await execAsync(`cd "${this.repositoryPath}" && ${command}`);
37
- return stdout.trim();
38
- }
39
- catch (error) {
40
- throw new Error(`Command failed: ${command}\n${error}`);
41
- }
42
- }
43
- async isGitRepository() {
44
- try {
45
- await this.runGitCommand("rev-parse --git-dir");
46
- return true;
47
- }
48
- catch {
49
- return false;
50
- }
51
- }
52
- async getCurrentBranch() {
53
- return await this.runGitCommand("branch --show-current");
54
- }
55
- async getDefaultBranch() {
56
- try {
57
- // Try to get the default branch from remote
58
- const remoteBranch = await this.runGitCommand("symbolic-ref refs/remotes/origin/HEAD");
59
- return remoteBranch.replace("refs/remotes/origin/", "");
60
- }
61
- catch {
62
- // Fallback: check if main exists, otherwise use master
63
- if (await this.branchExists("main")) {
64
- return "main";
65
- }
66
- else if (await this.branchExists("master")) {
67
- return "master";
68
- }
69
- else {
70
- throw new Error("Cannot determine default branch. No main or master branch found.");
71
- }
72
- }
73
- }
74
- async branchExists(branchName) {
75
- try {
76
- await this.runGitCommand(`rev-parse --verify ${branchName}`);
77
- return true;
78
- }
79
- catch {
80
- return false;
81
- }
82
- }
83
- async createBranch(branchName, baseBranch) {
84
- const base = baseBranch || (await this.getCurrentBranch());
85
- await this.runGitCommand(`checkout -b ${branchName} ${base}`);
86
- }
87
- async switchToBranch(branchName) {
88
- await this.runGitCommand(`checkout ${branchName}`);
89
- }
90
- async resetToDefaultBranchIfNeeded() {
91
- const currentBranch = await this.getCurrentBranch();
92
- const defaultBranch = await this.getDefaultBranch();
93
- if (currentBranch === defaultBranch) {
94
- this.logger.debug("Already on default branch", { branch: defaultBranch });
95
- return true;
96
- }
97
- if (await this.hasChanges()) {
98
- this.logger.warn("Skipping branch reset - uncommitted changes present", {
99
- currentBranch,
100
- defaultBranch,
101
- });
102
- return false;
103
- }
104
- await this.switchToBranch(defaultBranch);
105
- this.logger.info("Reset to default branch", {
106
- from: currentBranch,
107
- to: defaultBranch,
108
- });
109
- return true;
110
- }
111
- async createOrSwitchToBranch(branchName, baseBranch) {
112
- await this.ensureCleanWorkingDirectory("switching branches");
113
- const exists = await this.branchExists(branchName);
114
- if (exists) {
115
- await this.switchToBranch(branchName);
116
- }
117
- else {
118
- await this.createBranch(branchName, baseBranch);
119
- }
120
- }
121
- async addFiles(paths) {
122
- const pathList = paths.map((p) => `"${this.escapeShellArg(p)}"`).join(" ");
123
- await this.runGitCommand(`add ${pathList}`);
124
- }
125
- async addAllPostHogFiles() {
126
- try {
127
- // Use -A flag to add all changes (including new files) and ignore errors if directory is empty
128
- await this.runGitCommand("add -A .posthog/");
129
- }
130
- catch (error) {
131
- // If the directory doesn't exist or has no files, that's fine - just log and continue
132
- this.logger.debug("No PostHog files to add", { error });
133
- }
134
- }
135
- async commitChanges(message, options) {
136
- const command = this.buildCommitCommand(message, options);
137
- return await this.runGitCommand(command);
138
- }
139
- async hasChanges() {
140
- try {
141
- const status = await this.runGitCommand("status --porcelain");
142
- if (!status || status.trim().length === 0) {
143
- return false;
144
- }
145
- const lines = status.split("\n").filter((line) => {
146
- const trimmed = line.trim();
147
- return trimmed.length > 0 && !trimmed.includes(".posthog/");
148
- });
149
- return lines.length > 0;
150
- }
151
- catch {
152
- return false;
153
- }
154
- }
155
- async hasStagedChanges() {
156
- try {
157
- const status = await this.runGitCommand("diff --cached --name-only");
158
- return status.length > 0;
159
- }
160
- catch {
161
- return false;
162
- }
163
- }
164
- // Helper: Centralized safety check for uncommitted changes
165
- async ensureCleanWorkingDirectory(operation) {
166
- if (await this.hasChanges()) {
167
- throw new Error(`Uncommitted changes detected. Please commit or stash changes before ${operation}.`);
168
- }
169
- }
170
- async generateUniqueBranchName(baseName) {
171
- if (!(await this.branchExists(baseName))) {
172
- return baseName;
173
- }
174
- let counter = 1;
175
- let uniqueName = `${baseName}-${counter}`;
176
- while (await this.branchExists(uniqueName)) {
177
- counter++;
178
- uniqueName = `${baseName}-${counter}`;
179
- }
180
- return uniqueName;
181
- }
182
- async ensureOnDefaultBranch() {
183
- const defaultBranch = await this.getDefaultBranch();
184
- const currentBranch = await this.getCurrentBranch();
185
- if (currentBranch !== defaultBranch) {
186
- await this.ensureCleanWorkingDirectory("switching to default branch");
187
- await this.switchToBranch(defaultBranch);
188
- }
189
- return defaultBranch;
190
- }
191
- buildCommitCommand(message, options) {
192
- let command = `commit -m "${this.escapeShellArg(message)}"`;
193
- if (options?.allowEmpty) {
194
- command += " --allow-empty";
195
- }
196
- const authorName = options?.authorName || this.authorName;
197
- const authorEmail = options?.authorEmail || this.authorEmail;
198
- if (authorName && authorEmail) {
199
- command += ` --author="${authorName} <${authorEmail}>"`;
200
- }
201
- return command;
202
- }
203
- async getRemoteUrl() {
204
- try {
205
- return await this.runGitCommand("remote get-url origin");
206
- }
207
- catch {
208
- return null;
209
- }
210
- }
211
- async pushBranch(branchName, force = false) {
212
- const forceFlag = force ? "--force" : "";
213
- await this.runGitCommand(`push ${forceFlag} -u origin ${branchName}`);
214
- }
215
- /**
216
- * Tracks whether commits were made during an operation by comparing HEAD SHA
217
- * before and after. Returns an object with methods to finalize the operation.
218
- *
219
- * Usage:
220
- * const tracker = await gitManager.trackCommitsDuring();
221
- * // ... do work that might create commits ...
222
- * const result = await tracker.finalize({ commitMessage: 'fallback message', push: true });
223
- */
224
- async trackCommitsDuring() {
225
- const initialSha = await this.getCommitSha("HEAD");
226
- return {
227
- finalize: async (options) => {
228
- const currentSha = await this.getCommitSha("HEAD");
229
- const externalCommitsCreated = initialSha !== currentSha;
230
- const hasUncommittedChanges = await this.hasChanges();
231
- // If no commits and no changes, nothing to do
232
- if (!externalCommitsCreated && !hasUncommittedChanges) {
233
- return { commitCreated: false, pushedBranch: false };
234
- }
235
- let commitCreated = externalCommitsCreated;
236
- // Commit any remaining uncommitted changes
237
- if (hasUncommittedChanges) {
238
- await this.runGitCommand("add .");
239
- const hasStagedChanges = await this.hasStagedChanges();
240
- if (hasStagedChanges) {
241
- await this.commitChanges(options.commitMessage);
242
- commitCreated = true;
243
- }
244
- }
245
- // Push if requested and commits were made
246
- let pushedBranch = false;
247
- if (options.push && commitCreated) {
248
- const currentBranch = await this.getCurrentBranch();
249
- await this.pushBranch(currentBranch);
250
- pushedBranch = true;
251
- this.logger.info("Pushed branch after operation", {
252
- branch: currentBranch,
253
- });
254
- }
255
- return { commitCreated, pushedBranch };
256
- },
257
- };
258
- }
259
- async createTaskBranch(taskSlug) {
260
- const branchName = `posthog/task-${taskSlug}`;
261
- // Ensure we're on default branch before creating task branch
262
- const defaultBranch = await this.ensureOnDefaultBranch();
263
- this.logger.info("Creating task branch from default branch", {
264
- branchName,
265
- taskSlug,
266
- baseBranch: defaultBranch,
267
- });
268
- await this.createOrSwitchToBranch(branchName, defaultBranch);
269
- return branchName;
270
- }
271
- async createTaskPlanningBranch(taskId, baseBranch) {
272
- const baseName = `posthog/task-${taskId}-planning`;
273
- const branchName = await this.generateUniqueBranchName(baseName);
274
- this.logger.debug("Creating unique planning branch", {
275
- branchName,
276
- taskId,
277
- });
278
- const base = baseBranch || (await this.ensureOnDefaultBranch());
279
- await this.createBranch(branchName, base);
280
- return branchName;
281
- }
282
- async createTaskImplementationBranch(taskId, planningBranchName) {
283
- const baseName = `posthog/task-${taskId}-implementation`;
284
- const branchName = await this.generateUniqueBranchName(baseName);
285
- this.logger.debug("Creating unique implementation branch", {
286
- branchName,
287
- taskId,
288
- currentBranch: await this.getCurrentBranch(),
289
- });
290
- // Determine base branch: explicit param > current planning branch > default
291
- let baseBranch = planningBranchName;
292
- if (!baseBranch) {
293
- const currentBranch = await this.getCurrentBranch();
294
- if (currentBranch.includes("-planning")) {
295
- baseBranch = currentBranch;
296
- this.logger.debug("Using current planning branch", { baseBranch });
297
- }
298
- else {
299
- baseBranch = await this.ensureOnDefaultBranch();
300
- this.logger.debug("Using default branch", { baseBranch });
301
- }
302
- }
303
- this.logger.debug("Creating implementation branch from base", {
304
- baseBranch,
305
- branchName,
306
- });
307
- await this.createBranch(branchName, baseBranch);
308
- this.logger.info("Implementation branch created", {
309
- branchName,
310
- currentBranch: await this.getCurrentBranch(),
311
- });
312
- return branchName;
313
- }
314
- async commitPlan(taskId, taskTitle) {
315
- const currentBranch = await this.getCurrentBranch();
316
- this.logger.debug("Committing plan", { taskId, currentBranch });
317
- await this.addAllPostHogFiles();
318
- const hasChanges = await this.hasStagedChanges();
319
- this.logger.debug("Checking for staged changes", { hasChanges });
320
- if (!hasChanges) {
321
- this.logger.info("No plan changes to commit", { taskId });
322
- return "No changes to commit";
323
- }
324
- const message = `📋 Add plan for task: ${taskTitle}
325
-
326
- Task ID: ${taskId}
327
- Generated by PostHog Agent
328
-
329
- This commit contains the implementation plan and supporting documentation
330
- for the task. Review the plan before proceeding with implementation.`;
331
- const result = await this.commitChanges(message);
332
- this.logger.info("Plan committed", { taskId, taskTitle });
333
- return result;
334
- }
335
- async commitImplementation(taskId, taskTitle, planSummary) {
336
- await this.runGitCommand("add .");
337
- const hasChanges = await this.hasStagedChanges();
338
- if (!hasChanges) {
339
- this.logger.warn("No implementation changes to commit", { taskId });
340
- return "No changes to commit";
341
- }
342
- let message = `✨ Implement task: ${taskTitle}
343
-
344
- Task ID: ${taskId}
345
- Generated by PostHog Agent`;
346
- if (planSummary) {
347
- message += `\n\nPlan Summary:\n${planSummary}`;
348
- }
349
- message += `\n\nThis commit implements the changes described in the task plan.`;
350
- const result = await this.commitChanges(message);
351
- this.logger.info("Implementation committed", { taskId, taskTitle });
352
- return result;
353
- }
354
- async deleteBranch(branchName, force = false) {
355
- const forceFlag = force ? "-D" : "-d";
356
- await this.runGitCommand(`branch ${forceFlag} ${branchName}`);
357
- }
358
- async deleteRemoteBranch(branchName) {
359
- await this.runGitCommand(`push origin --delete ${branchName}`);
360
- }
361
- async getBranchInfo(branchName) {
362
- const exists = await this.branchExists(branchName);
363
- const currentBranch = await this.getCurrentBranch();
364
- return {
365
- name: branchName,
366
- exists,
367
- isCurrentBranch: branchName === currentBranch,
368
- };
369
- }
370
- async getCommitSha(ref = "HEAD") {
371
- return await this.runGitCommand(`rev-parse ${ref}`);
372
- }
373
- async getCommitMessage(ref = "HEAD") {
374
- return await this.runGitCommand(`log -1 --pretty=%B ${ref}`);
375
- }
376
- async createPullRequest(branchName, title, body, baseBranch) {
377
- const currentBranch = await this.getCurrentBranch();
378
- if (currentBranch !== branchName) {
379
- await this.ensureCleanWorkingDirectory("creating PR");
380
- await this.switchToBranch(branchName);
381
- }
382
- await this.pushBranch(branchName);
383
- let command = `gh pr create --title "${this.escapeShellArg(title)}" --body "${this.escapeShellArg(body)}"`;
384
- if (baseBranch) {
385
- command += ` --base ${baseBranch}`;
386
- }
387
- try {
388
- const prUrl = await this.runCommand(command);
389
- return prUrl.trim();
390
- }
391
- catch (error) {
392
- throw new Error(`Failed to create PR: ${error}`);
393
- }
394
- }
395
- async getTaskBranch(taskSlug) {
396
- try {
397
- // Get all branches matching the task slug pattern
398
- const branches = await this.runGitCommand("branch --list --all");
399
- const branchPattern = `posthog/task-${taskSlug}`;
400
- // Look for exact match or with counter suffix
401
- const lines = branches
402
- .split("\n")
403
- .map((l) => l.trim().replace(/^\*\s+/, ""));
404
- for (const line of lines) {
405
- const cleanBranch = line.replace("remotes/origin/", "");
406
- if (cleanBranch.startsWith(branchPattern)) {
407
- return cleanBranch;
408
- }
409
- }
410
- return null;
411
- }
412
- catch (error) {
413
- this.logger.debug("Failed to get task branch", { taskSlug, error });
414
- return null;
415
- }
416
- }
417
- async commitAndPush(message, options) {
418
- const hasChanges = await this.hasStagedChanges();
419
- if (!hasChanges && !options?.allowEmpty) {
420
- this.logger.debug("No changes to commit, skipping");
421
- return;
422
- }
423
- const command = this.buildCommitCommand(message, options);
424
- await this.runGitCommand(command);
425
- // Push to origin
426
- const currentBranch = await this.getCurrentBranch();
427
- await this.pushBranch(currentBranch);
428
- this.logger.info("Committed and pushed changes", {
429
- branch: currentBranch,
430
- message,
431
- });
432
- }
433
- async isWorktree() {
434
- try {
435
- // In a worktree, .git is a file pointing to the main repo's .git/worktrees/{name}
436
- // In a normal repo, .git is a directory
437
- const result = await this.runGitCommand("rev-parse --git-common-dir --git-dir");
438
- const lines = result.split("\n");
439
- if (lines.length >= 2) {
440
- const commonDir = lines[0].trim();
441
- const gitDir = lines[1].trim();
442
- // If they're different, we're in a worktree
443
- return commonDir !== gitDir;
444
- }
445
- return false;
446
- }
447
- catch {
448
- return false;
449
- }
450
- }
451
- }
452
-
453
- export { GitManager };
454
- //# sourceMappingURL=git-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-manager.js","sources":["../../src/git-manager.ts"],"sourcesContent":["import { exec } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport { Logger } from \"./utils/logger.js\";\n\nconst execAsync = promisify(exec);\n\nexport interface GitConfig {\n repositoryPath: string;\n authorName?: string;\n authorEmail?: string;\n logger?: Logger;\n}\n\nexport interface BranchInfo {\n name: string;\n exists: boolean;\n isCurrentBranch: boolean;\n}\n\nexport class GitManager {\n private repositoryPath: string;\n private authorName?: string;\n private authorEmail?: string;\n private logger: Logger;\n\n constructor(config: GitConfig) {\n this.repositoryPath = config.repositoryPath;\n this.authorName = config.authorName;\n this.authorEmail = config.authorEmail;\n this.logger =\n config.logger || new Logger({ debug: false, prefix: \"[GitManager]\" });\n }\n\n private escapeShellArg(str: string): string {\n return str\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, '\\\\\"')\n .replace(/`/g, \"\\\\`\")\n .replace(/\\$/g, \"\\\\$\");\n }\n\n private async runGitCommand(command: string): Promise<string> {\n try {\n const { stdout } = await execAsync(\n `cd \"${this.repositoryPath}\" && git ${command}`,\n );\n return stdout.trim();\n } catch (error) {\n throw new Error(`Git command failed: ${command}\\n${error}`);\n }\n }\n\n private async runCommand(command: string): Promise<string> {\n try {\n const { stdout } = await execAsync(\n `cd \"${this.repositoryPath}\" && ${command}`,\n );\n return stdout.trim();\n } catch (error) {\n throw new Error(`Command failed: ${command}\\n${error}`);\n }\n }\n\n async isGitRepository(): Promise<boolean> {\n try {\n await this.runGitCommand(\"rev-parse --git-dir\");\n return true;\n } catch {\n return false;\n }\n }\n\n async getCurrentBranch(): Promise<string> {\n return await this.runGitCommand(\"branch --show-current\");\n }\n\n async getDefaultBranch(): Promise<string> {\n try {\n // Try to get the default branch from remote\n const remoteBranch = await this.runGitCommand(\n \"symbolic-ref refs/remotes/origin/HEAD\",\n );\n return remoteBranch.replace(\"refs/remotes/origin/\", \"\");\n } catch {\n // Fallback: check if main exists, otherwise use master\n if (await this.branchExists(\"main\")) {\n return \"main\";\n } else if (await this.branchExists(\"master\")) {\n return \"master\";\n } else {\n throw new Error(\n \"Cannot determine default branch. No main or master branch found.\",\n );\n }\n }\n }\n\n async branchExists(branchName: string): Promise<boolean> {\n try {\n await this.runGitCommand(`rev-parse --verify ${branchName}`);\n return true;\n } catch {\n return false;\n }\n }\n\n async createBranch(branchName: string, baseBranch?: string): Promise<void> {\n const base = baseBranch || (await this.getCurrentBranch());\n await this.runGitCommand(`checkout -b ${branchName} ${base}`);\n }\n\n async switchToBranch(branchName: string): Promise<void> {\n await this.runGitCommand(`checkout ${branchName}`);\n }\n\n async resetToDefaultBranchIfNeeded(): Promise<boolean> {\n const currentBranch = await this.getCurrentBranch();\n const defaultBranch = await this.getDefaultBranch();\n\n if (currentBranch === defaultBranch) {\n this.logger.debug(\"Already on default branch\", { branch: defaultBranch });\n return true;\n }\n\n if (await this.hasChanges()) {\n this.logger.warn(\"Skipping branch reset - uncommitted changes present\", {\n currentBranch,\n defaultBranch,\n });\n return false;\n }\n\n await this.switchToBranch(defaultBranch);\n this.logger.info(\"Reset to default branch\", {\n from: currentBranch,\n to: defaultBranch,\n });\n return true;\n }\n\n async createOrSwitchToBranch(\n branchName: string,\n baseBranch?: string,\n ): Promise<void> {\n await this.ensureCleanWorkingDirectory(\"switching branches\");\n\n const exists = await this.branchExists(branchName);\n if (exists) {\n await this.switchToBranch(branchName);\n } else {\n await this.createBranch(branchName, baseBranch);\n }\n }\n\n async addFiles(paths: string[]): Promise<void> {\n const pathList = paths.map((p) => `\"${this.escapeShellArg(p)}\"`).join(\" \");\n await this.runGitCommand(`add ${pathList}`);\n }\n\n async addAllPostHogFiles(): Promise<void> {\n try {\n // Use -A flag to add all changes (including new files) and ignore errors if directory is empty\n await this.runGitCommand(\"add -A .posthog/\");\n } catch (error) {\n // If the directory doesn't exist or has no files, that's fine - just log and continue\n this.logger.debug(\"No PostHog files to add\", { error });\n }\n }\n\n async commitChanges(\n message: string,\n options?: {\n authorName?: string;\n authorEmail?: string;\n },\n ): Promise<string> {\n const command = this.buildCommitCommand(message, options);\n return await this.runGitCommand(command);\n }\n\n async hasChanges(): Promise<boolean> {\n try {\n const status = await this.runGitCommand(\"status --porcelain\");\n if (!status || status.trim().length === 0) {\n return false;\n }\n\n const lines = status.split(\"\\n\").filter((line) => {\n const trimmed = line.trim();\n return trimmed.length > 0 && !trimmed.includes(\".posthog/\");\n });\n\n return lines.length > 0;\n } catch {\n return false;\n }\n }\n\n async hasStagedChanges(): Promise<boolean> {\n try {\n const status = await this.runGitCommand(\"diff --cached --name-only\");\n return status.length > 0;\n } catch {\n return false;\n }\n }\n\n // Helper: Centralized safety check for uncommitted changes\n private async ensureCleanWorkingDirectory(operation: string): Promise<void> {\n if (await this.hasChanges()) {\n throw new Error(\n `Uncommitted changes detected. Please commit or stash changes before ${operation}.`,\n );\n }\n }\n\n private async generateUniqueBranchName(baseName: string): Promise<string> {\n if (!(await this.branchExists(baseName))) {\n return baseName;\n }\n\n let counter = 1;\n let uniqueName = `${baseName}-${counter}`;\n while (await this.branchExists(uniqueName)) {\n counter++;\n uniqueName = `${baseName}-${counter}`;\n }\n return uniqueName;\n }\n\n private async ensureOnDefaultBranch(): Promise<string> {\n const defaultBranch = await this.getDefaultBranch();\n const currentBranch = await this.getCurrentBranch();\n\n if (currentBranch !== defaultBranch) {\n await this.ensureCleanWorkingDirectory(\"switching to default branch\");\n await this.switchToBranch(defaultBranch);\n }\n\n return defaultBranch;\n }\n\n private buildCommitCommand(\n message: string,\n options?: {\n allowEmpty?: boolean;\n authorName?: string;\n authorEmail?: string;\n },\n ): string {\n let command = `commit -m \"${this.escapeShellArg(message)}\"`;\n\n if (options?.allowEmpty) {\n command += \" --allow-empty\";\n }\n\n const authorName = options?.authorName || this.authorName;\n const authorEmail = options?.authorEmail || this.authorEmail;\n\n if (authorName && authorEmail) {\n command += ` --author=\"${authorName} <${authorEmail}>\"`;\n }\n\n return command;\n }\n\n async getRemoteUrl(): Promise<string | null> {\n try {\n return await this.runGitCommand(\"remote get-url origin\");\n } catch {\n return null;\n }\n }\n\n async pushBranch(branchName: string, force: boolean = false): Promise<void> {\n const forceFlag = force ? \"--force\" : \"\";\n await this.runGitCommand(`push ${forceFlag} -u origin ${branchName}`);\n }\n\n /**\n * Tracks whether commits were made during an operation by comparing HEAD SHA\n * before and after. Returns an object with methods to finalize the operation.\n *\n * Usage:\n * const tracker = await gitManager.trackCommitsDuring();\n * // ... do work that might create commits ...\n * const result = await tracker.finalize({ commitMessage: 'fallback message', push: true });\n */\n async trackCommitsDuring(): Promise<{\n finalize: (options: {\n commitMessage: string;\n push?: boolean;\n }) => Promise<{ commitCreated: boolean; pushedBranch: boolean }>;\n }> {\n const initialSha = await this.getCommitSha(\"HEAD\");\n\n return {\n finalize: async (options) => {\n const currentSha = await this.getCommitSha(\"HEAD\");\n const externalCommitsCreated = initialSha !== currentSha;\n const hasUncommittedChanges = await this.hasChanges();\n\n // If no commits and no changes, nothing to do\n if (!externalCommitsCreated && !hasUncommittedChanges) {\n return { commitCreated: false, pushedBranch: false };\n }\n\n let commitCreated = externalCommitsCreated;\n\n // Commit any remaining uncommitted changes\n if (hasUncommittedChanges) {\n await this.runGitCommand(\"add .\");\n const hasStagedChanges = await this.hasStagedChanges();\n\n if (hasStagedChanges) {\n await this.commitChanges(options.commitMessage);\n commitCreated = true;\n }\n }\n\n // Push if requested and commits were made\n let pushedBranch = false;\n if (options.push && commitCreated) {\n const currentBranch = await this.getCurrentBranch();\n await this.pushBranch(currentBranch);\n pushedBranch = true;\n this.logger.info(\"Pushed branch after operation\", {\n branch: currentBranch,\n });\n }\n\n return { commitCreated, pushedBranch };\n },\n };\n }\n\n async createTaskBranch(taskSlug: string): Promise<string> {\n const branchName = `posthog/task-${taskSlug}`;\n\n // Ensure we're on default branch before creating task branch\n const defaultBranch = await this.ensureOnDefaultBranch();\n\n this.logger.info(\"Creating task branch from default branch\", {\n branchName,\n taskSlug,\n baseBranch: defaultBranch,\n });\n\n await this.createOrSwitchToBranch(branchName, defaultBranch);\n\n return branchName;\n }\n\n async createTaskPlanningBranch(\n taskId: string,\n baseBranch?: string,\n ): Promise<string> {\n const baseName = `posthog/task-${taskId}-planning`;\n const branchName = await this.generateUniqueBranchName(baseName);\n\n this.logger.debug(\"Creating unique planning branch\", {\n branchName,\n taskId,\n });\n\n const base = baseBranch || (await this.ensureOnDefaultBranch());\n await this.createBranch(branchName, base);\n\n return branchName;\n }\n\n async createTaskImplementationBranch(\n taskId: string,\n planningBranchName?: string,\n ): Promise<string> {\n const baseName = `posthog/task-${taskId}-implementation`;\n const branchName = await this.generateUniqueBranchName(baseName);\n\n this.logger.debug(\"Creating unique implementation branch\", {\n branchName,\n taskId,\n currentBranch: await this.getCurrentBranch(),\n });\n\n // Determine base branch: explicit param > current planning branch > default\n let baseBranch = planningBranchName;\n\n if (!baseBranch) {\n const currentBranch = await this.getCurrentBranch();\n if (currentBranch.includes(\"-planning\")) {\n baseBranch = currentBranch;\n this.logger.debug(\"Using current planning branch\", { baseBranch });\n } else {\n baseBranch = await this.ensureOnDefaultBranch();\n this.logger.debug(\"Using default branch\", { baseBranch });\n }\n }\n\n this.logger.debug(\"Creating implementation branch from base\", {\n baseBranch,\n branchName,\n });\n await this.createBranch(branchName, baseBranch);\n\n this.logger.info(\"Implementation branch created\", {\n branchName,\n currentBranch: await this.getCurrentBranch(),\n });\n\n return branchName;\n }\n\n async commitPlan(taskId: string, taskTitle: string): Promise<string> {\n const currentBranch = await this.getCurrentBranch();\n this.logger.debug(\"Committing plan\", { taskId, currentBranch });\n\n await this.addAllPostHogFiles();\n\n const hasChanges = await this.hasStagedChanges();\n this.logger.debug(\"Checking for staged changes\", { hasChanges });\n\n if (!hasChanges) {\n this.logger.info(\"No plan changes to commit\", { taskId });\n return \"No changes to commit\";\n }\n\n const message = `📋 Add plan for task: ${taskTitle}\n\nTask ID: ${taskId}\nGenerated by PostHog Agent\n\nThis commit contains the implementation plan and supporting documentation\nfor the task. Review the plan before proceeding with implementation.`;\n\n const result = await this.commitChanges(message);\n this.logger.info(\"Plan committed\", { taskId, taskTitle });\n return result;\n }\n\n async commitImplementation(\n taskId: string,\n taskTitle: string,\n planSummary?: string,\n ): Promise<string> {\n await this.runGitCommand(\"add .\");\n\n const hasChanges = await this.hasStagedChanges();\n if (!hasChanges) {\n this.logger.warn(\"No implementation changes to commit\", { taskId });\n return \"No changes to commit\";\n }\n\n let message = `✨ Implement task: ${taskTitle}\n\nTask ID: ${taskId}\nGenerated by PostHog Agent`;\n\n if (planSummary) {\n message += `\\n\\nPlan Summary:\\n${planSummary}`;\n }\n\n message += `\\n\\nThis commit implements the changes described in the task plan.`;\n\n const result = await this.commitChanges(message);\n this.logger.info(\"Implementation committed\", { taskId, taskTitle });\n return result;\n }\n\n async deleteBranch(\n branchName: string,\n force: boolean = false,\n ): Promise<void> {\n const forceFlag = force ? \"-D\" : \"-d\";\n await this.runGitCommand(`branch ${forceFlag} ${branchName}`);\n }\n\n async deleteRemoteBranch(branchName: string): Promise<void> {\n await this.runGitCommand(`push origin --delete ${branchName}`);\n }\n\n async getBranchInfo(branchName: string): Promise<BranchInfo> {\n const exists = await this.branchExists(branchName);\n const currentBranch = await this.getCurrentBranch();\n\n return {\n name: branchName,\n exists,\n isCurrentBranch: branchName === currentBranch,\n };\n }\n\n async getCommitSha(ref: string = \"HEAD\"): Promise<string> {\n return await this.runGitCommand(`rev-parse ${ref}`);\n }\n\n async getCommitMessage(ref: string = \"HEAD\"): Promise<string> {\n return await this.runGitCommand(`log -1 --pretty=%B ${ref}`);\n }\n\n async createPullRequest(\n branchName: string,\n title: string,\n body: string,\n baseBranch?: string,\n ): Promise<string> {\n const currentBranch = await this.getCurrentBranch();\n if (currentBranch !== branchName) {\n await this.ensureCleanWorkingDirectory(\"creating PR\");\n await this.switchToBranch(branchName);\n }\n\n await this.pushBranch(branchName);\n\n let command = `gh pr create --title \"${this.escapeShellArg(title)}\" --body \"${this.escapeShellArg(body)}\"`;\n\n if (baseBranch) {\n command += ` --base ${baseBranch}`;\n }\n\n try {\n const prUrl = await this.runCommand(command);\n return prUrl.trim();\n } catch (error) {\n throw new Error(`Failed to create PR: ${error}`);\n }\n }\n\n async getTaskBranch(taskSlug: string): Promise<string | null> {\n try {\n // Get all branches matching the task slug pattern\n const branches = await this.runGitCommand(\"branch --list --all\");\n const branchPattern = `posthog/task-${taskSlug}`;\n\n // Look for exact match or with counter suffix\n const lines = branches\n .split(\"\\n\")\n .map((l) => l.trim().replace(/^\\*\\s+/, \"\"));\n for (const line of lines) {\n const cleanBranch = line.replace(\"remotes/origin/\", \"\");\n if (cleanBranch.startsWith(branchPattern)) {\n return cleanBranch;\n }\n }\n\n return null;\n } catch (error) {\n this.logger.debug(\"Failed to get task branch\", { taskSlug, error });\n return null;\n }\n }\n\n async commitAndPush(\n message: string,\n options?: { allowEmpty?: boolean },\n ): Promise<void> {\n const hasChanges = await this.hasStagedChanges();\n\n if (!hasChanges && !options?.allowEmpty) {\n this.logger.debug(\"No changes to commit, skipping\");\n return;\n }\n\n const command = this.buildCommitCommand(message, options);\n await this.runGitCommand(command);\n\n // Push to origin\n const currentBranch = await this.getCurrentBranch();\n await this.pushBranch(currentBranch);\n\n this.logger.info(\"Committed and pushed changes\", {\n branch: currentBranch,\n message,\n });\n }\n\n async isWorktree(): Promise<boolean> {\n try {\n // In a worktree, .git is a file pointing to the main repo's .git/worktrees/{name}\n // In a normal repo, .git is a directory\n const result = await this.runGitCommand(\n \"rev-parse --git-common-dir --git-dir\",\n );\n const lines = result.split(\"\\n\");\n if (lines.length >= 2) {\n const commonDir = lines[0].trim();\n const gitDir = lines[1].trim();\n // If they're different, we're in a worktree\n return commonDir !== gitDir;\n }\n return false;\n } catch {\n return false;\n }\n }\n}\n"],"names":[],"mappings":"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"}