@vpxa/kb 0.1.13 → 0.1.15
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 +8 -2
- package/package.json +10 -7
- package/packages/analyzers/dist/blast-radius-analyzer.d.ts +17 -20
- package/packages/analyzers/dist/blast-radius-analyzer.js +6 -12
- package/packages/analyzers/dist/dependency-analyzer.d.ts +31 -27
- package/packages/analyzers/dist/dependency-analyzer.js +7 -9
- package/packages/analyzers/dist/diagram-generator.d.ts +12 -8
- package/packages/analyzers/dist/diagram-generator.js +3 -4
- package/packages/analyzers/dist/entry-point-analyzer.d.ts +39 -35
- package/packages/analyzers/dist/entry-point-analyzer.js +5 -6
- package/packages/analyzers/dist/index.d.ts +12 -14
- package/packages/analyzers/dist/index.js +1 -1
- package/packages/analyzers/dist/knowledge-producer.d.ts +29 -25
- package/packages/analyzers/dist/knowledge-producer.js +16 -15
- package/packages/analyzers/dist/pattern-analyzer.d.ts +14 -10
- package/packages/analyzers/dist/pattern-analyzer.js +3 -5
- package/packages/analyzers/dist/regex-call-graph.d.ts +6 -12
- package/packages/analyzers/dist/regex-call-graph.js +2 -1
- package/packages/analyzers/dist/structure-analyzer.d.ts +13 -9
- package/packages/analyzers/dist/structure-analyzer.js +3 -4
- package/packages/analyzers/dist/symbol-analyzer.d.ts +12 -8
- package/packages/analyzers/dist/symbol-analyzer.js +8 -13
- package/packages/analyzers/dist/ts-call-graph.d.ts +16 -13
- package/packages/analyzers/dist/ts-call-graph.js +2 -1
- package/packages/analyzers/dist/types.d.ts +82 -79
- package/packages/analyzers/dist/types.js +1 -0
- package/packages/chunker/dist/call-graph-extractor.d.ts +13 -10
- package/packages/chunker/dist/call-graph-extractor.js +2 -1
- package/packages/chunker/dist/chunker-factory.d.ts +6 -2
- package/packages/chunker/dist/chunker-factory.js +2 -1
- package/packages/chunker/dist/chunker.interface.d.ts +8 -4
- package/packages/chunker/dist/chunker.interface.js +1 -0
- package/packages/chunker/dist/code-chunker.d.ts +16 -12
- package/packages/chunker/dist/code-chunker.js +12 -14
- package/packages/chunker/dist/generic-chunker.d.ts +14 -10
- package/packages/chunker/dist/generic-chunker.js +6 -5
- package/packages/chunker/dist/index.d.ts +8 -8
- package/packages/chunker/dist/index.js +1 -1
- package/packages/chunker/dist/markdown-chunker.d.ts +16 -12
- package/packages/chunker/dist/markdown-chunker.js +4 -10
- package/packages/chunker/dist/treesitter-chunker.d.ts +28 -31
- package/packages/chunker/dist/treesitter-chunker.js +7 -8
- package/packages/cli/dist/commands/analyze.d.ts +6 -2
- package/packages/cli/dist/commands/analyze.js +3 -3
- package/packages/cli/dist/commands/context-cmds.d.ts +6 -2
- package/packages/cli/dist/commands/context-cmds.js +2 -1
- package/packages/cli/dist/commands/environment.d.ts +6 -2
- package/packages/cli/dist/commands/environment.js +2 -2
- package/packages/cli/dist/commands/execution.d.ts +6 -2
- package/packages/cli/dist/commands/execution.js +2 -1
- package/packages/cli/dist/commands/graph.d.ts +6 -2
- package/packages/cli/dist/commands/graph.js +6 -6
- package/packages/cli/dist/commands/init/adapters.d.ts +27 -0
- package/packages/cli/dist/commands/init/adapters.js +2 -0
- package/packages/cli/dist/commands/init/config.d.ts +11 -0
- package/packages/cli/dist/commands/init/config.js +4 -0
- package/packages/cli/dist/commands/init/curated.d.ts +8 -0
- package/packages/cli/dist/commands/init/curated.js +2 -0
- package/packages/cli/dist/commands/init/index.d.ts +23 -0
- package/packages/cli/dist/commands/init/index.js +3 -0
- package/packages/cli/dist/commands/init/scaffold.d.ts +24 -0
- package/packages/cli/dist/commands/init/scaffold.js +2 -0
- package/packages/cli/dist/commands/init/templates.d.ts +10 -0
- package/packages/cli/dist/commands/init/templates.js +302 -0
- package/packages/cli/dist/commands/init.d.ts +8 -3
- package/packages/cli/dist/commands/init.js +120 -123
- package/packages/cli/dist/commands/knowledge.d.ts +6 -2
- package/packages/cli/dist/commands/knowledge.js +2 -1
- package/packages/cli/dist/commands/search.d.ts +6 -2
- package/packages/cli/dist/commands/search.js +2 -8
- package/packages/cli/dist/commands/system.d.ts +6 -2
- package/packages/cli/dist/commands/system.js +5 -7
- package/packages/cli/dist/commands/workspace.d.ts +6 -2
- package/packages/cli/dist/commands/workspace.js +2 -2
- package/packages/cli/dist/context.d.ts +7 -4
- package/packages/cli/dist/context.js +2 -1
- package/packages/cli/dist/helpers.d.ts +51 -47
- package/packages/cli/dist/helpers.js +6 -5
- package/packages/cli/dist/index.d.ts +4 -1
- package/packages/cli/dist/index.js +3 -2
- package/packages/cli/dist/kb-init.d.ts +48 -50
- package/packages/cli/dist/kb-init.js +2 -1
- package/packages/cli/dist/types.d.ts +8 -5
- package/packages/cli/dist/types.js +1 -0
- package/packages/core/dist/constants.d.ts +36 -33
- package/packages/core/dist/constants.js +2 -1
- package/packages/core/dist/content-detector.d.ts +8 -7
- package/packages/core/dist/content-detector.js +2 -1
- package/packages/core/dist/errors.d.ts +15 -12
- package/packages/core/dist/errors.js +2 -1
- package/packages/core/dist/index.d.ts +6 -6
- package/packages/core/dist/index.js +1 -1
- package/packages/core/dist/logger.d.ts +16 -7
- package/packages/core/dist/logger.js +2 -1
- package/packages/core/dist/types.d.ts +107 -91
- package/packages/core/dist/types.js +2 -0
- package/packages/embeddings/dist/embedder.interface.d.ts +22 -19
- package/packages/embeddings/dist/embedder.interface.js +1 -0
- package/packages/embeddings/dist/index.d.ts +3 -3
- package/packages/embeddings/dist/index.js +1 -1
- package/packages/embeddings/dist/onnx-embedder.d.ts +21 -22
- package/packages/embeddings/dist/onnx-embedder.js +2 -1
- package/packages/enterprise-bridge/dist/cache.d.ts +29 -0
- package/packages/enterprise-bridge/dist/cache.js +2 -0
- package/packages/enterprise-bridge/dist/er-client.d.ts +38 -0
- package/packages/enterprise-bridge/dist/er-client.js +2 -0
- package/packages/enterprise-bridge/dist/evolution-collector.d.ts +63 -0
- package/packages/enterprise-bridge/dist/evolution-collector.js +2 -0
- package/packages/enterprise-bridge/dist/index.d.ts +8 -0
- package/packages/enterprise-bridge/dist/index.js +1 -0
- package/packages/enterprise-bridge/dist/policy-store.d.ts +46 -0
- package/packages/enterprise-bridge/dist/policy-store.js +2 -0
- package/packages/enterprise-bridge/dist/push-adapter.d.ts +24 -0
- package/packages/enterprise-bridge/dist/push-adapter.js +2 -0
- package/packages/enterprise-bridge/dist/result-merger.d.ts +15 -0
- package/packages/enterprise-bridge/dist/result-merger.js +2 -0
- package/packages/enterprise-bridge/dist/types.d.ts +82 -0
- package/packages/enterprise-bridge/dist/types.js +2 -0
- package/packages/indexer/dist/file-hasher.d.ts +5 -2
- package/packages/indexer/dist/file-hasher.js +2 -1
- package/packages/indexer/dist/filesystem-crawler.d.ts +23 -20
- package/packages/indexer/dist/filesystem-crawler.js +2 -1
- package/packages/indexer/dist/graph-extractor.d.ts +9 -12
- package/packages/indexer/dist/graph-extractor.js +2 -1
- package/packages/indexer/dist/incremental-indexer.d.ts +49 -43
- package/packages/indexer/dist/incremental-indexer.js +2 -1
- package/packages/indexer/dist/index.d.ts +5 -5
- package/packages/indexer/dist/index.js +1 -1
- package/packages/server/dist/api.d.ts +3 -8
- package/packages/server/dist/api.js +1 -1
- package/packages/server/dist/config.d.ts +6 -2
- package/packages/server/dist/config.js +2 -1
- package/packages/server/dist/curated-manager.d.ts +79 -76
- package/packages/server/dist/curated-manager.js +6 -10
- package/packages/server/dist/index.d.ts +1 -2
- package/packages/server/dist/index.js +2 -1
- package/packages/server/dist/replay-interceptor.d.ts +6 -6
- package/packages/server/dist/replay-interceptor.js +2 -1
- package/packages/server/dist/resources/resources.d.ts +7 -3
- package/packages/server/dist/resources/resources.js +3 -2
- package/packages/server/dist/server.d.ts +34 -24
- package/packages/server/dist/server.js +2 -1
- package/packages/server/dist/tools/analyze.tools.d.ts +14 -10
- package/packages/server/dist/tools/analyze.tools.js +2 -3
- package/packages/server/dist/tools/audit.tool.d.ts +8 -4
- package/packages/server/dist/tools/audit.tool.js +2 -4
- package/packages/server/dist/tools/bridge.tools.d.ts +35 -0
- package/packages/server/dist/tools/bridge.tools.js +16 -0
- package/packages/server/dist/tools/evolution.tools.d.ts +8 -0
- package/packages/server/dist/tools/evolution.tools.js +6 -0
- package/packages/server/dist/tools/forge.tools.d.ts +13 -11
- package/packages/server/dist/tools/forge.tools.js +11 -13
- package/packages/server/dist/tools/forget.tool.d.ts +7 -3
- package/packages/server/dist/tools/forget.tool.js +2 -7
- package/packages/server/dist/tools/graph.tool.d.ts +7 -3
- package/packages/server/dist/tools/graph.tool.js +5 -5
- package/packages/server/dist/tools/list.tool.d.ts +7 -3
- package/packages/server/dist/tools/list.tool.js +3 -8
- package/packages/server/dist/tools/lookup.tool.d.ts +7 -3
- package/packages/server/dist/tools/lookup.tool.js +3 -9
- package/packages/server/dist/tools/onboard.tool.d.ts +8 -4
- package/packages/server/dist/tools/onboard.tool.js +3 -2
- package/packages/server/dist/tools/policy.tools.d.ts +8 -0
- package/packages/server/dist/tools/policy.tools.js +3 -0
- package/packages/server/dist/tools/produce.tool.d.ts +6 -2
- package/packages/server/dist/tools/produce.tool.js +3 -2
- package/packages/server/dist/tools/read.tool.d.ts +7 -3
- package/packages/server/dist/tools/read.tool.js +3 -6
- package/packages/server/dist/tools/reindex.tool.d.ts +10 -6
- package/packages/server/dist/tools/reindex.tool.js +3 -2
- package/packages/server/dist/tools/remember.tool.d.ts +8 -3
- package/packages/server/dist/tools/remember.tool.js +4 -5
- package/packages/server/dist/tools/replay.tool.d.ts +6 -2
- package/packages/server/dist/tools/replay.tool.js +3 -6
- package/packages/server/dist/tools/search.tool.d.ts +10 -4
- package/packages/server/dist/tools/search.tool.js +7 -22
- package/packages/server/dist/tools/status.tool.d.ts +7 -3
- package/packages/server/dist/tools/status.tool.js +3 -3
- package/packages/server/dist/tools/toolkit.tools.d.ts +36 -34
- package/packages/server/dist/tools/toolkit.tools.js +20 -24
- package/packages/server/dist/tools/update.tool.d.ts +7 -3
- package/packages/server/dist/tools/update.tool.js +2 -6
- package/packages/server/dist/tools/utility.tools.d.ts +15 -14
- package/packages/server/dist/tools/utility.tools.js +11 -23
- package/packages/server/dist/version-check.d.ts +5 -1
- package/packages/server/dist/version-check.js +2 -1
- package/packages/store/dist/graph-store.interface.d.ts +89 -86
- package/packages/store/dist/graph-store.interface.js +1 -0
- package/packages/store/dist/index.d.ts +6 -6
- package/packages/store/dist/index.js +1 -1
- package/packages/store/dist/lance-store.d.ts +37 -30
- package/packages/store/dist/lance-store.js +2 -1
- package/packages/store/dist/sqlite-graph-store.d.ts +43 -46
- package/packages/store/dist/sqlite-graph-store.js +14 -13
- package/packages/store/dist/store-factory.d.ts +11 -7
- package/packages/store/dist/store-factory.js +2 -1
- package/packages/store/dist/store.interface.d.ts +47 -46
- package/packages/store/dist/store.interface.js +1 -0
- package/packages/tools/dist/audit.d.ts +61 -61
- package/packages/tools/dist/audit.js +5 -5
- package/packages/tools/dist/batch.d.ts +20 -17
- package/packages/tools/dist/batch.js +2 -1
- package/packages/tools/dist/changelog.d.ts +29 -26
- package/packages/tools/dist/changelog.js +3 -2
- package/packages/tools/dist/check.d.ts +42 -38
- package/packages/tools/dist/check.js +3 -2
- package/packages/tools/dist/checkpoint.d.ts +17 -14
- package/packages/tools/dist/checkpoint.js +2 -2
- package/packages/tools/dist/codemod.d.ts +35 -32
- package/packages/tools/dist/codemod.js +3 -2
- package/packages/tools/dist/compact.d.ts +34 -37
- package/packages/tools/dist/compact.js +3 -2
- package/packages/tools/dist/data-transform.d.ts +10 -7
- package/packages/tools/dist/data-transform.js +2 -1
- package/packages/tools/dist/dead-symbols.d.ts +29 -25
- package/packages/tools/dist/dead-symbols.js +3 -2
- package/packages/tools/dist/delegate.d.ts +26 -23
- package/packages/tools/dist/delegate.js +2 -5
- package/packages/tools/dist/diff-parse.d.ts +24 -21
- package/packages/tools/dist/diff-parse.js +4 -3
- package/packages/tools/dist/digest.d.ts +43 -45
- package/packages/tools/dist/digest.js +5 -5
- package/packages/tools/dist/encode.d.ts +11 -8
- package/packages/tools/dist/encode.js +2 -1
- package/packages/tools/dist/env-info.d.ts +25 -22
- package/packages/tools/dist/env-info.js +2 -1
- package/packages/tools/dist/eval.d.ts +13 -10
- package/packages/tools/dist/eval.js +3 -3
- package/packages/tools/dist/evidence-map.d.ts +64 -61
- package/packages/tools/dist/evidence-map.js +3 -3
- package/packages/tools/dist/file-cache.d.ts +42 -0
- package/packages/tools/dist/file-cache.js +4 -0
- package/packages/tools/dist/file-summary.d.ts +34 -29
- package/packages/tools/dist/file-summary.js +3 -2
- package/packages/tools/dist/file-walk.d.ts +6 -3
- package/packages/tools/dist/file-walk.js +2 -1
- package/packages/tools/dist/find-examples.d.ts +26 -21
- package/packages/tools/dist/find-examples.js +4 -3
- package/packages/tools/dist/find.d.ts +39 -40
- package/packages/tools/dist/find.js +2 -1
- package/packages/tools/dist/forge-classify.d.ts +35 -38
- package/packages/tools/dist/forge-classify.js +3 -2
- package/packages/tools/dist/forge-ground.d.ts +58 -60
- package/packages/tools/dist/forge-ground.js +2 -1
- package/packages/tools/dist/git-context.d.ts +22 -19
- package/packages/tools/dist/git-context.js +4 -3
- package/packages/tools/dist/graph-query.d.ts +75 -78
- package/packages/tools/dist/graph-query.js +2 -1
- package/packages/tools/dist/guide.d.ts +14 -11
- package/packages/tools/dist/guide.js +2 -1
- package/packages/tools/dist/health.d.ts +13 -10
- package/packages/tools/dist/health.js +3 -2
- package/packages/tools/dist/http-request.d.ts +20 -17
- package/packages/tools/dist/http-request.js +2 -1
- package/packages/tools/dist/index.d.ts +54 -53
- package/packages/tools/dist/index.js +1 -1
- package/packages/tools/dist/lane.d.ts +28 -25
- package/packages/tools/dist/lane.js +7 -7
- package/packages/tools/dist/measure.d.ts +32 -29
- package/packages/tools/dist/measure.js +3 -2
- package/packages/tools/dist/onboard.d.ts +29 -26
- package/packages/tools/dist/onboard.js +18 -41
- package/packages/tools/dist/parse-output.d.ts +48 -45
- package/packages/tools/dist/parse-output.js +3 -2
- package/packages/tools/dist/path-resolver.d.ts +4 -1
- package/packages/tools/dist/path-resolver.js +2 -1
- package/packages/tools/dist/process-manager.d.ts +18 -15
- package/packages/tools/dist/process-manager.js +2 -1
- package/packages/tools/dist/queue.d.ts +28 -25
- package/packages/tools/dist/queue.js +2 -2
- package/packages/tools/dist/regex-test.d.ts +26 -23
- package/packages/tools/dist/regex-test.js +2 -1
- package/packages/tools/dist/rename.d.ts +28 -25
- package/packages/tools/dist/rename.js +3 -2
- package/packages/tools/dist/replay.d.ts +32 -29
- package/packages/tools/dist/replay.js +5 -6
- package/packages/tools/dist/response-envelope.d.ts +32 -29
- package/packages/tools/dist/response-envelope.js +2 -1
- package/packages/tools/dist/schema-validate.d.ts +15 -12
- package/packages/tools/dist/schema-validate.js +2 -1
- package/packages/tools/dist/scope-map.d.ts +45 -47
- package/packages/tools/dist/scope-map.js +2 -1
- package/packages/tools/dist/snippet.d.ts +26 -24
- package/packages/tools/dist/snippet.js +2 -1
- package/packages/tools/dist/stash.d.ts +13 -10
- package/packages/tools/dist/stash.js +2 -2
- package/packages/tools/dist/stratum-card.d.ts +27 -27
- package/packages/tools/dist/stratum-card.js +4 -5
- package/packages/tools/dist/symbol.d.ts +29 -25
- package/packages/tools/dist/symbol.js +4 -3
- package/packages/tools/dist/test-run.d.ts +19 -15
- package/packages/tools/dist/test-run.js +3 -2
- package/packages/tools/dist/text-utils.d.ts +6 -3
- package/packages/tools/dist/text-utils.js +3 -2
- package/packages/tools/dist/time-utils.d.ts +15 -12
- package/packages/tools/dist/time-utils.js +2 -1
- package/packages/tools/dist/trace.d.ts +24 -20
- package/packages/tools/dist/trace.js +3 -2
- package/packages/tools/dist/truncation.d.ts +6 -3
- package/packages/tools/dist/truncation.js +8 -14
- package/packages/tools/dist/watch.d.ts +28 -25
- package/packages/tools/dist/watch.js +2 -1
- package/packages/tools/dist/web-fetch.d.ts +35 -32
- package/packages/tools/dist/web-fetch.js +7 -12
- package/packages/tools/dist/web-search.d.ts +16 -13
- package/packages/tools/dist/web-search.js +2 -1
- package/packages/tools/dist/workset.d.ts +19 -16
- package/packages/tools/dist/workset.js +2 -2
- package/packages/tui/dist/App-BAlmxCCw.js +3 -0
- package/packages/tui/dist/App.d.ts +11 -5
- package/packages/tui/dist/App.js +1 -450
- package/packages/tui/dist/CuratedPanel-sYdZAICX.js +3 -0
- package/packages/tui/dist/LogPanel-DVB8Sv46.js +4 -0
- package/packages/tui/dist/SearchPanel-DREo6zgt.js +3 -0
- package/packages/tui/dist/StatusPanel-2ex8fLOO.js +3 -0
- package/packages/tui/dist/chunk-D6axbAb-.js +2 -0
- package/packages/tui/dist/devtools-DUyj952l.js +8 -0
- package/packages/tui/dist/embedder.interface-D4ew0HPW.d.ts +29 -0
- package/packages/tui/dist/index-B9VpfVPP.d.ts +14 -0
- package/packages/tui/dist/index.d.ts +3 -19
- package/packages/tui/dist/index.js +2 -476
- package/packages/tui/dist/jsx-runtime-Cof-kwFn.js +317 -0
- package/packages/tui/dist/panels/CuratedPanel.d.ts +11 -5
- package/packages/tui/dist/panels/CuratedPanel.js +1 -371
- package/packages/tui/dist/panels/LogPanel.d.ts +7 -2
- package/packages/tui/dist/panels/LogPanel.js +1 -449
- package/packages/tui/dist/panels/SearchPanel.d.ts +14 -7
- package/packages/tui/dist/panels/SearchPanel.js +1 -372
- package/packages/tui/dist/panels/StatusPanel.d.ts +11 -5
- package/packages/tui/dist/panels/StatusPanel.js +1 -371
- package/packages/tui/dist/store.interface-CnY6SPOH.d.ts +151 -0
- package/scaffold/adapters/claude-code.mjs +20 -0
- package/scaffold/adapters/copilot.mjs +320 -0
- package/scaffold/copilot/agents/Architect-Reviewer-Alpha.agent.md +14 -0
- package/scaffold/copilot/agents/Architect-Reviewer-Beta.agent.md +14 -0
- package/scaffold/copilot/agents/Code-Reviewer-Alpha.agent.md +12 -0
- package/scaffold/copilot/agents/Code-Reviewer-Beta.agent.md +12 -0
- package/scaffold/copilot/agents/Debugger.agent.md +31 -0
- package/scaffold/copilot/agents/Documenter.agent.md +35 -0
- package/scaffold/copilot/agents/Explorer.agent.md +50 -0
- package/scaffold/copilot/agents/Frontend.agent.md +29 -0
- package/scaffold/copilot/agents/Implementer.agent.md +31 -0
- package/scaffold/copilot/agents/Orchestrator.agent.md +96 -0
- package/scaffold/copilot/agents/Planner.agent.md +45 -0
- package/scaffold/copilot/agents/README.md +57 -0
- package/scaffold/copilot/agents/Refactor.agent.md +30 -0
- package/scaffold/copilot/agents/Researcher-Alpha.agent.md +12 -0
- package/scaffold/copilot/agents/Researcher-Beta.agent.md +12 -0
- package/scaffold/copilot/agents/Researcher-Delta.agent.md +12 -0
- package/scaffold/copilot/agents/Researcher-Gamma.agent.md +12 -0
- package/scaffold/copilot/agents/Security.agent.md +42 -0
- package/scaffold/copilot/agents/_shared/adr-protocol.md +91 -0
- package/scaffold/copilot/agents/_shared/architect-reviewer-base.md +50 -0
- package/scaffold/copilot/agents/_shared/code-agent-base.md +70 -0
- package/scaffold/copilot/agents/_shared/code-reviewer-base.md +54 -0
- package/scaffold/copilot/agents/_shared/decision-protocol.md +27 -0
- package/scaffold/copilot/agents/_shared/forge-protocol.md +46 -0
- package/scaffold/copilot/agents/_shared/researcher-base.md +61 -0
- package/scaffold/copilot/agents/templates/adr-template.md +27 -0
- package/scaffold/copilot/agents/templates/execution-state.md +25 -0
- package/scaffold/copilot/prompts/ask.prompt.md +20 -0
- package/scaffold/copilot/prompts/debug.prompt.md +25 -0
- package/scaffold/copilot/prompts/design.prompt.md +22 -0
- package/scaffold/copilot/prompts/implement.prompt.md +26 -0
- package/scaffold/copilot/prompts/plan.prompt.md +24 -0
- package/scaffold/copilot/prompts/review.prompt.md +31 -0
- package/scaffold/definitions/agents.mjs +165 -0
- package/scaffold/definitions/bodies.mjs +292 -0
- package/scaffold/definitions/hooks.mjs +43 -0
- package/scaffold/definitions/models.mjs +56 -0
- package/scaffold/definitions/plugins.mjs +24 -0
- package/scaffold/definitions/prompts.mjs +145 -0
- package/scaffold/definitions/protocols.mjs +322 -0
- package/scaffold/definitions/tools.mjs +176 -0
- package/scaffold/generate.mjs +74 -0
- package/skills/brainstorming/SKILL.md +259 -0
- package/skills/brainstorming/scripts/frame-template.html +365 -0
- package/skills/brainstorming/scripts/helper.js +216 -0
- package/skills/brainstorming/scripts/server.cjs +9 -0
- package/skills/brainstorming/scripts/server.src.cjs +249 -0
- package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/skills/brainstorming/visual-companion.md +430 -0
- package/skills/knowledge-base/SKILL.md +22 -9
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
|
|
3
|
+
//#region packages/server/src/tools/utility.tools.d.ts
|
|
4
|
+
declare function registerWebSearchTool(server: McpServer): void;
|
|
5
|
+
declare function registerHttpTool(server: McpServer): void;
|
|
6
|
+
declare function registerRegexTestTool(server: McpServer): void;
|
|
7
|
+
declare function registerEncodeTool(server: McpServer): void;
|
|
8
|
+
declare function registerMeasureTool(server: McpServer): void;
|
|
9
|
+
declare function registerChangelogTool(server: McpServer): void;
|
|
10
|
+
declare function registerSchemaValidateTool(server: McpServer): void;
|
|
11
|
+
declare function registerSnippetTool(server: McpServer): void;
|
|
12
|
+
declare function registerEnvTool(server: McpServer): void;
|
|
13
|
+
declare function registerTimeTool(server: McpServer): void;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { registerChangelogTool, registerEncodeTool, registerEnvTool, registerHttpTool, registerMeasureTool, registerRegexTestTool, registerSchemaValidateTool, registerSnippetTool, registerTimeTool, registerWebSearchTool };
|
|
15
16
|
//# sourceMappingURL=utility.tools.d.ts.map
|
|
@@ -1,24 +1,12 @@
|
|
|
1
|
-
import{changelog as
|
|
2
|
-
`)}]}}catch(
|
|
3
|
-
`)}]}}catch(
|
|
4
|
-
`)}]}})}function
|
|
1
|
+
import{createLogger as e,serializeError as t}from"../../../core/dist/index.js";import{changelog as n,encode as r,envInfo as i,httpRequest as a,measure as o,regexTest as s,schemaValidate as c,snippet as l,timeUtils as u,webSearch as d}from"../../../tools/dist/index.js";import{z as f}from"zod";const p=e(`tools`);function m(e){e.registerTool(`web_search`,{description:`PREFERRED web search — search the web via DuckDuckGo (no API key). Returns structured results with title, URL, and snippet.`,inputSchema:{query:f.string().max(2e3).describe(`Search query`),limit:f.number().min(1).max(20).default(5).describe(`Max results to return`),site:f.string().optional().describe(`Restrict to domain (e.g., "docs.aws.amazon.com")`)}},async({query:e,limit:n,site:r})=>{try{let t=await d({query:e,limit:n,site:r}),i=[`## Search: ${t.query}`,``];if(t.results.length===0)i.push(`No results found.`);else for(let e of t.results)i.push(`### [${e.title}](${e.url})`,e.snippet,``);return i.push(`---`,"_Next: Use `web_fetch` to read any of these pages in full._"),{content:[{type:`text`,text:i.join(`
|
|
2
|
+
`)}]}}catch(e){return p.error(`Web search failed`,t(e)),{content:[{type:`text`,text:`Web search failed. Check server logs for details.`}],isError:!0}}})}function h(e){e.registerTool(`http`,{description:`Make HTTP requests (GET/POST/PUT/PATCH/DELETE/HEAD) for API testing. Returns status, headers, and formatted body with timing info.`,inputSchema:{url:f.string().url().describe(`Request URL (http/https only)`),method:f.enum([`GET`,`POST`,`PUT`,`PATCH`,`DELETE`,`HEAD`]).default(`GET`).describe(`HTTP method`),headers:f.record(f.string(),f.string()).optional().describe(`Request headers as key-value pairs`),body:f.string().optional().describe(`Request body (for POST/PUT/PATCH)`),timeout:f.number().min(1e3).max(6e4).default(15e3).describe(`Timeout in milliseconds`)}},async({url:e,method:n,headers:r,body:i,timeout:o})=>{try{let t=await a({url:e,method:n,headers:r,body:i,timeout:o}),s=[`## ${n} ${e}`,``,`**Status:** ${t.status} ${t.statusText}`,`**Time:** ${t.durationMs}ms`,`**Size:** ${t.sizeBytes} bytes`,`**Content-Type:** ${t.contentType}`,``,`### Headers`,"```json",JSON.stringify(t.headers,null,2),"```",``,`### Body`,t.contentType.includes(`json`)?"```json":"```",t.body,"```"];return t.truncated&&s.push(``,`_Response truncated — total size: ${t.sizeBytes} bytes_`),{content:[{type:`text`,text:s.join(`
|
|
3
|
+
`)}]}}catch(e){return p.error(`HTTP request failed`,t(e)),{content:[{type:`text`,text:`HTTP request failed. Check server logs for details.`}],isError:!0}}})}function g(e){e.registerTool(`regex_test`,{description:`Test a regex pattern against sample strings. Supports match, replace, and split modes.`,inputSchema:{pattern:f.string().max(500).describe(`Regex pattern (without delimiters)`),flags:f.string().max(10).regex(/^[gimsuy]*$/).default(``).describe(`Regex flags (g, i, m, s, etc.)`),test_strings:f.array(f.string().max(1e4)).max(50).describe(`Strings to test the pattern against`),mode:f.enum([`match`,`replace`,`split`]).default(`match`).describe(`Test mode`),replacement:f.string().optional().describe(`Replacement string (for replace mode)`)}},async({pattern:e,flags:t,test_strings:n,mode:r,replacement:i})=>{let a=s({pattern:e,flags:t,testStrings:n,mode:r,replacement:i});if(!a.valid)return{content:[{type:`text`,text:`Invalid regex: ${a.error}`}],isError:!0};let o=[`## Regex: \`/${a.pattern}/${a.flags}\``,``,`Mode: ${r}`,``];for(let e of a.results){if(o.push(`**Input:** \`${e.input}\``),o.push(`**Matched:** ${e.matched}`),e.matches)for(let t of e.matches){let e=t.groups.length>0?` groups: [${t.groups.join(`, `)}]`:``;o.push(` - "${t.full}" at index ${t.index}${e}`)}e.replaced!==void 0&&o.push(`**Result:** \`${e.replaced}\``),e.split&&o.push(`**Split:** ${JSON.stringify(e.split)}`),o.push(``)}return{content:[{type:`text`,text:o.join(`
|
|
4
|
+
`)}]}})}function _(e){e.registerTool(`encode`,{description:`Encode, decode, or hash text. Supports base64, URL encoding, SHA-256, MD5, JWT decode, hex.`,inputSchema:{operation:f.enum([`base64_encode`,`base64_decode`,`url_encode`,`url_decode`,`sha256`,`md5`,`jwt_decode`,`hex_encode`,`hex_decode`]).describe(`Operation to perform`),input:f.string().max(1e6).describe(`Input text`)}},async({operation:e,input:n})=>{try{let t=r({operation:e,input:n});return{content:[{type:`text`,text:`## ${e}\n\n**Input:** \`${n.length>100?`${n.slice(0,100)}...`:n}\`\n**Output:**\n\`\`\`\n${t.output}\n\`\`\``}]}}catch(e){return p.error(`Encode failed`,t(e)),{content:[{type:`text`,text:`Encode failed. Check server logs for details.`}],isError:!0}}})}function v(e){e.registerTool(`measure`,{description:`Measure code complexity, line counts, and function counts for a file or directory. Returns per-file metrics sorted by complexity.`,inputSchema:{path:f.string().describe(`File or directory path to measure`),extensions:f.array(f.string()).optional().describe(`File extensions to include (default: .ts,.tsx,.js,.jsx)`)}},async({path:e,extensions:n})=>{try{let t=o({path:e,extensions:n}),r=[`## Code Metrics`,``,`**Files:** ${t.summary.totalFiles}`,`**Total lines:** ${t.summary.totalLines} (${t.summary.totalCodeLines} code)`,`**Functions:** ${t.summary.totalFunctions}`,`**Avg complexity:** ${t.summary.avgComplexity}`,`**Max complexity:** ${t.summary.maxComplexity.value} (${t.summary.maxComplexity.file})`,``,`### Top files by complexity`,``,`| File | Lines | Code | Complexity | Functions | Imports |`,`|------|-------|------|------------|-----------|---------|`];for(let e of t.files.slice(0,20))r.push(`| ${e.path} | ${e.lines.total} | ${e.lines.code} | ${e.complexity} | ${e.functions} | ${e.imports} |`);return t.files.length>20&&r.push(``,`_...and ${t.files.length-20} more files_`),{content:[{type:`text`,text:r.join(`
|
|
5
|
+
`)}]}}catch(e){return p.error(`Measure failed`,t(e)),{content:[{type:`text`,text:`Measure failed. Check server logs for details.`}],isError:!0}}})}function y(e){e.registerTool(`changelog`,{description:`Generate a changelog from git history between two refs. Groups by conventional commit type.`,inputSchema:{from:f.string().max(200).describe(`Start ref (tag, SHA, HEAD~N)`),to:f.string().max(200).default(`HEAD`).describe(`End ref (default: HEAD)`),format:f.enum([`grouped`,`chronological`,`per-scope`]).default(`grouped`).describe(`Output format`),include_breaking:f.boolean().default(!0).describe(`Highlight breaking changes`)}},async({from:e,to:r,format:i,include_breaking:a})=>{try{let t=n({from:e,to:r,format:i,includeBreaking:a}),o=`${t.stats.total} commits (${Object.entries(t.stats.types).map(([e,t])=>`${t} ${e}`).join(`, `)})`;return{content:[{type:`text`,text:`${t.markdown}\n---\n_${o}_`}]}}catch(e){return p.error(`Changelog failed`,t(e)),{content:[{type:`text`,text:`Changelog failed. Check server logs for details.`}],isError:!0}}})}function b(e){e.registerTool(`schema_validate`,{description:`Validate JSON data against a JSON Schema. Supports type, required, properties, items, enum, pattern, min/max.`,inputSchema:{data:f.string().max(5e5).describe(`JSON data to validate (as string)`),schema:f.string().max(5e5).describe(`JSON Schema to validate against (as string)`)}},async({data:e,schema:n})=>{try{let t=c({data:JSON.parse(e),schema:JSON.parse(n)});if(t.valid)return{content:[{type:`text`,text:`## Validation: PASSED
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
_${n}_`}]}}catch(t){return{content:[{type:"text",text:`Changelog failed: ${t.message}`}],isError:!0}}})}function D(c){c.registerTool("schema_validate",{description:"Validate JSON data against a JSON Schema. Supports type, required, properties, items, enum, pattern, min/max.",inputSchema:{data:e.string().describe("JSON data to validate (as string)"),schema:e.string().describe("JSON Schema to validate against (as string)")}},async({data:a,schema:i})=>{try{const r=JSON.parse(a),s=JSON.parse(i),t=b({data:r,schema:s});if(t.valid)return{content:[{type:"text",text:`## Validation: PASSED
|
|
14
|
-
|
|
15
|
-
Data matches the schema.`}]};const n=["## Validation: FAILED","",`**${t.errors.length} error(s):**`,""];for(const o of t.errors){const d=o.expected?` (expected: ${o.expected}, got: ${o.received})`:"";n.push(`- \`${o.path}\`: ${o.message}${d}`)}return{content:[{type:"text",text:n.join(`
|
|
16
|
-
`)}]}}catch(r){return{content:[{type:"text",text:`Schema validation failed: ${r.message}`}],isError:!0}}})}function k(c){c.registerTool("snippet",{description:"Save, retrieve, search, and manage persistent code snippets/templates.",inputSchema:{action:e.enum(["save","get","list","search","delete"]).describe("Operation to perform"),name:e.string().optional().describe("Snippet name (required for save/get/delete)"),language:e.string().optional().describe("Language tag (for save)"),code:e.string().optional().describe("Code content (for save)"),tags:e.array(e.string()).optional().describe("Tags for categorization (for save)"),query:e.string().optional().describe("Search query (for search)")}},async({action:a,name:i,language:r,code:s,tags:t,query:n})=>{try{const o=S({action:a,name:i,language:r,code:s,tags:t,query:n});if("deleted"in o)return{content:[{type:"text",text:o.deleted?`Snippet "${i}" deleted.`:`Snippet "${i}" not found.`}]};if("snippets"in o){if(o.snippets.length===0)return{content:[{type:"text",text:"No snippets found."}]};const l=["## Snippets",""];for(const u of o.snippets){const m=u.tags.length>0?` [${u.tags.join(", ")}]`:"";l.push(`- **${u.name}** (${u.language})${m}`)}return{content:[{type:"text",text:l.join(`
|
|
17
|
-
`)}]}}const d=o,p=d.tags.length>0?`
|
|
18
|
-
Tags: ${d.tags.join(", ")}`:"";return{content:[{type:"text",text:`## ${d.name} (${d.language})${p}
|
|
19
|
-
|
|
20
|
-
\`\`\`${d.language}
|
|
21
|
-
${d.code}
|
|
22
|
-
\`\`\``}]}}catch(o){return{content:[{type:"text",text:`Snippet failed: ${o.message}`}],isError:!0}}})}function A(c){c.registerTool("env",{description:"Get system and runtime environment info. Sensitive env vars are redacted by default.",inputSchema:{include_env:e.boolean().default(!1).describe("Include environment variables"),filter_env:e.string().optional().describe("Filter env vars by name substring"),show_sensitive:e.boolean().default(!1).describe("Show sensitive values (keys, tokens, etc.) \u2014 redacted by default")}},async({include_env:a,filter_env:i,show_sensitive:r})=>{const s=h({includeEnv:a,filterEnv:i,showSensitive:r}),t=["## Environment","",`**Platform:** ${s.system.platform} ${s.system.arch}`,`**OS:** ${s.system.type} ${s.system.release}`,`**Host:** ${s.system.hostname}`,`**CPUs:** ${s.system.cpus}`,`**Memory:** ${s.system.memoryFreeGb}GB free / ${s.system.memoryTotalGb}GB total`,"",`**Node:** ${s.runtime.node}`,`**V8:** ${s.runtime.v8}`,`**CWD:** ${s.cwd}`];if(s.env){t.push("","### Environment Variables","");for(const[n,o]of Object.entries(s.env))t.push(`- \`${n}\`: ${o}`)}return{content:[{type:"text",text:t.join(`
|
|
23
|
-
`)}]}})}function H(c){c.registerTool("time",{description:"Parse dates, convert timezones, calculate durations, add time. Supports ISO 8601, unix timestamps, and human-readable formats.",inputSchema:{operation:e.enum(["now","parse","convert","diff","add"]).describe("now: current time | parse: parse a date string | convert: timezone conversion | diff: duration between two dates | add: add duration to date"),input:e.string().optional().describe("Date input (ISO, unix timestamp, or parseable string). For diff: two comma-separated dates"),timezone:e.string().optional().describe('Target timezone (e.g., "America/New_York", "Asia/Tokyo")'),duration:e.string().optional().describe('Duration to add (e.g., "2h30m", "1d", "30s") \u2014 for add operation')}},async({operation:a,input:i,timezone:r,duration:s})=>{try{const t=v({operation:a,input:i,timezone:r,duration:s}),n=[`**${t.output}**`,"",`ISO: ${t.iso}`,`Unix: ${t.unix}`];return t.details&&n.push("","```json",JSON.stringify(t.details,null,2),"```"),{content:[{type:"text",text:n.join(`
|
|
24
|
-
`)}]}}catch(t){return{content:[{type:"text",text:`Time failed: ${t.message}`}],isError:!0}}})}export{P as registerChangelogTool,j as registerEncodeTool,A as registerEnvTool,M as registerHttpTool,O as registerMeasureTool,R as registerRegexTestTool,D as registerSchemaValidateTool,k as registerSnippetTool,H as registerTimeTool,_ as registerWebSearchTool};
|
|
7
|
+
Data matches the schema.`}]};let r=[`## Validation: FAILED`,``,`**${t.errors.length} error(s):**`,``];for(let e of t.errors){let t=e.expected?` (expected: ${e.expected}, got: ${e.received})`:``;r.push(`- \`${e.path}\`: ${e.message}${t}`)}return{content:[{type:`text`,text:r.join(`
|
|
8
|
+
`)}]}}catch(e){return p.error(`Schema validation failed`,t(e)),{content:[{type:`text`,text:`Schema validation failed. Check server logs for details.`}],isError:!0}}})}function x(e){e.registerTool(`snippet`,{description:`Save, retrieve, search, and manage persistent code snippets/templates.`,inputSchema:{action:f.enum([`save`,`get`,`list`,`search`,`delete`]).describe(`Operation to perform`),name:f.string().optional().describe(`Snippet name (required for save/get/delete)`),language:f.string().optional().describe(`Language tag (for save)`),code:f.string().max(1e5).optional().describe(`Code content (for save)`),tags:f.array(f.string()).optional().describe(`Tags for categorization (for save)`),query:f.string().optional().describe(`Search query (for search)`)}},async({action:e,name:n,language:r,code:i,tags:a,query:o})=>{try{let t=l({action:e,name:n,language:r,code:i,tags:a,query:o});if(`deleted`in t)return{content:[{type:`text`,text:t.deleted?`Snippet "${n}" deleted.`:`Snippet "${n}" not found.`}]};if(`snippets`in t){if(t.snippets.length===0)return{content:[{type:`text`,text:`No snippets found.`}]};let e=[`## Snippets`,``];for(let n of t.snippets){let t=n.tags.length>0?` [${n.tags.join(`, `)}]`:``;e.push(`- **${n.name}** (${n.language})${t}`)}return{content:[{type:`text`,text:e.join(`
|
|
9
|
+
`)}]}}let s=t,c=s.tags.length>0?`\nTags: ${s.tags.join(`, `)}`:``;return{content:[{type:`text`,text:`## ${s.name} (${s.language})${c}\n\n\`\`\`${s.language}\n${s.code}\n\`\`\``}]}}catch(e){return p.error(`Snippet failed`,t(e)),{content:[{type:`text`,text:`Snippet failed. Check server logs for details.`}],isError:!0}}})}function S(e){e.registerTool(`env`,{description:`Get system and runtime environment info. Sensitive env vars are redacted by default.`,inputSchema:{include_env:f.boolean().default(!1).describe(`Include environment variables`),filter_env:f.string().optional().describe(`Filter env vars by name substring`),show_sensitive:f.boolean().default(!1).describe(`Show sensitive values (keys, tokens, etc.) — redacted by default`)}},async({include_env:e,filter_env:t,show_sensitive:n})=>{let r=i({includeEnv:e,filterEnv:t,showSensitive:n}),a=[`## Environment`,``,`**Platform:** ${r.system.platform} ${r.system.arch}`,`**OS:** ${r.system.type} ${r.system.release}`,`**Host:** ${r.system.hostname}`,`**CPUs:** ${r.system.cpus}`,`**Memory:** ${r.system.memoryFreeGb}GB free / ${r.system.memoryTotalGb}GB total`,``,`**Node:** ${r.runtime.node}`,`**V8:** ${r.runtime.v8}`,`**CWD:** ${r.cwd}`];if(r.env){a.push(``,`### Environment Variables`,``);for(let[e,t]of Object.entries(r.env))a.push(`- \`${e}\`: ${t}`)}return{content:[{type:`text`,text:a.join(`
|
|
10
|
+
`)}]}})}function C(e){e.registerTool(`time`,{description:`Parse dates, convert timezones, calculate durations, add time. Supports ISO 8601, unix timestamps, and human-readable formats.`,inputSchema:{operation:f.enum([`now`,`parse`,`convert`,`diff`,`add`]).describe(`now: current time | parse: parse a date string | convert: timezone conversion | diff: duration between two dates | add: add duration to date`),input:f.string().optional().describe(`Date input (ISO, unix timestamp, or parseable string). For diff: two comma-separated dates`),timezone:f.string().optional().describe(`Target timezone (e.g., "America/New_York", "Asia/Tokyo")`),duration:f.string().optional().describe(`Duration to add (e.g., "2h30m", "1d", "30s") — for add operation`)}},async({operation:e,input:n,timezone:r,duration:i})=>{try{let t=u({operation:e,input:n,timezone:r,duration:i}),a=[`**${t.output}**`,``,`ISO: ${t.iso}`,`Unix: ${t.unix}`];return t.details&&a.push(``,"```json",JSON.stringify(t.details,null,2),"```"),{content:[{type:`text`,text:a.join(`
|
|
11
|
+
`)}]}}catch(e){return p.error(`Time failed`,t(e)),{content:[{type:`text`,text:`Time failed. Check server logs for details.`}],isError:!0}}})}export{y as registerChangelogTool,_ as registerEncodeTool,S as registerEnvTool,h as registerHttpTool,v as registerMeasureTool,g as registerRegexTestTool,b as registerSchemaValidateTool,x as registerSnippetTool,C as registerTimeTool,m as registerWebSearchTool};
|
|
12
|
+
//# sourceMappingURL=utility.tools.js.map
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
//#region packages/server/src/version-check.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Non-blocking check for newer @vpxa/kb versions on npm.
|
|
3
4
|
* Logs a warning to stderr if the running version is outdated.
|
|
4
5
|
*/
|
|
6
|
+
declare function getCurrentVersion(): string;
|
|
5
7
|
/**
|
|
6
8
|
* Check for a newer version on npm and log a warning if outdated.
|
|
7
9
|
* This is fire-and-forget — it never throws and never blocks startup.
|
|
8
10
|
*/
|
|
9
|
-
|
|
11
|
+
declare function checkForUpdates(): void;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { checkForUpdates, getCurrentVersion };
|
|
10
14
|
//# sourceMappingURL=version-check.d.ts.map
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import{readFileSync as
|
|
1
|
+
import{readFileSync as e}from"node:fs";import{dirname as t,resolve as n}from"node:path";import{fileURLToPath as r}from"node:url";import{createLogger as i}from"../../core/dist/index.js";const a=i(`server`);function o(){let i=n(t(r(import.meta.url)),`..`,`..`,`..`,`package.json`);try{return JSON.parse(e(i,`utf-8`)).version??`0.0.0`}catch{return`0.0.0`}}function s(e,t){let n=e.split(`.`).map(Number),r=t.split(`.`).map(Number);for(let e=0;e<3;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t>0?1:-1}return 0}function c(){let e=o();fetch(`https://registry.npmjs.org/@vpxa/kb/latest`,{signal:AbortSignal.timeout(5e3)}).then(e=>{if(e.ok)return e.json()}).then(t=>{if(!t||typeof t!=`object`)return;let n=t.version;n&&s(e,n)<0&&a.warn(`Update available`,{currentVersion:e,latestVersion:n,updateCommand:`npx @vpxa/kb@${n} serve`,configHint:`update your mcp.json`})}).catch(()=>{})}export{c as checkForUpdates,o as getCurrentVersion};
|
|
2
|
+
//# sourceMappingURL=version-check.js.map
|
|
@@ -1,104 +1,107 @@
|
|
|
1
|
+
//#region packages/store/src/graph-store.interface.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Knowledge graph store abstraction — typed nodes + edges for entity-relationship storage.
|
|
3
4
|
* Complements the vector store: vector search finds similar content,
|
|
4
5
|
* graph traversal finds connected concepts.
|
|
5
6
|
*/
|
|
6
7
|
/** A node in the knowledge graph (entity, concept, service, etc.) */
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
8
|
+
interface GraphNode {
|
|
9
|
+
/** Unique identifier */
|
|
10
|
+
id: string;
|
|
11
|
+
/** Node type (e.g., 'entity', 'service', 'api', 'concept', 'decision') */
|
|
12
|
+
type: string;
|
|
13
|
+
/** Display name */
|
|
14
|
+
name: string;
|
|
15
|
+
/** Arbitrary properties */
|
|
16
|
+
properties: Record<string, unknown>;
|
|
17
|
+
/** Back-link to KnowledgeRecord.id that produced this node */
|
|
18
|
+
sourceRecordId?: string;
|
|
19
|
+
/** Source file path (for cleanup on re-index) */
|
|
20
|
+
sourcePath?: string;
|
|
21
|
+
/** ISO timestamp */
|
|
22
|
+
createdAt?: string;
|
|
22
23
|
}
|
|
23
24
|
/** An edge connecting two nodes */
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
25
|
+
interface GraphEdge {
|
|
26
|
+
/** Unique identifier */
|
|
27
|
+
id: string;
|
|
28
|
+
/** Source node ID */
|
|
29
|
+
fromId: string;
|
|
30
|
+
/** Target node ID */
|
|
31
|
+
toId: string;
|
|
32
|
+
/** Relationship type (e.g., 'depends-on', 'implements', 'calls', 'affects') */
|
|
33
|
+
type: string;
|
|
34
|
+
/** Optional weight (0-1) */
|
|
35
|
+
weight?: number;
|
|
36
|
+
/** Arbitrary properties */
|
|
37
|
+
properties?: Record<string, unknown>;
|
|
37
38
|
}
|
|
38
39
|
/** Options for graph traversal */
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
40
|
+
interface GraphTraversalOptions {
|
|
41
|
+
/** Relationship type filter */
|
|
42
|
+
edgeType?: string;
|
|
43
|
+
/** Max traversal depth (default: 2) */
|
|
44
|
+
maxDepth?: number;
|
|
45
|
+
/** Direction: outgoing from start, incoming to start, or both */
|
|
46
|
+
direction?: 'outgoing' | 'incoming' | 'both';
|
|
47
|
+
/** Max total nodes returned (default: 50) */
|
|
48
|
+
limit?: number;
|
|
48
49
|
}
|
|
49
50
|
/** Result of a graph traversal */
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
interface GraphTraversalResult {
|
|
52
|
+
nodes: GraphNode[];
|
|
53
|
+
edges: GraphEdge[];
|
|
53
54
|
}
|
|
54
55
|
/** Graph statistics */
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
interface GraphStats {
|
|
57
|
+
nodeCount: number;
|
|
58
|
+
edgeCount: number;
|
|
59
|
+
nodeTypes: Record<string, number>;
|
|
60
|
+
edgeTypes: Record<string, number>;
|
|
60
61
|
}
|
|
61
62
|
/** Knowledge graph store interface */
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
63
|
+
interface IGraphStore {
|
|
64
|
+
/** Initialize the store (create tables, indices) */
|
|
65
|
+
initialize(): Promise<void>;
|
|
66
|
+
/** Add or update a single node */
|
|
67
|
+
upsertNode(node: GraphNode): Promise<void>;
|
|
68
|
+
/** Add or update a single edge */
|
|
69
|
+
upsertEdge(edge: GraphEdge): Promise<void>;
|
|
70
|
+
/** Batch add/update nodes */
|
|
71
|
+
upsertNodes(nodes: GraphNode[]): Promise<void>;
|
|
72
|
+
/** Batch add/update edges */
|
|
73
|
+
upsertEdges(edges: GraphEdge[]): Promise<void>;
|
|
74
|
+
/** Get a node by ID */
|
|
75
|
+
getNode(id: string): Promise<GraphNode | null>;
|
|
76
|
+
/** Get direct neighbors of a node */
|
|
77
|
+
getNeighbors(nodeId: string, options?: GraphTraversalOptions): Promise<GraphTraversalResult>;
|
|
78
|
+
/** Multi-hop traversal from a starting node */
|
|
79
|
+
traverse(startId: string, options?: GraphTraversalOptions): Promise<GraphTraversalResult>;
|
|
80
|
+
/** Find nodes by type and/or name pattern */
|
|
81
|
+
findNodes(filter: {
|
|
82
|
+
type?: string;
|
|
83
|
+
namePattern?: string;
|
|
84
|
+
sourcePath?: string;
|
|
85
|
+
limit?: number;
|
|
86
|
+
}): Promise<GraphNode[]>;
|
|
87
|
+
/** Find edges by type between optional node filters */
|
|
88
|
+
findEdges(filter: {
|
|
89
|
+
type?: string;
|
|
90
|
+
fromId?: string;
|
|
91
|
+
toId?: string;
|
|
92
|
+
limit?: number;
|
|
93
|
+
}): Promise<GraphEdge[]>;
|
|
94
|
+
/** Delete a node and all its edges */
|
|
95
|
+
deleteNode(id: string): Promise<void>;
|
|
96
|
+
/** Delete all nodes/edges originating from a source path */
|
|
97
|
+
deleteBySourcePath(sourcePath: string): Promise<number>;
|
|
98
|
+
/** Delete all nodes and edges (full reset) */
|
|
99
|
+
clear(): Promise<void>;
|
|
100
|
+
/** Get graph statistics */
|
|
101
|
+
getStats(): Promise<GraphStats>;
|
|
102
|
+
/** Close the store */
|
|
103
|
+
close(): Promise<void>;
|
|
103
104
|
}
|
|
105
|
+
//#endregion
|
|
106
|
+
export { GraphEdge, GraphNode, GraphStats, GraphTraversalOptions, GraphTraversalResult, IGraphStore };
|
|
104
107
|
//# sourceMappingURL=graph-store.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { GraphEdge, GraphNode, GraphStats, GraphTraversalOptions, GraphTraversalResult, IGraphStore } from "./graph-store.interface.js";
|
|
2
|
+
import { IKnowledgeStore, SearchOptions } from "./store.interface.js";
|
|
3
|
+
import { LanceStore } from "./lance-store.js";
|
|
4
|
+
import { SqliteGraphStore } from "./sqlite-graph-store.js";
|
|
5
|
+
import { StoreBackend, StoreConfig, createStore } from "./store-factory.js";
|
|
6
|
+
export { type GraphEdge, type GraphNode, type GraphStats, type GraphTraversalOptions, type GraphTraversalResult, type IGraphStore, type IKnowledgeStore, LanceStore, type SearchOptions, SqliteGraphStore, type StoreBackend, type StoreConfig, createStore };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{LanceStore as
|
|
1
|
+
import{LanceStore as e}from"./lance-store.js";import{SqliteGraphStore as t}from"./sqlite-graph-store.js";import{createStore as n}from"./store-factory.js";export{e as LanceStore,t as SqliteGraphStore,n as createStore};
|
|
@@ -1,32 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
1
|
+
import { IKnowledgeStore, SearchOptions } from "./store.interface.js";
|
|
2
|
+
import { IndexStats, KnowledgeRecord, SearchResult } from "@kb/core";
|
|
3
|
+
|
|
4
|
+
//#region packages/store/src/lance-store.d.ts
|
|
5
|
+
declare class LanceStore implements IKnowledgeStore {
|
|
6
|
+
private db;
|
|
7
|
+
private table;
|
|
8
|
+
private readonly dbPath;
|
|
9
|
+
private readonly tableName;
|
|
10
|
+
private _writeQueue;
|
|
11
|
+
private enqueueWrite;
|
|
12
|
+
constructor(options?: {
|
|
13
|
+
path?: string;
|
|
14
|
+
tableName?: string;
|
|
15
|
+
});
|
|
16
|
+
initialize(): Promise<void>;
|
|
17
|
+
upsert(records: KnowledgeRecord[], vectors: Float32Array[]): Promise<void>;
|
|
18
|
+
private _upsertImpl;
|
|
19
|
+
search(queryVector: Float32Array, options?: SearchOptions): Promise<SearchResult[]>;
|
|
20
|
+
createFtsIndex(): Promise<void>;
|
|
21
|
+
private _createFtsIndexImpl;
|
|
22
|
+
ftsSearch(query: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
23
|
+
getById(id: string): Promise<KnowledgeRecord | null>;
|
|
24
|
+
deleteBySourcePath(sourcePath: string): Promise<number>;
|
|
25
|
+
private _deleteBySourcePathImpl;
|
|
26
|
+
deleteById(id: string): Promise<boolean>;
|
|
27
|
+
private _deleteByIdImpl;
|
|
28
|
+
getBySourcePath(sourcePath: string): Promise<KnowledgeRecord[]>;
|
|
29
|
+
getStats(): Promise<IndexStats>;
|
|
30
|
+
listSourcePaths(): Promise<string[]>;
|
|
31
|
+
dropTable(): Promise<void>;
|
|
32
|
+
private _dropTableImpl;
|
|
33
|
+
close(): Promise<void>;
|
|
34
|
+
private buildFilterString;
|
|
35
|
+
private fromLanceRecord;
|
|
31
36
|
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { LanceStore };
|
|
32
39
|
//# sourceMappingURL=lance-store.d.ts.map
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import{EMBEDDING_DEFAULTS as
|
|
1
|
+
import{EMBEDDING_DEFAULTS as e,SEARCH_DEFAULTS as t,STORE_DEFAULTS as n,createLogger as r,serializeError as i,sourceTypeContentTypes as a}from"../../core/dist/index.js";import{Index as o,connect as s}from"@lancedb/lancedb";function c(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}const l=/^[\w.\-/ ]+$/,u=r(`store`);function d(e,t){if(!l.test(e))throw Error(`Invalid ${t} filter value: contains disallowed characters`);return e.replace(/'/g,`''`)}var f=class{db=null;table=null;dbPath;tableName;_writeQueue=Promise.resolve();enqueueWrite(e){let t=this._writeQueue.then(()=>e());return this._writeQueue=t.then(()=>void 0,()=>void 0),t}constructor(e){this.dbPath=e?.path??n.path,this.tableName=e?.tableName??n.tableName}async initialize(){this.db=await s(this.dbPath),(await this.db.tableNames()).includes(this.tableName)&&(this.table=await this.db.openTable(this.tableName),await this.createFtsIndex())}async upsert(e,t){if(e.length!==0){if(e.length!==t.length)throw Error(`Record count (${e.length}) does not match vector count (${t.length})`);return this.enqueueWrite(()=>this._upsertImpl(e,t))}}async _upsertImpl(e,t){let n=e.map((e,n)=>({id:e.id,vector:Array.from(t[n]),content:e.content,sourcePath:e.sourcePath,contentType:e.contentType,headingPath:e.headingPath??``,chunkIndex:e.chunkIndex,totalChunks:e.totalChunks,startLine:e.startLine,endLine:e.endLine,fileHash:e.fileHash,indexedAt:e.indexedAt,origin:e.origin,tags:JSON.stringify(e.tags),category:e.category??``,version:e.version}));if(this.table){let t=[...new Set(e.map(e=>e.sourcePath))];for(let e of t)try{await this.table.delete(`sourcePath = '${d(e,`sourcePath`)}'`)}catch{}await this.table.add(n)}else try{this.table=await this.db?.createTable(this.tableName,n)??null}catch(e){if(String(e).includes(`already exists`)&&this.db)this.table=await this.db.openTable(this.tableName),await this.table.add(n);else throw e}}async search(e,n){if(!this.table)return[];let r=n?.limit??t.maxResults,i=n?.minScore??t.minScore,a=this.table.search(e).limit(r*2),o=this.buildFilterString(n);return o&&(a=a.where(o)),(await a.toArray()).map(e=>({record:this.fromLanceRecord(e),score:1-(e._distance??1)})).filter(e=>e.score>=i).slice(0,r)}async createFtsIndex(){return this.enqueueWrite(()=>this._createFtsIndexImpl())}async _createFtsIndexImpl(){if(this.table)try{await this.table.createIndex(`content`,{config:o.fts()}),u.info(`FTS index created`,{column:`content`})}catch(e){String(e).includes(`already exists`)||u.warn(`FTS index creation failed`,i(e))}}async ftsSearch(e,n){if(!this.table)return[];let r=n?.limit??t.maxResults;try{let t=this.table.search(e).limit(r*2),i=this.buildFilterString(n);return i&&(t=t.where(i)),(await t.toArray()).map(e=>({record:this.fromLanceRecord(e),score:e._score??e._relevance_score??0}))}catch(e){return u.warn(`FTS search failed`,i(e)),[]}}async getById(e){if(!this.table)return null;let t=await this.table.query().where(`id = '${d(e,`id`)}'`).limit(1).toArray();return t.length===0?null:this.fromLanceRecord(t[0])}async deleteBySourcePath(e){return this.enqueueWrite(()=>this._deleteBySourcePathImpl(e))}async _deleteBySourcePathImpl(e){if(!this.table)return 0;let t=await this.getBySourcePath(e);return t.length===0?0:(await this.table.delete(`sourcePath = '${d(e,`sourcePath`)}'`),t.length)}async deleteById(e){return this.enqueueWrite(()=>this._deleteByIdImpl(e))}async _deleteByIdImpl(e){return!this.table||!await this.getById(e)?!1:(await this.table.delete(`id = '${d(e,`id`)}'`),!0)}async getBySourcePath(e){return this.table?(await this.table.query().where(`sourcePath = '${d(e,`sourcePath`)}'`).limit(1e3).toArray()).map(e=>this.fromLanceRecord(e)):[]}async getStats(){if(!this.table)return{totalRecords:0,totalFiles:0,contentTypeBreakdown:{},lastIndexedAt:null,storeBackend:`lancedb`,embeddingModel:e.model};let t=await this.table.countRows(),n=await this.table.query().select([`sourcePath`,`contentType`,`indexedAt`]).limit(1e5).toArray(),r={},i=new Set,a=null;for(let e of n){let t=e;r[t.contentType]=(r[t.contentType]??0)+1,i.add(t.sourcePath),(!a||t.indexedAt>a)&&(a=t.indexedAt)}return{totalRecords:t,totalFiles:i.size,contentTypeBreakdown:r,lastIndexedAt:a,storeBackend:`lancedb`,embeddingModel:e.model}}async listSourcePaths(){if(!this.table)return[];let e=await this.table.query().select([`sourcePath`]).limit(1e5).toArray();return[...new Set(e.map(e=>e.sourcePath))]}async dropTable(){return this.enqueueWrite(()=>this._dropTableImpl())}async _dropTableImpl(){if(this.db&&(await this.db.tableNames()).includes(this.tableName))for(let e=1;e<=3;e++)try{await this.db.dropTable(this.tableName);break}catch(t){if(e===3)throw t;let n=e*500;u.warn(`dropTable attempt failed, retrying`,{attempt:e,delayMs:n}),await new Promise(e=>setTimeout(e,n))}this.table=null}async close(){try{this.db&&typeof this.db.close==`function`&&await this.db.close()}catch{}this.table=null,this.db=null}buildFilterString(e){let t=[];if(e?.contentType&&t.push(`contentType = '${d(e.contentType,`contentType`)}'`),e?.sourceType){let n=a(e.sourceType);if(n.length>0){let e=n.map(e=>`'${d(e,`sourceType`)}'`).join(`, `);t.push(`contentType IN (${e})`)}}if(e?.origin&&t.push(`origin = '${d(e.origin,`origin`)}'`),e?.category&&t.push(`category = '${d(e.category,`category`)}'`),e?.tags&&e.tags.length>0){let n=e.tags.map(e=>`tags LIKE '%${d(e,`tag`)}%'`);t.push(`(${n.join(` OR `)})`)}return t.length>0?t.join(` AND `):null}fromLanceRecord(e){return{id:e.id,content:e.content,sourcePath:e.sourcePath,contentType:e.contentType,headingPath:e.headingPath||void 0,chunkIndex:e.chunkIndex,totalChunks:e.totalChunks,startLine:e.startLine,endLine:e.endLine,fileHash:e.fileHash,indexedAt:e.indexedAt,origin:e.origin,tags:c(e.tags),category:e.category||void 0,version:e.version}}};export{f as LanceStore};
|
|
2
|
+
//# sourceMappingURL=lance-store.js.map
|
|
@@ -1,48 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
deleteNode(id: string): Promise<void>;
|
|
43
|
-
deleteBySourcePath(sourcePath: string): Promise<number>;
|
|
44
|
-
clear(): Promise<void>;
|
|
45
|
-
getStats(): Promise<GraphStats>;
|
|
46
|
-
close(): Promise<void>;
|
|
1
|
+
import { GraphEdge, GraphNode, GraphStats, GraphTraversalOptions, GraphTraversalResult, IGraphStore } from "./graph-store.interface.js";
|
|
2
|
+
|
|
3
|
+
//#region packages/store/src/sqlite-graph-store.d.ts
|
|
4
|
+
declare class SqliteGraphStore implements IGraphStore {
|
|
5
|
+
private db;
|
|
6
|
+
private readonly dbPath;
|
|
7
|
+
private dirty;
|
|
8
|
+
constructor(options?: {
|
|
9
|
+
path?: string;
|
|
10
|
+
});
|
|
11
|
+
initialize(): Promise<void>;
|
|
12
|
+
private ensureDb;
|
|
13
|
+
private persist;
|
|
14
|
+
private markDirty;
|
|
15
|
+
private flushIfDirty;
|
|
16
|
+
private query;
|
|
17
|
+
private run;
|
|
18
|
+
upsertNode(node: GraphNode): Promise<void>;
|
|
19
|
+
upsertEdge(edge: GraphEdge): Promise<void>;
|
|
20
|
+
upsertNodes(nodes: GraphNode[]): Promise<void>;
|
|
21
|
+
upsertEdges(edges: GraphEdge[]): Promise<void>;
|
|
22
|
+
getNode(id: string): Promise<GraphNode | null>;
|
|
23
|
+
getNeighbors(nodeId: string, options?: GraphTraversalOptions): Promise<GraphTraversalResult>;
|
|
24
|
+
traverse(startId: string, options?: GraphTraversalOptions): Promise<GraphTraversalResult>;
|
|
25
|
+
findNodes(filter: {
|
|
26
|
+
type?: string;
|
|
27
|
+
namePattern?: string;
|
|
28
|
+
sourcePath?: string;
|
|
29
|
+
limit?: number;
|
|
30
|
+
}): Promise<GraphNode[]>;
|
|
31
|
+
findEdges(filter: {
|
|
32
|
+
type?: string;
|
|
33
|
+
fromId?: string;
|
|
34
|
+
toId?: string;
|
|
35
|
+
limit?: number;
|
|
36
|
+
}): Promise<GraphEdge[]>;
|
|
37
|
+
deleteNode(id: string): Promise<void>;
|
|
38
|
+
deleteBySourcePath(sourcePath: string): Promise<number>;
|
|
39
|
+
clear(): Promise<void>;
|
|
40
|
+
getStats(): Promise<GraphStats>;
|
|
41
|
+
close(): Promise<void>;
|
|
47
42
|
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { SqliteGraphStore };
|
|
48
45
|
//# sourceMappingURL=sqlite-graph-store.d.ts.map
|