symbiote-cli 0.1.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/LICENSE +21 -0
- package/dist/bin/symbiote.d.ts +3 -0
- package/dist/bin/symbiote.d.ts.map +1 -0
- package/dist/bin/symbiote.js +202 -0
- package/dist/bin/symbiote.js.map +1 -0
- package/dist/bin/synapse.d.ts +3 -0
- package/dist/bin/synapse.d.ts.map +1 -0
- package/dist/bin/synapse.js +369 -0
- package/dist/bin/synapse.js.map +1 -0
- package/dist/src/brain/embeddings.d.ts +9 -0
- package/dist/src/brain/embeddings.d.ts.map +1 -0
- package/dist/src/brain/embeddings.js +24 -0
- package/dist/src/brain/embeddings.js.map +1 -0
- package/dist/src/brain/health/constraint-checker.d.ts +16 -0
- package/dist/src/brain/health/constraint-checker.d.ts.map +1 -0
- package/dist/src/brain/health/constraint-checker.js +93 -0
- package/dist/src/brain/health/constraint-checker.js.map +1 -0
- package/dist/src/brain/health/coupling-analyzer.d.ts +9 -0
- package/dist/src/brain/health/coupling-analyzer.d.ts.map +1 -0
- package/dist/src/brain/health/coupling-analyzer.js +105 -0
- package/dist/src/brain/health/coupling-analyzer.js.map +1 -0
- package/dist/src/brain/health/cycle-detector.d.ts +12 -0
- package/dist/src/brain/health/cycle-detector.d.ts.map +1 -0
- package/dist/src/brain/health/cycle-detector.js +79 -0
- package/dist/src/brain/health/cycle-detector.js.map +1 -0
- package/dist/src/brain/health/dead-code-detector.d.ts +9 -0
- package/dist/src/brain/health/dead-code-detector.d.ts.map +1 -0
- package/dist/src/brain/health/dead-code-detector.js +72 -0
- package/dist/src/brain/health/dead-code-detector.js.map +1 -0
- package/dist/src/brain/health/history.d.ts +21 -0
- package/dist/src/brain/health/history.d.ts.map +1 -0
- package/dist/src/brain/health/history.js +35 -0
- package/dist/src/brain/health/history.js.map +1 -0
- package/dist/src/brain/health/index.d.ts +25 -0
- package/dist/src/brain/health/index.d.ts.map +1 -0
- package/dist/src/brain/health/index.js +76 -0
- package/dist/src/brain/health/index.js.map +1 -0
- package/dist/src/brain/health/scorer.d.ts +19 -0
- package/dist/src/brain/health/scorer.d.ts.map +1 -0
- package/dist/src/brain/health/scorer.js +47 -0
- package/dist/src/brain/health/scorer.js.map +1 -0
- package/dist/src/brain/health/types.d.ts +67 -0
- package/dist/src/brain/health/types.d.ts.map +1 -0
- package/dist/src/brain/health/types.js +2 -0
- package/dist/src/brain/health/types.js.map +1 -0
- package/dist/src/brain/health.d.ts +30 -0
- package/dist/src/brain/health.d.ts.map +1 -0
- package/dist/src/brain/health.js +147 -0
- package/dist/src/brain/health.js.map +1 -0
- package/dist/src/brain/index.d.ts +3 -0
- package/dist/src/brain/index.d.ts.map +1 -0
- package/dist/src/brain/index.js +3 -0
- package/dist/src/brain/index.js.map +1 -0
- package/dist/src/brain/intent.d.ts +31 -0
- package/dist/src/brain/intent.d.ts.map +1 -0
- package/dist/src/brain/intent.js +120 -0
- package/dist/src/brain/intent.js.map +1 -0
- package/dist/src/commands/dna.d.ts +2 -0
- package/dist/src/commands/dna.d.ts.map +1 -0
- package/dist/src/commands/dna.js +128 -0
- package/dist/src/commands/dna.js.map +1 -0
- package/dist/src/commands/hooks.d.ts +6 -0
- package/dist/src/commands/hooks.d.ts.map +1 -0
- package/dist/src/commands/hooks.js +210 -0
- package/dist/src/commands/hooks.js.map +1 -0
- package/dist/src/commands/impact.d.ts +2 -0
- package/dist/src/commands/impact.d.ts.map +1 -0
- package/dist/src/commands/impact.js +50 -0
- package/dist/src/commands/impact.js.map +1 -0
- package/dist/src/commands/index.d.ts +9 -0
- package/dist/src/commands/index.d.ts.map +1 -0
- package/dist/src/commands/index.js +9 -0
- package/dist/src/commands/index.js.map +1 -0
- package/dist/src/commands/init.d.ts +2 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +132 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/install.d.ts +2 -0
- package/dist/src/commands/install.d.ts.map +1 -0
- package/dist/src/commands/install.js +67 -0
- package/dist/src/commands/install.js.map +1 -0
- package/dist/src/commands/mcp.d.ts +2 -0
- package/dist/src/commands/mcp.d.ts.map +1 -0
- package/dist/src/commands/mcp.js +51 -0
- package/dist/src/commands/mcp.js.map +1 -0
- package/dist/src/commands/scan.d.ts +2 -0
- package/dist/src/commands/scan.d.ts.map +1 -0
- package/dist/src/commands/scan.js +46 -0
- package/dist/src/commands/scan.js.map +1 -0
- package/dist/src/commands/serve.d.ts +2 -0
- package/dist/src/commands/serve.d.ts.map +1 -0
- package/dist/src/commands/serve.js +93 -0
- package/dist/src/commands/serve.js.map +1 -0
- package/dist/src/commands/shared.d.ts +11 -0
- package/dist/src/commands/shared.d.ts.map +1 -0
- package/dist/src/commands/shared.js +137 -0
- package/dist/src/commands/shared.js.map +1 -0
- package/dist/src/commands/unbond.d.ts +2 -0
- package/dist/src/commands/unbond.d.ts.map +1 -0
- package/dist/src/commands/unbond.js +29 -0
- package/dist/src/commands/unbond.js.map +1 -0
- package/dist/src/core/algorithms.d.ts +19 -0
- package/dist/src/core/algorithms.d.ts.map +1 -0
- package/dist/src/core/algorithms.js +98 -0
- package/dist/src/core/algorithms.js.map +1 -0
- package/dist/src/core/embeddings.d.ts +12 -0
- package/dist/src/core/embeddings.d.ts.map +1 -0
- package/dist/src/core/embeddings.js +64 -0
- package/dist/src/core/embeddings.js.map +1 -0
- package/dist/src/core/git-impact.d.ts +25 -0
- package/dist/src/core/git-impact.d.ts.map +1 -0
- package/dist/src/core/git-impact.js +97 -0
- package/dist/src/core/git-impact.js.map +1 -0
- package/dist/src/core/graph-builder.d.ts +5 -0
- package/dist/src/core/graph-builder.d.ts.map +1 -0
- package/dist/src/core/graph-builder.js +88 -0
- package/dist/src/core/graph-builder.js.map +1 -0
- package/dist/src/core/graph.d.ts +34 -0
- package/dist/src/core/graph.d.ts.map +1 -0
- package/dist/src/core/graph.js +95 -0
- package/dist/src/core/graph.js.map +1 -0
- package/dist/src/core/impact.d.ts +22 -0
- package/dist/src/core/impact.d.ts.map +1 -0
- package/dist/src/core/impact.js +68 -0
- package/dist/src/core/impact.js.map +1 -0
- package/dist/src/core/languages.d.ts +4 -0
- package/dist/src/core/languages.d.ts.map +1 -0
- package/dist/src/core/languages.js +59 -0
- package/dist/src/core/languages.js.map +1 -0
- package/dist/src/core/parser.d.ts +16 -0
- package/dist/src/core/parser.d.ts.map +1 -0
- package/dist/src/core/parser.js +689 -0
- package/dist/src/core/parser.js.map +1 -0
- package/dist/src/core/scanner.d.ts +26 -0
- package/dist/src/core/scanner.d.ts.map +1 -0
- package/dist/src/core/scanner.js +87 -0
- package/dist/src/core/scanner.js.map +1 -0
- package/dist/src/core/search.d.ts +34 -0
- package/dist/src/core/search.d.ts.map +1 -0
- package/dist/src/core/search.js +146 -0
- package/dist/src/core/search.js.map +1 -0
- package/dist/src/core/types.d.ts +29 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js +12 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/cortex/engine.d.ts +10 -0
- package/dist/src/cortex/engine.d.ts.map +1 -0
- package/dist/src/cortex/engine.js +93 -0
- package/dist/src/cortex/engine.js.map +1 -0
- package/dist/src/cortex/index.d.ts +13 -0
- package/dist/src/cortex/index.d.ts.map +1 -0
- package/dist/src/cortex/index.js +12 -0
- package/dist/src/cortex/index.js.map +1 -0
- package/dist/src/cortex/patterns.d.ts +63 -0
- package/dist/src/cortex/patterns.d.ts.map +1 -0
- package/dist/src/cortex/patterns.js +242 -0
- package/dist/src/cortex/patterns.js.map +1 -0
- package/dist/src/cortex/pgq-queries.d.ts +11 -0
- package/dist/src/cortex/pgq-queries.d.ts.map +1 -0
- package/dist/src/cortex/pgq-queries.js +23 -0
- package/dist/src/cortex/pgq-queries.js.map +1 -0
- package/dist/src/cortex/pgq.d.ts +5 -0
- package/dist/src/cortex/pgq.d.ts.map +1 -0
- package/dist/src/cortex/pgq.js +54 -0
- package/dist/src/cortex/pgq.js.map +1 -0
- package/dist/src/cortex/real-time-enrichment.d.ts +20 -0
- package/dist/src/cortex/real-time-enrichment.d.ts.map +1 -0
- package/dist/src/cortex/real-time-enrichment.js +96 -0
- package/dist/src/cortex/real-time-enrichment.js.map +1 -0
- package/dist/src/cortex/repository.d.ts +231 -0
- package/dist/src/cortex/repository.d.ts.map +1 -0
- package/dist/src/cortex/repository.js +1078 -0
- package/dist/src/cortex/repository.js.map +1 -0
- package/dist/src/cortex/schema.d.ts +9 -0
- package/dist/src/cortex/schema.d.ts.map +1 -0
- package/dist/src/cortex/schema.js +364 -0
- package/dist/src/cortex/schema.js.map +1 -0
- package/dist/src/cortex/stage-0-structure.d.ts +7 -0
- package/dist/src/cortex/stage-0-structure.d.ts.map +1 -0
- package/dist/src/cortex/stage-0-structure.js +119 -0
- package/dist/src/cortex/stage-0-structure.js.map +1 -0
- package/dist/src/cortex/stage-1-symbols.d.ts +7 -0
- package/dist/src/cortex/stage-1-symbols.d.ts.map +1 -0
- package/dist/src/cortex/stage-1-symbols.js +605 -0
- package/dist/src/cortex/stage-1-symbols.js.map +1 -0
- package/dist/src/cortex/stage-2-resolution.d.ts +7 -0
- package/dist/src/cortex/stage-2-resolution.d.ts.map +1 -0
- package/dist/src/cortex/stage-2-resolution.js +469 -0
- package/dist/src/cortex/stage-2-resolution.js.map +1 -0
- package/dist/src/cortex/stage-3-callgraph.d.ts +7 -0
- package/dist/src/cortex/stage-3-callgraph.d.ts.map +1 -0
- package/dist/src/cortex/stage-3-callgraph.js +323 -0
- package/dist/src/cortex/stage-3-callgraph.js.map +1 -0
- package/dist/src/cortex/stage-4-types.d.ts +7 -0
- package/dist/src/cortex/stage-4-types.d.ts.map +1 -0
- package/dist/src/cortex/stage-4-types.js +462 -0
- package/dist/src/cortex/stage-4-types.js.map +1 -0
- package/dist/src/cortex/stage-5-flow.d.ts +7 -0
- package/dist/src/cortex/stage-5-flow.d.ts.map +1 -0
- package/dist/src/cortex/stage-5-flow.js +702 -0
- package/dist/src/cortex/stage-5-flow.js.map +1 -0
- package/dist/src/cortex/stage-6-topology.d.ts +15 -0
- package/dist/src/cortex/stage-6-topology.d.ts.map +1 -0
- package/dist/src/cortex/stage-6-topology.js +382 -0
- package/dist/src/cortex/stage-6-topology.js.map +1 -0
- package/dist/src/cortex/stage-7-intelligence.d.ts +34 -0
- package/dist/src/cortex/stage-7-intelligence.d.ts.map +1 -0
- package/dist/src/cortex/stage-7-intelligence.js +258 -0
- package/dist/src/cortex/stage-7-intelligence.js.map +1 -0
- package/dist/src/cortex/topology-types.d.ts +78 -0
- package/dist/src/cortex/topology-types.d.ts.map +1 -0
- package/dist/src/cortex/topology-types.js +2 -0
- package/dist/src/cortex/topology-types.js.map +1 -0
- package/dist/src/cortex/types.d.ts +250 -0
- package/dist/src/cortex/types.d.ts.map +1 -0
- package/dist/src/cortex/types.js +2 -0
- package/dist/src/cortex/types.js.map +1 -0
- package/dist/src/dna/embeddings.d.ts +10 -0
- package/dist/src/dna/embeddings.d.ts.map +1 -0
- package/dist/src/dna/embeddings.js +46 -0
- package/dist/src/dna/embeddings.js.map +1 -0
- package/dist/src/dna/engine.d.ts +30 -0
- package/dist/src/dna/engine.d.ts.map +1 -0
- package/dist/src/dna/engine.js +254 -0
- package/dist/src/dna/engine.js.map +1 -0
- package/dist/src/dna/index.d.ts +5 -0
- package/dist/src/dna/index.d.ts.map +1 -0
- package/dist/src/dna/index.js +5 -0
- package/dist/src/dna/index.js.map +1 -0
- package/dist/src/dna/storage.d.ts +19 -0
- package/dist/src/dna/storage.d.ts.map +1 -0
- package/dist/src/dna/storage.js +112 -0
- package/dist/src/dna/storage.js.map +1 -0
- package/dist/src/dna/types.d.ts +38 -0
- package/dist/src/dna/types.d.ts.map +1 -0
- package/dist/src/dna/types.js +114 -0
- package/dist/src/dna/types.js.map +1 -0
- package/dist/src/events/bus.d.ts +10 -0
- package/dist/src/events/bus.d.ts.map +1 -0
- package/dist/src/events/bus.js +36 -0
- package/dist/src/events/bus.js.map +1 -0
- package/dist/src/events/ipc.d.ts +3 -0
- package/dist/src/events/ipc.d.ts.map +1 -0
- package/dist/src/events/ipc.js +25 -0
- package/dist/src/events/ipc.js.map +1 -0
- package/dist/src/events/session.d.ts +21 -0
- package/dist/src/events/session.d.ts.map +1 -0
- package/dist/src/events/session.js +39 -0
- package/dist/src/events/session.js.map +1 -0
- package/dist/src/events/types.d.ts +15 -0
- package/dist/src/events/types.d.ts.map +1 -0
- package/dist/src/events/types.js +26 -0
- package/dist/src/events/types.js.map +1 -0
- package/dist/src/hooks/attention.d.ts +26 -0
- package/dist/src/hooks/attention.d.ts.map +1 -0
- package/dist/src/hooks/attention.js +90 -0
- package/dist/src/hooks/attention.js.map +1 -0
- package/dist/src/hooks/handlers/post-tool-use-failure.d.ts +20 -0
- package/dist/src/hooks/handlers/post-tool-use-failure.d.ts.map +1 -0
- package/dist/src/hooks/handlers/post-tool-use-failure.js +60 -0
- package/dist/src/hooks/handlers/post-tool-use-failure.js.map +1 -0
- package/dist/src/hooks/handlers/post-tool-use.d.ts +22 -0
- package/dist/src/hooks/handlers/post-tool-use.d.ts.map +1 -0
- package/dist/src/hooks/handlers/post-tool-use.js +96 -0
- package/dist/src/hooks/handlers/post-tool-use.js.map +1 -0
- package/dist/src/hooks/handlers/pre-compact.d.ts +17 -0
- package/dist/src/hooks/handlers/pre-compact.d.ts.map +1 -0
- package/dist/src/hooks/handlers/pre-compact.js +28 -0
- package/dist/src/hooks/handlers/pre-compact.js.map +1 -0
- package/dist/src/hooks/handlers/pre-tool-use.d.ts +32 -0
- package/dist/src/hooks/handlers/pre-tool-use.d.ts.map +1 -0
- package/dist/src/hooks/handlers/pre-tool-use.js +219 -0
- package/dist/src/hooks/handlers/pre-tool-use.js.map +1 -0
- package/dist/src/hooks/handlers/session-end.d.ts +18 -0
- package/dist/src/hooks/handlers/session-end.d.ts.map +1 -0
- package/dist/src/hooks/handlers/session-end.js +42 -0
- package/dist/src/hooks/handlers/session-end.js.map +1 -0
- package/dist/src/hooks/handlers/session-start.d.ts +25 -0
- package/dist/src/hooks/handlers/session-start.d.ts.map +1 -0
- package/dist/src/hooks/handlers/session-start.js +61 -0
- package/dist/src/hooks/handlers/session-start.js.map +1 -0
- package/dist/src/hooks/handlers/stop.d.ts +21 -0
- package/dist/src/hooks/handlers/stop.d.ts.map +1 -0
- package/dist/src/hooks/handlers/stop.js +40 -0
- package/dist/src/hooks/handlers/stop.js.map +1 -0
- package/dist/src/hooks/handlers/subagent-start.d.ts +17 -0
- package/dist/src/hooks/handlers/subagent-start.d.ts.map +1 -0
- package/dist/src/hooks/handlers/subagent-start.js +48 -0
- package/dist/src/hooks/handlers/subagent-start.js.map +1 -0
- package/dist/src/hooks/handlers/user-prompt-submit.d.ts +12 -0
- package/dist/src/hooks/handlers/user-prompt-submit.d.ts.map +1 -0
- package/dist/src/hooks/handlers/user-prompt-submit.js +31 -0
- package/dist/src/hooks/handlers/user-prompt-submit.js.map +1 -0
- package/dist/src/hooks/index.d.ts +14 -0
- package/dist/src/hooks/index.d.ts.map +1 -0
- package/dist/src/hooks/index.js +13 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/post-tool-use.d.ts +12 -0
- package/dist/src/hooks/post-tool-use.d.ts.map +1 -0
- package/dist/src/hooks/post-tool-use.js +33 -0
- package/dist/src/hooks/post-tool-use.js.map +1 -0
- package/dist/src/hooks/pre-tool-use.d.ts +24 -0
- package/dist/src/hooks/pre-tool-use.d.ts.map +1 -0
- package/dist/src/hooks/pre-tool-use.js +117 -0
- package/dist/src/hooks/pre-tool-use.js.map +1 -0
- package/dist/src/hooks/session-store.d.ts +55 -0
- package/dist/src/hooks/session-store.d.ts.map +1 -0
- package/dist/src/hooks/session-store.js +69 -0
- package/dist/src/hooks/session-store.js.map +1 -0
- package/dist/src/hooks/types.d.ts +67 -0
- package/dist/src/hooks/types.d.ts.map +1 -0
- package/dist/src/hooks/types.js +28 -0
- package/dist/src/hooks/types.js.map +1 -0
- package/dist/src/index.d.ts +16 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +16 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/init/agent-connector.d.ts +43 -0
- package/dist/src/init/agent-connector.d.ts.map +1 -0
- package/dist/src/init/agent-connector.js +338 -0
- package/dist/src/init/agent-connector.js.map +1 -0
- package/dist/src/init/dna-bootstrap.d.ts +10 -0
- package/dist/src/init/dna-bootstrap.d.ts.map +1 -0
- package/dist/src/init/dna-bootstrap.js +32 -0
- package/dist/src/init/dna-bootstrap.js.map +1 -0
- package/dist/src/init/index.d.ts +29 -0
- package/dist/src/init/index.d.ts.map +1 -0
- package/dist/src/init/index.js +81 -0
- package/dist/src/init/index.js.map +1 -0
- package/dist/src/init/overview-generator.d.ts +5 -0
- package/dist/src/init/overview-generator.d.ts.map +1 -0
- package/dist/src/init/overview-generator.js +85 -0
- package/dist/src/init/overview-generator.js.map +1 -0
- package/dist/src/init/parsers/eslint-config.d.ts +10 -0
- package/dist/src/init/parsers/eslint-config.d.ts.map +1 -0
- package/dist/src/init/parsers/eslint-config.js +50 -0
- package/dist/src/init/parsers/eslint-config.js.map +1 -0
- package/dist/src/init/parsers/markdown-rules.d.ts +3 -0
- package/dist/src/init/parsers/markdown-rules.d.ts.map +1 -0
- package/dist/src/init/parsers/markdown-rules.js +90 -0
- package/dist/src/init/parsers/markdown-rules.js.map +1 -0
- package/dist/src/init/parsers/package-json.d.ts +17 -0
- package/dist/src/init/parsers/package-json.d.ts.map +1 -0
- package/dist/src/init/parsers/package-json.js +75 -0
- package/dist/src/init/parsers/package-json.js.map +1 -0
- package/dist/src/init/parsers/prettier-config.d.ts +16 -0
- package/dist/src/init/parsers/prettier-config.d.ts.map +1 -0
- package/dist/src/init/parsers/prettier-config.js +30 -0
- package/dist/src/init/parsers/prettier-config.js.map +1 -0
- package/dist/src/init/parsers/tsconfig.d.ts +32 -0
- package/dist/src/init/parsers/tsconfig.d.ts.map +1 -0
- package/dist/src/init/parsers/tsconfig.js +64 -0
- package/dist/src/init/parsers/tsconfig.js.map +1 -0
- package/dist/src/init/parsers/types.d.ts +27 -0
- package/dist/src/init/parsers/types.d.ts.map +1 -0
- package/dist/src/init/parsers/types.js +2 -0
- package/dist/src/init/parsers/types.js.map +1 -0
- package/dist/src/init/project-analyzer.d.ts +3 -0
- package/dist/src/init/project-analyzer.d.ts.map +1 -0
- package/dist/src/init/project-analyzer.js +102 -0
- package/dist/src/init/project-analyzer.js.map +1 -0
- package/dist/src/init/rule-importer.d.ts +3 -0
- package/dist/src/init/rule-importer.d.ts.map +1 -0
- package/dist/src/init/rule-importer.js +101 -0
- package/dist/src/init/rule-importer.js.map +1 -0
- package/dist/src/mcp/context.d.ts +43 -0
- package/dist/src/mcp/context.d.ts.map +1 -0
- package/dist/src/mcp/context.js +167 -0
- package/dist/src/mcp/context.js.map +1 -0
- package/dist/src/mcp/http-api.d.ts +10 -0
- package/dist/src/mcp/http-api.d.ts.map +1 -0
- package/dist/src/mcp/http-api.js +580 -0
- package/dist/src/mcp/http-api.js.map +1 -0
- package/dist/src/mcp/index.d.ts +8 -0
- package/dist/src/mcp/index.d.ts.map +1 -0
- package/dist/src/mcp/index.js +8 -0
- package/dist/src/mcp/index.js.map +1 -0
- package/dist/src/mcp/resources.d.ts +5 -0
- package/dist/src/mcp/resources.d.ts.map +1 -0
- package/dist/src/mcp/resources.js +78 -0
- package/dist/src/mcp/resources.js.map +1 -0
- package/dist/src/mcp/server.d.ts +6 -0
- package/dist/src/mcp/server.d.ts.map +1 -0
- package/dist/src/mcp/server.js +265 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/mcp/tool-response.d.ts +6 -0
- package/dist/src/mcp/tool-response.d.ts.map +1 -0
- package/dist/src/mcp/tool-response.js +19 -0
- package/dist/src/mcp/tool-response.js.map +1 -0
- package/dist/src/mcp/tools/architecture-tools.d.ts +15 -0
- package/dist/src/mcp/tools/architecture-tools.d.ts.map +1 -0
- package/dist/src/mcp/tools/architecture-tools.js +56 -0
- package/dist/src/mcp/tools/architecture-tools.js.map +1 -0
- package/dist/src/mcp/tools/dna-tools.d.ts +21 -0
- package/dist/src/mcp/tools/dna-tools.d.ts.map +1 -0
- package/dist/src/mcp/tools/dna-tools.js +15 -0
- package/dist/src/mcp/tools/dna-tools.js.map +1 -0
- package/dist/src/mcp/tools/graph-tools.d.ts +49 -0
- package/dist/src/mcp/tools/graph-tools.d.ts.map +1 -0
- package/dist/src/mcp/tools/graph-tools.js +45 -0
- package/dist/src/mcp/tools/graph-tools.js.map +1 -0
- package/dist/src/mcp/tools/health-tools.d.ts +5 -0
- package/dist/src/mcp/tools/health-tools.d.ts.map +1 -0
- package/dist/src/mcp/tools/health-tools.js +7 -0
- package/dist/src/mcp/tools/health-tools.js.map +1 -0
- package/dist/src/mcp/tools/impact-tools.d.ts +21 -0
- package/dist/src/mcp/tools/impact-tools.d.ts.map +1 -0
- package/dist/src/mcp/tools/impact-tools.js +23 -0
- package/dist/src/mcp/tools/impact-tools.js.map +1 -0
- package/dist/src/mcp/tools/intent-tools.d.ts +32 -0
- package/dist/src/mcp/tools/intent-tools.d.ts.map +1 -0
- package/dist/src/mcp/tools/intent-tools.js +77 -0
- package/dist/src/mcp/tools/intent-tools.js.map +1 -0
- package/dist/src/mcp/tools/project-tools.d.ts +53 -0
- package/dist/src/mcp/tools/project-tools.d.ts.map +1 -0
- package/dist/src/mcp/tools/project-tools.js +91 -0
- package/dist/src/mcp/tools/project-tools.js.map +1 -0
- package/dist/src/mcp/tools/rename-tool.d.ts +25 -0
- package/dist/src/mcp/tools/rename-tool.d.ts.map +1 -0
- package/dist/src/mcp/tools/rename-tool.js +106 -0
- package/dist/src/mcp/tools/rename-tool.js.map +1 -0
- package/dist/src/mcp/tools/trace-tools.d.ts +4 -0
- package/dist/src/mcp/tools/trace-tools.d.ts.map +1 -0
- package/dist/src/mcp/tools/trace-tools.js +268 -0
- package/dist/src/mcp/tools/trace-tools.js.map +1 -0
- package/dist/src/storage/db.d.ts +13 -0
- package/dist/src/storage/db.d.ts.map +1 -0
- package/dist/src/storage/db.js +230 -0
- package/dist/src/storage/db.js.map +1 -0
- package/dist/src/storage/repository.d.ts +54 -0
- package/dist/src/storage/repository.d.ts.map +1 -0
- package/dist/src/storage/repository.js +257 -0
- package/dist/src/storage/repository.js.map +1 -0
- package/dist/src/utils/config.d.ts +18 -0
- package/dist/src/utils/config.d.ts.map +1 -0
- package/dist/src/utils/config.js +93 -0
- package/dist/src/utils/config.js.map +1 -0
- package/dist/src/utils/files.d.ts +3 -0
- package/dist/src/utils/files.d.ts.map +1 -0
- package/dist/src/utils/files.js +52 -0
- package/dist/src/utils/files.js.map +1 -0
- package/dist/src/utils/strings.d.ts +2 -0
- package/dist/src/utils/strings.d.ts.map +1 -0
- package/dist/src/utils/strings.js +11 -0
- package/dist/src/utils/strings.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/hooks/post-tool-use.sh +37 -0
- package/hooks/pre-tool-use.sh +43 -0
- package/hooks/session-start.sh +67 -0
- package/package.json +103 -0
- package/skills/symbiote-init/SKILL.md +104 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
async function resolveSymbol(repo, nameOrId) {
|
|
3
|
+
const byId = await repo.getSymbolById(nameOrId);
|
|
4
|
+
if (byId)
|
|
5
|
+
return byId;
|
|
6
|
+
const byName = await repo.getSymbolByName(nameOrId);
|
|
7
|
+
if (byName.length > 0)
|
|
8
|
+
return byName[0];
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
async function traceExecutionFlow(repo, entryPoint, maxDepth, includeAsync, includeErrors) {
|
|
12
|
+
const resolved = await resolveSymbol(repo, entryPoint);
|
|
13
|
+
if (!resolved)
|
|
14
|
+
return [];
|
|
15
|
+
const precomputed = await repo.getFlowsByEntryPoint(resolved.id);
|
|
16
|
+
if (precomputed.length > 0) {
|
|
17
|
+
const flow = precomputed[0];
|
|
18
|
+
const steps = [];
|
|
19
|
+
for (let i = 0; i < flow.nodeIds.length; i++) {
|
|
20
|
+
const nodeId = flow.nodeIds[i];
|
|
21
|
+
if (nodeId === resolved.id)
|
|
22
|
+
continue;
|
|
23
|
+
const sym = await repo.getSymbolById(nodeId);
|
|
24
|
+
steps.push({
|
|
25
|
+
symbolId: nodeId,
|
|
26
|
+
symbol: sym,
|
|
27
|
+
depth: i,
|
|
28
|
+
edgeType: 'precomputed_flow',
|
|
29
|
+
isAsync: flow.hasAsync,
|
|
30
|
+
confidence: 1.0,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return steps;
|
|
34
|
+
}
|
|
35
|
+
const steps = [];
|
|
36
|
+
const visited = new Set();
|
|
37
|
+
const queue = [{ id: resolved.id, depth: 0 }];
|
|
38
|
+
while (queue.length > 0) {
|
|
39
|
+
const { id, depth } = queue.shift();
|
|
40
|
+
if (visited.has(id) || depth > maxDepth)
|
|
41
|
+
continue;
|
|
42
|
+
visited.add(id);
|
|
43
|
+
const calls = await repo.getCallsFrom(id);
|
|
44
|
+
for (const call of calls) {
|
|
45
|
+
if (!includeAsync && call.isAsync)
|
|
46
|
+
continue;
|
|
47
|
+
const sym = await repo.getSymbolById(call.targetId);
|
|
48
|
+
steps.push({
|
|
49
|
+
symbolId: call.targetId,
|
|
50
|
+
symbol: sym,
|
|
51
|
+
depth: depth + 1,
|
|
52
|
+
edgeType: 'calls',
|
|
53
|
+
isAsync: call.isAsync,
|
|
54
|
+
confidence: call.confidence,
|
|
55
|
+
});
|
|
56
|
+
if (!visited.has(call.targetId) && depth + 1 < maxDepth) {
|
|
57
|
+
queue.push({ id: call.targetId, depth: depth + 1 });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const flows = await repo.getFlowsFrom(id);
|
|
61
|
+
for (const flow of flows) {
|
|
62
|
+
const sym = await repo.getSymbolById(flow.targetId);
|
|
63
|
+
steps.push({
|
|
64
|
+
symbolId: flow.targetId,
|
|
65
|
+
symbol: sym,
|
|
66
|
+
depth: depth + 1,
|
|
67
|
+
edgeType: 'flows_to',
|
|
68
|
+
isAsync: false,
|
|
69
|
+
confidence: flow.confidence,
|
|
70
|
+
});
|
|
71
|
+
if (!visited.has(flow.targetId) && depth + 1 < maxDepth) {
|
|
72
|
+
queue.push({ id: flow.targetId, depth: depth + 1 });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const reads = await repo.getReadsFrom(id);
|
|
76
|
+
for (const r of reads) {
|
|
77
|
+
const sym = await repo.getSymbolById(r.targetId);
|
|
78
|
+
steps.push({
|
|
79
|
+
symbolId: r.targetId,
|
|
80
|
+
symbol: sym,
|
|
81
|
+
depth: depth + 1,
|
|
82
|
+
edgeType: 'reads',
|
|
83
|
+
isAsync: false,
|
|
84
|
+
confidence: r.confidence,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
const writes = await repo.getWritesFrom(id);
|
|
88
|
+
for (const w of writes) {
|
|
89
|
+
const sym = await repo.getSymbolById(w.targetId);
|
|
90
|
+
steps.push({
|
|
91
|
+
symbolId: w.targetId,
|
|
92
|
+
symbol: sym,
|
|
93
|
+
depth: depth + 1,
|
|
94
|
+
edgeType: 'writes',
|
|
95
|
+
isAsync: false,
|
|
96
|
+
confidence: w.confidence,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (includeErrors) {
|
|
100
|
+
const returns = await repo.getReturnsFrom(id);
|
|
101
|
+
for (const ret of returns) {
|
|
102
|
+
const sym = await repo.getSymbolById(ret.targetId);
|
|
103
|
+
steps.push({
|
|
104
|
+
symbolId: ret.targetId,
|
|
105
|
+
symbol: sym,
|
|
106
|
+
depth: depth + 1,
|
|
107
|
+
edgeType: 'returns',
|
|
108
|
+
isAsync: false,
|
|
109
|
+
confidence: ret.confidence,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return steps;
|
|
115
|
+
}
|
|
116
|
+
async function traceDataFlow(repo, symbol, direction, maxDepth) {
|
|
117
|
+
const resolved = await resolveSymbol(repo, symbol);
|
|
118
|
+
if (!resolved)
|
|
119
|
+
return [];
|
|
120
|
+
const steps = [];
|
|
121
|
+
const visited = new Set();
|
|
122
|
+
const queue = [{ id: resolved.id, depth: 0 }];
|
|
123
|
+
while (queue.length > 0) {
|
|
124
|
+
const { id, depth } = queue.shift();
|
|
125
|
+
if (visited.has(id) || depth > maxDepth)
|
|
126
|
+
continue;
|
|
127
|
+
visited.add(id);
|
|
128
|
+
const edges = direction === 'forward' ? await repo.getFlowsFrom(id) : await repo.getFlowsTo(id);
|
|
129
|
+
for (const edge of edges) {
|
|
130
|
+
const nextId = direction === 'forward' ? edge.targetId : edge.sourceId;
|
|
131
|
+
const sym = await repo.getSymbolById(nextId);
|
|
132
|
+
steps.push({
|
|
133
|
+
symbolId: nextId,
|
|
134
|
+
symbol: sym,
|
|
135
|
+
depth: depth + 1,
|
|
136
|
+
direction,
|
|
137
|
+
transform: edge.transform,
|
|
138
|
+
confidence: edge.confidence,
|
|
139
|
+
});
|
|
140
|
+
if (!visited.has(nextId) && depth + 1 < maxDepth) {
|
|
141
|
+
queue.push({ id: nextId, depth: depth + 1 });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (direction === 'forward') {
|
|
145
|
+
const reads = await repo.getReadsFrom(id);
|
|
146
|
+
for (const r of reads) {
|
|
147
|
+
const sym = await repo.getSymbolById(r.targetId);
|
|
148
|
+
steps.push({
|
|
149
|
+
symbolId: r.targetId,
|
|
150
|
+
symbol: sym,
|
|
151
|
+
depth: depth + 1,
|
|
152
|
+
direction,
|
|
153
|
+
transform: null,
|
|
154
|
+
confidence: r.confidence,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
const writes = await repo.getWritesTo(id);
|
|
160
|
+
for (const w of writes) {
|
|
161
|
+
const sym = await repo.getSymbolById(w.sourceId);
|
|
162
|
+
steps.push({
|
|
163
|
+
symbolId: w.sourceId,
|
|
164
|
+
symbol: sym,
|
|
165
|
+
depth: depth + 1,
|
|
166
|
+
direction,
|
|
167
|
+
transform: null,
|
|
168
|
+
confidence: w.confidence,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return steps;
|
|
174
|
+
}
|
|
175
|
+
async function findImplementors(repo, interfaceName, includeIndirect) {
|
|
176
|
+
const resolved = await resolveSymbol(repo, interfaceName);
|
|
177
|
+
if (!resolved)
|
|
178
|
+
return [];
|
|
179
|
+
const directImpls = await repo.getImplementorsOf(resolved.id);
|
|
180
|
+
const results = [];
|
|
181
|
+
for (const impl of directImpls) {
|
|
182
|
+
const sym = await repo.getSymbolById(impl.sourceId);
|
|
183
|
+
results.push({
|
|
184
|
+
symbolId: impl.sourceId,
|
|
185
|
+
symbol: sym,
|
|
186
|
+
confidence: impl.confidence,
|
|
187
|
+
isIndirect: false,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
if (includeIndirect) {
|
|
191
|
+
const visited = new Set(results.map((r) => r.symbolId));
|
|
192
|
+
const queue = [...results.map((r) => r.symbolId)];
|
|
193
|
+
while (queue.length > 0) {
|
|
194
|
+
const id = queue.shift();
|
|
195
|
+
const subImpls = await repo.getImplementorsOf(id);
|
|
196
|
+
for (const sub of subImpls) {
|
|
197
|
+
if (!visited.has(sub.sourceId)) {
|
|
198
|
+
visited.add(sub.sourceId);
|
|
199
|
+
const sym = await repo.getSymbolById(sub.sourceId);
|
|
200
|
+
results.push({
|
|
201
|
+
symbolId: sub.sourceId,
|
|
202
|
+
symbol: sym,
|
|
203
|
+
confidence: sub.confidence * 0.8,
|
|
204
|
+
isIndirect: true,
|
|
205
|
+
});
|
|
206
|
+
queue.push(sub.sourceId);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return results;
|
|
212
|
+
}
|
|
213
|
+
function textResult(data) {
|
|
214
|
+
return { type: 'text', text: JSON.stringify(data, null, 2) };
|
|
215
|
+
}
|
|
216
|
+
export function registerTraceTools(server, repo) {
|
|
217
|
+
server.tool('trace_flow', 'Trace execution flow from an entry point through calls and data flows.', {
|
|
218
|
+
entryPoint: z.string().describe('Symbol ID or name to start tracing from'),
|
|
219
|
+
maxDepth: z
|
|
220
|
+
.number()
|
|
221
|
+
.optional()
|
|
222
|
+
.default(5)
|
|
223
|
+
.describe('Maximum traversal depth (default: 5)'),
|
|
224
|
+
includeAsync: z
|
|
225
|
+
.boolean()
|
|
226
|
+
.optional()
|
|
227
|
+
.default(true)
|
|
228
|
+
.describe('Include async call edges (default: true)'),
|
|
229
|
+
includeErrors: z
|
|
230
|
+
.boolean()
|
|
231
|
+
.optional()
|
|
232
|
+
.default(false)
|
|
233
|
+
.describe('Include error/return paths (default: false)'),
|
|
234
|
+
}, async (input) => ({
|
|
235
|
+
content: [
|
|
236
|
+
textResult(await traceExecutionFlow(repo, input.entryPoint, input.maxDepth, input.includeAsync, input.includeErrors)),
|
|
237
|
+
],
|
|
238
|
+
}));
|
|
239
|
+
server.tool('trace_data', 'Trace data flow forward or backward from a symbol.', {
|
|
240
|
+
symbol: z.string().describe('Symbol ID or name to trace data flow from'),
|
|
241
|
+
direction: z
|
|
242
|
+
.enum(['forward', 'backward'])
|
|
243
|
+
.default('forward')
|
|
244
|
+
.describe('Trace direction: forward or backward'),
|
|
245
|
+
maxDepth: z
|
|
246
|
+
.number()
|
|
247
|
+
.optional()
|
|
248
|
+
.default(5)
|
|
249
|
+
.describe('Maximum traversal depth (default: 5)'),
|
|
250
|
+
}, async (input) => ({
|
|
251
|
+
content: [
|
|
252
|
+
textResult(await traceDataFlow(repo, input.symbol, input.direction, input.maxDepth)),
|
|
253
|
+
],
|
|
254
|
+
}));
|
|
255
|
+
server.tool('find_implementations', 'Find all classes that implement an interface or extend a base class.', {
|
|
256
|
+
interfaceName: z.string().describe('Interface or base class name/ID'),
|
|
257
|
+
includeIndirect: z
|
|
258
|
+
.boolean()
|
|
259
|
+
.optional()
|
|
260
|
+
.default(false)
|
|
261
|
+
.describe('Include indirect implementations (default: false)'),
|
|
262
|
+
}, async (input) => ({
|
|
263
|
+
content: [
|
|
264
|
+
textResult(await findImplementors(repo, input.interfaceName, input.includeIndirect)),
|
|
265
|
+
],
|
|
266
|
+
}));
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=trace-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/trace-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqCxB,KAAK,UAAU,aAAa,CAAC,IAAsB,EAAE,QAAgB;IACjE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAExC,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC7B,IAAsB,EACtB,UAAkB,EAClB,QAAgB,EAChB,YAAqB,EACrB,aAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,MAAM,KAAK,QAAQ,CAAC,EAAE;gBAAE,SAAS;YACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC;gBACP,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,kBAAkB;gBAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,UAAU,EAAE,GAAG;aAClB,CAAC,CAAC;QACP,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAoC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/E,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QACrC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,GAAG,QAAQ;YAAE,SAAS;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO;gBAAE,SAAS;YAC5C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC;gBACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,KAAK,GAAG,CAAC;gBAChB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC9B,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC;gBACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,KAAK,GAAG,CAAC;gBAChB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,IAAI,CAAC,UAAU;aAC9B,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC;gBACP,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,KAAK,GAAG,CAAC;gBAChB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,CAAC,CAAC,UAAU;aAC3B,CAAC,CAAC;QACP,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC;gBACP,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,KAAK,GAAG,CAAC;gBAChB,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,CAAC,CAAC,UAAU;aAC3B,CAAC,CAAC;QACP,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC9C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACnD,KAAK,CAAC,IAAI,CAAC;oBACP,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,KAAK,GAAG,CAAC;oBAChB,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,KAAK;oBACd,UAAU,EAAE,GAAG,CAAC,UAAU;iBAC7B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,aAAa,CACxB,IAAsB,EACtB,MAAc,EACd,SAAiC,EACjC,QAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAoC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAE/E,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QACrC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,GAAG,QAAQ;YAAE,SAAS;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,KAAK,GACP,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEtF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACvE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC;gBACP,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,KAAK,GAAG,CAAC;gBAChB,SAAS;gBACT,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC9B,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;gBAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;QAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC;oBACP,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,KAAK,GAAG,CAAC;oBAChB,SAAS;oBACT,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,CAAC,CAAC,UAAU;iBAC3B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC;oBACP,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,KAAK,GAAG,CAAC;oBAChB,SAAS;oBACT,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,CAAC,CAAC,UAAU;iBAC3B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC3B,IAAsB,EACtB,aAAqB,EACrB,eAAwB;IAExB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,GAAG;YACX,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,KAAK;SACpB,CAAC,CAAC;IACP,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAElD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAClD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACnD,OAAO,CAAC,IAAI,CAAC;wBACT,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,MAAM,EAAE,GAAG;wBACX,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG;wBAChC,UAAU,EAAE,IAAI;qBACnB,CAAC,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7B,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,IAAsB;IACxE,MAAM,CAAC,IAAI,CACP,YAAY,EACZ,wEAAwE,EACxE;QACI,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAC1E,QAAQ,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,sCAAsC,CAAC;QACrD,YAAY,EAAE,CAAC;aACV,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CAAC,0CAA0C,CAAC;QACzD,aAAa,EAAE,CAAC;aACX,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,6CAA6C,CAAC;KAC/D,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACd,OAAO,EAAE;YACL,UAAU,CACN,MAAM,kBAAkB,CACpB,IAAI,EACJ,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,CACtB,CACJ;SACJ;KACJ,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,IAAI,CACP,YAAY,EACZ,oDAAoD,EACpD;QACI,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QACxE,SAAS,EAAE,CAAC;aACP,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;aAC7B,OAAO,CAAC,SAAS,CAAC;aAClB,QAAQ,CAAC,sCAAsC,CAAC;QACrD,QAAQ,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,sCAAsC,CAAC;KACxD,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACd,OAAO,EAAE;YACL,UAAU,CACN,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAC3E;SACJ;KACJ,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,IAAI,CACP,sBAAsB,EACtB,sEAAsE,EACtE;QACI,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACrE,eAAe,EAAE,CAAC;aACb,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,mDAAmD,CAAC;KACrE,EACD,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACd,OAAO,EAAE;YACL,UAAU,CACN,MAAM,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,eAAe,CAAC,CAC3E;SACJ;KACJ,CAAC,CACL,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare class SymbioteDB {
|
|
2
|
+
private instance;
|
|
3
|
+
private conn;
|
|
4
|
+
private constructor();
|
|
5
|
+
static create(path: string): Promise<SymbioteDB>;
|
|
6
|
+
exec(sql: string): Promise<void>;
|
|
7
|
+
run(sql: string, ...params: unknown[]): Promise<void>;
|
|
8
|
+
all<T extends Record<string, unknown> = Record<string, unknown>>(sql: string, ...params: unknown[]): Promise<T[]>;
|
|
9
|
+
close(): Promise<void>;
|
|
10
|
+
private bindParam;
|
|
11
|
+
}
|
|
12
|
+
export declare function createDatabase(path: string): Promise<SymbioteDB>;
|
|
13
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/storage/db.ts"],"names":[],"mappings":"AAKA,qBAAa,UAAU;IAEf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,IAAI;IAFhB,OAAO;WAKM,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMhD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,GAAG,EAAE,MAAM,EACX,GAAG,MAAM,EAAE,OAAO,EAAE,GACrB,OAAO,CAAC,CAAC,EAAE,CAAC;IAiBT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,OAAO,CAAC,SAAS;CAuBpB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA2HtE"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { DuckDBInstance } from '@duckdb/node-api';
|
|
2
|
+
import { createCortexSchema } from '#cortex/schema.js';
|
|
3
|
+
const SCHEMA_VERSION = 2;
|
|
4
|
+
export class SymbioteDB {
|
|
5
|
+
instance;
|
|
6
|
+
conn;
|
|
7
|
+
constructor(instance, conn) {
|
|
8
|
+
this.instance = instance;
|
|
9
|
+
this.conn = conn;
|
|
10
|
+
}
|
|
11
|
+
static async create(path) {
|
|
12
|
+
const instance = await DuckDBInstance.create(path);
|
|
13
|
+
const conn = await instance.connect();
|
|
14
|
+
return new SymbioteDB(instance, conn);
|
|
15
|
+
}
|
|
16
|
+
async exec(sql) {
|
|
17
|
+
await this.conn.run(sql);
|
|
18
|
+
}
|
|
19
|
+
async run(sql, ...params) {
|
|
20
|
+
if (params.length === 0) {
|
|
21
|
+
await this.conn.run(sql);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const prepared = await this.conn.prepare(sql);
|
|
25
|
+
try {
|
|
26
|
+
for (let i = 0; i < params.length; i++) {
|
|
27
|
+
this.bindParam(prepared, i + 1, params[i]);
|
|
28
|
+
}
|
|
29
|
+
await prepared.run();
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
prepared.destroySync();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async all(sql, ...params) {
|
|
36
|
+
if (params.length === 0) {
|
|
37
|
+
const reader = await this.conn.runAndReadAll(sql);
|
|
38
|
+
return reader.getRowObjects();
|
|
39
|
+
}
|
|
40
|
+
const prepared = await this.conn.prepare(sql);
|
|
41
|
+
try {
|
|
42
|
+
for (let i = 0; i < params.length; i++) {
|
|
43
|
+
this.bindParam(prepared, i + 1, params[i]);
|
|
44
|
+
}
|
|
45
|
+
const result = await prepared.run();
|
|
46
|
+
return (await result.getRowObjects());
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
prepared.destroySync();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async close() {
|
|
53
|
+
this.conn.closeSync();
|
|
54
|
+
this.instance.closeSync();
|
|
55
|
+
}
|
|
56
|
+
bindParam(prepared, index, value) {
|
|
57
|
+
if (value === null || value === undefined) {
|
|
58
|
+
prepared.bindNull(index);
|
|
59
|
+
}
|
|
60
|
+
else if (typeof value === 'string') {
|
|
61
|
+
prepared.bindVarchar(index, value);
|
|
62
|
+
}
|
|
63
|
+
else if (typeof value === 'number') {
|
|
64
|
+
if (Number.isInteger(value)) {
|
|
65
|
+
prepared.bindInteger(index, value);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
prepared.bindDouble(index, value);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else if (typeof value === 'bigint') {
|
|
72
|
+
prepared.bindBigInt(index, value);
|
|
73
|
+
}
|
|
74
|
+
else if (typeof value === 'boolean') {
|
|
75
|
+
prepared.bindBoolean(index, value);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
prepared.bindVarchar(index, String(value));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export async function createDatabase(path) {
|
|
83
|
+
const db = await SymbioteDB.create(path);
|
|
84
|
+
await db.exec(`
|
|
85
|
+
CREATE SEQUENCE IF NOT EXISTS health_snapshot_seq START 1;
|
|
86
|
+
|
|
87
|
+
CREATE TABLE IF NOT EXISTS nodes (
|
|
88
|
+
id VARCHAR PRIMARY KEY,
|
|
89
|
+
type VARCHAR NOT NULL,
|
|
90
|
+
name VARCHAR NOT NULL,
|
|
91
|
+
file_path VARCHAR NOT NULL,
|
|
92
|
+
line_start INTEGER NOT NULL,
|
|
93
|
+
line_end INTEGER NOT NULL,
|
|
94
|
+
metadata VARCHAR DEFAULT '{}'
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
CREATE TABLE IF NOT EXISTS edges (
|
|
98
|
+
source_id VARCHAR NOT NULL,
|
|
99
|
+
target_id VARCHAR NOT NULL,
|
|
100
|
+
type VARCHAR NOT NULL,
|
|
101
|
+
PRIMARY KEY (source_id, target_id, type)
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
CREATE TABLE IF NOT EXISTS files (
|
|
105
|
+
path VARCHAR PRIMARY KEY,
|
|
106
|
+
hash VARCHAR NOT NULL,
|
|
107
|
+
last_scanned VARCHAR NOT NULL
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
CREATE TABLE IF NOT EXISTS meta (
|
|
111
|
+
key VARCHAR PRIMARY KEY,
|
|
112
|
+
value VARCHAR NOT NULL
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
CREATE TABLE IF NOT EXISTS embeddings (
|
|
116
|
+
node_id VARCHAR PRIMARY KEY,
|
|
117
|
+
vector FLOAT[384]
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
CREATE TABLE IF NOT EXISTS health_snapshots (
|
|
121
|
+
id INTEGER PRIMARY KEY DEFAULT nextval('health_snapshot_seq'),
|
|
122
|
+
score INTEGER NOT NULL,
|
|
123
|
+
constraint_score INTEGER NOT NULL,
|
|
124
|
+
circular_dep_score INTEGER NOT NULL,
|
|
125
|
+
dead_code_score INTEGER NOT NULL,
|
|
126
|
+
coupling_score INTEGER NOT NULL,
|
|
127
|
+
constraint_violation_count INTEGER NOT NULL,
|
|
128
|
+
circular_dep_count INTEGER NOT NULL,
|
|
129
|
+
dead_code_count INTEGER NOT NULL,
|
|
130
|
+
coupling_hotspot_count INTEGER NOT NULL,
|
|
131
|
+
created_at VARCHAR NOT NULL DEFAULT current_timestamp
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
CREATE INDEX IF NOT EXISTS idx_nodes_file ON nodes(file_path);
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_nodes_type ON nodes(type);
|
|
136
|
+
CREATE INDEX IF NOT EXISTS idx_nodes_name ON nodes(name);
|
|
137
|
+
CREATE INDEX IF NOT EXISTS idx_edges_source ON edges(source_id);
|
|
138
|
+
CREATE INDEX IF NOT EXISTS idx_edges_target ON edges(target_id);
|
|
139
|
+
CREATE INDEX IF NOT EXISTS idx_edges_type ON edges(type);
|
|
140
|
+
`);
|
|
141
|
+
await db.exec(`
|
|
142
|
+
CREATE SEQUENCE IF NOT EXISTS session_obs_seq START 1;
|
|
143
|
+
|
|
144
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
145
|
+
session_id TEXT PRIMARY KEY,
|
|
146
|
+
started_at BIGINT NOT NULL,
|
|
147
|
+
ended_at BIGINT,
|
|
148
|
+
reason TEXT,
|
|
149
|
+
files_touched TEXT,
|
|
150
|
+
symbols_modified TEXT,
|
|
151
|
+
tool_counts TEXT,
|
|
152
|
+
failure_count INTEGER DEFAULT 0,
|
|
153
|
+
interaction_count INTEGER DEFAULT 0
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
CREATE TABLE IF NOT EXISTS session_observations (
|
|
157
|
+
id INTEGER DEFAULT nextval('session_obs_seq'),
|
|
158
|
+
session_id TEXT NOT NULL,
|
|
159
|
+
timestamp BIGINT NOT NULL,
|
|
160
|
+
tool_name TEXT NOT NULL,
|
|
161
|
+
event TEXT NOT NULL,
|
|
162
|
+
file_path TEXT,
|
|
163
|
+
symbols_affected TEXT,
|
|
164
|
+
metadata TEXT
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
CREATE INDEX IF NOT EXISTS idx_obs_session ON session_observations(session_id);
|
|
168
|
+
CREATE INDEX IF NOT EXISTS idx_obs_tool ON session_observations(tool_name);
|
|
169
|
+
CREATE INDEX IF NOT EXISTS idx_obs_file ON session_observations(file_path);
|
|
170
|
+
|
|
171
|
+
CREATE TABLE IF NOT EXISTS session_snapshots (
|
|
172
|
+
session_id TEXT PRIMARY KEY,
|
|
173
|
+
snapshot TEXT NOT NULL
|
|
174
|
+
);
|
|
175
|
+
`);
|
|
176
|
+
await createCortexSchema(db);
|
|
177
|
+
await db.exec('INSTALL fts; LOAD fts;');
|
|
178
|
+
const existing = await db.all("SELECT value FROM meta WHERE key = 'schema_version'");
|
|
179
|
+
if (existing.length === 0) {
|
|
180
|
+
await db.run('INSERT INTO meta (key, value) VALUES ($1, $2)', 'schema_version', String(SCHEMA_VERSION));
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
const storedVersion = parseInt(existing[0].value, 10);
|
|
184
|
+
if (storedVersion < SCHEMA_VERSION) {
|
|
185
|
+
await migrateSchema(db, storedVersion, SCHEMA_VERSION);
|
|
186
|
+
await db.run("UPDATE meta SET value = $1 WHERE key = 'schema_version'", String(SCHEMA_VERSION));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return db;
|
|
190
|
+
}
|
|
191
|
+
async function migrateSchema(db, from, _to) {
|
|
192
|
+
if (from < 2) {
|
|
193
|
+
await db.exec(`
|
|
194
|
+
CREATE SEQUENCE IF NOT EXISTS session_obs_seq START 1;
|
|
195
|
+
|
|
196
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
197
|
+
session_id TEXT PRIMARY KEY,
|
|
198
|
+
started_at BIGINT NOT NULL,
|
|
199
|
+
ended_at BIGINT,
|
|
200
|
+
reason TEXT,
|
|
201
|
+
files_touched TEXT,
|
|
202
|
+
symbols_modified TEXT,
|
|
203
|
+
tool_counts TEXT,
|
|
204
|
+
failure_count INTEGER DEFAULT 0,
|
|
205
|
+
interaction_count INTEGER DEFAULT 0
|
|
206
|
+
);
|
|
207
|
+
|
|
208
|
+
CREATE TABLE IF NOT EXISTS session_observations (
|
|
209
|
+
id INTEGER DEFAULT nextval('session_obs_seq'),
|
|
210
|
+
session_id TEXT NOT NULL,
|
|
211
|
+
timestamp BIGINT NOT NULL,
|
|
212
|
+
tool_name TEXT NOT NULL,
|
|
213
|
+
event TEXT NOT NULL,
|
|
214
|
+
file_path TEXT,
|
|
215
|
+
symbols_affected TEXT,
|
|
216
|
+
metadata TEXT
|
|
217
|
+
);
|
|
218
|
+
|
|
219
|
+
CREATE INDEX IF NOT EXISTS idx_obs_session ON session_observations(session_id);
|
|
220
|
+
CREATE INDEX IF NOT EXISTS idx_obs_tool ON session_observations(tool_name);
|
|
221
|
+
CREATE INDEX IF NOT EXISTS idx_obs_file ON session_observations(file_path);
|
|
222
|
+
|
|
223
|
+
CREATE TABLE IF NOT EXISTS session_snapshots (
|
|
224
|
+
session_id TEXT PRIMARY KEY,
|
|
225
|
+
snapshot TEXT NOT NULL
|
|
226
|
+
);
|
|
227
|
+
`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/storage/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { SymbioteDB } from './db.js';
|
|
2
|
+
export interface NodeRecord {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
name: string;
|
|
6
|
+
filePath: string;
|
|
7
|
+
lineStart: number;
|
|
8
|
+
lineEnd: number;
|
|
9
|
+
metadata?: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export interface EdgeRecord {
|
|
12
|
+
sourceId: string;
|
|
13
|
+
targetId: string;
|
|
14
|
+
type: string;
|
|
15
|
+
}
|
|
16
|
+
export interface FileRecord {
|
|
17
|
+
path: string;
|
|
18
|
+
hash: string;
|
|
19
|
+
lastScanned: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class Repository {
|
|
22
|
+
private db;
|
|
23
|
+
constructor(db: SymbioteDB);
|
|
24
|
+
upsertFile(path: string, hash: string): Promise<void>;
|
|
25
|
+
getFile(filePath: string): Promise<FileRecord | undefined>;
|
|
26
|
+
isFileChanged(path: string, currentHash: string): Promise<boolean>;
|
|
27
|
+
insertNodes(nodes: NodeRecord[]): Promise<void>;
|
|
28
|
+
clearNodesForFile(filePath: string): Promise<void>;
|
|
29
|
+
updateFileNodes(filePath: string, hash: string, nodes: NodeRecord[], edges: EdgeRecord[]): Promise<void>;
|
|
30
|
+
getNodesByFile(filePath: string): Promise<NodeRecord[]>;
|
|
31
|
+
getNodeById(id: string): Promise<NodeRecord | undefined>;
|
|
32
|
+
getNodesByIds(ids: string[]): Promise<Map<string, NodeRecord>>;
|
|
33
|
+
searchNodesByName(query: string): Promise<NodeRecord[]>;
|
|
34
|
+
insertEdges(edges: EdgeRecord[]): Promise<void>;
|
|
35
|
+
getDependencies(nodeId: string): Promise<EdgeRecord[]>;
|
|
36
|
+
getDependents(nodeId: string): Promise<EdgeRecord[]>;
|
|
37
|
+
getDependenciesBatch(nodeIds: string[]): Promise<EdgeRecord[]>;
|
|
38
|
+
getDependentsBatch(nodeIds: string[]): Promise<EdgeRecord[]>;
|
|
39
|
+
getStats(): Promise<{
|
|
40
|
+
nodes: number;
|
|
41
|
+
edges: number;
|
|
42
|
+
files: number;
|
|
43
|
+
}>;
|
|
44
|
+
getNodeCountByType(): Promise<Record<string, number>>;
|
|
45
|
+
getHubs(limit?: number): Promise<Array<{
|
|
46
|
+
node: NodeRecord;
|
|
47
|
+
edgeCount: number;
|
|
48
|
+
}>>;
|
|
49
|
+
getAllNodes(): Promise<NodeRecord[]>;
|
|
50
|
+
getAllEdges(): Promise<EdgeRecord[]>;
|
|
51
|
+
private mapNodeRow;
|
|
52
|
+
private mapEdgeRow;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/storage/repository.ts"],"names":[],"mappings":"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"}
|