@weavelogic/knowledge-graph-agent 0.1.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 +733 -152
- 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/analyze.d.ts +12 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -0
- package/dist/cli/commands/analyze.js +269 -0
- package/dist/cli/commands/analyze.js.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/convert.d.ts +15 -0
- package/dist/cli/commands/convert.d.ts.map +1 -0
- package/dist/cli/commands/convert.js +203 -0
- package/dist/cli/commands/convert.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 +52 -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-analyzer.d.ts +75 -0
- package/dist/generators/docs-analyzer.d.ts.map +1 -0
- package/dist/generators/docs-analyzer.js +567 -0
- package/dist/generators/docs-analyzer.js.map +1 -0
- package/dist/generators/docs-convert.d.ts +91 -0
- package/dist/generators/docs-convert.d.ts.map +1 -0
- package/dist/generators/docs-convert.js +474 -0
- package/dist/generators/docs-convert.js.map +1 -0
- 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 +34 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +179 -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,379 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import inquirer from "inquirer";
|
|
5
|
+
import { createGitClient } from "../../integrations/git.js";
|
|
6
|
+
import { createAutoCommit } from "../../integrations/auto-commit.js";
|
|
7
|
+
import { validateProjectRoot } from "../../core/security.js";
|
|
8
|
+
function formatStatus(status) {
|
|
9
|
+
console.log();
|
|
10
|
+
console.log(chalk.cyan.bold(" Git Status"));
|
|
11
|
+
console.log();
|
|
12
|
+
console.log(chalk.white(` Branch: ${chalk.green(status.branch)}`));
|
|
13
|
+
if (status.tracking) {
|
|
14
|
+
const ahead = status.tracking.ahead > 0 ? chalk.green(`+${status.tracking.ahead}`) : "";
|
|
15
|
+
const behind = status.tracking.behind > 0 ? chalk.red(`-${status.tracking.behind}`) : "";
|
|
16
|
+
const tracking = [ahead, behind].filter(Boolean).join(" ");
|
|
17
|
+
console.log(chalk.gray(` Tracking: ${status.tracking.remote} ${tracking}`));
|
|
18
|
+
}
|
|
19
|
+
console.log();
|
|
20
|
+
if (status.isClean) {
|
|
21
|
+
console.log(chalk.green(" Working tree is clean"));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const counts = [];
|
|
25
|
+
if (status.staged > 0) counts.push(chalk.green(`${status.staged} staged`));
|
|
26
|
+
if (status.modified > 0) counts.push(chalk.yellow(`${status.modified} modified`));
|
|
27
|
+
if (status.untracked > 0) counts.push(chalk.gray(`${status.untracked} untracked`));
|
|
28
|
+
if (status.deleted > 0) counts.push(chalk.red(`${status.deleted} deleted`));
|
|
29
|
+
if (status.conflicted > 0) counts.push(chalk.red(`${status.conflicted} conflicted`));
|
|
30
|
+
console.log(chalk.white(` Changes: ${counts.join(", ")}`));
|
|
31
|
+
console.log();
|
|
32
|
+
const staged = status.files.filter((f) => f.isStaged);
|
|
33
|
+
const unstaged = status.files.filter((f) => !f.isStaged);
|
|
34
|
+
if (staged.length > 0) {
|
|
35
|
+
console.log(chalk.green(" Staged Changes:"));
|
|
36
|
+
staged.slice(0, 10).forEach((f) => {
|
|
37
|
+
const icon = getStatusIcon(f.indexStatus);
|
|
38
|
+
console.log(chalk.green(` ${icon} ${f.path}`));
|
|
39
|
+
});
|
|
40
|
+
if (staged.length > 10) {
|
|
41
|
+
console.log(chalk.gray(` ... and ${staged.length - 10} more`));
|
|
42
|
+
}
|
|
43
|
+
console.log();
|
|
44
|
+
}
|
|
45
|
+
if (unstaged.length > 0) {
|
|
46
|
+
console.log(chalk.yellow(" Unstaged Changes:"));
|
|
47
|
+
unstaged.slice(0, 10).forEach((f) => {
|
|
48
|
+
const icon = getStatusIcon(f.workingTreeStatus);
|
|
49
|
+
console.log(chalk.yellow(` ${icon} ${f.path}`));
|
|
50
|
+
});
|
|
51
|
+
if (unstaged.length > 10) {
|
|
52
|
+
console.log(chalk.gray(` ... and ${unstaged.length - 10} more`));
|
|
53
|
+
}
|
|
54
|
+
console.log();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function getStatusIcon(status) {
|
|
58
|
+
switch (status) {
|
|
59
|
+
case "M":
|
|
60
|
+
return "modified:";
|
|
61
|
+
case "A":
|
|
62
|
+
return "added: ";
|
|
63
|
+
case "D":
|
|
64
|
+
return "deleted: ";
|
|
65
|
+
case "R":
|
|
66
|
+
return "renamed: ";
|
|
67
|
+
case "?":
|
|
68
|
+
return "new: ";
|
|
69
|
+
case "U":
|
|
70
|
+
return "conflict:";
|
|
71
|
+
default:
|
|
72
|
+
return " ";
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function formatAnalysis(analysis) {
|
|
76
|
+
console.log();
|
|
77
|
+
console.log(chalk.cyan.bold(" Change Analysis"));
|
|
78
|
+
console.log();
|
|
79
|
+
console.log(chalk.white(` Type: ${chalk.yellow(analysis.type)}`));
|
|
80
|
+
if (analysis.scope) {
|
|
81
|
+
console.log(chalk.white(` Scope: ${chalk.blue(analysis.scope)}`));
|
|
82
|
+
}
|
|
83
|
+
console.log(chalk.white(` Description: ${analysis.description}`));
|
|
84
|
+
if (analysis.breaking) {
|
|
85
|
+
console.log(chalk.red(` Breaking Change: Yes`));
|
|
86
|
+
}
|
|
87
|
+
console.log();
|
|
88
|
+
}
|
|
89
|
+
async function interactiveCommit(git, autoCommit, status, analysis, options) {
|
|
90
|
+
formatStatus(status);
|
|
91
|
+
formatAnalysis(analysis);
|
|
92
|
+
const suggestedMessage = autoCommit.generateCommitMessage(analysis);
|
|
93
|
+
console.log(chalk.cyan.bold(" Suggested Commit Message:"));
|
|
94
|
+
console.log();
|
|
95
|
+
console.log(chalk.gray(" ---"));
|
|
96
|
+
suggestedMessage.split("\n").forEach((line) => {
|
|
97
|
+
console.log(chalk.white(` ${line}`));
|
|
98
|
+
});
|
|
99
|
+
console.log(chalk.gray(" ---"));
|
|
100
|
+
console.log();
|
|
101
|
+
const { action } = await inquirer.prompt([
|
|
102
|
+
{
|
|
103
|
+
type: "list",
|
|
104
|
+
name: "action",
|
|
105
|
+
message: "What would you like to do?",
|
|
106
|
+
choices: [
|
|
107
|
+
{ name: "Commit with suggested message", value: "commit" },
|
|
108
|
+
{ name: "Edit message", value: "edit" },
|
|
109
|
+
{ name: "Stage all changes first", value: "stage-all" },
|
|
110
|
+
{ name: "Select files to stage", value: "select" },
|
|
111
|
+
{ name: "View diff", value: "diff" },
|
|
112
|
+
{ name: "Cancel", value: "cancel" }
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
]);
|
|
116
|
+
switch (action) {
|
|
117
|
+
case "commit":
|
|
118
|
+
return performCommit(git, autoCommit, suggestedMessage, options);
|
|
119
|
+
case "edit":
|
|
120
|
+
const { editedMessage } = await inquirer.prompt([
|
|
121
|
+
{
|
|
122
|
+
type: "editor",
|
|
123
|
+
name: "editedMessage",
|
|
124
|
+
message: "Edit commit message:",
|
|
125
|
+
default: suggestedMessage
|
|
126
|
+
}
|
|
127
|
+
]);
|
|
128
|
+
return performCommit(git, autoCommit, editedMessage.trim(), options);
|
|
129
|
+
case "stage-all":
|
|
130
|
+
await git.add(".");
|
|
131
|
+
const newStatus = await git.getStatus();
|
|
132
|
+
const newAnalysis = await autoCommit.analyzeChanges(newStatus);
|
|
133
|
+
return interactiveCommit(git, autoCommit, newStatus, newAnalysis, options);
|
|
134
|
+
case "select":
|
|
135
|
+
const unstaged = status.files.filter((f) => !f.isStaged);
|
|
136
|
+
if (unstaged.length === 0) {
|
|
137
|
+
console.log(chalk.yellow("\n No unstaged files to select.\n"));
|
|
138
|
+
return interactiveCommit(git, autoCommit, status, analysis, options);
|
|
139
|
+
}
|
|
140
|
+
const { filesToStage } = await inquirer.prompt([
|
|
141
|
+
{
|
|
142
|
+
type: "checkbox",
|
|
143
|
+
name: "filesToStage",
|
|
144
|
+
message: "Select files to stage:",
|
|
145
|
+
choices: unstaged.map((f) => ({
|
|
146
|
+
name: `${getStatusIcon(f.workingTreeStatus).trim()} ${f.path}`,
|
|
147
|
+
value: f.path
|
|
148
|
+
}))
|
|
149
|
+
}
|
|
150
|
+
]);
|
|
151
|
+
if (filesToStage.length > 0) {
|
|
152
|
+
await git.add(filesToStage);
|
|
153
|
+
}
|
|
154
|
+
const updatedStatus = await git.getStatus();
|
|
155
|
+
const updatedAnalysis = await autoCommit.analyzeChanges(updatedStatus);
|
|
156
|
+
return interactiveCommit(git, autoCommit, updatedStatus, updatedAnalysis, options);
|
|
157
|
+
case "diff":
|
|
158
|
+
const diff = await git.getDiffContent({ staged: true });
|
|
159
|
+
console.log();
|
|
160
|
+
console.log(chalk.cyan.bold(" Staged Diff:"));
|
|
161
|
+
console.log(chalk.gray(" ---"));
|
|
162
|
+
if (diff) {
|
|
163
|
+
diff.split("\n").slice(0, 50).forEach((line) => {
|
|
164
|
+
if (line.startsWith("+") && !line.startsWith("+++")) {
|
|
165
|
+
console.log(chalk.green(` ${line}`));
|
|
166
|
+
} else if (line.startsWith("-") && !line.startsWith("---")) {
|
|
167
|
+
console.log(chalk.red(` ${line}`));
|
|
168
|
+
} else {
|
|
169
|
+
console.log(chalk.gray(` ${line}`));
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
if (diff.split("\n").length > 50) {
|
|
173
|
+
console.log(chalk.gray(" ... (truncated)"));
|
|
174
|
+
}
|
|
175
|
+
} else {
|
|
176
|
+
console.log(chalk.gray(" No staged changes"));
|
|
177
|
+
}
|
|
178
|
+
console.log(chalk.gray(" ---"));
|
|
179
|
+
console.log();
|
|
180
|
+
return interactiveCommit(git, autoCommit, status, analysis, options);
|
|
181
|
+
case "cancel":
|
|
182
|
+
default:
|
|
183
|
+
console.log(chalk.yellow("\n Commit cancelled.\n"));
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
async function performCommit(git, autoCommit, message, options) {
|
|
188
|
+
const spinner = ora("Creating commit...").start();
|
|
189
|
+
try {
|
|
190
|
+
const result = await autoCommit.commit({
|
|
191
|
+
message,
|
|
192
|
+
stageAll: options.all,
|
|
193
|
+
dryRun: options.dryRun
|
|
194
|
+
});
|
|
195
|
+
if (options.dryRun) {
|
|
196
|
+
spinner.info("Dry run - no commit created");
|
|
197
|
+
console.log();
|
|
198
|
+
console.log(chalk.cyan(" Would commit with message:"));
|
|
199
|
+
console.log(chalk.gray(" ---"));
|
|
200
|
+
message.split("\n").forEach((line) => {
|
|
201
|
+
console.log(chalk.white(` ${line}`));
|
|
202
|
+
});
|
|
203
|
+
console.log(chalk.gray(" ---"));
|
|
204
|
+
console.log();
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
if (!result.success) {
|
|
208
|
+
spinner.fail("Commit failed");
|
|
209
|
+
console.error(chalk.red(` Error: ${result.error}`));
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
spinner.succeed("Commit created");
|
|
213
|
+
console.log();
|
|
214
|
+
console.log(chalk.white(` Hash: ${chalk.green(result.hash || "unknown")}`));
|
|
215
|
+
console.log();
|
|
216
|
+
if (options.push) {
|
|
217
|
+
const pushSpinner = ora("Pushing to remote...").start();
|
|
218
|
+
try {
|
|
219
|
+
await git.push();
|
|
220
|
+
pushSpinner.succeed("Pushed to remote");
|
|
221
|
+
} catch (error) {
|
|
222
|
+
pushSpinner.fail("Push failed");
|
|
223
|
+
console.error(chalk.red(` Error: ${error instanceof Error ? error.message : String(error)}`));
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return true;
|
|
228
|
+
} catch (error) {
|
|
229
|
+
spinner.fail("Commit failed");
|
|
230
|
+
console.error(chalk.red(` Error: ${error instanceof Error ? error.message : String(error)}`));
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
function createCommitCommand() {
|
|
235
|
+
const command = new Command("commit");
|
|
236
|
+
command.description("Create a git commit with optional auto-generated message").option("-m, --message <message>", "Commit message (skips auto-generation)").option("-n, --dry-run", "Show what would be committed without committing", false).option("-a, --auto", "Automatically generate commit message", false).option("-p, --push", "Push to remote after committing", false).option("--path <path>", "Repository path", ".").option("-i, --interactive", "Interactive mode for reviewing changes", false).option("-A, --all", "Stage all changes before committing", false).option("--amend", "Amend the previous commit", false).action(async (options) => {
|
|
237
|
+
try {
|
|
238
|
+
const projectRoot = validateProjectRoot(options.path);
|
|
239
|
+
const git = createGitClient({ workingDirectory: projectRoot });
|
|
240
|
+
const autoCommit = createAutoCommit({
|
|
241
|
+
workingDirectory: projectRoot,
|
|
242
|
+
stageAll: options.all
|
|
243
|
+
});
|
|
244
|
+
if (!await git.isRepo()) {
|
|
245
|
+
console.error(chalk.red("\n Error: Not a git repository\n"));
|
|
246
|
+
process.exit(1);
|
|
247
|
+
}
|
|
248
|
+
const status = await git.getStatus();
|
|
249
|
+
if (status.isClean && !options.amend) {
|
|
250
|
+
console.log(chalk.yellow("\n Nothing to commit, working tree clean\n"));
|
|
251
|
+
process.exit(0);
|
|
252
|
+
}
|
|
253
|
+
const analysis = await autoCommit.analyzeChanges(status);
|
|
254
|
+
if (options.interactive) {
|
|
255
|
+
const success = await interactiveCommit(git, autoCommit, status, analysis, options);
|
|
256
|
+
process.exit(success ? 0 : 1);
|
|
257
|
+
}
|
|
258
|
+
if (options.message) {
|
|
259
|
+
const success = await performCommit(git, autoCommit, options.message, options);
|
|
260
|
+
process.exit(success ? 0 : 1);
|
|
261
|
+
}
|
|
262
|
+
if (options.auto) {
|
|
263
|
+
const message = autoCommit.generateCommitMessage(analysis);
|
|
264
|
+
const success = await performCommit(git, autoCommit, message, options);
|
|
265
|
+
process.exit(success ? 0 : 1);
|
|
266
|
+
}
|
|
267
|
+
formatStatus(status);
|
|
268
|
+
formatAnalysis(analysis);
|
|
269
|
+
const suggestedMessage = autoCommit.generateCommitMessage(analysis);
|
|
270
|
+
console.log(chalk.cyan.bold(" Suggested Commit Message:"));
|
|
271
|
+
console.log();
|
|
272
|
+
console.log(chalk.gray(" ---"));
|
|
273
|
+
suggestedMessage.split("\n").forEach((line) => {
|
|
274
|
+
console.log(chalk.white(` ${line}`));
|
|
275
|
+
});
|
|
276
|
+
console.log(chalk.gray(" ---"));
|
|
277
|
+
console.log();
|
|
278
|
+
console.log(chalk.gray(" Use -a/--auto to commit with this message"));
|
|
279
|
+
console.log(chalk.gray(" Use -i/--interactive for interactive mode"));
|
|
280
|
+
console.log(chalk.gray(" Use -m/--message to provide your own message"));
|
|
281
|
+
console.log();
|
|
282
|
+
} catch (error) {
|
|
283
|
+
console.error(chalk.red(`
|
|
284
|
+
Error: ${error instanceof Error ? error.message : String(error)}
|
|
285
|
+
`));
|
|
286
|
+
process.exit(1);
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
command.command("status").description("Show git status with analysis").option("--path <path>", "Repository path", ".").action(async (opts) => {
|
|
290
|
+
try {
|
|
291
|
+
const projectRoot = validateProjectRoot(opts.path);
|
|
292
|
+
const git = createGitClient({ workingDirectory: projectRoot });
|
|
293
|
+
const autoCommit = createAutoCommit({ workingDirectory: projectRoot });
|
|
294
|
+
if (!await git.isRepo()) {
|
|
295
|
+
console.error(chalk.red("\n Error: Not a git repository\n"));
|
|
296
|
+
process.exit(1);
|
|
297
|
+
}
|
|
298
|
+
const status = await git.getStatus();
|
|
299
|
+
formatStatus(status);
|
|
300
|
+
if (!status.isClean) {
|
|
301
|
+
const analysis = await autoCommit.analyzeChanges(status);
|
|
302
|
+
formatAnalysis(analysis);
|
|
303
|
+
}
|
|
304
|
+
} catch (error) {
|
|
305
|
+
console.error(chalk.red(`
|
|
306
|
+
Error: ${error instanceof Error ? error.message : String(error)}
|
|
307
|
+
`));
|
|
308
|
+
process.exit(1);
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
command.command("log").description("Show recent commits").option("--path <path>", "Repository path", ".").option("-n, --count <count>", "Number of commits to show", "10").action(async (opts) => {
|
|
312
|
+
try {
|
|
313
|
+
const projectRoot = validateProjectRoot(opts.path);
|
|
314
|
+
const git = createGitClient({ workingDirectory: projectRoot });
|
|
315
|
+
if (!await git.isRepo()) {
|
|
316
|
+
console.error(chalk.red("\n Error: Not a git repository\n"));
|
|
317
|
+
process.exit(1);
|
|
318
|
+
}
|
|
319
|
+
const log = await git.getLog({ maxCount: parseInt(opts.count, 10) });
|
|
320
|
+
console.log();
|
|
321
|
+
console.log(chalk.cyan.bold(" Recent Commits"));
|
|
322
|
+
console.log();
|
|
323
|
+
log.forEach((commit) => {
|
|
324
|
+
const date = commit.date.toISOString().split("T")[0];
|
|
325
|
+
console.log(chalk.yellow(` ${commit.hashAbbrev}`) + chalk.gray(` (${date})`) + chalk.white(` ${commit.message}`));
|
|
326
|
+
console.log(chalk.gray(` ${commit.author} <${commit.email}>`));
|
|
327
|
+
});
|
|
328
|
+
console.log();
|
|
329
|
+
} catch (error) {
|
|
330
|
+
console.error(chalk.red(`
|
|
331
|
+
Error: ${error instanceof Error ? error.message : String(error)}
|
|
332
|
+
`));
|
|
333
|
+
process.exit(1);
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
command.command("diff").description("Show diff of changes").option("--path <path>", "Repository path", ".").option("-s, --staged", "Show only staged changes", false).option("-f, --file <file>", "Show diff for specific file").action(async (opts) => {
|
|
337
|
+
try {
|
|
338
|
+
const projectRoot = validateProjectRoot(opts.path);
|
|
339
|
+
const git = createGitClient({ workingDirectory: projectRoot });
|
|
340
|
+
if (!await git.isRepo()) {
|
|
341
|
+
console.error(chalk.red("\n Error: Not a git repository\n"));
|
|
342
|
+
process.exit(1);
|
|
343
|
+
}
|
|
344
|
+
const diff = await git.getDiffContent({
|
|
345
|
+
staged: opts.staged,
|
|
346
|
+
file: opts.file
|
|
347
|
+
});
|
|
348
|
+
if (!diff) {
|
|
349
|
+
console.log(chalk.yellow("\n No changes to show\n"));
|
|
350
|
+
process.exit(0);
|
|
351
|
+
}
|
|
352
|
+
console.log();
|
|
353
|
+
diff.split("\n").forEach((line) => {
|
|
354
|
+
if (line.startsWith("+") && !line.startsWith("+++")) {
|
|
355
|
+
console.log(chalk.green(line));
|
|
356
|
+
} else if (line.startsWith("-") && !line.startsWith("---")) {
|
|
357
|
+
console.log(chalk.red(line));
|
|
358
|
+
} else if (line.startsWith("@@")) {
|
|
359
|
+
console.log(chalk.cyan(line));
|
|
360
|
+
} else if (line.startsWith("diff ") || line.startsWith("index ")) {
|
|
361
|
+
console.log(chalk.blue(line));
|
|
362
|
+
} else {
|
|
363
|
+
console.log(line);
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
console.log();
|
|
367
|
+
} catch (error) {
|
|
368
|
+
console.error(chalk.red(`
|
|
369
|
+
Error: ${error instanceof Error ? error.message : String(error)}
|
|
370
|
+
`));
|
|
371
|
+
process.exit(1);
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
return command;
|
|
375
|
+
}
|
|
376
|
+
export {
|
|
377
|
+
createCommitCommand
|
|
378
|
+
};
|
|
379
|
+
//# sourceMappingURL=commit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit.js","sources":["../../../src/cli/commands/commit.ts"],"sourcesContent":["/**\n * Commit Command\n *\n * CLI command for creating commits with optional AI-powered message generation.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport inquirer from 'inquirer';\nimport { createGitClient, GitClient, GitStatusSummary } from '../../integrations/git.js';\nimport { createAutoCommit, AutoCommit, ChangeAnalysis, ChangeType } from '../../integrations/auto-commit.js';\nimport { validateProjectRoot } from '../../core/security.js';\n\n/**\n * Commit command options\n */\ninterface CommitOptions {\n message?: string;\n dryRun: boolean;\n auto: boolean;\n push: boolean;\n path: string;\n interactive: boolean;\n all: boolean;\n amend: boolean;\n}\n\n/**\n * Format status for display\n */\nfunction formatStatus(status: GitStatusSummary): void {\n console.log();\n console.log(chalk.cyan.bold(' Git Status'));\n console.log();\n console.log(chalk.white(` Branch: ${chalk.green(status.branch)}`));\n\n if (status.tracking) {\n const ahead = status.tracking.ahead > 0 ? chalk.green(`+${status.tracking.ahead}`) : '';\n const behind = status.tracking.behind > 0 ? chalk.red(`-${status.tracking.behind}`) : '';\n const tracking = [ahead, behind].filter(Boolean).join(' ');\n console.log(chalk.gray(` Tracking: ${status.tracking.remote} ${tracking}`));\n }\n\n console.log();\n\n if (status.isClean) {\n console.log(chalk.green(' Working tree is clean'));\n return;\n }\n\n // Show file counts\n const counts: string[] = [];\n if (status.staged > 0) counts.push(chalk.green(`${status.staged} staged`));\n if (status.modified > 0) counts.push(chalk.yellow(`${status.modified} modified`));\n if (status.untracked > 0) counts.push(chalk.gray(`${status.untracked} untracked`));\n if (status.deleted > 0) counts.push(chalk.red(`${status.deleted} deleted`));\n if (status.conflicted > 0) counts.push(chalk.red(`${status.conflicted} conflicted`));\n\n console.log(chalk.white(` Changes: ${counts.join(', ')}`));\n console.log();\n\n // Group files by status\n const staged = status.files.filter(f => f.isStaged);\n const unstaged = status.files.filter(f => !f.isStaged);\n\n if (staged.length > 0) {\n console.log(chalk.green(' Staged Changes:'));\n staged.slice(0, 10).forEach(f => {\n const icon = getStatusIcon(f.indexStatus);\n console.log(chalk.green(` ${icon} ${f.path}`));\n });\n if (staged.length > 10) {\n console.log(chalk.gray(` ... and ${staged.length - 10} more`));\n }\n console.log();\n }\n\n if (unstaged.length > 0) {\n console.log(chalk.yellow(' Unstaged Changes:'));\n unstaged.slice(0, 10).forEach(f => {\n const icon = getStatusIcon(f.workingTreeStatus);\n console.log(chalk.yellow(` ${icon} ${f.path}`));\n });\n if (unstaged.length > 10) {\n console.log(chalk.gray(` ... and ${unstaged.length - 10} more`));\n }\n console.log();\n }\n}\n\n/**\n * Get icon for file status\n */\nfunction getStatusIcon(status: string): string {\n switch (status) {\n case 'M':\n return 'modified:';\n case 'A':\n return 'added: ';\n case 'D':\n return 'deleted: ';\n case 'R':\n return 'renamed: ';\n case '?':\n return 'new: ';\n case 'U':\n return 'conflict:';\n default:\n return ' ';\n }\n}\n\n/**\n * Format analysis for display\n */\nfunction formatAnalysis(analysis: ChangeAnalysis): void {\n console.log();\n console.log(chalk.cyan.bold(' Change Analysis'));\n console.log();\n console.log(chalk.white(` Type: ${chalk.yellow(analysis.type)}`));\n if (analysis.scope) {\n console.log(chalk.white(` Scope: ${chalk.blue(analysis.scope)}`));\n }\n console.log(chalk.white(` Description: ${analysis.description}`));\n if (analysis.breaking) {\n console.log(chalk.red(` Breaking Change: Yes`));\n }\n console.log();\n}\n\n/**\n * Interactive mode for reviewing and editing commit\n */\nasync function interactiveCommit(\n git: GitClient,\n autoCommit: AutoCommit,\n status: GitStatusSummary,\n analysis: ChangeAnalysis,\n options: CommitOptions\n): Promise<boolean> {\n // Show current state\n formatStatus(status);\n formatAnalysis(analysis);\n\n // Generate suggested message\n const suggestedMessage = autoCommit.generateCommitMessage(analysis);\n\n console.log(chalk.cyan.bold(' Suggested Commit Message:'));\n console.log();\n console.log(chalk.gray(' ---'));\n suggestedMessage.split('\\n').forEach(line => {\n console.log(chalk.white(` ${line}`));\n });\n console.log(chalk.gray(' ---'));\n console.log();\n\n // Ask for confirmation\n const { action } = await inquirer.prompt([\n {\n type: 'list',\n name: 'action',\n message: 'What would you like to do?',\n choices: [\n { name: 'Commit with suggested message', value: 'commit' },\n { name: 'Edit message', value: 'edit' },\n { name: 'Stage all changes first', value: 'stage-all' },\n { name: 'Select files to stage', value: 'select' },\n { name: 'View diff', value: 'diff' },\n { name: 'Cancel', value: 'cancel' },\n ],\n },\n ]);\n\n switch (action) {\n case 'commit':\n return performCommit(git, autoCommit, suggestedMessage, options);\n\n case 'edit':\n const { editedMessage } = await inquirer.prompt([\n {\n type: 'editor',\n name: 'editedMessage',\n message: 'Edit commit message:',\n default: suggestedMessage,\n },\n ]);\n return performCommit(git, autoCommit, editedMessage.trim(), options);\n\n case 'stage-all':\n await git.add('.');\n const newStatus = await git.getStatus();\n const newAnalysis = await autoCommit.analyzeChanges(newStatus);\n return interactiveCommit(git, autoCommit, newStatus, newAnalysis, options);\n\n case 'select':\n const unstaged = status.files.filter(f => !f.isStaged);\n if (unstaged.length === 0) {\n console.log(chalk.yellow('\\n No unstaged files to select.\\n'));\n return interactiveCommit(git, autoCommit, status, analysis, options);\n }\n\n const { filesToStage } = await inquirer.prompt([\n {\n type: 'checkbox',\n name: 'filesToStage',\n message: 'Select files to stage:',\n choices: unstaged.map(f => ({\n name: `${getStatusIcon(f.workingTreeStatus).trim()} ${f.path}`,\n value: f.path,\n })),\n },\n ]);\n\n if (filesToStage.length > 0) {\n await git.add(filesToStage);\n }\n const updatedStatus = await git.getStatus();\n const updatedAnalysis = await autoCommit.analyzeChanges(updatedStatus);\n return interactiveCommit(git, autoCommit, updatedStatus, updatedAnalysis, options);\n\n case 'diff':\n const diff = await git.getDiffContent({ staged: true });\n console.log();\n console.log(chalk.cyan.bold(' Staged Diff:'));\n console.log(chalk.gray(' ---'));\n if (diff) {\n diff.split('\\n').slice(0, 50).forEach(line => {\n if (line.startsWith('+') && !line.startsWith('+++')) {\n console.log(chalk.green(` ${line}`));\n } else if (line.startsWith('-') && !line.startsWith('---')) {\n console.log(chalk.red(` ${line}`));\n } else {\n console.log(chalk.gray(` ${line}`));\n }\n });\n if (diff.split('\\n').length > 50) {\n console.log(chalk.gray(' ... (truncated)'));\n }\n } else {\n console.log(chalk.gray(' No staged changes'));\n }\n console.log(chalk.gray(' ---'));\n console.log();\n return interactiveCommit(git, autoCommit, status, analysis, options);\n\n case 'cancel':\n default:\n console.log(chalk.yellow('\\n Commit cancelled.\\n'));\n return false;\n }\n}\n\n/**\n * Perform the actual commit\n */\nasync function performCommit(\n git: GitClient,\n autoCommit: AutoCommit,\n message: string,\n options: CommitOptions\n): Promise<boolean> {\n const spinner = ora('Creating commit...').start();\n\n try {\n const result = await autoCommit.commit({\n message,\n stageAll: options.all,\n dryRun: options.dryRun,\n });\n\n if (options.dryRun) {\n spinner.info('Dry run - no commit created');\n console.log();\n console.log(chalk.cyan(' Would commit with message:'));\n console.log(chalk.gray(' ---'));\n message.split('\\n').forEach(line => {\n console.log(chalk.white(` ${line}`));\n });\n console.log(chalk.gray(' ---'));\n console.log();\n return true;\n }\n\n if (!result.success) {\n spinner.fail('Commit failed');\n console.error(chalk.red(` Error: ${result.error}`));\n return false;\n }\n\n spinner.succeed('Commit created');\n console.log();\n console.log(chalk.white(` Hash: ${chalk.green(result.hash || 'unknown')}`));\n console.log();\n\n // Push if requested\n if (options.push) {\n const pushSpinner = ora('Pushing to remote...').start();\n try {\n await git.push();\n pushSpinner.succeed('Pushed to remote');\n } catch (error) {\n pushSpinner.fail('Push failed');\n console.error(chalk.red(` Error: ${error instanceof Error ? error.message : String(error)}`));\n return false;\n }\n }\n\n return true;\n } catch (error) {\n spinner.fail('Commit failed');\n console.error(chalk.red(` Error: ${error instanceof Error ? error.message : String(error)}`));\n return false;\n }\n}\n\n/**\n * Create commit command\n */\nexport function createCommitCommand(): Command {\n const command = new Command('commit');\n\n command\n .description('Create a git commit with optional auto-generated message')\n .option('-m, --message <message>', 'Commit message (skips auto-generation)')\n .option('-n, --dry-run', 'Show what would be committed without committing', false)\n .option('-a, --auto', 'Automatically generate commit message', false)\n .option('-p, --push', 'Push to remote after committing', false)\n .option('--path <path>', 'Repository path', '.')\n .option('-i, --interactive', 'Interactive mode for reviewing changes', false)\n .option('-A, --all', 'Stage all changes before committing', false)\n .option('--amend', 'Amend the previous commit', false)\n .action(async (options: CommitOptions) => {\n try {\n // Validate path\n const projectRoot = validateProjectRoot(options.path);\n\n // Create clients\n const git = createGitClient({ workingDirectory: projectRoot });\n const autoCommit = createAutoCommit({\n workingDirectory: projectRoot,\n stageAll: options.all,\n });\n\n // Check if this is a git repository\n if (!(await git.isRepo())) {\n console.error(chalk.red('\\n Error: Not a git repository\\n'));\n process.exit(1);\n }\n\n // Get current status\n const status = await git.getStatus();\n\n // Handle clean working directory\n if (status.isClean && !options.amend) {\n console.log(chalk.yellow('\\n Nothing to commit, working tree clean\\n'));\n process.exit(0);\n }\n\n // Analyze changes\n const analysis = await autoCommit.analyzeChanges(status);\n\n // Interactive mode\n if (options.interactive) {\n const success = await interactiveCommit(git, autoCommit, status, analysis, options);\n process.exit(success ? 0 : 1);\n }\n\n // If message provided, use it directly\n if (options.message) {\n const success = await performCommit(git, autoCommit, options.message, options);\n process.exit(success ? 0 : 1);\n }\n\n // Auto mode - generate and commit\n if (options.auto) {\n const message = autoCommit.generateCommitMessage(analysis);\n const success = await performCommit(git, autoCommit, message, options);\n process.exit(success ? 0 : 1);\n }\n\n // Default: show status and suggested message\n formatStatus(status);\n formatAnalysis(analysis);\n\n const suggestedMessage = autoCommit.generateCommitMessage(analysis);\n\n console.log(chalk.cyan.bold(' Suggested Commit Message:'));\n console.log();\n console.log(chalk.gray(' ---'));\n suggestedMessage.split('\\n').forEach(line => {\n console.log(chalk.white(` ${line}`));\n });\n console.log(chalk.gray(' ---'));\n console.log();\n\n console.log(chalk.gray(' Use -a/--auto to commit with this message'));\n console.log(chalk.gray(' Use -i/--interactive for interactive mode'));\n console.log(chalk.gray(' Use -m/--message to provide your own message'));\n console.log();\n\n } catch (error) {\n console.error(chalk.red(`\\n Error: ${error instanceof Error ? error.message : String(error)}\\n`));\n process.exit(1);\n }\n });\n\n // Status subcommand\n command\n .command('status')\n .description('Show git status with analysis')\n .option('--path <path>', 'Repository path', '.')\n .action(async (opts) => {\n try {\n const projectRoot = validateProjectRoot(opts.path);\n const git = createGitClient({ workingDirectory: projectRoot });\n const autoCommit = createAutoCommit({ workingDirectory: projectRoot });\n\n if (!(await git.isRepo())) {\n console.error(chalk.red('\\n Error: Not a git repository\\n'));\n process.exit(1);\n }\n\n const status = await git.getStatus();\n formatStatus(status);\n\n if (!status.isClean) {\n const analysis = await autoCommit.analyzeChanges(status);\n formatAnalysis(analysis);\n }\n } catch (error) {\n console.error(chalk.red(`\\n Error: ${error instanceof Error ? error.message : String(error)}\\n`));\n process.exit(1);\n }\n });\n\n // Log subcommand\n command\n .command('log')\n .description('Show recent commits')\n .option('--path <path>', 'Repository path', '.')\n .option('-n, --count <count>', 'Number of commits to show', '10')\n .action(async (opts) => {\n try {\n const projectRoot = validateProjectRoot(opts.path);\n const git = createGitClient({ workingDirectory: projectRoot });\n\n if (!(await git.isRepo())) {\n console.error(chalk.red('\\n Error: Not a git repository\\n'));\n process.exit(1);\n }\n\n const log = await git.getLog({ maxCount: parseInt(opts.count, 10) });\n\n console.log();\n console.log(chalk.cyan.bold(' Recent Commits'));\n console.log();\n\n log.forEach(commit => {\n const date = commit.date.toISOString().split('T')[0];\n console.log(chalk.yellow(` ${commit.hashAbbrev}`) + chalk.gray(` (${date})`) + chalk.white(` ${commit.message}`));\n console.log(chalk.gray(` ${commit.author} <${commit.email}>`));\n });\n\n console.log();\n } catch (error) {\n console.error(chalk.red(`\\n Error: ${error instanceof Error ? error.message : String(error)}\\n`));\n process.exit(1);\n }\n });\n\n // Diff subcommand\n command\n .command('diff')\n .description('Show diff of changes')\n .option('--path <path>', 'Repository path', '.')\n .option('-s, --staged', 'Show only staged changes', false)\n .option('-f, --file <file>', 'Show diff for specific file')\n .action(async (opts) => {\n try {\n const projectRoot = validateProjectRoot(opts.path);\n const git = createGitClient({ workingDirectory: projectRoot });\n\n if (!(await git.isRepo())) {\n console.error(chalk.red('\\n Error: Not a git repository\\n'));\n process.exit(1);\n }\n\n const diff = await git.getDiffContent({\n staged: opts.staged,\n file: opts.file,\n });\n\n if (!diff) {\n console.log(chalk.yellow('\\n No changes to show\\n'));\n process.exit(0);\n }\n\n console.log();\n diff.split('\\n').forEach(line => {\n if (line.startsWith('+') && !line.startsWith('+++')) {\n console.log(chalk.green(line));\n } else if (line.startsWith('-') && !line.startsWith('---')) {\n console.log(chalk.red(line));\n } else if (line.startsWith('@@')) {\n console.log(chalk.cyan(line));\n } else if (line.startsWith('diff ') || line.startsWith('index ')) {\n console.log(chalk.blue(line));\n } else {\n console.log(line);\n }\n });\n console.log();\n } catch (error) {\n console.error(chalk.red(`\\n Error: ${error instanceof Error ? error.message : String(error)}\\n`));\n process.exit(1);\n }\n });\n\n return command;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,mBAAmB,IAAI,OAAO,CA8H7C"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { createConfigManager, getDefaultConfig } from "../../config/index.js";
|
|
4
|
+
function createConfigCommand() {
|
|
5
|
+
const config = new Command("config").description("Manage knowledge graph configuration");
|
|
6
|
+
config.command("show").description("Show current configuration").option("--json", "Output as JSON").action(async (options) => {
|
|
7
|
+
try {
|
|
8
|
+
const manager = createConfigManager();
|
|
9
|
+
await manager.load();
|
|
10
|
+
const currentConfig = manager.get();
|
|
11
|
+
if (options.json) {
|
|
12
|
+
console.log(JSON.stringify(currentConfig, null, 2));
|
|
13
|
+
} else {
|
|
14
|
+
console.log(chalk.cyan.bold("\nKnowledge Graph Configuration\n"));
|
|
15
|
+
console.log(chalk.white("Database:"));
|
|
16
|
+
console.log(chalk.gray(` Path: ${currentConfig.database.path}`));
|
|
17
|
+
console.log(chalk.gray(` WAL Mode: ${currentConfig.database.walMode}`));
|
|
18
|
+
console.log(chalk.gray(` Cache Size: ${currentConfig.database.cacheSize} pages`));
|
|
19
|
+
if (currentConfig.cache) {
|
|
20
|
+
console.log(chalk.white("\nCache:"));
|
|
21
|
+
console.log(chalk.gray(` Enabled: ${currentConfig.cache.enabled}`));
|
|
22
|
+
console.log(chalk.gray(` Max Size: ${(currentConfig.cache.maxSize || 0) / (1024 * 1024)}MB`));
|
|
23
|
+
console.log(chalk.gray(` Policy: ${currentConfig.cache.evictionPolicy}`));
|
|
24
|
+
}
|
|
25
|
+
if (currentConfig.logging) {
|
|
26
|
+
console.log(chalk.white("\nLogging:"));
|
|
27
|
+
console.log(chalk.gray(` Level: ${currentConfig.logging.level}`));
|
|
28
|
+
console.log(chalk.gray(` Format: ${currentConfig.logging.format}`));
|
|
29
|
+
}
|
|
30
|
+
console.log("");
|
|
31
|
+
}
|
|
32
|
+
} catch (error) {
|
|
33
|
+
console.error(chalk.red("Error reading configuration:"), error);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
config.command("set <key> <value>").description("Set a configuration value").action(async (key, value) => {
|
|
38
|
+
try {
|
|
39
|
+
const manager = createConfigManager();
|
|
40
|
+
await manager.load();
|
|
41
|
+
const parts = key.split(".");
|
|
42
|
+
const updates = {};
|
|
43
|
+
if (parts[0] === "database" && parts[1]) {
|
|
44
|
+
updates.database = { path: "", [parts[1]]: parseValue(value) };
|
|
45
|
+
} else if (parts[0] === "cache" && parts[1]) {
|
|
46
|
+
updates.cache = { enabled: true, [parts[1]]: parseValue(value) };
|
|
47
|
+
} else if (parts[0] === "logging" && parts[1]) {
|
|
48
|
+
updates.logging = { level: "info", [parts[1]]: parseValue(value) };
|
|
49
|
+
} else {
|
|
50
|
+
updates[key] = parseValue(value);
|
|
51
|
+
}
|
|
52
|
+
manager.update(updates);
|
|
53
|
+
await manager.save();
|
|
54
|
+
console.log(chalk.green(`Configuration updated: ${key} = ${value}`));
|
|
55
|
+
} catch (error) {
|
|
56
|
+
console.error(chalk.red("Error updating configuration:"), error);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
config.command("reset").description("Reset configuration to defaults").option("-y, --yes", "Skip confirmation").action(async (options) => {
|
|
61
|
+
try {
|
|
62
|
+
const manager = createConfigManager();
|
|
63
|
+
manager.reset();
|
|
64
|
+
await manager.save();
|
|
65
|
+
console.log(chalk.green("Configuration reset to defaults"));
|
|
66
|
+
} catch (error) {
|
|
67
|
+
console.error(chalk.red("Error resetting configuration:"), error);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
config.command("validate").description("Validate current configuration").action(async () => {
|
|
72
|
+
try {
|
|
73
|
+
const manager = createConfigManager();
|
|
74
|
+
await manager.load();
|
|
75
|
+
const result = manager.validate();
|
|
76
|
+
if (result.valid) {
|
|
77
|
+
console.log(chalk.green("Configuration is valid"));
|
|
78
|
+
} else {
|
|
79
|
+
console.log(chalk.red("Configuration has errors:"));
|
|
80
|
+
result.errors.forEach((err) => {
|
|
81
|
+
console.log(chalk.yellow(` - ${err}`));
|
|
82
|
+
});
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
} catch (error) {
|
|
86
|
+
console.error(chalk.red("Error validating configuration:"), error);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
config.command("defaults").description("Show default configuration values").action(() => {
|
|
91
|
+
const defaults = getDefaultConfig();
|
|
92
|
+
console.log(chalk.cyan.bold("\nDefault Configuration:\n"));
|
|
93
|
+
console.log(JSON.stringify(defaults, null, 2));
|
|
94
|
+
});
|
|
95
|
+
return config;
|
|
96
|
+
}
|
|
97
|
+
function parseValue(value) {
|
|
98
|
+
if (value === "true") return true;
|
|
99
|
+
if (value === "false") return false;
|
|
100
|
+
const num = Number(value);
|
|
101
|
+
if (!isNaN(num)) return num;
|
|
102
|
+
return value;
|
|
103
|
+
}
|
|
104
|
+
export {
|
|
105
|
+
createConfigCommand
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../src/cli/commands/config.ts"],"sourcesContent":["/**\n * Config Command\n *\n * Manage knowledge graph configuration.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { createConfigManager, getDefaultConfig } from '../../config/index.js';\nimport type { KGConfiguration } from '../../config/index.js';\n\nexport function createConfigCommand(): Command {\n const config = new Command('config')\n .description('Manage knowledge graph configuration');\n\n config\n .command('show')\n .description('Show current configuration')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const manager = createConfigManager();\n await manager.load();\n const currentConfig = manager.get();\n\n if (options.json) {\n console.log(JSON.stringify(currentConfig, null, 2));\n } else {\n console.log(chalk.cyan.bold('\\nKnowledge Graph Configuration\\n'));\n console.log(chalk.white('Database:'));\n console.log(chalk.gray(` Path: ${currentConfig.database.path}`));\n console.log(chalk.gray(` WAL Mode: ${currentConfig.database.walMode}`));\n console.log(chalk.gray(` Cache Size: ${currentConfig.database.cacheSize} pages`));\n\n if (currentConfig.cache) {\n console.log(chalk.white('\\nCache:'));\n console.log(chalk.gray(` Enabled: ${currentConfig.cache.enabled}`));\n console.log(chalk.gray(` Max Size: ${(currentConfig.cache.maxSize || 0) / (1024 * 1024)}MB`));\n console.log(chalk.gray(` Policy: ${currentConfig.cache.evictionPolicy}`));\n }\n\n if (currentConfig.logging) {\n console.log(chalk.white('\\nLogging:'));\n console.log(chalk.gray(` Level: ${currentConfig.logging.level}`));\n console.log(chalk.gray(` Format: ${currentConfig.logging.format}`));\n }\n\n console.log('');\n }\n } catch (error) {\n console.error(chalk.red('Error reading configuration:'), error);\n process.exit(1);\n }\n });\n\n config\n .command('set <key> <value>')\n .description('Set a configuration value')\n .action(async (key: string, value: string) => {\n try {\n const manager = createConfigManager();\n await manager.load();\n\n // Parse the key path (e.g., 'database.path')\n const parts = key.split('.');\n const updates: Partial<KGConfiguration> = {};\n\n if (parts[0] === 'database' && parts[1]) {\n updates.database = { path: '', [parts[1]]: parseValue(value) } as any;\n } else if (parts[0] === 'cache' && parts[1]) {\n updates.cache = { enabled: true, [parts[1]]: parseValue(value) } as any;\n } else if (parts[0] === 'logging' && parts[1]) {\n updates.logging = { level: 'info', [parts[1]]: parseValue(value) } as any;\n } else {\n (updates as any)[key] = parseValue(value);\n }\n\n manager.update(updates);\n await manager.save();\n\n console.log(chalk.green(`Configuration updated: ${key} = ${value}`));\n } catch (error) {\n console.error(chalk.red('Error updating configuration:'), error);\n process.exit(1);\n }\n });\n\n config\n .command('reset')\n .description('Reset configuration to defaults')\n .option('-y, --yes', 'Skip confirmation')\n .action(async (options) => {\n try {\n const manager = createConfigManager();\n manager.reset();\n await manager.save();\n console.log(chalk.green('Configuration reset to defaults'));\n } catch (error) {\n console.error(chalk.red('Error resetting configuration:'), error);\n process.exit(1);\n }\n });\n\n config\n .command('validate')\n .description('Validate current configuration')\n .action(async () => {\n try {\n const manager = createConfigManager();\n await manager.load();\n const result = manager.validate();\n\n if (result.valid) {\n console.log(chalk.green('Configuration is valid'));\n } else {\n console.log(chalk.red('Configuration has errors:'));\n result.errors.forEach((err: string) => {\n console.log(chalk.yellow(` - ${err}`));\n });\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red('Error validating configuration:'), error);\n process.exit(1);\n }\n });\n\n config\n .command('defaults')\n .description('Show default configuration values')\n .action(() => {\n const defaults = getDefaultConfig();\n console.log(chalk.cyan.bold('\\nDefault Configuration:\\n'));\n console.log(JSON.stringify(defaults, null, 2));\n });\n\n return config;\n}\n\nfunction parseValue(value: string): string | number | boolean {\n if (value === 'true') return true;\n if (value === 'false') return false;\n const num = Number(value);\n if (!isNaN(num)) return num;\n return value;\n}\n"],"names":[],"mappings":";;;AAWO,SAAS,sBAA+B;AAC7C,QAAM,SAAS,IAAI,QAAQ,QAAQ,EAChC,YAAY,sCAAsC;AAErD,SACG,QAAQ,MAAM,EACd,YAAY,4BAA4B,EACxC,OAAO,UAAU,gBAAgB,EACjC,OAAO,OAAO,YAAY;AACzB,QAAI;AACF,YAAM,UAAU,oBAAA;AAChB,YAAM,QAAQ,KAAA;AACd,YAAM,gBAAgB,QAAQ,IAAA;AAE9B,UAAI,QAAQ,MAAM;AAChB,gBAAQ,IAAI,KAAK,UAAU,eAAe,MAAM,CAAC,CAAC;AAAA,MACpD,OAAO;AACL,gBAAQ,IAAI,MAAM,KAAK,KAAK,mCAAmC,CAAC;AAChE,gBAAQ,IAAI,MAAM,MAAM,WAAW,CAAC;AACpC,gBAAQ,IAAI,MAAM,KAAK,WAAW,cAAc,SAAS,IAAI,EAAE,CAAC;AAChE,gBAAQ,IAAI,MAAM,KAAK,eAAe,cAAc,SAAS,OAAO,EAAE,CAAC;AACvE,gBAAQ,IAAI,MAAM,KAAK,iBAAiB,cAAc,SAAS,SAAS,QAAQ,CAAC;AAEjF,YAAI,cAAc,OAAO;AACvB,kBAAQ,IAAI,MAAM,MAAM,UAAU,CAAC;AACnC,kBAAQ,IAAI,MAAM,KAAK,cAAc,cAAc,MAAM,OAAO,EAAE,CAAC;AACnE,kBAAQ,IAAI,MAAM,KAAK,gBAAgB,cAAc,MAAM,WAAW,MAAM,OAAO,KAAK,IAAI,CAAC;AAC7F,kBAAQ,IAAI,MAAM,KAAK,aAAa,cAAc,MAAM,cAAc,EAAE,CAAC;AAAA,QAC3E;AAEA,YAAI,cAAc,SAAS;AACzB,kBAAQ,IAAI,MAAM,MAAM,YAAY,CAAC;AACrC,kBAAQ,IAAI,MAAM,KAAK,YAAY,cAAc,QAAQ,KAAK,EAAE,CAAC;AACjE,kBAAQ,IAAI,MAAM,KAAK,aAAa,cAAc,QAAQ,MAAM,EAAE,CAAC;AAAA,QACrE;AAEA,gBAAQ,IAAI,EAAE;AAAA,MAChB;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,MAAM,IAAI,8BAA8B,GAAG,KAAK;AAC9D,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,SACG,QAAQ,mBAAmB,EAC3B,YAAY,2BAA2B,EACvC,OAAO,OAAO,KAAa,UAAkB;AAC5C,QAAI;AACF,YAAM,UAAU,oBAAA;AAChB,YAAM,QAAQ,KAAA;AAGd,YAAM,QAAQ,IAAI,MAAM,GAAG;AAC3B,YAAM,UAAoC,CAAA;AAE1C,UAAI,MAAM,CAAC,MAAM,cAAc,MAAM,CAAC,GAAG;AACvC,gBAAQ,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,KAAK,EAAA;AAAA,MAC7D,WAAW,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,GAAG;AAC3C,gBAAQ,QAAQ,EAAE,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,KAAK,EAAA;AAAA,MAC/D,WAAW,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,GAAG;AAC7C,gBAAQ,UAAU,EAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,KAAK,EAAA;AAAA,MACjE,OAAO;AACJ,gBAAgB,GAAG,IAAI,WAAW,KAAK;AAAA,MAC1C;AAEA,cAAQ,OAAO,OAAO;AACtB,YAAM,QAAQ,KAAA;AAEd,cAAQ,IAAI,MAAM,MAAM,0BAA0B,GAAG,MAAM,KAAK,EAAE,CAAC;AAAA,IACrE,SAAS,OAAO;AACd,cAAQ,MAAM,MAAM,IAAI,+BAA+B,GAAG,KAAK;AAC/D,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,SACG,QAAQ,OAAO,EACf,YAAY,iCAAiC,EAC7C,OAAO,aAAa,mBAAmB,EACvC,OAAO,OAAO,YAAY;AACzB,QAAI;AACF,YAAM,UAAU,oBAAA;AAChB,cAAQ,MAAA;AACR,YAAM,QAAQ,KAAA;AACd,cAAQ,IAAI,MAAM,MAAM,iCAAiC,CAAC;AAAA,IAC5D,SAAS,OAAO;AACd,cAAQ,MAAM,MAAM,IAAI,gCAAgC,GAAG,KAAK;AAChE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,SACG,QAAQ,UAAU,EAClB,YAAY,gCAAgC,EAC5C,OAAO,YAAY;AAClB,QAAI;AACF,YAAM,UAAU,oBAAA;AAChB,YAAM,QAAQ,KAAA;AACd,YAAM,SAAS,QAAQ,SAAA;AAEvB,UAAI,OAAO,OAAO;AAChB,gBAAQ,IAAI,MAAM,MAAM,wBAAwB,CAAC;AAAA,MACnD,OAAO;AACL,gBAAQ,IAAI,MAAM,IAAI,2BAA2B,CAAC;AAClD,eAAO,OAAO,QAAQ,CAAC,QAAgB;AACrC,kBAAQ,IAAI,MAAM,OAAO,OAAO,GAAG,EAAE,CAAC;AAAA,QACxC,CAAC;AACD,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,MAAM,IAAI,iCAAiC,GAAG,KAAK;AACjE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,SACG,QAAQ,UAAU,EAClB,YAAY,mCAAmC,EAC/C,OAAO,MAAM;AACZ,UAAM,WAAW,iBAAA;AACjB,YAAQ,IAAI,MAAM,KAAK,KAAK,4BAA4B,CAAC;AACzD,YAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAAA,EAC/C,CAAC;AAEH,SAAO;AACT;AAEA,SAAS,WAAW,OAA0C;AAC5D,MAAI,UAAU,OAAQ,QAAO;AAC7B,MAAI,UAAU,QAAS,QAAO;AAC9B,QAAM,MAAM,OAAO,KAAK;AACxB,MAAI,CAAC,MAAM,GAAG,EAAG,QAAO;AACxB,SAAO;AACT;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert Command
|
|
3
|
+
*
|
|
4
|
+
* Convert existing documentation to weave-nn structure.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
/**
|
|
8
|
+
* Create convert command
|
|
9
|
+
*/
|
|
10
|
+
export declare function createConvertCommand(): Command;
|
|
11
|
+
/**
|
|
12
|
+
* Create frontmatter command
|
|
13
|
+
*/
|
|
14
|
+
export declare function createFrontmatterCommand(): Command;
|
|
15
|
+
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CA6G9C;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CA6JlD"}
|