@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.
- package/dist/index.d.ts +1274 -20
- package/dist/index.js +7327 -11
- package/dist/index.js.map +1 -1
- package/package.json +6 -12
- package/src/agent.ts +42 -5
- package/src/types.ts +1 -1
- package/src/worktree-manager.ts +45 -0
- package/dist/_virtual/_commonjsHelpers.js +0 -6
- package/dist/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/_virtual/_tslib.js +0 -74
- package/dist/_virtual/_tslib.js.map +0 -1
- package/dist/_virtual/additionalItems.js +0 -4
- package/dist/_virtual/additionalItems.js.map +0 -1
- package/dist/_virtual/additionalProperties.js +0 -4
- package/dist/_virtual/additionalProperties.js.map +0 -1
- package/dist/_virtual/ajv.js +0 -4
- package/dist/_virtual/ajv.js.map +0 -1
- package/dist/_virtual/allOf.js +0 -4
- package/dist/_virtual/allOf.js.map +0 -1
- package/dist/_virtual/anyOf.js +0 -4
- package/dist/_virtual/anyOf.js.map +0 -1
- package/dist/_virtual/applicability.js +0 -4
- package/dist/_virtual/applicability.js.map +0 -1
- package/dist/_virtual/boolSchema.js +0 -4
- package/dist/_virtual/boolSchema.js.map +0 -1
- package/dist/_virtual/code.js +0 -4
- package/dist/_virtual/code.js.map +0 -1
- package/dist/_virtual/code2.js +0 -4
- package/dist/_virtual/code2.js.map +0 -1
- package/dist/_virtual/const.js +0 -4
- package/dist/_virtual/const.js.map +0 -1
- package/dist/_virtual/contains.js +0 -4
- package/dist/_virtual/contains.js.map +0 -1
- package/dist/_virtual/core.js +0 -4
- package/dist/_virtual/core.js.map +0 -1
- package/dist/_virtual/dataType.js +0 -4
- package/dist/_virtual/dataType.js.map +0 -1
- package/dist/_virtual/defaults.js +0 -4
- package/dist/_virtual/defaults.js.map +0 -1
- package/dist/_virtual/dependencies.js +0 -4
- package/dist/_virtual/dependencies.js.map +0 -1
- package/dist/_virtual/draft7.js +0 -4
- package/dist/_virtual/draft7.js.map +0 -1
- package/dist/_virtual/enum.js +0 -4
- package/dist/_virtual/enum.js.map +0 -1
- package/dist/_virtual/equal.js +0 -4
- package/dist/_virtual/equal.js.map +0 -1
- package/dist/_virtual/errors.js +0 -4
- package/dist/_virtual/errors.js.map +0 -1
- package/dist/_virtual/format.js +0 -4
- package/dist/_virtual/format.js.map +0 -1
- package/dist/_virtual/formats.js +0 -4
- package/dist/_virtual/formats.js.map +0 -1
- package/dist/_virtual/id.js +0 -4
- package/dist/_virtual/id.js.map +0 -1
- package/dist/_virtual/if.js +0 -4
- package/dist/_virtual/if.js.map +0 -1
- package/dist/_virtual/index.js +0 -4
- package/dist/_virtual/index.js.map +0 -1
- package/dist/_virtual/index10.js +0 -4
- package/dist/_virtual/index10.js.map +0 -1
- package/dist/_virtual/index11.js +0 -4
- package/dist/_virtual/index11.js.map +0 -1
- package/dist/_virtual/index2.js +0 -4
- package/dist/_virtual/index2.js.map +0 -1
- package/dist/_virtual/index3.js +0 -4
- package/dist/_virtual/index3.js.map +0 -1
- package/dist/_virtual/index4.js +0 -4
- package/dist/_virtual/index4.js.map +0 -1
- package/dist/_virtual/index5.js +0 -4
- package/dist/_virtual/index5.js.map +0 -1
- package/dist/_virtual/index6.js +0 -4
- package/dist/_virtual/index6.js.map +0 -1
- package/dist/_virtual/index7.js +0 -4
- package/dist/_virtual/index7.js.map +0 -1
- package/dist/_virtual/index8.js +0 -4
- package/dist/_virtual/index8.js.map +0 -1
- package/dist/_virtual/index9.js +0 -4
- package/dist/_virtual/index9.js.map +0 -1
- package/dist/_virtual/items.js +0 -4
- package/dist/_virtual/items.js.map +0 -1
- package/dist/_virtual/items2020.js +0 -4
- package/dist/_virtual/items2020.js.map +0 -1
- package/dist/_virtual/keyword.js +0 -4
- package/dist/_virtual/keyword.js.map +0 -1
- package/dist/_virtual/limit.js +0 -4
- package/dist/_virtual/limit.js.map +0 -1
- package/dist/_virtual/limitItems.js +0 -4
- package/dist/_virtual/limitItems.js.map +0 -1
- package/dist/_virtual/limitLength.js +0 -4
- package/dist/_virtual/limitLength.js.map +0 -1
- package/dist/_virtual/limitNumber.js +0 -4
- package/dist/_virtual/limitNumber.js.map +0 -1
- package/dist/_virtual/limitProperties.js +0 -4
- package/dist/_virtual/limitProperties.js.map +0 -1
- package/dist/_virtual/metadata.js +0 -4
- package/dist/_virtual/metadata.js.map +0 -1
- package/dist/_virtual/multipleOf.js +0 -4
- package/dist/_virtual/multipleOf.js.map +0 -1
- package/dist/_virtual/names.js +0 -4
- package/dist/_virtual/names.js.map +0 -1
- package/dist/_virtual/not.js +0 -4
- package/dist/_virtual/not.js.map +0 -1
- package/dist/_virtual/oneOf.js +0 -4
- package/dist/_virtual/oneOf.js.map +0 -1
- package/dist/_virtual/pattern.js +0 -4
- package/dist/_virtual/pattern.js.map +0 -1
- package/dist/_virtual/patternProperties.js +0 -4
- package/dist/_virtual/patternProperties.js.map +0 -1
- package/dist/_virtual/prefixItems.js +0 -4
- package/dist/_virtual/prefixItems.js.map +0 -1
- package/dist/_virtual/properties.js +0 -4
- package/dist/_virtual/properties.js.map +0 -1
- package/dist/_virtual/propertyNames.js +0 -4
- package/dist/_virtual/propertyNames.js.map +0 -1
- package/dist/_virtual/ref.js +0 -4
- package/dist/_virtual/ref.js.map +0 -1
- package/dist/_virtual/ref_error.js +0 -4
- package/dist/_virtual/ref_error.js.map +0 -1
- package/dist/_virtual/required.js +0 -4
- package/dist/_virtual/required.js.map +0 -1
- package/dist/_virtual/resolve.js +0 -4
- package/dist/_virtual/resolve.js.map +0 -1
- package/dist/_virtual/rules.js +0 -4
- package/dist/_virtual/rules.js.map +0 -1
- package/dist/_virtual/scope.js +0 -4
- package/dist/_virtual/scope.js.map +0 -1
- package/dist/_virtual/subschema.js +0 -4
- package/dist/_virtual/subschema.js.map +0 -1
- package/dist/_virtual/thenElse.js +0 -4
- package/dist/_virtual/thenElse.js.map +0 -1
- package/dist/_virtual/types.js +0 -4
- package/dist/_virtual/types.js.map +0 -1
- package/dist/_virtual/ucs2length.js +0 -4
- package/dist/_virtual/ucs2length.js.map +0 -1
- package/dist/_virtual/uniqueItems.js +0 -4
- package/dist/_virtual/uniqueItems.js.map +0 -1
- package/dist/_virtual/uri.js +0 -4
- package/dist/_virtual/uri.js.map +0 -1
- package/dist/_virtual/util.js +0 -4
- package/dist/_virtual/util.js.map +0 -1
- package/dist/_virtual/validation_error.js +0 -4
- package/dist/_virtual/validation_error.js.map +0 -1
- package/dist/example-client.d.ts +0 -3
- package/dist/example-client.d.ts.map +0 -1
- package/dist/example.d.ts +0 -3
- package/dist/example.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/node_modules/@agentclientprotocol/sdk/dist/acp.js +0 -891
- package/dist/node_modules/@agentclientprotocol/sdk/dist/acp.js.map +0 -1
- package/dist/node_modules/@agentclientprotocol/sdk/dist/schema.js +0 -876
- package/dist/node_modules/@agentclientprotocol/sdk/dist/schema.js.map +0 -1
- package/dist/node_modules/@agentclientprotocol/sdk/dist/stream.js +0 -66
- package/dist/node_modules/@agentclientprotocol/sdk/dist/stream.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +0 -23
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +0 -331
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +0 -717
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +0 -221
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +0 -56
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +0 -440
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js +0 -94
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +0 -1610
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +0 -91
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/ZodError.js +0 -133
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/ZodError.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/errors.js +0 -9
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/errors.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/errorUtil.js +0 -9
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/errorUtil.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/parseUtil.js +0 -112
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/parseUtil.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/util.js +0 -136
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/util.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/locales/en.js +0 -112
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/locales/en.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/types.js +0 -3297
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/types.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/errors.js +0 -44
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/errors.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/iso.js +0 -36
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/iso.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/parse.js +0 -10
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/parse.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/schemas.js +0 -657
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/schemas.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/api.js +0 -449
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/api.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/checks.js +0 -413
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/checks.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/core.js +0 -57
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/core.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/doc.js +0 -38
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/doc.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/errors.js +0 -86
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/errors.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/parse.js +0 -61
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/parse.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/regexes.js +0 -80
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/regexes.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/registries.js +0 -52
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/registries.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/schemas.js +0 -1307
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/schemas.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/to-json-schema.js +0 -842
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/to-json-schema.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/util.js +0 -335
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/util.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/versions.js +0 -8
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/versions.js.map +0 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/mini/schemas.js +0 -51
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/mini/schemas.js.map +0 -1
- package/dist/node_modules/ajv/dist/ajv.js +0 -69
- package/dist/node_modules/ajv/dist/ajv.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/codegen/code.js +0 -169
- package/dist/node_modules/ajv/dist/compile/codegen/code.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/codegen/index.js +0 -712
- package/dist/node_modules/ajv/dist/compile/codegen/index.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/codegen/scope.js +0 -157
- package/dist/node_modules/ajv/dist/compile/codegen/scope.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/errors.js +0 -140
- package/dist/node_modules/ajv/dist/compile/errors.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/index.js +0 -253
- package/dist/node_modules/ajv/dist/compile/index.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/names.js +0 -40
- package/dist/node_modules/ajv/dist/compile/names.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/ref_error.js +0 -25
- package/dist/node_modules/ajv/dist/compile/ref_error.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/resolve.js +0 -162
- package/dist/node_modules/ajv/dist/compile/resolve.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/rules.js +0 -29
- package/dist/node_modules/ajv/dist/compile/rules.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/util.js +0 -183
- package/dist/node_modules/ajv/dist/compile/util.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/validate/applicability.js +0 -30
- package/dist/node_modules/ajv/dist/compile/validate/applicability.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js +0 -64
- package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/validate/dataType.js +0 -213
- package/dist/node_modules/ajv/dist/compile/validate/dataType.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/validate/defaults.js +0 -49
- package/dist/node_modules/ajv/dist/compile/validate/defaults.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/validate/index.js +0 -544
- package/dist/node_modules/ajv/dist/compile/validate/index.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/validate/keyword.js +0 -139
- package/dist/node_modules/ajv/dist/compile/validate/keyword.js.map +0 -1
- package/dist/node_modules/ajv/dist/compile/validate/subschema.js +0 -95
- package/dist/node_modules/ajv/dist/compile/validate/subschema.js.map +0 -1
- package/dist/node_modules/ajv/dist/core.js +0 -639
- package/dist/node_modules/ajv/dist/core.js.map +0 -1
- package/dist/node_modules/ajv/dist/refs/data.json.js +0 -31
- package/dist/node_modules/ajv/dist/refs/data.json.js.map +0 -1
- package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +0 -254
- package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +0 -1
- package/dist/node_modules/ajv/dist/runtime/equal.js +0 -9
- package/dist/node_modules/ajv/dist/runtime/equal.js.map +0 -1
- package/dist/node_modules/ajv/dist/runtime/ucs2length.js +0 -25
- package/dist/node_modules/ajv/dist/runtime/ucs2length.js.map +0 -1
- package/dist/node_modules/ajv/dist/runtime/uri.js +0 -8
- package/dist/node_modules/ajv/dist/runtime/uri.js.map +0 -1
- package/dist/node_modules/ajv/dist/runtime/validation_error.js +0 -22
- package/dist/node_modules/ajv/dist/runtime/validation_error.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +0 -53
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +0 -112
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js +0 -26
- package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +0 -14
- package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js +0 -99
- package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +0 -93
- package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js +0 -70
- package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +0 -77
- package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js +0 -57
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js +0 -37
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js +0 -29
- package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +0 -64
- package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +0 -80
- package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +0 -15
- package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js +0 -61
- package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +0 -42
- package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +0 -16
- package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/code.js +0 -146
- package/dist/node_modules/ajv/dist/vocabularies/code.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/core/id.js +0 -11
- package/dist/node_modules/ajv/dist/vocabularies/core/id.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/core/index.js +0 -21
- package/dist/node_modules/ajv/dist/vocabularies/core/index.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/core/ref.js +0 -131
- package/dist/node_modules/ajv/dist/vocabularies/core/ref.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js +0 -113
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js +0 -12
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/draft7.js +0 -28
- package/dist/node_modules/ajv/dist/vocabularies/draft7.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/format/format.js +0 -94
- package/dist/node_modules/ajv/dist/vocabularies/format/format.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/format/index.js +0 -9
- package/dist/node_modules/ajv/dist/vocabularies/format/index.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/metadata.js +0 -21
- package/dist/node_modules/ajv/dist/vocabularies/metadata.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/const.js +0 -31
- package/dist/node_modules/ajv/dist/vocabularies/validation/const.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js +0 -54
- package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +0 -54
- package/dist/node_modules/ajv/dist/vocabularies/validation/index.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js +0 -26
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js +0 -33
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +0 -29
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +0 -26
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +0 -28
- package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js +0 -27
- package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/required.js +0 -84
- package/dist/node_modules/ajv/dist/vocabularies/validation/required.js.map +0 -1
- package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +0 -72
- package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +0 -1
- package/dist/node_modules/ajv-formats/dist/formats.js +0 -212
- package/dist/node_modules/ajv-formats/dist/formats.js.map +0 -1
- package/dist/node_modules/ajv-formats/dist/index.js +0 -52
- package/dist/node_modules/ajv-formats/dist/index.js.map +0 -1
- package/dist/node_modules/ajv-formats/dist/limit.js +0 -75
- package/dist/node_modules/ajv-formats/dist/limit.js.map +0 -1
- package/dist/node_modules/diff/libesm/diff/base.js +0 -256
- package/dist/node_modules/diff/libesm/diff/base.js.map +0 -1
- package/dist/node_modules/diff/libesm/diff/line.js +0 -64
- package/dist/node_modules/diff/libesm/diff/line.js.map +0 -1
- package/dist/node_modules/diff/libesm/patch/create.js +0 -185
- package/dist/node_modules/diff/libesm/patch/create.js.map +0 -1
- package/dist/node_modules/fast-deep-equal/index.js +0 -47
- package/dist/node_modules/fast-deep-equal/index.js.map +0 -1
- package/dist/node_modules/fast-uri/index.js +0 -347
- package/dist/node_modules/fast-uri/index.js.map +0 -1
- package/dist/node_modules/fast-uri/lib/schemes.js +0 -255
- package/dist/node_modules/fast-uri/lib/schemes.js.map +0 -1
- package/dist/node_modules/fast-uri/lib/utils.js +0 -334
- package/dist/node_modules/fast-uri/lib/utils.js.map +0 -1
- package/dist/node_modules/json-schema-traverse/index.js +0 -98
- package/dist/node_modules/json-schema-traverse/index.js.map +0 -1
- package/dist/node_modules/uuid/dist/rng.js +0 -14
- package/dist/node_modules/uuid/dist/rng.js.map +0 -1
- package/dist/node_modules/uuid/dist/stringify.js +0 -29
- package/dist/node_modules/uuid/dist/stringify.js.map +0 -1
- package/dist/node_modules/uuid/dist/v7.js +0 -65
- package/dist/node_modules/uuid/dist/v7.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js +0 -37
- package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js +0 -26
- package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +0 -17
- package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +0 -11
- package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js +0 -66
- package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +0 -21
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +0 -30
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +0 -53
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +0 -50
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +0 -11
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +0 -11
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +0 -9
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +0 -56
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +0 -24
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +0 -30
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +0 -19
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +0 -15
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +0 -13
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +0 -37
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +0 -56
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +0 -76
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +0 -25
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +0 -24
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +0 -65
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +0 -24
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +0 -350
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +0 -36
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +0 -10
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +0 -84
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +0 -8
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js +0 -109
- package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +0 -90
- package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +0 -1
- package/dist/node_modules/zod-to-json-schema/node_modules/zod/v3/types.js +0 -42
- package/dist/node_modules/zod-to-json-schema/node_modules/zod/v3/types.js.map +0 -1
- package/dist/package.json.js +0 -8
- package/dist/package.json.js.map +0 -1
- package/dist/src/acp-extensions.d.ts +0 -91
- package/dist/src/acp-extensions.d.ts.map +0 -1
- package/dist/src/acp-extensions.js +0 -38
- package/dist/src/acp-extensions.js.map +0 -1
- package/dist/src/adapters/claude/claude.d.ts +0 -136
- package/dist/src/adapters/claude/claude.d.ts.map +0 -1
- package/dist/src/adapters/claude/claude.js +0 -1128
- package/dist/src/adapters/claude/claude.js.map +0 -1
- package/dist/src/adapters/claude/mcp-server.d.ts +0 -30
- package/dist/src/adapters/claude/mcp-server.d.ts.map +0 -1
- package/dist/src/adapters/claude/mcp-server.js +0 -668
- package/dist/src/adapters/claude/mcp-server.js.map +0 -1
- package/dist/src/adapters/claude/tools.d.ts +0 -35
- package/dist/src/adapters/claude/tools.d.ts.map +0 -1
- package/dist/src/adapters/claude/tools.js +0 -473
- package/dist/src/adapters/claude/tools.js.map +0 -1
- package/dist/src/adapters/claude/utils.d.ts +0 -48
- package/dist/src/adapters/claude/utils.d.ts.map +0 -1
- package/dist/src/adapters/claude/utils.js +0 -158
- package/dist/src/adapters/claude/utils.js.map +0 -1
- package/dist/src/agent.d.ts +0 -58
- package/dist/src/agent.d.ts.map +0 -1
- package/dist/src/agent.js +0 -576
- package/dist/src/agent.js.map +0 -1
- package/dist/src/agents/execution.d.ts +0 -2
- package/dist/src/agents/execution.d.ts.map +0 -1
- package/dist/src/agents/execution.js +0 -40
- package/dist/src/agents/execution.js.map +0 -1
- package/dist/src/agents/planning.d.ts +0 -2
- package/dist/src/agents/planning.d.ts.map +0 -1
- package/dist/src/agents/planning.js +0 -63
- package/dist/src/agents/planning.js.map +0 -1
- package/dist/src/agents/research.d.ts +0 -2
- package/dist/src/agents/research.d.ts.map +0 -1
- package/dist/src/agents/research.js +0 -163
- package/dist/src/agents/research.js.map +0 -1
- package/dist/src/file-manager.d.ts +0 -43
- package/dist/src/file-manager.d.ts.map +0 -1
- package/dist/src/file-manager.js +0 -266
- package/dist/src/file-manager.js.map +0 -1
- package/dist/src/git-manager.d.ts +0 -79
- package/dist/src/git-manager.d.ts.map +0 -1
- package/dist/src/git-manager.js +0 -454
- package/dist/src/git-manager.js.map +0 -1
- package/dist/src/posthog-api.d.ts +0 -48
- package/dist/src/posthog-api.d.ts.map +0 -1
- package/dist/src/posthog-api.js +0 -260
- package/dist/src/posthog-api.js.map +0 -1
- package/dist/src/prompt-builder.d.ts +0 -49
- package/dist/src/prompt-builder.d.ts.map +0 -1
- package/dist/src/prompt-builder.js +0 -397
- package/dist/src/prompt-builder.js.map +0 -1
- package/dist/src/schemas.d.ts +0 -980
- package/dist/src/schemas.d.ts.map +0 -1
- package/dist/src/schemas.js +0 -196
- package/dist/src/schemas.js.map +0 -1
- package/dist/src/session-store.d.ts +0 -58
- package/dist/src/session-store.d.ts.map +0 -1
- package/dist/src/session-store.js +0 -206
- package/dist/src/session-store.js.map +0 -1
- package/dist/src/task-manager.d.ts +0 -25
- package/dist/src/task-manager.d.ts.map +0 -1
- package/dist/src/task-manager.js +0 -123
- package/dist/src/task-manager.js.map +0 -1
- package/dist/src/template-manager.d.ts +0 -30
- package/dist/src/template-manager.d.ts.map +0 -1
- package/dist/src/template-manager.js +0 -152
- package/dist/src/template-manager.js.map +0 -1
- package/dist/src/todo-manager.d.ts +0 -29
- package/dist/src/todo-manager.d.ts.map +0 -1
- package/dist/src/todo-manager.js +0 -135
- package/dist/src/todo-manager.js.map +0 -1
- package/dist/src/tools/registry.d.ts +0 -25
- package/dist/src/tools/registry.d.ts.map +0 -1
- package/dist/src/tools/registry.js +0 -120
- package/dist/src/tools/registry.js.map +0 -1
- package/dist/src/tools/types.d.ts +0 -80
- package/dist/src/tools/types.d.ts.map +0 -1
- package/dist/src/types.d.ts +0 -193
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -11
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils/logger.d.ts +0 -37
- package/dist/src/utils/logger.d.ts.map +0 -1
- package/dist/src/utils/logger.js +0 -83
- package/dist/src/utils/logger.js.map +0 -1
- package/dist/src/utils/tapped-stream.d.ts +0 -17
- package/dist/src/utils/tapped-stream.d.ts.map +0 -1
- package/dist/src/utils/tapped-stream.js +0 -45
- package/dist/src/utils/tapped-stream.js.map +0 -1
- package/dist/src/workflow/config.d.ts +0 -3
- package/dist/src/workflow/config.d.ts.map +0 -1
- package/dist/src/workflow/config.js +0 -54
- package/dist/src/workflow/config.js.map +0 -1
- package/dist/src/workflow/steps/build.d.ts +0 -3
- package/dist/src/workflow/steps/build.d.ts.map +0 -1
- package/dist/src/workflow/steps/build.js +0 -108
- package/dist/src/workflow/steps/build.js.map +0 -1
- package/dist/src/workflow/steps/finalize.d.ts +0 -3
- package/dist/src/workflow/steps/finalize.d.ts.map +0 -1
- package/dist/src/workflow/steps/finalize.js +0 -188
- package/dist/src/workflow/steps/finalize.js.map +0 -1
- package/dist/src/workflow/steps/plan.d.ts +0 -3
- package/dist/src/workflow/steps/plan.d.ts.map +0 -1
- package/dist/src/workflow/steps/plan.js +0 -136
- package/dist/src/workflow/steps/plan.js.map +0 -1
- package/dist/src/workflow/steps/research.d.ts +0 -3
- package/dist/src/workflow/steps/research.d.ts.map +0 -1
- package/dist/src/workflow/steps/research.js +0 -189
- package/dist/src/workflow/steps/research.js.map +0 -1
- package/dist/src/workflow/types.d.ts +0 -51
- package/dist/src/workflow/types.d.ts.map +0 -1
- package/dist/src/workflow/utils.d.ts +0 -12
- package/dist/src/workflow/utils.d.ts.map +0 -1
- package/dist/src/workflow/utils.js +0 -41
- package/dist/src/workflow/utils.js.map +0 -1
- package/dist/src/worktree-manager.d.ts +0 -39
- package/dist/src/worktree-manager.d.ts.map +0 -1
- package/dist/src/worktree-manager.js +0 -808
- 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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"}
|
package/dist/src/git-manager.js
DELETED
|
@@ -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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"}
|