@posthog/agent 1.24.0 → 1.25.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 (577) hide show
  1. package/LICENSE +33 -0
  2. package/dist/_virtual/_commonjsHelpers.js +6 -0
  3. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  4. package/dist/_virtual/additionalItems.js +4 -0
  5. package/dist/_virtual/additionalItems.js.map +1 -0
  6. package/dist/_virtual/additionalProperties.js +4 -0
  7. package/dist/_virtual/additionalProperties.js.map +1 -0
  8. package/dist/_virtual/ajv.js +4 -0
  9. package/dist/_virtual/ajv.js.map +1 -0
  10. package/dist/_virtual/allOf.js +4 -0
  11. package/dist/_virtual/allOf.js.map +1 -0
  12. package/dist/_virtual/anyOf.js +4 -0
  13. package/dist/_virtual/anyOf.js.map +1 -0
  14. package/dist/_virtual/applicability.js +4 -0
  15. package/dist/_virtual/applicability.js.map +1 -0
  16. package/dist/_virtual/boolSchema.js +4 -0
  17. package/dist/_virtual/boolSchema.js.map +1 -0
  18. package/dist/_virtual/code.js +4 -0
  19. package/dist/_virtual/code.js.map +1 -0
  20. package/dist/_virtual/code2.js +4 -0
  21. package/dist/_virtual/code2.js.map +1 -0
  22. package/dist/_virtual/const.js +4 -0
  23. package/dist/_virtual/const.js.map +1 -0
  24. package/dist/_virtual/contains.js +4 -0
  25. package/dist/_virtual/contains.js.map +1 -0
  26. package/dist/_virtual/core.js +4 -0
  27. package/dist/_virtual/core.js.map +1 -0
  28. package/dist/_virtual/dataType.js +4 -0
  29. package/dist/_virtual/dataType.js.map +1 -0
  30. package/dist/_virtual/defaults.js +4 -0
  31. package/dist/_virtual/defaults.js.map +1 -0
  32. package/dist/_virtual/dependencies.js +4 -0
  33. package/dist/_virtual/dependencies.js.map +1 -0
  34. package/dist/_virtual/draft7.js +4 -0
  35. package/dist/_virtual/draft7.js.map +1 -0
  36. package/dist/_virtual/enum.js +4 -0
  37. package/dist/_virtual/enum.js.map +1 -0
  38. package/dist/_virtual/equal.js +4 -0
  39. package/dist/_virtual/equal.js.map +1 -0
  40. package/dist/_virtual/errors.js +4 -0
  41. package/dist/_virtual/errors.js.map +1 -0
  42. package/dist/_virtual/format.js +4 -0
  43. package/dist/_virtual/format.js.map +1 -0
  44. package/dist/_virtual/formats.js +4 -0
  45. package/dist/_virtual/formats.js.map +1 -0
  46. package/dist/_virtual/id.js +4 -0
  47. package/dist/_virtual/id.js.map +1 -0
  48. package/dist/_virtual/if.js +4 -0
  49. package/dist/_virtual/if.js.map +1 -0
  50. package/dist/_virtual/index.js +4 -0
  51. package/dist/_virtual/index.js.map +1 -0
  52. package/dist/_virtual/index10.js +4 -0
  53. package/dist/_virtual/index10.js.map +1 -0
  54. package/dist/_virtual/index11.js +4 -0
  55. package/dist/_virtual/index11.js.map +1 -0
  56. package/dist/_virtual/index2.js +4 -0
  57. package/dist/_virtual/index2.js.map +1 -0
  58. package/dist/_virtual/index3.js +4 -0
  59. package/dist/_virtual/index3.js.map +1 -0
  60. package/dist/_virtual/index4.js +4 -0
  61. package/dist/_virtual/index4.js.map +1 -0
  62. package/dist/_virtual/index5.js +4 -0
  63. package/dist/_virtual/index5.js.map +1 -0
  64. package/dist/_virtual/index6.js +4 -0
  65. package/dist/_virtual/index6.js.map +1 -0
  66. package/dist/_virtual/index7.js +4 -0
  67. package/dist/_virtual/index7.js.map +1 -0
  68. package/dist/_virtual/index8.js +4 -0
  69. package/dist/_virtual/index8.js.map +1 -0
  70. package/dist/_virtual/index9.js +4 -0
  71. package/dist/_virtual/index9.js.map +1 -0
  72. package/dist/_virtual/items.js +4 -0
  73. package/dist/_virtual/items.js.map +1 -0
  74. package/dist/_virtual/items2020.js +4 -0
  75. package/dist/_virtual/items2020.js.map +1 -0
  76. package/dist/_virtual/keyword.js +4 -0
  77. package/dist/_virtual/keyword.js.map +1 -0
  78. package/dist/_virtual/limit.js +4 -0
  79. package/dist/_virtual/limit.js.map +1 -0
  80. package/dist/_virtual/limitItems.js +4 -0
  81. package/dist/_virtual/limitItems.js.map +1 -0
  82. package/dist/_virtual/limitLength.js +4 -0
  83. package/dist/_virtual/limitLength.js.map +1 -0
  84. package/dist/_virtual/limitNumber.js +4 -0
  85. package/dist/_virtual/limitNumber.js.map +1 -0
  86. package/dist/_virtual/limitProperties.js +4 -0
  87. package/dist/_virtual/limitProperties.js.map +1 -0
  88. package/dist/_virtual/metadata.js +4 -0
  89. package/dist/_virtual/metadata.js.map +1 -0
  90. package/dist/_virtual/multipleOf.js +4 -0
  91. package/dist/_virtual/multipleOf.js.map +1 -0
  92. package/dist/_virtual/names.js +4 -0
  93. package/dist/_virtual/names.js.map +1 -0
  94. package/dist/_virtual/not.js +4 -0
  95. package/dist/_virtual/not.js.map +1 -0
  96. package/dist/_virtual/oneOf.js +4 -0
  97. package/dist/_virtual/oneOf.js.map +1 -0
  98. package/dist/_virtual/pattern.js +4 -0
  99. package/dist/_virtual/pattern.js.map +1 -0
  100. package/dist/_virtual/patternProperties.js +4 -0
  101. package/dist/_virtual/patternProperties.js.map +1 -0
  102. package/dist/_virtual/prefixItems.js +4 -0
  103. package/dist/_virtual/prefixItems.js.map +1 -0
  104. package/dist/_virtual/properties.js +4 -0
  105. package/dist/_virtual/properties.js.map +1 -0
  106. package/dist/_virtual/propertyNames.js +4 -0
  107. package/dist/_virtual/propertyNames.js.map +1 -0
  108. package/dist/_virtual/ref.js +4 -0
  109. package/dist/_virtual/ref.js.map +1 -0
  110. package/dist/_virtual/ref_error.js +4 -0
  111. package/dist/_virtual/ref_error.js.map +1 -0
  112. package/dist/_virtual/required.js +4 -0
  113. package/dist/_virtual/required.js.map +1 -0
  114. package/dist/_virtual/resolve.js +4 -0
  115. package/dist/_virtual/resolve.js.map +1 -0
  116. package/dist/_virtual/rules.js +4 -0
  117. package/dist/_virtual/rules.js.map +1 -0
  118. package/dist/_virtual/scope.js +4 -0
  119. package/dist/_virtual/scope.js.map +1 -0
  120. package/dist/_virtual/subschema.js +4 -0
  121. package/dist/_virtual/subschema.js.map +1 -0
  122. package/dist/_virtual/thenElse.js +4 -0
  123. package/dist/_virtual/thenElse.js.map +1 -0
  124. package/dist/_virtual/types.js +4 -0
  125. package/dist/_virtual/types.js.map +1 -0
  126. package/dist/_virtual/ucs2length.js +4 -0
  127. package/dist/_virtual/ucs2length.js.map +1 -0
  128. package/dist/_virtual/uniqueItems.js +4 -0
  129. package/dist/_virtual/uniqueItems.js.map +1 -0
  130. package/dist/_virtual/uri.js +4 -0
  131. package/dist/_virtual/uri.js.map +1 -0
  132. package/dist/_virtual/util.js +4 -0
  133. package/dist/_virtual/util.js.map +1 -0
  134. package/dist/_virtual/validation_error.js +4 -0
  135. package/dist/_virtual/validation_error.js.map +1 -0
  136. package/dist/claude-cli/cli.js +2294 -2146
  137. package/dist/example-client.d.ts +3 -0
  138. package/dist/example-client.d.ts.map +1 -0
  139. package/dist/index.d.ts +12 -4
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +5 -1
  142. package/dist/index.js.map +1 -1
  143. package/dist/node_modules/@agentclientprotocol/sdk/dist/acp.js +610 -0
  144. package/dist/node_modules/@agentclientprotocol/sdk/dist/acp.js.map +1 -0
  145. package/dist/node_modules/@agentclientprotocol/sdk/dist/schema.js +875 -0
  146. package/dist/node_modules/@agentclientprotocol/sdk/dist/schema.js.map +1 -0
  147. package/dist/node_modules/@agentclientprotocol/sdk/dist/stream.js +66 -0
  148. package/dist/node_modules/@agentclientprotocol/sdk/dist/stream.js.map +1 -0
  149. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +23 -0
  150. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js.map +1 -0
  151. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +331 -0
  152. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
  153. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +717 -0
  154. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +1 -0
  155. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +221 -0
  156. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -0
  157. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +56 -0
  158. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +1 -0
  159. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +440 -0
  160. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
  161. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js +94 -0
  162. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js.map +1 -0
  163. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1610 -0
  164. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
  165. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +91 -0
  166. package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +1 -0
  167. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/ZodError.js +133 -0
  168. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/ZodError.js.map +1 -0
  169. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/errors.js +9 -0
  170. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/errors.js.map +1 -0
  171. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/errorUtil.js +9 -0
  172. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
  173. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/parseUtil.js +112 -0
  174. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
  175. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/util.js +136 -0
  176. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/util.js.map +1 -0
  177. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/locales/en.js +112 -0
  178. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/locales/en.js.map +1 -0
  179. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/types.js +3297 -0
  180. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/types.js.map +1 -0
  181. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/errors.js +44 -0
  182. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/errors.js.map +1 -0
  183. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/iso.js +36 -0
  184. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/iso.js.map +1 -0
  185. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/parse.js +10 -0
  186. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/parse.js.map +1 -0
  187. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/schemas.js +657 -0
  188. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/schemas.js.map +1 -0
  189. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/api.js +449 -0
  190. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/api.js.map +1 -0
  191. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/checks.js +413 -0
  192. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/checks.js.map +1 -0
  193. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/core.js +57 -0
  194. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/core.js.map +1 -0
  195. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/doc.js +38 -0
  196. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/doc.js.map +1 -0
  197. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/errors.js +86 -0
  198. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/errors.js.map +1 -0
  199. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/parse.js +61 -0
  200. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/parse.js.map +1 -0
  201. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/regexes.js +80 -0
  202. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/regexes.js.map +1 -0
  203. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/registries.js +52 -0
  204. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/registries.js.map +1 -0
  205. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/schemas.js +1307 -0
  206. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/schemas.js.map +1 -0
  207. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/to-json-schema.js +842 -0
  208. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/to-json-schema.js.map +1 -0
  209. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/util.js +335 -0
  210. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/util.js.map +1 -0
  211. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/versions.js +8 -0
  212. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/versions.js.map +1 -0
  213. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/mini/schemas.js +51 -0
  214. package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/mini/schemas.js.map +1 -0
  215. package/dist/node_modules/ajv/dist/ajv.js +69 -0
  216. package/dist/node_modules/ajv/dist/ajv.js.map +1 -0
  217. package/dist/node_modules/ajv/dist/compile/codegen/code.js +169 -0
  218. package/dist/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  219. package/dist/node_modules/ajv/dist/compile/codegen/index.js +712 -0
  220. package/dist/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  221. package/dist/node_modules/ajv/dist/compile/codegen/scope.js +157 -0
  222. package/dist/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  223. package/dist/node_modules/ajv/dist/compile/errors.js +140 -0
  224. package/dist/node_modules/ajv/dist/compile/errors.js.map +1 -0
  225. package/dist/node_modules/ajv/dist/compile/index.js +253 -0
  226. package/dist/node_modules/ajv/dist/compile/index.js.map +1 -0
  227. package/dist/node_modules/ajv/dist/compile/names.js +40 -0
  228. package/dist/node_modules/ajv/dist/compile/names.js.map +1 -0
  229. package/dist/node_modules/ajv/dist/compile/ref_error.js +25 -0
  230. package/dist/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  231. package/dist/node_modules/ajv/dist/compile/resolve.js +162 -0
  232. package/dist/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  233. package/dist/node_modules/ajv/dist/compile/rules.js +29 -0
  234. package/dist/node_modules/ajv/dist/compile/rules.js.map +1 -0
  235. package/dist/node_modules/ajv/dist/compile/util.js +183 -0
  236. package/dist/node_modules/ajv/dist/compile/util.js.map +1 -0
  237. package/dist/node_modules/ajv/dist/compile/validate/applicability.js +30 -0
  238. package/dist/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  239. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js +64 -0
  240. package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  241. package/dist/node_modules/ajv/dist/compile/validate/dataType.js +213 -0
  242. package/dist/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  243. package/dist/node_modules/ajv/dist/compile/validate/defaults.js +49 -0
  244. package/dist/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  245. package/dist/node_modules/ajv/dist/compile/validate/index.js +544 -0
  246. package/dist/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  247. package/dist/node_modules/ajv/dist/compile/validate/keyword.js +139 -0
  248. package/dist/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  249. package/dist/node_modules/ajv/dist/compile/validate/subschema.js +95 -0
  250. package/dist/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  251. package/dist/node_modules/ajv/dist/core.js +639 -0
  252. package/dist/node_modules/ajv/dist/core.js.map +1 -0
  253. package/dist/node_modules/ajv/dist/refs/data.json.js +31 -0
  254. package/dist/node_modules/ajv/dist/refs/data.json.js.map +1 -0
  255. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +254 -0
  256. package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +1 -0
  257. package/dist/node_modules/ajv/dist/runtime/equal.js +9 -0
  258. package/dist/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  259. package/dist/node_modules/ajv/dist/runtime/ucs2length.js +25 -0
  260. package/dist/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  261. package/dist/node_modules/ajv/dist/runtime/uri.js +8 -0
  262. package/dist/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  263. package/dist/node_modules/ajv/dist/runtime/validation_error.js +22 -0
  264. package/dist/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  265. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +53 -0
  266. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  267. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +112 -0
  268. package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  269. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js +26 -0
  270. package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  271. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +14 -0
  272. package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  273. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js +99 -0
  274. package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  275. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +93 -0
  276. package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  277. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js +70 -0
  278. package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  279. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +77 -0
  280. package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  281. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js +57 -0
  282. package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  283. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js +37 -0
  284. package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  285. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js +29 -0
  286. package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  287. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +64 -0
  288. package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  289. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +80 -0
  290. package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  291. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +15 -0
  292. package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  293. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js +61 -0
  294. package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  295. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +42 -0
  296. package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  297. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +16 -0
  298. package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  299. package/dist/node_modules/ajv/dist/vocabularies/code.js +146 -0
  300. package/dist/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  301. package/dist/node_modules/ajv/dist/vocabularies/core/id.js +11 -0
  302. package/dist/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  303. package/dist/node_modules/ajv/dist/vocabularies/core/index.js +21 -0
  304. package/dist/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  305. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js +131 -0
  306. package/dist/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  307. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js +113 -0
  308. package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  309. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js +12 -0
  310. package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  311. package/dist/node_modules/ajv/dist/vocabularies/draft7.js +28 -0
  312. package/dist/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  313. package/dist/node_modules/ajv/dist/vocabularies/format/format.js +94 -0
  314. package/dist/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  315. package/dist/node_modules/ajv/dist/vocabularies/format/index.js +9 -0
  316. package/dist/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  317. package/dist/node_modules/ajv/dist/vocabularies/metadata.js +21 -0
  318. package/dist/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  319. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js +31 -0
  320. package/dist/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  321. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js +54 -0
  322. package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  323. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +54 -0
  324. package/dist/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  325. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js +26 -0
  326. package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  327. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js +33 -0
  328. package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  329. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +29 -0
  330. package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  331. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +26 -0
  332. package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  333. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +28 -0
  334. package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  335. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js +27 -0
  336. package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  337. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js +84 -0
  338. package/dist/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  339. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +72 -0
  340. package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  341. package/dist/node_modules/ajv-formats/dist/formats.js +212 -0
  342. package/dist/node_modules/ajv-formats/dist/formats.js.map +1 -0
  343. package/dist/node_modules/ajv-formats/dist/index.js +52 -0
  344. package/dist/node_modules/ajv-formats/dist/index.js.map +1 -0
  345. package/dist/node_modules/ajv-formats/dist/limit.js +75 -0
  346. package/dist/node_modules/ajv-formats/dist/limit.js.map +1 -0
  347. package/dist/node_modules/diff/libesm/diff/base.js +256 -0
  348. package/dist/node_modules/diff/libesm/diff/base.js.map +1 -0
  349. package/dist/node_modules/diff/libesm/diff/line.js +64 -0
  350. package/dist/node_modules/diff/libesm/diff/line.js.map +1 -0
  351. package/dist/node_modules/diff/libesm/patch/create.js +185 -0
  352. package/dist/node_modules/diff/libesm/patch/create.js.map +1 -0
  353. package/dist/node_modules/fast-deep-equal/index.js +47 -0
  354. package/dist/node_modules/fast-deep-equal/index.js.map +1 -0
  355. package/dist/node_modules/fast-uri/index.js +347 -0
  356. package/dist/node_modules/fast-uri/index.js.map +1 -0
  357. package/dist/node_modules/fast-uri/lib/schemes.js +255 -0
  358. package/dist/node_modules/fast-uri/lib/schemes.js.map +1 -0
  359. package/dist/node_modules/fast-uri/lib/utils.js +334 -0
  360. package/dist/node_modules/fast-uri/lib/utils.js.map +1 -0
  361. package/dist/node_modules/json-schema-traverse/index.js +98 -0
  362. package/dist/node_modules/json-schema-traverse/index.js.map +1 -0
  363. package/dist/node_modules/uuid/dist/rng.js +14 -0
  364. package/dist/node_modules/uuid/dist/rng.js.map +1 -0
  365. package/dist/node_modules/uuid/dist/stringify.js +29 -0
  366. package/dist/node_modules/uuid/dist/stringify.js.map +1 -0
  367. package/dist/node_modules/uuid/dist/v7.js +65 -0
  368. package/dist/node_modules/uuid/dist/v7.js.map +1 -0
  369. package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js +37 -0
  370. package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js.map +1 -0
  371. package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js +26 -0
  372. package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +1 -0
  373. package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +17 -0
  374. package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +1 -0
  375. package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +11 -0
  376. package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +1 -0
  377. package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js +66 -0
  378. package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +1 -0
  379. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +21 -0
  380. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +1 -0
  381. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +30 -0
  382. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +1 -0
  383. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +53 -0
  384. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +1 -0
  385. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +8 -0
  386. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +1 -0
  387. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +8 -0
  388. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +1 -0
  389. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +8 -0
  390. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +1 -0
  391. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +50 -0
  392. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +1 -0
  393. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +11 -0
  394. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +1 -0
  395. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +11 -0
  396. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +1 -0
  397. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +9 -0
  398. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +1 -0
  399. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +56 -0
  400. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +1 -0
  401. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +24 -0
  402. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +1 -0
  403. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +30 -0
  404. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +1 -0
  405. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +19 -0
  406. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +1 -0
  407. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +15 -0
  408. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +1 -0
  409. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +13 -0
  410. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +1 -0
  411. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +37 -0
  412. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +1 -0
  413. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +56 -0
  414. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +1 -0
  415. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +76 -0
  416. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +1 -0
  417. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +25 -0
  418. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +1 -0
  419. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +24 -0
  420. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +1 -0
  421. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +8 -0
  422. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +1 -0
  423. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +8 -0
  424. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +1 -0
  425. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +65 -0
  426. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +1 -0
  427. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +24 -0
  428. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +1 -0
  429. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +350 -0
  430. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
  431. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +36 -0
  432. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +1 -0
  433. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +10 -0
  434. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +1 -0
  435. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +84 -0
  436. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +1 -0
  437. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +8 -0
  438. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +1 -0
  439. package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js +109 -0
  440. package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +1 -0
  441. package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +90 -0
  442. package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +1 -0
  443. package/dist/node_modules/zod-to-json-schema/node_modules/zod/v3/types.js +42 -0
  444. package/dist/node_modules/zod-to-json-schema/node_modules/zod/v3/types.js.map +1 -0
  445. package/dist/package.json.js +8 -0
  446. package/dist/package.json.js.map +1 -0
  447. package/dist/src/acp-extensions.d.ts +91 -0
  448. package/dist/src/acp-extensions.d.ts.map +1 -0
  449. package/dist/src/acp-extensions.js +38 -0
  450. package/dist/src/acp-extensions.js.map +1 -0
  451. package/dist/src/adapters/claude/claude.d.ts +136 -0
  452. package/dist/src/adapters/claude/claude.d.ts.map +1 -0
  453. package/dist/src/adapters/claude/claude.js +1112 -0
  454. package/dist/src/adapters/claude/claude.js.map +1 -0
  455. package/dist/src/adapters/claude/mcp-server.d.ts +30 -0
  456. package/dist/src/adapters/claude/mcp-server.d.ts.map +1 -0
  457. package/dist/src/adapters/claude/mcp-server.js +655 -0
  458. package/dist/src/adapters/claude/mcp-server.js.map +1 -0
  459. package/dist/src/adapters/claude/tools.d.ts +35 -0
  460. package/dist/src/adapters/claude/tools.d.ts.map +1 -0
  461. package/dist/src/adapters/claude/tools.js +466 -0
  462. package/dist/src/adapters/claude/tools.js.map +1 -0
  463. package/dist/src/adapters/claude/utils.d.ts +48 -0
  464. package/dist/src/adapters/claude/utils.d.ts.map +1 -0
  465. package/dist/src/adapters/claude/utils.js +158 -0
  466. package/dist/src/adapters/claude/utils.js.map +1 -0
  467. package/dist/src/agent.d.ts +15 -25
  468. package/dist/src/agent.d.ts.map +1 -1
  469. package/dist/src/agent.js +118 -156
  470. package/dist/src/agent.js.map +1 -1
  471. package/dist/src/file-manager.d.ts +2 -2
  472. package/dist/src/file-manager.d.ts.map +1 -1
  473. package/dist/src/file-manager.js +13 -5
  474. package/dist/src/file-manager.js.map +1 -1
  475. package/dist/src/git-manager.d.ts +1 -0
  476. package/dist/src/git-manager.d.ts.map +1 -1
  477. package/dist/src/git-manager.js +18 -0
  478. package/dist/src/git-manager.js.map +1 -1
  479. package/dist/src/posthog-api.d.ts +8 -13
  480. package/dist/src/posthog-api.d.ts.map +1 -1
  481. package/dist/src/posthog-api.js +14 -2
  482. package/dist/src/posthog-api.js.map +1 -1
  483. package/dist/src/prompt-builder.d.ts +2 -2
  484. package/dist/src/prompt-builder.d.ts.map +1 -1
  485. package/dist/src/prompt-builder.js +7 -7
  486. package/dist/src/prompt-builder.js.map +1 -1
  487. package/dist/src/schemas.d.ts +980 -0
  488. package/dist/src/schemas.d.ts.map +1 -0
  489. package/dist/src/schemas.js +196 -0
  490. package/dist/src/schemas.js.map +1 -0
  491. package/dist/src/session-store.d.ts +53 -0
  492. package/dist/src/session-store.d.ts.map +1 -0
  493. package/dist/src/session-store.js +195 -0
  494. package/dist/src/session-store.js.map +1 -0
  495. package/dist/src/task-manager.d.ts +3 -3
  496. package/dist/src/task-manager.d.ts.map +1 -1
  497. package/dist/src/task-manager.js.map +1 -1
  498. package/dist/src/template-manager.d.ts.map +1 -1
  499. package/dist/src/template-manager.js +6 -6
  500. package/dist/src/template-manager.js.map +1 -1
  501. package/dist/src/todo-manager.d.ts +2 -2
  502. package/dist/src/todo-manager.d.ts.map +1 -1
  503. package/dist/src/todo-manager.js +5 -1
  504. package/dist/src/todo-manager.js.map +1 -1
  505. package/dist/src/types.d.ts +54 -159
  506. package/dist/src/types.d.ts.map +1 -1
  507. package/dist/src/types.js +1 -0
  508. package/dist/src/types.js.map +1 -1
  509. package/dist/src/utils/logger.d.ts +10 -2
  510. package/dist/src/utils/logger.d.ts.map +1 -1
  511. package/dist/src/utils/logger.js +35 -20
  512. package/dist/src/utils/logger.js.map +1 -1
  513. package/dist/src/utils/tapped-stream.d.ts +17 -0
  514. package/dist/src/utils/tapped-stream.d.ts.map +1 -0
  515. package/dist/src/utils/tapped-stream.js +45 -0
  516. package/dist/src/utils/tapped-stream.js.map +1 -0
  517. package/dist/src/workflow/steps/build.d.ts.map +1 -1
  518. package/dist/src/workflow/steps/build.js +15 -9
  519. package/dist/src/workflow/steps/build.js.map +1 -1
  520. package/dist/src/workflow/steps/finalize.d.ts.map +1 -1
  521. package/dist/src/workflow/steps/finalize.js +4 -4
  522. package/dist/src/workflow/steps/finalize.js.map +1 -1
  523. package/dist/src/workflow/steps/plan.d.ts.map +1 -1
  524. package/dist/src/workflow/steps/plan.js +22 -12
  525. package/dist/src/workflow/steps/plan.js.map +1 -1
  526. package/dist/src/workflow/steps/research.d.ts.map +1 -1
  527. package/dist/src/workflow/steps/research.js +33 -26
  528. package/dist/src/workflow/steps/research.js.map +1 -1
  529. package/dist/src/workflow/types.d.ts +10 -5
  530. package/dist/src/workflow/types.d.ts.map +1 -1
  531. package/dist/src/worktree-manager.d.ts +39 -0
  532. package/dist/src/worktree-manager.d.ts.map +1 -0
  533. package/dist/src/worktree-manager.js +810 -0
  534. package/dist/src/worktree-manager.js.map +1 -0
  535. package/package.json +19 -15
  536. package/src/acp-extensions.ts +117 -0
  537. package/src/adapters/claude/claude.ts +1498 -0
  538. package/src/adapters/claude/mcp-server.ts +810 -0
  539. package/src/adapters/claude/tools.ts +609 -0
  540. package/src/adapters/claude/utils.ts +267 -0
  541. package/src/agent.ts +151 -222
  542. package/src/file-manager.ts +16 -7
  543. package/src/git-manager.ts +20 -0
  544. package/src/posthog-api.ts +38 -17
  545. package/src/prompt-builder.ts +23 -15
  546. package/src/schemas.ts +241 -0
  547. package/src/session-store.ts +244 -0
  548. package/src/task-manager.ts +3 -3
  549. package/src/template-manager.ts +8 -8
  550. package/src/todo-manager.ts +9 -3
  551. package/src/types.ts +79 -210
  552. package/src/utils/logger.ts +47 -22
  553. package/src/utils/tapped-stream.ts +60 -0
  554. package/src/workflow/steps/build.ts +16 -11
  555. package/src/workflow/steps/finalize.ts +4 -11
  556. package/src/workflow/steps/plan.ts +24 -19
  557. package/src/workflow/steps/research.ts +34 -33
  558. package/src/workflow/types.ts +14 -5
  559. package/src/worktree-manager.ts +884 -0
  560. package/dist/src/adapters/claude/claude-adapter.d.ts +0 -18
  561. package/dist/src/adapters/claude/claude-adapter.d.ts.map +0 -1
  562. package/dist/src/adapters/claude/claude-adapter.js +0 -356
  563. package/dist/src/adapters/claude/claude-adapter.js.map +0 -1
  564. package/dist/src/adapters/claude/tool-mapper.d.ts +0 -19
  565. package/dist/src/adapters/claude/tool-mapper.d.ts.map +0 -1
  566. package/dist/src/adapters/claude/tool-mapper.js +0 -44
  567. package/dist/src/adapters/claude/tool-mapper.js.map +0 -1
  568. package/dist/src/adapters/types.d.ts +0 -33
  569. package/dist/src/adapters/types.d.ts.map +0 -1
  570. package/dist/src/task-progress-reporter.d.ts +0 -42
  571. package/dist/src/task-progress-reporter.d.ts.map +0 -1
  572. package/dist/src/task-progress-reporter.js +0 -398
  573. package/dist/src/task-progress-reporter.js.map +0 -1
  574. package/src/adapters/claude/claude-adapter.ts +0 -390
  575. package/src/adapters/claude/tool-mapper.ts +0 -46
  576. package/src/adapters/types.ts +0 -37
  577. package/src/task-progress-reporter.ts +0 -454
