@mycodemap/mycodemap 0.4.2 → 0.5.1
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/CHANGELOG.md +105 -3
- package/README.md +192 -53
- package/dist/ai/claude.d.ts +38 -0
- package/dist/ai/claude.d.ts.map +1 -0
- package/dist/ai/claude.js +169 -0
- package/dist/ai/claude.js.map +1 -0
- package/dist/ai/codex.d.ts +38 -0
- package/dist/ai/codex.d.ts.map +1 -0
- package/dist/ai/codex.js +169 -0
- package/dist/ai/codex.js.map +1 -0
- package/dist/ai/factory.d.ts +48 -0
- package/dist/ai/factory.d.ts.map +1 -0
- package/dist/ai/factory.js +95 -0
- package/dist/ai/factory.js.map +1 -0
- package/dist/ai/index.d.ts +12 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +29 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/provider.d.ts +70 -0
- package/dist/ai/provider.d.ts.map +1 -0
- package/dist/ai/provider.js +31 -0
- package/dist/ai/provider.js.map +1 -0
- package/dist/ai/subagent-caller.d.ts +90 -0
- package/dist/ai/subagent-caller.d.ts.map +1 -0
- package/dist/ai/subagent-caller.js +280 -0
- package/dist/ai/subagent-caller.js.map +1 -0
- package/dist/ai/types.d.ts +70 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +5 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts +18 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -1
- package/dist/cli/commands/analyze.js +239 -6
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/check.d.ts +22 -0
- package/dist/cli/commands/check.d.ts.map +1 -0
- package/dist/cli/commands/check.js +168 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/ci.d.ts +25 -0
- package/dist/cli/commands/ci.d.ts.map +1 -1
- package/dist/cli/commands/ci.js +139 -36
- package/dist/cli/commands/ci.js.map +1 -1
- package/dist/cli/commands/complexity.d.ts.map +1 -1
- package/dist/cli/commands/complexity.js +6 -0
- package/dist/cli/commands/complexity.js.map +1 -1
- package/dist/cli/commands/design.d.ts +52 -0
- package/dist/cli/commands/design.d.ts.map +1 -0
- package/dist/cli/commands/design.js +274 -0
- package/dist/cli/commands/design.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +1 -0
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +121 -8
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/history.d.ts +26 -0
- package/dist/cli/commands/history.d.ts.map +1 -0
- package/dist/cli/commands/history.js +92 -0
- package/dist/cli/commands/history.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +13 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +108 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/server.d.ts +9 -0
- package/dist/cli/commands/server.d.ts.map +1 -0
- package/dist/cli/commands/server.js +65 -0
- package/dist/cli/commands/server.js.map +1 -0
- package/dist/cli/commands/ship/pipeline.d.ts.map +1 -1
- package/dist/cli/commands/ship/pipeline.js +8 -1
- package/dist/cli/commands/ship/pipeline.js.map +1 -1
- package/dist/cli/commands/ship/publisher.d.ts +9 -1
- package/dist/cli/commands/ship/publisher.d.ts.map +1 -1
- package/dist/cli/commands/ship/publisher.js +149 -6
- package/dist/cli/commands/ship/publisher.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts.map +1 -1
- package/dist/cli/commands/workflow.js +22 -2
- package/dist/cli/commands/workflow.js.map +1 -1
- package/dist/cli/config-loader.d.ts.map +1 -1
- package/dist/cli/config-loader.js +3 -2
- package/dist/cli/config-loader.js.map +1 -1
- package/dist/cli/contract-checker.d.ts +33 -0
- package/dist/cli/contract-checker.d.ts.map +1 -0
- package/dist/cli/contract-checker.js +719 -0
- package/dist/cli/contract-checker.js.map +1 -0
- package/dist/cli/contract-diff-scope.d.ts +14 -0
- package/dist/cli/contract-diff-scope.d.ts.map +1 -0
- package/dist/cli/contract-diff-scope.js +127 -0
- package/dist/cli/contract-diff-scope.js.map +1 -0
- package/dist/cli/contract-gate-thresholds.d.ts +14 -0
- package/dist/cli/contract-gate-thresholds.d.ts.map +1 -0
- package/dist/cli/contract-gate-thresholds.js +19 -0
- package/dist/cli/contract-gate-thresholds.js.map +1 -0
- package/dist/cli/design-contract-loader.d.ts +15 -0
- package/dist/cli/design-contract-loader.d.ts.map +1 -0
- package/dist/cli/design-contract-loader.js +527 -0
- package/dist/cli/design-contract-loader.js.map +1 -0
- package/dist/cli/design-contract-schema.d.ts +11 -0
- package/dist/cli/design-contract-schema.d.ts.map +1 -0
- package/dist/cli/design-contract-schema.js +75 -0
- package/dist/cli/design-contract-schema.js.map +1 -0
- package/dist/cli/design-handoff-builder.d.ts +15 -0
- package/dist/cli/design-handoff-builder.d.ts.map +1 -0
- package/dist/cli/design-handoff-builder.js +345 -0
- package/dist/cli/design-handoff-builder.js.map +1 -0
- package/dist/cli/design-scope-resolver.d.ts +8 -0
- package/dist/cli/design-scope-resolver.d.ts.map +1 -0
- package/dist/cli/design-scope-resolver.js +760 -0
- package/dist/cli/design-scope-resolver.js.map +1 -0
- package/dist/cli/design-verification-builder.d.ts +8 -0
- package/dist/cli/design-verification-builder.d.ts.map +1 -0
- package/dist/cli/design-verification-builder.js +369 -0
- package/dist/cli/design-verification-builder.js.map +1 -0
- package/dist/cli/index.js +20 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/paths.d.ts.map +1 -1
- package/dist/cli/paths.js +30 -7
- package/dist/cli/paths.js.map +1 -1
- package/dist/cli-new/commands/server.d.ts +13 -0
- package/dist/cli-new/commands/server.d.ts.map +1 -0
- package/dist/cli-new/commands/server.js +90 -0
- package/dist/cli-new/commands/server.js.map +1 -0
- package/dist/core/analyzer.d.ts.map +1 -1
- package/dist/core/analyzer.js +16 -0
- package/dist/core/analyzer.js.map +1 -1
- package/dist/domain/entities/CodeGraph.d.ts +5 -1
- package/dist/domain/entities/CodeGraph.d.ts.map +1 -1
- package/dist/domain/entities/CodeGraph.js +29 -12
- package/dist/domain/entities/CodeGraph.js.map +1 -1
- package/dist/domain/entities/Dependency.d.ts +8 -1
- package/dist/domain/entities/Dependency.d.ts.map +1 -1
- package/dist/domain/entities/Dependency.js +19 -4
- package/dist/domain/entities/Dependency.js.map +1 -1
- package/dist/domain/entities/Symbol.d.ts +2 -1
- package/dist/domain/entities/Symbol.d.ts.map +1 -1
- package/dist/domain/entities/Symbol.js +6 -3
- package/dist/domain/entities/Symbol.js.map +1 -1
- package/dist/generator/ai-overview.d.ts +51 -0
- package/dist/generator/ai-overview.d.ts.map +1 -0
- package/dist/generator/ai-overview.js +160 -0
- package/dist/generator/ai-overview.js.map +1 -0
- package/dist/infrastructure/storage/StorageFactory.d.ts +13 -5
- package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -1
- package/dist/infrastructure/storage/StorageFactory.js +62 -16
- package/dist/infrastructure/storage/StorageFactory.js.map +1 -1
- package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts +3 -1
- package/dist/infrastructure/storage/adapters/FileSystemStorage.d.ts.map +1 -1
- package/dist/infrastructure/storage/adapters/FileSystemStorage.js +10 -2
- package/dist/infrastructure/storage/adapters/FileSystemStorage.js.map +1 -1
- package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts +3 -1
- package/dist/infrastructure/storage/adapters/KuzuDBStorage.d.ts.map +1 -1
- package/dist/infrastructure/storage/adapters/KuzuDBStorage.js +9 -1
- package/dist/infrastructure/storage/adapters/KuzuDBStorage.js.map +1 -1
- package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts +3 -1
- package/dist/infrastructure/storage/adapters/MemoryStorage.d.ts.map +1 -1
- package/dist/infrastructure/storage/adapters/MemoryStorage.js +9 -1
- package/dist/infrastructure/storage/adapters/MemoryStorage.js.map +1 -1
- package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +41 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.js +162 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
- package/dist/infrastructure/storage/adapters/SQLiteStorage.d.ts +53 -0
- package/dist/infrastructure/storage/adapters/SQLiteStorage.d.ts.map +1 -0
- package/dist/infrastructure/storage/adapters/SQLiteStorage.js +879 -0
- package/dist/infrastructure/storage/adapters/SQLiteStorage.js.map +1 -0
- package/dist/infrastructure/storage/graph-helpers.d.ts +3 -1
- package/dist/infrastructure/storage/graph-helpers.d.ts.map +1 -1
- package/dist/infrastructure/storage/graph-helpers.js +90 -0
- package/dist/infrastructure/storage/graph-helpers.js.map +1 -1
- package/dist/infrastructure/storage/index.d.ts +1 -1
- package/dist/infrastructure/storage/index.d.ts.map +1 -1
- package/dist/infrastructure/storage/interfaces/StorageBase.d.ts +3 -1
- package/dist/infrastructure/storage/interfaces/StorageBase.d.ts.map +1 -1
- package/dist/infrastructure/storage/interfaces/StorageBase.js.map +1 -1
- package/dist/infrastructure/storage/sqlite/GovernanceGraphCache.d.ts +27 -0
- package/dist/infrastructure/storage/sqlite/GovernanceGraphCache.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite/GovernanceGraphCache.js +246 -0
- package/dist/infrastructure/storage/sqlite/GovernanceGraphCache.js.map +1 -0
- package/dist/infrastructure/storage/sqlite/perf-thresholds.d.ts +25 -0
- package/dist/infrastructure/storage/sqlite/perf-thresholds.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite/perf-thresholds.js +25 -0
- package/dist/infrastructure/storage/sqlite/perf-thresholds.js.map +1 -0
- package/dist/infrastructure/storage/sqlite/schema.d.ts +4 -0
- package/dist/infrastructure/storage/sqlite/schema.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite/schema.js +111 -0
- package/dist/infrastructure/storage/sqlite/schema.js.map +1 -0
- package/dist/interface/types/design-check.d.ts +73 -0
- package/dist/interface/types/design-check.d.ts.map +1 -0
- package/dist/interface/types/design-check.js +4 -0
- package/dist/interface/types/design-check.js.map +1 -0
- package/dist/interface/types/design-contract.d.ts +123 -0
- package/dist/interface/types/design-contract.d.ts.map +1 -0
- package/dist/interface/types/design-contract.js +7 -0
- package/dist/interface/types/design-contract.js.map +1 -0
- package/dist/interface/types/design-handoff.d.ts +68 -0
- package/dist/interface/types/design-handoff.d.ts.map +1 -0
- package/dist/interface/types/design-handoff.js +4 -0
- package/dist/interface/types/design-handoff.js.map +1 -0
- package/dist/interface/types/design-mapping.d.ts +51 -0
- package/dist/interface/types/design-mapping.d.ts.map +1 -0
- package/dist/interface/types/design-mapping.js +4 -0
- package/dist/interface/types/design-mapping.js.map +1 -0
- package/dist/interface/types/design-verification.d.ts +49 -0
- package/dist/interface/types/design-verification.d.ts.map +1 -0
- package/dist/interface/types/design-verification.js +4 -0
- package/dist/interface/types/design-verification.js.map +1 -0
- package/dist/interface/types/history-risk.d.ts +90 -0
- package/dist/interface/types/history-risk.d.ts.map +1 -0
- package/dist/interface/types/history-risk.js +4 -0
- package/dist/interface/types/history-risk.js.map +1 -0
- package/dist/interface/types/index.d.ts +20 -1
- package/dist/interface/types/index.d.ts.map +1 -1
- package/dist/interface/types/storage.d.ts +28 -1
- package/dist/interface/types/storage.d.ts.map +1 -1
- package/dist/orchestrator/adapters/ast-grep-adapter.d.ts +10 -0
- package/dist/orchestrator/adapters/ast-grep-adapter.d.ts.map +1 -1
- package/dist/orchestrator/adapters/ast-grep-adapter.js +46 -17
- package/dist/orchestrator/adapters/ast-grep-adapter.js.map +1 -1
- package/dist/orchestrator/adapters/codemap-adapter.d.ts.map +1 -1
- package/dist/orchestrator/adapters/codemap-adapter.js +2 -22
- package/dist/orchestrator/adapters/codemap-adapter.js.map +1 -1
- package/dist/orchestrator/ai-feed-generator.d.ts +210 -0
- package/dist/orchestrator/ai-feed-generator.d.ts.map +1 -0
- package/dist/orchestrator/ai-feed-generator.js +377 -0
- package/dist/orchestrator/ai-feed-generator.js.map +1 -0
- package/dist/orchestrator/history-risk-service.d.ts +55 -0
- package/dist/orchestrator/history-risk-service.d.ts.map +1 -0
- package/dist/orchestrator/history-risk-service.js +680 -0
- package/dist/orchestrator/history-risk-service.js.map +1 -0
- package/dist/orchestrator/types.d.ts +19 -1
- package/dist/orchestrator/types.d.ts.map +1 -1
- package/dist/orchestrator/types.js +19 -0
- package/dist/orchestrator/types.js.map +1 -1
- package/dist/server/mcp/index.d.ts +4 -0
- package/dist/server/mcp/index.d.ts.map +1 -0
- package/dist/server/mcp/index.js +5 -0
- package/dist/server/mcp/index.js.map +1 -0
- package/dist/server/mcp/server.d.ts +17 -0
- package/dist/server/mcp/server.d.ts.map +1 -0
- package/dist/server/mcp/server.js +84 -0
- package/dist/server/mcp/server.js.map +1 -0
- package/dist/server/mcp/service.d.ts +22 -0
- package/dist/server/mcp/service.d.ts.map +1 -0
- package/dist/server/mcp/service.js +177 -0
- package/dist/server/mcp/service.js.map +1 -0
- package/dist/server/mcp/types.d.ts +56 -0
- package/dist/server/mcp/types.d.ts.map +1 -0
- package/dist/server/mcp/types.js +4 -0
- package/dist/server/mcp/types.js.map +1 -0
- package/docs/AI_ASSISTANT_SETUP.md +1 -1
- package/docs/SETUP_GUIDE.md +6 -6
- package/docs/ai-guide/COMMANDS.md +171 -4
- package/docs/ai-guide/INTEGRATION.md +137 -433
- package/docs/ai-guide/OUTPUT.md +890 -5
- package/docs/ai-guide/PATTERNS.md +54 -14
- package/docs/ai-guide/PROMPTS.md +17 -6
- package/docs/archive/test-report-symbol-search.md +384 -0
- package/docs/archive/test-scenario-4-complexity-analysis.md +460 -0
- package/docs/archive/test_report_scenario5.md +615 -0
- package/docs/archive/test_scenario_3_impact_analysis_report.md +520 -0
- package/docs/backlog.md +177 -0
- package/docs/eatdogfood-reports/2026-04-17-eatdogfood-agent-experience.md +231 -0
- package/docs/exec-plans/completed/2026-04-17-eatdogfood-codemap-cli.md +103 -0
- package/docs/ideation/2026-04-15-executable-architecture-constitution-ideation.md +102 -0
- package/docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md +126 -0
- package/docs/product-specs/MVP3-ARCHITECTURE-COMPARISON.md +11 -10
- package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-PRD.md +10 -10
- package/docs/product-specs/MVP3-ARCHITECTURE-REDESIGN-TECH-PRD.md +17 -12
- package/docs/product-specs/README.md +2 -1
- package/docs/rules/README.md +16 -11
- package/docs/rules/architecture-guardrails.md +24 -336
- package/docs/rules/code-quality-redlines.md +25 -311
- package/docs/rules/engineering-with-codex-openai.md +20 -3
- package/docs/rules/validation.md +90 -37
- package/mycodemap.config.schema.json +3 -3
- package/package.json +7 -2
- package/scripts/benchmark-governance-graph.mjs +132 -0
- package/scripts/calibrate-contract-gate.mjs +221 -0
- package/scripts/capability-report.py +255 -0
- package/scripts/experiments/arcadedb-http-smoke.mjs +90 -0
- package/scripts/qa-rule-control.sh +254 -0
- package/scripts/report-high-risk-files.mjs +395 -0
- package/scripts/rule-context.mjs +155 -0
- package/scripts/smoke-sqlite-impact.mjs +85 -0
- package/scripts/sync-analyze-docs.js +1 -0
- package/scripts/tests/test_capability_report.py +89 -0
- package/scripts/tests/test_rule_control_workflow.py +51 -0
- package/scripts/tests/test_validate_rules.py +81 -0
- package/scripts/validate-ai-docs.js +283 -1
- package/scripts/validate-docs.js +479 -25
- package/scripts/validate-rules.py +254 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Cycle, ImpactResult, ProjectStatistics } from '../../../interface/types/storage.js';
|
|
1
|
+
import type { Cycle, GraphMetadata, ImpactResult, ProjectStatistics, SymbolImpactResult } from '../../../interface/types/storage.js';
|
|
2
2
|
import type { CodeGraph, Module, Symbol, Dependency } from '../../../interface/types/index.js';
|
|
3
3
|
import { StorageBase } from '../interfaces/StorageBase.js';
|
|
4
4
|
/**
|
|
@@ -18,6 +18,7 @@ export declare class MemoryStorage extends StorageBase {
|
|
|
18
18
|
protected doClose(): Promise<void>;
|
|
19
19
|
saveCodeGraph(graph: CodeGraph): Promise<void>;
|
|
20
20
|
loadCodeGraph(): Promise<CodeGraph>;
|
|
21
|
+
loadGraphMetadata(): Promise<GraphMetadata>;
|
|
21
22
|
deleteProject(): Promise<void>;
|
|
22
23
|
updateModule(module: Module): Promise<void>;
|
|
23
24
|
deleteModule(moduleId: string): Promise<void>;
|
|
@@ -31,6 +32,7 @@ export declare class MemoryStorage extends StorageBase {
|
|
|
31
32
|
findCallees(functionId: string): Promise<Symbol[]>;
|
|
32
33
|
detectCycles(): Promise<Cycle[]>;
|
|
33
34
|
calculateImpact(moduleId: string, depth: number): Promise<ImpactResult>;
|
|
35
|
+
calculateSymbolImpact(symbolId: string, depth: number, limit: number): Promise<SymbolImpactResult>;
|
|
34
36
|
getStatistics(): Promise<ProjectStatistics>;
|
|
35
37
|
}
|
|
36
38
|
//# sourceMappingURL=MemoryStorage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryStorage.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/storage/adapters/MemoryStorage.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,iBAAiB,
|
|
1
|
+
{"version":3,"file":"MemoryStorage.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/storage/adapters/MemoryStorage.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,MAAM,EACN,UAAU,EACX,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAiB3D;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAElC,cAAc;IACd,OAAO,CAAC,KAAK,CAAqC;cAMlC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAK7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IASlC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC;IAKnC,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC;IAK3C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKlD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKlD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKjD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKlD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKzD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKvD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKlD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IASlD,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAKhC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAKvE,qBAAqB,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC;IAKxB,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAIlD"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// 内存存储适配器 - 用于测试和轻量级场景的内存存储
|
|
5
5
|
// ============================================
|
|
6
6
|
import { StorageBase } from '../interfaces/StorageBase.js';
|
|
7
|
-
import { calculateImpactInGraph, cloneCodeGraph, createEmptyCodeGraph, deleteModuleFromGraph, detectCyclesInGraph, findCalleesInGraph, findCallersInGraph, findDependenciesInGraph, findDependentsInGraph, getProjectStatisticsFromGraph, upsertModuleInGraph, } from '../graph-helpers.js';
|
|
7
|
+
import { calculateImpactInGraph, calculateSymbolImpactInGraph, cloneCodeGraph, createEmptyCodeGraph, deleteModuleFromGraph, detectCyclesInGraph, findCalleesInGraph, findCallersInGraph, findDependenciesInGraph, findDependentsInGraph, getGraphMetadataFromGraph, getProjectStatisticsFromGraph, upsertModuleInGraph, } from '../graph-helpers.js';
|
|
8
8
|
/**
|
|
9
9
|
* 内存存储适配器
|
|
10
10
|
*
|
|
@@ -40,6 +40,10 @@ export class MemoryStorage extends StorageBase {
|
|
|
40
40
|
this.ensureInitialized();
|
|
41
41
|
return cloneCodeGraph(this.graph);
|
|
42
42
|
}
|
|
43
|
+
async loadGraphMetadata() {
|
|
44
|
+
this.ensureInitialized();
|
|
45
|
+
return getGraphMetadataFromGraph(this.graph);
|
|
46
|
+
}
|
|
43
47
|
async deleteProject() {
|
|
44
48
|
this.ensureInitialized();
|
|
45
49
|
this.graph = createEmptyCodeGraph(this.projectPath ?? '');
|
|
@@ -101,6 +105,10 @@ export class MemoryStorage extends StorageBase {
|
|
|
101
105
|
this.ensureInitialized();
|
|
102
106
|
return calculateImpactInGraph(this.graph, moduleId, depth);
|
|
103
107
|
}
|
|
108
|
+
async calculateSymbolImpact(symbolId, depth, limit) {
|
|
109
|
+
this.ensureInitialized();
|
|
110
|
+
return calculateSymbolImpactInGraph(this.graph, symbolId, depth, limit);
|
|
111
|
+
}
|
|
104
112
|
async getStatistics() {
|
|
105
113
|
this.ensureInitialized();
|
|
106
114
|
return getProjectStatisticsFromGraph(this.graph);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryStorage.js","sourceRoot":"","sources":["../../../../src/infrastructure/storage/adapters/MemoryStorage.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,qFAAqF;AACrF,+CAA+C;AAC/C,4BAA4B;AAC5B,+CAA+C;
|
|
1
|
+
{"version":3,"file":"MemoryStorage.js","sourceRoot":"","sources":["../../../../src/infrastructure/storage/adapters/MemoryStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { StorageConfig, Cycle, ImpactResult, ProjectStatistics } from '../../../interface/types/storage.js';
|
|
2
|
+
import type { CodeGraph, Module, Symbol, Dependency } from '../../../interface/types/index.js';
|
|
3
|
+
import { StorageBase } from '../interfaces/StorageBase.js';
|
|
4
|
+
/**
|
|
5
|
+
* Neo4j 存储适配器(可选依赖)
|
|
6
|
+
*
|
|
7
|
+
* 安装:npm install neo4j-driver
|
|
8
|
+
*
|
|
9
|
+
* 特点:
|
|
10
|
+
* - 连接远程/本地 Neo4j 实例
|
|
11
|
+
* - 用 snapshot 节点持久化完整 CodeGraph
|
|
12
|
+
* - 查询/分析接口与共享 storage contract 保持一致
|
|
13
|
+
* - 错误语义显式暴露,不再静默 fallback
|
|
14
|
+
*/
|
|
15
|
+
export declare class Neo4jStorage extends StorageBase {
|
|
16
|
+
readonly type: "neo4j";
|
|
17
|
+
private driver;
|
|
18
|
+
private readonly dbConfig;
|
|
19
|
+
constructor(config: StorageConfig);
|
|
20
|
+
protected doInitialize(): Promise<void>;
|
|
21
|
+
protected doClose(): Promise<void>;
|
|
22
|
+
saveCodeGraph(graph: CodeGraph): Promise<void>;
|
|
23
|
+
loadCodeGraph(): Promise<CodeGraph>;
|
|
24
|
+
deleteProject(): Promise<void>;
|
|
25
|
+
updateModule(module: Module): Promise<void>;
|
|
26
|
+
deleteModule(moduleId: string): Promise<void>;
|
|
27
|
+
findModuleById(id: string): Promise<Module | null>;
|
|
28
|
+
findModulesByPath(path: string): Promise<Module[]>;
|
|
29
|
+
findSymbolByName(name: string): Promise<Symbol[]>;
|
|
30
|
+
findSymbolById(id: string): Promise<Symbol | null>;
|
|
31
|
+
findDependencies(moduleId: string): Promise<Dependency[]>;
|
|
32
|
+
findDependents(moduleId: string): Promise<Dependency[]>;
|
|
33
|
+
findCallers(functionId: string): Promise<Symbol[]>;
|
|
34
|
+
findCallees(functionId: string): Promise<Symbol[]>;
|
|
35
|
+
detectCycles(): Promise<Cycle[]>;
|
|
36
|
+
calculateImpact(moduleId: string, depth: number): Promise<ImpactResult>;
|
|
37
|
+
getStatistics(): Promise<ProjectStatistics>;
|
|
38
|
+
private getDriver;
|
|
39
|
+
private runStatement;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=Neo4jStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Neo4jStorage.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/storage/adapters/Neo4jStorage.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,YAAY,EACZ,iBAAiB,EAClB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,MAAM,EACN,UAAU,EACX,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAgB,MAAM,8BAA8B,CAAC;AA4DzE;;;;;;;;;;GAUG;AACH,qBAAa,YAAa,SAAQ,WAAW;IAC3C,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,MAAM,EAAE,aAAa;cAKjB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAkB7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQlC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAe9C,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC;IAkBnC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMlD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMlD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMjD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMlD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKzD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKvD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKlD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKlD,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAKhC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAKvE,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAKjD,OAAO,CAAC,SAAS;YAWH,YAAY;CAkB3B"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
// [META] since:2026-03 | owner:architecture-team | stable:false
|
|
2
|
+
// [WHY] Neo4j storage adapter - enterprise graph database backend
|
|
3
|
+
// ============================================
|
|
4
|
+
// Neo4j 存储适配器 - 企业级图数据库后端
|
|
5
|
+
// ============================================
|
|
6
|
+
import { StorageBase, StorageError } from '../interfaces/StorageBase.js';
|
|
7
|
+
import { calculateImpactInGraph, createEmptyCodeGraph, deleteModuleFromGraph, deserializeCodeGraphSnapshot, detectCyclesInGraph, findCalleesInGraph, findCallersInGraph, findDependenciesInGraph, findDependentsInGraph, getProjectStatisticsFromGraph, serializeCodeGraphSnapshot, upsertModuleInGraph, } from '../graph-helpers.js';
|
|
8
|
+
async function loadNeo4jModule() {
|
|
9
|
+
const moduleName = 'neo4j-driver';
|
|
10
|
+
return await import(moduleName);
|
|
11
|
+
}
|
|
12
|
+
function normalizeNeo4jValue(value) {
|
|
13
|
+
if (typeof value === 'object' &&
|
|
14
|
+
value !== null &&
|
|
15
|
+
'toNumber' in value &&
|
|
16
|
+
typeof value.toNumber === 'function') {
|
|
17
|
+
return value.toNumber();
|
|
18
|
+
}
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Neo4j 存储适配器(可选依赖)
|
|
23
|
+
*
|
|
24
|
+
* 安装:npm install neo4j-driver
|
|
25
|
+
*
|
|
26
|
+
* 特点:
|
|
27
|
+
* - 连接远程/本地 Neo4j 实例
|
|
28
|
+
* - 用 snapshot 节点持久化完整 CodeGraph
|
|
29
|
+
* - 查询/分析接口与共享 storage contract 保持一致
|
|
30
|
+
* - 错误语义显式暴露,不再静默 fallback
|
|
31
|
+
*/
|
|
32
|
+
export class Neo4jStorage extends StorageBase {
|
|
33
|
+
type = 'neo4j';
|
|
34
|
+
driver = null;
|
|
35
|
+
dbConfig;
|
|
36
|
+
constructor(config) {
|
|
37
|
+
super();
|
|
38
|
+
this.dbConfig = config;
|
|
39
|
+
}
|
|
40
|
+
async doInitialize() {
|
|
41
|
+
try {
|
|
42
|
+
const neo4j = await loadNeo4jModule();
|
|
43
|
+
const uri = this.dbConfig.uri ?? 'bolt://localhost:7687';
|
|
44
|
+
const username = this.dbConfig.username ?? 'neo4j';
|
|
45
|
+
const password = this.dbConfig.password ?? 'password';
|
|
46
|
+
this.driver = neo4j.driver(uri, neo4j.auth.basic(username, password));
|
|
47
|
+
await this.driver.verifyConnectivity();
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw new StorageError('Failed to initialize Neo4j storage', 'NEO4J_INIT_FAILED', error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async doClose() {
|
|
54
|
+
if (this.driver) {
|
|
55
|
+
await this.driver.close();
|
|
56
|
+
}
|
|
57
|
+
this.driver = null;
|
|
58
|
+
}
|
|
59
|
+
async saveCodeGraph(graph) {
|
|
60
|
+
this.ensureInitialized();
|
|
61
|
+
await this.runStatement('MATCH (s:CodeMapSnapshot) DETACH DELETE s');
|
|
62
|
+
await this.runStatement('CREATE (s:CodeMapSnapshot {id: $id, projectId: $projectId, graph: $graph, updatedAt: $updatedAt})', {
|
|
63
|
+
id: 'codemap-snapshot',
|
|
64
|
+
projectId: graph.project.id,
|
|
65
|
+
graph: serializeCodeGraphSnapshot(graph),
|
|
66
|
+
updatedAt: new Date().toISOString(),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
async loadCodeGraph() {
|
|
70
|
+
this.ensureInitialized();
|
|
71
|
+
const result = await this.runStatement('MATCH (s:CodeMapSnapshot) RETURN s.graph AS graph LIMIT 1');
|
|
72
|
+
const record = result.records[0];
|
|
73
|
+
const snapshot = typeof record?.get === 'function'
|
|
74
|
+
? normalizeNeo4jValue(record.get('graph'))
|
|
75
|
+
: null;
|
|
76
|
+
if (typeof snapshot !== 'string') {
|
|
77
|
+
return createEmptyCodeGraph(this.projectPath ?? '');
|
|
78
|
+
}
|
|
79
|
+
return deserializeCodeGraphSnapshot(snapshot, this.projectPath ?? '');
|
|
80
|
+
}
|
|
81
|
+
async deleteProject() {
|
|
82
|
+
this.ensureInitialized();
|
|
83
|
+
await this.runStatement('MATCH (s:CodeMapSnapshot) DETACH DELETE s');
|
|
84
|
+
}
|
|
85
|
+
async updateModule(module) {
|
|
86
|
+
this.ensureInitialized();
|
|
87
|
+
const graph = await this.loadCodeGraph();
|
|
88
|
+
await this.saveCodeGraph(upsertModuleInGraph(graph, module));
|
|
89
|
+
}
|
|
90
|
+
async deleteModule(moduleId) {
|
|
91
|
+
this.ensureInitialized();
|
|
92
|
+
const graph = await this.loadCodeGraph();
|
|
93
|
+
await this.saveCodeGraph(deleteModuleFromGraph(graph, moduleId));
|
|
94
|
+
}
|
|
95
|
+
async findModuleById(id) {
|
|
96
|
+
this.ensureInitialized();
|
|
97
|
+
const graph = await this.loadCodeGraph();
|
|
98
|
+
return graph.modules.find(module => module.id === id) ?? null;
|
|
99
|
+
}
|
|
100
|
+
async findModulesByPath(path) {
|
|
101
|
+
this.ensureInitialized();
|
|
102
|
+
const graph = await this.loadCodeGraph();
|
|
103
|
+
return graph.modules.filter(module => module.path.includes(path));
|
|
104
|
+
}
|
|
105
|
+
async findSymbolByName(name) {
|
|
106
|
+
this.ensureInitialized();
|
|
107
|
+
const graph = await this.loadCodeGraph();
|
|
108
|
+
return graph.symbols.filter(symbol => symbol.name.includes(name));
|
|
109
|
+
}
|
|
110
|
+
async findSymbolById(id) {
|
|
111
|
+
this.ensureInitialized();
|
|
112
|
+
const graph = await this.loadCodeGraph();
|
|
113
|
+
return graph.symbols.find(symbol => symbol.id === id) ?? null;
|
|
114
|
+
}
|
|
115
|
+
async findDependencies(moduleId) {
|
|
116
|
+
this.ensureInitialized();
|
|
117
|
+
return findDependenciesInGraph(await this.loadCodeGraph(), moduleId);
|
|
118
|
+
}
|
|
119
|
+
async findDependents(moduleId) {
|
|
120
|
+
this.ensureInitialized();
|
|
121
|
+
return findDependentsInGraph(await this.loadCodeGraph(), moduleId);
|
|
122
|
+
}
|
|
123
|
+
async findCallers(functionId) {
|
|
124
|
+
this.ensureInitialized();
|
|
125
|
+
return findCallersInGraph(await this.loadCodeGraph(), functionId);
|
|
126
|
+
}
|
|
127
|
+
async findCallees(functionId) {
|
|
128
|
+
this.ensureInitialized();
|
|
129
|
+
return findCalleesInGraph(await this.loadCodeGraph(), functionId);
|
|
130
|
+
}
|
|
131
|
+
async detectCycles() {
|
|
132
|
+
this.ensureInitialized();
|
|
133
|
+
return detectCyclesInGraph(await this.loadCodeGraph());
|
|
134
|
+
}
|
|
135
|
+
async calculateImpact(moduleId, depth) {
|
|
136
|
+
this.ensureInitialized();
|
|
137
|
+
return calculateImpactInGraph(await this.loadCodeGraph(), moduleId, depth);
|
|
138
|
+
}
|
|
139
|
+
async getStatistics() {
|
|
140
|
+
this.ensureInitialized();
|
|
141
|
+
return getProjectStatisticsFromGraph(await this.loadCodeGraph());
|
|
142
|
+
}
|
|
143
|
+
getDriver() {
|
|
144
|
+
if (!this.driver) {
|
|
145
|
+
throw new StorageError('Neo4j driver not initialized', 'NEO4J_DRIVER_NOT_READY');
|
|
146
|
+
}
|
|
147
|
+
return this.driver;
|
|
148
|
+
}
|
|
149
|
+
async runStatement(query, params) {
|
|
150
|
+
const session = this.getDriver().session();
|
|
151
|
+
try {
|
|
152
|
+
return await session.run(query, params);
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
throw new StorageError('Failed to execute Neo4j query', 'NEO4J_QUERY_FAILED', error);
|
|
156
|
+
}
|
|
157
|
+
finally {
|
|
158
|
+
await session.close();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=Neo4jStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Neo4jStorage.js","sourceRoot":"","sources":["../../../../src/infrastructure/storage/adapters/Neo4jStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { StorageConfig, Cycle, GraphMetadata, ImpactResult, ProjectStatistics, SymbolImpactResult } from '../../../interface/types/storage.js';
|
|
2
|
+
import type { CodeGraph, Module, Symbol, Dependency } from '../../../interface/types/index.js';
|
|
3
|
+
import type { FileHistorySignal, HistoryRiskSnapshotPayload, HistoryRiskSnapshotRecord, SymbolHistoryResult } from '../../../interface/types/history-risk.js';
|
|
4
|
+
import { StorageBase } from '../interfaces/StorageBase.js';
|
|
5
|
+
import { type GovernanceGraphPerfThresholds, type GovernanceGraphRuntimeStats } from '../sqlite/perf-thresholds.js';
|
|
6
|
+
export interface SQLiteStorageRuntimeOptions {
|
|
7
|
+
readonly governanceGraphThresholds?: GovernanceGraphPerfThresholds;
|
|
8
|
+
}
|
|
9
|
+
export declare class SQLiteStorage extends StorageBase {
|
|
10
|
+
readonly type: "sqlite";
|
|
11
|
+
private database;
|
|
12
|
+
private readonly storageConfig;
|
|
13
|
+
private readonly runtimeOptions;
|
|
14
|
+
private governanceGraphCache;
|
|
15
|
+
constructor(config: StorageConfig, runtimeOptions?: SQLiteStorageRuntimeOptions);
|
|
16
|
+
protected doInitialize(): Promise<void>;
|
|
17
|
+
protected doClose(): Promise<void>;
|
|
18
|
+
saveCodeGraph(graph: CodeGraph): Promise<void>;
|
|
19
|
+
loadCodeGraph(): Promise<CodeGraph>;
|
|
20
|
+
loadGraphMetadata(): Promise<GraphMetadata>;
|
|
21
|
+
deleteProject(): Promise<void>;
|
|
22
|
+
updateModule(module: Module): Promise<void>;
|
|
23
|
+
deleteModule(moduleId: string): Promise<void>;
|
|
24
|
+
findModuleById(id: string): Promise<Module | null>;
|
|
25
|
+
findModulesByPath(path: string): Promise<Module[]>;
|
|
26
|
+
findSymbolByName(name: string): Promise<Symbol[]>;
|
|
27
|
+
findSymbolById(id: string): Promise<Symbol | null>;
|
|
28
|
+
findDependencies(moduleId: string): Promise<Dependency[]>;
|
|
29
|
+
findDependents(moduleId: string): Promise<Dependency[]>;
|
|
30
|
+
findCallers(functionId: string): Promise<Symbol[]>;
|
|
31
|
+
findCallees(functionId: string): Promise<Symbol[]>;
|
|
32
|
+
detectCycles(): Promise<Cycle[]>;
|
|
33
|
+
calculateImpact(moduleId: string, depth: number): Promise<ImpactResult>;
|
|
34
|
+
calculateSymbolImpact(symbolId: string, depth: number, limit: number): Promise<SymbolImpactResult>;
|
|
35
|
+
getStatistics(): Promise<ProjectStatistics>;
|
|
36
|
+
saveHistoryRiskSnapshot(payload: HistoryRiskSnapshotPayload): Promise<HistoryRiskSnapshotRecord>;
|
|
37
|
+
loadLatestFileHistorySignal(file: string): Promise<FileHistorySignal | null>;
|
|
38
|
+
loadLatestSymbolHistoryResult(symbolId: string, query?: string): Promise<SymbolHistoryResult>;
|
|
39
|
+
getGovernanceGraphRuntimeStats(): GovernanceGraphRuntimeStats;
|
|
40
|
+
private ensureSchemaColumns;
|
|
41
|
+
private backfillLegacySnapshotIfNeeded;
|
|
42
|
+
private replaceCurrentGraph;
|
|
43
|
+
private normalizeGraph;
|
|
44
|
+
private readCodeGraph;
|
|
45
|
+
private mapModuleRow;
|
|
46
|
+
private mapSymbolRow;
|
|
47
|
+
private mapDependencyRow;
|
|
48
|
+
private runInTransaction;
|
|
49
|
+
private getDatabase;
|
|
50
|
+
private readGovernanceGraphForAnalysis;
|
|
51
|
+
private refreshGovernanceGraphCache;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=SQLiteStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLiteStorage.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/storage/adapters/SQLiteStorage.ts"],"names":[],"mappings":"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"}
|