kirograph 0.12.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/README.md +1171 -0
- package/dist/architecture/index.d.ts +11 -0
- package/dist/architecture/index.d.ts.map +1 -0
- package/dist/architecture/index.js +207 -0
- package/dist/architecture/index.js.map +7 -0
- package/dist/architecture/layers/csharp.d.ts +6 -0
- package/dist/architecture/layers/csharp.d.ts.map +1 -0
- package/dist/architecture/layers/csharp.js +100 -0
- package/dist/architecture/layers/csharp.js.map +7 -0
- package/dist/architecture/layers/elixir.js +116 -0
- package/dist/architecture/layers/elixir.js.map +7 -0
- package/dist/architecture/layers/go.d.ts +7 -0
- package/dist/architecture/layers/go.d.ts.map +1 -0
- package/dist/architecture/layers/go.js +117 -0
- package/dist/architecture/layers/go.js.map +7 -0
- package/dist/architecture/layers/index.d.ts +30 -0
- package/dist/architecture/layers/index.d.ts.map +1 -0
- package/dist/architecture/layers/index.js +100 -0
- package/dist/architecture/layers/index.js.map +7 -0
- package/dist/architecture/layers/java.d.ts +7 -0
- package/dist/architecture/layers/java.d.ts.map +1 -0
- package/dist/architecture/layers/java.js +119 -0
- package/dist/architecture/layers/java.js.map +7 -0
- package/dist/architecture/layers/python.d.ts +7 -0
- package/dist/architecture/layers/python.d.ts.map +1 -0
- package/dist/architecture/layers/python.js +111 -0
- package/dist/architecture/layers/python.js.map +7 -0
- package/dist/architecture/layers/ruby.d.ts +6 -0
- package/dist/architecture/layers/ruby.d.ts.map +1 -0
- package/dist/architecture/layers/ruby.js +95 -0
- package/dist/architecture/layers/ruby.js.map +7 -0
- package/dist/architecture/layers/rust.d.ts +6 -0
- package/dist/architecture/layers/rust.d.ts.map +1 -0
- package/dist/architecture/layers/rust.js +98 -0
- package/dist/architecture/layers/rust.js.map +7 -0
- package/dist/architecture/layers/types.d.ts +2 -0
- package/dist/architecture/layers/types.d.ts.map +1 -0
- package/dist/architecture/layers/types.js +17 -0
- package/dist/architecture/layers/types.js.map +7 -0
- package/dist/architecture/layers/typescript.d.ts +9 -0
- package/dist/architecture/layers/typescript.d.ts.map +1 -0
- package/dist/architecture/layers/typescript.js +143 -0
- package/dist/architecture/layers/typescript.js.map +7 -0
- package/dist/architecture/manifest/cargo.d.ts +3 -0
- package/dist/architecture/manifest/cargo.d.ts.map +1 -0
- package/dist/architecture/manifest/cargo.js +94 -0
- package/dist/architecture/manifest/cargo.js.map +7 -0
- package/dist/architecture/manifest/csproj.d.ts +3 -0
- package/dist/architecture/manifest/csproj.d.ts.map +1 -0
- package/dist/architecture/manifest/csproj.js +75 -0
- package/dist/architecture/manifest/csproj.js.map +7 -0
- package/dist/architecture/manifest/go.d.ts +3 -0
- package/dist/architecture/manifest/go.d.ts.map +1 -0
- package/dist/architecture/manifest/go.js +85 -0
- package/dist/architecture/manifest/go.js.map +7 -0
- package/dist/architecture/manifest/gradle.d.ts +3 -0
- package/dist/architecture/manifest/gradle.d.ts.map +1 -0
- package/dist/architecture/manifest/gradle.js +80 -0
- package/dist/architecture/manifest/gradle.js.map +7 -0
- package/dist/architecture/manifest/index.d.ts +12 -0
- package/dist/architecture/manifest/index.d.ts.map +1 -0
- package/dist/architecture/manifest/index.js +130 -0
- package/dist/architecture/manifest/index.js.map +7 -0
- package/dist/architecture/manifest/maven.d.ts +3 -0
- package/dist/architecture/manifest/maven.d.ts.map +1 -0
- package/dist/architecture/manifest/maven.js +76 -0
- package/dist/architecture/manifest/maven.js.map +7 -0
- package/dist/architecture/manifest/npm.d.ts +3 -0
- package/dist/architecture/manifest/npm.d.ts.map +1 -0
- package/dist/architecture/manifest/npm.js +103 -0
- package/dist/architecture/manifest/npm.js.map +7 -0
- package/dist/architecture/manifest/python.d.ts +3 -0
- package/dist/architecture/manifest/python.d.ts.map +1 -0
- package/dist/architecture/manifest/python.js +105 -0
- package/dist/architecture/manifest/python.js.map +7 -0
- package/dist/architecture/manifest/types.d.ts +2 -0
- package/dist/architecture/manifest/types.d.ts.map +1 -0
- package/dist/architecture/manifest/types.js +17 -0
- package/dist/architecture/manifest/types.js.map +7 -0
- package/dist/architecture/types.d.ts +91 -0
- package/dist/architecture/types.d.ts.map +1 -0
- package/dist/architecture/types.js +17 -0
- package/dist/architecture/types.js.map +7 -0
- package/dist/assets/logo.png +0 -0
- package/dist/banner.d.ts +6 -0
- package/dist/banner.d.ts.map +1 -0
- package/dist/banner.js +67 -0
- package/dist/banner.js.map +1 -0
- package/dist/bin/banner.d.ts +6 -0
- package/dist/bin/banner.d.ts.map +1 -0
- package/dist/bin/banner.js +88 -0
- package/dist/bin/banner.js.map +7 -0
- package/dist/bin/commands/affected.d.ts +3 -0
- package/dist/bin/commands/affected.d.ts.map +1 -0
- package/dist/bin/commands/affected.js +78 -0
- package/dist/bin/commands/affected.js.map +7 -0
- package/dist/bin/commands/architecture.d.ts +3 -0
- package/dist/bin/commands/architecture.d.ts.map +1 -0
- package/dist/bin/commands/architecture.js +125 -0
- package/dist/bin/commands/architecture.js.map +7 -0
- package/dist/bin/commands/caveman.js +136 -0
- package/dist/bin/commands/caveman.js.map +7 -0
- package/dist/bin/commands/context.d.ts +3 -0
- package/dist/bin/commands/context.d.ts.map +1 -0
- package/dist/bin/commands/context.js +81 -0
- package/dist/bin/commands/context.js.map +7 -0
- package/dist/bin/commands/coupling.d.ts +3 -0
- package/dist/bin/commands/coupling.d.ts.map +1 -0
- package/dist/bin/commands/coupling.js +164 -0
- package/dist/bin/commands/coupling.js.map +7 -0
- package/dist/bin/commands/dashboard.d.ts +3 -0
- package/dist/bin/commands/dashboard.d.ts.map +1 -0
- package/dist/bin/commands/dashboard.js +209 -0
- package/dist/bin/commands/dashboard.js.map +7 -0
- package/dist/bin/commands/dead-code.js +77 -0
- package/dist/bin/commands/dead-code.js.map +7 -0
- package/dist/bin/commands/export.js +2620 -0
- package/dist/bin/commands/export.js.map +7 -0
- package/dist/bin/commands/files.d.ts +3 -0
- package/dist/bin/commands/files.d.ts.map +1 -0
- package/dist/bin/commands/files.js +104 -0
- package/dist/bin/commands/files.js.map +7 -0
- package/dist/bin/commands/help.d.ts +4 -0
- package/dist/bin/commands/help.d.ts.map +1 -0
- package/dist/bin/commands/help.js +212 -0
- package/dist/bin/commands/help.js.map +7 -0
- package/dist/bin/commands/hotspots.js +77 -0
- package/dist/bin/commands/hotspots.js.map +7 -0
- package/dist/bin/commands/index.d.ts +3 -0
- package/dist/bin/commands/index.d.ts.map +1 -0
- package/dist/bin/commands/index.js +58 -0
- package/dist/bin/commands/index.js.map +7 -0
- package/dist/bin/commands/init.d.ts +3 -0
- package/dist/bin/commands/init.d.ts.map +1 -0
- package/dist/bin/commands/init.js +68 -0
- package/dist/bin/commands/init.js.map +7 -0
- package/dist/bin/commands/install.d.ts +3 -0
- package/dist/bin/commands/install.d.ts.map +1 -0
- package/dist/bin/commands/install.js +34 -0
- package/dist/bin/commands/install.js.map +7 -0
- package/dist/bin/commands/mark-dirty.d.ts +3 -0
- package/dist/bin/commands/mark-dirty.d.ts.map +1 -0
- package/dist/bin/commands/mark-dirty.js +51 -0
- package/dist/bin/commands/mark-dirty.js.map +7 -0
- package/dist/bin/commands/package.d.ts +3 -0
- package/dist/bin/commands/package.d.ts.map +1 -0
- package/dist/bin/commands/package.js +139 -0
- package/dist/bin/commands/package.js.map +7 -0
- package/dist/bin/commands/path.js +93 -0
- package/dist/bin/commands/path.js.map +7 -0
- package/dist/bin/commands/qdrant.d.ts +3 -0
- package/dist/bin/commands/qdrant.d.ts.map +1 -0
- package/dist/bin/commands/qdrant.js +159 -0
- package/dist/bin/commands/qdrant.js.map +1 -0
- package/dist/bin/commands/query.d.ts +3 -0
- package/dist/bin/commands/query.d.ts.map +1 -0
- package/dist/bin/commands/query.js +47 -0
- package/dist/bin/commands/query.js.map +7 -0
- package/dist/bin/commands/serve.d.ts +3 -0
- package/dist/bin/commands/serve.d.ts.map +1 -0
- package/dist/bin/commands/serve.js +59 -0
- package/dist/bin/commands/serve.js.map +7 -0
- package/dist/bin/commands/snapshot.js +122 -0
- package/dist/bin/commands/snapshot.js.map +7 -0
- package/dist/bin/commands/status.d.ts +3 -0
- package/dist/bin/commands/status.d.ts.map +1 -0
- package/dist/bin/commands/status.js +107 -0
- package/dist/bin/commands/status.js.map +7 -0
- package/dist/bin/commands/stop.d.ts +3 -0
- package/dist/bin/commands/stop.d.ts.map +1 -0
- package/dist/bin/commands/stop.js +81 -0
- package/dist/bin/commands/stop.js.map +1 -0
- package/dist/bin/commands/surprising.js +79 -0
- package/dist/bin/commands/surprising.js.map +7 -0
- package/dist/bin/commands/sync-if-dirty.d.ts +3 -0
- package/dist/bin/commands/sync-if-dirty.d.ts.map +1 -0
- package/dist/bin/commands/sync-if-dirty.js +67 -0
- package/dist/bin/commands/sync-if-dirty.js.map +7 -0
- package/dist/bin/commands/sync.d.ts +3 -0
- package/dist/bin/commands/sync.d.ts.map +1 -0
- package/dist/bin/commands/sync.js +81 -0
- package/dist/bin/commands/sync.js.map +7 -0
- package/dist/bin/commands/typesense.d.ts +3 -0
- package/dist/bin/commands/typesense.d.ts.map +1 -0
- package/dist/bin/commands/typesense.js +126 -0
- package/dist/bin/commands/typesense.js.map +1 -0
- package/dist/bin/commands/uninit.d.ts +4 -0
- package/dist/bin/commands/uninit.d.ts.map +1 -0
- package/dist/bin/commands/uninit.js +123 -0
- package/dist/bin/commands/uninit.js.map +7 -0
- package/dist/bin/commands/unlock.d.ts +3 -0
- package/dist/bin/commands/unlock.d.ts.map +1 -0
- package/dist/bin/commands/unlock.js +53 -0
- package/dist/bin/commands/unlock.js.map +7 -0
- package/dist/bin/commands/utils.d.ts +12 -0
- package/dist/bin/commands/utils.d.ts.map +1 -0
- package/dist/bin/commands/utils.js +56 -0
- package/dist/bin/commands/utils.js.map +7 -0
- package/dist/bin/installer/archive.js +230 -0
- package/dist/bin/installer/archive.js.map +7 -0
- package/dist/bin/installer/caveman.js +57 -0
- package/dist/bin/installer/caveman.js.map +7 -0
- package/dist/bin/installer/cli-agent.d.ts +15 -0
- package/dist/bin/installer/cli-agent.d.ts.map +1 -0
- package/dist/bin/installer/cli-agent.js +89 -0
- package/dist/bin/installer/cli-agent.js.map +7 -0
- package/dist/bin/installer/config-prompt.d.ts +13 -0
- package/dist/bin/installer/config-prompt.d.ts.map +1 -0
- package/dist/bin/installer/config-prompt.js +158 -0
- package/dist/bin/installer/config-prompt.js.map +7 -0
- package/dist/bin/installer/dashboard.d.ts +3 -0
- package/dist/bin/installer/dashboard.d.ts.map +1 -0
- package/dist/bin/installer/dashboard.js +149 -0
- package/dist/bin/installer/dashboard.js.map +7 -0
- package/dist/bin/installer/hooks.d.ts +5 -0
- package/dist/bin/installer/hooks.d.ts.map +1 -0
- package/dist/bin/installer/hooks.js +155 -0
- package/dist/bin/installer/hooks.js.map +7 -0
- package/dist/bin/installer/index.d.ts +11 -0
- package/dist/bin/installer/index.d.ts.map +1 -0
- package/dist/bin/installer/index.js +228 -0
- package/dist/bin/installer/index.js.map +7 -0
- package/dist/bin/installer/mcp.d.ts +5 -0
- package/dist/bin/installer/mcp.d.ts.map +1 -0
- package/dist/bin/installer/mcp.js +80 -0
- package/dist/bin/installer/mcp.js.map +7 -0
- package/dist/bin/installer/prompts.d.ts +28 -0
- package/dist/bin/installer/prompts.d.ts.map +1 -0
- package/dist/bin/installer/prompts.js +134 -0
- package/dist/bin/installer/prompts.js.map +7 -0
- package/dist/bin/installer/qdrant-dashboard.d.ts +4 -0
- package/dist/bin/installer/qdrant-dashboard.d.ts.map +1 -0
- package/dist/bin/installer/qdrant-dashboard.js +115 -0
- package/dist/bin/installer/qdrant-dashboard.js.map +7 -0
- package/dist/bin/installer/steering.d.ts +5 -0
- package/dist/bin/installer/steering.d.ts.map +1 -0
- package/dist/bin/installer/steering.js +283 -0
- package/dist/bin/installer/steering.js.map +7 -0
- package/dist/bin/kirograph.d.ts +6 -0
- package/dist/bin/kirograph.d.ts.map +1 -0
- package/dist/bin/kirograph.js +95 -0
- package/dist/bin/kirograph.js.map +7 -0
- package/dist/bin/progress.d.ts +14 -0
- package/dist/bin/progress.d.ts.map +1 -0
- package/dist/bin/progress.js +201 -0
- package/dist/bin/progress.js.map +7 -0
- package/dist/bin/ui.d.ts +11 -0
- package/dist/bin/ui.d.ts.map +1 -0
- package/dist/bin/ui.js +71 -0
- package/dist/bin/ui.js.map +7 -0
- package/dist/config.d.ts +48 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +273 -0
- package/dist/config.js.map +7 -0
- package/dist/context/index.d.ts +61 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +224 -0
- package/dist/context/index.js.map +7 -0
- package/dist/core/file-tree.d.ts +15 -0
- package/dist/core/file-tree.d.ts.map +1 -0
- package/dist/core/file-tree.js +69 -0
- package/dist/core/file-tree.js.map +7 -0
- package/dist/core/lock-manager.d.ts +20 -0
- package/dist/core/lock-manager.d.ts.map +1 -0
- package/dist/core/lock-manager.js +120 -0
- package/dist/core/lock-manager.js.map +7 -0
- package/dist/core/pipeline.d.ts +37 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +375 -0
- package/dist/core/pipeline.js.map +7 -0
- package/dist/core/snapshot.js +141 -0
- package/dist/core/snapshot.js.map +7 -0
- package/dist/db/database.d.ts +133 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/database.js +929 -0
- package/dist/db/database.js.map +7 -0
- package/dist/db/schema.sql +174 -0
- package/dist/errors.d.ts +49 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +160 -0
- package/dist/errors.js.map +7 -0
- package/dist/extraction/extractor.d.ts +29 -0
- package/dist/extraction/extractor.d.ts.map +1 -0
- package/dist/extraction/extractor.js +764 -0
- package/dist/extraction/extractor.js.map +7 -0
- package/dist/extraction/grammars.d.ts +48 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +166 -0
- package/dist/extraction/grammars.js.map +7 -0
- package/dist/extraction/languages.d.ts +9 -0
- package/dist/extraction/languages.d.ts.map +1 -0
- package/dist/extraction/languages.js +103 -0
- package/dist/extraction/languages.js.map +7 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/frameworks/csharp.d.ts +8 -0
- package/dist/frameworks/csharp.d.ts.map +1 -0
- package/dist/frameworks/csharp.js +93 -0
- package/dist/frameworks/csharp.js.map +7 -0
- package/dist/frameworks/elixir.js +142 -0
- package/dist/frameworks/elixir.js.map +7 -0
- package/dist/frameworks/express.d.ts +8 -0
- package/dist/frameworks/express.d.ts.map +1 -0
- package/dist/frameworks/express.js +143 -0
- package/dist/frameworks/express.js.map +7 -0
- package/dist/frameworks/go.d.ts +8 -0
- package/dist/frameworks/go.d.ts.map +1 -0
- package/dist/frameworks/go.js +85 -0
- package/dist/frameworks/go.js.map +7 -0
- package/dist/frameworks/index.d.ts +30 -0
- package/dist/frameworks/index.d.ts.map +1 -0
- package/dist/frameworks/index.js +243 -0
- package/dist/frameworks/index.js.map +7 -0
- package/dist/frameworks/java.d.ts +8 -0
- package/dist/frameworks/java.d.ts.map +1 -0
- package/dist/frameworks/java.js +87 -0
- package/dist/frameworks/java.js.map +7 -0
- package/dist/frameworks/laravel.d.ts +9 -0
- package/dist/frameworks/laravel.d.ts.map +1 -0
- package/dist/frameworks/laravel.js +115 -0
- package/dist/frameworks/laravel.js.map +7 -0
- package/dist/frameworks/python.d.ts +10 -0
- package/dist/frameworks/python.d.ts.map +1 -0
- package/dist/frameworks/python.js +158 -0
- package/dist/frameworks/python.js.map +7 -0
- package/dist/frameworks/react.d.ts +9 -0
- package/dist/frameworks/react.d.ts.map +1 -0
- package/dist/frameworks/react.js +230 -0
- package/dist/frameworks/react.js.map +7 -0
- package/dist/frameworks/ruby.d.ts +8 -0
- package/dist/frameworks/ruby.d.ts.map +1 -0
- package/dist/frameworks/ruby.js +136 -0
- package/dist/frameworks/ruby.js.map +7 -0
- package/dist/frameworks/rust.d.ts +8 -0
- package/dist/frameworks/rust.d.ts.map +1 -0
- package/dist/frameworks/rust.js +82 -0
- package/dist/frameworks/rust.js.map +7 -0
- package/dist/frameworks/svelte.d.ts +8 -0
- package/dist/frameworks/svelte.d.ts.map +1 -0
- package/dist/frameworks/svelte.js +174 -0
- package/dist/frameworks/svelte.js.map +7 -0
- package/dist/frameworks/swift.d.ts +10 -0
- package/dist/frameworks/swift.d.ts.map +1 -0
- package/dist/frameworks/swift.js +151 -0
- package/dist/frameworks/swift.js.map +7 -0
- package/dist/frameworks/types.d.ts +37 -0
- package/dist/frameworks/types.d.ts.map +1 -0
- package/dist/frameworks/types.js +17 -0
- package/dist/frameworks/types.js.map +7 -0
- package/dist/graph/queries.d.ts +53 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +224 -0
- package/dist/graph/queries.js.map +7 -0
- package/dist/graph/traversal.d.ts +35 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +148 -0
- package/dist/graph/traversal.js.map +7 -0
- package/dist/index.d.ts +102 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +303 -0
- package/dist/index.js.map +7 -0
- package/dist/installer/index.d.ts +10 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +526 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/mcp/server.d.ts +16 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +116 -0
- package/dist/mcp/server.js.map +7 -0
- package/dist/mcp/tools.d.ts +37 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +779 -0
- package/dist/mcp/tools.js.map +7 -0
- package/dist/mcp/transport.d.ts +29 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +70 -0
- package/dist/mcp/transport.js.map +7 -0
- package/dist/resolution/index.d.ts +56 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +384 -0
- package/dist/resolution/index.js.map +7 -0
- package/dist/resolution/name-matcher.d.ts +25 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +60 -0
- package/dist/resolution/name-matcher.js.map +7 -0
- package/dist/scripts/postinstall.js +64 -0
- package/dist/search/query-utils.d.ts +21 -0
- package/dist/search/query-utils.d.ts.map +1 -0
- package/dist/search/query-utils.js +219 -0
- package/dist/search/query-utils.js.map +7 -0
- package/dist/search/searcher.d.ts +15 -0
- package/dist/search/searcher.d.ts.map +1 -0
- package/dist/search/searcher.js +49 -0
- package/dist/search/searcher.js.map +7 -0
- package/dist/sync/index.d.ts +33 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +200 -0
- package/dist/sync/index.js.map +7 -0
- package/dist/types.d.ts +131 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +37 -0
- package/dist/types.js.map +7 -0
- package/dist/utils.d.ts +52 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +254 -0
- package/dist/utils.js.map +7 -0
- package/dist/vectors/index.d.ts +71 -0
- package/dist/vectors/index.d.ts.map +1 -0
- package/dist/vectors/index.js +480 -0
- package/dist/vectors/index.js.map +7 -0
- package/dist/vectors/lancedb-index.d.ts +50 -0
- package/dist/vectors/lancedb-index.d.ts.map +1 -0
- package/dist/vectors/lancedb-index.js +153 -0
- package/dist/vectors/lancedb-index.js.map +7 -0
- package/dist/vectors/orama-index.d.ts +54 -0
- package/dist/vectors/orama-index.d.ts.map +1 -0
- package/dist/vectors/orama-index.js +213 -0
- package/dist/vectors/orama-index.js.map +7 -0
- package/dist/vectors/pglite-index.d.ts +53 -0
- package/dist/vectors/pglite-index.d.ts.map +1 -0
- package/dist/vectors/pglite-index.js +194 -0
- package/dist/vectors/pglite-index.js.map +7 -0
- package/dist/vectors/qdrant-index.d.ts +70 -0
- package/dist/vectors/qdrant-index.d.ts.map +1 -0
- package/dist/vectors/qdrant-index.js +364 -0
- package/dist/vectors/qdrant-index.js.map +7 -0
- package/dist/vectors/typesense-index.d.ts +75 -0
- package/dist/vectors/typesense-index.d.ts.map +1 -0
- package/dist/vectors/typesense-index.js +453 -0
- package/dist/vectors/typesense-index.js.map +7 -0
- package/dist/vectors/vec-index.d.ts +52 -0
- package/dist/vectors/vec-index.d.ts.map +1 -0
- package/dist/vectors/vec-index.js +198 -0
- package/dist/vectors/vec-index.js.map +7 -0
- package/package.json +67 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KiroGraph Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
export type NodeKind = 'file' | 'module' | 'class' | 'struct' | 'interface' | 'trait' | 'protocol' | 'function' | 'method' | 'property' | 'field' | 'variable' | 'constant' | 'enum' | 'enum_member' | 'type_alias' | 'namespace' | 'parameter' | 'import' | 'export' | 'route' | 'component';
|
|
5
|
+
export type EdgeKind = 'contains' | 'calls' | 'imports' | 'exports' | 'extends' | 'implements' | 'references' | 'type_of' | 'returns' | 'instantiates' | 'overrides' | 'decorates';
|
|
6
|
+
export type Language = 'typescript' | 'javascript' | 'tsx' | 'jsx' | 'python' | 'go' | 'rust' | 'java' | 'c' | 'cpp' | 'csharp' | 'php' | 'ruby' | 'swift' | 'kotlin' | 'dart' | 'svelte' | 'pascal' | 'liquid' | 'unknown';
|
|
7
|
+
export interface Node {
|
|
8
|
+
id: string;
|
|
9
|
+
kind: NodeKind;
|
|
10
|
+
name: string;
|
|
11
|
+
qualifiedName: string;
|
|
12
|
+
filePath: string;
|
|
13
|
+
language: Language;
|
|
14
|
+
startLine: number;
|
|
15
|
+
endLine: number;
|
|
16
|
+
startColumn: number;
|
|
17
|
+
endColumn: number;
|
|
18
|
+
docstring?: string;
|
|
19
|
+
signature?: string;
|
|
20
|
+
visibility?: 'public' | 'private' | 'protected' | 'internal';
|
|
21
|
+
isExported?: boolean;
|
|
22
|
+
isAsync?: boolean;
|
|
23
|
+
isStatic?: boolean;
|
|
24
|
+
isAbstract?: boolean;
|
|
25
|
+
decorators?: string[];
|
|
26
|
+
typeParameters?: string[];
|
|
27
|
+
updatedAt: number;
|
|
28
|
+
}
|
|
29
|
+
export interface Edge {
|
|
30
|
+
source: string;
|
|
31
|
+
target: string;
|
|
32
|
+
kind: EdgeKind;
|
|
33
|
+
metadata?: Record<string, unknown>;
|
|
34
|
+
line?: number;
|
|
35
|
+
column?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface FileRecord {
|
|
38
|
+
path: string;
|
|
39
|
+
contentHash: string;
|
|
40
|
+
language: Language;
|
|
41
|
+
fileSize: number;
|
|
42
|
+
symbolCount: number;
|
|
43
|
+
indexedAt: number;
|
|
44
|
+
}
|
|
45
|
+
export interface SearchResult {
|
|
46
|
+
node: Node;
|
|
47
|
+
score: number;
|
|
48
|
+
matchType: 'exact' | 'prefix' | 'fuzzy' | 'semantic';
|
|
49
|
+
}
|
|
50
|
+
export interface SearchOptions {
|
|
51
|
+
kinds?: NodeKind[];
|
|
52
|
+
languages?: Language[];
|
|
53
|
+
limit?: number;
|
|
54
|
+
minScore?: number;
|
|
55
|
+
}
|
|
56
|
+
export interface Subgraph {
|
|
57
|
+
nodes: Node[];
|
|
58
|
+
edges: Edge[];
|
|
59
|
+
entryPoints: string[];
|
|
60
|
+
}
|
|
61
|
+
export interface NodeContext {
|
|
62
|
+
node: Node;
|
|
63
|
+
ancestors: Node[];
|
|
64
|
+
children: Node[];
|
|
65
|
+
callers: Node[];
|
|
66
|
+
callees: Node[];
|
|
67
|
+
}
|
|
68
|
+
export interface NodeMetrics {
|
|
69
|
+
incomingEdgeCount: number;
|
|
70
|
+
outgoingEdgeCount: number;
|
|
71
|
+
callCount: number;
|
|
72
|
+
callerCount: number;
|
|
73
|
+
childCount: number;
|
|
74
|
+
}
|
|
75
|
+
export interface GraphStats {
|
|
76
|
+
files: number;
|
|
77
|
+
nodes: number;
|
|
78
|
+
edges: number;
|
|
79
|
+
nodesByKind: Record<string, number>;
|
|
80
|
+
filesByLanguage: Record<string, number>;
|
|
81
|
+
dbSizeBytes: number;
|
|
82
|
+
embeddingCount: number;
|
|
83
|
+
embeddableNodeCount: number;
|
|
84
|
+
embeddingsEnabled: boolean;
|
|
85
|
+
embeddingModel: string;
|
|
86
|
+
useVecIndex: boolean;
|
|
87
|
+
semanticEngine: 'cosine' | 'sqlite-vec' | 'orama' | 'pglite' | 'lancedb' | 'qdrant' | 'typesense';
|
|
88
|
+
vecIndexCount: number;
|
|
89
|
+
engineFallback: string | null;
|
|
90
|
+
frameworks: string[];
|
|
91
|
+
architectureEnabled: boolean;
|
|
92
|
+
architectureStats?: {
|
|
93
|
+
packages: number;
|
|
94
|
+
layers: number;
|
|
95
|
+
packageDeps: number;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export interface TaskContext {
|
|
99
|
+
task: string;
|
|
100
|
+
entryPoints: Node[];
|
|
101
|
+
relatedNodes: Node[];
|
|
102
|
+
edges: Edge[];
|
|
103
|
+
codeSnippets: Map<string, string>;
|
|
104
|
+
summary: string;
|
|
105
|
+
}
|
|
106
|
+
export interface IndexProgress {
|
|
107
|
+
phase: 'scanning' | 'parsing' | 'storing' | 'resolving' | 'detecting frameworks' | 'embeddings' | 'architecture';
|
|
108
|
+
current: number;
|
|
109
|
+
total: number;
|
|
110
|
+
currentFile?: string;
|
|
111
|
+
meta?: Record<string, unknown>;
|
|
112
|
+
}
|
|
113
|
+
export interface IndexResult {
|
|
114
|
+
success: boolean;
|
|
115
|
+
filesIndexed: number;
|
|
116
|
+
nodesCreated: number;
|
|
117
|
+
edgesCreated: number;
|
|
118
|
+
errors: string[];
|
|
119
|
+
duration: number;
|
|
120
|
+
}
|
|
121
|
+
export interface SyncResult {
|
|
122
|
+
added: string[];
|
|
123
|
+
modified: string[];
|
|
124
|
+
removed: string[];
|
|
125
|
+
nodesCreated: number;
|
|
126
|
+
nodesRemoved: number;
|
|
127
|
+
errors: string[];
|
|
128
|
+
duration: number;
|
|
129
|
+
}
|
|
130
|
+
export { KiroGraphError, FileError, ParseError, DatabaseError, ConfigError, } from './errors';
|
|
131
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAChB,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,GAC3E,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GACtE,MAAM,GAAG,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,GACjE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAChB,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GACvE,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,WAAW,CAAC;AAEtF,MAAM,MAAM,QAAQ,GAChB,YAAY,GAAG,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GACtE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GACrE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;CACtD;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,EAAE,CAAC;IAClB,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB,OAAO,EAAE,IAAI,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;IAClG,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/E;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,YAAY,EAAE,IAAI,EAAE,CAAC;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,sBAAsB,GAAG,YAAY,GAAG,cAAc,CAAC;IACjH,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,UAAU,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var types_exports = {};
|
|
20
|
+
__export(types_exports, {
|
|
21
|
+
ConfigError: () => import_errors.ConfigError,
|
|
22
|
+
DatabaseError: () => import_errors.DatabaseError,
|
|
23
|
+
FileError: () => import_errors.FileError,
|
|
24
|
+
KiroGraphError: () => import_errors.KiroGraphError,
|
|
25
|
+
ParseError: () => import_errors.ParseError
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(types_exports);
|
|
28
|
+
var import_errors = require("./errors");
|
|
29
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
30
|
+
0 && (module.exports = {
|
|
31
|
+
ConfigError,
|
|
32
|
+
DatabaseError,
|
|
33
|
+
FileError,
|
|
34
|
+
KiroGraphError,
|
|
35
|
+
ParseError
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/types.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * KiroGraph Type Definitions\n */\n\nexport type NodeKind =\n | 'file' | 'module' | 'class' | 'struct' | 'interface' | 'trait' | 'protocol'\n | 'function' | 'method' | 'property' | 'field' | 'variable' | 'constant'\n | 'enum' | 'enum_member' | 'type_alias' | 'namespace' | 'parameter'\n | 'import' | 'export' | 'route' | 'component';\n\nexport type EdgeKind =\n | 'contains' | 'calls' | 'imports' | 'exports' | 'extends' | 'implements'\n | 'references' | 'type_of' | 'returns' | 'instantiates' | 'overrides' | 'decorates';\n\nexport type Language =\n | 'typescript' | 'javascript' | 'tsx' | 'jsx' | 'python' | 'go' | 'rust'\n | 'java' | 'c' | 'cpp' | 'csharp' | 'php' | 'ruby' | 'swift' | 'kotlin'\n | 'dart' | 'svelte' | 'pascal' | 'liquid' | 'elixir' | 'unknown';\n\nexport interface Node {\n id: string;\n kind: NodeKind;\n name: string;\n qualifiedName: string;\n filePath: string;\n language: Language;\n startLine: number;\n endLine: number;\n startColumn: number;\n endColumn: number;\n docstring?: string;\n signature?: string;\n visibility?: 'public' | 'private' | 'protected' | 'internal';\n isExported?: boolean;\n isAsync?: boolean;\n isStatic?: boolean;\n isAbstract?: boolean;\n decorators?: string[];\n typeParameters?: string[];\n updatedAt: number;\n}\n\nexport interface Edge {\n source: string;\n target: string;\n kind: EdgeKind;\n metadata?: Record<string, unknown>;\n line?: number;\n column?: number;\n}\n\nexport interface FileRecord {\n path: string;\n contentHash: string;\n language: Language;\n fileSize: number;\n symbolCount: number;\n indexedAt: number;\n}\n\nexport interface SearchResult {\n node: Node;\n score: number;\n matchType: 'exact' | 'prefix' | 'fuzzy' | 'semantic';\n}\n\nexport interface SearchOptions {\n kinds?: NodeKind[];\n languages?: Language[];\n limit?: number;\n minScore?: number;\n}\n\nexport interface Subgraph {\n nodes: Node[];\n edges: Edge[];\n entryPoints: string[];\n}\n\nexport interface NodeContext {\n node: Node;\n ancestors: Node[];\n children: Node[];\n callers: Node[];\n callees: Node[];\n}\n\nexport interface NodeMetrics {\n incomingEdgeCount: number;\n outgoingEdgeCount: number;\n callCount: number;\n callerCount: number;\n childCount: number;\n}\n\nexport interface GraphStats {\n files: number;\n nodes: number;\n edges: number;\n nodesByKind: Record<string, number>;\n filesByLanguage: Record<string, number>;\n dbSizeBytes: number;\n embeddingCount: number;\n embeddableNodeCount: number;\n embeddingsEnabled: boolean;\n embeddingModel: string;\n useVecIndex: boolean;\n semanticEngine: 'cosine' | 'sqlite-vec' | 'orama' | 'pglite' | 'lancedb' | 'qdrant' | 'typesense';\n vecIndexCount: number;\n engineFallback: string | null;\n frameworks: string[];\n architectureEnabled: boolean;\n architectureStats?: { packages: number; layers: number; packageDeps: number };\n}\n\nexport interface TaskContext {\n task: string;\n entryPoints: Node[];\n relatedNodes: Node[];\n edges: Edge[];\n codeSnippets: Map<string, string>;\n summary: string;\n}\n\nexport interface IndexProgress {\n phase: 'scanning' | 'parsing' | 'storing' | 'resolving' | 'detecting frameworks' | 'embeddings' | 'architecture' | 'retrying';\n current: number;\n total: number;\n currentFile?: string;\n meta?: Record<string, unknown>;\n}\n\nexport interface IndexResult {\n success: boolean;\n filesIndexed: number;\n nodesCreated: number;\n edgesCreated: number;\n errors: string[];\n duration: number;\n}\n\nexport interface SyncResult {\n added: string[];\n modified: string[];\n removed: string[];\n nodesCreated: number;\n nodesUpdated: number;\n nodesRemoved: number;\n edgesCreated: number;\n edgesRemoved: number;\n filesScanned: number;\n errors: string[];\n duration: number;\n}\n\n// \u2500\u2500 Error Classes (re-exported from src/errors.ts for backward compatibility) \u2500\u2500\n\nexport {\n KiroGraphError,\n FileError,\n ParseError,\n DatabaseError,\n ConfigError,\n} from './errors';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6JA,oBAMO;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KiroGraph Utility Module
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities: concurrency, batching, rate limiting, memory monitoring,
|
|
5
|
+
* security path validation, and misc helpers.
|
|
6
|
+
*/
|
|
7
|
+
export declare class Mutex {
|
|
8
|
+
private queue;
|
|
9
|
+
private _locked;
|
|
10
|
+
acquire(): Promise<() => void>;
|
|
11
|
+
withLock<T>(fn: () => Promise<T>): Promise<T>;
|
|
12
|
+
isLocked(): boolean;
|
|
13
|
+
private _release;
|
|
14
|
+
}
|
|
15
|
+
export declare class FileLock {
|
|
16
|
+
private readonly lockPath;
|
|
17
|
+
static readonly STALE_TIMEOUT_MS = 120000;
|
|
18
|
+
constructor(lockPath: string);
|
|
19
|
+
acquire(): Promise<() => void>;
|
|
20
|
+
withLock<T>(fn: () => T): T;
|
|
21
|
+
withLockAsync<T>(fn: () => Promise<T>): Promise<T>;
|
|
22
|
+
private _release;
|
|
23
|
+
}
|
|
24
|
+
export declare function processInBatches<T, R>(items: T[], batchSize: number, fn: (batch: T[]) => Promise<R[]>): Promise<R[]>;
|
|
25
|
+
export declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, delayMs: number): T;
|
|
26
|
+
export declare function throttle<T extends (...args: unknown[]) => unknown>(fn: T, intervalMs: number): T;
|
|
27
|
+
export declare class MemoryMonitor {
|
|
28
|
+
private readonly thresholdBytes;
|
|
29
|
+
private readonly intervalMs;
|
|
30
|
+
private timer;
|
|
31
|
+
private peakBytes;
|
|
32
|
+
constructor(opts: {
|
|
33
|
+
thresholdMb: number;
|
|
34
|
+
intervalMs: number;
|
|
35
|
+
});
|
|
36
|
+
start(): void;
|
|
37
|
+
stop(): void;
|
|
38
|
+
/** Returns peak heap usage in bytes. */
|
|
39
|
+
getPeakUsage(): number;
|
|
40
|
+
}
|
|
41
|
+
/** Resolve and validate that filePath is within root. Returns null if not. */
|
|
42
|
+
export declare function validatePathWithinRoot(filePath: string, root: string): string | null;
|
|
43
|
+
/** Throw if the given path is a sensitive system directory. */
|
|
44
|
+
export declare function validateProjectPath(projectRoot: string): void;
|
|
45
|
+
/** Returns true if filePath is within root (string-based, no symlink resolution). */
|
|
46
|
+
export declare function isPathWithinRoot(filePath: string, root: string): boolean;
|
|
47
|
+
/** Returns true if filePath is within root, resolving symlinks (symlink-safe). */
|
|
48
|
+
export declare function isPathWithinRootReal(filePath: string, root: string): boolean;
|
|
49
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
50
|
+
export declare function normalizePath(p: string): string;
|
|
51
|
+
export declare function safeJsonParse<T>(json: string, fallback: T): T;
|
|
52
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,OAAO,CAAS;IAElB,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;IAc9B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASnD,QAAQ,IAAI,OAAO;IAInB,OAAO,CAAC,QAAQ;CAKjB;AAID,qBAAa,QAAQ;IAGP,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,UAAW;gBAEd,QAAQ,EAAE,MAAM;IAEvC,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;IA4BpC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAWrB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASxD,OAAO,CAAC,QAAQ;CAOjB;AAID,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EACzC,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC,CAQd;AAID,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAS7F;AAID,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,CAShG;AAID,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,SAAS,CAAK;gBAEV,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAK7D,KAAK,IAAI,IAAI;IAab,IAAI,IAAI,IAAI;IAOZ,wCAAwC;IACxC,YAAY,IAAI,MAAM;CAGvB;AAID,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKpF;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAM7D;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAIxE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ5E;AAID,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAM7D"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var utils_exports = {};
|
|
30
|
+
__export(utils_exports, {
|
|
31
|
+
FileLock: () => FileLock,
|
|
32
|
+
MemoryMonitor: () => MemoryMonitor,
|
|
33
|
+
Mutex: () => Mutex,
|
|
34
|
+
clamp: () => clamp,
|
|
35
|
+
debounce: () => debounce,
|
|
36
|
+
isPathWithinRoot: () => isPathWithinRoot,
|
|
37
|
+
isPathWithinRootReal: () => isPathWithinRootReal,
|
|
38
|
+
normalizePath: () => normalizePath,
|
|
39
|
+
processInBatches: () => processInBatches,
|
|
40
|
+
safeJsonParse: () => safeJsonParse,
|
|
41
|
+
throttle: () => throttle,
|
|
42
|
+
validatePathWithinRoot: () => validatePathWithinRoot,
|
|
43
|
+
validateProjectPath: () => validateProjectPath
|
|
44
|
+
});
|
|
45
|
+
module.exports = __toCommonJS(utils_exports);
|
|
46
|
+
var path = __toESM(require("path"));
|
|
47
|
+
var fs = __toESM(require("fs"));
|
|
48
|
+
var import_errors = require("./errors");
|
|
49
|
+
class Mutex {
|
|
50
|
+
constructor() {
|
|
51
|
+
this.queue = [];
|
|
52
|
+
this._locked = false;
|
|
53
|
+
}
|
|
54
|
+
async acquire() {
|
|
55
|
+
return new Promise((resolve) => {
|
|
56
|
+
const tryAcquire = () => {
|
|
57
|
+
if (!this._locked) {
|
|
58
|
+
this._locked = true;
|
|
59
|
+
resolve(() => this._release());
|
|
60
|
+
} else {
|
|
61
|
+
this.queue.push(tryAcquire);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
tryAcquire();
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async withLock(fn) {
|
|
68
|
+
const release = await this.acquire();
|
|
69
|
+
try {
|
|
70
|
+
return await fn();
|
|
71
|
+
} finally {
|
|
72
|
+
release();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
isLocked() {
|
|
76
|
+
return this._locked;
|
|
77
|
+
}
|
|
78
|
+
_release() {
|
|
79
|
+
this._locked = false;
|
|
80
|
+
const next = this.queue.shift();
|
|
81
|
+
if (next) next();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
class FileLock {
|
|
85
|
+
// 2 minutes
|
|
86
|
+
constructor(lockPath) {
|
|
87
|
+
this.lockPath = lockPath;
|
|
88
|
+
}
|
|
89
|
+
static {
|
|
90
|
+
this.STALE_TIMEOUT_MS = 12e4;
|
|
91
|
+
}
|
|
92
|
+
async acquire() {
|
|
93
|
+
const deadline = Date.now() + FileLock.STALE_TIMEOUT_MS;
|
|
94
|
+
while (Date.now() < deadline) {
|
|
95
|
+
try {
|
|
96
|
+
const fd = fs.openSync(this.lockPath, "wx");
|
|
97
|
+
fs.writeSync(fd, String(process.pid));
|
|
98
|
+
fs.closeSync(fd);
|
|
99
|
+
return () => this._release();
|
|
100
|
+
} catch {
|
|
101
|
+
try {
|
|
102
|
+
const stat = fs.statSync(this.lockPath);
|
|
103
|
+
if (Date.now() - stat.mtimeMs > FileLock.STALE_TIMEOUT_MS) {
|
|
104
|
+
fs.unlinkSync(this.lockPath);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
} catch {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
await new Promise((r) => setTimeout(r, 50));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
throw new Error(`FileLock: timed out waiting for lock at ${this.lockPath}`);
|
|
114
|
+
}
|
|
115
|
+
withLock(fn) {
|
|
116
|
+
const fd = fs.openSync(this.lockPath, "wx");
|
|
117
|
+
fs.writeSync(fd, String(process.pid));
|
|
118
|
+
fs.closeSync(fd);
|
|
119
|
+
try {
|
|
120
|
+
return fn();
|
|
121
|
+
} finally {
|
|
122
|
+
this._release();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async withLockAsync(fn) {
|
|
126
|
+
const release = await this.acquire();
|
|
127
|
+
try {
|
|
128
|
+
return await fn();
|
|
129
|
+
} finally {
|
|
130
|
+
release();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
_release() {
|
|
134
|
+
try {
|
|
135
|
+
fs.unlinkSync(this.lockPath);
|
|
136
|
+
} catch {
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
async function processInBatches(items, batchSize, fn) {
|
|
141
|
+
const results = [];
|
|
142
|
+
for (let i = 0; i < items.length; i += batchSize) {
|
|
143
|
+
const batch = items.slice(i, i + batchSize);
|
|
144
|
+
const batchResults = await fn(batch);
|
|
145
|
+
results.push(...batchResults);
|
|
146
|
+
}
|
|
147
|
+
return results;
|
|
148
|
+
}
|
|
149
|
+
function debounce(fn, delayMs) {
|
|
150
|
+
let timer = null;
|
|
151
|
+
return function(...args) {
|
|
152
|
+
if (timer !== null) clearTimeout(timer);
|
|
153
|
+
timer = setTimeout(() => {
|
|
154
|
+
timer = null;
|
|
155
|
+
fn.apply(this, args);
|
|
156
|
+
}, delayMs);
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function throttle(fn, intervalMs) {
|
|
160
|
+
let lastCall = 0;
|
|
161
|
+
return function(...args) {
|
|
162
|
+
const now = Date.now();
|
|
163
|
+
if (now - lastCall >= intervalMs) {
|
|
164
|
+
lastCall = now;
|
|
165
|
+
return fn.apply(this, args);
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
class MemoryMonitor {
|
|
170
|
+
constructor(opts) {
|
|
171
|
+
this.timer = null;
|
|
172
|
+
this.peakBytes = 0;
|
|
173
|
+
this.thresholdBytes = opts.thresholdMb * 1024 * 1024;
|
|
174
|
+
this.intervalMs = opts.intervalMs;
|
|
175
|
+
}
|
|
176
|
+
start() {
|
|
177
|
+
if (this.timer !== null) return;
|
|
178
|
+
this.timer = setInterval(() => {
|
|
179
|
+
const used = process.memoryUsage().heapUsed;
|
|
180
|
+
if (used > this.peakBytes) this.peakBytes = used;
|
|
181
|
+
if (used > this.thresholdBytes) {
|
|
182
|
+
(0, import_errors.logWarn)(`MemoryMonitor: heap usage ${(used / 1024 / 1024).toFixed(1)} MB exceeds threshold ${(this.thresholdBytes / 1024 / 1024).toFixed(1)} MB`);
|
|
183
|
+
}
|
|
184
|
+
}, this.intervalMs);
|
|
185
|
+
if (this.timer.unref) this.timer.unref();
|
|
186
|
+
}
|
|
187
|
+
stop() {
|
|
188
|
+
if (this.timer !== null) {
|
|
189
|
+
clearInterval(this.timer);
|
|
190
|
+
this.timer = null;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/** Returns peak heap usage in bytes. */
|
|
194
|
+
getPeakUsage() {
|
|
195
|
+
return this.peakBytes;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
function validatePathWithinRoot(filePath, root) {
|
|
199
|
+
const resolved = path.resolve(filePath);
|
|
200
|
+
const resolvedRoot = path.resolve(root);
|
|
201
|
+
if (!resolved.startsWith(resolvedRoot + path.sep) && resolved !== resolvedRoot) return null;
|
|
202
|
+
return resolved;
|
|
203
|
+
}
|
|
204
|
+
function validateProjectPath(projectRoot) {
|
|
205
|
+
const SENSITIVE_DIRS = /* @__PURE__ */ new Set(["/", "/etc", "/usr", "/var", "/bin", "/sbin", "/lib", "/lib64", "/proc", "/sys", "/dev", "/boot"]);
|
|
206
|
+
const resolved = path.resolve(projectRoot);
|
|
207
|
+
if (SENSITIVE_DIRS.has(resolved)) {
|
|
208
|
+
throw new Error(`Refusing to initialize KiroGraph in sensitive directory: ${resolved}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function isPathWithinRoot(filePath, root) {
|
|
212
|
+
const resolved = path.resolve(filePath);
|
|
213
|
+
const resolvedRoot = path.resolve(root);
|
|
214
|
+
return resolved === resolvedRoot || resolved.startsWith(resolvedRoot + path.sep);
|
|
215
|
+
}
|
|
216
|
+
function isPathWithinRootReal(filePath, root) {
|
|
217
|
+
try {
|
|
218
|
+
const real = fs.realpathSync(filePath);
|
|
219
|
+
const realRoot = fs.realpathSync(root);
|
|
220
|
+
return real === realRoot || real.startsWith(realRoot + path.sep);
|
|
221
|
+
} catch {
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function clamp(value, min, max) {
|
|
226
|
+
return Math.min(Math.max(value, min), max);
|
|
227
|
+
}
|
|
228
|
+
function normalizePath(p) {
|
|
229
|
+
return p.split(path.sep).join("/");
|
|
230
|
+
}
|
|
231
|
+
function safeJsonParse(json, fallback) {
|
|
232
|
+
try {
|
|
233
|
+
return JSON.parse(json);
|
|
234
|
+
} catch {
|
|
235
|
+
return fallback;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
239
|
+
0 && (module.exports = {
|
|
240
|
+
FileLock,
|
|
241
|
+
MemoryMonitor,
|
|
242
|
+
Mutex,
|
|
243
|
+
clamp,
|
|
244
|
+
debounce,
|
|
245
|
+
isPathWithinRoot,
|
|
246
|
+
isPathWithinRootReal,
|
|
247
|
+
normalizePath,
|
|
248
|
+
processInBatches,
|
|
249
|
+
safeJsonParse,
|
|
250
|
+
throttle,
|
|
251
|
+
validatePathWithinRoot,
|
|
252
|
+
validateProjectPath
|
|
253
|
+
});
|
|
254
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * KiroGraph Utility Module\n *\n * Shared utilities: concurrency, batching, rate limiting, memory monitoring,\n * security path validation, and misc helpers.\n */\n\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport { logWarn } from './errors';\n\n// \u2500\u2500 Mutex \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport class Mutex {\n private queue: Array<() => void> = [];\n private _locked = false;\n\n async acquire(): Promise<() => void> {\n return new Promise(resolve => {\n const tryAcquire = () => {\n if (!this._locked) {\n this._locked = true;\n resolve(() => this._release());\n } else {\n this.queue.push(tryAcquire);\n }\n };\n tryAcquire();\n });\n }\n\n async withLock<T>(fn: () => Promise<T>): Promise<T> {\n const release = await this.acquire();\n try {\n return await fn();\n } finally {\n release();\n }\n }\n\n isLocked(): boolean {\n return this._locked;\n }\n\n private _release(): void {\n this._locked = false;\n const next = this.queue.shift();\n if (next) next();\n }\n}\n\n// \u2500\u2500 FileLock \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport class FileLock {\n static readonly STALE_TIMEOUT_MS = 120_000; // 2 minutes\n\n constructor(private readonly lockPath: string) {}\n\n async acquire(): Promise<() => void> {\n const deadline = Date.now() + FileLock.STALE_TIMEOUT_MS;\n while (Date.now() < deadline) {\n try {\n // Atomic create: fails if file already exists\n const fd = fs.openSync(this.lockPath, 'wx');\n fs.writeSync(fd, String(process.pid));\n fs.closeSync(fd);\n return () => this._release();\n } catch {\n // Check for stale lock\n try {\n const stat = fs.statSync(this.lockPath);\n if (Date.now() - stat.mtimeMs > FileLock.STALE_TIMEOUT_MS) {\n fs.unlinkSync(this.lockPath);\n continue;\n }\n } catch {\n // Lock file disappeared between attempts \u2014 retry\n continue;\n }\n // Wait a bit before retrying\n await new Promise(r => setTimeout(r, 50));\n }\n }\n throw new Error(`FileLock: timed out waiting for lock at ${this.lockPath}`);\n }\n\n withLock<T>(fn: () => T): T {\n const fd = fs.openSync(this.lockPath, 'wx');\n fs.writeSync(fd, String(process.pid));\n fs.closeSync(fd);\n try {\n return fn();\n } finally {\n this._release();\n }\n }\n\n async withLockAsync<T>(fn: () => Promise<T>): Promise<T> {\n const release = await this.acquire();\n try {\n return await fn();\n } finally {\n release();\n }\n }\n\n private _release(): void {\n try {\n fs.unlinkSync(this.lockPath);\n } catch {\n // Already removed \u2014 ignore\n }\n }\n}\n\n// \u2500\u2500 processInBatches \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport async function processInBatches<T, R>(\n items: T[],\n batchSize: number,\n fn: (batch: T[]) => Promise<R[]>\n): Promise<R[]> {\n const results: R[] = [];\n for (let i = 0; i < items.length; i += batchSize) {\n const batch = items.slice(i, i + batchSize);\n const batchResults = await fn(batch);\n results.push(...batchResults);\n }\n return results;\n}\n\n// \u2500\u2500 debounce \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport function debounce<T extends (...args: unknown[]) => unknown>(fn: T, delayMs: number): T {\n let timer: ReturnType<typeof setTimeout> | null = null;\n return function (this: unknown, ...args: unknown[]) {\n if (timer !== null) clearTimeout(timer);\n timer = setTimeout(() => {\n timer = null;\n fn.apply(this, args);\n }, delayMs);\n } as T;\n}\n\n// \u2500\u2500 throttle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport function throttle<T extends (...args: unknown[]) => unknown>(fn: T, intervalMs: number): T {\n let lastCall = 0;\n return function (this: unknown, ...args: unknown[]) {\n const now = Date.now();\n if (now - lastCall >= intervalMs) {\n lastCall = now;\n return fn.apply(this, args);\n }\n } as T;\n}\n\n// \u2500\u2500 MemoryMonitor \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport class MemoryMonitor {\n private readonly thresholdBytes: number;\n private readonly intervalMs: number;\n private timer: ReturnType<typeof setInterval> | null = null;\n private peakBytes = 0;\n\n constructor(opts: { thresholdMb: number; intervalMs: number }) {\n this.thresholdBytes = opts.thresholdMb * 1024 * 1024;\n this.intervalMs = opts.intervalMs;\n }\n\n start(): void {\n if (this.timer !== null) return;\n this.timer = setInterval(() => {\n const used = process.memoryUsage().heapUsed;\n if (used > this.peakBytes) this.peakBytes = used;\n if (used > this.thresholdBytes) {\n logWarn(`MemoryMonitor: heap usage ${(used / 1024 / 1024).toFixed(1)} MB exceeds threshold ${(this.thresholdBytes / 1024 / 1024).toFixed(1)} MB`);\n }\n }, this.intervalMs);\n // Allow the process to exit even if the monitor is running\n if (this.timer.unref) this.timer.unref();\n }\n\n stop(): void {\n if (this.timer !== null) {\n clearInterval(this.timer);\n this.timer = null;\n }\n }\n\n /** Returns peak heap usage in bytes. */\n getPeakUsage(): number {\n return this.peakBytes;\n }\n}\n\n// \u2500\u2500 Security utils (moved from src/index.ts) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Resolve and validate that filePath is within root. Returns null if not. */\nexport function validatePathWithinRoot(filePath: string, root: string): string | null {\n const resolved = path.resolve(filePath);\n const resolvedRoot = path.resolve(root);\n if (!resolved.startsWith(resolvedRoot + path.sep) && resolved !== resolvedRoot) return null;\n return resolved;\n}\n\n/** Throw if the given path is a sensitive system directory. */\nexport function validateProjectPath(projectRoot: string): void {\n const SENSITIVE_DIRS = new Set(['/', '/etc', '/usr', '/var', '/bin', '/sbin', '/lib', '/lib64', '/proc', '/sys', '/dev', '/boot']);\n const resolved = path.resolve(projectRoot);\n if (SENSITIVE_DIRS.has(resolved)) {\n throw new Error(`Refusing to initialize KiroGraph in sensitive directory: ${resolved}`);\n }\n}\n\n/** Returns true if filePath is within root (string-based, no symlink resolution). */\nexport function isPathWithinRoot(filePath: string, root: string): boolean {\n const resolved = path.resolve(filePath);\n const resolvedRoot = path.resolve(root);\n return resolved === resolvedRoot || resolved.startsWith(resolvedRoot + path.sep);\n}\n\n/** Returns true if filePath is within root, resolving symlinks (symlink-safe). */\nexport function isPathWithinRootReal(filePath: string, root: string): boolean {\n try {\n const real = fs.realpathSync(filePath);\n const realRoot = fs.realpathSync(root);\n return real === realRoot || real.startsWith(realRoot + path.sep);\n } catch {\n return false;\n }\n}\n\n// \u2500\u2500 Misc helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function normalizePath(p: string): string {\n return p.split(path.sep).join('/');\n}\n\nexport function safeJsonParse<T>(json: string, fallback: T): T {\n try {\n return JSON.parse(json) as T;\n } catch {\n return fallback;\n }\n}\n\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KiroGraph Vector Manager
|
|
3
|
+
*
|
|
4
|
+
* Semantic search using nomic-ai/nomic-embed-text-v1.5 via @xenova/transformers.
|
|
5
|
+
* Mirrors CodeGraph src/vectors/ (embedder.ts + manager.ts) adapted for KiroGraph:
|
|
6
|
+
* - Cache dir: ~/.kirograph/models/ (not ~/.codegraph/models/)
|
|
7
|
+
* - Embeddings stored in the `vectors` SQLite table
|
|
8
|
+
* - Cosine similarity search done in-process by default (no extra deps)
|
|
9
|
+
* - ANN search via sqlite-vec opt-in: set config.useVecIndex = true
|
|
10
|
+
* (requires `npm install better-sqlite3 sqlite-vec`)
|
|
11
|
+
* - Disabled by default; opt-in via config.enableEmbeddings = true
|
|
12
|
+
*/
|
|
13
|
+
import type { KiroGraphConfig } from '../config';
|
|
14
|
+
import type { Node } from '../types';
|
|
15
|
+
import type { GraphDatabase } from '../db/database';
|
|
16
|
+
export declare class VectorManager {
|
|
17
|
+
private readonly db;
|
|
18
|
+
private readonly config;
|
|
19
|
+
private readonly projectRoot?;
|
|
20
|
+
private pipeline;
|
|
21
|
+
private _initialized;
|
|
22
|
+
private vecIndex;
|
|
23
|
+
private oramaIndex;
|
|
24
|
+
private pgliteIndex;
|
|
25
|
+
private lancedbIndex;
|
|
26
|
+
private qdrantIndex;
|
|
27
|
+
private typesenseIndex;
|
|
28
|
+
private _engineFallback;
|
|
29
|
+
constructor(db: GraphDatabase, config: KiroGraphConfig, projectRoot?: string | undefined);
|
|
30
|
+
isInitialized(): boolean;
|
|
31
|
+
/** Non-null when the configured engine failed to load and cosine is being used instead. */
|
|
32
|
+
getEngineFallback(): string | null;
|
|
33
|
+
/**
|
|
34
|
+
* Load the embedding model. No-op when embeddings are disabled.
|
|
35
|
+
* Fails silently so callers can continue without semantic search.
|
|
36
|
+
* When config.useVecIndex is true, also initializes the sqlite-vec ANN index.
|
|
37
|
+
*/
|
|
38
|
+
initialize(): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Embed a single node and persist to the vectors table.
|
|
41
|
+
* Skips silently when disabled; logs on failure without throwing.
|
|
42
|
+
*/
|
|
43
|
+
embedNode(node: Node): Promise<void>;
|
|
44
|
+
/** Number of entries currently in the active ANN/hybrid index (0 when not in use). */
|
|
45
|
+
vecIndexCount(): Promise<number>;
|
|
46
|
+
/**
|
|
47
|
+
* Remove embeddings for the given node IDs from the active index.
|
|
48
|
+
* For cosine the `vectors` SQLite table is cleaned up automatically via FK cascade
|
|
49
|
+
* when nodes are deleted. For sqlite-vec, orama, and pglite the engine itself is
|
|
50
|
+
* the sole store of record, so we delete from it explicitly here.
|
|
51
|
+
*/
|
|
52
|
+
deleteEmbeddings(nodeIds: string[]): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Embed all eligible nodes in the database that don't yet have embeddings.
|
|
55
|
+
* Processes in batches of BATCH_SIZE.
|
|
56
|
+
*/
|
|
57
|
+
embedAll(onProgress?: (current: number, total: number) => void): Promise<number>;
|
|
58
|
+
/**
|
|
59
|
+
* Semantic search: embed the query and return top-N nodes by similarity.
|
|
60
|
+
*
|
|
61
|
+
* When sqlite-vec is available (useVecIndex: true), delegates ANN search to
|
|
62
|
+
* VecIndex (fast, sub-linear). Otherwise falls back to in-process cosine
|
|
63
|
+
* similarity over all stored embeddings (linear scan, no extra deps).
|
|
64
|
+
*
|
|
65
|
+
* Returns empty array when not initialized.
|
|
66
|
+
*/
|
|
67
|
+
search(query: string, topN?: number): Promise<Node[]>;
|
|
68
|
+
/** Release engine resources (e.g. kill Qdrant child process). */
|
|
69
|
+
close(): void;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vectors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAuEpD,qBAAa,aAAa;IAYtB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAb/B,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,eAAe,CAAuB;gBAG3B,EAAE,EAAE,aAAa,EACjB,MAAM,EAAE,eAAe,EACvB,WAAW,CAAC,EAAE,MAAM,YAAA;IAGvC,aAAa,IAAI,OAAO;IAIxB,2FAA2F;IAC3F,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAIlC;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA+HjC;;;OAGG;IACG,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B1C,sFAAsF;IAChF,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAUtC;;;;;OAKG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxD;;;OAGG;IACG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAyEtF;;;;;;;;OAQG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAmDvD,iEAAiE;IACjE,KAAK,IAAI,IAAI;CAId"}
|