@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,435 @@
|
|
|
1
|
+
import { existsSync, readFileSync, mkdirSync, writeFileSync, statSync } from "fs";
|
|
2
|
+
import { join, dirname, relative } from "path";
|
|
3
|
+
import { createHash } from "crypto";
|
|
4
|
+
import { createLogger } from "../utils/logger.js";
|
|
5
|
+
const logger = createLogger("shadow-cache");
|
|
6
|
+
const CACHE_VERSION = 1;
|
|
7
|
+
const CACHE_FILENAME = "shadow-cache.json";
|
|
8
|
+
class ShadowCache {
|
|
9
|
+
projectRoot;
|
|
10
|
+
cacheDir;
|
|
11
|
+
cachePath;
|
|
12
|
+
defaultTTL;
|
|
13
|
+
maxEntries;
|
|
14
|
+
persist;
|
|
15
|
+
entries = /* @__PURE__ */ new Map();
|
|
16
|
+
hitCount = 0;
|
|
17
|
+
missCount = 0;
|
|
18
|
+
loaded = false;
|
|
19
|
+
dirty = false;
|
|
20
|
+
createdAt;
|
|
21
|
+
updatedAt;
|
|
22
|
+
constructor(options) {
|
|
23
|
+
this.projectRoot = options.projectRoot;
|
|
24
|
+
this.cacheDir = options.cacheDir || ".kg";
|
|
25
|
+
this.cachePath = join(this.projectRoot, this.cacheDir, CACHE_FILENAME);
|
|
26
|
+
this.defaultTTL = options.defaultTTL || 60 * 60 * 1e3;
|
|
27
|
+
this.maxEntries = options.maxEntries || 1e4;
|
|
28
|
+
this.persist = options.persist !== false;
|
|
29
|
+
this.createdAt = Date.now();
|
|
30
|
+
this.updatedAt = Date.now();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Load cache from disk
|
|
34
|
+
*/
|
|
35
|
+
async load() {
|
|
36
|
+
if (!this.persist) {
|
|
37
|
+
this.loaded = true;
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
if (existsSync(this.cachePath)) {
|
|
42
|
+
const data = JSON.parse(readFileSync(this.cachePath, "utf-8"));
|
|
43
|
+
if (data.projectRoot !== this.projectRoot) {
|
|
44
|
+
logger.warn("Cache project root mismatch, starting fresh");
|
|
45
|
+
this.loaded = true;
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (data.version !== CACHE_VERSION) {
|
|
49
|
+
logger.warn("Cache version mismatch, starting fresh", {
|
|
50
|
+
cacheVersion: data.version,
|
|
51
|
+
expectedVersion: CACHE_VERSION
|
|
52
|
+
});
|
|
53
|
+
this.loaded = true;
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
this.entries = new Map(Object.entries(data.entries));
|
|
57
|
+
this.createdAt = data.createdAt;
|
|
58
|
+
this.updatedAt = data.updatedAt;
|
|
59
|
+
this.loaded = true;
|
|
60
|
+
logger.info("Cache loaded", { entries: this.entries.size });
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
} catch (error) {
|
|
64
|
+
logger.error("Failed to load cache", error instanceof Error ? error : new Error(String(error)));
|
|
65
|
+
}
|
|
66
|
+
this.loaded = true;
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Save cache to disk
|
|
71
|
+
*/
|
|
72
|
+
async save() {
|
|
73
|
+
if (!this.persist || !this.dirty) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const cacheDir = dirname(this.cachePath);
|
|
78
|
+
if (!existsSync(cacheDir)) {
|
|
79
|
+
mkdirSync(cacheDir, { recursive: true });
|
|
80
|
+
}
|
|
81
|
+
await this.prune();
|
|
82
|
+
const data = {
|
|
83
|
+
version: CACHE_VERSION,
|
|
84
|
+
projectRoot: this.projectRoot,
|
|
85
|
+
createdAt: this.createdAt,
|
|
86
|
+
updatedAt: Date.now(),
|
|
87
|
+
entries: Object.fromEntries(this.entries)
|
|
88
|
+
};
|
|
89
|
+
writeFileSync(this.cachePath, JSON.stringify(data, null, 2));
|
|
90
|
+
this.updatedAt = data.updatedAt;
|
|
91
|
+
this.dirty = false;
|
|
92
|
+
logger.info("Cache saved", { entries: this.entries.size });
|
|
93
|
+
return true;
|
|
94
|
+
} catch (error) {
|
|
95
|
+
logger.error("Failed to save cache", error instanceof Error ? error : new Error(String(error)));
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get cached metadata for a file
|
|
101
|
+
*/
|
|
102
|
+
get(filePath) {
|
|
103
|
+
const relativePath = this.normalizePath(filePath);
|
|
104
|
+
const entry = this.entries.get(relativePath);
|
|
105
|
+
if (entry) {
|
|
106
|
+
this.hitCount++;
|
|
107
|
+
return entry;
|
|
108
|
+
}
|
|
109
|
+
this.missCount++;
|
|
110
|
+
return void 0;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Set cached metadata for a file
|
|
114
|
+
*/
|
|
115
|
+
set(filePath, metadata) {
|
|
116
|
+
const relativePath = this.normalizePath(filePath);
|
|
117
|
+
const fullPath = join(this.projectRoot, relativePath);
|
|
118
|
+
let entry;
|
|
119
|
+
if (metadata.hash && metadata.size !== void 0 && metadata.mtime !== void 0) {
|
|
120
|
+
entry = {
|
|
121
|
+
path: relativePath,
|
|
122
|
+
size: metadata.size,
|
|
123
|
+
mtime: metadata.mtime,
|
|
124
|
+
hash: metadata.hash,
|
|
125
|
+
type: metadata.type || this.inferFileType(relativePath),
|
|
126
|
+
cachedAt: Date.now()
|
|
127
|
+
};
|
|
128
|
+
} else {
|
|
129
|
+
entry = this.computeMetadata(fullPath, relativePath);
|
|
130
|
+
}
|
|
131
|
+
this.entries.set(relativePath, entry);
|
|
132
|
+
this.dirty = true;
|
|
133
|
+
return entry;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Remove a file from cache
|
|
137
|
+
*/
|
|
138
|
+
delete(filePath) {
|
|
139
|
+
const relativePath = this.normalizePath(filePath);
|
|
140
|
+
const deleted = this.entries.delete(relativePath);
|
|
141
|
+
if (deleted) {
|
|
142
|
+
this.dirty = true;
|
|
143
|
+
}
|
|
144
|
+
return deleted;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Check if a file exists in cache
|
|
148
|
+
*/
|
|
149
|
+
has(filePath) {
|
|
150
|
+
const relativePath = this.normalizePath(filePath);
|
|
151
|
+
return this.entries.has(relativePath);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Check if a file has changed since caching
|
|
155
|
+
*/
|
|
156
|
+
hasChanged(filePath) {
|
|
157
|
+
const relativePath = this.normalizePath(filePath);
|
|
158
|
+
const fullPath = join(this.projectRoot, relativePath);
|
|
159
|
+
const cached = this.entries.get(relativePath);
|
|
160
|
+
if (!cached) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const stats = statSync(fullPath);
|
|
165
|
+
if (stats.mtimeMs !== cached.mtime || stats.size !== cached.size) {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
return false;
|
|
169
|
+
} catch {
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Detect changes for a list of files
|
|
175
|
+
*/
|
|
176
|
+
async detectChanges(filePaths) {
|
|
177
|
+
const changes = [];
|
|
178
|
+
const currentFiles = /* @__PURE__ */ new Set();
|
|
179
|
+
for (const filePath of filePaths) {
|
|
180
|
+
const relativePath = this.normalizePath(filePath);
|
|
181
|
+
const fullPath = join(this.projectRoot, relativePath);
|
|
182
|
+
currentFiles.add(relativePath);
|
|
183
|
+
const cached = this.entries.get(relativePath);
|
|
184
|
+
try {
|
|
185
|
+
const stats = statSync(fullPath);
|
|
186
|
+
const newMeta = this.computeMetadata(fullPath, relativePath);
|
|
187
|
+
if (!cached) {
|
|
188
|
+
changes.push({
|
|
189
|
+
path: relativePath,
|
|
190
|
+
change: "added",
|
|
191
|
+
newMeta
|
|
192
|
+
});
|
|
193
|
+
} else if (cached.mtime !== stats.mtimeMs || cached.size !== stats.size) {
|
|
194
|
+
if (cached.hash !== newMeta.hash) {
|
|
195
|
+
changes.push({
|
|
196
|
+
path: relativePath,
|
|
197
|
+
change: "modified",
|
|
198
|
+
oldMeta: cached,
|
|
199
|
+
newMeta
|
|
200
|
+
});
|
|
201
|
+
} else {
|
|
202
|
+
changes.push({
|
|
203
|
+
path: relativePath,
|
|
204
|
+
change: "unchanged",
|
|
205
|
+
oldMeta: cached,
|
|
206
|
+
newMeta
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
} else {
|
|
210
|
+
changes.push({
|
|
211
|
+
path: relativePath,
|
|
212
|
+
change: "unchanged",
|
|
213
|
+
oldMeta: cached,
|
|
214
|
+
newMeta: cached
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
} catch {
|
|
218
|
+
if (cached) {
|
|
219
|
+
changes.push({
|
|
220
|
+
path: relativePath,
|
|
221
|
+
change: "deleted",
|
|
222
|
+
oldMeta: cached
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
for (const [path, meta] of this.entries) {
|
|
228
|
+
if (!currentFiles.has(path)) {
|
|
229
|
+
changes.push({
|
|
230
|
+
path,
|
|
231
|
+
change: "deleted",
|
|
232
|
+
oldMeta: meta
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return changes;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Update cache with detected changes
|
|
240
|
+
*/
|
|
241
|
+
applyChanges(changes) {
|
|
242
|
+
for (const change of changes) {
|
|
243
|
+
switch (change.change) {
|
|
244
|
+
case "added":
|
|
245
|
+
case "modified":
|
|
246
|
+
if (change.newMeta) {
|
|
247
|
+
this.entries.set(change.path, change.newMeta);
|
|
248
|
+
}
|
|
249
|
+
break;
|
|
250
|
+
case "deleted":
|
|
251
|
+
this.entries.delete(change.path);
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
this.dirty = true;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get cache statistics
|
|
259
|
+
*/
|
|
260
|
+
getStats() {
|
|
261
|
+
let staleCount = 0;
|
|
262
|
+
const now = Date.now();
|
|
263
|
+
for (const entry of this.entries.values()) {
|
|
264
|
+
if (now - entry.cachedAt > this.defaultTTL) {
|
|
265
|
+
staleCount++;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const totalRequests = this.hitCount + this.missCount;
|
|
269
|
+
return {
|
|
270
|
+
totalEntries: this.entries.size,
|
|
271
|
+
hitCount: this.hitCount,
|
|
272
|
+
missCount: this.missCount,
|
|
273
|
+
hitRate: totalRequests > 0 ? this.hitCount / totalRequests : 0,
|
|
274
|
+
sizeBytes: this.estimateSize(),
|
|
275
|
+
lastUpdated: this.updatedAt,
|
|
276
|
+
staleEntries: staleCount
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Clear all cache entries
|
|
281
|
+
*/
|
|
282
|
+
clear() {
|
|
283
|
+
this.entries.clear();
|
|
284
|
+
this.hitCount = 0;
|
|
285
|
+
this.missCount = 0;
|
|
286
|
+
this.dirty = true;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Prune stale entries
|
|
290
|
+
*/
|
|
291
|
+
async prune() {
|
|
292
|
+
const now = Date.now();
|
|
293
|
+
let prunedCount = 0;
|
|
294
|
+
for (const [path, entry] of this.entries) {
|
|
295
|
+
if (now - entry.cachedAt > this.defaultTTL) {
|
|
296
|
+
this.entries.delete(path);
|
|
297
|
+
prunedCount++;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
if (this.entries.size > this.maxEntries) {
|
|
301
|
+
const entries = Array.from(this.entries.entries()).sort((a, b) => a[1].cachedAt - b[1].cachedAt);
|
|
302
|
+
const toRemove = entries.slice(0, entries.length - this.maxEntries);
|
|
303
|
+
for (const [path] of toRemove) {
|
|
304
|
+
this.entries.delete(path);
|
|
305
|
+
prunedCount++;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
if (prunedCount > 0) {
|
|
309
|
+
this.dirty = true;
|
|
310
|
+
logger.info("Pruned cache entries", { count: prunedCount });
|
|
311
|
+
}
|
|
312
|
+
return prunedCount;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Get all cached file paths
|
|
316
|
+
*/
|
|
317
|
+
getAllPaths() {
|
|
318
|
+
return Array.from(this.entries.keys());
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Get files by type
|
|
322
|
+
*/
|
|
323
|
+
getByType(type) {
|
|
324
|
+
return Array.from(this.entries.values()).filter((e) => e.type === type);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Invalidate entries matching a pattern
|
|
328
|
+
*/
|
|
329
|
+
invalidate(pattern) {
|
|
330
|
+
let count = 0;
|
|
331
|
+
for (const path of this.entries.keys()) {
|
|
332
|
+
if (pattern.test(path)) {
|
|
333
|
+
this.entries.delete(path);
|
|
334
|
+
count++;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
if (count > 0) {
|
|
338
|
+
this.dirty = true;
|
|
339
|
+
}
|
|
340
|
+
return count;
|
|
341
|
+
}
|
|
342
|
+
// Private helpers
|
|
343
|
+
normalizePath(filePath) {
|
|
344
|
+
if (filePath.startsWith(this.projectRoot)) {
|
|
345
|
+
return relative(this.projectRoot, filePath);
|
|
346
|
+
}
|
|
347
|
+
return filePath;
|
|
348
|
+
}
|
|
349
|
+
computeMetadata(fullPath, relativePath) {
|
|
350
|
+
const stats = statSync(fullPath);
|
|
351
|
+
const content = readFileSync(fullPath);
|
|
352
|
+
const hash = createHash("md5").update(content).digest("hex");
|
|
353
|
+
return {
|
|
354
|
+
path: relativePath,
|
|
355
|
+
size: stats.size,
|
|
356
|
+
mtime: stats.mtimeMs,
|
|
357
|
+
hash,
|
|
358
|
+
type: this.inferFileType(relativePath),
|
|
359
|
+
cachedAt: Date.now()
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
inferFileType(filePath) {
|
|
363
|
+
const ext = filePath.split(".").pop()?.toLowerCase() || "";
|
|
364
|
+
const filename = filePath.split("/").pop()?.toLowerCase() || "";
|
|
365
|
+
if (filename === "dockerfile" || filename.startsWith("dockerfile.")) {
|
|
366
|
+
return "docker";
|
|
367
|
+
}
|
|
368
|
+
if (filename.includes("docker-compose") || filename === "compose.yml" || filename === "compose.yaml") {
|
|
369
|
+
return "docker";
|
|
370
|
+
}
|
|
371
|
+
switch (ext) {
|
|
372
|
+
case "md":
|
|
373
|
+
case "mdx":
|
|
374
|
+
return "markdown";
|
|
375
|
+
case "ts":
|
|
376
|
+
case "tsx":
|
|
377
|
+
case "mts":
|
|
378
|
+
case "cts":
|
|
379
|
+
return "typescript";
|
|
380
|
+
case "js":
|
|
381
|
+
case "jsx":
|
|
382
|
+
case "mjs":
|
|
383
|
+
case "cjs":
|
|
384
|
+
return "javascript";
|
|
385
|
+
case "py":
|
|
386
|
+
case "pyw":
|
|
387
|
+
return "python";
|
|
388
|
+
case "rs":
|
|
389
|
+
return "rust";
|
|
390
|
+
case "go":
|
|
391
|
+
return "go";
|
|
392
|
+
case "java":
|
|
393
|
+
return "java";
|
|
394
|
+
case "php":
|
|
395
|
+
return "php";
|
|
396
|
+
case "rb":
|
|
397
|
+
return "ruby";
|
|
398
|
+
case "yml":
|
|
399
|
+
case "yaml":
|
|
400
|
+
return "yaml";
|
|
401
|
+
case "json":
|
|
402
|
+
return "json";
|
|
403
|
+
case "toml":
|
|
404
|
+
return "toml";
|
|
405
|
+
case "ini":
|
|
406
|
+
case "env":
|
|
407
|
+
case "conf":
|
|
408
|
+
case "config":
|
|
409
|
+
return "config";
|
|
410
|
+
default:
|
|
411
|
+
return "other";
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
estimateSize() {
|
|
415
|
+
let size = 0;
|
|
416
|
+
for (const entry of this.entries.values()) {
|
|
417
|
+
size += entry.path.length + entry.hash.length + 100;
|
|
418
|
+
}
|
|
419
|
+
return size;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
function createShadowCache(options) {
|
|
423
|
+
return new ShadowCache(options);
|
|
424
|
+
}
|
|
425
|
+
async function loadShadowCache(projectRoot) {
|
|
426
|
+
const cache = new ShadowCache({ projectRoot });
|
|
427
|
+
await cache.load();
|
|
428
|
+
return cache;
|
|
429
|
+
}
|
|
430
|
+
export {
|
|
431
|
+
ShadowCache,
|
|
432
|
+
createShadowCache,
|
|
433
|
+
loadShadowCache
|
|
434
|
+
};
|
|
435
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sources":["../../src/core/cache.ts"],"sourcesContent":["/**\n * Shadow Cache - File Metadata Caching\n *\n * Provides a caching layer for file metadata to enable incremental updates\n * and improve performance when analyzing large codebases.\n *\n * @module core/cache\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync, statSync } from 'fs';\nimport { join, relative, dirname } from 'path';\nimport { createHash } from 'crypto';\nimport { createLogger } from '../utils/index.js';\n\nconst logger = createLogger('shadow-cache');\n\n/**\n * File metadata stored in cache\n */\nexport interface FileMetadata {\n /** Relative path from project root */\n path: string;\n /** File size in bytes */\n size: number;\n /** Modification time (Unix timestamp) */\n mtime: number;\n /** Content hash (MD5) */\n hash: string;\n /** File type inferred from extension */\n type: FileType;\n /** When this entry was cached */\n cachedAt: number;\n}\n\n/**\n * File types for classification\n */\nexport type FileType =\n | 'markdown'\n | 'typescript'\n | 'javascript'\n | 'python'\n | 'rust'\n | 'go'\n | 'java'\n | 'php'\n | 'ruby'\n | 'yaml'\n | 'json'\n | 'toml'\n | 'config'\n | 'docker'\n | 'other';\n\n/**\n * Cache entry change type\n */\nexport type ChangeType = 'added' | 'modified' | 'deleted' | 'unchanged';\n\n/**\n * File change information\n */\nexport interface FileChange {\n path: string;\n change: ChangeType;\n oldMeta?: FileMetadata;\n newMeta?: FileMetadata;\n}\n\n/**\n * Cache statistics\n */\nexport interface CacheStats {\n totalEntries: number;\n hitCount: number;\n missCount: number;\n hitRate: number;\n sizeBytes: number;\n lastUpdated: number | null;\n staleEntries: number;\n}\n\n/**\n * Shadow Cache options\n */\nexport interface ShadowCacheOptions {\n /** Project root directory */\n projectRoot: string;\n /** Cache directory (relative to .kg) */\n cacheDir?: string;\n /** Default TTL in milliseconds (default: 1 hour) */\n defaultTTL?: number;\n /** Maximum entries before pruning (default: 10000) */\n maxEntries?: number;\n /** Enable persistence to disk (default: true) */\n persist?: boolean;\n}\n\n/**\n * Cache data structure stored on disk\n */\ninterface CacheData {\n version: number;\n projectRoot: string;\n createdAt: number;\n updatedAt: number;\n entries: Record<string, FileMetadata>;\n}\n\nconst CACHE_VERSION = 1;\nconst CACHE_FILENAME = 'shadow-cache.json';\n\n/**\n * Shadow Cache for file metadata\n *\n * Provides efficient caching of file metadata to enable:\n * - Incremental graph updates (only process changed files)\n * - Fast file existence/modification checks\n * - Content hash comparison\n *\n * @example\n * ```typescript\n * const cache = new ShadowCache({ projectRoot: '/my/project' });\n * await cache.load();\n *\n * // Check for changes\n * const changes = await cache.detectChanges(['docs/**\\/*.md']);\n *\n * // Process only changed files\n * for (const change of changes) {\n * if (change.change !== 'unchanged') {\n * console.log(`${change.path}: ${change.change}`);\n * }\n * }\n *\n * // Update cache with processed files\n * await cache.save();\n * ```\n */\nexport class ShadowCache {\n private projectRoot: string;\n private cacheDir: string;\n private cachePath: string;\n private defaultTTL: number;\n private maxEntries: number;\n private persist: boolean;\n\n private entries: Map<string, FileMetadata> = new Map();\n private hitCount = 0;\n private missCount = 0;\n private loaded = false;\n private dirty = false;\n private createdAt: number;\n private updatedAt: number;\n\n constructor(options: ShadowCacheOptions) {\n this.projectRoot = options.projectRoot;\n this.cacheDir = options.cacheDir || '.kg';\n this.cachePath = join(this.projectRoot, this.cacheDir, CACHE_FILENAME);\n this.defaultTTL = options.defaultTTL || 60 * 60 * 1000; // 1 hour\n this.maxEntries = options.maxEntries || 10000;\n this.persist = options.persist !== false;\n this.createdAt = Date.now();\n this.updatedAt = Date.now();\n }\n\n /**\n * Load cache from disk\n */\n async load(): Promise<boolean> {\n if (!this.persist) {\n this.loaded = true;\n return true;\n }\n\n try {\n if (existsSync(this.cachePath)) {\n const data = JSON.parse(readFileSync(this.cachePath, 'utf-8')) as CacheData;\n\n // Verify cache is for this project\n if (data.projectRoot !== this.projectRoot) {\n logger.warn('Cache project root mismatch, starting fresh');\n this.loaded = true;\n return false;\n }\n\n // Check version compatibility\n if (data.version !== CACHE_VERSION) {\n logger.warn('Cache version mismatch, starting fresh', {\n cacheVersion: data.version,\n expectedVersion: CACHE_VERSION,\n });\n this.loaded = true;\n return false;\n }\n\n // Load entries\n this.entries = new Map(Object.entries(data.entries));\n this.createdAt = data.createdAt;\n this.updatedAt = data.updatedAt;\n this.loaded = true;\n\n logger.info('Cache loaded', { entries: this.entries.size });\n return true;\n }\n } catch (error) {\n logger.error('Failed to load cache', error instanceof Error ? error : new Error(String(error)));\n }\n\n this.loaded = true;\n return false;\n }\n\n /**\n * Save cache to disk\n */\n async save(): Promise<boolean> {\n if (!this.persist || !this.dirty) {\n return true;\n }\n\n try {\n // Ensure cache directory exists\n const cacheDir = dirname(this.cachePath);\n if (!existsSync(cacheDir)) {\n mkdirSync(cacheDir, { recursive: true });\n }\n\n // Prune if needed\n await this.prune();\n\n const data: CacheData = {\n version: CACHE_VERSION,\n projectRoot: this.projectRoot,\n createdAt: this.createdAt,\n updatedAt: Date.now(),\n entries: Object.fromEntries(this.entries),\n };\n\n writeFileSync(this.cachePath, JSON.stringify(data, null, 2));\n this.updatedAt = data.updatedAt;\n this.dirty = false;\n\n logger.info('Cache saved', { entries: this.entries.size });\n return true;\n } catch (error) {\n logger.error('Failed to save cache', error instanceof Error ? error : new Error(String(error)));\n return false;\n }\n }\n\n /**\n * Get cached metadata for a file\n */\n get(filePath: string): FileMetadata | undefined {\n const relativePath = this.normalizePath(filePath);\n const entry = this.entries.get(relativePath);\n\n if (entry) {\n this.hitCount++;\n return entry;\n }\n\n this.missCount++;\n return undefined;\n }\n\n /**\n * Set cached metadata for a file\n */\n set(filePath: string, metadata: Partial<FileMetadata>): FileMetadata {\n const relativePath = this.normalizePath(filePath);\n const fullPath = join(this.projectRoot, relativePath);\n\n let entry: FileMetadata;\n\n if (metadata.hash && metadata.size !== undefined && metadata.mtime !== undefined) {\n // Full metadata provided\n entry = {\n path: relativePath,\n size: metadata.size,\n mtime: metadata.mtime,\n hash: metadata.hash,\n type: metadata.type || this.inferFileType(relativePath),\n cachedAt: Date.now(),\n };\n } else {\n // Compute from file\n entry = this.computeMetadata(fullPath, relativePath);\n }\n\n this.entries.set(relativePath, entry);\n this.dirty = true;\n return entry;\n }\n\n /**\n * Remove a file from cache\n */\n delete(filePath: string): boolean {\n const relativePath = this.normalizePath(filePath);\n const deleted = this.entries.delete(relativePath);\n if (deleted) {\n this.dirty = true;\n }\n return deleted;\n }\n\n /**\n * Check if a file exists in cache\n */\n has(filePath: string): boolean {\n const relativePath = this.normalizePath(filePath);\n return this.entries.has(relativePath);\n }\n\n /**\n * Check if a file has changed since caching\n */\n hasChanged(filePath: string): boolean {\n const relativePath = this.normalizePath(filePath);\n const fullPath = join(this.projectRoot, relativePath);\n const cached = this.entries.get(relativePath);\n\n if (!cached) {\n return true; // Not in cache = changed (new file)\n }\n\n try {\n const stats = statSync(fullPath);\n // Quick check: mtime and size\n if (stats.mtimeMs !== cached.mtime || stats.size !== cached.size) {\n return true;\n }\n return false;\n } catch {\n return true; // File doesn't exist = changed (deleted)\n }\n }\n\n /**\n * Detect changes for a list of files\n */\n async detectChanges(filePaths: string[]): Promise<FileChange[]> {\n const changes: FileChange[] = [];\n const currentFiles = new Set<string>();\n\n for (const filePath of filePaths) {\n const relativePath = this.normalizePath(filePath);\n const fullPath = join(this.projectRoot, relativePath);\n currentFiles.add(relativePath);\n\n const cached = this.entries.get(relativePath);\n\n try {\n const stats = statSync(fullPath);\n const newMeta = this.computeMetadata(fullPath, relativePath);\n\n if (!cached) {\n changes.push({\n path: relativePath,\n change: 'added',\n newMeta,\n });\n } else if (cached.mtime !== stats.mtimeMs || cached.size !== stats.size) {\n // Full hash comparison for definitive change detection\n if (cached.hash !== newMeta.hash) {\n changes.push({\n path: relativePath,\n change: 'modified',\n oldMeta: cached,\n newMeta,\n });\n } else {\n // mtime changed but content same (touch, etc.)\n changes.push({\n path: relativePath,\n change: 'unchanged',\n oldMeta: cached,\n newMeta,\n });\n }\n } else {\n changes.push({\n path: relativePath,\n change: 'unchanged',\n oldMeta: cached,\n newMeta: cached,\n });\n }\n } catch {\n if (cached) {\n changes.push({\n path: relativePath,\n change: 'deleted',\n oldMeta: cached,\n });\n }\n }\n }\n\n // Detect deleted files (in cache but not in current list)\n for (const [path, meta] of this.entries) {\n if (!currentFiles.has(path)) {\n changes.push({\n path,\n change: 'deleted',\n oldMeta: meta,\n });\n }\n }\n\n return changes;\n }\n\n /**\n * Update cache with detected changes\n */\n applyChanges(changes: FileChange[]): void {\n for (const change of changes) {\n switch (change.change) {\n case 'added':\n case 'modified':\n if (change.newMeta) {\n this.entries.set(change.path, change.newMeta);\n }\n break;\n case 'deleted':\n this.entries.delete(change.path);\n break;\n }\n }\n this.dirty = true;\n }\n\n /**\n * Get cache statistics\n */\n getStats(): CacheStats {\n let staleCount = 0;\n const now = Date.now();\n\n for (const entry of this.entries.values()) {\n if (now - entry.cachedAt > this.defaultTTL) {\n staleCount++;\n }\n }\n\n const totalRequests = this.hitCount + this.missCount;\n\n return {\n totalEntries: this.entries.size,\n hitCount: this.hitCount,\n missCount: this.missCount,\n hitRate: totalRequests > 0 ? this.hitCount / totalRequests : 0,\n sizeBytes: this.estimateSize(),\n lastUpdated: this.updatedAt,\n staleEntries: staleCount,\n };\n }\n\n /**\n * Clear all cache entries\n */\n clear(): void {\n this.entries.clear();\n this.hitCount = 0;\n this.missCount = 0;\n this.dirty = true;\n }\n\n /**\n * Prune stale entries\n */\n async prune(): Promise<number> {\n const now = Date.now();\n let prunedCount = 0;\n\n // Prune by TTL\n for (const [path, entry] of this.entries) {\n if (now - entry.cachedAt > this.defaultTTL) {\n this.entries.delete(path);\n prunedCount++;\n }\n }\n\n // Prune by max entries (LRU-ish: oldest cached first)\n if (this.entries.size > this.maxEntries) {\n const entries = Array.from(this.entries.entries())\n .sort((a, b) => a[1].cachedAt - b[1].cachedAt);\n\n const toRemove = entries.slice(0, entries.length - this.maxEntries);\n for (const [path] of toRemove) {\n this.entries.delete(path);\n prunedCount++;\n }\n }\n\n if (prunedCount > 0) {\n this.dirty = true;\n logger.info('Pruned cache entries', { count: prunedCount });\n }\n\n return prunedCount;\n }\n\n /**\n * Get all cached file paths\n */\n getAllPaths(): string[] {\n return Array.from(this.entries.keys());\n }\n\n /**\n * Get files by type\n */\n getByType(type: FileType): FileMetadata[] {\n return Array.from(this.entries.values()).filter(e => e.type === type);\n }\n\n /**\n * Invalidate entries matching a pattern\n */\n invalidate(pattern: RegExp): number {\n let count = 0;\n for (const path of this.entries.keys()) {\n if (pattern.test(path)) {\n this.entries.delete(path);\n count++;\n }\n }\n if (count > 0) {\n this.dirty = true;\n }\n return count;\n }\n\n // Private helpers\n\n private normalizePath(filePath: string): string {\n // Make path relative to project root\n if (filePath.startsWith(this.projectRoot)) {\n return relative(this.projectRoot, filePath);\n }\n return filePath;\n }\n\n private computeMetadata(fullPath: string, relativePath: string): FileMetadata {\n const stats = statSync(fullPath);\n const content = readFileSync(fullPath);\n const hash = createHash('md5').update(content).digest('hex');\n\n return {\n path: relativePath,\n size: stats.size,\n mtime: stats.mtimeMs,\n hash,\n type: this.inferFileType(relativePath),\n cachedAt: Date.now(),\n };\n }\n\n private inferFileType(filePath: string): FileType {\n const ext = filePath.split('.').pop()?.toLowerCase() || '';\n const filename = filePath.split('/').pop()?.toLowerCase() || '';\n\n // Docker files\n if (filename === 'dockerfile' || filename.startsWith('dockerfile.')) {\n return 'docker';\n }\n if (filename.includes('docker-compose') || filename === 'compose.yml' || filename === 'compose.yaml') {\n return 'docker';\n }\n\n // By extension\n switch (ext) {\n case 'md':\n case 'mdx':\n return 'markdown';\n case 'ts':\n case 'tsx':\n case 'mts':\n case 'cts':\n return 'typescript';\n case 'js':\n case 'jsx':\n case 'mjs':\n case 'cjs':\n return 'javascript';\n case 'py':\n case 'pyw':\n return 'python';\n case 'rs':\n return 'rust';\n case 'go':\n return 'go';\n case 'java':\n return 'java';\n case 'php':\n return 'php';\n case 'rb':\n return 'ruby';\n case 'yml':\n case 'yaml':\n return 'yaml';\n case 'json':\n return 'json';\n case 'toml':\n return 'toml';\n case 'ini':\n case 'env':\n case 'conf':\n case 'config':\n return 'config';\n default:\n return 'other';\n }\n }\n\n private estimateSize(): number {\n // Rough estimate: JSON serialization size\n let size = 0;\n for (const entry of this.entries.values()) {\n size += entry.path.length + entry.hash.length + 100; // ~100 bytes overhead per entry\n }\n return size;\n }\n}\n\n/**\n * Create a shadow cache for a project\n */\nexport function createShadowCache(options: ShadowCacheOptions): ShadowCache {\n return new ShadowCache(options);\n}\n\n/**\n * Load or create shadow cache for a project\n */\nexport async function loadShadowCache(projectRoot: string): Promise<ShadowCache> {\n const cache = new ShadowCache({ projectRoot });\n await cache.load();\n return cache;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeepAnalyzer - Claude-Flow Integration for Deep Codebase Analysis
|
|
3
|
+
*
|
|
4
|
+
* Uses claude-flow agents for comprehensive codebase analysis:
|
|
5
|
+
* - Pattern detection and architectural insights
|
|
6
|
+
* - Documentation gap analysis
|
|
7
|
+
* - Standards compliance checking
|
|
8
|
+
*
|
|
9
|
+
* @module cultivation/deep-analyzer
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Deep analyzer options
|
|
13
|
+
*/
|
|
14
|
+
export interface DeepAnalyzerOptions {
|
|
15
|
+
/** Project root directory */
|
|
16
|
+
projectRoot: string;
|
|
17
|
+
/** Documentation path (relative to project root) */
|
|
18
|
+
docsPath?: string;
|
|
19
|
+
/** Output directory for analysis results */
|
|
20
|
+
outputDir?: string;
|
|
21
|
+
/** Enable verbose logging */
|
|
22
|
+
verbose?: boolean;
|
|
23
|
+
/** Maximum agents to spawn */
|
|
24
|
+
maxAgents?: number;
|
|
25
|
+
/** Agent execution mode */
|
|
26
|
+
agentMode?: 'sequential' | 'parallel' | 'adaptive';
|
|
27
|
+
/** Timeout for each agent (ms) */
|
|
28
|
+
agentTimeout?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Analysis result from an agent
|
|
32
|
+
*/
|
|
33
|
+
export interface AgentResult {
|
|
34
|
+
name: string;
|
|
35
|
+
type: string;
|
|
36
|
+
success: boolean;
|
|
37
|
+
insights: string[];
|
|
38
|
+
documents: Array<{
|
|
39
|
+
path: string;
|
|
40
|
+
title: string;
|
|
41
|
+
}>;
|
|
42
|
+
duration: number;
|
|
43
|
+
error?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Deep analysis result
|
|
47
|
+
*/
|
|
48
|
+
export interface DeepAnalysisResult {
|
|
49
|
+
success: boolean;
|
|
50
|
+
agentsSpawned: number;
|
|
51
|
+
insightsCount: number;
|
|
52
|
+
documentsCreated: number;
|
|
53
|
+
results: AgentResult[];
|
|
54
|
+
duration: number;
|
|
55
|
+
errors: string[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* DeepAnalyzer - Uses claude-flow for deep codebase analysis
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const analyzer = new DeepAnalyzer({
|
|
63
|
+
* projectRoot: '/my/project',
|
|
64
|
+
* docsPath: 'docs',
|
|
65
|
+
* });
|
|
66
|
+
*
|
|
67
|
+
* const result = await analyzer.analyze();
|
|
68
|
+
* console.log(`Generated ${result.insightsCount} insights`);
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare class DeepAnalyzer {
|
|
72
|
+
private projectRoot;
|
|
73
|
+
private docsPath;
|
|
74
|
+
private outputDir;
|
|
75
|
+
private verbose;
|
|
76
|
+
private maxAgents;
|
|
77
|
+
private agentMode;
|
|
78
|
+
private agentTimeout;
|
|
79
|
+
constructor(options: DeepAnalyzerOptions);
|
|
80
|
+
/**
|
|
81
|
+
* Check if claude-flow is available
|
|
82
|
+
*/
|
|
83
|
+
isAvailable(): Promise<boolean>;
|
|
84
|
+
/**
|
|
85
|
+
* Run deep analysis
|
|
86
|
+
*/
|
|
87
|
+
analyze(): Promise<DeepAnalysisResult>;
|
|
88
|
+
/**
|
|
89
|
+
* Execute agents in parallel
|
|
90
|
+
*/
|
|
91
|
+
private executeParallel;
|
|
92
|
+
/**
|
|
93
|
+
* Execute agents sequentially
|
|
94
|
+
*/
|
|
95
|
+
private executeSequential;
|
|
96
|
+
/**
|
|
97
|
+
* Execute agents adaptively (start with 2, scale based on success)
|
|
98
|
+
*/
|
|
99
|
+
private executeAdaptive;
|
|
100
|
+
/**
|
|
101
|
+
* Execute a single agent
|
|
102
|
+
*/
|
|
103
|
+
private executeAgent;
|
|
104
|
+
/**
|
|
105
|
+
* Build prompt for agent
|
|
106
|
+
*/
|
|
107
|
+
private buildPrompt;
|
|
108
|
+
/**
|
|
109
|
+
* Run claude-flow agent
|
|
110
|
+
*/
|
|
111
|
+
private runClaudeFlowAgent;
|
|
112
|
+
/**
|
|
113
|
+
* Extract insights from agent output
|
|
114
|
+
*/
|
|
115
|
+
private extractInsights;
|
|
116
|
+
/**
|
|
117
|
+
* Format output for documentation
|
|
118
|
+
*/
|
|
119
|
+
private formatOutput;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Create a deep analyzer instance
|
|
123
|
+
*/
|
|
124
|
+
export declare function createDeepAnalyzer(options: DeepAnalyzerOptions): DeepAnalyzer;
|
|
125
|
+
/**
|
|
126
|
+
* Run deep analysis on a project
|
|
127
|
+
*/
|
|
128
|
+
export declare function analyzeDeep(projectRoot: string, docsPath?: string): Promise<DeepAnalysisResult>;
|
|
129
|
+
//# sourceMappingURL=deep-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-analyzer.d.ts","sourceRoot":"","sources":["../../src/cultivation/deep-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsBH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;IACnD,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAYD;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,EAAE,mBAAmB;IAWxC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAerC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAyF5C;;OAEG;YACW,eAAe;IAK7B;;OAEG;YACW,iBAAiB;IAQ/B;;OAEG;YACW,eAAe;IA2B7B;;OAEG;YACW,YAAY;IA0C1B;;OAEG;IACH,OAAO,CAAC,WAAW;IA8BnB;;OAEG;YACW,kBAAkB;IA2ChC;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,OAAO,CAAC,YAAY;CA4BrB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAE7E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAG7B"}
|