@weavelogic/knowledge-graph-agent 0.2.0 → 0.3.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/README.md +686 -304
- package/dist/_virtual/_commonjsHelpers.js +7 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/_virtual/additionalItems.js +5 -0
- package/dist/_virtual/additionalItems.js.map +1 -0
- package/dist/_virtual/additionalProperties.js +5 -0
- package/dist/_virtual/additionalProperties.js.map +1 -0
- package/dist/_virtual/ajv.js +6 -0
- package/dist/_virtual/ajv.js.map +1 -0
- package/dist/_virtual/ajv2.js +5 -0
- package/dist/_virtual/ajv2.js.map +1 -0
- package/dist/_virtual/allOf.js +5 -0
- package/dist/_virtual/allOf.js.map +1 -0
- package/dist/_virtual/anyOf.js +5 -0
- package/dist/_virtual/anyOf.js.map +1 -0
- package/dist/_virtual/applicability.js +5 -0
- package/dist/_virtual/applicability.js.map +1 -0
- package/dist/_virtual/boolSchema.js +5 -0
- package/dist/_virtual/boolSchema.js.map +1 -0
- package/dist/_virtual/code.js +5 -0
- package/dist/_virtual/code.js.map +1 -0
- package/dist/_virtual/code2.js +5 -0
- package/dist/_virtual/code2.js.map +1 -0
- package/dist/_virtual/const.js +5 -0
- package/dist/_virtual/const.js.map +1 -0
- package/dist/_virtual/contains.js +5 -0
- package/dist/_virtual/contains.js.map +1 -0
- package/dist/_virtual/core.js +5 -0
- package/dist/_virtual/core.js.map +1 -0
- package/dist/_virtual/dataType.js +5 -0
- package/dist/_virtual/dataType.js.map +1 -0
- package/dist/_virtual/defaults.js +5 -0
- package/dist/_virtual/defaults.js.map +1 -0
- package/dist/_virtual/dependencies.js +5 -0
- package/dist/_virtual/dependencies.js.map +1 -0
- package/dist/_virtual/draft7.js +5 -0
- package/dist/_virtual/draft7.js.map +1 -0
- package/dist/_virtual/enum.js +5 -0
- package/dist/_virtual/enum.js.map +1 -0
- package/dist/_virtual/equal.js +5 -0
- package/dist/_virtual/equal.js.map +1 -0
- package/dist/_virtual/errors.js +5 -0
- package/dist/_virtual/errors.js.map +1 -0
- package/dist/_virtual/format.js +5 -0
- package/dist/_virtual/format.js.map +1 -0
- package/dist/_virtual/formats.js +5 -0
- package/dist/_virtual/formats.js.map +1 -0
- package/dist/_virtual/id.js +5 -0
- package/dist/_virtual/id.js.map +1 -0
- package/dist/_virtual/if.js +5 -0
- package/dist/_virtual/if.js.map +1 -0
- package/dist/_virtual/index.js +8 -0
- package/dist/_virtual/index.js.map +1 -0
- package/dist/_virtual/index10.js +5 -0
- package/dist/_virtual/index10.js.map +1 -0
- package/dist/_virtual/index11.js +5 -0
- package/dist/_virtual/index11.js.map +1 -0
- package/dist/_virtual/index12.js +5 -0
- package/dist/_virtual/index12.js.map +1 -0
- package/dist/_virtual/index2.js +5 -0
- package/dist/_virtual/index2.js.map +1 -0
- package/dist/_virtual/index3.js +5 -0
- package/dist/_virtual/index3.js.map +1 -0
- package/dist/_virtual/index4.js +5 -0
- package/dist/_virtual/index4.js.map +1 -0
- package/dist/_virtual/index5.js +5 -0
- package/dist/_virtual/index5.js.map +1 -0
- package/dist/_virtual/index6.js +5 -0
- package/dist/_virtual/index6.js.map +1 -0
- package/dist/_virtual/index7.js +5 -0
- package/dist/_virtual/index7.js.map +1 -0
- package/dist/_virtual/index8.js +5 -0
- package/dist/_virtual/index8.js.map +1 -0
- package/dist/_virtual/index9.js +5 -0
- package/dist/_virtual/index9.js.map +1 -0
- package/dist/_virtual/items.js +5 -0
- package/dist/_virtual/items.js.map +1 -0
- package/dist/_virtual/items2020.js +5 -0
- package/dist/_virtual/items2020.js.map +1 -0
- package/dist/_virtual/keyword.js +5 -0
- package/dist/_virtual/keyword.js.map +1 -0
- package/dist/_virtual/limit.js +5 -0
- package/dist/_virtual/limit.js.map +1 -0
- package/dist/_virtual/limitItems.js +5 -0
- package/dist/_virtual/limitItems.js.map +1 -0
- package/dist/_virtual/limitLength.js +5 -0
- package/dist/_virtual/limitLength.js.map +1 -0
- package/dist/_virtual/limitNumber.js +5 -0
- package/dist/_virtual/limitNumber.js.map +1 -0
- package/dist/_virtual/limitProperties.js +5 -0
- package/dist/_virtual/limitProperties.js.map +1 -0
- package/dist/_virtual/metadata.js +5 -0
- package/dist/_virtual/metadata.js.map +1 -0
- package/dist/_virtual/multipleOf.js +5 -0
- package/dist/_virtual/multipleOf.js.map +1 -0
- package/dist/_virtual/names.js +5 -0
- package/dist/_virtual/names.js.map +1 -0
- package/dist/_virtual/not.js +5 -0
- package/dist/_virtual/not.js.map +1 -0
- package/dist/_virtual/oneOf.js +5 -0
- package/dist/_virtual/oneOf.js.map +1 -0
- package/dist/_virtual/pattern.js +5 -0
- package/dist/_virtual/pattern.js.map +1 -0
- package/dist/_virtual/patternProperties.js +5 -0
- package/dist/_virtual/patternProperties.js.map +1 -0
- package/dist/_virtual/prefixItems.js +5 -0
- package/dist/_virtual/prefixItems.js.map +1 -0
- package/dist/_virtual/properties.js +5 -0
- package/dist/_virtual/properties.js.map +1 -0
- package/dist/_virtual/propertyNames.js +5 -0
- package/dist/_virtual/propertyNames.js.map +1 -0
- package/dist/_virtual/ref.js +5 -0
- package/dist/_virtual/ref.js.map +1 -0
- package/dist/_virtual/ref_error.js +5 -0
- package/dist/_virtual/ref_error.js.map +1 -0
- package/dist/_virtual/required.js +5 -0
- package/dist/_virtual/required.js.map +1 -0
- package/dist/_virtual/resolve.js +5 -0
- package/dist/_virtual/resolve.js.map +1 -0
- package/dist/_virtual/rules.js +5 -0
- package/dist/_virtual/rules.js.map +1 -0
- package/dist/_virtual/scope.js +5 -0
- package/dist/_virtual/scope.js.map +1 -0
- package/dist/_virtual/subschema.js +5 -0
- package/dist/_virtual/subschema.js.map +1 -0
- package/dist/_virtual/thenElse.js +5 -0
- package/dist/_virtual/thenElse.js.map +1 -0
- package/dist/_virtual/types.js +5 -0
- package/dist/_virtual/types.js.map +1 -0
- package/dist/_virtual/ucs2length.js +5 -0
- package/dist/_virtual/ucs2length.js.map +1 -0
- package/dist/_virtual/uniqueItems.js +5 -0
- package/dist/_virtual/uniqueItems.js.map +1 -0
- package/dist/_virtual/uri.js +5 -0
- package/dist/_virtual/uri.js.map +1 -0
- package/dist/_virtual/util.js +5 -0
- package/dist/_virtual/util.js.map +1 -0
- package/dist/_virtual/validation_error.js +5 -0
- package/dist/_virtual/validation_error.js.map +1 -0
- package/dist/agents/analyst-agent.d.ts +230 -0
- package/dist/agents/analyst-agent.d.ts.map +1 -0
- package/dist/agents/analyst-agent.js +793 -0
- package/dist/agents/analyst-agent.js.map +1 -0
- package/dist/agents/architect-agent.d.ts +248 -0
- package/dist/agents/architect-agent.d.ts.map +1 -0
- package/dist/agents/architect-agent.js +685 -0
- package/dist/agents/architect-agent.js.map +1 -0
- package/dist/agents/base-agent.d.ts +169 -0
- package/dist/agents/base-agent.d.ts.map +1 -0
- package/dist/agents/base-agent.js +441 -0
- package/dist/agents/base-agent.js.map +1 -0
- package/dist/agents/coder-agent.d.ts +191 -0
- package/dist/agents/coder-agent.d.ts.map +1 -0
- package/dist/agents/coder-agent.js +1008 -0
- package/dist/agents/coder-agent.js.map +1 -0
- package/dist/agents/index.d.ts +18 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +40 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/registry.d.ts +213 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +419 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/researcher-agent.d.ts +226 -0
- package/dist/agents/researcher-agent.d.ts.map +1 -0
- package/dist/agents/researcher-agent.js +572 -0
- package/dist/agents/researcher-agent.js.map +1 -0
- package/dist/agents/rules-engine.d.ts +320 -0
- package/dist/agents/rules-engine.d.ts.map +1 -0
- package/dist/agents/rules-engine.js +552 -0
- package/dist/agents/rules-engine.js.map +1 -0
- package/dist/agents/tester-agent.d.ts +219 -0
- package/dist/agents/tester-agent.d.ts.map +1 -0
- package/dist/agents/tester-agent.js +683 -0
- package/dist/agents/tester-agent.js.map +1 -0
- package/dist/agents/types.d.ts +425 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +57 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/caching/index.d.ts +55 -0
- package/dist/caching/index.d.ts.map +1 -0
- package/dist/caching/index.js +206 -0
- package/dist/caching/index.js.map +1 -0
- package/dist/caching/lru-cache.d.ts +254 -0
- package/dist/caching/lru-cache.d.ts.map +1 -0
- package/dist/caching/types.d.ts +95 -0
- package/dist/caching/types.d.ts.map +1 -0
- package/dist/chunking/chunker.d.ts +94 -0
- package/dist/chunking/chunker.d.ts.map +1 -0
- package/dist/chunking/index.d.ts +125 -0
- package/dist/chunking/index.d.ts.map +1 -0
- package/dist/chunking/index.js +283 -0
- package/dist/chunking/index.js.map +1 -0
- package/dist/chunking/types.d.ts +92 -0
- package/dist/chunking/types.d.ts.map +1 -0
- package/dist/cli/commands/commit.d.ts +11 -0
- package/dist/cli/commands/commit.d.ts.map +1 -0
- package/dist/cli/commands/commit.js +379 -0
- package/dist/cli/commands/commit.js.map +1 -0
- package/dist/cli/commands/config.d.ts +8 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +107 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/cultivate.d.ts +16 -0
- package/dist/cli/commands/cultivate.d.ts.map +1 -0
- package/dist/cli/commands/cultivate.js +254 -0
- package/dist/cli/commands/cultivate.js.map +1 -0
- package/dist/cli/commands/diagnostics.d.ts +8 -0
- package/dist/cli/commands/diagnostics.d.ts.map +1 -0
- package/dist/cli/commands/diagnostics.js +140 -0
- package/dist/cli/commands/diagnostics.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +13 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/init-primitives.d.ts +19 -0
- package/dist/cli/commands/init-primitives.d.ts.map +1 -0
- package/dist/cli/commands/init-primitives.js +208 -0
- package/dist/cli/commands/init-primitives.js.map +1 -0
- package/dist/cli/commands/sop.d.ts +14 -0
- package/dist/cli/commands/sop.d.ts.map +1 -0
- package/dist/cli/commands/sop.js +598 -0
- package/dist/cli/commands/sop.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +40 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/config/index.d.ts +153 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +141 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/manager.d.ts +136 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/types.d.ts +127 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/core/cache.d.ts +185 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +435 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/cultivation/deep-analyzer.d.ts +129 -0
- package/dist/cultivation/deep-analyzer.d.ts.map +1 -0
- package/dist/cultivation/deep-analyzer.js +322 -0
- package/dist/cultivation/deep-analyzer.js.map +1 -0
- package/dist/cultivation/index.d.ts +13 -0
- package/dist/cultivation/index.d.ts.map +1 -0
- package/dist/cultivation/seed-generator.d.ts +92 -0
- package/dist/cultivation/seed-generator.d.ts.map +1 -0
- package/dist/cultivation/seed-generator.js +1033 -0
- package/dist/cultivation/seed-generator.js.map +1 -0
- package/dist/cultivation/types.d.ts +230 -0
- package/dist/cultivation/types.d.ts.map +1 -0
- package/dist/generators/claude-md.d.ts +7 -0
- package/dist/generators/claude-md.d.ts.map +1 -1
- package/dist/generators/claude-md.js.map +1 -1
- package/dist/generators/docs-init.d.ts +6 -0
- package/dist/generators/docs-init.d.ts.map +1 -1
- package/dist/generators/docs-init.js.map +1 -1
- package/dist/health/checks.d.ts +135 -0
- package/dist/health/checks.d.ts.map +1 -0
- package/dist/health/index.d.ts +119 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/health/index.js +191 -0
- package/dist/health/index.js.map +1 -0
- package/dist/health/monitor.d.ts +146 -0
- package/dist/health/monitor.d.ts.map +1 -0
- package/dist/health/types.d.ts +135 -0
- package/dist/health/types.d.ts.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +173 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/auto-commit.d.ts +175 -0
- package/dist/integrations/auto-commit.d.ts.map +1 -0
- package/dist/integrations/auto-commit.js +399 -0
- package/dist/integrations/auto-commit.js.map +1 -0
- package/dist/integrations/git.d.ts +299 -0
- package/dist/integrations/git.d.ts.map +1 -0
- package/dist/integrations/git.js +465 -0
- package/dist/integrations/git.js.map +1 -0
- package/dist/mcp-server/bin.d.ts +11 -0
- package/dist/mcp-server/bin.d.ts.map +1 -0
- package/dist/mcp-server/handlers/index.d.ts +57 -0
- package/dist/mcp-server/handlers/index.d.ts.map +1 -0
- package/dist/mcp-server/handlers/index.js +235 -0
- package/dist/mcp-server/handlers/index.js.map +1 -0
- package/dist/mcp-server/index.d.ts +28 -0
- package/dist/mcp-server/index.d.ts.map +1 -0
- package/dist/mcp-server/server.d.ts +133 -0
- package/dist/mcp-server/server.d.ts.map +1 -0
- package/dist/mcp-server/server.js +280 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tools/agents/index.d.ts +10 -0
- package/dist/mcp-server/tools/agents/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/agents/list.d.ts +19 -0
- package/dist/mcp-server/tools/agents/list.d.ts.map +1 -0
- package/dist/mcp-server/tools/agents/spawn.d.ts +19 -0
- package/dist/mcp-server/tools/agents/spawn.d.ts.map +1 -0
- package/dist/mcp-server/tools/graph/generate.d.ts +21 -0
- package/dist/mcp-server/tools/graph/generate.d.ts.map +1 -0
- package/dist/mcp-server/tools/graph/index.d.ts +11 -0
- package/dist/mcp-server/tools/graph/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/graph/query.d.ts +22 -0
- package/dist/mcp-server/tools/graph/query.d.ts.map +1 -0
- package/dist/mcp-server/tools/graph/stats.d.ts +22 -0
- package/dist/mcp-server/tools/graph/stats.d.ts.map +1 -0
- package/dist/mcp-server/tools/health.d.ts +21 -0
- package/dist/mcp-server/tools/health.d.ts.map +1 -0
- package/dist/mcp-server/tools/index.d.ts +13 -0
- package/dist/mcp-server/tools/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/registry.d.ts +90 -0
- package/dist/mcp-server/tools/registry.d.ts.map +1 -0
- package/dist/mcp-server/tools/registry.js +663 -0
- package/dist/mcp-server/tools/registry.js.map +1 -0
- package/dist/mcp-server/tools/search/index.d.ts +10 -0
- package/dist/mcp-server/tools/search/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/search/nodes.d.ts +22 -0
- package/dist/mcp-server/tools/search/nodes.d.ts.map +1 -0
- package/dist/mcp-server/tools/search/tags.d.ts +22 -0
- package/dist/mcp-server/tools/search/tags.d.ts.map +1 -0
- package/dist/mcp-server/types/index.d.ts +286 -0
- package/dist/mcp-server/types/index.d.ts.map +1 -0
- package/dist/memory/index.d.ts +10 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/vault-sync.d.ts +212 -0
- package/dist/memory/vault-sync.d.ts.map +1 -0
- package/dist/memory/vault-sync.js +463 -0
- package/dist/memory/vault-sync.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +296 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +71 -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 +26 -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 +407 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1332 -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 +71 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +1 -0
- package/dist/node_modules/ajv/dist/ajv.js +84 -0
- package/dist/node_modules/ajv/dist/ajv.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/codegen/code.js +160 -0
- package/dist/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/codegen/index.js +728 -0
- package/dist/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/codegen/scope.js +152 -0
- package/dist/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/errors.js +131 -0
- package/dist/node_modules/ajv/dist/compile/errors.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/index.js +234 -0
- package/dist/node_modules/ajv/dist/compile/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/names.js +44 -0
- package/dist/node_modules/ajv/dist/compile/names.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/ref_error.js +22 -0
- package/dist/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/resolve.js +163 -0
- package/dist/node_modules/ajv/dist/compile/resolve.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/rules.js +35 -0
- package/dist/node_modules/ajv/dist/compile/rules.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/util.js +173 -0
- package/dist/node_modules/ajv/dist/compile/util.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/applicability.js +27 -0
- package/dist/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js +58 -0
- package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/dataType.js +193 -0
- package/dist/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/defaults.js +43 -0
- package/dist/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/index.js +522 -0
- package/dist/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/keyword.js +126 -0
- package/dist/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/subschema.js +89 -0
- package/dist/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
- package/dist/node_modules/ajv/dist/core.js +628 -0
- package/dist/node_modules/ajv/dist/core.js.map +1 -0
- package/dist/node_modules/ajv/dist/refs/data.json.js +24 -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 +25 -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 +16 -0
- package/dist/node_modules/ajv/dist/runtime/equal.js.map +1 -0
- package/dist/node_modules/ajv/dist/runtime/ucs2length.js +30 -0
- package/dist/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
- package/dist/node_modules/ajv/dist/runtime/uri.js +16 -0
- package/dist/node_modules/ajv/dist/runtime/uri.js.map +1 -0
- package/dist/node_modules/ajv/dist/runtime/validation_error.js +20 -0
- package/dist/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +59 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +114 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js +32 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +22 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js +100 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +103 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js +75 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +68 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js +64 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js +43 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js +36 -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 +81 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +22 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js +66 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +49 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +23 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/code.js +140 -0
- package/dist/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/id.js +19 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/index.js +27 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/ref.js +132 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js +114 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js +18 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/draft7.js +31 -0
- package/dist/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/format.js +95 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/index.js +16 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/metadata.js +27 -0
- package/dist/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/const.js +36 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js +56 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +52 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js +34 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js +39 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +37 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +34 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +33 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js +34 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/required.js +89 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +75 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
- package/dist/node_modules/ajv-formats/dist/formats.js +209 -0
- package/dist/node_modules/ajv-formats/dist/formats.js.map +1 -0
- package/dist/node_modules/ajv-formats/dist/index.js +51 -0
- package/dist/node_modules/ajv-formats/dist/index.js.map +1 -0
- package/dist/node_modules/ajv-formats/dist/limit.js +80 -0
- package/dist/node_modules/ajv-formats/dist/limit.js.map +1 -0
- package/dist/node_modules/fast-deep-equal/index.js +39 -0
- package/dist/node_modules/fast-deep-equal/index.js.map +1 -0
- package/dist/node_modules/fast-uri/index.js +261 -0
- package/dist/node_modules/fast-uri/index.js.map +1 -0
- package/dist/node_modules/fast-uri/lib/schemes.js +215 -0
- package/dist/node_modules/fast-uri/lib/schemes.js.map +1 -0
- package/dist/node_modules/fast-uri/lib/utils.js +261 -0
- package/dist/node_modules/fast-uri/lib/utils.js.map +1 -0
- package/dist/node_modules/json-schema-traverse/index.js +92 -0
- package/dist/node_modules/json-schema-traverse/index.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/errors.js +37 -0
- package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/iso.js +43 -0
- package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/parse.js +13 -0
- package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/schemas.js +688 -0
- package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
- package/dist/node_modules/zod/v4/core/api.js +492 -0
- package/dist/node_modules/zod/v4/core/api.js.map +1 -0
- package/dist/node_modules/zod/v4/core/checks.js +405 -0
- package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
- package/dist/node_modules/zod/v4/core/core.js +58 -0
- package/dist/node_modules/zod/v4/core/core.js.map +1 -0
- package/dist/node_modules/zod/v4/core/doc.js +38 -0
- package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
- package/dist/node_modules/zod/v4/core/errors.js +82 -0
- package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
- package/dist/node_modules/zod/v4/core/parse.js +60 -0
- package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
- package/dist/node_modules/zod/v4/core/regexes.js +87 -0
- package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
- package/dist/node_modules/zod/v4/core/registries.js +52 -0
- package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
- package/dist/node_modules/zod/v4/core/schemas.js +1283 -0
- package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
- package/dist/node_modules/zod/v4/core/util.js +341 -0
- package/dist/node_modules/zod/v4/core/util.js.map +1 -0
- package/dist/node_modules/zod/v4/core/versions.js +9 -0
- package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +2 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
- package/dist/reasoning/index.d.ts +74 -0
- package/dist/reasoning/index.d.ts.map +1 -0
- package/dist/reasoning/index.js +124 -0
- package/dist/reasoning/index.js.map +1 -0
- package/dist/reasoning/tracker.d.ts +210 -0
- package/dist/reasoning/tracker.d.ts.map +1 -0
- package/dist/reasoning/types.d.ts +146 -0
- package/dist/reasoning/types.d.ts.map +1 -0
- package/dist/recovery/backup.d.ts +110 -0
- package/dist/recovery/backup.d.ts.map +1 -0
- package/dist/recovery/index.d.ts +70 -0
- package/dist/recovery/index.d.ts.map +1 -0
- package/dist/recovery/index.js +186 -0
- package/dist/recovery/index.js.map +1 -0
- package/dist/recovery/integrity.d.ts +74 -0
- package/dist/recovery/integrity.d.ts.map +1 -0
- package/dist/recovery/types.d.ts +94 -0
- package/dist/recovery/types.d.ts.map +1 -0
- package/dist/services/index.d.ts +130 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +134 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/manager.d.ts +140 -0
- package/dist/services/manager.d.ts.map +1 -0
- package/dist/services/types.d.ts +106 -0
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/watchers.d.ts +95 -0
- package/dist/services/watchers.d.ts.map +1 -0
- package/dist/sops/compliance-checker.d.ts +83 -0
- package/dist/sops/compliance-checker.d.ts.map +1 -0
- package/dist/sops/compliance-checker.js +399 -0
- package/dist/sops/compliance-checker.js.map +1 -0
- package/dist/sops/gap-analyzer.d.ts +124 -0
- package/dist/sops/gap-analyzer.d.ts.map +1 -0
- package/dist/sops/gap-analyzer.js +313 -0
- package/dist/sops/gap-analyzer.js.map +1 -0
- package/dist/sops/index.d.ts +14 -0
- package/dist/sops/index.d.ts.map +1 -0
- package/dist/sops/overlay-manager.d.ts +115 -0
- package/dist/sops/overlay-manager.d.ts.map +1 -0
- package/dist/sops/overlay-manager.js +394 -0
- package/dist/sops/overlay-manager.js.map +1 -0
- package/dist/sops/registry.d.ts +73 -0
- package/dist/sops/registry.d.ts.map +1 -0
- package/dist/sops/registry.js +919 -0
- package/dist/sops/registry.js.map +1 -0
- package/dist/sops/types.d.ts +377 -0
- package/dist/sops/types.d.ts.map +1 -0
- package/dist/sops/types.js +46 -0
- package/dist/sops/types.js.map +1 -0
- package/dist/utils/error-recovery.d.ts +230 -0
- package/dist/utils/error-recovery.d.ts.map +1 -0
- package/dist/utils/error-recovery.js +228 -0
- package/dist/utils/error-recovery.js.map +1 -0
- package/dist/utils/error-taxonomy.d.ts +149 -0
- package/dist/utils/error-taxonomy.d.ts.map +1 -0
- package/dist/utils/error-taxonomy.js +260 -0
- package/dist/utils/error-taxonomy.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +139 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +311 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/workflows/index.d.ts +11 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/registry.d.ts +118 -0
- package/dist/workflows/registry.d.ts.map +1 -0
- package/dist/workflows/registry.js +575 -0
- package/dist/workflows/registry.js.map +1 -0
- package/dist/workflows/types.d.ts +322 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +16 -0
- package/dist/workflows/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import { retry } from "../utils/error-recovery.js";
|
|
2
|
+
import { getLogger } from "../utils/logger.js";
|
|
3
|
+
import { createAgentId, AgentStatus, MessageType, TaskPriority, createTaskId } from "./types.js";
|
|
4
|
+
class BaseAgent {
|
|
5
|
+
/** Agent configuration */
|
|
6
|
+
config;
|
|
7
|
+
/** Agent runtime state */
|
|
8
|
+
_state;
|
|
9
|
+
/** Logger instance */
|
|
10
|
+
logger;
|
|
11
|
+
/** Message handlers for different message types */
|
|
12
|
+
messageHandlers = /* @__PURE__ */ new Map();
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.config = {
|
|
15
|
+
...config,
|
|
16
|
+
id: config.id ?? createAgentId(config.type)
|
|
17
|
+
};
|
|
18
|
+
this._state = {
|
|
19
|
+
id: this.config.id,
|
|
20
|
+
status: AgentStatus.IDLE,
|
|
21
|
+
taskQueue: [],
|
|
22
|
+
completedTasks: [],
|
|
23
|
+
lastActivity: /* @__PURE__ */ new Date(),
|
|
24
|
+
errorCount: 0
|
|
25
|
+
};
|
|
26
|
+
this.logger = getLogger().child(`agent:${this.config.name}`);
|
|
27
|
+
this.registerDefaultMessageHandlers();
|
|
28
|
+
}
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// State Management
|
|
31
|
+
// ============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* Get current agent state
|
|
34
|
+
*/
|
|
35
|
+
get state() {
|
|
36
|
+
return { ...this._state };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get current agent status
|
|
40
|
+
*/
|
|
41
|
+
getStatus() {
|
|
42
|
+
return this._state.status;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Update agent status
|
|
46
|
+
*/
|
|
47
|
+
setStatus(status) {
|
|
48
|
+
const previousStatus = this._state.status;
|
|
49
|
+
this._state.status = status;
|
|
50
|
+
this._state.lastActivity = /* @__PURE__ */ new Date();
|
|
51
|
+
if (previousStatus !== status) {
|
|
52
|
+
this.logger.debug(`Status changed: ${previousStatus} -> ${status}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// ============================================================================
|
|
56
|
+
// Task Execution
|
|
57
|
+
// ============================================================================
|
|
58
|
+
/**
|
|
59
|
+
* Execute a task
|
|
60
|
+
*
|
|
61
|
+
* This is the main entry point for task execution. It handles:
|
|
62
|
+
* - Pre-task hooks (if enabled)
|
|
63
|
+
* - Input validation
|
|
64
|
+
* - Retry logic
|
|
65
|
+
* - Timeout handling
|
|
66
|
+
* - Post-task hooks (if enabled)
|
|
67
|
+
* - Error handling and logging
|
|
68
|
+
*/
|
|
69
|
+
async execute(task) {
|
|
70
|
+
const startTime = /* @__PURE__ */ new Date();
|
|
71
|
+
this.logger.info(`Executing task: ${task.id}`, {
|
|
72
|
+
description: task.description,
|
|
73
|
+
priority: task.priority
|
|
74
|
+
});
|
|
75
|
+
if (this.config.claudeFlow?.hooks?.preTask) {
|
|
76
|
+
await this.runClaudeFlowHook("pre-task", task);
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
const validationResult = await this.validateInput(task);
|
|
80
|
+
if (!validationResult.valid) {
|
|
81
|
+
return this.createErrorResult(
|
|
82
|
+
"VALIDATION_ERROR",
|
|
83
|
+
validationResult.error ?? "Input validation failed",
|
|
84
|
+
startTime
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
this.setStatus(AgentStatus.RUNNING);
|
|
88
|
+
this._state.currentTask = task;
|
|
89
|
+
let result;
|
|
90
|
+
const retryConfig = this.config.retry;
|
|
91
|
+
if (retryConfig && retryConfig.maxRetries > 0) {
|
|
92
|
+
const retryOptions = {
|
|
93
|
+
maxRetries: retryConfig.maxRetries,
|
|
94
|
+
initialDelay: retryConfig.backoffMs,
|
|
95
|
+
backoffFactor: retryConfig.backoffMultiplier ?? 2,
|
|
96
|
+
isRetryable: (error) => this.isRetryableError(error)
|
|
97
|
+
};
|
|
98
|
+
result = await retry(
|
|
99
|
+
async () => this.executeWithTimeout(task),
|
|
100
|
+
retryOptions
|
|
101
|
+
);
|
|
102
|
+
} else {
|
|
103
|
+
result = await this.executeWithTimeout(task);
|
|
104
|
+
}
|
|
105
|
+
if (result.success) {
|
|
106
|
+
this._state.completedTasks.push(task.id);
|
|
107
|
+
this.setStatus(AgentStatus.COMPLETED);
|
|
108
|
+
} else {
|
|
109
|
+
this._state.errorCount++;
|
|
110
|
+
this.setStatus(AgentStatus.FAILED);
|
|
111
|
+
}
|
|
112
|
+
result.metrics = this.calculateMetrics(startTime, /* @__PURE__ */ new Date());
|
|
113
|
+
if (this.config.claudeFlow?.hooks?.postTask) {
|
|
114
|
+
await this.runClaudeFlowHook("post-task", task, result);
|
|
115
|
+
}
|
|
116
|
+
return result;
|
|
117
|
+
} catch (error) {
|
|
118
|
+
this._state.errorCount++;
|
|
119
|
+
this.setStatus(AgentStatus.FAILED);
|
|
120
|
+
const agentError = this.normalizeError(error);
|
|
121
|
+
this.logger.error(`Task execution failed: ${task.id}`, error);
|
|
122
|
+
return this.createErrorResult(agentError.code, agentError.message, startTime, {
|
|
123
|
+
stack: agentError.stack,
|
|
124
|
+
retryable: agentError.retryable
|
|
125
|
+
});
|
|
126
|
+
} finally {
|
|
127
|
+
this._state.currentTask = void 0;
|
|
128
|
+
this._state.lastActivity = /* @__PURE__ */ new Date();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Execute task with timeout
|
|
133
|
+
*/
|
|
134
|
+
async executeWithTimeout(task) {
|
|
135
|
+
const timeout = task.timeout ?? this.config.taskTimeout ?? 3e4;
|
|
136
|
+
return new Promise((resolve, reject) => {
|
|
137
|
+
const timer = setTimeout(() => {
|
|
138
|
+
reject(new Error(`Task execution timed out after ${timeout}ms`));
|
|
139
|
+
}, timeout);
|
|
140
|
+
this.executeTask(task).then((result) => {
|
|
141
|
+
clearTimeout(timer);
|
|
142
|
+
resolve(result);
|
|
143
|
+
}).catch((error) => {
|
|
144
|
+
clearTimeout(timer);
|
|
145
|
+
reject(error);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
// ============================================================================
|
|
150
|
+
// Input Validation
|
|
151
|
+
// ============================================================================
|
|
152
|
+
/**
|
|
153
|
+
* Validate task input
|
|
154
|
+
*
|
|
155
|
+
* Override this method to implement custom validation logic.
|
|
156
|
+
*/
|
|
157
|
+
async validateInput(task) {
|
|
158
|
+
if (!task.id) {
|
|
159
|
+
return { valid: false, error: "Task ID is required" };
|
|
160
|
+
}
|
|
161
|
+
if (!task.description) {
|
|
162
|
+
return { valid: false, error: "Task description is required" };
|
|
163
|
+
}
|
|
164
|
+
if (task.dependencies && task.dependencies.length > 0) {
|
|
165
|
+
const unresolvedDeps = task.dependencies.filter(
|
|
166
|
+
(dep) => !this._state.completedTasks.includes(dep)
|
|
167
|
+
);
|
|
168
|
+
if (unresolvedDeps.length > 0) {
|
|
169
|
+
return {
|
|
170
|
+
valid: false,
|
|
171
|
+
error: `Unresolved dependencies: ${unresolvedDeps.join(", ")}`
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return { valid: true };
|
|
176
|
+
}
|
|
177
|
+
// ============================================================================
|
|
178
|
+
// Output Formatting
|
|
179
|
+
// ============================================================================
|
|
180
|
+
/**
|
|
181
|
+
* Format successful output
|
|
182
|
+
*/
|
|
183
|
+
formatOutput(data, artifacts) {
|
|
184
|
+
return {
|
|
185
|
+
success: true,
|
|
186
|
+
data,
|
|
187
|
+
artifacts,
|
|
188
|
+
metadata: {
|
|
189
|
+
agentId: this.config.id,
|
|
190
|
+
agentType: this.config.type,
|
|
191
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Create a success result
|
|
197
|
+
*/
|
|
198
|
+
createSuccessResult(data, startTime, artifacts) {
|
|
199
|
+
return {
|
|
200
|
+
success: true,
|
|
201
|
+
data,
|
|
202
|
+
artifacts,
|
|
203
|
+
metrics: this.calculateMetrics(startTime, /* @__PURE__ */ new Date()),
|
|
204
|
+
metadata: {
|
|
205
|
+
agentId: this.config.id,
|
|
206
|
+
agentType: this.config.type
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Create an error result
|
|
212
|
+
*/
|
|
213
|
+
createErrorResult(code, message, startTime, details) {
|
|
214
|
+
return {
|
|
215
|
+
success: false,
|
|
216
|
+
error: {
|
|
217
|
+
code,
|
|
218
|
+
message,
|
|
219
|
+
...details
|
|
220
|
+
},
|
|
221
|
+
metrics: this.calculateMetrics(startTime, /* @__PURE__ */ new Date()),
|
|
222
|
+
metadata: {
|
|
223
|
+
agentId: this.config.id,
|
|
224
|
+
agentType: this.config.type
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Calculate execution metrics
|
|
230
|
+
*/
|
|
231
|
+
calculateMetrics(startTime, endTime) {
|
|
232
|
+
return {
|
|
233
|
+
startTime,
|
|
234
|
+
endTime,
|
|
235
|
+
durationMs: endTime.getTime() - startTime.getTime(),
|
|
236
|
+
memoryUsage: process.memoryUsage?.().heapUsed,
|
|
237
|
+
retries: 0
|
|
238
|
+
// Updated by retry logic if needed
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
// ============================================================================
|
|
242
|
+
// Error Handling
|
|
243
|
+
// ============================================================================
|
|
244
|
+
/**
|
|
245
|
+
* Normalize error to AgentError format
|
|
246
|
+
*/
|
|
247
|
+
normalizeError(error) {
|
|
248
|
+
if (error instanceof Error) {
|
|
249
|
+
return {
|
|
250
|
+
code: error.name || "UNKNOWN_ERROR",
|
|
251
|
+
message: error.message,
|
|
252
|
+
stack: error.stack,
|
|
253
|
+
retryable: this.isRetryableError(error)
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
return {
|
|
257
|
+
code: "UNKNOWN_ERROR",
|
|
258
|
+
message: String(error),
|
|
259
|
+
retryable: false
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Check if an error is retryable
|
|
264
|
+
*/
|
|
265
|
+
isRetryableError(error) {
|
|
266
|
+
if (error instanceof Error) {
|
|
267
|
+
const message = error.message.toLowerCase();
|
|
268
|
+
if (message.includes("timeout") || message.includes("network") || message.includes("connection") || message.includes("econnreset") || message.includes("rate limit")) {
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
// ============================================================================
|
|
275
|
+
// Lifecycle Methods
|
|
276
|
+
// ============================================================================
|
|
277
|
+
/**
|
|
278
|
+
* Pause the agent
|
|
279
|
+
*/
|
|
280
|
+
async pause() {
|
|
281
|
+
if (this._state.status === AgentStatus.RUNNING) {
|
|
282
|
+
this.logger.info("Pausing agent");
|
|
283
|
+
this.setStatus(AgentStatus.PAUSED);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Resume the agent
|
|
288
|
+
*/
|
|
289
|
+
async resume() {
|
|
290
|
+
if (this._state.status === AgentStatus.PAUSED) {
|
|
291
|
+
this.logger.info("Resuming agent");
|
|
292
|
+
this.setStatus(AgentStatus.IDLE);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Terminate the agent
|
|
297
|
+
*/
|
|
298
|
+
async terminate() {
|
|
299
|
+
this.logger.info("Terminating agent");
|
|
300
|
+
await this.cleanup();
|
|
301
|
+
this.setStatus(AgentStatus.TERMINATED);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Cleanup resources
|
|
305
|
+
*
|
|
306
|
+
* Override to implement custom cleanup logic.
|
|
307
|
+
*/
|
|
308
|
+
async cleanup() {
|
|
309
|
+
}
|
|
310
|
+
// ============================================================================
|
|
311
|
+
// Messaging
|
|
312
|
+
// ============================================================================
|
|
313
|
+
/**
|
|
314
|
+
* Send a message to another agent
|
|
315
|
+
*/
|
|
316
|
+
async sendMessage(message) {
|
|
317
|
+
this.logger.debug(`Sending message to ${message.to}`, {
|
|
318
|
+
type: message.type,
|
|
319
|
+
correlationId: message.correlationId
|
|
320
|
+
});
|
|
321
|
+
this.logger.trace("Message payload", { payload: message.payload });
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Receive and process a message
|
|
325
|
+
*/
|
|
326
|
+
async receiveMessage(message) {
|
|
327
|
+
this.logger.debug(`Received message from ${message.from}`, {
|
|
328
|
+
type: message.type,
|
|
329
|
+
correlationId: message.correlationId
|
|
330
|
+
});
|
|
331
|
+
const handler = this.messageHandlers.get(message.type);
|
|
332
|
+
if (handler) {
|
|
333
|
+
await handler(message);
|
|
334
|
+
} else {
|
|
335
|
+
this.logger.warn(`No handler for message type: ${message.type}`);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Register a message handler
|
|
340
|
+
*/
|
|
341
|
+
registerMessageHandler(type, handler) {
|
|
342
|
+
this.messageHandlers.set(type, handler);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Register default message handlers
|
|
346
|
+
*/
|
|
347
|
+
registerDefaultMessageHandlers() {
|
|
348
|
+
this.registerMessageHandler(MessageType.STATUS, async (message) => {
|
|
349
|
+
await this.sendMessage({
|
|
350
|
+
id: `${Date.now()}`,
|
|
351
|
+
type: MessageType.STATUS,
|
|
352
|
+
from: this.config.id,
|
|
353
|
+
to: message.from,
|
|
354
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
355
|
+
correlationId: message.id,
|
|
356
|
+
payload: {
|
|
357
|
+
agentId: this.config.id,
|
|
358
|
+
status: this._state.status,
|
|
359
|
+
currentTask: this._state.currentTask?.id
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
// ============================================================================
|
|
365
|
+
// Claude-Flow Integration
|
|
366
|
+
// ============================================================================
|
|
367
|
+
/**
|
|
368
|
+
* Run a claude-flow hook
|
|
369
|
+
*/
|
|
370
|
+
async runClaudeFlowHook(hookType, task, result) {
|
|
371
|
+
if (!this.config.claudeFlow?.enabled) {
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
const namespace = this.config.claudeFlow.namespace ?? "knowledge-graph";
|
|
375
|
+
this.logger.debug(`Running claude-flow hook: ${hookType}`, {
|
|
376
|
+
namespace,
|
|
377
|
+
taskId: task.id
|
|
378
|
+
});
|
|
379
|
+
const hookCommand = this.generateHookCommand(hookType, task, result);
|
|
380
|
+
this.logger.trace("Claude-flow hook command", { command: hookCommand });
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Generate claude-flow hook command
|
|
384
|
+
*/
|
|
385
|
+
generateHookCommand(hookType, task, result) {
|
|
386
|
+
const namespace = this.config.claudeFlow?.namespace ?? "knowledge-graph";
|
|
387
|
+
switch (hookType) {
|
|
388
|
+
case "pre-task":
|
|
389
|
+
return `npx claude-flow@alpha hooks pre-task --description "${task.description}"`;
|
|
390
|
+
case "post-task":
|
|
391
|
+
return `npx claude-flow@alpha hooks post-task --task-id "${task.id}"`;
|
|
392
|
+
case "post-edit":
|
|
393
|
+
return `npx claude-flow@alpha hooks post-edit --memory-key "${namespace}/agent/${this.config.id}/task/${task.id}"`;
|
|
394
|
+
default:
|
|
395
|
+
return "";
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Store result in claude-flow memory
|
|
400
|
+
*/
|
|
401
|
+
async storeInMemory(key, value) {
|
|
402
|
+
if (!this.config.claudeFlow?.enabled) {
|
|
403
|
+
return;
|
|
404
|
+
}
|
|
405
|
+
const namespace = this.config.claudeFlow.namespace ?? "knowledge-graph";
|
|
406
|
+
this.logger.debug("Storing in claude-flow memory", { namespace, key });
|
|
407
|
+
this.logger.trace("Memory store", {
|
|
408
|
+
action: "store",
|
|
409
|
+
namespace,
|
|
410
|
+
key,
|
|
411
|
+
value: JSON.stringify(value).slice(0, 100)
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
function createTask(description, options) {
|
|
416
|
+
return {
|
|
417
|
+
id: createTaskId(),
|
|
418
|
+
description,
|
|
419
|
+
priority: options?.priority ?? TaskPriority.MEDIUM,
|
|
420
|
+
input: options?.input ?? {},
|
|
421
|
+
expectedOutput: options?.expectedOutput,
|
|
422
|
+
dependencies: options?.dependencies,
|
|
423
|
+
timeout: options?.timeout,
|
|
424
|
+
metadata: options?.metadata,
|
|
425
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
426
|
+
deadline: options?.deadline
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
function isAgentResult(obj) {
|
|
430
|
+
return typeof obj === "object" && obj !== null && "success" in obj && typeof obj.success === "boolean";
|
|
431
|
+
}
|
|
432
|
+
function isAgentError(obj) {
|
|
433
|
+
return typeof obj === "object" && obj !== null && "code" in obj && "message" in obj && typeof obj.code === "string" && typeof obj.message === "string";
|
|
434
|
+
}
|
|
435
|
+
export {
|
|
436
|
+
BaseAgent,
|
|
437
|
+
createTask,
|
|
438
|
+
isAgentError,
|
|
439
|
+
isAgentResult
|
|
440
|
+
};
|
|
441
|
+
//# sourceMappingURL=base-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-agent.js","sources":["../../src/agents/base-agent.ts"],"sourcesContent":["/**\n * Base Agent Implementation\n *\n * Abstract base class for all agents providing common functionality\n * including task execution, input validation, output formatting,\n * error handling, and optional claude-flow integration.\n *\n * @module agents/base-agent\n */\n\nimport { getLogger, retry, type Logger, type RetryOptions } from '../utils/index.js';\nimport {\n AgentType,\n AgentStatus,\n TaskPriority,\n MessageType,\n type AgentConfig,\n type AgentInstance,\n type AgentState,\n type AgentTask,\n type AgentResult,\n type AgentError,\n type AgentMessage,\n type ExecutionMetrics,\n type ResultArtifact,\n createAgentId,\n createTaskId,\n} from './types.js';\n\n// ============================================================================\n// Base Agent Abstract Class\n// ============================================================================\n\n/**\n * Abstract base class for all agents\n *\n * Provides common functionality that all agents share, including:\n * - Task execution with timeout and retry handling\n * - Input validation\n * - Output formatting\n * - Error handling and logging\n * - Optional claude-flow hooks integration\n *\n * @example\n * ```typescript\n * class ResearchAgent extends BaseAgent {\n * protected async executeTask(task: AgentTask): Promise<AgentResult> {\n * // Implementation specific to researcher agent\n * const results = await this.searchSources(task.input);\n * return this.formatOutput(results);\n * }\n * }\n * ```\n */\nexport abstract class BaseAgent implements AgentInstance {\n /** Agent configuration */\n public readonly config: AgentConfig;\n\n /** Agent runtime state */\n private _state: AgentState;\n\n /** Logger instance */\n protected readonly logger: Logger;\n\n /** Message handlers for different message types */\n private messageHandlers: Map<MessageType, (message: AgentMessage) => Promise<void>> =\n new Map();\n\n constructor(config: AgentConfig) {\n // Ensure ID is set\n this.config = {\n ...config,\n id: config.id ?? createAgentId(config.type),\n };\n\n // Initialize state\n this._state = {\n id: this.config.id!,\n status: AgentStatus.IDLE,\n taskQueue: [],\n completedTasks: [],\n lastActivity: new Date(),\n errorCount: 0,\n };\n\n // Create logger\n this.logger = getLogger().child(`agent:${this.config.name}`);\n\n // Register default message handlers\n this.registerDefaultMessageHandlers();\n }\n\n // ============================================================================\n // State Management\n // ============================================================================\n\n /**\n * Get current agent state\n */\n get state(): AgentState {\n return { ...this._state };\n }\n\n /**\n * Get current agent status\n */\n getStatus(): AgentStatus {\n return this._state.status;\n }\n\n /**\n * Update agent status\n */\n protected setStatus(status: AgentStatus): void {\n const previousStatus = this._state.status;\n this._state.status = status;\n this._state.lastActivity = new Date();\n\n if (previousStatus !== status) {\n this.logger.debug(`Status changed: ${previousStatus} -> ${status}`);\n }\n }\n\n // ============================================================================\n // Task Execution\n // ============================================================================\n\n /**\n * Execute a task\n *\n * This is the main entry point for task execution. It handles:\n * - Pre-task hooks (if enabled)\n * - Input validation\n * - Retry logic\n * - Timeout handling\n * - Post-task hooks (if enabled)\n * - Error handling and logging\n */\n async execute(task: AgentTask): Promise<AgentResult> {\n const startTime = new Date();\n\n this.logger.info(`Executing task: ${task.id}`, {\n description: task.description,\n priority: task.priority,\n });\n\n // Run pre-task hook if enabled\n if (this.config.claudeFlow?.hooks?.preTask) {\n await this.runClaudeFlowHook('pre-task', task);\n }\n\n try {\n // Validate input\n const validationResult = await this.validateInput(task);\n if (!validationResult.valid) {\n return this.createErrorResult(\n 'VALIDATION_ERROR',\n validationResult.error ?? 'Input validation failed',\n startTime\n );\n }\n\n // Set status to running\n this.setStatus(AgentStatus.RUNNING);\n this._state.currentTask = task;\n\n // Execute with retry if configured\n let result: AgentResult;\n const retryConfig = this.config.retry;\n\n if (retryConfig && retryConfig.maxRetries > 0) {\n const retryOptions: RetryOptions = {\n maxRetries: retryConfig.maxRetries,\n initialDelay: retryConfig.backoffMs,\n backoffFactor: retryConfig.backoffMultiplier ?? 2,\n isRetryable: (error: unknown) => this.isRetryableError(error),\n };\n\n result = await retry(\n async () => this.executeWithTimeout(task),\n retryOptions\n );\n } else {\n result = await this.executeWithTimeout(task);\n }\n\n // Update state on success\n if (result.success) {\n this._state.completedTasks.push(task.id);\n this.setStatus(AgentStatus.COMPLETED);\n } else {\n this._state.errorCount++;\n this.setStatus(AgentStatus.FAILED);\n }\n\n // Add metrics\n result.metrics = this.calculateMetrics(startTime, new Date());\n\n // Run post-task hook if enabled\n if (this.config.claudeFlow?.hooks?.postTask) {\n await this.runClaudeFlowHook('post-task', task, result);\n }\n\n return result;\n } catch (error) {\n this._state.errorCount++;\n this.setStatus(AgentStatus.FAILED);\n\n const agentError = this.normalizeError(error);\n this.logger.error(`Task execution failed: ${task.id}`, error as Error);\n\n return this.createErrorResult(agentError.code, agentError.message, startTime, {\n stack: agentError.stack,\n retryable: agentError.retryable,\n });\n } finally {\n this._state.currentTask = undefined;\n this._state.lastActivity = new Date();\n }\n }\n\n /**\n * Execute task with timeout\n */\n private async executeWithTimeout(task: AgentTask): Promise<AgentResult> {\n const timeout = task.timeout ?? this.config.taskTimeout ?? 30000;\n\n return new Promise<AgentResult>((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(`Task execution timed out after ${timeout}ms`));\n }, timeout);\n\n this.executeTask(task)\n .then((result) => {\n clearTimeout(timer);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timer);\n reject(error);\n });\n });\n }\n\n /**\n * Abstract method for actual task execution\n *\n * Subclasses must implement this method with their specific logic.\n */\n protected abstract executeTask(task: AgentTask): Promise<AgentResult>;\n\n // ============================================================================\n // Input Validation\n // ============================================================================\n\n /**\n * Validate task input\n *\n * Override this method to implement custom validation logic.\n */\n async validateInput(task: AgentTask): Promise<{ valid: boolean; error?: string }> {\n // Basic validation\n if (!task.id) {\n return { valid: false, error: 'Task ID is required' };\n }\n\n if (!task.description) {\n return { valid: false, error: 'Task description is required' };\n }\n\n // Check dependencies are resolved\n if (task.dependencies && task.dependencies.length > 0) {\n const unresolvedDeps = task.dependencies.filter(\n (dep) => !this._state.completedTasks.includes(dep)\n );\n\n if (unresolvedDeps.length > 0) {\n return {\n valid: false,\n error: `Unresolved dependencies: ${unresolvedDeps.join(', ')}`,\n };\n }\n }\n\n return { valid: true };\n }\n\n // ============================================================================\n // Output Formatting\n // ============================================================================\n\n /**\n * Format successful output\n */\n formatOutput<T>(data: T, artifacts?: ResultArtifact[]): AgentResult<T> {\n return {\n success: true,\n data,\n artifacts,\n metadata: {\n agentId: this.config.id,\n agentType: this.config.type,\n timestamp: new Date().toISOString(),\n },\n };\n }\n\n /**\n * Create a success result\n */\n protected createSuccessResult<T>(\n data: T,\n startTime: Date,\n artifacts?: ResultArtifact[]\n ): AgentResult<T> {\n return {\n success: true,\n data,\n artifacts,\n metrics: this.calculateMetrics(startTime, new Date()),\n metadata: {\n agentId: this.config.id,\n agentType: this.config.type,\n },\n };\n }\n\n /**\n * Create an error result\n */\n protected createErrorResult(\n code: string,\n message: string,\n startTime: Date,\n details?: Partial<AgentError>\n ): AgentResult {\n return {\n success: false,\n error: {\n code,\n message,\n ...details,\n },\n metrics: this.calculateMetrics(startTime, new Date()),\n metadata: {\n agentId: this.config.id,\n agentType: this.config.type,\n },\n };\n }\n\n /**\n * Calculate execution metrics\n */\n private calculateMetrics(startTime: Date, endTime: Date): ExecutionMetrics {\n return {\n startTime,\n endTime,\n durationMs: endTime.getTime() - startTime.getTime(),\n memoryUsage: process.memoryUsage?.().heapUsed,\n retries: 0, // Updated by retry logic if needed\n };\n }\n\n // ============================================================================\n // Error Handling\n // ============================================================================\n\n /**\n * Normalize error to AgentError format\n */\n private normalizeError(error: unknown): AgentError {\n if (error instanceof Error) {\n return {\n code: error.name || 'UNKNOWN_ERROR',\n message: error.message,\n stack: error.stack,\n retryable: this.isRetryableError(error),\n };\n }\n\n return {\n code: 'UNKNOWN_ERROR',\n message: String(error),\n retryable: false,\n };\n }\n\n /**\n * Check if an error is retryable\n */\n protected isRetryableError(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n\n // Network/transient errors\n if (\n message.includes('timeout') ||\n message.includes('network') ||\n message.includes('connection') ||\n message.includes('econnreset') ||\n message.includes('rate limit')\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n // ============================================================================\n // Lifecycle Methods\n // ============================================================================\n\n /**\n * Pause the agent\n */\n async pause(): Promise<void> {\n if (this._state.status === AgentStatus.RUNNING) {\n this.logger.info('Pausing agent');\n this.setStatus(AgentStatus.PAUSED);\n }\n }\n\n /**\n * Resume the agent\n */\n async resume(): Promise<void> {\n if (this._state.status === AgentStatus.PAUSED) {\n this.logger.info('Resuming agent');\n this.setStatus(AgentStatus.IDLE);\n }\n }\n\n /**\n * Terminate the agent\n */\n async terminate(): Promise<void> {\n this.logger.info('Terminating agent');\n\n // Clean up any resources\n await this.cleanup();\n\n this.setStatus(AgentStatus.TERMINATED);\n }\n\n /**\n * Cleanup resources\n *\n * Override to implement custom cleanup logic.\n */\n protected async cleanup(): Promise<void> {\n // Default: no cleanup needed\n }\n\n // ============================================================================\n // Messaging\n // ============================================================================\n\n /**\n * Send a message to another agent\n */\n async sendMessage(message: AgentMessage): Promise<void> {\n this.logger.debug(`Sending message to ${message.to}`, {\n type: message.type,\n correlationId: message.correlationId,\n });\n\n // In a real implementation, this would use a message bus\n // For now, just log the message\n this.logger.trace('Message payload', { payload: message.payload });\n }\n\n /**\n * Receive and process a message\n */\n async receiveMessage(message: AgentMessage): Promise<void> {\n this.logger.debug(`Received message from ${message.from}`, {\n type: message.type,\n correlationId: message.correlationId,\n });\n\n const handler = this.messageHandlers.get(message.type);\n if (handler) {\n await handler(message);\n } else {\n this.logger.warn(`No handler for message type: ${message.type}`);\n }\n }\n\n /**\n * Register a message handler\n */\n protected registerMessageHandler(\n type: MessageType,\n handler: (message: AgentMessage) => Promise<void>\n ): void {\n this.messageHandlers.set(type, handler);\n }\n\n /**\n * Register default message handlers\n */\n private registerDefaultMessageHandlers(): void {\n // Handle status requests\n this.registerMessageHandler(MessageType.STATUS, async (message) => {\n await this.sendMessage({\n id: `${Date.now()}`,\n type: MessageType.STATUS,\n from: this.config.id!,\n to: message.from,\n timestamp: new Date(),\n correlationId: message.id,\n payload: {\n agentId: this.config.id,\n status: this._state.status,\n currentTask: this._state.currentTask?.id,\n },\n });\n });\n }\n\n // ============================================================================\n // Claude-Flow Integration\n // ============================================================================\n\n /**\n * Run a claude-flow hook\n */\n protected async runClaudeFlowHook(\n hookType: 'pre-task' | 'post-task' | 'post-edit',\n task: AgentTask,\n result?: AgentResult\n ): Promise<void> {\n if (!this.config.claudeFlow?.enabled) {\n return;\n }\n\n const namespace = this.config.claudeFlow.namespace ?? 'knowledge-graph';\n\n this.logger.debug(`Running claude-flow hook: ${hookType}`, {\n namespace,\n taskId: task.id,\n });\n\n // Generate the hook command that would be run\n const hookCommand = this.generateHookCommand(hookType, task, result);\n\n this.logger.trace('Claude-flow hook command', { command: hookCommand });\n\n // In production, this would execute via child_process or MCP\n // For now, we just log the intent\n }\n\n /**\n * Generate claude-flow hook command\n */\n private generateHookCommand(\n hookType: 'pre-task' | 'post-task' | 'post-edit',\n task: AgentTask,\n result?: AgentResult\n ): string {\n const namespace = this.config.claudeFlow?.namespace ?? 'knowledge-graph';\n\n switch (hookType) {\n case 'pre-task':\n return `npx claude-flow@alpha hooks pre-task --description \"${task.description}\"`;\n\n case 'post-task':\n return `npx claude-flow@alpha hooks post-task --task-id \"${task.id}\"`;\n\n case 'post-edit':\n return `npx claude-flow@alpha hooks post-edit --memory-key \"${namespace}/agent/${this.config.id}/task/${task.id}\"`;\n\n default:\n return '';\n }\n }\n\n /**\n * Store result in claude-flow memory\n */\n protected async storeInMemory(key: string, value: unknown): Promise<void> {\n if (!this.config.claudeFlow?.enabled) {\n return;\n }\n\n const namespace = this.config.claudeFlow.namespace ?? 'knowledge-graph';\n\n this.logger.debug('Storing in claude-flow memory', { namespace, key });\n\n // This would call the MCP memory_usage tool\n // For now, just log the intent\n this.logger.trace('Memory store', {\n action: 'store',\n namespace,\n key,\n value: JSON.stringify(value).slice(0, 100),\n });\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Create a task with defaults\n */\nexport function createTask(\n description: string,\n options?: Partial<Omit<AgentTask, 'id' | 'description' | 'createdAt'>>\n): AgentTask {\n return {\n id: createTaskId(),\n description,\n priority: options?.priority ?? TaskPriority.MEDIUM,\n input: options?.input ?? {},\n expectedOutput: options?.expectedOutput,\n dependencies: options?.dependencies,\n timeout: options?.timeout,\n metadata: options?.metadata,\n createdAt: new Date(),\n deadline: options?.deadline,\n };\n}\n\n/**\n * Type guard for checking if an object is an AgentResult\n */\nexport function isAgentResult(obj: unknown): obj is AgentResult {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'success' in obj &&\n typeof (obj as AgentResult).success === 'boolean'\n );\n}\n\n/**\n * Type guard for checking if an object is an AgentError\n */\nexport function isAgentError(obj: unknown): obj is AgentError {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'code' in obj &&\n 'message' in obj &&\n typeof (obj as AgentError).code === 'string' &&\n typeof (obj as AgentError).message === 'string'\n );\n}\n"],"names":[],"mappings":";;;AAsDO,MAAe,UAAmC;AAAA;AAAA,EAEvC;AAAA;AAAA,EAGR;AAAA;AAAA,EAGW;AAAA;AAAA,EAGX,sCACF,IAAA;AAAA,EAEN,YAAY,QAAqB;AAE/B,SAAK,SAAS;AAAA,MACZ,GAAG;AAAA,MACH,IAAI,OAAO,MAAM,cAAc,OAAO,IAAI;AAAA,IAAA;AAI5C,SAAK,SAAS;AAAA,MACZ,IAAI,KAAK,OAAO;AAAA,MAChB,QAAQ,YAAY;AAAA,MACpB,WAAW,CAAA;AAAA,MACX,gBAAgB,CAAA;AAAA,MAChB,kCAAkB,KAAA;AAAA,MAClB,YAAY;AAAA,IAAA;AAId,SAAK,SAAS,YAAY,MAAM,SAAS,KAAK,OAAO,IAAI,EAAE;AAG3D,SAAK,+BAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAI,QAAoB;AACtB,WAAO,EAAE,GAAG,KAAK,OAAA;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,YAAyB;AACvB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKU,UAAU,QAA2B;AAC7C,UAAM,iBAAiB,KAAK,OAAO;AACnC,SAAK,OAAO,SAAS;AACrB,SAAK,OAAO,eAAe,oBAAI,KAAA;AAE/B,QAAI,mBAAmB,QAAQ;AAC7B,WAAK,OAAO,MAAM,mBAAmB,cAAc,OAAO,MAAM,EAAE;AAAA,IACpE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAM,QAAQ,MAAuC;AACnD,UAAM,gCAAgB,KAAA;AAEtB,SAAK,OAAO,KAAK,mBAAmB,KAAK,EAAE,IAAI;AAAA,MAC7C,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,IAAA,CAChB;AAGD,QAAI,KAAK,OAAO,YAAY,OAAO,SAAS;AAC1C,YAAM,KAAK,kBAAkB,YAAY,IAAI;AAAA,IAC/C;AAEA,QAAI;AAEF,YAAM,mBAAmB,MAAM,KAAK,cAAc,IAAI;AACtD,UAAI,CAAC,iBAAiB,OAAO;AAC3B,eAAO,KAAK;AAAA,UACV;AAAA,UACA,iBAAiB,SAAS;AAAA,UAC1B;AAAA,QAAA;AAAA,MAEJ;AAGA,WAAK,UAAU,YAAY,OAAO;AAClC,WAAK,OAAO,cAAc;AAG1B,UAAI;AACJ,YAAM,cAAc,KAAK,OAAO;AAEhC,UAAI,eAAe,YAAY,aAAa,GAAG;AAC7C,cAAM,eAA6B;AAAA,UACjC,YAAY,YAAY;AAAA,UACxB,cAAc,YAAY;AAAA,UAC1B,eAAe,YAAY,qBAAqB;AAAA,UAChD,aAAa,CAAC,UAAmB,KAAK,iBAAiB,KAAK;AAAA,QAAA;AAG9D,iBAAS,MAAM;AAAA,UACb,YAAY,KAAK,mBAAmB,IAAI;AAAA,UACxC;AAAA,QAAA;AAAA,MAEJ,OAAO;AACL,iBAAS,MAAM,KAAK,mBAAmB,IAAI;AAAA,MAC7C;AAGA,UAAI,OAAO,SAAS;AAClB,aAAK,OAAO,eAAe,KAAK,KAAK,EAAE;AACvC,aAAK,UAAU,YAAY,SAAS;AAAA,MACtC,OAAO;AACL,aAAK,OAAO;AACZ,aAAK,UAAU,YAAY,MAAM;AAAA,MACnC;AAGA,aAAO,UAAU,KAAK,iBAAiB,WAAW,oBAAI,MAAM;AAG5D,UAAI,KAAK,OAAO,YAAY,OAAO,UAAU;AAC3C,cAAM,KAAK,kBAAkB,aAAa,MAAM,MAAM;AAAA,MACxD;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,OAAO;AACZ,WAAK,UAAU,YAAY,MAAM;AAEjC,YAAM,aAAa,KAAK,eAAe,KAAK;AAC5C,WAAK,OAAO,MAAM,0BAA0B,KAAK,EAAE,IAAI,KAAc;AAErE,aAAO,KAAK,kBAAkB,WAAW,MAAM,WAAW,SAAS,WAAW;AAAA,QAC5E,OAAO,WAAW;AAAA,QAClB,WAAW,WAAW;AAAA,MAAA,CACvB;AAAA,IACH,UAAA;AACE,WAAK,OAAO,cAAc;AAC1B,WAAK,OAAO,eAAe,oBAAI,KAAA;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,mBAAmB,MAAuC;AACtE,UAAM,UAAU,KAAK,WAAW,KAAK,OAAO,eAAe;AAE3D,WAAO,IAAI,QAAqB,CAAC,SAAS,WAAW;AACnD,YAAM,QAAQ,WAAW,MAAM;AAC7B,eAAO,IAAI,MAAM,kCAAkC,OAAO,IAAI,CAAC;AAAA,MACjE,GAAG,OAAO;AAEV,WAAK,YAAY,IAAI,EAClB,KAAK,CAAC,WAAW;AAChB,qBAAa,KAAK;AAClB,gBAAQ,MAAM;AAAA,MAChB,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,qBAAa,KAAK;AAClB,eAAO,KAAK;AAAA,MACd,CAAC;AAAA,IACL,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,MAAM,cAAc,MAA8D;AAEhF,QAAI,CAAC,KAAK,IAAI;AACZ,aAAO,EAAE,OAAO,OAAO,OAAO,sBAAA;AAAA,IAChC;AAEA,QAAI,CAAC,KAAK,aAAa;AACrB,aAAO,EAAE,OAAO,OAAO,OAAO,+BAAA;AAAA,IAChC;AAGA,QAAI,KAAK,gBAAgB,KAAK,aAAa,SAAS,GAAG;AACrD,YAAM,iBAAiB,KAAK,aAAa;AAAA,QACvC,CAAC,QAAQ,CAAC,KAAK,OAAO,eAAe,SAAS,GAAG;AAAA,MAAA;AAGnD,UAAI,eAAe,SAAS,GAAG;AAC7B,eAAO;AAAA,UACL,OAAO;AAAA,UACP,OAAO,4BAA4B,eAAe,KAAK,IAAI,CAAC;AAAA,QAAA;AAAA,MAEhE;AAAA,IACF;AAEA,WAAO,EAAE,OAAO,KAAA;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAgB,MAAS,WAA8C;AACrE,WAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR,SAAS,KAAK,OAAO;AAAA,QACrB,WAAW,KAAK,OAAO;AAAA,QACvB,YAAW,oBAAI,KAAA,GAAO,YAAA;AAAA,MAAY;AAAA,IACpC;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKU,oBACR,MACA,WACA,WACgB;AAChB,WAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,SAAS,KAAK,iBAAiB,WAAW,oBAAI,MAAM;AAAA,MACpD,UAAU;AAAA,QACR,SAAS,KAAK,OAAO;AAAA,QACrB,WAAW,KAAK,OAAO;AAAA,MAAA;AAAA,IACzB;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKU,kBACR,MACA,SACA,WACA,SACa;AACb,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MAAA;AAAA,MAEL,SAAS,KAAK,iBAAiB,WAAW,oBAAI,MAAM;AAAA,MACpD,UAAU;AAAA,QACR,SAAS,KAAK,OAAO;AAAA,QACrB,WAAW,KAAK,OAAO;AAAA,MAAA;AAAA,IACzB;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKQ,iBAAiB,WAAiB,SAAiC;AACzE,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAY,QAAQ,YAAY,UAAU,QAAA;AAAA,MAC1C,aAAa,QAAQ,cAAA,EAAgB;AAAA,MACrC,SAAS;AAAA;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASQ,eAAe,OAA4B;AACjD,QAAI,iBAAiB,OAAO;AAC1B,aAAO;AAAA,QACL,MAAM,MAAM,QAAQ;AAAA,QACpB,SAAS,MAAM;AAAA,QACf,OAAO,MAAM;AAAA,QACb,WAAW,KAAK,iBAAiB,KAAK;AAAA,MAAA;AAAA,IAE1C;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,OAAO,KAAK;AAAA,MACrB,WAAW;AAAA,IAAA;AAAA,EAEf;AAAA;AAAA;AAAA;AAAA,EAKU,iBAAiB,OAAyB;AAClD,QAAI,iBAAiB,OAAO;AAC1B,YAAM,UAAU,MAAM,QAAQ,YAAA;AAG9B,UACE,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,YAAY,KAC7B,QAAQ,SAAS,YAAY,KAC7B,QAAQ,SAAS,YAAY,GAC7B;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,QAAuB;AAC3B,QAAI,KAAK,OAAO,WAAW,YAAY,SAAS;AAC9C,WAAK,OAAO,KAAK,eAAe;AAChC,WAAK,UAAU,YAAY,MAAM;AAAA,IACnC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAwB;AAC5B,QAAI,KAAK,OAAO,WAAW,YAAY,QAAQ;AAC7C,WAAK,OAAO,KAAK,gBAAgB;AACjC,WAAK,UAAU,YAAY,IAAI;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAA2B;AAC/B,SAAK,OAAO,KAAK,mBAAmB;AAGpC,UAAM,KAAK,QAAA;AAEX,SAAK,UAAU,YAAY,UAAU;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAgB,UAAyB;AAAA,EAEzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,YAAY,SAAsC;AACtD,SAAK,OAAO,MAAM,sBAAsB,QAAQ,EAAE,IAAI;AAAA,MACpD,MAAM,QAAQ;AAAA,MACd,eAAe,QAAQ;AAAA,IAAA,CACxB;AAID,SAAK,OAAO,MAAM,mBAAmB,EAAE,SAAS,QAAQ,SAAS;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,SAAsC;AACzD,SAAK,OAAO,MAAM,yBAAyB,QAAQ,IAAI,IAAI;AAAA,MACzD,MAAM,QAAQ;AAAA,MACd,eAAe,QAAQ;AAAA,IAAA,CACxB;AAED,UAAM,UAAU,KAAK,gBAAgB,IAAI,QAAQ,IAAI;AACrD,QAAI,SAAS;AACX,YAAM,QAAQ,OAAO;AAAA,IACvB,OAAO;AACL,WAAK,OAAO,KAAK,gCAAgC,QAAQ,IAAI,EAAE;AAAA,IACjE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKU,uBACR,MACA,SACM;AACN,SAAK,gBAAgB,IAAI,MAAM,OAAO;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKQ,iCAAuC;AAE7C,SAAK,uBAAuB,YAAY,QAAQ,OAAO,YAAY;AACjE,YAAM,KAAK,YAAY;AAAA,QACrB,IAAI,GAAG,KAAK,IAAA,CAAK;AAAA,QACjB,MAAM,YAAY;AAAA,QAClB,MAAM,KAAK,OAAO;AAAA,QAClB,IAAI,QAAQ;AAAA,QACZ,+BAAe,KAAA;AAAA,QACf,eAAe,QAAQ;AAAA,QACvB,SAAS;AAAA,UACP,SAAS,KAAK,OAAO;AAAA,UACrB,QAAQ,KAAK,OAAO;AAAA,UACpB,aAAa,KAAK,OAAO,aAAa;AAAA,QAAA;AAAA,MACxC,CACD;AAAA,IACH,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAgB,kBACd,UACA,MACA,QACe;AACf,QAAI,CAAC,KAAK,OAAO,YAAY,SAAS;AACpC;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,OAAO,WAAW,aAAa;AAEtD,SAAK,OAAO,MAAM,6BAA6B,QAAQ,IAAI;AAAA,MACzD;AAAA,MACA,QAAQ,KAAK;AAAA,IAAA,CACd;AAGD,UAAM,cAAc,KAAK,oBAAoB,UAAU,MAAM,MAAM;AAEnE,SAAK,OAAO,MAAM,4BAA4B,EAAE,SAAS,aAAa;AAAA,EAIxE;AAAA;AAAA;AAAA;AAAA,EAKQ,oBACN,UACA,MACA,QACQ;AACR,UAAM,YAAY,KAAK,OAAO,YAAY,aAAa;AAEvD,YAAQ,UAAA;AAAA,MACN,KAAK;AACH,eAAO,uDAAuD,KAAK,WAAW;AAAA,MAEhF,KAAK;AACH,eAAO,oDAAoD,KAAK,EAAE;AAAA,MAEpE,KAAK;AACH,eAAO,uDAAuD,SAAS,UAAU,KAAK,OAAO,EAAE,SAAS,KAAK,EAAE;AAAA,MAEjH;AACE,eAAO;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,cAAc,KAAa,OAA+B;AACxE,QAAI,CAAC,KAAK,OAAO,YAAY,SAAS;AACpC;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,OAAO,WAAW,aAAa;AAEtD,SAAK,OAAO,MAAM,iCAAiC,EAAE,WAAW,KAAK;AAIrE,SAAK,OAAO,MAAM,gBAAgB;AAAA,MAChC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,OAAO,KAAK,UAAU,KAAK,EAAE,MAAM,GAAG,GAAG;AAAA,IAAA,CAC1C;AAAA,EACH;AACF;AASO,SAAS,WACd,aACA,SACW;AACX,SAAO;AAAA,IACL,IAAI,aAAA;AAAA,IACJ;AAAA,IACA,UAAU,SAAS,YAAY,aAAa;AAAA,IAC5C,OAAO,SAAS,SAAS,CAAA;AAAA,IACzB,gBAAgB,SAAS;AAAA,IACzB,cAAc,SAAS;AAAA,IACvB,SAAS,SAAS;AAAA,IAClB,UAAU,SAAS;AAAA,IACnB,+BAAe,KAAA;AAAA,IACf,UAAU,SAAS;AAAA,EAAA;AAEvB;AAKO,SAAS,cAAc,KAAkC;AAC9D,SACE,OAAO,QAAQ,YACf,QAAQ,QACR,aAAa,OACb,OAAQ,IAAoB,YAAY;AAE5C;AAKO,SAAS,aAAa,KAAiC;AAC5D,SACE,OAAO,QAAQ,YACf,QAAQ,QACR,UAAU,OACV,aAAa,OACb,OAAQ,IAAmB,SAAS,YACpC,OAAQ,IAAmB,YAAY;AAE3C;"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coder Agent
|
|
3
|
+
*
|
|
4
|
+
* Specialized agent for code generation, refactoring suggestions, and optimization.
|
|
5
|
+
* Extends BaseAgent with TDD-oriented approach and knowledge graph integration.
|
|
6
|
+
*
|
|
7
|
+
* @module agents/coder-agent
|
|
8
|
+
*/
|
|
9
|
+
import { BaseAgent } from './base-agent.js';
|
|
10
|
+
import { type AgentTask, type AgentResult, type CoderAgentConfig } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Code generation request
|
|
13
|
+
*/
|
|
14
|
+
export interface CodeGenerationRequest {
|
|
15
|
+
/** Description of what to generate */
|
|
16
|
+
description: string;
|
|
17
|
+
/** Target language */
|
|
18
|
+
language: 'typescript' | 'javascript';
|
|
19
|
+
/** Target file path (optional) */
|
|
20
|
+
targetPath?: string;
|
|
21
|
+
/** Whether to include tests */
|
|
22
|
+
includeTests?: boolean;
|
|
23
|
+
/** Whether to include JSDoc */
|
|
24
|
+
includeJsdoc?: boolean;
|
|
25
|
+
/** Template to use */
|
|
26
|
+
template?: 'class' | 'function' | 'module' | 'component' | 'service';
|
|
27
|
+
/** Context from existing code */
|
|
28
|
+
context?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Generated code output
|
|
32
|
+
*/
|
|
33
|
+
export interface GeneratedCode {
|
|
34
|
+
/** Generated source code */
|
|
35
|
+
code: string;
|
|
36
|
+
/** Target file path */
|
|
37
|
+
path: string;
|
|
38
|
+
/** Generated test code (if requested) */
|
|
39
|
+
testCode?: string;
|
|
40
|
+
/** Test file path (if tests generated) */
|
|
41
|
+
testPath?: string;
|
|
42
|
+
/** Imports required */
|
|
43
|
+
imports: string[];
|
|
44
|
+
/** Exports provided */
|
|
45
|
+
exports: string[];
|
|
46
|
+
/** Dependencies to add */
|
|
47
|
+
dependencies?: string[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Refactoring suggestion
|
|
51
|
+
*/
|
|
52
|
+
export interface RefactoringSuggestion {
|
|
53
|
+
/** Type of refactoring */
|
|
54
|
+
type: 'extract-function' | 'extract-class' | 'rename' | 'inline' | 'move' | 'simplify' | 'modernize' | 'remove-duplication';
|
|
55
|
+
/** Affected file */
|
|
56
|
+
file: string;
|
|
57
|
+
/** Line range */
|
|
58
|
+
lineRange: {
|
|
59
|
+
start: number;
|
|
60
|
+
end: number;
|
|
61
|
+
};
|
|
62
|
+
/** Current code */
|
|
63
|
+
currentCode: string;
|
|
64
|
+
/** Suggested code */
|
|
65
|
+
suggestedCode: string;
|
|
66
|
+
/** Explanation */
|
|
67
|
+
explanation: string;
|
|
68
|
+
/** Priority (1-10) */
|
|
69
|
+
priority: number;
|
|
70
|
+
/** Estimated complexity reduction */
|
|
71
|
+
complexityReduction?: number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Complexity metrics for code
|
|
75
|
+
*/
|
|
76
|
+
export interface ComplexityMetrics {
|
|
77
|
+
/** Cyclomatic complexity */
|
|
78
|
+
cyclomatic: number;
|
|
79
|
+
/** Cognitive complexity */
|
|
80
|
+
cognitive: number;
|
|
81
|
+
/** Lines of code */
|
|
82
|
+
linesOfCode: number;
|
|
83
|
+
/** Number of functions */
|
|
84
|
+
functionCount: number;
|
|
85
|
+
/** Average function length */
|
|
86
|
+
avgFunctionLength: number;
|
|
87
|
+
/** Maximum nesting depth */
|
|
88
|
+
maxNestingDepth: number;
|
|
89
|
+
/** Maintainability index (0-100) */
|
|
90
|
+
maintainabilityIndex: number;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Code analysis result
|
|
94
|
+
*/
|
|
95
|
+
export interface CodeAnalysisResult {
|
|
96
|
+
/** File analyzed */
|
|
97
|
+
file: string;
|
|
98
|
+
/** Complexity metrics */
|
|
99
|
+
complexity: ComplexityMetrics;
|
|
100
|
+
/** Refactoring suggestions */
|
|
101
|
+
suggestions: RefactoringSuggestion[];
|
|
102
|
+
/** Detected patterns */
|
|
103
|
+
patterns: string[];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Coder task type
|
|
107
|
+
*/
|
|
108
|
+
export type CoderTaskType = 'generate' | 'refactor' | 'analyze' | 'optimize';
|
|
109
|
+
/**
|
|
110
|
+
* Coder Agent
|
|
111
|
+
*
|
|
112
|
+
* Capabilities:
|
|
113
|
+
* - Code generation from descriptions
|
|
114
|
+
* - Refactoring suggestions
|
|
115
|
+
* - Complexity analysis
|
|
116
|
+
* - TDD-oriented development support
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const coder = new CoderAgent({
|
|
121
|
+
* name: 'coder-agent',
|
|
122
|
+
* type: AgentType.CODER,
|
|
123
|
+
* language: 'typescript',
|
|
124
|
+
* });
|
|
125
|
+
*
|
|
126
|
+
* const result = await coder.execute({
|
|
127
|
+
* id: 'task-1',
|
|
128
|
+
* description: 'Generate User service with CRUD operations',
|
|
129
|
+
* priority: TaskPriority.MEDIUM,
|
|
130
|
+
* input: {
|
|
131
|
+
* data: {
|
|
132
|
+
* description: 'User service with CRUD operations',
|
|
133
|
+
* language: 'typescript',
|
|
134
|
+
* template: 'service',
|
|
135
|
+
* includeTests: true
|
|
136
|
+
* }
|
|
137
|
+
* },
|
|
138
|
+
* createdAt: new Date()
|
|
139
|
+
* });
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export declare class CoderAgent extends BaseAgent {
|
|
143
|
+
constructor(config: Partial<CoderAgentConfig> & {
|
|
144
|
+
name: string;
|
|
145
|
+
});
|
|
146
|
+
/**
|
|
147
|
+
* Execute coder task
|
|
148
|
+
*/
|
|
149
|
+
protected executeTask(task: AgentTask): Promise<AgentResult>;
|
|
150
|
+
/**
|
|
151
|
+
* Generate code from description
|
|
152
|
+
*/
|
|
153
|
+
generateCode(request: CodeGenerationRequest): Promise<GeneratedCode>;
|
|
154
|
+
/**
|
|
155
|
+
* Suggest refactoring for code
|
|
156
|
+
*/
|
|
157
|
+
suggestRefactoring(code: string, filePath: string): Promise<RefactoringSuggestion[]>;
|
|
158
|
+
/**
|
|
159
|
+
* Analyze code complexity
|
|
160
|
+
*/
|
|
161
|
+
analyzeComplexity(code: string, filePath: string): Promise<ComplexityMetrics>;
|
|
162
|
+
private handleGenerateTask;
|
|
163
|
+
private handleRefactorTask;
|
|
164
|
+
private handleAnalyzeTask;
|
|
165
|
+
private handleOptimizeTask;
|
|
166
|
+
private generateClass;
|
|
167
|
+
private generateFunction;
|
|
168
|
+
private generateModule;
|
|
169
|
+
private generateComponent;
|
|
170
|
+
private generateService;
|
|
171
|
+
private generateClassTest;
|
|
172
|
+
private generateFunctionTest;
|
|
173
|
+
private generateServiceTest;
|
|
174
|
+
private findLongFunctions;
|
|
175
|
+
private findDuplicateCode;
|
|
176
|
+
private findModernizationOpportunities;
|
|
177
|
+
private findComplexityIssues;
|
|
178
|
+
private calculateCyclomaticComplexity;
|
|
179
|
+
private calculateCognitiveComplexity;
|
|
180
|
+
private countFunctions;
|
|
181
|
+
private calculateAverageFunctionLength;
|
|
182
|
+
private calculateMaxNestingDepth;
|
|
183
|
+
private detectPatterns;
|
|
184
|
+
private toClassName;
|
|
185
|
+
private toFunctionName;
|
|
186
|
+
private toModuleName;
|
|
187
|
+
private toFileName;
|
|
188
|
+
private toKebabCase;
|
|
189
|
+
private extractEntityName;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=coder-agent.d.ts.map
|