@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.
- package/LICENSE +33 -0
- package/dist/_virtual/_commonjsHelpers.js +6 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/_virtual/additionalItems.js +4 -0
- package/dist/_virtual/additionalItems.js.map +1 -0
- package/dist/_virtual/additionalProperties.js +4 -0
- package/dist/_virtual/additionalProperties.js.map +1 -0
- package/dist/_virtual/ajv.js +4 -0
- package/dist/_virtual/ajv.js.map +1 -0
- package/dist/_virtual/allOf.js +4 -0
- package/dist/_virtual/allOf.js.map +1 -0
- package/dist/_virtual/anyOf.js +4 -0
- package/dist/_virtual/anyOf.js.map +1 -0
- package/dist/_virtual/applicability.js +4 -0
- package/dist/_virtual/applicability.js.map +1 -0
- package/dist/_virtual/boolSchema.js +4 -0
- package/dist/_virtual/boolSchema.js.map +1 -0
- package/dist/_virtual/code.js +4 -0
- package/dist/_virtual/code.js.map +1 -0
- package/dist/_virtual/code2.js +4 -0
- package/dist/_virtual/code2.js.map +1 -0
- package/dist/_virtual/const.js +4 -0
- package/dist/_virtual/const.js.map +1 -0
- package/dist/_virtual/contains.js +4 -0
- package/dist/_virtual/contains.js.map +1 -0
- package/dist/_virtual/core.js +4 -0
- package/dist/_virtual/core.js.map +1 -0
- package/dist/_virtual/dataType.js +4 -0
- package/dist/_virtual/dataType.js.map +1 -0
- package/dist/_virtual/defaults.js +4 -0
- package/dist/_virtual/defaults.js.map +1 -0
- package/dist/_virtual/dependencies.js +4 -0
- package/dist/_virtual/dependencies.js.map +1 -0
- package/dist/_virtual/draft7.js +4 -0
- package/dist/_virtual/draft7.js.map +1 -0
- package/dist/_virtual/enum.js +4 -0
- package/dist/_virtual/enum.js.map +1 -0
- package/dist/_virtual/equal.js +4 -0
- package/dist/_virtual/equal.js.map +1 -0
- package/dist/_virtual/errors.js +4 -0
- package/dist/_virtual/errors.js.map +1 -0
- package/dist/_virtual/format.js +4 -0
- package/dist/_virtual/format.js.map +1 -0
- package/dist/_virtual/formats.js +4 -0
- package/dist/_virtual/formats.js.map +1 -0
- package/dist/_virtual/id.js +4 -0
- package/dist/_virtual/id.js.map +1 -0
- package/dist/_virtual/if.js +4 -0
- package/dist/_virtual/if.js.map +1 -0
- package/dist/_virtual/index.js +4 -0
- package/dist/_virtual/index.js.map +1 -0
- package/dist/_virtual/index10.js +4 -0
- package/dist/_virtual/index10.js.map +1 -0
- package/dist/_virtual/index11.js +4 -0
- package/dist/_virtual/index11.js.map +1 -0
- package/dist/_virtual/index2.js +4 -0
- package/dist/_virtual/index2.js.map +1 -0
- package/dist/_virtual/index3.js +4 -0
- package/dist/_virtual/index3.js.map +1 -0
- package/dist/_virtual/index4.js +4 -0
- package/dist/_virtual/index4.js.map +1 -0
- package/dist/_virtual/index5.js +4 -0
- package/dist/_virtual/index5.js.map +1 -0
- package/dist/_virtual/index6.js +4 -0
- package/dist/_virtual/index6.js.map +1 -0
- package/dist/_virtual/index7.js +4 -0
- package/dist/_virtual/index7.js.map +1 -0
- package/dist/_virtual/index8.js +4 -0
- package/dist/_virtual/index8.js.map +1 -0
- package/dist/_virtual/index9.js +4 -0
- package/dist/_virtual/index9.js.map +1 -0
- package/dist/_virtual/items.js +4 -0
- package/dist/_virtual/items.js.map +1 -0
- package/dist/_virtual/items2020.js +4 -0
- package/dist/_virtual/items2020.js.map +1 -0
- package/dist/_virtual/keyword.js +4 -0
- package/dist/_virtual/keyword.js.map +1 -0
- package/dist/_virtual/limit.js +4 -0
- package/dist/_virtual/limit.js.map +1 -0
- package/dist/_virtual/limitItems.js +4 -0
- package/dist/_virtual/limitItems.js.map +1 -0
- package/dist/_virtual/limitLength.js +4 -0
- package/dist/_virtual/limitLength.js.map +1 -0
- package/dist/_virtual/limitNumber.js +4 -0
- package/dist/_virtual/limitNumber.js.map +1 -0
- package/dist/_virtual/limitProperties.js +4 -0
- package/dist/_virtual/limitProperties.js.map +1 -0
- package/dist/_virtual/metadata.js +4 -0
- package/dist/_virtual/metadata.js.map +1 -0
- package/dist/_virtual/multipleOf.js +4 -0
- package/dist/_virtual/multipleOf.js.map +1 -0
- package/dist/_virtual/names.js +4 -0
- package/dist/_virtual/names.js.map +1 -0
- package/dist/_virtual/not.js +4 -0
- package/dist/_virtual/not.js.map +1 -0
- package/dist/_virtual/oneOf.js +4 -0
- package/dist/_virtual/oneOf.js.map +1 -0
- package/dist/_virtual/pattern.js +4 -0
- package/dist/_virtual/pattern.js.map +1 -0
- package/dist/_virtual/patternProperties.js +4 -0
- package/dist/_virtual/patternProperties.js.map +1 -0
- package/dist/_virtual/prefixItems.js +4 -0
- package/dist/_virtual/prefixItems.js.map +1 -0
- package/dist/_virtual/properties.js +4 -0
- package/dist/_virtual/properties.js.map +1 -0
- package/dist/_virtual/propertyNames.js +4 -0
- package/dist/_virtual/propertyNames.js.map +1 -0
- package/dist/_virtual/ref.js +4 -0
- package/dist/_virtual/ref.js.map +1 -0
- package/dist/_virtual/ref_error.js +4 -0
- package/dist/_virtual/ref_error.js.map +1 -0
- package/dist/_virtual/required.js +4 -0
- package/dist/_virtual/required.js.map +1 -0
- package/dist/_virtual/resolve.js +4 -0
- package/dist/_virtual/resolve.js.map +1 -0
- package/dist/_virtual/rules.js +4 -0
- package/dist/_virtual/rules.js.map +1 -0
- package/dist/_virtual/scope.js +4 -0
- package/dist/_virtual/scope.js.map +1 -0
- package/dist/_virtual/subschema.js +4 -0
- package/dist/_virtual/subschema.js.map +1 -0
- package/dist/_virtual/thenElse.js +4 -0
- package/dist/_virtual/thenElse.js.map +1 -0
- package/dist/_virtual/types.js +4 -0
- package/dist/_virtual/types.js.map +1 -0
- package/dist/_virtual/ucs2length.js +4 -0
- package/dist/_virtual/ucs2length.js.map +1 -0
- package/dist/_virtual/uniqueItems.js +4 -0
- package/dist/_virtual/uniqueItems.js.map +1 -0
- package/dist/_virtual/uri.js +4 -0
- package/dist/_virtual/uri.js.map +1 -0
- package/dist/_virtual/util.js +4 -0
- package/dist/_virtual/util.js.map +1 -0
- package/dist/_virtual/validation_error.js +4 -0
- package/dist/_virtual/validation_error.js.map +1 -0
- package/dist/claude-cli/cli.js +2294 -2146
- package/dist/example-client.d.ts +3 -0
- package/dist/example-client.d.ts.map +1 -0
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/node_modules/@agentclientprotocol/sdk/dist/acp.js +610 -0
- package/dist/node_modules/@agentclientprotocol/sdk/dist/acp.js.map +1 -0
- package/dist/node_modules/@agentclientprotocol/sdk/dist/schema.js +875 -0
- package/dist/node_modules/@agentclientprotocol/sdk/dist/schema.js.map +1 -0
- package/dist/node_modules/@agentclientprotocol/sdk/dist/stream.js +66 -0
- package/dist/node_modules/@agentclientprotocol/sdk/dist/stream.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +23 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +331 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +717 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +221 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +56 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +440 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js +94 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1610 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +91 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/ZodError.js +133 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/ZodError.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/errors.js +9 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/errors.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/errorUtil.js +9 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/parseUtil.js +112 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/util.js +136 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/helpers/util.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/locales/en.js +112 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/locales/en.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/types.js +3297 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v3/types.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/errors.js +44 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/errors.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/iso.js +36 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/iso.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/parse.js +10 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/parse.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/schemas.js +657 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/classic/schemas.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/api.js +449 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/api.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/checks.js +413 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/checks.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/core.js +57 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/core.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/doc.js +38 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/doc.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/errors.js +86 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/errors.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/parse.js +61 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/parse.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/regexes.js +80 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/regexes.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/registries.js +52 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/registries.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/schemas.js +1307 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/schemas.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/to-json-schema.js +842 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/to-json-schema.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/util.js +335 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/util.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/versions.js +8 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/core/versions.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/mini/schemas.js +51 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/zod/v4/mini/schemas.js.map +1 -0
- package/dist/node_modules/ajv/dist/ajv.js +69 -0
- package/dist/node_modules/ajv/dist/ajv.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/codegen/code.js +169 -0
- package/dist/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/codegen/index.js +712 -0
- package/dist/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/codegen/scope.js +157 -0
- package/dist/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/errors.js +140 -0
- package/dist/node_modules/ajv/dist/compile/errors.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/index.js +253 -0
- package/dist/node_modules/ajv/dist/compile/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/names.js +40 -0
- package/dist/node_modules/ajv/dist/compile/names.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/ref_error.js +25 -0
- package/dist/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/resolve.js +162 -0
- package/dist/node_modules/ajv/dist/compile/resolve.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/rules.js +29 -0
- package/dist/node_modules/ajv/dist/compile/rules.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/util.js +183 -0
- package/dist/node_modules/ajv/dist/compile/util.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/applicability.js +30 -0
- package/dist/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js +64 -0
- package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/dataType.js +213 -0
- package/dist/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/defaults.js +49 -0
- package/dist/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/index.js +544 -0
- package/dist/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/keyword.js +139 -0
- package/dist/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/subschema.js +95 -0
- package/dist/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
- package/dist/node_modules/ajv/dist/core.js +639 -0
- package/dist/node_modules/ajv/dist/core.js.map +1 -0
- package/dist/node_modules/ajv/dist/refs/data.json.js +31 -0
- package/dist/node_modules/ajv/dist/refs/data.json.js.map +1 -0
- package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +254 -0
- package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +1 -0
- package/dist/node_modules/ajv/dist/runtime/equal.js +9 -0
- package/dist/node_modules/ajv/dist/runtime/equal.js.map +1 -0
- package/dist/node_modules/ajv/dist/runtime/ucs2length.js +25 -0
- package/dist/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
- package/dist/node_modules/ajv/dist/runtime/uri.js +8 -0
- package/dist/node_modules/ajv/dist/runtime/uri.js.map +1 -0
- package/dist/node_modules/ajv/dist/runtime/validation_error.js +22 -0
- package/dist/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +53 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +112 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js +26 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +14 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js +99 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +93 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js +70 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +77 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js +57 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js +37 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js +29 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +64 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +80 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +15 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js +61 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +42 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +16 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/code.js +146 -0
- package/dist/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/id.js +11 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/index.js +21 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/ref.js +131 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js +113 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js +12 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/draft7.js +28 -0
- package/dist/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/format.js +94 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/index.js +9 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/metadata.js +21 -0
- package/dist/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/const.js +31 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js +54 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +54 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js +26 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js +33 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +29 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +26 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +28 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js +27 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/required.js +84 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +72 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
- package/dist/node_modules/ajv-formats/dist/formats.js +212 -0
- package/dist/node_modules/ajv-formats/dist/formats.js.map +1 -0
- package/dist/node_modules/ajv-formats/dist/index.js +52 -0
- package/dist/node_modules/ajv-formats/dist/index.js.map +1 -0
- package/dist/node_modules/ajv-formats/dist/limit.js +75 -0
- package/dist/node_modules/ajv-formats/dist/limit.js.map +1 -0
- package/dist/node_modules/diff/libesm/diff/base.js +256 -0
- package/dist/node_modules/diff/libesm/diff/base.js.map +1 -0
- package/dist/node_modules/diff/libesm/diff/line.js +64 -0
- package/dist/node_modules/diff/libesm/diff/line.js.map +1 -0
- package/dist/node_modules/diff/libesm/patch/create.js +185 -0
- package/dist/node_modules/diff/libesm/patch/create.js.map +1 -0
- package/dist/node_modules/fast-deep-equal/index.js +47 -0
- package/dist/node_modules/fast-deep-equal/index.js.map +1 -0
- package/dist/node_modules/fast-uri/index.js +347 -0
- package/dist/node_modules/fast-uri/index.js.map +1 -0
- package/dist/node_modules/fast-uri/lib/schemes.js +255 -0
- package/dist/node_modules/fast-uri/lib/schemes.js.map +1 -0
- package/dist/node_modules/fast-uri/lib/utils.js +334 -0
- package/dist/node_modules/fast-uri/lib/utils.js.map +1 -0
- package/dist/node_modules/json-schema-traverse/index.js +98 -0
- package/dist/node_modules/json-schema-traverse/index.js.map +1 -0
- package/dist/node_modules/uuid/dist/rng.js +14 -0
- package/dist/node_modules/uuid/dist/rng.js.map +1 -0
- package/dist/node_modules/uuid/dist/stringify.js +29 -0
- package/dist/node_modules/uuid/dist/stringify.js.map +1 -0
- package/dist/node_modules/uuid/dist/v7.js +65 -0
- package/dist/node_modules/uuid/dist/v7.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js +37 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js +26 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +17 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +11 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js +66 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +21 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +30 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +53 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +50 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +11 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +11 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +9 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +56 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +24 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +30 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +19 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +15 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +13 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +37 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +56 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +76 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +25 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +24 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +65 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +24 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +350 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +36 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +10 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +84 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +8 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js +109 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +90 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/node_modules/zod/v3/types.js +42 -0
- package/dist/node_modules/zod-to-json-schema/node_modules/zod/v3/types.js.map +1 -0
- package/dist/package.json.js +8 -0
- package/dist/package.json.js.map +1 -0
- package/dist/src/acp-extensions.d.ts +91 -0
- package/dist/src/acp-extensions.d.ts.map +1 -0
- package/dist/src/acp-extensions.js +38 -0
- package/dist/src/acp-extensions.js.map +1 -0
- package/dist/src/adapters/claude/claude.d.ts +136 -0
- package/dist/src/adapters/claude/claude.d.ts.map +1 -0
- package/dist/src/adapters/claude/claude.js +1112 -0
- package/dist/src/adapters/claude/claude.js.map +1 -0
- package/dist/src/adapters/claude/mcp-server.d.ts +30 -0
- package/dist/src/adapters/claude/mcp-server.d.ts.map +1 -0
- package/dist/src/adapters/claude/mcp-server.js +655 -0
- package/dist/src/adapters/claude/mcp-server.js.map +1 -0
- package/dist/src/adapters/claude/tools.d.ts +35 -0
- package/dist/src/adapters/claude/tools.d.ts.map +1 -0
- package/dist/src/adapters/claude/tools.js +466 -0
- package/dist/src/adapters/claude/tools.js.map +1 -0
- package/dist/src/adapters/claude/utils.d.ts +48 -0
- package/dist/src/adapters/claude/utils.d.ts.map +1 -0
- package/dist/src/adapters/claude/utils.js +158 -0
- package/dist/src/adapters/claude/utils.js.map +1 -0
- package/dist/src/agent.d.ts +15 -25
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +118 -156
- package/dist/src/agent.js.map +1 -1
- package/dist/src/file-manager.d.ts +2 -2
- package/dist/src/file-manager.d.ts.map +1 -1
- package/dist/src/file-manager.js +13 -5
- package/dist/src/file-manager.js.map +1 -1
- package/dist/src/git-manager.d.ts +1 -0
- package/dist/src/git-manager.d.ts.map +1 -1
- package/dist/src/git-manager.js +18 -0
- package/dist/src/git-manager.js.map +1 -1
- package/dist/src/posthog-api.d.ts +8 -13
- package/dist/src/posthog-api.d.ts.map +1 -1
- package/dist/src/posthog-api.js +14 -2
- package/dist/src/posthog-api.js.map +1 -1
- package/dist/src/prompt-builder.d.ts +2 -2
- package/dist/src/prompt-builder.d.ts.map +1 -1
- package/dist/src/prompt-builder.js +7 -7
- package/dist/src/prompt-builder.js.map +1 -1
- package/dist/src/schemas.d.ts +980 -0
- package/dist/src/schemas.d.ts.map +1 -0
- package/dist/src/schemas.js +196 -0
- package/dist/src/schemas.js.map +1 -0
- package/dist/src/session-store.d.ts +53 -0
- package/dist/src/session-store.d.ts.map +1 -0
- package/dist/src/session-store.js +195 -0
- package/dist/src/session-store.js.map +1 -0
- package/dist/src/task-manager.d.ts +3 -3
- package/dist/src/task-manager.d.ts.map +1 -1
- package/dist/src/task-manager.js.map +1 -1
- package/dist/src/template-manager.d.ts.map +1 -1
- package/dist/src/template-manager.js +6 -6
- package/dist/src/template-manager.js.map +1 -1
- package/dist/src/todo-manager.d.ts +2 -2
- package/dist/src/todo-manager.d.ts.map +1 -1
- package/dist/src/todo-manager.js +5 -1
- package/dist/src/todo-manager.js.map +1 -1
- package/dist/src/types.d.ts +54 -159
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/logger.d.ts +10 -2
- package/dist/src/utils/logger.d.ts.map +1 -1
- package/dist/src/utils/logger.js +35 -20
- package/dist/src/utils/logger.js.map +1 -1
- package/dist/src/utils/tapped-stream.d.ts +17 -0
- package/dist/src/utils/tapped-stream.d.ts.map +1 -0
- package/dist/src/utils/tapped-stream.js +45 -0
- package/dist/src/utils/tapped-stream.js.map +1 -0
- package/dist/src/workflow/steps/build.d.ts.map +1 -1
- package/dist/src/workflow/steps/build.js +15 -9
- package/dist/src/workflow/steps/build.js.map +1 -1
- package/dist/src/workflow/steps/finalize.d.ts.map +1 -1
- package/dist/src/workflow/steps/finalize.js +4 -4
- package/dist/src/workflow/steps/finalize.js.map +1 -1
- package/dist/src/workflow/steps/plan.d.ts.map +1 -1
- package/dist/src/workflow/steps/plan.js +22 -12
- package/dist/src/workflow/steps/plan.js.map +1 -1
- package/dist/src/workflow/steps/research.d.ts.map +1 -1
- package/dist/src/workflow/steps/research.js +33 -26
- package/dist/src/workflow/steps/research.js.map +1 -1
- package/dist/src/workflow/types.d.ts +10 -5
- package/dist/src/workflow/types.d.ts.map +1 -1
- package/dist/src/worktree-manager.d.ts +39 -0
- package/dist/src/worktree-manager.d.ts.map +1 -0
- package/dist/src/worktree-manager.js +810 -0
- package/dist/src/worktree-manager.js.map +1 -0
- package/package.json +19 -15
- package/src/acp-extensions.ts +117 -0
- package/src/adapters/claude/claude.ts +1498 -0
- package/src/adapters/claude/mcp-server.ts +810 -0
- package/src/adapters/claude/tools.ts +609 -0
- package/src/adapters/claude/utils.ts +267 -0
- package/src/agent.ts +151 -222
- package/src/file-manager.ts +16 -7
- package/src/git-manager.ts +20 -0
- package/src/posthog-api.ts +38 -17
- package/src/prompt-builder.ts +23 -15
- package/src/schemas.ts +241 -0
- package/src/session-store.ts +244 -0
- package/src/task-manager.ts +3 -3
- package/src/template-manager.ts +8 -8
- package/src/todo-manager.ts +9 -3
- package/src/types.ts +79 -210
- package/src/utils/logger.ts +47 -22
- package/src/utils/tapped-stream.ts +60 -0
- package/src/workflow/steps/build.ts +16 -11
- package/src/workflow/steps/finalize.ts +4 -11
- package/src/workflow/steps/plan.ts +24 -19
- package/src/workflow/steps/research.ts +34 -33
- package/src/workflow/types.ts +14 -5
- package/src/worktree-manager.ts +884 -0
- package/dist/src/adapters/claude/claude-adapter.d.ts +0 -18
- package/dist/src/adapters/claude/claude-adapter.d.ts.map +0 -1
- package/dist/src/adapters/claude/claude-adapter.js +0 -356
- package/dist/src/adapters/claude/claude-adapter.js.map +0 -1
- package/dist/src/adapters/claude/tool-mapper.d.ts +0 -19
- package/dist/src/adapters/claude/tool-mapper.d.ts.map +0 -1
- package/dist/src/adapters/claude/tool-mapper.js +0 -44
- package/dist/src/adapters/claude/tool-mapper.js.map +0 -1
- package/dist/src/adapters/types.d.ts +0 -33
- package/dist/src/adapters/types.d.ts.map +0 -1
- package/dist/src/task-progress-reporter.d.ts +0 -42
- package/dist/src/task-progress-reporter.d.ts.map +0 -1
- package/dist/src/task-progress-reporter.js +0 -398
- package/dist/src/task-progress-reporter.js.map +0 -1
- package/src/adapters/claude/claude-adapter.ts +0 -390
- package/src/adapters/claude/tool-mapper.ts +0 -46
- package/src/adapters/types.ts +0 -37
- package/src/task-progress-reporter.ts +0 -454
package/dist/src/utils/logger.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Simple logger utility with configurable debug mode
|
|
2
|
+
* Simple logger utility with configurable debug mode and external log forwarding
|
|
3
3
|
*/
|
|
4
4
|
var LogLevel;
|
|
5
5
|
(function (LogLevel) {
|
|
@@ -11,55 +11,70 @@ var LogLevel;
|
|
|
11
11
|
class Logger {
|
|
12
12
|
debugEnabled;
|
|
13
13
|
prefix;
|
|
14
|
+
scope;
|
|
15
|
+
onLog;
|
|
14
16
|
constructor(config = {}) {
|
|
15
17
|
this.debugEnabled = config.debug ?? false;
|
|
16
18
|
this.prefix = config.prefix ?? "[PostHog Agent]";
|
|
19
|
+
this.scope = config.scope ?? "agent";
|
|
20
|
+
this.onLog = config.onLog;
|
|
17
21
|
}
|
|
18
22
|
setDebug(enabled) {
|
|
19
23
|
this.debugEnabled = enabled;
|
|
20
24
|
}
|
|
25
|
+
setOnLog(onLog) {
|
|
26
|
+
this.onLog = onLog;
|
|
27
|
+
}
|
|
21
28
|
formatMessage(level, message, data) {
|
|
22
29
|
const timestamp = new Date().toISOString();
|
|
23
|
-
const base = `${timestamp} ${this.prefix} ${level} ${message}`;
|
|
30
|
+
const base = `${timestamp} ${this.prefix} [${level}] ${message}`;
|
|
24
31
|
if (data !== undefined) {
|
|
25
32
|
return `${base} ${JSON.stringify(data, null, 2)}`;
|
|
26
33
|
}
|
|
27
34
|
return base;
|
|
28
35
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
message: error.message,
|
|
34
|
-
stack: error.stack,
|
|
35
|
-
}));
|
|
36
|
+
emitLog(level, message, data) {
|
|
37
|
+
if (this.onLog) {
|
|
38
|
+
this.onLog(level, this.scope, message, data);
|
|
39
|
+
return;
|
|
36
40
|
}
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
const shouldLog = this.debugEnabled || level === "error";
|
|
42
|
+
if (shouldLog) {
|
|
43
|
+
console[level](this.formatMessage(level.toLowerCase(), message, data));
|
|
39
44
|
}
|
|
40
45
|
}
|
|
46
|
+
error(message, error) {
|
|
47
|
+
const data = error instanceof Error
|
|
48
|
+
? { message: error.message, stack: error.stack }
|
|
49
|
+
: error;
|
|
50
|
+
this.emitLog("error", message, data);
|
|
51
|
+
}
|
|
41
52
|
warn(message, data) {
|
|
42
|
-
|
|
43
|
-
console.warn(this.formatMessage("[WARN]", message, data));
|
|
44
|
-
}
|
|
53
|
+
this.emitLog("warn", message, data);
|
|
45
54
|
}
|
|
46
55
|
info(message, data) {
|
|
47
|
-
|
|
48
|
-
console.log(this.formatMessage("[INFO]", message, data));
|
|
49
|
-
}
|
|
56
|
+
this.emitLog("info", message, data);
|
|
50
57
|
}
|
|
51
58
|
debug(message, data) {
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
this.emitLog("debug", message, data);
|
|
60
|
+
}
|
|
61
|
+
log(level, message, data, scope) {
|
|
62
|
+
const originalScope = this.scope;
|
|
63
|
+
if (scope) {
|
|
64
|
+
this.scope = scope;
|
|
54
65
|
}
|
|
66
|
+
this.emitLog(level, message, data);
|
|
67
|
+
this.scope = originalScope;
|
|
55
68
|
}
|
|
56
69
|
/**
|
|
57
|
-
* Create a child logger with additional prefix
|
|
70
|
+
* Create a child logger with additional prefix and scope
|
|
58
71
|
*/
|
|
59
72
|
child(childPrefix) {
|
|
60
73
|
return new Logger({
|
|
61
74
|
debug: this.debugEnabled,
|
|
62
75
|
prefix: `${this.prefix} [${childPrefix}]`,
|
|
76
|
+
scope: `${this.scope}:${childPrefix}`,
|
|
77
|
+
onLog: this.onLog,
|
|
63
78
|
});
|
|
64
79
|
}
|
|
65
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sources":["../../../src/utils/logger.ts"],"sourcesContent":["/**\n * Simple logger utility with configurable debug mode\n */\nexport enum LogLevel {\n ERROR = 0,\n WARN = 1,\n INFO = 2,\n DEBUG = 3,\n}\n\nexport interface LoggerConfig {\n debug?: boolean;\n prefix?: string;\n}\n\nexport class Logger {\n private debugEnabled: boolean;\n private prefix: string;\n\n constructor(config: LoggerConfig = {}) {\n this.debugEnabled = config.debug ?? false;\n this.prefix = config.prefix ?? \"[PostHog Agent]\";\n }\n\n setDebug(enabled: boolean) {\n this.debugEnabled = enabled;\n }\n\n private formatMessage(\n level: string,\n message: string,\n data?: unknown,\n ): string {\n const timestamp = new Date().toISOString();\n const base = `${timestamp} ${this.prefix} ${level} ${message}`;\n\n if (data !== undefined) {\n return `${base} ${JSON.stringify(data, null, 2)}`;\n }\n\n return base;\n }\n\n
|
|
1
|
+
{"version":3,"file":"logger.js","sources":["../../../src/utils/logger.ts"],"sourcesContent":["import type { LogLevel as LogLevelType, OnLogCallback } from \"../types.js\";\n\n/**\n * Simple logger utility with configurable debug mode and external log forwarding\n */\nexport enum LogLevel {\n ERROR = 0,\n WARN = 1,\n INFO = 2,\n DEBUG = 3,\n}\n\nexport interface LoggerConfig {\n debug?: boolean;\n prefix?: string;\n scope?: string;\n onLog?: OnLogCallback;\n}\n\nexport class Logger {\n private debugEnabled: boolean;\n private prefix: string;\n private scope: string;\n private onLog?: OnLogCallback;\n\n constructor(config: LoggerConfig = {}) {\n this.debugEnabled = config.debug ?? false;\n this.prefix = config.prefix ?? \"[PostHog Agent]\";\n this.scope = config.scope ?? \"agent\";\n this.onLog = config.onLog;\n }\n\n setDebug(enabled: boolean) {\n this.debugEnabled = enabled;\n }\n\n setOnLog(onLog: OnLogCallback | undefined) {\n this.onLog = onLog;\n }\n\n private formatMessage(\n level: string,\n message: string,\n data?: unknown,\n ): string {\n const timestamp = new Date().toISOString();\n const base = `${timestamp} ${this.prefix} [${level}] ${message}`;\n\n if (data !== undefined) {\n return `${base} ${JSON.stringify(data, null, 2)}`;\n }\n\n return base;\n }\n\n private emitLog(level: LogLevelType, message: string, data?: unknown) {\n if (this.onLog) {\n this.onLog(level, this.scope, message, data);\n return;\n }\n\n const shouldLog = this.debugEnabled || level === \"error\";\n\n if (shouldLog) {\n console[level](this.formatMessage(level.toLowerCase(), message, data));\n }\n }\n\n error(message: string, error?: Error | unknown) {\n const data =\n error instanceof Error\n ? { message: error.message, stack: error.stack }\n : error;\n\n this.emitLog(\"error\", message, data);\n }\n\n warn(message: string, data?: unknown) {\n this.emitLog(\"warn\", message, data);\n }\n\n info(message: string, data?: unknown) {\n this.emitLog(\"info\", message, data);\n }\n\n debug(message: string, data?: unknown) {\n this.emitLog(\"debug\", message, data);\n }\n\n log(level: LogLevelType, message: string, data?: unknown, scope?: string) {\n const originalScope = this.scope;\n if (scope) {\n this.scope = scope;\n }\n this.emitLog(level, message, data);\n this.scope = originalScope;\n }\n\n /**\n * Create a child logger with additional prefix and scope\n */\n child(childPrefix: string): Logger {\n return new Logger({\n debug: this.debugEnabled,\n prefix: `${this.prefix} [${childPrefix}]`,\n scope: `${this.scope}:${childPrefix}`,\n onLog: this.onLog,\n });\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Logger } from "./logger.js";
|
|
2
|
+
type MessageCallback = (line: string) => void;
|
|
3
|
+
export interface TappedStreamOptions {
|
|
4
|
+
onMessage: MessageCallback;
|
|
5
|
+
logger?: Logger;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Creates a WritableStream wrapper that taps all newline-delimited messages,
|
|
9
|
+
* forwarding each complete line for persistence.
|
|
10
|
+
*
|
|
11
|
+
* This aligns with ACP's transport model - all messages flow through
|
|
12
|
+
* newline-delimited JSON-RPC streams, so we intercept at the transport layer
|
|
13
|
+
* and persist everything.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createTappedWritableStream(underlying: WritableStream<Uint8Array>, options: TappedStreamOptions): WritableStream<Uint8Array>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=tapped-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tapped-stream.d.ts","sourceRoot":"","sources":["../../../src/utils/tapped-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,KAAK,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,EACtC,OAAO,EAAE,mBAAmB,GAC3B,cAAc,CAAC,UAAU,CAAC,CAuC5B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a WritableStream wrapper that taps all newline-delimited messages,
|
|
3
|
+
* forwarding each complete line for persistence.
|
|
4
|
+
*
|
|
5
|
+
* This aligns with ACP's transport model - all messages flow through
|
|
6
|
+
* newline-delimited JSON-RPC streams, so we intercept at the transport layer
|
|
7
|
+
* and persist everything.
|
|
8
|
+
*/
|
|
9
|
+
function createTappedWritableStream(underlying, options) {
|
|
10
|
+
const { onMessage, logger } = options;
|
|
11
|
+
const decoder = new TextDecoder();
|
|
12
|
+
let buffer = "";
|
|
13
|
+
return new WritableStream({
|
|
14
|
+
async write(chunk) {
|
|
15
|
+
// Decode and buffer
|
|
16
|
+
buffer += decoder.decode(chunk, { stream: true });
|
|
17
|
+
// Process complete lines (newline-delimited)
|
|
18
|
+
const lines = buffer.split("\n");
|
|
19
|
+
buffer = lines.pop() ?? "";
|
|
20
|
+
for (const line of lines) {
|
|
21
|
+
if (!line.trim())
|
|
22
|
+
continue;
|
|
23
|
+
onMessage(line);
|
|
24
|
+
}
|
|
25
|
+
// Forward to underlying stream
|
|
26
|
+
const writer = underlying.getWriter();
|
|
27
|
+
await writer.write(chunk);
|
|
28
|
+
writer.releaseLock();
|
|
29
|
+
},
|
|
30
|
+
async close() {
|
|
31
|
+
const writer = underlying.getWriter();
|
|
32
|
+
await writer.close();
|
|
33
|
+
writer.releaseLock();
|
|
34
|
+
},
|
|
35
|
+
async abort(reason) {
|
|
36
|
+
logger?.warn("Tapped stream aborted", { reason });
|
|
37
|
+
const writer = underlying.getWriter();
|
|
38
|
+
await writer.abort(reason);
|
|
39
|
+
writer.releaseLock();
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { createTappedWritableStream };
|
|
45
|
+
//# sourceMappingURL=tapped-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tapped-stream.js","sources":["../../../src/utils/tapped-stream.ts"],"sourcesContent":["import type { Logger } from \"./logger.js\";\n\ntype MessageCallback = (line: string) => void;\n\nexport interface TappedStreamOptions {\n onMessage: MessageCallback;\n logger?: Logger;\n}\n\n/**\n * Creates a WritableStream wrapper that taps all newline-delimited messages,\n * forwarding each complete line for persistence.\n *\n * This aligns with ACP's transport model - all messages flow through\n * newline-delimited JSON-RPC streams, so we intercept at the transport layer\n * and persist everything.\n */\nexport function createTappedWritableStream(\n underlying: WritableStream<Uint8Array>,\n options: TappedStreamOptions,\n): WritableStream<Uint8Array> {\n const { onMessage, logger } = options;\n const decoder = new TextDecoder();\n let buffer = \"\";\n let _messageCount = 0;\n\n return new WritableStream({\n async write(chunk: Uint8Array) {\n // Decode and buffer\n buffer += decoder.decode(chunk, { stream: true });\n\n // Process complete lines (newline-delimited)\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n if (!line.trim()) continue;\n _messageCount++;\n\n onMessage(line);\n }\n\n // Forward to underlying stream\n const writer = underlying.getWriter();\n await writer.write(chunk);\n writer.releaseLock();\n },\n async close() {\n const writer = underlying.getWriter();\n await writer.close();\n writer.releaseLock();\n },\n async abort(reason: unknown) {\n logger?.warn(\"Tapped stream aborted\", { reason });\n const writer = underlying.getWriter();\n await writer.abort(reason);\n writer.releaseLock();\n },\n });\n}\n"],"names":[],"mappings":"AASA;;;;;;;AAOG;AACG,SAAU,0BAA0B,CACxC,UAAsC,EACtC,OAA4B,EAAA;AAE5B,IAAA,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO;AACrC,IAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;IACjC,IAAI,MAAM,GAAG,EAAE;IAGf,OAAO,IAAI,cAAc,CAAC;QACxB,MAAM,KAAK,CAAC,KAAiB,EAAA;;AAE3B,YAAA,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;YAGjD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC,YAAA,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;AAE1B,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE;gBAGlB,SAAS,CAAC,IAAI,CAAC;YACjB;;AAGA,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE;AACrC,YAAA,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YACzB,MAAM,CAAC,WAAW,EAAE;QACtB,CAAC;AACD,QAAA,MAAM,KAAK,GAAA;AACT,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE;AACrC,YAAA,MAAM,MAAM,CAAC,KAAK,EAAE;YACpB,MAAM,CAAC,WAAW,EAAE;QACtB,CAAC;QACD,MAAM,KAAK,CAAC,MAAe,EAAA;YACzB,MAAM,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC;AACjD,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE;AACrC,YAAA,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1B,MAAM,CAAC,WAAW,EAAE;QACtB,CAAC;AACF,KAAA,CAAC;AACJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../src/workflow/steps/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../src/workflow/steps/build.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAO,MAAM,SAAS,EAAE,kBA+HvB,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
2
|
+
import { POSTHOG_NOTIFICATIONS } from '../../acp-extensions.js';
|
|
2
3
|
import { EXECUTION_SYSTEM_PROMPT } from '../../agents/execution.js';
|
|
3
4
|
import { TodoManager } from '../../todo-manager.js';
|
|
4
5
|
import { PermissionMode } from '../../types.js';
|
|
5
6
|
|
|
6
7
|
const buildStep = async ({ step, context }) => {
|
|
7
|
-
const { task, cwd, options, logger, promptBuilder,
|
|
8
|
+
const { task, cwd, options, logger, promptBuilder, sessionId, mcpServers, gitManager, sendNotification, } = context;
|
|
8
9
|
const stepLogger = logger.child("BuildStep");
|
|
9
10
|
const latestRun = task.latest_run;
|
|
10
11
|
const prExists = latestRun?.output && typeof latestRun.output === "object"
|
|
@@ -17,7 +18,10 @@ const buildStep = async ({ step, context }) => {
|
|
|
17
18
|
return { status: "skipped" };
|
|
18
19
|
}
|
|
19
20
|
stepLogger.info("Starting build phase", { taskId: task.id });
|
|
20
|
-
|
|
21
|
+
await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_START, {
|
|
22
|
+
sessionId,
|
|
23
|
+
phase: "build",
|
|
24
|
+
});
|
|
21
25
|
const executionPrompt = await promptBuilder.buildExecutionPrompt(task, cwd);
|
|
22
26
|
const fullPrompt = `${EXECUTION_SYSTEM_PROMPT}\n\n${executionPrompt}`;
|
|
23
27
|
const configuredPermissionMode = options.permissionMode ??
|
|
@@ -64,14 +68,13 @@ const buildStep = async ({ step, context }) => {
|
|
|
64
68
|
const todoManager = new TodoManager(context.fileManager, stepLogger);
|
|
65
69
|
try {
|
|
66
70
|
for await (const message of response) {
|
|
67
|
-
emitEvent(adapter.createRawSDKEvent(message));
|
|
68
|
-
const transformedEvents = adapter.transform(message);
|
|
69
|
-
for (const event of transformedEvents) {
|
|
70
|
-
emitEvent(event);
|
|
71
|
-
}
|
|
72
71
|
const todoList = await todoManager.checkAndPersistFromMessage(message, task.id);
|
|
73
72
|
if (todoList) {
|
|
74
|
-
|
|
73
|
+
await sendNotification(POSTHOG_NOTIFICATIONS.ARTIFACT, {
|
|
74
|
+
sessionId,
|
|
75
|
+
kind: "todos",
|
|
76
|
+
content: todoList,
|
|
77
|
+
});
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
80
|
}
|
|
@@ -94,7 +97,10 @@ const buildStep = async ({ step, context }) => {
|
|
|
94
97
|
pushedBranch,
|
|
95
98
|
});
|
|
96
99
|
}
|
|
97
|
-
|
|
100
|
+
await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_COMPLETE, {
|
|
101
|
+
sessionId,
|
|
102
|
+
phase: "build",
|
|
103
|
+
});
|
|
98
104
|
return { status: "completed" };
|
|
99
105
|
};
|
|
100
106
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sources":["../../../../src/workflow/steps/build.ts"],"sourcesContent":["import { query } from \"@anthropic-ai/claude-agent-sdk\";\nimport { EXECUTION_SYSTEM_PROMPT } from \"../../agents/execution.js\";\nimport { TodoManager } from \"../../todo-manager.js\";\nimport { PermissionMode } from \"../../types.js\";\nimport type { WorkflowStepRunner } from \"../types.js\";\n\nexport const buildStep: WorkflowStepRunner = async ({ step, context }) => {\n const {\n task,\n cwd,\n options,\n logger,\n promptBuilder,\n
|
|
1
|
+
{"version":3,"file":"build.js","sources":["../../../../src/workflow/steps/build.ts"],"sourcesContent":["import { query } from \"@anthropic-ai/claude-agent-sdk\";\nimport { POSTHOG_NOTIFICATIONS } from \"../../acp-extensions.js\";\nimport { EXECUTION_SYSTEM_PROMPT } from \"../../agents/execution.js\";\nimport { TodoManager } from \"../../todo-manager.js\";\nimport { PermissionMode } from \"../../types.js\";\nimport type { WorkflowStepRunner } from \"../types.js\";\n\nexport const buildStep: WorkflowStepRunner = async ({ step, context }) => {\n const {\n task,\n cwd,\n options,\n logger,\n promptBuilder,\n sessionId,\n mcpServers,\n gitManager,\n sendNotification,\n } = context;\n\n const stepLogger = logger.child(\"BuildStep\");\n\n const latestRun = task.latest_run;\n const prExists =\n latestRun?.output && typeof latestRun.output === \"object\"\n ? (latestRun.output as Record<string, unknown>).pr_url\n : null;\n\n if (prExists) {\n stepLogger.info(\"PR already exists, skipping build phase\", {\n taskId: task.id,\n });\n return { status: \"skipped\" };\n }\n\n stepLogger.info(\"Starting build phase\", { taskId: task.id });\n await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_START, {\n sessionId,\n phase: \"build\",\n });\n\n const executionPrompt = await promptBuilder.buildExecutionPrompt(task, cwd);\n const fullPrompt = `${EXECUTION_SYSTEM_PROMPT}\\n\\n${executionPrompt}`;\n\n const configuredPermissionMode =\n options.permissionMode ??\n (typeof step.permissionMode === \"string\"\n ? (step.permissionMode as PermissionMode)\n : step.permissionMode) ??\n PermissionMode.ACCEPT_EDITS;\n\n const baseOptions: Record<string, unknown> = {\n model: step.model,\n cwd,\n permissionMode: configuredPermissionMode,\n settingSources: [\"local\"],\n mcpServers,\n // Allow all tools for build phase - full read/write access needed for implementation\n allowedTools: [\n \"Task\",\n \"Bash\",\n \"BashOutput\",\n \"KillBash\",\n \"Edit\",\n \"Read\",\n \"Write\",\n \"Glob\",\n \"Grep\",\n \"NotebookEdit\",\n \"WebFetch\",\n \"WebSearch\",\n \"ListMcpResources\",\n \"ReadMcpResource\",\n \"TodoWrite\",\n ],\n };\n\n // Add fine-grained permission hook if provided\n if (options.canUseTool) {\n baseOptions.canUseTool = options.canUseTool;\n }\n\n const response = query({\n prompt: fullPrompt,\n options: { ...baseOptions, ...(options.queryOverrides || {}) },\n });\n\n // Track commits made during Claude Code execution\n const commitTracker = await gitManager.trackCommitsDuring();\n\n // Track todos from TodoWrite tool calls\n const todoManager = new TodoManager(context.fileManager, stepLogger);\n\n try {\n for await (const message of response) {\n const todoList = await todoManager.checkAndPersistFromMessage(\n message,\n task.id,\n );\n if (todoList) {\n await sendNotification(POSTHOG_NOTIFICATIONS.ARTIFACT, {\n sessionId,\n kind: \"todos\",\n content: todoList,\n });\n }\n }\n } catch (error) {\n stepLogger.error(\"Error during build step query\", error);\n throw error;\n }\n\n // Finalize: commit any remaining changes and optionally push\n const { commitCreated, pushedBranch } = await commitTracker.finalize({\n commitMessage: `Implementation for ${task.title}`,\n push: step.push,\n });\n\n context.stepResults[step.id] = { commitCreated };\n\n if (!commitCreated) {\n stepLogger.warn(\"No changes to commit in build phase\", { taskId: task.id });\n } else {\n stepLogger.info(\"Build commits finalized\", {\n taskId: task.id,\n pushedBranch,\n });\n }\n\n await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_COMPLETE, {\n sessionId,\n phase: \"build\",\n });\n return { status: \"completed\" };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize.d.ts","sourceRoot":"","sources":["../../../../src/workflow/steps/finalize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAKtD,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"finalize.d.ts","sourceRoot":"","sources":["../../../../src/workflow/steps/finalize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAKtD,eAAO,MAAM,YAAY,EAAE,kBAuD1B,CAAC"}
|
|
@@ -2,11 +2,11 @@ import { finalizeStepGitActions } from '../utils.js';
|
|
|
2
2
|
|
|
3
3
|
const MAX_SNIPPET_LENGTH = 1200;
|
|
4
4
|
const finalizeStep = async ({ step, context }) => {
|
|
5
|
-
const { task, logger, fileManager, gitManager, posthogAPI,
|
|
5
|
+
const { task, logger, fileManager, gitManager, posthogAPI, runId } = context;
|
|
6
6
|
const stepLogger = logger.child("FinalizeStep");
|
|
7
7
|
const artifacts = await fileManager.collectTaskArtifacts(task.id);
|
|
8
8
|
let uploadedArtifacts;
|
|
9
|
-
if (artifacts.length && posthogAPI &&
|
|
9
|
+
if (artifacts.length && posthogAPI && runId) {
|
|
10
10
|
try {
|
|
11
11
|
const payload = artifacts.map((artifact) => ({
|
|
12
12
|
name: artifact.name,
|
|
@@ -14,7 +14,7 @@ const finalizeStep = async ({ step, context }) => {
|
|
|
14
14
|
content: artifact.content,
|
|
15
15
|
content_type: artifact.contentType,
|
|
16
16
|
}));
|
|
17
|
-
uploadedArtifacts = await posthogAPI.uploadTaskArtifacts(task.id,
|
|
17
|
+
uploadedArtifacts = await posthogAPI.uploadTaskArtifacts(task.id, runId, payload);
|
|
18
18
|
stepLogger.info("Uploaded task artifacts to PostHog", {
|
|
19
19
|
taskId: task.id,
|
|
20
20
|
uploadedCount: uploadedArtifacts.length,
|
|
@@ -31,7 +31,7 @@ const finalizeStep = async ({ step, context }) => {
|
|
|
31
31
|
stepLogger.debug("Skipping artifact upload", {
|
|
32
32
|
hasArtifacts: artifacts.length > 0,
|
|
33
33
|
hasPostHogApi: Boolean(posthogAPI),
|
|
34
|
-
runId
|
|
34
|
+
runId,
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
const prBody = buildPullRequestBody(task, artifacts, uploadedArtifacts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize.js","sources":["../../../../src/workflow/steps/finalize.ts"],"sourcesContent":["import type { LocalArtifact } from \"../../file-manager.js\";\nimport type { Task, TaskRunArtifact } from \"../../types.js\";\nimport type { WorkflowStepRunner } from \"../types.js\";\nimport { finalizeStepGitActions } from \"../utils.js\";\n\nconst MAX_SNIPPET_LENGTH = 1200;\n\nexport const finalizeStep: WorkflowStepRunner = async ({ step, context }) => {\n const {\n task,\n logger,\n fileManager,\n gitManager,\n posthogAPI,\n progressReporter,\n } = context;\n\n const stepLogger = logger.child(\"FinalizeStep\");\n const artifacts = await fileManager.collectTaskArtifacts(task.id);\n let uploadedArtifacts: TaskRunArtifact[] | undefined;\n\n if (artifacts.length && posthogAPI && progressReporter.runId) {\n try {\n const payload = artifacts.map((artifact) => ({\n name: artifact.name,\n type: artifact.type,\n content: artifact.content,\n content_type: artifact.contentType,\n }));\n uploadedArtifacts = await posthogAPI.uploadTaskArtifacts(\n task.id,\n progressReporter.runId,\n payload,\n );\n stepLogger.info(\"Uploaded task artifacts to PostHog\", {\n taskId: task.id,\n uploadedCount: uploadedArtifacts.length,\n });\n } catch (error) {\n stepLogger.warn(\"Failed to upload task artifacts\", {\n taskId: task.id,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n } else {\n stepLogger.debug(\"Skipping artifact upload\", {\n hasArtifacts: artifacts.length > 0,\n hasPostHogApi: Boolean(posthogAPI),\n runId: progressReporter.runId,\n });\n }\n\n const prBody = buildPullRequestBody(task, artifacts, uploadedArtifacts);\n await fileManager.cleanupTaskDirectory(task.id);\n await gitManager.addAllPostHogFiles();\n\n // Commit the deletion of artifacts\n await finalizeStepGitActions(context, step, {\n commitMessage: `Cleanup task artifacts for ${task.title}`,\n allowEmptyCommit: true,\n });\n\n context.stepResults[step.id] = {\n prBody,\n uploadedArtifacts,\n artifactCount: artifacts.length,\n };\n\n return { status: \"completed\" };\n};\n\nfunction buildPullRequestBody(\n task: Task,\n artifacts: LocalArtifact[],\n uploaded?: TaskRunArtifact[],\n): string {\n const lines: string[] = [];\n const taskSlug = (task as unknown as Record<string, unknown>).slug || task.id;\n\n lines.push(\"## Task context\");\n lines.push(`- **Task**: ${taskSlug}`);\n lines.push(`- **Title**: ${task.title}`);\n lines.push(`- **Origin**: ${task.origin_product}`);\n\n if (task.description) {\n lines.push(\"\");\n lines.push(`> ${task.description.trim().split(\"\\n\").join(\"\\n> \")}`);\n }\n\n const usedFiles = new Set<string>();\n\n const contextArtifact = artifacts.find(\n (artifact) => artifact.name === \"context.md\",\n );\n if (contextArtifact) {\n lines.push(\"\");\n lines.push(\"### Task prompt\");\n lines.push(contextArtifact.content);\n usedFiles.add(contextArtifact.name);\n }\n\n const researchArtifact = artifacts.find(\n (artifact) => artifact.name === \"research.json\",\n );\n if (researchArtifact) {\n usedFiles.add(researchArtifact.name);\n const researchSection = formatResearchSection(researchArtifact.content);\n if (researchSection) {\n lines.push(\"\");\n lines.push(researchSection);\n }\n }\n\n const planArtifact = artifacts.find(\n (artifact) => artifact.name === \"plan.md\",\n );\n if (planArtifact) {\n lines.push(\"\");\n lines.push(\"### Implementation plan\");\n lines.push(planArtifact.content);\n usedFiles.add(planArtifact.name);\n }\n\n const todoArtifact = artifacts.find(\n (artifact) => artifact.name === \"todos.json\",\n );\n if (todoArtifact) {\n const summary = summarizeTodos(todoArtifact.content);\n if (summary) {\n lines.push(\"\");\n lines.push(\"### Todo list\");\n lines.push(summary);\n }\n usedFiles.add(todoArtifact.name);\n }\n\n const remainingArtifacts = artifacts.filter(\n (artifact) => !usedFiles.has(artifact.name),\n );\n if (remainingArtifacts.length) {\n lines.push(\"\");\n lines.push(\"### Additional artifacts\");\n for (const artifact of remainingArtifacts) {\n lines.push(`#### ${artifact.name}`);\n lines.push(renderCodeFence(artifact.content));\n }\n }\n\n const artifactList =\n uploaded ??\n artifacts.map((artifact) => ({\n name: artifact.name,\n type: artifact.type,\n }));\n\n if (artifactList.length) {\n lines.push(\"\");\n lines.push(\"### Uploaded artifacts\");\n for (const artifact of artifactList) {\n const rawStoragePath =\n \"storage_path\" in artifact\n ? (artifact as Record<string, unknown>).storage_path\n : undefined;\n const storagePath =\n typeof rawStoragePath === \"string\" ? rawStoragePath : undefined;\n const storage =\n storagePath && storagePath.trim().length > 0\n ? ` – \\`${storagePath.trim()}\\``\n : \"\";\n lines.push(`- ${artifact.name} (${artifact.type})${storage}`);\n }\n }\n\n return lines.join(\"\\n\\n\");\n}\n\nfunction renderCodeFence(content: string): string {\n const snippet = truncate(content, MAX_SNIPPET_LENGTH);\n return [\"```\", snippet, \"```\"].join(\"\\n\");\n}\n\nfunction truncate(value: string, maxLength: number): string {\n if (value.length <= maxLength) {\n return value;\n }\n return `${value.slice(0, maxLength)}\\n…`;\n}\n\nfunction formatResearchSection(content: string): string | null {\n try {\n const parsed = JSON.parse(content);\n const sections: string[] = [];\n\n if (parsed.context) {\n sections.push(\"### Research summary\");\n sections.push(parsed.context);\n }\n\n if (parsed.questions?.length) {\n sections.push(\"\");\n sections.push(\"### Questions needing answers\");\n for (const question of parsed.questions) {\n sections.push(`- ${question.question ?? question}`);\n }\n }\n\n if (parsed.answers?.length) {\n sections.push(\"\");\n sections.push(\"### Answers provided\");\n for (const answer of parsed.answers) {\n const questionId = answer.questionId\n ? ` (Q: ${answer.questionId})`\n : \"\";\n sections.push(\n `- ${answer.selectedOption || answer.customInput || \"answer\"}${questionId}`,\n );\n }\n }\n\n return sections.length ? sections.join(\"\\n\") : null;\n } catch {\n return null;\n }\n}\n\nfunction summarizeTodos(content: string): string | null {\n try {\n const data = JSON.parse(content);\n const total = data?.metadata?.total ?? data?.items?.length;\n const completed =\n data?.metadata?.completed ??\n data?.items?.filter(\n (item: { status?: string }) => item.status === \"completed\",\n ).length;\n\n const lines = [`Progress: ${completed}/${total} completed`];\n\n if (data?.items?.length) {\n for (const item of data.items) {\n lines.push(`- [${item.status}] ${item.content}`);\n }\n }\n\n return lines.join(\"\\n\");\n } catch {\n return null;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"finalize.js","sources":["../../../../src/workflow/steps/finalize.ts"],"sourcesContent":["import type { LocalArtifact } from \"../../file-manager.js\";\nimport type { Task, TaskRunArtifact } from \"../../types.js\";\nimport type { WorkflowStepRunner } from \"../types.js\";\nimport { finalizeStepGitActions } from \"../utils.js\";\n\nconst MAX_SNIPPET_LENGTH = 1200;\n\nexport const finalizeStep: WorkflowStepRunner = async ({ step, context }) => {\n const { task, logger, fileManager, gitManager, posthogAPI, runId } = context;\n\n const stepLogger = logger.child(\"FinalizeStep\");\n const artifacts = await fileManager.collectTaskArtifacts(task.id);\n let uploadedArtifacts: TaskRunArtifact[] | undefined;\n\n if (artifacts.length && posthogAPI && runId) {\n try {\n const payload = artifacts.map((artifact) => ({\n name: artifact.name,\n type: artifact.type,\n content: artifact.content,\n content_type: artifact.contentType,\n }));\n uploadedArtifacts = await posthogAPI.uploadTaskArtifacts(\n task.id,\n runId,\n payload,\n );\n stepLogger.info(\"Uploaded task artifacts to PostHog\", {\n taskId: task.id,\n uploadedCount: uploadedArtifacts.length,\n });\n } catch (error) {\n stepLogger.warn(\"Failed to upload task artifacts\", {\n taskId: task.id,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n } else {\n stepLogger.debug(\"Skipping artifact upload\", {\n hasArtifacts: artifacts.length > 0,\n hasPostHogApi: Boolean(posthogAPI),\n runId,\n });\n }\n\n const prBody = buildPullRequestBody(task, artifacts, uploadedArtifacts);\n await fileManager.cleanupTaskDirectory(task.id);\n await gitManager.addAllPostHogFiles();\n\n // Commit the deletion of artifacts\n await finalizeStepGitActions(context, step, {\n commitMessage: `Cleanup task artifacts for ${task.title}`,\n allowEmptyCommit: true,\n });\n\n context.stepResults[step.id] = {\n prBody,\n uploadedArtifacts,\n artifactCount: artifacts.length,\n };\n\n return { status: \"completed\" };\n};\n\nfunction buildPullRequestBody(\n task: Task,\n artifacts: LocalArtifact[],\n uploaded?: TaskRunArtifact[],\n): string {\n const lines: string[] = [];\n const taskSlug = (task as unknown as Record<string, unknown>).slug || task.id;\n\n lines.push(\"## Task context\");\n lines.push(`- **Task**: ${taskSlug}`);\n lines.push(`- **Title**: ${task.title}`);\n lines.push(`- **Origin**: ${task.origin_product}`);\n\n if (task.description) {\n lines.push(\"\");\n lines.push(`> ${task.description.trim().split(\"\\n\").join(\"\\n> \")}`);\n }\n\n const usedFiles = new Set<string>();\n\n const contextArtifact = artifacts.find(\n (artifact) => artifact.name === \"context.md\",\n );\n if (contextArtifact) {\n lines.push(\"\");\n lines.push(\"### Task prompt\");\n lines.push(contextArtifact.content);\n usedFiles.add(contextArtifact.name);\n }\n\n const researchArtifact = artifacts.find(\n (artifact) => artifact.name === \"research.json\",\n );\n if (researchArtifact) {\n usedFiles.add(researchArtifact.name);\n const researchSection = formatResearchSection(researchArtifact.content);\n if (researchSection) {\n lines.push(\"\");\n lines.push(researchSection);\n }\n }\n\n const planArtifact = artifacts.find(\n (artifact) => artifact.name === \"plan.md\",\n );\n if (planArtifact) {\n lines.push(\"\");\n lines.push(\"### Implementation plan\");\n lines.push(planArtifact.content);\n usedFiles.add(planArtifact.name);\n }\n\n const todoArtifact = artifacts.find(\n (artifact) => artifact.name === \"todos.json\",\n );\n if (todoArtifact) {\n const summary = summarizeTodos(todoArtifact.content);\n if (summary) {\n lines.push(\"\");\n lines.push(\"### Todo list\");\n lines.push(summary);\n }\n usedFiles.add(todoArtifact.name);\n }\n\n const remainingArtifacts = artifacts.filter(\n (artifact) => !usedFiles.has(artifact.name),\n );\n if (remainingArtifacts.length) {\n lines.push(\"\");\n lines.push(\"### Additional artifacts\");\n for (const artifact of remainingArtifacts) {\n lines.push(`#### ${artifact.name}`);\n lines.push(renderCodeFence(artifact.content));\n }\n }\n\n const artifactList =\n uploaded ??\n artifacts.map((artifact) => ({\n name: artifact.name,\n type: artifact.type,\n }));\n\n if (artifactList.length) {\n lines.push(\"\");\n lines.push(\"### Uploaded artifacts\");\n for (const artifact of artifactList) {\n const rawStoragePath =\n \"storage_path\" in artifact\n ? (artifact as Record<string, unknown>).storage_path\n : undefined;\n const storagePath =\n typeof rawStoragePath === \"string\" ? rawStoragePath : undefined;\n const storage =\n storagePath && storagePath.trim().length > 0\n ? ` – \\`${storagePath.trim()}\\``\n : \"\";\n lines.push(`- ${artifact.name} (${artifact.type})${storage}`);\n }\n }\n\n return lines.join(\"\\n\\n\");\n}\n\nfunction renderCodeFence(content: string): string {\n const snippet = truncate(content, MAX_SNIPPET_LENGTH);\n return [\"```\", snippet, \"```\"].join(\"\\n\");\n}\n\nfunction truncate(value: string, maxLength: number): string {\n if (value.length <= maxLength) {\n return value;\n }\n return `${value.slice(0, maxLength)}\\n…`;\n}\n\nfunction formatResearchSection(content: string): string | null {\n try {\n const parsed = JSON.parse(content);\n const sections: string[] = [];\n\n if (parsed.context) {\n sections.push(\"### Research summary\");\n sections.push(parsed.context);\n }\n\n if (parsed.questions?.length) {\n sections.push(\"\");\n sections.push(\"### Questions needing answers\");\n for (const question of parsed.questions) {\n sections.push(`- ${question.question ?? question}`);\n }\n }\n\n if (parsed.answers?.length) {\n sections.push(\"\");\n sections.push(\"### Answers provided\");\n for (const answer of parsed.answers) {\n const questionId = answer.questionId\n ? ` (Q: ${answer.questionId})`\n : \"\";\n sections.push(\n `- ${answer.selectedOption || answer.customInput || \"answer\"}${questionId}`,\n );\n }\n }\n\n return sections.length ? sections.join(\"\\n\") : null;\n } catch {\n return null;\n }\n}\n\nfunction summarizeTodos(content: string): string | null {\n try {\n const data = JSON.parse(content);\n const total = data?.metadata?.total ?? data?.items?.length;\n const completed =\n data?.metadata?.completed ??\n data?.items?.filter(\n (item: { status?: string }) => item.status === \"completed\",\n ).length;\n\n const lines = [`Progress: ${completed}/${total} completed`];\n\n if (data?.items?.length) {\n for (const item of data.items) {\n lines.push(`- [${item.status}] ${item.content}`);\n }\n }\n\n return lines.join(\"\\n\");\n } catch {\n return null;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../../src/workflow/steps/plan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../../src/workflow/steps/plan.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,eAAO,MAAM,QAAQ,EAAE,kBA+JtB,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
2
|
+
import { POSTHOG_NOTIFICATIONS } from '../../acp-extensions.js';
|
|
2
3
|
import { PLANNING_SYSTEM_PROMPT } from '../../agents/planning.js';
|
|
3
4
|
import { TodoManager } from '../../todo-manager.js';
|
|
4
5
|
import { finalizeStepGitActions } from '../utils.js';
|
|
5
6
|
|
|
6
7
|
const planStep = async ({ step, context }) => {
|
|
7
|
-
const { task, cwd, isCloudMode, options, logger, fileManager, gitManager, promptBuilder,
|
|
8
|
+
const { task, cwd, isCloudMode, options, logger, fileManager, gitManager, promptBuilder, sessionId, mcpServers, sendNotification, } = context;
|
|
8
9
|
const stepLogger = logger.child("PlanStep");
|
|
9
10
|
const existingPlan = await fileManager.readPlan(task.id);
|
|
10
11
|
if (existingPlan) {
|
|
@@ -16,13 +17,17 @@ const planStep = async ({ step, context }) => {
|
|
|
16
17
|
stepLogger.info("Waiting for answered research questions", {
|
|
17
18
|
taskId: task.id,
|
|
18
19
|
});
|
|
19
|
-
|
|
20
|
+
await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_COMPLETE, {
|
|
21
|
+
sessionId,
|
|
20
22
|
phase: "research_questions",
|
|
21
|
-
})
|
|
23
|
+
});
|
|
22
24
|
return { status: "skipped", halt: true };
|
|
23
25
|
}
|
|
24
26
|
stepLogger.info("Starting planning phase", { taskId: task.id });
|
|
25
|
-
|
|
27
|
+
await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_START, {
|
|
28
|
+
sessionId,
|
|
29
|
+
phase: "planning",
|
|
30
|
+
});
|
|
26
31
|
let researchContext = "";
|
|
27
32
|
if (researchData) {
|
|
28
33
|
researchContext += `## Research Context\n\n${researchData.context}\n\n`;
|
|
@@ -83,14 +88,13 @@ const planStep = async ({ step, context }) => {
|
|
|
83
88
|
let planContent = "";
|
|
84
89
|
try {
|
|
85
90
|
for await (const message of response) {
|
|
86
|
-
emitEvent(adapter.createRawSDKEvent(message));
|
|
87
|
-
const transformedEvents = adapter.transform(message);
|
|
88
|
-
for (const event of transformedEvents) {
|
|
89
|
-
emitEvent(event);
|
|
90
|
-
}
|
|
91
91
|
const todoList = await todoManager.checkAndPersistFromMessage(message, task.id);
|
|
92
92
|
if (todoList) {
|
|
93
|
-
|
|
93
|
+
await sendNotification(POSTHOG_NOTIFICATIONS.ARTIFACT, {
|
|
94
|
+
sessionId,
|
|
95
|
+
kind: "todos",
|
|
96
|
+
content: todoList,
|
|
97
|
+
});
|
|
94
98
|
}
|
|
95
99
|
// Extract text content for plan
|
|
96
100
|
if (message.type === "assistant" && message.message?.content) {
|
|
@@ -115,10 +119,16 @@ const planStep = async ({ step, context }) => {
|
|
|
115
119
|
commitMessage: `Planning phase for ${task.title}`,
|
|
116
120
|
});
|
|
117
121
|
if (!isCloudMode) {
|
|
118
|
-
|
|
122
|
+
await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_COMPLETE, {
|
|
123
|
+
sessionId,
|
|
124
|
+
phase: "planning",
|
|
125
|
+
});
|
|
119
126
|
return { status: "completed", halt: true };
|
|
120
127
|
}
|
|
121
|
-
|
|
128
|
+
await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_COMPLETE, {
|
|
129
|
+
sessionId,
|
|
130
|
+
phase: "planning",
|
|
131
|
+
});
|
|
122
132
|
return { status: "completed" };
|
|
123
133
|
};
|
|
124
134
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sources":["../../../../src/workflow/steps/plan.ts"],"sourcesContent":["import { query } from \"@anthropic-ai/claude-agent-sdk\";\nimport { PLANNING_SYSTEM_PROMPT } from \"../../agents/planning.js\";\nimport { TodoManager } from \"../../todo-manager.js\";\nimport type { WorkflowStepRunner } from \"../types.js\";\nimport { finalizeStepGitActions } from \"../utils.js\";\n\nexport const planStep: WorkflowStepRunner = async ({ step, context }) => {\n const {\n task,\n cwd,\n isCloudMode,\n options,\n logger,\n fileManager,\n gitManager,\n promptBuilder,\n
|
|
1
|
+
{"version":3,"file":"plan.js","sources":["../../../../src/workflow/steps/plan.ts"],"sourcesContent":["import { query } from \"@anthropic-ai/claude-agent-sdk\";\nimport { POSTHOG_NOTIFICATIONS } from \"../../acp-extensions.js\";\nimport { PLANNING_SYSTEM_PROMPT } from \"../../agents/planning.js\";\nimport { TodoManager } from \"../../todo-manager.js\";\nimport type { WorkflowStepRunner } from \"../types.js\";\nimport { finalizeStepGitActions } from \"../utils.js\";\n\nexport const planStep: WorkflowStepRunner = async ({ step, context }) => {\n const {\n task,\n cwd,\n isCloudMode,\n options,\n logger,\n fileManager,\n gitManager,\n promptBuilder,\n sessionId,\n mcpServers,\n sendNotification,\n } = context;\n\n const stepLogger = logger.child(\"PlanStep\");\n\n const existingPlan = await fileManager.readPlan(task.id);\n if (existingPlan) {\n stepLogger.info(\"Plan already exists, skipping step\", { taskId: task.id });\n return { status: \"skipped\" };\n }\n\n const researchData = await fileManager.readResearch(task.id);\n if (researchData?.questions && !researchData.answered) {\n stepLogger.info(\"Waiting for answered research questions\", {\n taskId: task.id,\n });\n await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_COMPLETE, {\n sessionId,\n phase: \"research_questions\",\n });\n return { status: \"skipped\", halt: true };\n }\n\n stepLogger.info(\"Starting planning phase\", { taskId: task.id });\n await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_START, {\n sessionId,\n phase: \"planning\",\n });\n let researchContext = \"\";\n if (researchData) {\n researchContext += `## Research Context\\n\\n${researchData.context}\\n\\n`;\n if (researchData.keyFiles.length > 0) {\n researchContext += `**Key Files:**\\n${researchData.keyFiles.map((f) => `- ${f}`).join(\"\\n\")}\\n\\n`;\n }\n if (researchData.blockers && researchData.blockers.length > 0) {\n researchContext += `**Considerations:**\\n${researchData.blockers.map((b) => `- ${b}`).join(\"\\n\")}\\n\\n`;\n }\n\n // Add answered questions if they exist\n if (\n researchData.questions &&\n researchData.answers &&\n researchData.answered\n ) {\n researchContext += `## Implementation Decisions\\n\\n`;\n for (const question of researchData.questions) {\n const answer = researchData.answers.find(\n (a) => a.questionId === question.id,\n );\n\n researchContext += `### ${question.question}\\n\\n`;\n if (answer) {\n researchContext += `**Selected:** ${answer.selectedOption}\\n`;\n if (answer.customInput) {\n researchContext += `**Details:** ${answer.customInput}\\n`;\n }\n } else {\n researchContext += `**Selected:** Not answered\\n`;\n }\n researchContext += `\\n`;\n }\n }\n }\n\n const planningPrompt = await promptBuilder.buildPlanningPrompt(task, cwd);\n const fullPrompt = `${PLANNING_SYSTEM_PROMPT}\\n\\n${planningPrompt}\\n\\n${researchContext}`;\n\n const baseOptions: Record<string, unknown> = {\n model: step.model,\n cwd,\n permissionMode: \"plan\",\n settingSources: [\"local\"],\n mcpServers,\n // Allow research tools: read-only operations, web search, MCP resources, and ExitPlanMode\n allowedTools: [\n \"Read\",\n \"Glob\",\n \"Grep\",\n \"WebFetch\",\n \"WebSearch\",\n \"ListMcpResources\",\n \"ReadMcpResource\",\n \"ExitPlanMode\",\n \"TodoWrite\",\n \"BashOutput\",\n ],\n };\n\n const response = query({\n prompt: fullPrompt,\n options: { ...baseOptions, ...(options.queryOverrides || {}) },\n });\n\n const todoManager = new TodoManager(fileManager, stepLogger);\n\n let planContent = \"\";\n try {\n for await (const message of response) {\n const todoList = await todoManager.checkAndPersistFromMessage(\n message,\n task.id,\n );\n if (todoList) {\n await sendNotification(POSTHOG_NOTIFICATIONS.ARTIFACT, {\n sessionId,\n kind: \"todos\",\n content: todoList,\n });\n }\n\n // Extract text content for plan\n if (message.type === \"assistant\" && message.message?.content) {\n for (const block of message.message.content) {\n if (block.type === \"text\" && block.text) {\n planContent += `${block.text}\\n`;\n }\n }\n }\n }\n } catch (error) {\n stepLogger.error(\"Error during plan step query\", error);\n throw error;\n }\n\n if (planContent.trim()) {\n await fileManager.writePlan(task.id, planContent.trim());\n stepLogger.info(\"Plan completed\", { taskId: task.id });\n }\n\n await gitManager.addAllPostHogFiles();\n await finalizeStepGitActions(context, step, {\n commitMessage: `Planning phase for ${task.title}`,\n });\n\n if (!isCloudMode) {\n await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_COMPLETE, {\n sessionId,\n phase: \"planning\",\n });\n return { status: \"completed\", halt: true };\n }\n\n await sendNotification(POSTHOG_NOTIFICATIONS.PHASE_COMPLETE, {\n sessionId,\n phase: \"planning\",\n });\n return { status: \"completed\" };\n};\n"],"names":[],"mappings":";;;;;;AAOO,MAAM,QAAQ,GAAuB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;IACtE,MAAM,EACJ,IAAI,EACJ,GAAG,EACH,WAAW,EACX,OAAO,EACP,MAAM,EACN,WAAW,EACX,UAAU,EACV,aAAa,EACb,SAAS,EACT,UAAU,EACV,gBAAgB,GACjB,GAAG,OAAO;IAEX,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;IAE3C,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACxD,IAAI,YAAY,EAAE;AAChB,QAAA,UAAU,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AAC1E,QAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;IAC9B;IAEA,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5D,IAAI,YAAY,EAAE,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AACrD,QAAA,UAAU,CAAC,IAAI,CAAC,yCAAyC,EAAE;YACzD,MAAM,EAAE,IAAI,CAAC,EAAE;AAChB,SAAA,CAAC;AACF,QAAA,MAAM,gBAAgB,CAAC,qBAAqB,CAAC,cAAc,EAAE;YAC3D,SAAS;AACT,YAAA,KAAK,EAAE,oBAAoB;AAC5B,SAAA,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1C;AAEA,IAAA,UAAU,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AAC/D,IAAA,MAAM,gBAAgB,CAAC,qBAAqB,CAAC,WAAW,EAAE;QACxD,SAAS;AACT,QAAA,KAAK,EAAE,UAAU;AAClB,KAAA,CAAC;IACF,IAAI,eAAe,GAAG,EAAE;IACxB,IAAI,YAAY,EAAE;AAChB,QAAA,eAAe,IAAI,CAAA,uBAAA,EAA0B,YAAY,CAAC,OAAO,MAAM;QACvE,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACpC,eAAe,IAAI,mBAAmB,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAA,EAAK,CAAC,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,IAAA,CAAM;QACnG;AACA,QAAA,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7D,eAAe,IAAI,wBAAwB,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAA,EAAK,CAAC,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,IAAA,CAAM;QACxG;;QAGA,IACE,YAAY,CAAC,SAAS;AACtB,YAAA,YAAY,CAAC,OAAO;YACpB,YAAY,CAAC,QAAQ,EACrB;YACA,eAAe,IAAI,iCAAiC;AACpD,YAAA,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,SAAS,EAAE;gBAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CACtC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,EAAE,CACpC;AAED,gBAAA,eAAe,IAAI,CAAA,IAAA,EAAO,QAAQ,CAAC,QAAQ,MAAM;gBACjD,IAAI,MAAM,EAAE;AACV,oBAAA,eAAe,IAAI,CAAA,cAAA,EAAiB,MAAM,CAAC,cAAc,IAAI;AAC7D,oBAAA,IAAI,MAAM,CAAC,WAAW,EAAE;AACtB,wBAAA,eAAe,IAAI,CAAA,aAAA,EAAgB,MAAM,CAAC,WAAW,IAAI;oBAC3D;gBACF;qBAAO;oBACL,eAAe,IAAI,8BAA8B;gBACnD;gBACA,eAAe,IAAI,IAAI;YACzB;QACF;IACF;IAEA,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC;IACzE,MAAM,UAAU,GAAG,CAAA,EAAG,sBAAsB,OAAO,cAAc,CAAA,IAAA,EAAO,eAAe,CAAA,CAAE;AAEzF,IAAA,MAAM,WAAW,GAA4B;QAC3C,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG;AACH,QAAA,cAAc,EAAE,MAAM;QACtB,cAAc,EAAE,CAAC,OAAO,CAAC;QACzB,UAAU;;AAEV,QAAA,YAAY,EAAE;YACZ,MAAM;YACN,MAAM;YACN,MAAM;YACN,UAAU;YACV,WAAW;YACX,kBAAkB;YAClB,iBAAiB;YACjB,cAAc;YACd,WAAW;YACX,YAAY;AACb,SAAA;KACF;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC;AACrB,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,OAAO,EAAE,EAAE,GAAG,WAAW,EAAE,IAAI,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE;AAC/D,KAAA,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC;IAE5D,IAAI,WAAW,GAAG,EAAE;AACpB,IAAA,IAAI;AACF,QAAA,WAAW,MAAM,OAAO,IAAI,QAAQ,EAAE;AACpC,YAAA,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,0BAA0B,CAC3D,OAAO,EACP,IAAI,CAAC,EAAE,CACR;YACD,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,gBAAgB,CAAC,qBAAqB,CAAC,QAAQ,EAAE;oBACrD,SAAS;AACT,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,OAAO,EAAE,QAAQ;AAClB,iBAAA,CAAC;YACJ;;AAGA,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE;gBAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;oBAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE;AACvC,wBAAA,WAAW,IAAI,CAAA,EAAG,KAAK,CAAC,IAAI,IAAI;oBAClC;gBACF;YACF;QACF;IACF;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,UAAU,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC;AACvD,QAAA,MAAM,KAAK;IACb;AAEA,IAAA,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE;AACtB,QAAA,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;AACxD,QAAA,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;IACxD;AAEA,IAAA,MAAM,UAAU,CAAC,kBAAkB,EAAE;AACrC,IAAA,MAAM,sBAAsB,CAAC,OAAO,EAAE,IAAI,EAAE;AAC1C,QAAA,aAAa,EAAE,CAAA,mBAAA,EAAsB,IAAI,CAAC,KAAK,CAAA,CAAE;AAClD,KAAA,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE;AAChB,QAAA,MAAM,gBAAgB,CAAC,qBAAqB,CAAC,cAAc,EAAE;YAC3D,SAAS;AACT,YAAA,KAAK,EAAE,UAAU;AAClB,SAAA,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;IAC5C;AAEA,IAAA,MAAM,gBAAgB,CAAC,qBAAqB,CAAC,cAAc,EAAE;QAC3D,SAAS;AACT,QAAA,KAAK,EAAE,UAAU;AAClB,KAAA,CAAC;AACF,IAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;AAChC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../../../src/workflow/steps/research.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../../../src/workflow/steps/research.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,eAAO,MAAM,YAAY,EAAE,kBAuN1B,CAAC"}
|