@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-init.js","sources":["../../src/generators/docs-init.ts"],"sourcesContent":["/**\n * Docs Directory Initializer\n *\n * Creates the initial docs directory structure following the weave-nn\n * methodology with proper PRIMITIVES.md taxonomy.\n */\n\nimport { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';\nimport { join, basename } from 'path';\nimport fg from 'fast-glob';\nimport Handlebars from 'handlebars';\nimport type {\n DocsInitOptions,\n DocsInitResult,\n NodeType,\n} from '../core/types.js';\n\n/**\n * Default docs structure based on PRIMITIVES.md taxonomy\n */\nconst DEFAULT_STRUCTURE = {\n directories: [\n // Core concepts\n 'concepts',\n 'concepts/architecture',\n 'concepts/patterns',\n\n // Components\n 'components',\n 'components/ui',\n 'components/utilities',\n\n // Services\n 'services',\n 'services/api',\n 'services/workers',\n\n // Features\n 'features',\n 'features/core',\n 'features/advanced',\n\n // Integrations\n 'integrations',\n 'integrations/databases',\n 'integrations/auth-providers',\n 'integrations/storage',\n 'integrations/monitoring',\n\n // Standards\n 'standards',\n 'standards/coding-standards',\n 'standards/programming-languages',\n 'standards/build-tools',\n\n // Guides\n 'guides',\n 'guides/getting-started',\n 'guides/testing',\n 'guides/deployment',\n\n // References\n 'references',\n 'references/api',\n 'references/cli',\n\n // Meta\n '_templates',\n '_attachments',\n ],\n files: {\n 'README.md': 'readme',\n 'PRIMITIVES.md': 'primitives',\n 'MOC.md': 'moc',\n '_templates/concept.md': 'template-concept',\n '_templates/technical.md': 'template-technical',\n '_templates/feature.md': 'template-feature',\n '_templates/service.md': 'template-service',\n '_templates/guide.md': 'template-guide',\n },\n};\n\n/**\n * Template content for docs files\n */\nconst TEMPLATES: Record<string, string> = {\n readme: `# {{projectName}} Documentation\n\nWelcome to the {{projectName}} knowledge base.\n\n## Quick Navigation\n\n- [[MOC|Map of Content]] - Overview of all documentation\n- [[PRIMITIVES|Primitives]] - Core building blocks and technologies\n\n## Structure\n\nThis documentation follows the Weave-NN knowledge graph methodology:\n\n\\`\\`\\`\ndocs/\n├── concepts/ # Abstract concepts and ideas\n├── components/ # Reusable components and utilities\n├── services/ # Backend services and APIs\n├── features/ # Product features and capabilities\n├── integrations/ # External integrations\n├── standards/ # Coding standards and conventions\n├── guides/ # How-to guides and tutorials\n└── references/ # API and CLI references\n\\`\\`\\`\n\n## Getting Started\n\n1. Browse the [[MOC|Map of Content]] for an overview\n2. Check [[PRIMITIVES]] for technology decisions\n3. Read [[guides/getting-started/index|Getting Started Guide]]\n\n---\n*Generated by @weave-nn/knowledge-graph-agent*\n`,\n\n primitives: `# Primitives\n\nCore building blocks and technology decisions for {{projectName}}.\n\n## Overview\n\nPrimitives are the foundational technologies that power this project. Each primitive represents a key technology choice with its rationale and usage patterns.\n\n## Categories\n\n### Languages\n{{#each languages}}\n- [[standards/programming-languages/{{this}}|{{this}}]]\n{{/each}}\n\n### Frameworks\n{{#each frameworks}}\n- [[{{category}}/{{slug}}|{{name}}]]\n{{/each}}\n\n### Key Dependencies\n{{#each dependencies}}\n- [[{{category}}/{{slug}}|{{name}}]] - {{description}}\n{{/each}}\n\n## Technology Decisions\n\n| Category | Choice | Rationale |\n|----------|--------|-----------|\n| Runtime | Node.js | Modern JavaScript runtime |\n| Language | TypeScript | Type safety and DX |\n| Package Manager | npm/bun | Fast, reliable |\n\n---\n*Generated by @weave-nn/knowledge-graph-agent*\n`,\n\n moc: `# Map of Content\n\nCentral navigation hub for {{projectName}} documentation.\n\n## Core Concepts\n{{#each concepts}}\n- [[concepts/{{this}}]]\n{{/each}}\n{{#unless concepts}}\n- *No concepts documented yet*\n{{/unless}}\n\n## Components\n{{#each components}}\n- [[components/{{this}}]]\n{{/each}}\n{{#unless components}}\n- *No components documented yet*\n{{/unless}}\n\n## Services\n{{#each services}}\n- [[services/{{this}}]]\n{{/each}}\n{{#unless services}}\n- *No services documented yet*\n{{/unless}}\n\n## Features\n{{#each features}}\n- [[features/{{this}}]]\n{{/each}}\n{{#unless features}}\n- *No features documented yet*\n{{/unless}}\n\n## Guides\n- [[guides/getting-started/index|Getting Started]]\n- [[guides/testing/index|Testing Guide]]\n- [[guides/deployment/index|Deployment Guide]]\n\n## References\n- [[references/api/index|API Reference]]\n- [[references/cli/index|CLI Reference]]\n\n---\n*Last updated: {{date}}*\n`,\n\n 'template-concept': `---\ntitle: {{title}}\ntype: concept\nstatus: draft\ntags: [concept]\ncreated: {{date}}\nupdated: {{date}}\n---\n\n# {{title}}\n\n## Overview\n\nBrief description of this concept.\n\n## Key Ideas\n\n- Point 1\n- Point 2\n- Point 3\n\n## Related Concepts\n\n- [[related-concept-1]]\n- [[related-concept-2]]\n\n## References\n\n- External reference 1\n- External reference 2\n`,\n\n 'template-technical': `---\ntitle: {{title}}\ntype: technical\nstatus: draft\ntags: [technical]\ncreated: {{date}}\nupdated: {{date}}\n---\n\n# {{title}}\n\n## Overview\n\nBrief description of this technical component.\n\n## Implementation\n\n\\`\\`\\`typescript\n// Code example\n\\`\\`\\`\n\n## Usage\n\nHow to use this component.\n\n## Configuration\n\nAvailable configuration options.\n\n## Related\n\n- [[related-technical-1]]\n`,\n\n 'template-feature': `---\ntitle: {{title}}\ntype: feature\nstatus: draft\ntags: [feature]\ncreated: {{date}}\nupdated: {{date}}\n---\n\n# {{title}}\n\n## Overview\n\nBrief description of this feature.\n\n## User Story\n\nAs a [user type], I want [goal] so that [benefit].\n\n## Acceptance Criteria\n\n- [ ] Criterion 1\n- [ ] Criterion 2\n- [ ] Criterion 3\n\n## Technical Implementation\n\nHow this feature is implemented.\n\n## Related Features\n\n- [[related-feature-1]]\n`,\n\n 'template-service': `---\ntitle: {{title}}\ntype: service\nstatus: draft\ntags: [service, api]\ncreated: {{date}}\nupdated: {{date}}\n---\n\n# {{title}}\n\n## Overview\n\nBrief description of this service.\n\n## Endpoints\n\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /api/... | Description |\n| POST | /api/... | Description |\n\n## Configuration\n\nEnvironment variables and configuration options.\n\n## Dependencies\n\n- [[dependency-1]]\n- [[dependency-2]]\n\n## Deployment\n\nDeployment instructions.\n`,\n\n 'template-guide': `---\ntitle: {{title}}\ntype: guide\nstatus: draft\ntags: [guide, tutorial]\ncreated: {{date}}\nupdated: {{date}}\n---\n\n# {{title}}\n\n## Prerequisites\n\n- Prerequisite 1\n- Prerequisite 2\n\n## Steps\n\n### Step 1: Title\n\nInstructions for step 1.\n\n### Step 2: Title\n\nInstructions for step 2.\n\n### Step 3: Title\n\nInstructions for step 3.\n\n## Troubleshooting\n\nCommon issues and solutions.\n\n## Next Steps\n\n- [[next-guide-1]]\n- [[next-guide-2]]\n`,\n};\n\n/**\n * Framework detection result\n */\ninterface FrameworkInfo {\n name: string;\n slug: string;\n category: string;\n version?: string;\n}\n\n/**\n * Initialize docs directory\n */\nexport async function initDocs(options: DocsInitOptions): Promise<DocsInitResult> {\n const result: DocsInitResult = {\n success: true,\n docsPath: '',\n filesCreated: [],\n errors: [],\n };\n\n try {\n const { projectRoot, docsPath = 'docs', includeExamples = true, detectFramework = true } = options;\n const fullDocsPath = join(projectRoot, docsPath);\n result.docsPath = fullDocsPath;\n\n // Detect project information\n const projectName = await detectProjectName(projectRoot);\n const frameworks = detectFramework ? await detectFrameworks(projectRoot) : [];\n const languages = detectFramework ? await detectLanguages(projectRoot) : [];\n const dependencies = detectFramework ? await detectDependencies(projectRoot) : [];\n\n // Create template context\n const context = {\n projectName,\n date: new Date().toISOString().split('T')[0],\n frameworks,\n languages,\n dependencies,\n concepts: [],\n components: [],\n services: [],\n features: [],\n };\n\n // Create directories\n for (const dir of DEFAULT_STRUCTURE.directories) {\n const dirPath = join(fullDocsPath, dir);\n if (!existsSync(dirPath)) {\n mkdirSync(dirPath, { recursive: true });\n result.filesCreated.push(dirPath);\n }\n }\n\n // Create files from templates\n for (const [filePath, templateName] of Object.entries(DEFAULT_STRUCTURE.files)) {\n const fullPath = join(fullDocsPath, filePath);\n\n // Skip if file exists\n if (existsSync(fullPath)) {\n continue;\n }\n\n // Get template and compile\n const template = TEMPLATES[templateName];\n if (!template) {\n result.errors.push(`Template not found: ${templateName}`);\n continue;\n }\n\n try {\n const compiled = Handlebars.compile(template);\n const content = compiled(context);\n writeFileSync(fullPath, content, 'utf-8');\n result.filesCreated.push(fullPath);\n } catch (error) {\n result.errors.push(`Failed to create ${filePath}: ${error}`);\n }\n }\n\n // Create example files if requested\n if (includeExamples) {\n await createExampleFiles(fullDocsPath, context, result);\n }\n\n // Create .obsidian folder for vault detection\n const obsidianPath = join(fullDocsPath, '.obsidian');\n if (!existsSync(obsidianPath)) {\n mkdirSync(obsidianPath, { recursive: true });\n\n // Create minimal app.json for Obsidian\n const appJson = {\n \"legacyEditor\": false,\n \"livePreview\": true,\n };\n writeFileSync(join(obsidianPath, 'app.json'), JSON.stringify(appJson, null, 2));\n result.filesCreated.push(obsidianPath);\n }\n\n result.success = result.errors.length === 0;\n } catch (error) {\n result.success = false;\n result.errors.push(`Init failed: ${error}`);\n }\n\n return result;\n}\n\n/**\n * Detect project name from package.json or directory\n */\nasync function detectProjectName(projectRoot: string): Promise<string> {\n try {\n const pkgPath = join(projectRoot, 'package.json');\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n if (pkg.name) {\n // Remove scope if present\n return pkg.name.replace(/^@[^/]+\\//, '');\n }\n }\n } catch {\n // Ignore errors\n }\n\n // Fall back to directory name\n return basename(projectRoot);\n}\n\n/**\n * Detect frameworks from project files\n */\nasync function detectFrameworks(projectRoot: string): Promise<FrameworkInfo[]> {\n const frameworks: FrameworkInfo[] = [];\n\n try {\n const pkgPath = join(projectRoot, 'package.json');\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\n\n // Framework detection patterns\n const patterns: Array<{ name: string; packages: string[]; category: string }> = [\n { name: 'React', packages: ['react'], category: 'components/ui' },\n { name: 'Next.js', packages: ['next'], category: 'services/api' },\n { name: 'Vue', packages: ['vue'], category: 'components/ui' },\n { name: 'Express', packages: ['express'], category: 'services/api' },\n { name: 'Fastify', packages: ['fastify'], category: 'services/api' },\n { name: 'Prisma', packages: ['@prisma/client', 'prisma'], category: 'integrations/databases' },\n { name: 'TypeORM', packages: ['typeorm'], category: 'integrations/databases' },\n { name: 'Jest', packages: ['jest'], category: 'guides/testing' },\n { name: 'Vitest', packages: ['vitest'], category: 'guides/testing' },\n { name: 'Vite', packages: ['vite'], category: 'standards/build-tools' },\n { name: 'Webpack', packages: ['webpack'], category: 'standards/build-tools' },\n ];\n\n for (const pattern of patterns) {\n for (const pkg of pattern.packages) {\n if (deps[pkg]) {\n frameworks.push({\n name: pattern.name,\n slug: pattern.name.toLowerCase().replace(/[^a-z0-9]+/g, '-'),\n category: pattern.category,\n version: deps[pkg],\n });\n break;\n }\n }\n }\n }\n } catch {\n // Ignore errors\n }\n\n return frameworks;\n}\n\n/**\n * Detect programming languages used\n */\nasync function detectLanguages(projectRoot: string): Promise<string[]> {\n const languages: Set<string> = new Set();\n\n try {\n // Check for TypeScript\n if (existsSync(join(projectRoot, 'tsconfig.json'))) {\n languages.add('typescript');\n }\n\n // Check for package.json (JavaScript/Node.js)\n if (existsSync(join(projectRoot, 'package.json'))) {\n languages.add('javascript');\n }\n\n // Check for Python\n if (existsSync(join(projectRoot, 'requirements.txt')) ||\n existsSync(join(projectRoot, 'pyproject.toml'))) {\n languages.add('python');\n }\n\n // Check for Rust\n if (existsSync(join(projectRoot, 'Cargo.toml'))) {\n languages.add('rust');\n }\n\n // Check for Go\n if (existsSync(join(projectRoot, 'go.mod'))) {\n languages.add('go');\n }\n } catch {\n // Ignore errors\n }\n\n return Array.from(languages);\n}\n\n/**\n * Detect major dependencies\n */\nasync function detectDependencies(projectRoot: string): Promise<Array<{ name: string; slug: string; category: string; description: string }>> {\n const deps: Array<{ name: string; slug: string; category: string; description: string }> = [];\n\n try {\n const pkgPath = join(projectRoot, 'package.json');\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n const allDeps = { ...pkg.dependencies };\n\n // Top dependencies to document\n const topDeps = Object.keys(allDeps).slice(0, 10);\n\n for (const dep of topDeps) {\n deps.push({\n name: dep,\n slug: dep.replace(/^@/, '').replace(/[^a-z0-9]+/g, '-'),\n category: 'components/utilities',\n description: `Version ${allDeps[dep]}`,\n });\n }\n }\n } catch {\n // Ignore errors\n }\n\n return deps;\n}\n\n/**\n * Create example documentation files\n */\nasync function createExampleFiles(\n docsPath: string,\n context: Record<string, unknown>,\n result: DocsInitResult\n): Promise<void> {\n const examples = [\n {\n path: 'guides/getting-started/index.md',\n content: `---\ntitle: Getting Started\ntype: guide\nstatus: active\ntags: [guide, getting-started]\ncreated: ${context.date}\nupdated: ${context.date}\n---\n\n# Getting Started with ${context.projectName}\n\nWelcome! This guide will help you get up and running.\n\n## Prerequisites\n\n- Node.js 20+\n- npm or bun\n\n## Installation\n\n\\`\\`\\`bash\nnpm install\n\\`\\`\\`\n\n## Quick Start\n\n1. Clone the repository\n2. Install dependencies\n3. Run the development server\n\n## Next Steps\n\n- Explore the [[MOC|Map of Content]]\n- Review [[PRIMITIVES|Technology Primitives]]\n`,\n },\n {\n path: 'concepts/architecture/index.md',\n content: `---\ntitle: Architecture Overview\ntype: concept\nstatus: active\ntags: [architecture, concept]\ncreated: ${context.date}\nupdated: ${context.date}\n---\n\n# Architecture Overview\n\nHigh-level architecture of ${context.projectName}.\n\n## System Diagram\n\n\\`\\`\\`\n┌──────────────┐ ┌──────────────┐\n│ Frontend │────▶│ Backend │\n└──────────────┘ └──────────────┘\n │\n ┌──────▼──────┐\n │ Database │\n └─────────────┘\n\\`\\`\\`\n\n## Key Components\n\n- **Frontend**: User interface\n- **Backend**: API and business logic\n- **Database**: Data persistence\n\n## Design Principles\n\n1. Separation of concerns\n2. Single responsibility\n3. Dependency injection\n`,\n },\n ];\n\n for (const example of examples) {\n const fullPath = join(docsPath, example.path);\n if (!existsSync(fullPath)) {\n const dir = join(fullPath, '..');\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n writeFileSync(fullPath, example.content, 'utf-8');\n result.filesCreated.push(fullPath);\n }\n }\n}\n\n/**\n * Check if docs directory exists\n */\nexport function docsExist(projectRoot: string, docsPath = 'docs'): boolean {\n return existsSync(join(projectRoot, docsPath));\n}\n\n/**\n * Get docs path for a project\n */\nexport function getDocsPath(projectRoot: string): string | null {\n const possiblePaths = ['docs', 'documentation', 'doc', 'wiki'];\n\n for (const path of possiblePaths) {\n const fullPath = join(projectRoot, path);\n if (existsSync(fullPath)) {\n return fullPath;\n }\n }\n\n return null;\n}\n"],"names":["pkg"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"docs-init.js","sources":["../../src/generators/docs-init.ts"],"sourcesContent":["/**\n * Docs Directory Initializer\n *\n * Creates the initial docs directory structure following the weave-nn\n * methodology with proper PRIMITIVES.md taxonomy.\n *\n * SECURITY NOTES (Handlebars Templates):\n * - All templates use double-braces {{}} which HTML-escapes output\n * - Triple-braces {{{raw}}} are NOT used, preventing injection attacks\n * - Template variables come from internal sources (project analysis), not direct user input\n * - See: https://handlebarsjs.com/guide/#html-escaping\n */\n\nimport { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';\nimport { join, basename } from 'path';\nimport fg from 'fast-glob';\nimport Handlebars from 'handlebars';\nimport type {\n DocsInitOptions,\n DocsInitResult,\n NodeType,\n} from '../core/types.js';\n\n/**\n * Default docs structure based on PRIMITIVES.md taxonomy\n */\nconst DEFAULT_STRUCTURE = {\n directories: [\n // Core concepts\n 'concepts',\n 'concepts/architecture',\n 'concepts/patterns',\n\n // Components\n 'components',\n 'components/ui',\n 'components/utilities',\n\n // Services\n 'services',\n 'services/api',\n 'services/workers',\n\n // Features\n 'features',\n 'features/core',\n 'features/advanced',\n\n // Integrations\n 'integrations',\n 'integrations/databases',\n 'integrations/auth-providers',\n 'integrations/storage',\n 'integrations/monitoring',\n\n // Standards\n 'standards',\n 'standards/coding-standards',\n 'standards/programming-languages',\n 'standards/build-tools',\n\n // Guides\n 'guides',\n 'guides/getting-started',\n 'guides/testing',\n 'guides/deployment',\n\n // References\n 'references',\n 'references/api',\n 'references/cli',\n\n // Meta\n '_templates',\n '_attachments',\n ],\n files: {\n 'README.md': 'readme',\n 'PRIMITIVES.md': 'primitives',\n 'MOC.md': 'moc',\n '_templates/concept.md': 'template-concept',\n '_templates/technical.md': 'template-technical',\n '_templates/feature.md': 'template-feature',\n '_templates/service.md': 'template-service',\n '_templates/guide.md': 'template-guide',\n },\n};\n\n/**\n * Template content for docs files\n */\nconst TEMPLATES: Record<string, string> = {\n readme: `# {{projectName}} Documentation\n\nWelcome to the {{projectName}} knowledge base.\n\n## Quick Navigation\n\n- [[MOC|Map of Content]] - Overview of all documentation\n- [[PRIMITIVES|Primitives]] - Core building blocks and technologies\n\n## Structure\n\nThis documentation follows the Weave-NN knowledge graph methodology:\n\n\\`\\`\\`\ndocs/\n├── concepts/ # Abstract concepts and ideas\n├── components/ # Reusable components and utilities\n├── services/ # Backend services and APIs\n├── features/ # Product features and capabilities\n├── integrations/ # External integrations\n├── standards/ # Coding standards and conventions\n├── guides/ # How-to guides and tutorials\n└── references/ # API and CLI references\n\\`\\`\\`\n\n## Getting Started\n\n1. Browse the [[MOC|Map of Content]] for an overview\n2. Check [[PRIMITIVES]] for technology decisions\n3. Read [[guides/getting-started/index|Getting Started Guide]]\n\n---\n*Generated by @weave-nn/knowledge-graph-agent*\n`,\n\n primitives: `# Primitives\n\nCore building blocks and technology decisions for {{projectName}}.\n\n## Overview\n\nPrimitives are the foundational technologies that power this project. Each primitive represents a key technology choice with its rationale and usage patterns.\n\n## Categories\n\n### Languages\n{{#each languages}}\n- [[standards/programming-languages/{{this}}|{{this}}]]\n{{/each}}\n\n### Frameworks\n{{#each frameworks}}\n- [[{{category}}/{{slug}}|{{name}}]]\n{{/each}}\n\n### Key Dependencies\n{{#each dependencies}}\n- [[{{category}}/{{slug}}|{{name}}]] - {{description}}\n{{/each}}\n\n## Technology Decisions\n\n| Category | Choice | Rationale |\n|----------|--------|-----------|\n| Runtime | Node.js | Modern JavaScript runtime |\n| Language | TypeScript | Type safety and DX |\n| Package Manager | npm/bun | Fast, reliable |\n\n---\n*Generated by @weave-nn/knowledge-graph-agent*\n`,\n\n moc: `# Map of Content\n\nCentral navigation hub for {{projectName}} documentation.\n\n## Core Concepts\n{{#each concepts}}\n- [[concepts/{{this}}]]\n{{/each}}\n{{#unless concepts}}\n- *No concepts documented yet*\n{{/unless}}\n\n## Components\n{{#each components}}\n- [[components/{{this}}]]\n{{/each}}\n{{#unless components}}\n- *No components documented yet*\n{{/unless}}\n\n## Services\n{{#each services}}\n- [[services/{{this}}]]\n{{/each}}\n{{#unless services}}\n- *No services documented yet*\n{{/unless}}\n\n## Features\n{{#each features}}\n- [[features/{{this}}]]\n{{/each}}\n{{#unless features}}\n- *No features documented yet*\n{{/unless}}\n\n## Guides\n- [[guides/getting-started/index|Getting Started]]\n- [[guides/testing/index|Testing Guide]]\n- [[guides/deployment/index|Deployment Guide]]\n\n## References\n- [[references/api/index|API Reference]]\n- [[references/cli/index|CLI Reference]]\n\n---\n*Last updated: {{date}}*\n`,\n\n 'template-concept': `---\ntitle: {{title}}\ntype: concept\nstatus: draft\ntags: [concept]\ncreated: {{date}}\nupdated: {{date}}\n---\n\n# {{title}}\n\n## Overview\n\nBrief description of this concept.\n\n## Key Ideas\n\n- Point 1\n- Point 2\n- Point 3\n\n## Related Concepts\n\n- [[related-concept-1]]\n- [[related-concept-2]]\n\n## References\n\n- External reference 1\n- External reference 2\n`,\n\n 'template-technical': `---\ntitle: {{title}}\ntype: technical\nstatus: draft\ntags: [technical]\ncreated: {{date}}\nupdated: {{date}}\n---\n\n# {{title}}\n\n## Overview\n\nBrief description of this technical component.\n\n## Implementation\n\n\\`\\`\\`typescript\n// Code example\n\\`\\`\\`\n\n## Usage\n\nHow to use this component.\n\n## Configuration\n\nAvailable configuration options.\n\n## Related\n\n- [[related-technical-1]]\n`,\n\n 'template-feature': `---\ntitle: {{title}}\ntype: feature\nstatus: draft\ntags: [feature]\ncreated: {{date}}\nupdated: {{date}}\n---\n\n# {{title}}\n\n## Overview\n\nBrief description of this feature.\n\n## User Story\n\nAs a [user type], I want [goal] so that [benefit].\n\n## Acceptance Criteria\n\n- [ ] Criterion 1\n- [ ] Criterion 2\n- [ ] Criterion 3\n\n## Technical Implementation\n\nHow this feature is implemented.\n\n## Related Features\n\n- [[related-feature-1]]\n`,\n\n 'template-service': `---\ntitle: {{title}}\ntype: service\nstatus: draft\ntags: [service, api]\ncreated: {{date}}\nupdated: {{date}}\n---\n\n# {{title}}\n\n## Overview\n\nBrief description of this service.\n\n## Endpoints\n\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /api/... | Description |\n| POST | /api/... | Description |\n\n## Configuration\n\nEnvironment variables and configuration options.\n\n## Dependencies\n\n- [[dependency-1]]\n- [[dependency-2]]\n\n## Deployment\n\nDeployment instructions.\n`,\n\n 'template-guide': `---\ntitle: {{title}}\ntype: guide\nstatus: draft\ntags: [guide, tutorial]\ncreated: {{date}}\nupdated: {{date}}\n---\n\n# {{title}}\n\n## Prerequisites\n\n- Prerequisite 1\n- Prerequisite 2\n\n## Steps\n\n### Step 1: Title\n\nInstructions for step 1.\n\n### Step 2: Title\n\nInstructions for step 2.\n\n### Step 3: Title\n\nInstructions for step 3.\n\n## Troubleshooting\n\nCommon issues and solutions.\n\n## Next Steps\n\n- [[next-guide-1]]\n- [[next-guide-2]]\n`,\n};\n\n/**\n * Framework detection result\n */\ninterface FrameworkInfo {\n name: string;\n slug: string;\n category: string;\n version?: string;\n}\n\n/**\n * Initialize docs directory\n */\nexport async function initDocs(options: DocsInitOptions): Promise<DocsInitResult> {\n const result: DocsInitResult = {\n success: true,\n docsPath: '',\n filesCreated: [],\n errors: [],\n };\n\n try {\n const { projectRoot, docsPath = 'docs', includeExamples = true, detectFramework = true } = options;\n const fullDocsPath = join(projectRoot, docsPath);\n result.docsPath = fullDocsPath;\n\n // Detect project information\n const projectName = await detectProjectName(projectRoot);\n const frameworks = detectFramework ? await detectFrameworks(projectRoot) : [];\n const languages = detectFramework ? await detectLanguages(projectRoot) : [];\n const dependencies = detectFramework ? await detectDependencies(projectRoot) : [];\n\n // Create template context\n const context = {\n projectName,\n date: new Date().toISOString().split('T')[0],\n frameworks,\n languages,\n dependencies,\n concepts: [],\n components: [],\n services: [],\n features: [],\n };\n\n // Create directories\n for (const dir of DEFAULT_STRUCTURE.directories) {\n const dirPath = join(fullDocsPath, dir);\n if (!existsSync(dirPath)) {\n mkdirSync(dirPath, { recursive: true });\n result.filesCreated.push(dirPath);\n }\n }\n\n // Create files from templates\n for (const [filePath, templateName] of Object.entries(DEFAULT_STRUCTURE.files)) {\n const fullPath = join(fullDocsPath, filePath);\n\n // Skip if file exists\n if (existsSync(fullPath)) {\n continue;\n }\n\n // Get template and compile\n const template = TEMPLATES[templateName];\n if (!template) {\n result.errors.push(`Template not found: ${templateName}`);\n continue;\n }\n\n try {\n const compiled = Handlebars.compile(template);\n const content = compiled(context);\n writeFileSync(fullPath, content, 'utf-8');\n result.filesCreated.push(fullPath);\n } catch (error) {\n result.errors.push(`Failed to create ${filePath}: ${error}`);\n }\n }\n\n // Create example files if requested\n if (includeExamples) {\n await createExampleFiles(fullDocsPath, context, result);\n }\n\n // Create .obsidian folder for vault detection\n const obsidianPath = join(fullDocsPath, '.obsidian');\n if (!existsSync(obsidianPath)) {\n mkdirSync(obsidianPath, { recursive: true });\n\n // Create minimal app.json for Obsidian\n const appJson = {\n \"legacyEditor\": false,\n \"livePreview\": true,\n };\n writeFileSync(join(obsidianPath, 'app.json'), JSON.stringify(appJson, null, 2));\n result.filesCreated.push(obsidianPath);\n }\n\n result.success = result.errors.length === 0;\n } catch (error) {\n result.success = false;\n result.errors.push(`Init failed: ${error}`);\n }\n\n return result;\n}\n\n/**\n * Detect project name from package.json or directory\n */\nasync function detectProjectName(projectRoot: string): Promise<string> {\n try {\n const pkgPath = join(projectRoot, 'package.json');\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n if (pkg.name) {\n // Remove scope if present\n return pkg.name.replace(/^@[^/]+\\//, '');\n }\n }\n } catch {\n // Ignore errors\n }\n\n // Fall back to directory name\n return basename(projectRoot);\n}\n\n/**\n * Detect frameworks from project files\n */\nasync function detectFrameworks(projectRoot: string): Promise<FrameworkInfo[]> {\n const frameworks: FrameworkInfo[] = [];\n\n try {\n const pkgPath = join(projectRoot, 'package.json');\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\n\n // Framework detection patterns\n const patterns: Array<{ name: string; packages: string[]; category: string }> = [\n { name: 'React', packages: ['react'], category: 'components/ui' },\n { name: 'Next.js', packages: ['next'], category: 'services/api' },\n { name: 'Vue', packages: ['vue'], category: 'components/ui' },\n { name: 'Express', packages: ['express'], category: 'services/api' },\n { name: 'Fastify', packages: ['fastify'], category: 'services/api' },\n { name: 'Prisma', packages: ['@prisma/client', 'prisma'], category: 'integrations/databases' },\n { name: 'TypeORM', packages: ['typeorm'], category: 'integrations/databases' },\n { name: 'Jest', packages: ['jest'], category: 'guides/testing' },\n { name: 'Vitest', packages: ['vitest'], category: 'guides/testing' },\n { name: 'Vite', packages: ['vite'], category: 'standards/build-tools' },\n { name: 'Webpack', packages: ['webpack'], category: 'standards/build-tools' },\n ];\n\n for (const pattern of patterns) {\n for (const pkg of pattern.packages) {\n if (deps[pkg]) {\n frameworks.push({\n name: pattern.name,\n slug: pattern.name.toLowerCase().replace(/[^a-z0-9]+/g, '-'),\n category: pattern.category,\n version: deps[pkg],\n });\n break;\n }\n }\n }\n }\n } catch {\n // Ignore errors\n }\n\n return frameworks;\n}\n\n/**\n * Detect programming languages used\n */\nasync function detectLanguages(projectRoot: string): Promise<string[]> {\n const languages: Set<string> = new Set();\n\n try {\n // Check for TypeScript\n if (existsSync(join(projectRoot, 'tsconfig.json'))) {\n languages.add('typescript');\n }\n\n // Check for package.json (JavaScript/Node.js)\n if (existsSync(join(projectRoot, 'package.json'))) {\n languages.add('javascript');\n }\n\n // Check for Python\n if (existsSync(join(projectRoot, 'requirements.txt')) ||\n existsSync(join(projectRoot, 'pyproject.toml'))) {\n languages.add('python');\n }\n\n // Check for Rust\n if (existsSync(join(projectRoot, 'Cargo.toml'))) {\n languages.add('rust');\n }\n\n // Check for Go\n if (existsSync(join(projectRoot, 'go.mod'))) {\n languages.add('go');\n }\n } catch {\n // Ignore errors\n }\n\n return Array.from(languages);\n}\n\n/**\n * Detect major dependencies\n */\nasync function detectDependencies(projectRoot: string): Promise<Array<{ name: string; slug: string; category: string; description: string }>> {\n const deps: Array<{ name: string; slug: string; category: string; description: string }> = [];\n\n try {\n const pkgPath = join(projectRoot, 'package.json');\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n const allDeps = { ...pkg.dependencies };\n\n // Top dependencies to document\n const topDeps = Object.keys(allDeps).slice(0, 10);\n\n for (const dep of topDeps) {\n deps.push({\n name: dep,\n slug: dep.replace(/^@/, '').replace(/[^a-z0-9]+/g, '-'),\n category: 'components/utilities',\n description: `Version ${allDeps[dep]}`,\n });\n }\n }\n } catch {\n // Ignore errors\n }\n\n return deps;\n}\n\n/**\n * Create example documentation files\n */\nasync function createExampleFiles(\n docsPath: string,\n context: Record<string, unknown>,\n result: DocsInitResult\n): Promise<void> {\n const examples = [\n {\n path: 'guides/getting-started/index.md',\n content: `---\ntitle: Getting Started\ntype: guide\nstatus: active\ntags: [guide, getting-started]\ncreated: ${context.date}\nupdated: ${context.date}\n---\n\n# Getting Started with ${context.projectName}\n\nWelcome! This guide will help you get up and running.\n\n## Prerequisites\n\n- Node.js 20+\n- npm or bun\n\n## Installation\n\n\\`\\`\\`bash\nnpm install\n\\`\\`\\`\n\n## Quick Start\n\n1. Clone the repository\n2. Install dependencies\n3. Run the development server\n\n## Next Steps\n\n- Explore the [[MOC|Map of Content]]\n- Review [[PRIMITIVES|Technology Primitives]]\n`,\n },\n {\n path: 'concepts/architecture/index.md',\n content: `---\ntitle: Architecture Overview\ntype: concept\nstatus: active\ntags: [architecture, concept]\ncreated: ${context.date}\nupdated: ${context.date}\n---\n\n# Architecture Overview\n\nHigh-level architecture of ${context.projectName}.\n\n## System Diagram\n\n\\`\\`\\`\n┌──────────────┐ ┌──────────────┐\n│ Frontend │────▶│ Backend │\n└──────────────┘ └──────────────┘\n │\n ┌──────▼──────┐\n │ Database │\n └─────────────┘\n\\`\\`\\`\n\n## Key Components\n\n- **Frontend**: User interface\n- **Backend**: API and business logic\n- **Database**: Data persistence\n\n## Design Principles\n\n1. Separation of concerns\n2. Single responsibility\n3. Dependency injection\n`,\n },\n ];\n\n for (const example of examples) {\n const fullPath = join(docsPath, example.path);\n if (!existsSync(fullPath)) {\n const dir = join(fullPath, '..');\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n writeFileSync(fullPath, example.content, 'utf-8');\n result.filesCreated.push(fullPath);\n }\n }\n}\n\n/**\n * Check if docs directory exists\n */\nexport function docsExist(projectRoot: string, docsPath = 'docs'): boolean {\n return existsSync(join(projectRoot, docsPath));\n}\n\n/**\n * Get docs path for a project\n */\nexport function getDocsPath(projectRoot: string): string | null {\n const possiblePaths = ['docs', 'documentation', 'doc', 'wiki'];\n\n for (const path of possiblePaths) {\n const fullPath = join(projectRoot, path);\n if (existsSync(fullPath)) {\n return fullPath;\n }\n }\n\n return null;\n}\n"],"names":["pkg"],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in Health Checks
|
|
3
|
+
*
|
|
4
|
+
* Provides pre-built health checks for common components.
|
|
5
|
+
*
|
|
6
|
+
* @module health/checks
|
|
7
|
+
*/
|
|
8
|
+
import type { ComponentHealth, HealthCheck } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Create a health check for database file existence and size
|
|
11
|
+
*
|
|
12
|
+
* @param dbPath - Path to the database file
|
|
13
|
+
* @returns Health check for database
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const check = createDatabaseCheck('/path/to/graph.db');
|
|
18
|
+
* monitor.registerCheck(check);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function createDatabaseCheck(dbPath: string): HealthCheck;
|
|
22
|
+
/**
|
|
23
|
+
* Cache interface for health check
|
|
24
|
+
*/
|
|
25
|
+
interface CacheWithStats {
|
|
26
|
+
getStats: () => {
|
|
27
|
+
totalEntries: number;
|
|
28
|
+
hitRate: number;
|
|
29
|
+
hitCount?: number;
|
|
30
|
+
missCount?: number;
|
|
31
|
+
sizeBytes?: number;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a health check for cache status
|
|
36
|
+
*
|
|
37
|
+
* @param cache - Cache instance with getStats method
|
|
38
|
+
* @returns Health check for cache
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const cache = new ShadowCache({ projectRoot: '/project' });
|
|
43
|
+
* const check = createCacheCheck(cache);
|
|
44
|
+
* monitor.registerCheck(check);
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function createCacheCheck(cache: CacheWithStats | null | undefined): HealthCheck;
|
|
48
|
+
/**
|
|
49
|
+
* Create a health check for memory usage
|
|
50
|
+
*
|
|
51
|
+
* @param thresholdPercent - Heap usage percentage threshold (default: 90)
|
|
52
|
+
* @param warningThreshold - Heap usage percentage for degraded status (default: 75)
|
|
53
|
+
* @returns Health check for memory
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const check = createMemoryCheck(85, 70);
|
|
58
|
+
* monitor.registerCheck(check);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function createMemoryCheck(thresholdPercent?: number, warningThreshold?: number): HealthCheck;
|
|
62
|
+
/**
|
|
63
|
+
* Create a health check for disk/path accessibility
|
|
64
|
+
*
|
|
65
|
+
* @param path - Path to check
|
|
66
|
+
* @param name - Optional name for the check (default: 'disk')
|
|
67
|
+
* @returns Health check for disk
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const check = createDiskCheck('/data/storage', 'data-storage');
|
|
72
|
+
* monitor.registerCheck(check);
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export declare function createDiskCheck(path: string, name?: string): HealthCheck;
|
|
76
|
+
/**
|
|
77
|
+
* Create a health check for event loop lag
|
|
78
|
+
*
|
|
79
|
+
* @param warningMs - Lag threshold for degraded status (default: 100ms)
|
|
80
|
+
* @param criticalMs - Lag threshold for unhealthy status (default: 500ms)
|
|
81
|
+
* @returns Health check for event loop
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* const check = createEventLoopCheck(50, 200);
|
|
86
|
+
* monitor.registerCheck(check);
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare function createEventLoopCheck(warningMs?: number, criticalMs?: number): HealthCheck;
|
|
90
|
+
/**
|
|
91
|
+
* Create a health check for external service connectivity
|
|
92
|
+
*
|
|
93
|
+
* @param serviceName - Name of the service
|
|
94
|
+
* @param checkFn - Async function that returns true if service is healthy
|
|
95
|
+
* @param timeoutMs - Timeout for the check (default: 5000ms)
|
|
96
|
+
* @returns Health check for external service
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* const check = createServiceCheck('redis', async () => {
|
|
101
|
+
* await redis.ping();
|
|
102
|
+
* return true;
|
|
103
|
+
* });
|
|
104
|
+
* monitor.registerCheck(check);
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare function createServiceCheck(serviceName: string, checkFn: () => Promise<boolean>, timeoutMs?: number): HealthCheck;
|
|
108
|
+
/**
|
|
109
|
+
* Create a custom health check with a provided check function
|
|
110
|
+
*
|
|
111
|
+
* @param name - Check name
|
|
112
|
+
* @param checkFn - Async function that returns ComponentHealth
|
|
113
|
+
* @param options - Additional options
|
|
114
|
+
* @returns Health check
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* const check = createCustomCheck('my-check', async () => {
|
|
119
|
+
* const result = await myService.check();
|
|
120
|
+
* return {
|
|
121
|
+
* name: 'my-check',
|
|
122
|
+
* status: result.ok ? 'healthy' : 'unhealthy',
|
|
123
|
+
* message: result.message,
|
|
124
|
+
* lastCheck: new Date(),
|
|
125
|
+
* };
|
|
126
|
+
* }, { critical: true, interval: 15000 });
|
|
127
|
+
* monitor.registerCheck(check);
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export declare function createCustomCheck(name: string, checkFn: () => Promise<ComponentHealth>, options?: {
|
|
131
|
+
critical?: boolean;
|
|
132
|
+
interval?: number;
|
|
133
|
+
}): HealthCheck;
|
|
134
|
+
export {};
|
|
135
|
+
//# sourceMappingURL=checks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../src/health/checks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA0C/D;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CA8CtF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,gBAAgB,SAAK,EACrB,gBAAgB,SAAK,GACpB,WAAW,CAsCb;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAS,GAAG,WAAW,CA0CxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,SAAM,EAAE,UAAU,SAAM,GAAG,WAAW,CAqCnF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC/B,SAAS,SAAO,GACf,WAAW,CAmDb;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,EACvC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACtD,WAAW,CAOb"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Monitoring Module
|
|
3
|
+
*
|
|
4
|
+
* Provides system health monitoring, diagnostics, and alerting.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Health status values
|
|
8
|
+
*/
|
|
9
|
+
export type HealthStatus = 'healthy' | 'degraded' | 'unhealthy' | 'unknown';
|
|
10
|
+
/**
|
|
11
|
+
* Component health information
|
|
12
|
+
*/
|
|
13
|
+
export interface ComponentHealth {
|
|
14
|
+
/** Component name */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Health status */
|
|
17
|
+
status: HealthStatus;
|
|
18
|
+
/** Optional message */
|
|
19
|
+
message?: string;
|
|
20
|
+
/** Last check time */
|
|
21
|
+
lastCheck: Date;
|
|
22
|
+
/** Response time in milliseconds */
|
|
23
|
+
responseTime?: number;
|
|
24
|
+
/** Additional metadata */
|
|
25
|
+
metadata?: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* System-wide health information
|
|
29
|
+
*/
|
|
30
|
+
export interface SystemHealth {
|
|
31
|
+
/** Overall status */
|
|
32
|
+
status: HealthStatus;
|
|
33
|
+
/** Component health details */
|
|
34
|
+
components: ComponentHealth[];
|
|
35
|
+
/** Check timestamp */
|
|
36
|
+
timestamp: Date;
|
|
37
|
+
/** System uptime in milliseconds */
|
|
38
|
+
uptime: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Memory metrics
|
|
42
|
+
*/
|
|
43
|
+
export interface MemoryMetrics {
|
|
44
|
+
/** Heap used in bytes */
|
|
45
|
+
heapUsed: number;
|
|
46
|
+
/** Heap total in bytes */
|
|
47
|
+
heapTotal: number;
|
|
48
|
+
/** RSS in bytes */
|
|
49
|
+
rss: number;
|
|
50
|
+
/** External memory in bytes */
|
|
51
|
+
external: number;
|
|
52
|
+
/** Array buffers in bytes */
|
|
53
|
+
arrayBuffers: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Performance metrics
|
|
57
|
+
*/
|
|
58
|
+
export interface PerformanceMetrics {
|
|
59
|
+
/** CPU usage percentage */
|
|
60
|
+
cpuUsage?: number;
|
|
61
|
+
/** Memory metrics */
|
|
62
|
+
memory: MemoryMetrics;
|
|
63
|
+
/** Event loop lag in milliseconds */
|
|
64
|
+
eventLoopLag?: number;
|
|
65
|
+
/** Active handles count */
|
|
66
|
+
activeHandles?: number;
|
|
67
|
+
/** Active requests count */
|
|
68
|
+
activeRequests?: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Health check function
|
|
72
|
+
*/
|
|
73
|
+
export interface HealthCheck {
|
|
74
|
+
/** Check name */
|
|
75
|
+
name: string;
|
|
76
|
+
/** Check function */
|
|
77
|
+
check: () => Promise<ComponentHealth>;
|
|
78
|
+
/** Check interval in milliseconds */
|
|
79
|
+
interval?: number;
|
|
80
|
+
/** Critical component flag */
|
|
81
|
+
critical?: boolean;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Health monitor configuration
|
|
85
|
+
*/
|
|
86
|
+
export interface HealthMonitorConfig {
|
|
87
|
+
/** Check interval in milliseconds */
|
|
88
|
+
interval?: number;
|
|
89
|
+
/** Timeout for individual checks */
|
|
90
|
+
timeout?: number;
|
|
91
|
+
/** Enable automatic checks */
|
|
92
|
+
autoStart?: boolean;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Health Monitor for tracking system health
|
|
96
|
+
*/
|
|
97
|
+
export declare class HealthMonitor {
|
|
98
|
+
private checks;
|
|
99
|
+
private results;
|
|
100
|
+
private startTime;
|
|
101
|
+
private intervalId?;
|
|
102
|
+
private config;
|
|
103
|
+
constructor(config?: HealthMonitorConfig);
|
|
104
|
+
register(check: HealthCheck): void;
|
|
105
|
+
unregister(name: string): void;
|
|
106
|
+
check(): Promise<SystemHealth>;
|
|
107
|
+
getLastStatus(): SystemHealth;
|
|
108
|
+
getPerformanceMetrics(): PerformanceMetrics;
|
|
109
|
+
start(): void;
|
|
110
|
+
stop(): void;
|
|
111
|
+
private timeout;
|
|
112
|
+
private calculateOverallStatus;
|
|
113
|
+
}
|
|
114
|
+
export declare function createHealthMonitor(config?: HealthMonitorConfig): HealthMonitor;
|
|
115
|
+
export declare function createDatabaseCheck(dbPath: string): HealthCheck;
|
|
116
|
+
export declare function createCacheCheck(): HealthCheck;
|
|
117
|
+
export declare function createMemoryCheck(thresholdMB?: number): HealthCheck;
|
|
118
|
+
export declare function createDiskCheck(path: string): HealthCheck;
|
|
119
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/health/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
class HealthMonitor {
|
|
2
|
+
checks = /* @__PURE__ */ new Map();
|
|
3
|
+
results = /* @__PURE__ */ new Map();
|
|
4
|
+
startTime = /* @__PURE__ */ new Date();
|
|
5
|
+
intervalId;
|
|
6
|
+
config;
|
|
7
|
+
constructor(config = {}) {
|
|
8
|
+
this.config = {
|
|
9
|
+
interval: config.interval || 6e4,
|
|
10
|
+
timeout: config.timeout || 5e3,
|
|
11
|
+
autoStart: config.autoStart ?? false
|
|
12
|
+
};
|
|
13
|
+
if (this.config.autoStart) {
|
|
14
|
+
this.start();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
register(check) {
|
|
18
|
+
this.checks.set(check.name, check);
|
|
19
|
+
}
|
|
20
|
+
unregister(name) {
|
|
21
|
+
this.checks.delete(name);
|
|
22
|
+
this.results.delete(name);
|
|
23
|
+
}
|
|
24
|
+
async check() {
|
|
25
|
+
const components = [];
|
|
26
|
+
for (const [name, check] of this.checks) {
|
|
27
|
+
try {
|
|
28
|
+
const result = await Promise.race([
|
|
29
|
+
check.check(),
|
|
30
|
+
this.timeout(check.name)
|
|
31
|
+
]);
|
|
32
|
+
this.results.set(name, result);
|
|
33
|
+
components.push(result);
|
|
34
|
+
} catch (error) {
|
|
35
|
+
const errorResult = {
|
|
36
|
+
name,
|
|
37
|
+
status: "unhealthy",
|
|
38
|
+
message: error instanceof Error ? error.message : String(error),
|
|
39
|
+
lastCheck: /* @__PURE__ */ new Date()
|
|
40
|
+
};
|
|
41
|
+
this.results.set(name, errorResult);
|
|
42
|
+
components.push(errorResult);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const status = this.calculateOverallStatus(components);
|
|
46
|
+
return {
|
|
47
|
+
status,
|
|
48
|
+
components,
|
|
49
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
50
|
+
uptime: Date.now() - this.startTime.getTime()
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
getLastStatus() {
|
|
54
|
+
const components = Array.from(this.results.values());
|
|
55
|
+
return {
|
|
56
|
+
status: this.calculateOverallStatus(components),
|
|
57
|
+
components,
|
|
58
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
59
|
+
uptime: Date.now() - this.startTime.getTime()
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
getPerformanceMetrics() {
|
|
63
|
+
const memoryUsage = process.memoryUsage();
|
|
64
|
+
return {
|
|
65
|
+
memory: {
|
|
66
|
+
heapUsed: memoryUsage.heapUsed,
|
|
67
|
+
heapTotal: memoryUsage.heapTotal,
|
|
68
|
+
rss: memoryUsage.rss,
|
|
69
|
+
external: memoryUsage.external,
|
|
70
|
+
arrayBuffers: memoryUsage.arrayBuffers
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
start() {
|
|
75
|
+
if (this.intervalId) return;
|
|
76
|
+
this.intervalId = setInterval(() => {
|
|
77
|
+
this.check().catch(() => {
|
|
78
|
+
});
|
|
79
|
+
}, this.config.interval);
|
|
80
|
+
}
|
|
81
|
+
stop() {
|
|
82
|
+
if (this.intervalId) {
|
|
83
|
+
clearInterval(this.intervalId);
|
|
84
|
+
this.intervalId = void 0;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
timeout(name) {
|
|
88
|
+
return new Promise((_, reject) => {
|
|
89
|
+
setTimeout(() => {
|
|
90
|
+
reject(new Error(`Health check timeout: ${name}`));
|
|
91
|
+
}, this.config.timeout);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
calculateOverallStatus(components) {
|
|
95
|
+
if (components.length === 0) return "unknown";
|
|
96
|
+
const hasUnhealthy = components.some((c) => c.status === "unhealthy");
|
|
97
|
+
const hasDegraded = components.some((c) => c.status === "degraded");
|
|
98
|
+
if (hasUnhealthy) return "unhealthy";
|
|
99
|
+
if (hasDegraded) return "degraded";
|
|
100
|
+
return "healthy";
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function createHealthMonitor(config) {
|
|
104
|
+
return new HealthMonitor(config);
|
|
105
|
+
}
|
|
106
|
+
function createDatabaseCheck(dbPath) {
|
|
107
|
+
return {
|
|
108
|
+
name: "database",
|
|
109
|
+
critical: true,
|
|
110
|
+
check: async () => {
|
|
111
|
+
const startTime = Date.now();
|
|
112
|
+
const { existsSync } = await import("fs");
|
|
113
|
+
const exists = existsSync(dbPath);
|
|
114
|
+
return {
|
|
115
|
+
name: "database",
|
|
116
|
+
status: exists ? "healthy" : "unhealthy",
|
|
117
|
+
message: exists ? "Database accessible" : "Database file not found",
|
|
118
|
+
lastCheck: /* @__PURE__ */ new Date(),
|
|
119
|
+
responseTime: Date.now() - startTime
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
function createCacheCheck() {
|
|
125
|
+
return {
|
|
126
|
+
name: "cache",
|
|
127
|
+
check: async () => {
|
|
128
|
+
return {
|
|
129
|
+
name: "cache",
|
|
130
|
+
status: "healthy",
|
|
131
|
+
message: "Cache operational",
|
|
132
|
+
lastCheck: /* @__PURE__ */ new Date()
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function createMemoryCheck(thresholdMB = 500) {
|
|
138
|
+
return {
|
|
139
|
+
name: "memory",
|
|
140
|
+
check: async () => {
|
|
141
|
+
const { heapUsed } = process.memoryUsage();
|
|
142
|
+
const usedMB = heapUsed / (1024 * 1024);
|
|
143
|
+
let status = "healthy";
|
|
144
|
+
if (usedMB > thresholdMB * 0.9) {
|
|
145
|
+
status = "unhealthy";
|
|
146
|
+
} else if (usedMB > thresholdMB * 0.7) {
|
|
147
|
+
status = "degraded";
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
name: "memory",
|
|
151
|
+
status,
|
|
152
|
+
message: `Heap usage: ${usedMB.toFixed(2)}MB`,
|
|
153
|
+
lastCheck: /* @__PURE__ */ new Date(),
|
|
154
|
+
metadata: { heapUsedMB: usedMB, thresholdMB }
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function createDiskCheck(path) {
|
|
160
|
+
return {
|
|
161
|
+
name: "disk",
|
|
162
|
+
check: async () => {
|
|
163
|
+
const { accessSync, constants } = await import("fs");
|
|
164
|
+
try {
|
|
165
|
+
accessSync(path, constants.R_OK | constants.W_OK);
|
|
166
|
+
return {
|
|
167
|
+
name: "disk",
|
|
168
|
+
status: "healthy",
|
|
169
|
+
message: "Disk accessible",
|
|
170
|
+
lastCheck: /* @__PURE__ */ new Date()
|
|
171
|
+
};
|
|
172
|
+
} catch {
|
|
173
|
+
return {
|
|
174
|
+
name: "disk",
|
|
175
|
+
status: "unhealthy",
|
|
176
|
+
message: "Disk not accessible",
|
|
177
|
+
lastCheck: /* @__PURE__ */ new Date()
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
export {
|
|
184
|
+
HealthMonitor,
|
|
185
|
+
createCacheCheck,
|
|
186
|
+
createDatabaseCheck,
|
|
187
|
+
createDiskCheck,
|
|
188
|
+
createHealthMonitor,
|
|
189
|
+
createMemoryCheck
|
|
190
|
+
};
|
|
191
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/health/index.ts"],"sourcesContent":["/**\n * Health Monitoring Module\n *\n * Provides system health monitoring, diagnostics, and alerting.\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Health status values\n */\nexport type HealthStatus = 'healthy' | 'degraded' | 'unhealthy' | 'unknown';\n\n/**\n * Component health information\n */\nexport interface ComponentHealth {\n /** Component name */\n name: string;\n /** Health status */\n status: HealthStatus;\n /** Optional message */\n message?: string;\n /** Last check time */\n lastCheck: Date;\n /** Response time in milliseconds */\n responseTime?: number;\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * System-wide health information\n */\nexport interface SystemHealth {\n /** Overall status */\n status: HealthStatus;\n /** Component health details */\n components: ComponentHealth[];\n /** Check timestamp */\n timestamp: Date;\n /** System uptime in milliseconds */\n uptime: number;\n}\n\n/**\n * Memory metrics\n */\nexport interface MemoryMetrics {\n /** Heap used in bytes */\n heapUsed: number;\n /** Heap total in bytes */\n heapTotal: number;\n /** RSS in bytes */\n rss: number;\n /** External memory in bytes */\n external: number;\n /** Array buffers in bytes */\n arrayBuffers: number;\n}\n\n/**\n * Performance metrics\n */\nexport interface PerformanceMetrics {\n /** CPU usage percentage */\n cpuUsage?: number;\n /** Memory metrics */\n memory: MemoryMetrics;\n /** Event loop lag in milliseconds */\n eventLoopLag?: number;\n /** Active handles count */\n activeHandles?: number;\n /** Active requests count */\n activeRequests?: number;\n}\n\n/**\n * Health check function\n */\nexport interface HealthCheck {\n /** Check name */\n name: string;\n /** Check function */\n check: () => Promise<ComponentHealth>;\n /** Check interval in milliseconds */\n interval?: number;\n /** Critical component flag */\n critical?: boolean;\n}\n\n/**\n * Health monitor configuration\n */\nexport interface HealthMonitorConfig {\n /** Check interval in milliseconds */\n interval?: number;\n /** Timeout for individual checks */\n timeout?: number;\n /** Enable automatic checks */\n autoStart?: boolean;\n}\n\n// ============================================================================\n// Health Monitor\n// ============================================================================\n\n/**\n * Health Monitor for tracking system health\n */\nexport class HealthMonitor {\n private checks: Map<string, HealthCheck> = new Map();\n private results: Map<string, ComponentHealth> = new Map();\n private startTime: Date = new Date();\n private intervalId?: ReturnType<typeof setInterval>;\n private config: HealthMonitorConfig;\n\n constructor(config: HealthMonitorConfig = {}) {\n this.config = {\n interval: config.interval || 60000,\n timeout: config.timeout || 5000,\n autoStart: config.autoStart ?? false,\n };\n\n if (this.config.autoStart) {\n this.start();\n }\n }\n\n register(check: HealthCheck): void {\n this.checks.set(check.name, check);\n }\n\n unregister(name: string): void {\n this.checks.delete(name);\n this.results.delete(name);\n }\n\n async check(): Promise<SystemHealth> {\n const components: ComponentHealth[] = [];\n\n for (const [name, check] of this.checks) {\n try {\n const result = await Promise.race([\n check.check(),\n this.timeout(check.name),\n ]);\n this.results.set(name, result);\n components.push(result);\n } catch (error) {\n const errorResult: ComponentHealth = {\n name,\n status: 'unhealthy',\n message: error instanceof Error ? error.message : String(error),\n lastCheck: new Date(),\n };\n this.results.set(name, errorResult);\n components.push(errorResult);\n }\n }\n\n const status = this.calculateOverallStatus(components);\n\n return {\n status,\n components,\n timestamp: new Date(),\n uptime: Date.now() - this.startTime.getTime(),\n };\n }\n\n getLastStatus(): SystemHealth {\n const components = Array.from(this.results.values());\n return {\n status: this.calculateOverallStatus(components),\n components,\n timestamp: new Date(),\n uptime: Date.now() - this.startTime.getTime(),\n };\n }\n\n getPerformanceMetrics(): PerformanceMetrics {\n const memoryUsage = process.memoryUsage();\n return {\n memory: {\n heapUsed: memoryUsage.heapUsed,\n heapTotal: memoryUsage.heapTotal,\n rss: memoryUsage.rss,\n external: memoryUsage.external,\n arrayBuffers: memoryUsage.arrayBuffers,\n },\n };\n }\n\n start(): void {\n if (this.intervalId) return;\n this.intervalId = setInterval(() => {\n this.check().catch(() => {});\n }, this.config.interval);\n }\n\n stop(): void {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = undefined;\n }\n }\n\n private timeout(name: string): Promise<ComponentHealth> {\n return new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error(`Health check timeout: ${name}`));\n }, this.config.timeout);\n });\n }\n\n private calculateOverallStatus(components: ComponentHealth[]): HealthStatus {\n if (components.length === 0) return 'unknown';\n const hasUnhealthy = components.some((c) => c.status === 'unhealthy');\n const hasDegraded = components.some((c) => c.status === 'degraded');\n if (hasUnhealthy) return 'unhealthy';\n if (hasDegraded) return 'degraded';\n return 'healthy';\n }\n}\n\nexport function createHealthMonitor(config?: HealthMonitorConfig): HealthMonitor {\n return new HealthMonitor(config);\n}\n\n// ============================================================================\n// Built-in Health Checks\n// ============================================================================\n\nexport function createDatabaseCheck(dbPath: string): HealthCheck {\n return {\n name: 'database',\n critical: true,\n check: async (): Promise<ComponentHealth> => {\n const startTime = Date.now();\n const { existsSync } = await import('fs');\n const exists = existsSync(dbPath);\n return {\n name: 'database',\n status: exists ? 'healthy' : 'unhealthy',\n message: exists ? 'Database accessible' : 'Database file not found',\n lastCheck: new Date(),\n responseTime: Date.now() - startTime,\n };\n },\n };\n}\n\nexport function createCacheCheck(): HealthCheck {\n return {\n name: 'cache',\n check: async (): Promise<ComponentHealth> => {\n return {\n name: 'cache',\n status: 'healthy',\n message: 'Cache operational',\n lastCheck: new Date(),\n };\n },\n };\n}\n\nexport function createMemoryCheck(thresholdMB: number = 500): HealthCheck {\n return {\n name: 'memory',\n check: async (): Promise<ComponentHealth> => {\n const { heapUsed } = process.memoryUsage();\n const usedMB = heapUsed / (1024 * 1024);\n let status: HealthStatus = 'healthy';\n if (usedMB > thresholdMB * 0.9) {\n status = 'unhealthy';\n } else if (usedMB > thresholdMB * 0.7) {\n status = 'degraded';\n }\n return {\n name: 'memory',\n status,\n message: `Heap usage: ${usedMB.toFixed(2)}MB`,\n lastCheck: new Date(),\n metadata: { heapUsedMB: usedMB, thresholdMB },\n };\n },\n };\n}\n\nexport function createDiskCheck(path: string): HealthCheck {\n return {\n name: 'disk',\n check: async (): Promise<ComponentHealth> => {\n const { accessSync, constants } = await import('fs');\n try {\n accessSync(path, constants.R_OK | constants.W_OK);\n return {\n name: 'disk',\n status: 'healthy',\n message: 'Disk accessible',\n lastCheck: new Date(),\n };\n } catch {\n return {\n name: 'disk',\n status: 'unhealthy',\n message: 'Disk not accessible',\n lastCheck: new Date(),\n };\n }\n },\n };\n}\n"],"names":[],"mappings":"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"}
|