package/src/agent.ts CHANGED
@@ -1,42 +1,38 @@
1
- import { query } from "@anthropic-ai/claude-agent-sdk";
2
- import { ClaudeAdapter } from "./adapters/claude/claude-adapter.js";
3
- import type { ProviderAdapter } from "./adapters/types.js";
1
+ import { POSTHOG_NOTIFICATIONS } from "./acp-extensions.js";
2
+ import {
3
+ createAcpConnection,
4
+ type InProcessAcpConnection,
5
+ } from "./adapters/claude/claude.js";
4
6
  import { PostHogFileManager } from "./file-manager.js";
5
7
  import { GitManager } from "./git-manager.js";
6
8
  import { PostHogAPIClient } from "./posthog-api.js";
7
9
  import { PromptBuilder } from "./prompt-builder.js";
10
+ import { SessionStore } from "./session-store.js";
8
11
  import { TaskManager } from "./task-manager.js";
9
- import { TaskProgressReporter } from "./task-progress-reporter.js";
10
12
  import { TemplateManager } from "./template-manager.js";
11
- import type {
12
- AgentConfig,
13
- CanUseTool,
14
- ExecutionResult,
15
- Task,
16
- } from "./types.js";
13
+ import type { AgentConfig, CanUseTool, Task } from "./types.js";
17
14
  import { Logger } from "./utils/logger.js";
18
15
  import { TASK_WORKFLOW } from "./workflow/config.js";
19
- import type { WorkflowRuntime } from "./workflow/types.js";
16
+ import type { SendNotification, WorkflowRuntime } from "./workflow/types.js";
20
17
 
21
18
  export class Agent {
22
19
  private workingDirectory: string;
23
- private onEvent?: (event: any) => void;
24
20
  private taskManager: TaskManager;
25
21
  private posthogAPI?: PostHogAPIClient;
26
22
  private fileManager: PostHogFileManager;
27
23
  private gitManager: GitManager;
28
24
  private templateManager: TemplateManager;
29
- private adapter: ProviderAdapter;
30
25
  private logger: Logger;
31
- private progressReporter: TaskProgressReporter;
26
+ private acpConnection?: InProcessAcpConnection;
32
27
  private promptBuilder: PromptBuilder;
33
28
  private mcpServers?: Record<string, any>;
34
29
  private canUseTool?: CanUseTool;
30
+ private currentRunId?: string;
31
+ private sessionStore?: SessionStore;
35
32
  public debug: boolean;
36
33
 
37
34
  constructor(config: AgentConfig) {
38
35
  this.workingDirectory = config.workingDirectory || process.cwd();
39
- this.onEvent = config.onEvent;
40
36
  this.canUseTool = config.canUseTool;
41
37
  this.debug = config.debug || false;
42
38
 
@@ -65,10 +61,12 @@ export class Agent {
65
61
  ...defaultMcpServers,
66
62
  ...config.mcpServers,
67
63
  };
68
- this.logger = new Logger({ debug: this.debug, prefix: "[PostHog Agent]" });
64
+ this.logger = new Logger({
65
+ debug: this.debug,
66
+ prefix: "[PostHog Agent]",
67
+ onLog: config.onLog,
68
+ });
69
69
  this.taskManager = new TaskManager();
70
- // Hardcode Claude adapter for now - extensible for other providers later
71
- this.adapter = new ClaudeAdapter();
72
70
 
73
71
  this.fileManager = new PostHogFileManager(
74
72
  this.workingDirectory,
@@ -77,16 +75,25 @@ export class Agent {
77
75
  this.gitManager = new GitManager({
78
76
  repositoryPath: this.workingDirectory,
79
77
  logger: this.logger.child("GitManager"),
80
- // TODO: Add author config from environment or config
81
78
  });
82
79
  this.templateManager = new TemplateManager();
83
80
 
84
- if (config.posthogApiUrl && config.posthogApiKey) {
81
+ if (
82
+ config.posthogApiUrl &&
83
+ config.posthogApiKey &&
84
+ config.posthogProjectId
85
+ ) {
85
86
  this.posthogAPI = new PostHogAPIClient({
86
87
  apiUrl: config.posthogApiUrl,
87
88
  apiKey: config.posthogApiKey,
88
89
  projectId: config.posthogProjectId,
89
90
  });
91
+
92
+ // Create SessionStore from the API client for ACP connection
93
+ this.sessionStore = new SessionStore(
94
+ this.posthogAPI,
95
+ this.logger.child("SessionStore"),
96
+ );
90
97
  }
91
98
 
92
99
  this.promptBuilder = new PromptBuilder({
@@ -95,10 +102,6 @@ export class Agent {
95
102
  posthogClient: this.posthogAPI,
96
103
  logger: this.logger.child("PromptBuilder"),
97
104
  });
98
- this.progressReporter = new TaskProgressReporter(
99
- this.posthogAPI,
100
- this.logger,
101
- );
102
105
  }
103
106
 
104
107
  /**
@@ -120,54 +123,68 @@ export class Agent {
120
123
  try {
121
124
  const gatewayUrl = this.posthogAPI.getLlmGatewayUrl();
122
125
  const apiKey = this.posthogAPI.getApiKey();
123
-
124
126
  process.env.ANTHROPIC_BASE_URL = gatewayUrl;
125
127
  process.env.ANTHROPIC_AUTH_TOKEN = apiKey;
126
128
  this.ensureOpenAIGatewayEnv(gatewayUrl, apiKey);
127
-
128
- this.logger.debug("Configured LLM gateway", { gatewayUrl });
129
129
  } catch (error) {
130
130
  this.logger.error("Failed to configure LLM gateway", error);
131
131
  throw error;
132
132
  }
133
133
  }
134
134
 
135
+ private getOrCreateConnection(): InProcessAcpConnection {
136
+ if (!this.acpConnection) {
137
+ this.acpConnection = createAcpConnection({
138
+ sessionStore: this.sessionStore,
139
+ });
140
+ }
141
+ return this.acpConnection;
142
+ }
143
+
135
144
  // Adaptive task execution orchestrated via workflow steps
136
145
  async runTask(
137
- taskOrId: Task | string,
146
+ taskId: string,
147
+ taskRunId: string,
138
148
  options: import("./types.js").TaskExecutionOptions = {},
139
149
  ): Promise<void> {
140
- await this._configureLlmGateway();
150
+ // await this._configureLlmGateway();
141
151
 
142
- const task =
143
- typeof taskOrId === "string" ? await this.fetchTask(taskOrId) : taskOrId;
152
+ const task = await this.fetchTask(taskId);
144
153
  const cwd = options.repositoryPath || this.workingDirectory;
145
154
  const isCloudMode = options.isCloudMode ?? false;
146
155
  const taskSlug = (task as any).slug || task.id;
147
156
 
157
+ // Use taskRunId as sessionId - they are the same identifier
158
+ this.currentRunId = taskRunId;
159
+
148
160
  this.logger.info("Starting adaptive task execution", {
149
161
  taskId: task.id,
150
162
  taskSlug,
163
+ taskRunId,
151
164
  isCloudMode,
152
165
  });
153
166
 
154
- // Initialize progress reporter for task run tracking (needed for PR attachment)
155
- await this.progressReporter.start(task.id, {
156
- totalSteps: TASK_WORKFLOW.length,
167
+ const connection = this.getOrCreateConnection();
168
+
169
+ // Create sendNotification using ACP connection's extNotification
170
+ const sendNotification: SendNotification = async (method, params) => {
171
+ this.logger.debug(`Notification: ${method}`, params);
172
+ await connection.agentConnection.extNotification?.(method, params);
173
+ };
174
+
175
+ await sendNotification(POSTHOG_NOTIFICATIONS.RUN_STARTED, {
176
+ sessionId: taskRunId,
177
+ runId: taskRunId,
157
178
  });
158
- this.emitEvent(
159
- this.adapter.createStatusEvent("run_started", {
160
- runId: this.progressReporter.runId,
161
- }),
162
- );
163
179
 
164
- await this.prepareTaskBranch(taskSlug, isCloudMode);
180
+ await this.prepareTaskBranch(taskSlug, isCloudMode, sendNotification);
165
181
 
166
182
  let taskError: Error | undefined;
167
183
  try {
168
184
  const workflowContext: WorkflowRuntime = {
169
185
  task,
170
186
  taskSlug,
187
+ runId: taskRunId,
171
188
  cwd,
172
189
  isCloudMode,
173
190
  options,
@@ -175,11 +192,11 @@ export class Agent {
175
192
  fileManager: this.fileManager,
176
193
  gitManager: this.gitManager,
177
194
  promptBuilder: this.promptBuilder,
178
- progressReporter: this.progressReporter,
179
- adapter: this.adapter,
195
+ connection: connection.agentConnection,
196
+ sessionId: taskRunId,
197
+ sendNotification,
180
198
  mcpServers: this.mcpServers,
181
199
  posthogAPI: this.posthogAPI,
182
- emitEvent: (event: any) => this.emitEvent(event),
183
200
  stepResults: {},
184
201
  };
185
202
 
@@ -192,83 +209,95 @@ export class Agent {
192
209
 
193
210
  const shouldCreatePR = options.createPR ?? isCloudMode;
194
211
  if (shouldCreatePR) {
195
- await this.ensurePullRequest(task, workflowContext.stepResults);
212
+ await this.ensurePullRequest(
213
+ task,
214
+ workflowContext.stepResults,
215
+ sendNotification,
216
+ );
196
217
  }
197
218
 
198
219
  this.logger.info("Task execution complete", { taskId: task.id });
199
- this.emitEvent(
200
- this.adapter.createStatusEvent("task_complete", { taskId: task.id }),
201
- );
220
+ await sendNotification(POSTHOG_NOTIFICATIONS.TASK_COMPLETE, {
221
+ sessionId: taskRunId,
222
+ taskId: task.id,
223
+ });
202
224
  } catch (error) {
203
225
  taskError = error instanceof Error ? error : new Error(String(error));
204
226
  this.logger.error("Task execution failed", {
205
227
  taskId: task.id,
206
228
  error: taskError.message,
207
229
  });
208
- } finally {
209
- if (taskError) {
210
- await this.progressReporter.fail(taskError);
211
- // biome-ignore lint/correctness/noUnsafeFinally: we actually want to throw the error
212
- throw taskError;
213
- } else {
214
- await this.progressReporter.complete();
215
- }
230
+ await sendNotification(POSTHOG_NOTIFICATIONS.ERROR, {
231
+ sessionId: taskRunId,
232
+ message: taskError.message,
233
+ });
234
+ throw taskError;
216
235
  }
217
236
  }
218
237
 
219
- // Direct prompt execution - still supported for low-level usage
220
- async run(
221
- prompt: string,
222
- options: {
223
- repositoryPath?: string;
224
- permissionMode?: import("./types.js").PermissionMode;
225
- queryOverrides?: Record<string, any>;
226
- canUseTool?: CanUseTool;
227
- } = {},
228
- ): Promise<ExecutionResult> {
238
+ /**
239
+ * Creates an in-process ACP connection for client communication.
240
+ * Sets up git branch for the task, configures LLM gateway.
241
+ * The client handles all prompting/querying via the returned streams.
242
+ *
243
+ * @returns InProcessAcpConnection with clientStreams for the client to use
244
+ */
245
+ async runTaskV2(
246
+ taskId: string,
247
+ taskRunId: string,
248
+ options: import("./types.js").TaskExecutionOptions = {},
249
+ ): Promise<InProcessAcpConnection> {
229
250
  await this._configureLlmGateway();
230
- const baseOptions: Record<string, any> = {
231
- model: "claude-sonnet-4-5-20250929",
232
- cwd: options.repositoryPath || this.workingDirectory,
233
- permissionMode: (options.permissionMode as any) || "default",
234
- settingSources: ["local"],
235
- mcpServers: this.mcpServers,
236
- };
237
251
 
238
- // Add canUseTool hook if provided (options take precedence over instance config)
239
- const canUseTool = options.canUseTool || this.canUseTool;
240
- if (canUseTool) {
241
- baseOptions.canUseTool = canUseTool;
242
- }
252
+ const task = await this.fetchTask(taskId);
253
+ const taskSlug = (task as any).slug || task.id;
254
+ const isCloudMode = options.isCloudMode ?? false;
255
+ const _cwd = options.repositoryPath || this.workingDirectory;
256
+
257
+ // Use taskRunId as sessionId - they are the same identifier
258
+ this.currentRunId = taskRunId;
243
259
 
244
- const response = query({
245
- prompt,
246
- options: { ...baseOptions, ...(options.queryOverrides || {}) },
260
+ this.acpConnection = createAcpConnection({
261
+ sessionStore: this.sessionStore,
262
+ sessionId: taskRunId,
263
+ taskId: task.id,
247
264
  });
248
265
 
249
- const results = [];
250
- try {
251
- for await (const message of response) {
252
- this.logger.debug("Received message in direct run", message);
253
- // Emit raw SDK event
254
- this.emitEvent(this.adapter.createRawSDKEvent(message));
255
- const transformedEvents = this.adapter.transform(message);
256
- for (const event of transformedEvents) {
257
- this.emitEvent(event);
258
- }
259
- results.push(message);
266
+ const sendNotification: SendNotification = async (method, params) => {
267
+ this.logger.debug(`Notification: ${method}`, params);
268
+ await this.acpConnection?.agentConnection.extNotification?.(
269
+ method,
270
+ params,
271
+ );
272
+ };
273
+
274
+ await sendNotification(POSTHOG_NOTIFICATIONS.RUN_STARTED, {
275
+ sessionId: taskRunId,
276
+ runId: taskRunId,
277
+ });
278
+
279
+ if (!options.skipGitBranch) {
280
+ try {
281
+ await this.prepareTaskBranch(taskSlug, isCloudMode, sendNotification);
282
+ } catch (error) {
283
+ const errorMessage =
284
+ error instanceof Error ? error.message : String(error);
285
+ this.logger.error("Failed to prepare task branch", {
286
+ error: errorMessage,
287
+ });
288
+ await sendNotification(POSTHOG_NOTIFICATIONS.ERROR, {
289
+ sessionId: taskRunId,
290
+ message: errorMessage,
291
+ });
292
+ throw error;
260
293
  }
261
- } catch (error) {
262
- this.logger.error("Error during direct run", error);
263
- throw error;
264
294
  }
265
295
 
266
- return { results };
296
+ return this.acpConnection;
267
297
  }
268
298
 
269
299
  // PostHog task operations
270
300
  async fetchTask(taskId: string): Promise<Task> {
271
- this.logger.debug("Fetching task from PostHog", { taskId });
272
301
  if (!this.posthogAPI) {
273
302
  const error = new Error(
274
303
  "PostHog API not configured. Provide posthogApiUrl and posthogApiKey in constructor.",
@@ -283,44 +312,6 @@ export class Agent {
283
312
  return this.posthogAPI;
284
313
  }
285
314
 
286
- async listTasks(filters?: {
287
- repository?: string;
288
- organization?: string;
289
- origin_product?: string;
290
- }): Promise<Task[]> {
291
- if (!this.posthogAPI) {
292
- throw new Error(
293
- "PostHog API not configured. Provide posthogApiUrl and posthogApiKey in constructor.",
294
- );
295
- }
296
- return this.posthogAPI.listTasks(filters);
297
- }
298
-
299
- // File system operations for task artifacts
300
- async writeTaskFile(
301
- taskId: string,
302
- fileName: string,
303
- content: string,
304
- type: "plan" | "context" | "reference" | "output" = "reference",
305
- ): Promise<void> {
306
- this.logger.debug("Writing task file", {
307
- taskId,
308
- fileName,
309
- type,
310
- contentLength: content.length,
311
- });
312
- await this.fileManager.writeTaskFile(taskId, {
313
- name: fileName,
314
- content,
315
- type,
316
- });
317
- }
318
-
319
- async readTaskFile(taskId: string, fileName: string): Promise<string | null> {
320
- this.logger.debug("Reading task file", { taskId, fileName });
321
- return await this.fileManager.readTaskFile(taskId, fileName);
322
- }
323
-
324
315
  async getTaskFiles(taskId: string): Promise<any[]> {
325
316
  this.logger.debug("Getting task files", { taskId });
326
317
  const files = await this.fileManager.getTaskFiles(taskId);
@@ -328,62 +319,6 @@ export class Agent {
328
319
  return files;
329
320
  }
330
321
 
331
- async writePlan(taskId: string, plan: string): Promise<void> {
332
- this.logger.info("Writing plan", { taskId, planLength: plan.length });
333
- await this.fileManager.writePlan(taskId, plan);
334
- }
335
-
336
- async readPlan(taskId: string): Promise<string | null> {
337
- this.logger.debug("Reading plan", { taskId });
338
- return await this.fileManager.readPlan(taskId);
339
- }
340
-
341
- // Git operations for task execution
342
- async createPlanningBranch(taskId: string): Promise<string> {
343
- this.logger.info("Creating planning branch", { taskId });
344
- const branchName = await this.gitManager.createTaskPlanningBranch(taskId);
345
- this.logger.debug("Planning branch created", { taskId, branchName });
346
- return branchName;
347
- }
348
-
349
- async commitPlan(taskId: string, taskTitle: string): Promise<string> {
350
- this.logger.info("Committing plan", { taskId, taskTitle });
351
- const commitHash = await this.gitManager.commitPlan(taskId, taskTitle);
352
- this.logger.debug("Plan committed", { taskId, commitHash });
353
- return commitHash;
354
- }
355
-
356
- async createImplementationBranch(
357
- taskId: string,
358
- planningBranchName?: string,
359
- ): Promise<string> {
360
- this.logger.info("Creating implementation branch", {
361
- taskId,
362
- fromBranch: planningBranchName,
363
- });
364
- const branchName = await this.gitManager.createTaskImplementationBranch(
365
- taskId,
366
- planningBranchName,
367
- );
368
- this.logger.debug("Implementation branch created", { taskId, branchName });
369
- return branchName;
370
- }
371
-
372
- async commitImplementation(
373
- taskId: string,
374
- taskTitle: string,
375
- planSummary?: string,
376
- ): Promise<string> {
377
- this.logger.info("Committing implementation", { taskId, taskTitle });
378
- const commitHash = await this.gitManager.commitImplementation(
379
- taskId,
380
- taskTitle,
381
- planSummary,
382
- );
383
- this.logger.debug("Implementation committed", { taskId, commitHash });
384
- return commitHash;
385
- }
386
-
387
322
  async createPullRequest(
388
323
  taskId: string,
389
324
  branchName: string,
@@ -424,7 +359,7 @@ Generated by PostHog Agent`;
424
359
  ): Promise<void> {
425
360
  this.logger.info("Attaching PR to task run", { taskId, prUrl, branchName });
426
361
 
427
- if (!this.posthogAPI || !this.progressReporter.runId) {
362
+ if (!this.posthogAPI || !this.currentRunId) {
428
363
  const error = new Error(
429
364
  "PostHog API not configured or no active run. Cannot attach PR to task.",
430
365
  );
@@ -439,14 +374,10 @@ Generated by PostHog Agent`;
439
374
  updates.branch = branchName;
440
375
  }
441
376
 
442
- await this.posthogAPI.updateTaskRun(
443
- taskId,
444
- this.progressReporter.runId,
445
- updates,
446
- );
377
+ await this.posthogAPI.updateTaskRun(taskId, this.currentRunId, updates);
447
378
  this.logger.debug("PR attached to task run", {
448
379
  taskId,
449
- runId: this.progressReporter.runId,
380
+ runId: this.currentRunId,
450
381
  prUrl,
451
382
  });
452
383
  }
@@ -454,7 +385,7 @@ Generated by PostHog Agent`;
454
385
  async updateTaskBranch(taskId: string, branchName: string): Promise<void> {
455
386
  this.logger.info("Updating task run branch", { taskId, branchName });
456
387
 
457
- if (!this.posthogAPI || !this.progressReporter.runId) {
388
+ if (!this.posthogAPI || !this.currentRunId) {
458
389
  const error = new Error(
459
390
  "PostHog API not configured or no active run. Cannot update branch.",
460
391
  );
@@ -462,12 +393,12 @@ Generated by PostHog Agent`;
462
393
  throw error;
463
394
  }
464
395
 
465
- await this.posthogAPI.updateTaskRun(taskId, this.progressReporter.runId, {
396
+ await this.posthogAPI.updateTaskRun(taskId, this.currentRunId, {
466
397
  branch: branchName,
467
398
  });
468
399
  this.logger.debug("Task run branch updated", {
469
400
  taskId,
470
- runId: this.progressReporter.runId,
401
+ runId: this.currentRunId,
471
402
  branchName,
472
403
  });
473
404
  }
@@ -496,6 +427,7 @@ Generated by PostHog Agent`;
496
427
  private async prepareTaskBranch(
497
428
  taskSlug: string,
498
429
  isCloudMode: boolean,
430
+ sendNotification: SendNotification,
499
431
  ): Promise<void> {
500
432
  if (await this.gitManager.hasChanges()) {
501
433
  throw new Error(
@@ -503,16 +435,28 @@ Generated by PostHog Agent`;
503
435
  );
504
436
  }
505
437
 
438
+ // If we're running in a worktree, we're already on the correct branch
439
+ // (the worktree was created with its own branch). Skip branch creation.
440
+ const isWorktree = await this.gitManager.isWorktree();
441
+ if (isWorktree) {
442
+ const currentBranch = await this.gitManager.getCurrentBranch();
443
+ this.logger.info("Running in worktree, using existing branch", {
444
+ branch: currentBranch,
445
+ });
446
+ await sendNotification(POSTHOG_NOTIFICATIONS.BRANCH_CREATED, {
447
+ branch: currentBranch,
448
+ });
449
+ return;
450
+ }
451
+
506
452
  await this.gitManager.resetToDefaultBranchIfNeeded();
507
453
 
508
454
  const existingBranch = await this.gitManager.getTaskBranch(taskSlug);
509
455
  if (!existingBranch) {
510
456
  const branchName = await this.gitManager.createTaskBranch(taskSlug);
511
- this.emitEvent(
512
- this.adapter.createStatusEvent("branch_created", {
513
- branch: branchName,
514
- }),
515
- );
457
+ await sendNotification(POSTHOG_NOTIFICATIONS.BRANCH_CREATED, {
458
+ branch: branchName,
459
+ });
516
460
 
517
461
  await this.gitManager.addAllPostHogFiles();
518
462
 
@@ -552,6 +496,7 @@ Generated by PostHog Agent`;
552
496
  private async ensurePullRequest(
553
497
  task: Task,
554
498
  stepResults: Record<string, any>,
499
+ sendNotification: SendNotification,
555
500
  ): Promise<void> {
556
501
  const latestRun = task.latest_run;
557
502
  const existingPr =
@@ -588,7 +533,7 @@ Generated by PostHog Agent`;
588
533
  prBody,
589
534
  );
590
535
 
591
- this.emitEvent(this.adapter.createStatusEvent("pr_created", { prUrl }));
536
+ await sendNotification(POSTHOG_NOTIFICATIONS.PR_CREATED, { prUrl });
592
537
 
593
538
  try {
594
539
  await this.attachPullRequestToTask(task.id, prUrl, branchName);
@@ -602,22 +547,6 @@ Generated by PostHog Agent`;
602
547
  });
603
548
  }
604
549
  }
605
-
606
- private emitEvent(event: any): void {
607
- if (this.debug && event.type !== "token") {
608
- // Log all events except tokens (too verbose)
609
- this.logger.debug("Emitting event", { type: event.type, ts: event.ts });
610
- }
611
- const persistPromise = this.progressReporter.recordEvent(event);
612
- if (persistPromise && typeof persistPromise.then === "function") {
613
- persistPromise.catch((error: Error) =>
614
- this.logger.debug("Failed to persist agent event", {
615
- message: error.message,
616
- }),
617
- );
618
- }
619
- this.onEvent?.(event);
620
- }
621
550
  }
622
551
 
623
552
  export type {
@@ -1,5 +1,6 @@
1
1
  import { promises as fs } from "node:fs";
2
2
  import { extname, join } from "node:path";
3
+ import z from "zod";
3
4
  import type { ResearchEvaluation, SupportingFile } from "./types.js";
4
5
  import { Logger } from "./utils/logger.js";
5
6
 
@@ -194,27 +195,35 @@ export class PostHogFileManager {
194
195
  }
195
196
  }
196
197
 
197
- async writeTodos(taskId: string, data: any): Promise<void> {
198
+ async writeTodos(taskId: string, data: unknown): Promise<void> {
199
+ const todos = z.object({
200
+ metadata: z.object({
201
+ total: z.number(),
202
+ completed: z.number(),
203
+ }),
204
+ });
205
+
206
+ const validatedData = todos.parse(data);
198
207
  this.logger.debug("Writing todos", {
199
208
  taskId,
200
- total: data.metadata?.total ?? 0,
201
- completed: data.metadata?.completed ?? 0,
209
+ total: validatedData.metadata?.total ?? 0,
210
+ completed: validatedData.metadata?.completed ?? 0,
202
211
  });
203
212
 
204
213
  await this.writeTaskFile(taskId, {
205
214
  name: "todos.json",
206
- content: JSON.stringify(data, null, 2),
215
+ content: JSON.stringify(validatedData, null, 2),
207
216
  type: "artifact",
208
217
  });
209
218
 
210
219
  this.logger.info("Todos file written", {
211
220
  taskId,
212
- total: data.metadata?.total ?? 0,
213
- completed: data.metadata?.completed ?? 0,
221
+ total: validatedData.metadata?.total ?? 0,
222
+ completed: validatedData.metadata?.completed ?? 0,
214
223
  });
215
224
  }
216
225
 
217
- async readTodos(taskId: string): Promise<any | null> {
226
+ async readTodos(taskId: string): Promise<unknown | null> {
218
227
  try {
219
228
  const content = await this.readTaskFile(taskId, "todos.json");
220
229
  return content ? JSON.parse(content) : null;
@@ -572,4 +572,24 @@ Generated by PostHog Agent`;
572
572
  message,
573
573
  });
574
574
  }
575
+
576
+ async isWorktree(): Promise<boolean> {
577
+ try {
578
+ // In a worktree, .git is a file pointing to the main repo's .git/worktrees/{name}
579
+ // In a normal repo, .git is a directory
580
+ const result = await this.runGitCommand(
581
+ "rev-parse --git-common-dir --git-dir",
582
+ );
583
+ const lines = result.split("\n");
584
+ if (lines.length >= 2) {
585
+ const commonDir = lines[0].trim();
586
+ const gitDir = lines[1].trim();
587
+ // If they're different, we're in a worktree
588
+ return commonDir !== gitDir;
589
+ }
590
+ return false;
591
+ } catch {
592
+ return false;
593
+ }
594
+ }
575
595
  }