kirograph 0.17.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +105 -1822
- package/dist/architecture/layers/dart.d.ts +10 -0
- package/dist/architecture/layers/dart.d.ts.map +1 -0
- package/dist/architecture/layers/dart.js +112 -0
- package/dist/architecture/layers/dart.js.map +7 -0
- package/dist/architecture/layers/elixir.d.ts +6 -0
- package/dist/architecture/layers/elixir.d.ts.map +1 -0
- package/dist/architecture/layers/index.d.ts.map +1 -1
- package/dist/architecture/layers/index.js +3 -1
- package/dist/architecture/layers/index.js.map +2 -2
- package/dist/architecture/layers/ocaml.d.ts +6 -0
- package/dist/architecture/layers/ocaml.d.ts.map +1 -0
- package/dist/architecture/layers/scala.d.ts +6 -0
- package/dist/architecture/layers/scala.d.ts.map +1 -0
- package/dist/architecture/layers/solidity.d.ts +6 -0
- package/dist/architecture/layers/solidity.d.ts.map +1 -0
- package/dist/architecture/layers/vue.d.ts +6 -0
- package/dist/architecture/layers/vue.d.ts.map +1 -0
- package/dist/architecture/manifest/elm.d.ts +3 -0
- package/dist/architecture/manifest/elm.d.ts.map +1 -0
- package/dist/architecture/manifest/index.d.ts.map +1 -1
- package/dist/architecture/manifest/ocaml.d.ts +3 -0
- package/dist/architecture/manifest/ocaml.d.ts.map +1 -0
- package/dist/architecture/manifest/scala.d.ts +3 -0
- package/dist/architecture/manifest/scala.d.ts.map +1 -0
- package/dist/bin/banner.d.ts.map +1 -1
- package/dist/bin/banner.js +74 -6
- package/dist/bin/banner.js.map +2 -2
- package/dist/bin/commands/affected.d.ts.map +1 -1
- package/dist/bin/commands/attack-surface.d.ts +3 -0
- package/dist/bin/commands/attack-surface.d.ts.map +1 -0
- package/dist/bin/commands/attack-surface.js +164 -0
- package/dist/bin/commands/attack-surface.js.map +7 -0
- package/dist/bin/commands/benchmark.d.ts +9 -0
- package/dist/bin/commands/benchmark.d.ts.map +1 -0
- package/dist/bin/commands/benchmark.js +206 -0
- package/dist/bin/commands/benchmark.js.map +7 -0
- package/dist/bin/commands/budget.d.ts +6 -0
- package/dist/bin/commands/budget.d.ts.map +1 -0
- package/dist/bin/commands/budget.js +70 -0
- package/dist/bin/commands/budget.js.map +7 -0
- package/dist/bin/commands/caveman.d.ts +7 -0
- package/dist/bin/commands/caveman.d.ts.map +1 -0
- package/dist/bin/commands/communities.d.ts +3 -0
- package/dist/bin/commands/communities.d.ts.map +1 -0
- package/dist/bin/commands/communities.js +77 -0
- package/dist/bin/commands/communities.js.map +7 -0
- package/dist/bin/commands/compression.d.ts +7 -0
- package/dist/bin/commands/compression.d.ts.map +1 -0
- package/dist/bin/commands/context.d.ts.map +1 -1
- package/dist/bin/commands/data.d.ts +3 -0
- package/dist/bin/commands/data.d.ts.map +1 -0
- package/dist/bin/commands/dead-code.d.ts +3 -0
- package/dist/bin/commands/dead-code.d.ts.map +1 -0
- package/dist/bin/commands/dep-confusion.d.ts +3 -0
- package/dist/bin/commands/dep-confusion.d.ts.map +1 -0
- package/dist/bin/commands/dep-confusion.js +119 -0
- package/dist/bin/commands/dep-confusion.js.map +7 -0
- package/dist/bin/commands/docs.d.ts +3 -0
- package/dist/bin/commands/docs.d.ts.map +1 -0
- package/dist/bin/commands/exec.d.ts +11 -0
- package/dist/bin/commands/exec.d.ts.map +1 -0
- package/dist/bin/commands/export.d.ts +3 -0
- package/dist/bin/commands/export.d.ts.map +1 -0
- package/dist/bin/commands/export.js +304 -10
- package/dist/bin/commands/export.js.map +2 -2
- package/dist/bin/commands/flows.d.ts +3 -0
- package/dist/bin/commands/flows.d.ts.map +1 -0
- package/dist/bin/commands/flows.js +97 -0
- package/dist/bin/commands/flows.js.map +7 -0
- package/dist/bin/commands/gain.d.ts +6 -0
- package/dist/bin/commands/gain.d.ts.map +1 -0
- package/dist/bin/commands/help.d.ts +7 -0
- package/dist/bin/commands/help.d.ts.map +1 -1
- package/dist/bin/commands/help.js +399 -101
- package/dist/bin/commands/help.js.map +2 -2
- package/dist/bin/commands/hotspots.d.ts +3 -0
- package/dist/bin/commands/hotspots.d.ts.map +1 -0
- package/dist/bin/commands/hotspots.js +94 -1
- package/dist/bin/commands/hotspots.js.map +3 -3
- package/dist/bin/commands/install.d.ts.map +1 -1
- package/dist/bin/commands/install.js +90 -8
- package/dist/bin/commands/install.js.map +2 -2
- package/dist/bin/commands/licenses.d.ts +3 -0
- package/dist/bin/commands/licenses.d.ts.map +1 -0
- package/dist/bin/commands/licenses.js +201 -0
- package/dist/bin/commands/licenses.js.map +7 -0
- package/dist/bin/commands/memory.d.ts +16 -0
- package/dist/bin/commands/memory.d.ts.map +1 -0
- package/dist/bin/commands/memory.js +151 -4
- package/dist/bin/commands/memory.js.map +2 -2
- package/dist/bin/commands/path.d.ts +3 -0
- package/dist/bin/commands/path.d.ts.map +1 -0
- package/dist/bin/commands/pattern.d.ts +3 -0
- package/dist/bin/commands/pattern.d.ts.map +1 -0
- package/dist/bin/commands/pattern.js +592 -0
- package/dist/bin/commands/pattern.js.map +7 -0
- package/dist/bin/commands/query.d.ts.map +1 -1
- package/dist/bin/commands/reachability.d.ts +3 -0
- package/dist/bin/commands/reachability.d.ts.map +1 -0
- package/dist/bin/commands/reachability.js +160 -0
- package/dist/bin/commands/reachability.js.map +7 -0
- package/dist/bin/commands/read.d.ts +6 -0
- package/dist/bin/commands/read.d.ts.map +1 -0
- package/dist/bin/commands/read.js +100 -0
- package/dist/bin/commands/read.js.map +7 -0
- package/dist/bin/commands/refactor.d.ts +3 -0
- package/dist/bin/commands/refactor.d.ts.map +1 -0
- package/dist/bin/commands/refactor.js +116 -0
- package/dist/bin/commands/refactor.js.map +7 -0
- package/dist/bin/commands/remediation.d.ts +3 -0
- package/dist/bin/commands/remediation.d.ts.map +1 -0
- package/dist/bin/commands/remediation.js +133 -0
- package/dist/bin/commands/remediation.js.map +7 -0
- package/dist/bin/commands/sbom.d.ts +3 -0
- package/dist/bin/commands/sbom.d.ts.map +1 -0
- package/dist/bin/commands/sbom.js +76 -0
- package/dist/bin/commands/sbom.js.map +7 -0
- package/dist/bin/commands/security-ci-report.d.ts +9 -0
- package/dist/bin/commands/security-ci-report.d.ts.map +1 -0
- package/dist/bin/commands/security-ci-report.js +267 -0
- package/dist/bin/commands/security-ci-report.js.map +7 -0
- package/dist/bin/commands/security-export.d.ts +2 -0
- package/dist/bin/commands/security-export.d.ts.map +1 -0
- package/dist/bin/commands/security-export.js +1349 -0
- package/dist/bin/commands/security-export.js.map +7 -0
- package/dist/bin/commands/security-flows.d.ts +3 -0
- package/dist/bin/commands/security-flows.d.ts.map +1 -0
- package/dist/bin/commands/security-flows.js +126 -0
- package/dist/bin/commands/security-flows.js.map +7 -0
- package/dist/bin/commands/security-secrets.d.ts +3 -0
- package/dist/bin/commands/security-secrets.d.ts.map +1 -0
- package/dist/bin/commands/security-secrets.js +170 -0
- package/dist/bin/commands/security-secrets.js.map +7 -0
- package/dist/bin/commands/security.d.ts +3 -0
- package/dist/bin/commands/security.d.ts.map +1 -0
- package/dist/bin/commands/security.js +208 -0
- package/dist/bin/commands/security.js.map +7 -0
- package/dist/bin/commands/snapshot.d.ts +3 -0
- package/dist/bin/commands/snapshot.d.ts.map +1 -0
- package/dist/bin/commands/staleness.d.ts +3 -0
- package/dist/bin/commands/staleness.d.ts.map +1 -0
- package/dist/bin/commands/staleness.js +144 -0
- package/dist/bin/commands/staleness.js.map +7 -0
- package/dist/bin/commands/status.d.ts.map +1 -1
- package/dist/bin/commands/status.js +129 -2
- package/dist/bin/commands/status.js.map +2 -2
- package/dist/bin/commands/supply-chain.d.ts +3 -0
- package/dist/bin/commands/supply-chain.d.ts.map +1 -0
- package/dist/bin/commands/supply-chain.js +138 -0
- package/dist/bin/commands/supply-chain.js.map +7 -0
- package/dist/bin/commands/surprising.d.ts +3 -0
- package/dist/bin/commands/surprising.d.ts.map +1 -0
- package/dist/bin/commands/sync.d.ts.map +1 -1
- package/dist/bin/commands/uninit.d.ts.map +1 -1
- package/dist/bin/commands/uninit.js +109 -60
- package/dist/bin/commands/uninit.js.map +2 -2
- package/dist/bin/commands/utils.d.ts +5 -0
- package/dist/bin/commands/utils.d.ts.map +1 -1
- package/dist/bin/commands/vex.d.ts +3 -0
- package/dist/bin/commands/vex.d.ts.map +1 -0
- package/dist/bin/commands/vex.js +76 -0
- package/dist/bin/commands/vex.js.map +7 -0
- package/dist/bin/commands/vuln-suppress.d.ts +3 -0
- package/dist/bin/commands/vuln-suppress.d.ts.map +1 -0
- package/dist/bin/commands/vuln-suppress.js +95 -0
- package/dist/bin/commands/vuln-suppress.js.map +7 -0
- package/dist/bin/commands/vulns.d.ts +3 -0
- package/dist/bin/commands/vulns.d.ts.map +1 -0
- package/dist/bin/commands/vulns.js +382 -0
- package/dist/bin/commands/vulns.js.map +7 -0
- package/dist/bin/installer/archive.d.ts +47 -0
- package/dist/bin/installer/archive.d.ts.map +1 -0
- package/dist/bin/installer/auto-detect.d.ts +16 -0
- package/dist/bin/installer/auto-detect.d.ts.map +1 -0
- package/dist/bin/installer/auto-detect.js +125 -0
- package/dist/bin/installer/auto-detect.js.map +7 -0
- package/dist/bin/installer/caveman.d.ts +12 -0
- package/dist/bin/installer/caveman.d.ts.map +1 -0
- package/dist/bin/installer/cli-agent.d.ts +7 -2
- package/dist/bin/installer/cli-agent.d.ts.map +1 -1
- package/dist/bin/installer/cli-agent.js +32 -5
- package/dist/bin/installer/cli-agent.js.map +2 -2
- package/dist/bin/installer/common.d.ts +36 -0
- package/dist/bin/installer/common.d.ts.map +1 -0
- package/dist/bin/installer/common.js +48 -0
- package/dist/bin/installer/common.js.map +2 -2
- package/dist/bin/installer/config-prompt.d.ts +1 -1
- package/dist/bin/installer/config-prompt.d.ts.map +1 -1
- package/dist/bin/installer/config-prompt.js +85 -2
- package/dist/bin/installer/config-prompt.js.map +2 -2
- package/dist/bin/installer/dashboard.d.ts.map +1 -1
- package/dist/bin/installer/detect.d.ts +30 -0
- package/dist/bin/installer/detect.d.ts.map +1 -0
- package/dist/bin/installer/detect.js +309 -0
- package/dist/bin/installer/detect.js.map +7 -0
- package/dist/bin/installer/hooks.d.ts +4 -1
- package/dist/bin/installer/hooks.d.ts.map +1 -1
- package/dist/bin/installer/hooks.js +34 -0
- package/dist/bin/installer/hooks.js.map +2 -2
- package/dist/bin/installer/index.d.ts +5 -4
- package/dist/bin/installer/index.d.ts.map +1 -1
- package/dist/bin/installer/index.js +46 -8
- package/dist/bin/installer/index.js.map +2 -2
- package/dist/bin/installer/instructions.d.ts +14 -0
- package/dist/bin/installer/instructions.d.ts.map +1 -0
- package/dist/bin/installer/instructions.js +209 -3
- package/dist/bin/installer/instructions.js.map +2 -2
- package/dist/bin/installer/mcp.d.ts.map +1 -1
- package/dist/bin/installer/prompts.d.ts +17 -0
- package/dist/bin/installer/prompts.d.ts.map +1 -1
- package/dist/bin/installer/qdrant-dashboard.d.ts.map +1 -1
- package/dist/bin/installer/steering.d.ts +14 -2
- package/dist/bin/installer/steering.d.ts.map +1 -1
- package/dist/bin/installer/steering.js +488 -0
- package/dist/bin/installer/steering.js.map +2 -2
- package/dist/bin/installer/targets/aider.d.ts +6 -0
- package/dist/bin/installer/targets/aider.d.ts.map +1 -0
- package/dist/bin/installer/targets/aider.js +3 -3
- package/dist/bin/installer/targets/aider.js.map +2 -2
- package/dist/bin/installer/targets/amp.d.ts +6 -0
- package/dist/bin/installer/targets/amp.d.ts.map +1 -0
- package/dist/bin/installer/targets/amp.js +3 -3
- package/dist/bin/installer/targets/amp.js.map +2 -2
- package/dist/bin/installer/targets/antigravity.d.ts +13 -0
- package/dist/bin/installer/targets/antigravity.d.ts.map +1 -0
- package/dist/bin/installer/targets/antigravity.js +35 -6
- package/dist/bin/installer/targets/antigravity.js.map +2 -2
- package/dist/bin/installer/targets/augment.d.ts +6 -0
- package/dist/bin/installer/targets/augment.d.ts.map +1 -0
- package/dist/bin/installer/targets/augment.js +3 -3
- package/dist/bin/installer/targets/augment.js.map +2 -2
- package/dist/bin/installer/targets/claude.d.ts +6 -0
- package/dist/bin/installer/targets/claude.d.ts.map +1 -0
- package/dist/bin/installer/targets/claude.js +49 -5
- package/dist/bin/installer/targets/claude.js.map +2 -2
- package/dist/bin/installer/targets/cline.d.ts +13 -0
- package/dist/bin/installer/targets/cline.d.ts.map +1 -0
- package/dist/bin/installer/targets/cline.js +32 -6
- package/dist/bin/installer/targets/cline.js.map +2 -2
- package/dist/bin/installer/targets/codex.d.ts +6 -0
- package/dist/bin/installer/targets/codex.d.ts.map +1 -0
- package/dist/bin/installer/targets/codex.js +64 -12
- package/dist/bin/installer/targets/codex.js.map +2 -2
- package/dist/bin/installer/targets/continue.d.ts +12 -0
- package/dist/bin/installer/targets/continue.d.ts.map +1 -0
- package/dist/bin/installer/targets/continue.js +2 -2
- package/dist/bin/installer/targets/continue.js.map +2 -2
- package/dist/bin/installer/targets/copilot-cli.d.ts +12 -0
- package/dist/bin/installer/targets/copilot-cli.d.ts.map +1 -0
- package/dist/bin/installer/targets/copilot-cli.js +101 -0
- package/dist/bin/installer/targets/copilot-cli.js.map +7 -0
- package/dist/bin/installer/targets/copilot.d.ts +6 -0
- package/dist/bin/installer/targets/copilot.d.ts.map +1 -0
- package/dist/bin/installer/targets/copilot.js +31 -5
- package/dist/bin/installer/targets/copilot.js.map +2 -2
- package/dist/bin/installer/targets/cursor.d.ts +6 -0
- package/dist/bin/installer/targets/cursor.d.ts.map +1 -0
- package/dist/bin/installer/targets/cursor.js +4 -4
- package/dist/bin/installer/targets/cursor.js.map +2 -2
- package/dist/bin/installer/targets/devin.d.ts +13 -0
- package/dist/bin/installer/targets/devin.d.ts.map +1 -0
- package/dist/bin/installer/targets/devin.js +2 -2
- package/dist/bin/installer/targets/devin.js.map +2 -2
- package/dist/bin/installer/targets/gemini-cli.d.ts +16 -0
- package/dist/bin/installer/targets/gemini-cli.d.ts.map +1 -0
- package/dist/bin/installer/targets/gemini-cli.js +2 -2
- package/dist/bin/installer/targets/gemini-cli.js.map +2 -2
- package/dist/bin/installer/targets/generic.d.ts +59 -0
- package/dist/bin/installer/targets/generic.d.ts.map +1 -0
- package/dist/bin/installer/targets/generic.js +2 -14
- package/dist/bin/installer/targets/generic.js.map +2 -2
- package/dist/bin/installer/targets/goose.d.ts +6 -0
- package/dist/bin/installer/targets/goose.d.ts.map +1 -0
- package/dist/bin/installer/targets/goose.js +3 -3
- package/dist/bin/installer/targets/goose.js.map +2 -2
- package/dist/bin/installer/targets/index.d.ts +11 -0
- package/dist/bin/installer/targets/index.d.ts.map +1 -0
- package/dist/bin/installer/targets/index.js +250 -0
- package/dist/bin/installer/targets/index.js.map +2 -2
- package/dist/bin/installer/targets/junie.d.ts +13 -0
- package/dist/bin/installer/targets/junie.d.ts.map +1 -0
- package/dist/bin/installer/targets/junie.js +2 -2
- package/dist/bin/installer/targets/junie.js.map +2 -2
- package/dist/bin/installer/targets/kilo.d.ts +12 -0
- package/dist/bin/installer/targets/kilo.d.ts.map +1 -0
- package/dist/bin/installer/targets/kilo.js +2 -2
- package/dist/bin/installer/targets/kilo.js.map +2 -2
- package/dist/bin/installer/targets/kiro.d.ts +5 -0
- package/dist/bin/installer/targets/kiro.d.ts.map +1 -0
- package/dist/bin/installer/targets/kiro.js +4 -4
- package/dist/bin/installer/targets/kiro.js.map +2 -2
- package/dist/bin/installer/targets/opencode.d.ts +13 -0
- package/dist/bin/installer/targets/opencode.d.ts.map +1 -0
- package/dist/bin/installer/targets/opencode.js +2 -2
- package/dist/bin/installer/targets/opencode.js.map +2 -2
- package/dist/bin/installer/targets/openhands.d.ts +6 -0
- package/dist/bin/installer/targets/openhands.d.ts.map +1 -0
- package/dist/bin/installer/targets/openhands.js +3 -3
- package/dist/bin/installer/targets/openhands.js.map +2 -2
- package/dist/bin/installer/targets/qoder.d.ts +12 -0
- package/dist/bin/installer/targets/qoder.d.ts.map +1 -0
- package/dist/bin/installer/targets/qoder.js +91 -0
- package/dist/bin/installer/targets/qoder.js.map +7 -0
- package/dist/bin/installer/targets/qwen.d.ts +12 -0
- package/dist/bin/installer/targets/qwen.d.ts.map +1 -0
- package/dist/bin/installer/targets/qwen.js +96 -0
- package/dist/bin/installer/targets/qwen.js.map +7 -0
- package/dist/bin/installer/targets/replit.d.ts +6 -0
- package/dist/bin/installer/targets/replit.d.ts.map +1 -0
- package/dist/bin/installer/targets/replit.js +3 -3
- package/dist/bin/installer/targets/replit.js.map +2 -2
- package/dist/bin/installer/targets/roo.d.ts +13 -0
- package/dist/bin/installer/targets/roo.d.ts.map +1 -0
- package/dist/bin/installer/targets/roo.js +2 -2
- package/dist/bin/installer/targets/roo.js.map +2 -2
- package/dist/bin/installer/targets/tabnine.d.ts +6 -0
- package/dist/bin/installer/targets/tabnine.d.ts.map +1 -0
- package/dist/bin/installer/targets/tabnine.js +3 -3
- package/dist/bin/installer/targets/tabnine.js.map +2 -2
- package/dist/bin/installer/targets/trae.d.ts +6 -0
- package/dist/bin/installer/targets/trae.d.ts.map +1 -0
- package/dist/bin/installer/targets/trae.js +5 -5
- package/dist/bin/installer/targets/trae.js.map +2 -2
- package/dist/bin/installer/targets/warp.d.ts +12 -0
- package/dist/bin/installer/targets/warp.d.ts.map +1 -0
- package/dist/bin/installer/targets/warp.js +2 -2
- package/dist/bin/installer/targets/warp.js.map +2 -2
- package/dist/bin/installer/targets/windsurf.d.ts +13 -0
- package/dist/bin/installer/targets/windsurf.d.ts.map +1 -0
- package/dist/bin/installer/targets/windsurf.js +35 -6
- package/dist/bin/installer/targets/windsurf.js.map +2 -2
- package/dist/bin/kirograph.js +74 -6
- package/dist/bin/kirograph.js.map +3 -3
- package/dist/bin/progress.d.ts +16 -1
- package/dist/bin/progress.d.ts.map +1 -1
- package/dist/compression/filters/aws.d.ts +9 -0
- package/dist/compression/filters/aws.d.ts.map +1 -0
- package/dist/compression/filters/docker.d.ts +6 -0
- package/dist/compression/filters/docker.d.ts.map +1 -0
- package/dist/compression/filters/files.d.ts +6 -0
- package/dist/compression/filters/files.d.ts.map +1 -0
- package/dist/compression/filters/generic.d.ts +7 -0
- package/dist/compression/filters/generic.d.ts.map +1 -0
- package/dist/compression/filters/git.d.ts +6 -0
- package/dist/compression/filters/git.d.ts.map +1 -0
- package/dist/compression/filters/github.d.ts +6 -0
- package/dist/compression/filters/github.d.ts.map +1 -0
- package/dist/compression/filters/lint.d.ts +6 -0
- package/dist/compression/filters/lint.d.ts.map +1 -0
- package/dist/compression/filters/misc.d.ts +6 -0
- package/dist/compression/filters/misc.d.ts.map +1 -0
- package/dist/compression/filters/package.d.ts +6 -0
- package/dist/compression/filters/package.d.ts.map +1 -0
- package/dist/compression/filters/test.d.ts +6 -0
- package/dist/compression/filters/test.d.ts.map +1 -0
- package/dist/compression/index.d.ts +29 -0
- package/dist/compression/index.d.ts.map +1 -0
- package/dist/compression/naive-cost.d.ts +26 -0
- package/dist/compression/naive-cost.d.ts.map +1 -0
- package/dist/compression/tracker.d.ts +155 -0
- package/dist/compression/tracker.d.ts.map +1 -0
- package/dist/compression/tracker.js +80 -0
- package/dist/compression/tracker.js.map +2 -2
- package/dist/compression/types.d.ts +49 -0
- package/dist/compression/types.d.ts.map +1 -0
- package/dist/config.d.ts +90 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +144 -3
- package/dist/config.js.map +2 -2
- package/dist/core/lock-manager.d.ts +2 -0
- package/dist/core/lock-manager.d.ts.map +1 -1
- package/dist/core/pipeline.d.ts +4 -1
- package/dist/core/pipeline.d.ts.map +1 -1
- package/dist/core/pipeline.js +78 -2
- package/dist/core/pipeline.js.map +2 -2
- package/dist/core/snapshot.d.ts +58 -0
- package/dist/core/snapshot.d.ts.map +1 -0
- package/dist/data/filters.d.ts +23 -0
- package/dist/data/filters.d.ts.map +1 -0
- package/dist/data/indexer.d.ts +25 -0
- package/dist/data/indexer.d.ts.map +1 -0
- package/dist/data/linker.d.ts +37 -0
- package/dist/data/linker.d.ts.map +1 -0
- package/dist/data/lint.d.ts +27 -0
- package/dist/data/lint.d.ts.map +1 -0
- package/dist/data/parsers/csv.d.ts +11 -0
- package/dist/data/parsers/csv.d.ts.map +1 -0
- package/dist/data/parsers/excel.d.ts +10 -0
- package/dist/data/parsers/excel.d.ts.map +1 -0
- package/dist/data/parsers/index.d.ts +28 -0
- package/dist/data/parsers/index.d.ts.map +1 -0
- package/dist/data/parsers/json-array.d.ts +9 -0
- package/dist/data/parsers/json-array.d.ts.map +1 -0
- package/dist/data/parsers/jsonl.d.ts +9 -0
- package/dist/data/parsers/jsonl.d.ts.map +1 -0
- package/dist/data/parsers/parquet.d.ts +10 -0
- package/dist/data/parsers/parquet.d.ts.map +1 -0
- package/dist/data/profiler.d.ts +29 -0
- package/dist/data/profiler.d.ts.map +1 -0
- package/dist/data/queries.d.ts +95 -0
- package/dist/data/queries.d.ts.map +1 -0
- package/dist/data/types.d.ts +103 -0
- package/dist/data/types.d.ts.map +1 -0
- package/dist/db/database.d.ts +57 -0
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/database.js +75 -5
- package/dist/db/database.js.map +2 -2
- package/dist/db/memory-schema.sql +5 -1
- package/dist/db/patterns-schema.sql +23 -0
- package/dist/db/schema.sql +3 -1
- package/dist/db/security-schema.sql +72 -0
- package/dist/docs/formats/asciidoc.d.ts +9 -0
- package/dist/docs/formats/asciidoc.d.ts.map +1 -0
- package/dist/docs/formats/html.d.ts +10 -0
- package/dist/docs/formats/html.d.ts.map +1 -0
- package/dist/docs/formats/index.d.ts +31 -0
- package/dist/docs/formats/index.d.ts.map +1 -0
- package/dist/docs/formats/markdown.d.ts +11 -0
- package/dist/docs/formats/markdown.d.ts.map +1 -0
- package/dist/docs/formats/openapi.d.ts +17 -0
- package/dist/docs/formats/openapi.d.ts.map +1 -0
- package/dist/docs/formats/org.d.ts +9 -0
- package/dist/docs/formats/org.d.ts.map +1 -0
- package/dist/docs/formats/plaintext.d.ts +11 -0
- package/dist/docs/formats/plaintext.d.ts.map +1 -0
- package/dist/docs/formats/rdoc.d.ts +10 -0
- package/dist/docs/formats/rdoc.d.ts.map +1 -0
- package/dist/docs/formats/rst.d.ts +11 -0
- package/dist/docs/formats/rst.d.ts.map +1 -0
- package/dist/docs/indexer.d.ts +49 -0
- package/dist/docs/indexer.d.ts.map +1 -0
- package/dist/docs/linker.d.ts +30 -0
- package/dist/docs/linker.d.ts.map +1 -0
- package/dist/docs/lint.d.ts +27 -0
- package/dist/docs/lint.d.ts.map +1 -0
- package/dist/docs/queries.d.ts +78 -0
- package/dist/docs/queries.d.ts.map +1 -0
- package/dist/docs/section-id.d.ts +48 -0
- package/dist/docs/section-id.d.ts.map +1 -0
- package/dist/docs/summarizer.d.ts +13 -0
- package/dist/docs/summarizer.d.ts.map +1 -0
- package/dist/docs/types.d.ts +71 -0
- package/dist/docs/types.d.ts.map +1 -0
- package/dist/docs/vectors.d.ts +54 -0
- package/dist/docs/vectors.d.ts.map +1 -0
- package/dist/extraction/extractor.d.ts +1 -1
- package/dist/extraction/extractor.d.ts.map +1 -1
- package/dist/extraction/extractor.js +81 -0
- package/dist/extraction/extractor.js.map +2 -2
- package/dist/extraction/grammars.d.ts +6 -0
- package/dist/extraction/grammars.d.ts.map +1 -1
- package/dist/extraction/grammars.js +32 -8
- package/dist/extraction/grammars.js.map +2 -2
- package/dist/extraction/languages.d.ts.map +1 -1
- package/dist/extraction/languages.js +43 -1
- package/dist/extraction/languages.js.map +2 -2
- package/dist/extraction/notebook.d.ts +14 -0
- package/dist/extraction/notebook.d.ts.map +1 -0
- package/dist/extraction/notebook.js +300 -0
- package/dist/extraction/notebook.js.map +7 -0
- package/dist/extraction/wasm/tree-sitter-astro.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-gdscript.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-julia.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-perl.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-powershell.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-sql.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-verilog.wasm +0 -0
- package/dist/frameworks/amplify.d.ts +9 -0
- package/dist/frameworks/amplify.d.ts.map +1 -0
- package/dist/frameworks/angular.d.ts +9 -0
- package/dist/frameworks/angular.d.ts.map +1 -0
- package/dist/frameworks/ansible.d.ts +8 -0
- package/dist/frameworks/ansible.d.ts.map +1 -0
- package/dist/frameworks/cloudformation.d.ts +9 -0
- package/dist/frameworks/cloudformation.d.ts.map +1 -0
- package/dist/frameworks/docker.d.ts +9 -0
- package/dist/frameworks/docker.d.ts.map +1 -0
- package/dist/frameworks/elixir.d.ts +6 -0
- package/dist/frameworks/elixir.d.ts.map +1 -0
- package/dist/frameworks/flutter.d.ts +12 -0
- package/dist/frameworks/flutter.d.ts.map +1 -0
- package/dist/frameworks/flutter.js +130 -0
- package/dist/frameworks/flutter.js.map +7 -0
- package/dist/frameworks/iac.d.ts +10 -0
- package/dist/frameworks/iac.d.ts.map +1 -0
- package/dist/frameworks/index.d.ts +14 -0
- package/dist/frameworks/index.d.ts.map +1 -1
- package/dist/frameworks/index.js +7 -1
- package/dist/frameworks/index.js.map +3 -3
- package/dist/frameworks/kubernetes.d.ts +9 -0
- package/dist/frameworks/kubernetes.d.ts.map +1 -0
- package/dist/frameworks/pulumi.d.ts +9 -0
- package/dist/frameworks/pulumi.d.ts.map +1 -0
- package/dist/frameworks/scala.d.ts +6 -0
- package/dist/frameworks/scala.d.ts.map +1 -0
- package/dist/frameworks/solidity.d.ts +6 -0
- package/dist/frameworks/solidity.d.ts.map +1 -0
- package/dist/frameworks/terraform.d.ts +14 -0
- package/dist/frameworks/terraform.d.ts.map +1 -0
- package/dist/frameworks/vue.d.ts +7 -0
- package/dist/frameworks/vue.d.ts.map +1 -0
- package/dist/graph/communities.d.ts +43 -0
- package/dist/graph/communities.d.ts.map +1 -0
- package/dist/graph/communities.js +317 -0
- package/dist/graph/communities.js.map +7 -0
- package/dist/graph/flows.d.ts +55 -0
- package/dist/graph/flows.d.ts.map +1 -0
- package/dist/graph/flows.js +138 -0
- package/dist/graph/flows.js.map +7 -0
- package/dist/graph/refactor.d.ts +43 -0
- package/dist/graph/refactor.d.ts.map +1 -0
- package/dist/graph/refactor.js +155 -0
- package/dist/graph/refactor.js.map +7 -0
- package/dist/index.d.ts +36 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +2 -2
- package/dist/mcp/cache.d.ts +69 -0
- package/dist/mcp/cache.d.ts.map +1 -0
- package/dist/mcp/cache.js +172 -0
- package/dist/mcp/cache.js.map +7 -0
- package/dist/mcp/read-modes.d.ts +31 -0
- package/dist/mcp/read-modes.d.ts.map +1 -0
- package/dist/mcp/read-modes.js +295 -0
- package/dist/mcp/read-modes.js.map +7 -0
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +17 -3
- package/dist/mcp/server.js.map +2 -2
- package/dist/mcp/tool-names.d.ts +2 -0
- package/dist/mcp/tool-names.d.ts.map +1 -0
- package/dist/mcp/tool-names.js +24 -1
- package/dist/mcp/tool-names.js.map +2 -2
- package/dist/mcp/tools.d.ts +12 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +1560 -4
- package/dist/mcp/tools.js.map +3 -3
- package/dist/memory/compress.d.ts +19 -0
- package/dist/memory/compress.d.ts.map +1 -0
- package/dist/memory/database.d.ts +92 -0
- package/dist/memory/database.d.ts.map +1 -0
- package/dist/memory/database.js +70 -2
- package/dist/memory/database.js.map +2 -2
- package/dist/memory/index.d.ts +71 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +12 -2
- package/dist/memory/index.js.map +2 -2
- package/dist/memory/symbols.d.ts +21 -0
- package/dist/memory/symbols.d.ts.map +1 -0
- package/dist/memory/types.d.ts +78 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js.map +1 -1
- package/dist/memory/vectors.d.ts +43 -0
- package/dist/memory/vectors.d.ts.map +1 -0
- package/dist/patterns/graph.d.ts +16 -0
- package/dist/patterns/graph.d.ts.map +1 -0
- package/dist/patterns/graph.js +45 -0
- package/dist/patterns/graph.js.map +7 -0
- package/dist/patterns/index.d.ts +4 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +39 -0
- package/dist/patterns/index.js.map +7 -0
- package/dist/patterns/indexer.d.ts +15 -0
- package/dist/patterns/indexer.d.ts.map +1 -0
- package/dist/patterns/indexer.js +97 -0
- package/dist/patterns/indexer.js.map +7 -0
- package/dist/patterns/library/command-injection-go.yaml +11 -0
- package/dist/patterns/library/dangerous-eval-js.yaml +14 -0
- package/dist/patterns/library/dangerous-exec-py.yaml +13 -0
- package/dist/patterns/library/dangerous-reflection-java.yaml +8 -0
- package/dist/patterns/library/path-traversal-go.yaml +11 -0
- package/dist/patterns/library/path-traversal-py.yaml +12 -0
- package/dist/patterns/library/path-traversal-readfile-js.yaml +14 -0
- package/dist/patterns/library/prototype-pollution-js.yaml +12 -0
- package/dist/patterns/library/sql-injection-concat-js.yaml +12 -0
- package/dist/patterns/library/sql-injection-java.yaml +13 -0
- package/dist/patterns/library/sql-injection-py.yaml +12 -0
- package/dist/patterns/library/sql-injection-template-js.yaml +13 -0
- package/dist/patterns/library/weak-crypto-md5-js.yaml +13 -0
- package/dist/patterns/library/weak-crypto-py.yaml +13 -0
- package/dist/patterns/loader.d.ts +18 -0
- package/dist/patterns/loader.d.ts.map +1 -0
- package/dist/patterns/loader.js +277 -0
- package/dist/patterns/loader.js.map +7 -0
- package/dist/patterns/runner.d.ts +42 -0
- package/dist/patterns/runner.d.ts.map +1 -0
- package/dist/patterns/runner.js +277 -0
- package/dist/patterns/runner.js.map +7 -0
- package/dist/patterns/types.d.ts +27 -0
- package/dist/patterns/types.d.ts.map +1 -0
- package/dist/patterns/types.js +34 -0
- package/dist/patterns/types.js.map +7 -0
- package/dist/resolution/bridges/android-rn.d.ts +13 -0
- package/dist/resolution/bridges/android-rn.d.ts.map +1 -0
- package/dist/resolution/bridges/android-rn.js +298 -0
- package/dist/resolution/bridges/android-rn.js.map +7 -0
- package/dist/resolution/bridges/expo-modules.d.ts +10 -0
- package/dist/resolution/bridges/expo-modules.d.ts.map +1 -0
- package/dist/resolution/bridges/expo-modules.js +155 -0
- package/dist/resolution/bridges/expo-modules.js.map +7 -0
- package/dist/resolution/bridges/flutter-channel.d.ts +14 -0
- package/dist/resolution/bridges/flutter-channel.d.ts.map +1 -0
- package/dist/resolution/bridges/flutter-channel.js +385 -0
- package/dist/resolution/bridges/flutter-channel.js.map +7 -0
- package/dist/resolution/bridges/index.d.ts +40 -0
- package/dist/resolution/bridges/index.d.ts.map +1 -0
- package/dist/resolution/bridges/index.js +80 -0
- package/dist/resolution/bridges/index.js.map +7 -0
- package/dist/resolution/bridges/native-events.d.ts +10 -0
- package/dist/resolution/bridges/native-events.d.ts.map +1 -0
- package/dist/resolution/bridges/native-events.js +188 -0
- package/dist/resolution/bridges/native-events.js.map +7 -0
- package/dist/resolution/bridges/native-views.d.ts +13 -0
- package/dist/resolution/bridges/native-views.d.ts.map +1 -0
- package/dist/resolution/bridges/native-views.js +244 -0
- package/dist/resolution/bridges/native-views.js.map +7 -0
- package/dist/resolution/bridges/react-native.d.ts +9 -0
- package/dist/resolution/bridges/react-native.d.ts.map +1 -0
- package/dist/resolution/bridges/react-native.js +161 -0
- package/dist/resolution/bridges/react-native.js.map +7 -0
- package/dist/resolution/bridges/swift-objc.d.ts +14 -0
- package/dist/resolution/bridges/swift-objc.d.ts.map +1 -0
- package/dist/resolution/bridges/swift-objc.js +227 -0
- package/dist/resolution/bridges/swift-objc.js.map +7 -0
- package/dist/resolution/bridges/turbomodules.d.ts +10 -0
- package/dist/resolution/bridges/turbomodules.d.ts.map +1 -0
- package/dist/resolution/bridges/turbomodules.js +216 -0
- package/dist/resolution/bridges/turbomodules.js.map +7 -0
- package/dist/resolution/index.d.ts +28 -3
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +61 -2
- package/dist/resolution/index.js.map +2 -2
- package/dist/security/attack-surface.d.ts +46 -0
- package/dist/security/attack-surface.d.ts.map +1 -0
- package/dist/security/attack-surface.js +206 -0
- package/dist/security/attack-surface.js.map +7 -0
- package/dist/security/context-warnings.d.ts +40 -0
- package/dist/security/context-warnings.d.ts.map +1 -0
- package/dist/security/context-warnings.js +123 -0
- package/dist/security/context-warnings.js.map +7 -0
- package/dist/security/data-flows.d.ts +33 -0
- package/dist/security/data-flows.d.ts.map +1 -0
- package/dist/security/data-flows.js +286 -0
- package/dist/security/data-flows.js.map +7 -0
- package/dist/security/dep-confusion.d.ts +23 -0
- package/dist/security/dep-confusion.d.ts.map +1 -0
- package/dist/security/dep-confusion.js +255 -0
- package/dist/security/dep-confusion.js.map +7 -0
- package/dist/security/errors.d.ts +16 -0
- package/dist/security/errors.d.ts.map +1 -0
- package/dist/security/errors.js +51 -0
- package/dist/security/errors.js.map +7 -0
- package/dist/security/export/fix-suggestions.d.ts +21 -0
- package/dist/security/export/fix-suggestions.d.ts.map +1 -0
- package/dist/security/export/fix-suggestions.js +58 -0
- package/dist/security/export/fix-suggestions.js.map +7 -0
- package/dist/security/export/sbom.d.ts +33 -0
- package/dist/security/export/sbom.d.ts.map +1 -0
- package/dist/security/export/sbom.js +230 -0
- package/dist/security/export/sbom.js.map +7 -0
- package/dist/security/export/serialization.d.ts +62 -0
- package/dist/security/export/serialization.d.ts.map +1 -0
- package/dist/security/export/serialization.js +142 -0
- package/dist/security/export/serialization.js.map +7 -0
- package/dist/security/export/vex.d.ts +58 -0
- package/dist/security/export/vex.d.ts.map +1 -0
- package/dist/security/export/vex.js +220 -0
- package/dist/security/export/vex.js.map +7 -0
- package/dist/security/index.d.ts +21 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +67 -0
- package/dist/security/index.js.map +7 -0
- package/dist/security/integrator.d.ts +63 -0
- package/dist/security/integrator.d.ts.map +1 -0
- package/dist/security/integrator.js +491 -0
- package/dist/security/integrator.js.map +7 -0
- package/dist/security/license.d.ts +33 -0
- package/dist/security/license.d.ts.map +1 -0
- package/dist/security/license.js +70 -0
- package/dist/security/license.js.map +7 -0
- package/dist/security/manifest/adapter.d.ts +92 -0
- package/dist/security/manifest/adapter.d.ts.map +1 -0
- package/dist/security/manifest/adapter.js +243 -0
- package/dist/security/manifest/adapter.js.map +7 -0
- package/dist/security/manifest/parser.d.ts +73 -0
- package/dist/security/manifest/parser.d.ts.map +1 -0
- package/dist/security/manifest/parser.js +376 -0
- package/dist/security/manifest/parser.js.map +7 -0
- package/dist/security/manifest/plugins/cargo.d.ts +11 -0
- package/dist/security/manifest/plugins/cargo.d.ts.map +1 -0
- package/dist/security/manifest/plugins/cargo.js +233 -0
- package/dist/security/manifest/plugins/cargo.js.map +7 -0
- package/dist/security/manifest/plugins/composer.d.ts +11 -0
- package/dist/security/manifest/plugins/composer.d.ts.map +1 -0
- package/dist/security/manifest/plugins/composer.js +152 -0
- package/dist/security/manifest/plugins/composer.js.map +7 -0
- package/dist/security/manifest/plugins/go.d.ts +12 -0
- package/dist/security/manifest/plugins/go.d.ts.map +1 -0
- package/dist/security/manifest/plugins/go.js +146 -0
- package/dist/security/manifest/plugins/go.js.map +7 -0
- package/dist/security/manifest/plugins/gradle.d.ts +12 -0
- package/dist/security/manifest/plugins/gradle.d.ts.map +1 -0
- package/dist/security/manifest/plugins/gradle.js +159 -0
- package/dist/security/manifest/plugins/gradle.js.map +7 -0
- package/dist/security/manifest/plugins/hex.d.ts +11 -0
- package/dist/security/manifest/plugins/hex.d.ts.map +1 -0
- package/dist/security/manifest/plugins/hex.js +159 -0
- package/dist/security/manifest/plugins/hex.js.map +7 -0
- package/dist/security/manifest/plugins/maven.d.ts +11 -0
- package/dist/security/manifest/plugins/maven.d.ts.map +1 -0
- package/dist/security/manifest/plugins/maven.js +128 -0
- package/dist/security/manifest/plugins/maven.js.map +7 -0
- package/dist/security/manifest/plugins/npm.d.ts +11 -0
- package/dist/security/manifest/plugins/npm.d.ts.map +1 -0
- package/dist/security/manifest/plugins/npm.js +284 -0
- package/dist/security/manifest/plugins/npm.js.map +7 -0
- package/dist/security/manifest/plugins/nuget.d.ts +12 -0
- package/dist/security/manifest/plugins/nuget.d.ts.map +1 -0
- package/dist/security/manifest/plugins/nuget.js +186 -0
- package/dist/security/manifest/plugins/nuget.js.map +7 -0
- package/dist/security/manifest/plugins/pip.d.ts +11 -0
- package/dist/security/manifest/plugins/pip.d.ts.map +1 -0
- package/dist/security/manifest/plugins/pip.js +123 -0
- package/dist/security/manifest/plugins/pip.js.map +7 -0
- package/dist/security/manifest/plugins/pubspec.d.ts +11 -0
- package/dist/security/manifest/plugins/pubspec.d.ts.map +1 -0
- package/dist/security/manifest/plugins/pubspec.js +212 -0
- package/dist/security/manifest/plugins/pubspec.js.map +7 -0
- package/dist/security/manifest/plugins/pyproject.d.ts +3 -0
- package/dist/security/manifest/plugins/pyproject.d.ts.map +1 -0
- package/dist/security/manifest/plugins/pyproject.js +261 -0
- package/dist/security/manifest/plugins/pyproject.js.map +7 -0
- package/dist/security/manifest/plugins/rubygems.d.ts +11 -0
- package/dist/security/manifest/plugins/rubygems.d.ts.map +1 -0
- package/dist/security/manifest/plugins/rubygems.js +185 -0
- package/dist/security/manifest/plugins/rubygems.js.map +7 -0
- package/dist/security/manifest/plugins/swift.d.ts +11 -0
- package/dist/security/manifest/plugins/swift.d.ts.map +1 -0
- package/dist/security/manifest/plugins/swift.js +200 -0
- package/dist/security/manifest/plugins/swift.js.map +7 -0
- package/dist/security/owasp.d.ts +16 -0
- package/dist/security/owasp.d.ts.map +1 -0
- package/dist/security/owasp.js +104 -0
- package/dist/security/owasp.js.map +7 -0
- package/dist/security/pipeline.d.ts +37 -0
- package/dist/security/pipeline.d.ts.map +1 -0
- package/dist/security/pipeline.js +125 -0
- package/dist/security/pipeline.js.map +7 -0
- package/dist/security/reachability.d.ts +67 -0
- package/dist/security/reachability.d.ts.map +1 -0
- package/dist/security/reachability.js +276 -0
- package/dist/security/reachability.js.map +7 -0
- package/dist/security/remediation.d.ts +51 -0
- package/dist/security/remediation.d.ts.map +1 -0
- package/dist/security/remediation.js +126 -0
- package/dist/security/remediation.js.map +7 -0
- package/dist/security/secrets.d.ts +38 -0
- package/dist/security/secrets.d.ts.map +1 -0
- package/dist/security/secrets.js +176 -0
- package/dist/security/secrets.js.map +7 -0
- package/dist/security/staleness.d.ts +43 -0
- package/dist/security/staleness.d.ts.map +1 -0
- package/dist/security/staleness.js +231 -0
- package/dist/security/staleness.js.map +7 -0
- package/dist/security/supply-chain.d.ts +34 -0
- package/dist/security/supply-chain.d.ts.map +1 -0
- package/dist/security/supply-chain.js +301 -0
- package/dist/security/supply-chain.js.map +7 -0
- package/dist/security/suppressions.d.ts +18 -0
- package/dist/security/suppressions.d.ts.map +1 -0
- package/dist/security/suppressions.js +106 -0
- package/dist/security/suppressions.js.map +7 -0
- package/dist/security/types.d.ts +144 -0
- package/dist/security/types.d.ts.map +1 -0
- package/dist/security/types.js +17 -0
- package/dist/security/types.js.map +7 -0
- package/dist/security/vuln/client.d.ts +90 -0
- package/dist/security/vuln/client.d.ts.map +1 -0
- package/dist/security/vuln/client.js +355 -0
- package/dist/security/vuln/client.js.map +7 -0
- package/dist/security/vuln/epss-client.d.ts +26 -0
- package/dist/security/vuln/epss-client.d.ts.map +1 -0
- package/dist/security/vuln/epss-client.js +95 -0
- package/dist/security/vuln/epss-client.js.map +7 -0
- package/dist/security/vuln/index.d.ts +6 -0
- package/dist/security/vuln/index.d.ts.map +1 -0
- package/dist/security/vuln/index.js +29 -0
- package/dist/security/vuln/index.js.map +7 -0
- package/dist/security/vuln/osv-adapter.d.ts +58 -0
- package/dist/security/vuln/osv-adapter.d.ts.map +1 -0
- package/dist/security/vuln/osv-adapter.js +321 -0
- package/dist/security/vuln/osv-adapter.js.map +7 -0
- package/dist/security/vuln/types.d.ts +29 -0
- package/dist/security/vuln/types.d.ts.map +1 -0
- package/dist/security/vuln/types.js +17 -0
- package/dist/security/vuln/types.js.map +7 -0
- package/dist/sync/index.d.ts +4 -2
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/types.d.ts +10 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +2 -2
- package/dist/vectors/index.d.ts +11 -3
- package/dist/vectors/index.d.ts.map +1 -1
- package/dist/vectors/qdrant-index.d.ts +10 -3
- package/dist/vectors/qdrant-index.d.ts.map +1 -1
- package/dist/vectors/typesense-index.d.ts.map +1 -1
- package/dist/watchmen/index.js +83 -0
- package/dist/watchmen/index.js.map +7 -0
- package/dist/watchmen/synthesize.js +475 -0
- package/dist/watchmen/synthesize.js.map +7 -0
- package/package.json +6 -2
|
@@ -0,0 +1,295 @@
|
|
|
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 read_modes_exports = {};
|
|
30
|
+
__export(read_modes_exports, {
|
|
31
|
+
executeReadMode: () => executeReadMode
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(read_modes_exports);
|
|
34
|
+
var fs = __toESM(require("fs"));
|
|
35
|
+
var path = __toESM(require("path"));
|
|
36
|
+
var import_cache = require("./cache");
|
|
37
|
+
function executeReadMode(opts) {
|
|
38
|
+
const { mode, filePath, start, end, cg } = opts;
|
|
39
|
+
switch (mode) {
|
|
40
|
+
case "full":
|
|
41
|
+
return readFull(filePath);
|
|
42
|
+
case "map":
|
|
43
|
+
return readMap(filePath, cg);
|
|
44
|
+
case "signatures":
|
|
45
|
+
return readSignatures(filePath, cg);
|
|
46
|
+
case "diff":
|
|
47
|
+
return readDiff(filePath);
|
|
48
|
+
case "lines":
|
|
49
|
+
return readLines(filePath, start, end);
|
|
50
|
+
case "imports":
|
|
51
|
+
return readImports(filePath, cg);
|
|
52
|
+
case "exports":
|
|
53
|
+
return readExports(filePath, cg);
|
|
54
|
+
default:
|
|
55
|
+
return readFull(filePath);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function readFull(filePath) {
|
|
59
|
+
const content = fs.readFileSync(filePath, "utf8");
|
|
60
|
+
return {
|
|
61
|
+
content,
|
|
62
|
+
mode: "full",
|
|
63
|
+
tokenEstimate: Math.round(content.length / 4)
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function readMap(filePath, cg) {
|
|
67
|
+
if (cg) {
|
|
68
|
+
const projectRoot = cg.getProjectRoot();
|
|
69
|
+
const relPath = path.isAbsolute(filePath) ? path.relative(projectRoot, filePath) : filePath;
|
|
70
|
+
try {
|
|
71
|
+
const db = cg.getDatabase();
|
|
72
|
+
const nodes = db.getNodesByFile(relPath);
|
|
73
|
+
if (nodes.length > 0) {
|
|
74
|
+
const lines = [`# ${relPath} \u2014 Structure Map (${nodes.length} symbols)
|
|
75
|
+
`];
|
|
76
|
+
const sorted = [...nodes].sort((a, b) => a.startLine - b.startLine);
|
|
77
|
+
for (const n of sorted) {
|
|
78
|
+
const exported = n.isExported ? " [exported]" : "";
|
|
79
|
+
lines.push(` L${n.startLine}-${n.endLine} ${n.kind} ${n.name}${exported}`);
|
|
80
|
+
}
|
|
81
|
+
const content2 = lines.join("\n");
|
|
82
|
+
return { content: content2, mode: "map", tokenEstimate: Math.round(content2.length / 4) };
|
|
83
|
+
}
|
|
84
|
+
} catch {
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const raw = fs.readFileSync(filePath, "utf8");
|
|
88
|
+
const fileLines = raw.split("\n");
|
|
89
|
+
const structureLines = [`# ${path.basename(filePath)} \u2014 Structure Map
|
|
90
|
+
`];
|
|
91
|
+
const patterns = [
|
|
92
|
+
/^\s*(export\s+)?(async\s+)?function\s+(\w+)/,
|
|
93
|
+
/^\s*(export\s+)?(default\s+)?class\s+(\w+)/,
|
|
94
|
+
/^\s*(export\s+)?interface\s+(\w+)/,
|
|
95
|
+
/^\s*(export\s+)?type\s+(\w+)/,
|
|
96
|
+
/^\s*(export\s+)?enum\s+(\w+)/,
|
|
97
|
+
/^\s*(export\s+)?const\s+(\w+)\s*=/
|
|
98
|
+
];
|
|
99
|
+
for (let i = 0; i < fileLines.length; i++) {
|
|
100
|
+
const line = fileLines[i];
|
|
101
|
+
for (const pat of patterns) {
|
|
102
|
+
if (pat.test(line)) {
|
|
103
|
+
structureLines.push(` L${i + 1} ${line.trim()}`);
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const content = structureLines.length > 1 ? structureLines.join("\n") : `# ${path.basename(filePath)} \u2014 No structure detected`;
|
|
109
|
+
return { content, mode: "map", tokenEstimate: Math.round(content.length / 4) };
|
|
110
|
+
}
|
|
111
|
+
function readSignatures(filePath, cg) {
|
|
112
|
+
if (cg) {
|
|
113
|
+
const projectRoot = cg.getProjectRoot();
|
|
114
|
+
const relPath = path.isAbsolute(filePath) ? path.relative(projectRoot, filePath) : filePath;
|
|
115
|
+
try {
|
|
116
|
+
const db = cg.getDatabase();
|
|
117
|
+
const nodes = db.getNodesByFile(relPath);
|
|
118
|
+
if (nodes.length > 0) {
|
|
119
|
+
const lines = [`# ${relPath} \u2014 Signatures
|
|
120
|
+
`];
|
|
121
|
+
const sorted = [...nodes].sort((a, b) => a.startLine - b.startLine);
|
|
122
|
+
for (const n of sorted) {
|
|
123
|
+
if (n.signature) {
|
|
124
|
+
lines.push(`${n.signature}`);
|
|
125
|
+
} else {
|
|
126
|
+
lines.push(`${n.kind} ${n.name} (L${n.startLine})`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const content2 = lines.join("\n");
|
|
130
|
+
return { content: content2, mode: "signatures", tokenEstimate: Math.round(content2.length / 4) };
|
|
131
|
+
}
|
|
132
|
+
} catch {
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const raw = fs.readFileSync(filePath, "utf8");
|
|
136
|
+
const fileLines = raw.split("\n");
|
|
137
|
+
const sigs = [`# ${path.basename(filePath)} \u2014 Signatures
|
|
138
|
+
`];
|
|
139
|
+
const patterns = [
|
|
140
|
+
/^\s*(export\s+)?(async\s+)?function\s+/,
|
|
141
|
+
/^\s*(export\s+)?(default\s+)?class\s+/,
|
|
142
|
+
/^\s*(export\s+)?interface\s+/,
|
|
143
|
+
/^\s*(export\s+)?type\s+\w+/
|
|
144
|
+
];
|
|
145
|
+
for (let i = 0; i < fileLines.length; i++) {
|
|
146
|
+
const line = fileLines[i];
|
|
147
|
+
for (const pat of patterns) {
|
|
148
|
+
if (pat.test(line)) {
|
|
149
|
+
const sig = line.replace(/\{.*$/, "").trim();
|
|
150
|
+
sigs.push(sig);
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const content = sigs.length > 1 ? sigs.join("\n") : `# ${path.basename(filePath)} \u2014 No signatures found`;
|
|
156
|
+
return { content, mode: "signatures", tokenEstimate: Math.round(content.length / 4) };
|
|
157
|
+
}
|
|
158
|
+
function readDiff(filePath) {
|
|
159
|
+
const cache = (0, import_cache.getFileReadCache)();
|
|
160
|
+
const previousContent = cache.getPreviousContent(filePath);
|
|
161
|
+
if (!previousContent) {
|
|
162
|
+
const content2 = fs.readFileSync(filePath, "utf8");
|
|
163
|
+
return {
|
|
164
|
+
content: `[no previous version cached \u2014 showing full content]
|
|
165
|
+
|
|
166
|
+
${content2}`,
|
|
167
|
+
mode: "diff",
|
|
168
|
+
tokenEstimate: Math.round(content2.length / 4)
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
const currentContent = fs.readFileSync(filePath, "utf8");
|
|
172
|
+
if (currentContent === previousContent) {
|
|
173
|
+
const msg = "[no changes since last read]";
|
|
174
|
+
return { content: msg, mode: "diff", tokenEstimate: 5 };
|
|
175
|
+
}
|
|
176
|
+
const oldLines = previousContent.split("\n");
|
|
177
|
+
const newLines = currentContent.split("\n");
|
|
178
|
+
const diffLines = [`# Diff: ${path.basename(filePath)}
|
|
179
|
+
`];
|
|
180
|
+
let i = 0, j = 0;
|
|
181
|
+
while (i < oldLines.length || j < newLines.length) {
|
|
182
|
+
if (i >= oldLines.length) {
|
|
183
|
+
diffLines.push(`+ ${newLines[j]}`);
|
|
184
|
+
j++;
|
|
185
|
+
} else if (j >= newLines.length) {
|
|
186
|
+
diffLines.push(`- ${oldLines[i]}`);
|
|
187
|
+
i++;
|
|
188
|
+
} else if (oldLines[i] === newLines[j]) {
|
|
189
|
+
i++;
|
|
190
|
+
j++;
|
|
191
|
+
} else {
|
|
192
|
+
let foundInNew = -1;
|
|
193
|
+
for (let k = j + 1; k < Math.min(j + 5, newLines.length); k++) {
|
|
194
|
+
if (newLines[k] === oldLines[i]) {
|
|
195
|
+
foundInNew = k;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (foundInNew >= 0) {
|
|
200
|
+
while (j < foundInNew) {
|
|
201
|
+
diffLines.push(`+ ${newLines[j]}`);
|
|
202
|
+
j++;
|
|
203
|
+
}
|
|
204
|
+
} else {
|
|
205
|
+
diffLines.push(`- ${oldLines[i]}`);
|
|
206
|
+
i++;
|
|
207
|
+
diffLines.push(`+ ${newLines[j]}`);
|
|
208
|
+
j++;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const content = diffLines.join("\n");
|
|
213
|
+
return { content, mode: "diff", tokenEstimate: Math.round(content.length / 4) };
|
|
214
|
+
}
|
|
215
|
+
function readLines(filePath, start, end) {
|
|
216
|
+
const raw = fs.readFileSync(filePath, "utf8");
|
|
217
|
+
const allLines = raw.split("\n");
|
|
218
|
+
const startLine = Math.max(1, start ?? 1);
|
|
219
|
+
const endLine = Math.min(allLines.length, end ?? allLines.length);
|
|
220
|
+
const selected = allLines.slice(startLine - 1, endLine);
|
|
221
|
+
const numbered = selected.map((line, idx) => `${startLine + idx}: ${line}`);
|
|
222
|
+
const content = `# ${path.basename(filePath)} \u2014 Lines ${startLine}-${endLine} of ${allLines.length}
|
|
223
|
+
|
|
224
|
+
${numbered.join("\n")}`;
|
|
225
|
+
return { content, mode: "lines", tokenEstimate: Math.round(content.length / 4) };
|
|
226
|
+
}
|
|
227
|
+
function readImports(filePath, cg) {
|
|
228
|
+
if (cg) {
|
|
229
|
+
const projectRoot = cg.getProjectRoot();
|
|
230
|
+
const relPath = path.isAbsolute(filePath) ? path.relative(projectRoot, filePath) : filePath;
|
|
231
|
+
try {
|
|
232
|
+
const db = cg.getDatabase();
|
|
233
|
+
const nodes = db.getNodesByFile(relPath);
|
|
234
|
+
const importNodes = nodes.filter((n) => n.kind === "import");
|
|
235
|
+
if (importNodes.length > 0) {
|
|
236
|
+
const lines = [`# ${relPath} \u2014 Imports (${importNodes.length})
|
|
237
|
+
`];
|
|
238
|
+
for (const n of importNodes) {
|
|
239
|
+
lines.push(` ${n.name} (L${n.startLine})`);
|
|
240
|
+
}
|
|
241
|
+
const content2 = lines.join("\n");
|
|
242
|
+
return { content: content2, mode: "imports", tokenEstimate: Math.round(content2.length / 4) };
|
|
243
|
+
}
|
|
244
|
+
} catch {
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const raw = fs.readFileSync(filePath, "utf8");
|
|
248
|
+
const fileLines = raw.split("\n");
|
|
249
|
+
const importLines = [`# ${path.basename(filePath)} \u2014 Imports
|
|
250
|
+
`];
|
|
251
|
+
for (const line of fileLines) {
|
|
252
|
+
if (/^\s*(import|from|require\()/.test(line)) {
|
|
253
|
+
importLines.push(` ${line.trim()}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
const content = importLines.length > 1 ? importLines.join("\n") : `# ${path.basename(filePath)} \u2014 No imports found`;
|
|
257
|
+
return { content, mode: "imports", tokenEstimate: Math.round(content.length / 4) };
|
|
258
|
+
}
|
|
259
|
+
function readExports(filePath, cg) {
|
|
260
|
+
if (cg) {
|
|
261
|
+
const projectRoot = cg.getProjectRoot();
|
|
262
|
+
const relPath = path.isAbsolute(filePath) ? path.relative(projectRoot, filePath) : filePath;
|
|
263
|
+
try {
|
|
264
|
+
const db = cg.getDatabase();
|
|
265
|
+
const nodes = db.getNodesByFile(relPath);
|
|
266
|
+
const exportedNodes = nodes.filter((n) => n.isExported);
|
|
267
|
+
if (exportedNodes.length > 0) {
|
|
268
|
+
const lines = [`# ${relPath} \u2014 Exports (${exportedNodes.length})
|
|
269
|
+
`];
|
|
270
|
+
for (const n of exportedNodes) {
|
|
271
|
+
lines.push(` ${n.kind} ${n.name} (L${n.startLine})`);
|
|
272
|
+
}
|
|
273
|
+
const content2 = lines.join("\n");
|
|
274
|
+
return { content: content2, mode: "exports", tokenEstimate: Math.round(content2.length / 4) };
|
|
275
|
+
}
|
|
276
|
+
} catch {
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
const raw = fs.readFileSync(filePath, "utf8");
|
|
280
|
+
const fileLines = raw.split("\n");
|
|
281
|
+
const exportLines = [`# ${path.basename(filePath)} \u2014 Exports
|
|
282
|
+
`];
|
|
283
|
+
for (const line of fileLines) {
|
|
284
|
+
if (/^\s*export\s+/.test(line)) {
|
|
285
|
+
exportLines.push(` ${line.trim()}`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
const content = exportLines.length > 1 ? exportLines.join("\n") : `# ${path.basename(filePath)} \u2014 No exports found`;
|
|
289
|
+
return { content, mode: "exports", tokenEstimate: Math.round(content.length / 4) };
|
|
290
|
+
}
|
|
291
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
292
|
+
0 && (module.exports = {
|
|
293
|
+
executeReadMode
|
|
294
|
+
});
|
|
295
|
+
//# sourceMappingURL=read-modes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/mcp/read-modes.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * KiroGraph Read Modes\n *\n * Implements multiple read modes for the kirograph_read tool:\n * - full: entire file content (default)\n * - map: structure overview (symbols with line numbers)\n * - signatures: function/class signatures only\n * - diff: changes since last read\n * - lines: specific line range\n * - imports: import statements\n * - exports: exported symbols\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport type KiroGraph from '../index';\nimport { getFileReadCache } from './cache';\n\nexport type ReadMode = 'full' | 'map' | 'signatures' | 'diff' | 'lines' | 'imports' | 'exports';\n\nexport interface ReadModeOptions {\n mode: ReadMode;\n filePath: string;\n start?: number;\n end?: number;\n cg?: KiroGraph | null;\n}\n\nexport interface ReadModeResult {\n content: string;\n mode: ReadMode;\n tokenEstimate: number;\n}\n\n/**\n * Execute a read mode against a file.\n */\nexport function executeReadMode(opts: ReadModeOptions): ReadModeResult {\n const { mode, filePath, start, end, cg } = opts;\n\n switch (mode) {\n case 'full':\n return readFull(filePath);\n case 'map':\n return readMap(filePath, cg);\n case 'signatures':\n return readSignatures(filePath, cg);\n case 'diff':\n return readDiff(filePath);\n case 'lines':\n return readLines(filePath, start, end);\n case 'imports':\n return readImports(filePath, cg);\n case 'exports':\n return readExports(filePath, cg);\n default:\n return readFull(filePath);\n }\n}\n\nfunction readFull(filePath: string): ReadModeResult {\n const content = fs.readFileSync(filePath, 'utf8');\n return {\n content,\n mode: 'full',\n tokenEstimate: Math.round(content.length / 4),\n };\n}\n\nfunction readMap(filePath: string, cg?: KiroGraph | null): ReadModeResult {\n if (cg) {\n // Use graph data \u2014 no file read needed\n const projectRoot = cg.getProjectRoot();\n const relPath = path.isAbsolute(filePath)\n ? path.relative(projectRoot, filePath)\n : filePath;\n\n try {\n const db = cg.getDatabase();\n const nodes = db.getNodesByFile(relPath);\n if (nodes.length > 0) {\n const lines = [`# ${relPath} \u2014 Structure Map (${nodes.length} symbols)\\n`];\n // Sort by line number\n const sorted = [...nodes].sort((a, b) => a.startLine - b.startLine);\n for (const n of sorted) {\n const exported = n.isExported ? ' [exported]' : '';\n lines.push(` L${n.startLine}-${n.endLine} ${n.kind} ${n.name}${exported}`);\n }\n const content = lines.join('\\n');\n return { content, mode: 'map', tokenEstimate: Math.round(content.length / 4) };\n }\n } catch {\n // Fall through to file-based approach\n }\n }\n\n // Fallback: parse file for structure indicators\n const raw = fs.readFileSync(filePath, 'utf8');\n const fileLines = raw.split('\\n');\n const structureLines: string[] = [`# ${path.basename(filePath)} \u2014 Structure Map\\n`];\n\n const patterns = [\n /^\\s*(export\\s+)?(async\\s+)?function\\s+(\\w+)/,\n /^\\s*(export\\s+)?(default\\s+)?class\\s+(\\w+)/,\n /^\\s*(export\\s+)?interface\\s+(\\w+)/,\n /^\\s*(export\\s+)?type\\s+(\\w+)/,\n /^\\s*(export\\s+)?enum\\s+(\\w+)/,\n /^\\s*(export\\s+)?const\\s+(\\w+)\\s*=/,\n ];\n\n for (let i = 0; i < fileLines.length; i++) {\n const line = fileLines[i]!;\n for (const pat of patterns) {\n if (pat.test(line)) {\n structureLines.push(` L${i + 1} ${line.trim()}`);\n break;\n }\n }\n }\n\n const content = structureLines.length > 1\n ? structureLines.join('\\n')\n : `# ${path.basename(filePath)} \u2014 No structure detected`;\n return { content, mode: 'map', tokenEstimate: Math.round(content.length / 4) };\n}\n\nfunction readSignatures(filePath: string, cg?: KiroGraph | null): ReadModeResult {\n if (cg) {\n const projectRoot = cg.getProjectRoot();\n const relPath = path.isAbsolute(filePath)\n ? path.relative(projectRoot, filePath)\n : filePath;\n\n try {\n const db = cg.getDatabase();\n const nodes = db.getNodesByFile(relPath);\n if (nodes.length > 0) {\n const lines = [`# ${relPath} \u2014 Signatures\\n`];\n const sorted = [...nodes].sort((a, b) => a.startLine - b.startLine);\n for (const n of sorted) {\n if (n.signature) {\n lines.push(`${n.signature}`);\n } else {\n lines.push(`${n.kind} ${n.name} (L${n.startLine})`);\n }\n }\n const content = lines.join('\\n');\n return { content, mode: 'signatures', tokenEstimate: Math.round(content.length / 4) };\n }\n } catch {\n // Fall through\n }\n }\n\n // Fallback: extract first line of each function/class\n const raw = fs.readFileSync(filePath, 'utf8');\n const fileLines = raw.split('\\n');\n const sigs: string[] = [`# ${path.basename(filePath)} \u2014 Signatures\\n`];\n\n const patterns = [\n /^\\s*(export\\s+)?(async\\s+)?function\\s+/,\n /^\\s*(export\\s+)?(default\\s+)?class\\s+/,\n /^\\s*(export\\s+)?interface\\s+/,\n /^\\s*(export\\s+)?type\\s+\\w+/,\n ];\n\n for (let i = 0; i < fileLines.length; i++) {\n const line = fileLines[i]!;\n for (const pat of patterns) {\n if (pat.test(line)) {\n // Take the line up to the opening brace or end\n const sig = line.replace(/\\{.*$/, '').trim();\n sigs.push(sig);\n break;\n }\n }\n }\n\n const content = sigs.length > 1\n ? sigs.join('\\n')\n : `# ${path.basename(filePath)} \u2014 No signatures found`;\n return { content, mode: 'signatures', tokenEstimate: Math.round(content.length / 4) };\n}\n\nfunction readDiff(filePath: string): ReadModeResult {\n const cache = getFileReadCache();\n const previousContent = cache.getPreviousContent(filePath);\n\n if (!previousContent) {\n // No previous version \u2014 return full content\n const content = fs.readFileSync(filePath, 'utf8');\n return {\n content: `[no previous version cached \u2014 showing full content]\\n\\n${content}`,\n mode: 'diff',\n tokenEstimate: Math.round(content.length / 4),\n };\n }\n\n const currentContent = fs.readFileSync(filePath, 'utf8');\n if (currentContent === previousContent) {\n const msg = '[no changes since last read]';\n return { content: msg, mode: 'diff', tokenEstimate: 5 };\n }\n\n // Simple line-based diff\n const oldLines = previousContent.split('\\n');\n const newLines = currentContent.split('\\n');\n const diffLines: string[] = [`# Diff: ${path.basename(filePath)}\\n`];\n\n let i = 0, j = 0;\n while (i < oldLines.length || j < newLines.length) {\n if (i >= oldLines.length) {\n diffLines.push(`+ ${newLines[j]}`);\n j++;\n } else if (j >= newLines.length) {\n diffLines.push(`- ${oldLines[i]}`);\n i++;\n } else if (oldLines[i] === newLines[j]) {\n i++;\n j++;\n } else {\n // Simple heuristic: look ahead for matching lines\n let foundInNew = -1;\n for (let k = j + 1; k < Math.min(j + 5, newLines.length); k++) {\n if (newLines[k] === oldLines[i]) { foundInNew = k; break; }\n }\n if (foundInNew >= 0) {\n // Lines were added\n while (j < foundInNew) {\n diffLines.push(`+ ${newLines[j]}`);\n j++;\n }\n } else {\n diffLines.push(`- ${oldLines[i]}`);\n i++;\n diffLines.push(`+ ${newLines[j]}`);\n j++;\n }\n }\n }\n\n const content = diffLines.join('\\n');\n return { content, mode: 'diff', tokenEstimate: Math.round(content.length / 4) };\n}\n\nfunction readLines(filePath: string, start?: number, end?: number): ReadModeResult {\n const raw = fs.readFileSync(filePath, 'utf8');\n const allLines = raw.split('\\n');\n const startLine = Math.max(1, start ?? 1);\n const endLine = Math.min(allLines.length, end ?? allLines.length);\n\n const selected = allLines.slice(startLine - 1, endLine);\n const numbered = selected.map((line, idx) => `${startLine + idx}: ${line}`);\n const content = `# ${path.basename(filePath)} \u2014 Lines ${startLine}-${endLine} of ${allLines.length}\\n\\n${numbered.join('\\n')}`;\n return { content, mode: 'lines', tokenEstimate: Math.round(content.length / 4) };\n}\n\nfunction readImports(filePath: string, cg?: KiroGraph | null): ReadModeResult {\n if (cg) {\n const projectRoot = cg.getProjectRoot();\n const relPath = path.isAbsolute(filePath)\n ? path.relative(projectRoot, filePath)\n : filePath;\n\n try {\n const db = cg.getDatabase();\n const nodes = db.getNodesByFile(relPath);\n const importNodes = nodes.filter(n => n.kind === 'import');\n if (importNodes.length > 0) {\n const lines = [`# ${relPath} \u2014 Imports (${importNodes.length})\\n`];\n for (const n of importNodes) {\n lines.push(` ${n.name} (L${n.startLine})`);\n }\n const content = lines.join('\\n');\n return { content, mode: 'imports', tokenEstimate: Math.round(content.length / 4) };\n }\n } catch {\n // Fall through\n }\n }\n\n // Fallback: regex-based import extraction\n const raw = fs.readFileSync(filePath, 'utf8');\n const fileLines = raw.split('\\n');\n const importLines: string[] = [`# ${path.basename(filePath)} \u2014 Imports\\n`];\n\n for (const line of fileLines) {\n if (/^\\s*(import|from|require\\()/.test(line)) {\n importLines.push(` ${line.trim()}`);\n }\n }\n\n const content = importLines.length > 1\n ? importLines.join('\\n')\n : `# ${path.basename(filePath)} \u2014 No imports found`;\n return { content, mode: 'imports', tokenEstimate: Math.round(content.length / 4) };\n}\n\nfunction readExports(filePath: string, cg?: KiroGraph | null): ReadModeResult {\n if (cg) {\n const projectRoot = cg.getProjectRoot();\n const relPath = path.isAbsolute(filePath)\n ? path.relative(projectRoot, filePath)\n : filePath;\n\n try {\n const db = cg.getDatabase();\n const nodes = db.getNodesByFile(relPath);\n const exportedNodes = nodes.filter(n => n.isExported);\n if (exportedNodes.length > 0) {\n const lines = [`# ${relPath} \u2014 Exports (${exportedNodes.length})\\n`];\n for (const n of exportedNodes) {\n lines.push(` ${n.kind} ${n.name} (L${n.startLine})`);\n }\n const content = lines.join('\\n');\n return { content, mode: 'exports', tokenEstimate: Math.round(content.length / 4) };\n }\n } catch {\n // Fall through\n }\n }\n\n // Fallback: regex-based export extraction\n const raw = fs.readFileSync(filePath, 'utf8');\n const fileLines = raw.split('\\n');\n const exportLines: string[] = [`# ${path.basename(filePath)} \u2014 Exports\\n`];\n\n for (const line of fileLines) {\n if (/^\\s*export\\s+/.test(line)) {\n exportLines.push(` ${line.trim()}`);\n }\n }\n\n const content = exportLines.length > 1\n ? exportLines.join('\\n')\n : `# ${path.basename(filePath)} \u2014 No exports found`;\n return { content, mode: 'exports', tokenEstimate: Math.round(content.length / 4) };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["content"]
|
|
7
|
+
}
|
package/dist/mcp/server.d.ts
CHANGED
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,CAAC,MAAM,CAAoB;gBAEtB,WAAW,CAAC,EAAE,MAAM;IAM1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,OAAO;YAkBP,aAAa;IAiD3B,OAAO,CAAC,IAAI;CAKb"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -31,16 +31,20 @@ __export(server_exports, {
|
|
|
31
31
|
MCPServer: () => MCPServer
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(server_exports);
|
|
34
|
+
var path = __toESM(require("path"));
|
|
34
35
|
var import__ = __toESM(require("../index"));
|
|
35
36
|
var import_transport = require("./transport");
|
|
36
37
|
var import_tools = require("./tools");
|
|
38
|
+
var import_runner = require("../patterns/runner");
|
|
37
39
|
const SERVER_INFO = { name: "kirograph", version: "0.1.0" };
|
|
38
40
|
const PROTOCOL_VERSION = "2024-11-05";
|
|
39
41
|
class MCPServer {
|
|
40
42
|
constructor(projectPath) {
|
|
41
43
|
this.transport = new import_transport.StdioTransport();
|
|
42
44
|
this.cg = null;
|
|
43
|
-
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
+
this.config = null;
|
|
47
|
+
this.projectPath = projectPath ? path.resolve(projectPath) : null;
|
|
44
48
|
this.toolHandler = new import_tools.ToolHandler(null);
|
|
45
49
|
}
|
|
46
50
|
async start() {
|
|
@@ -64,6 +68,11 @@ class MCPServer {
|
|
|
64
68
|
process.stderr.write(`[KiroGraph MCP] Failed to open ${root}: ${err}
|
|
65
69
|
`);
|
|
66
70
|
}
|
|
71
|
+
try {
|
|
72
|
+
const { loadConfig } = await Promise.resolve().then(() => require("../config.js"));
|
|
73
|
+
this.config = await loadConfig(root);
|
|
74
|
+
} catch {
|
|
75
|
+
}
|
|
67
76
|
}
|
|
68
77
|
async handleMessage(msg) {
|
|
69
78
|
const req = msg;
|
|
@@ -82,8 +91,13 @@ class MCPServer {
|
|
|
82
91
|
serverInfo: SERVER_INFO
|
|
83
92
|
};
|
|
84
93
|
}
|
|
85
|
-
case "tools/list":
|
|
86
|
-
|
|
94
|
+
case "tools/list": {
|
|
95
|
+
const dynamicTools = [...import_tools.tools];
|
|
96
|
+
if (this.config?.enablePatterns && new import_runner.PatternRunner().isAvailable()) {
|
|
97
|
+
dynamicTools.push(import_tools.LIVE_SEARCH_TOOL_DEFINITION);
|
|
98
|
+
}
|
|
99
|
+
return { tools: dynamicTools };
|
|
100
|
+
}
|
|
87
101
|
case "tools/call": {
|
|
88
102
|
const { name, arguments: args = {} } = req.params ?? {};
|
|
89
103
|
try {
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/mcp/server.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * KiroGraph MCP Server\n * Implements the Model Context Protocol over stdio.\n */\n\nimport KiroGraph, { findNearestKiroGraphRoot } from '../index';\nimport { StdioTransport, ErrorCodes } from './transport';\nimport { tools, ToolHandler } from './tools';\nimport type { JsonRpcMessage } from './transport';\n\nconst SERVER_INFO = { name: 'kirograph', version: '0.1.0' };\nconst PROTOCOL_VERSION = '2024-11-05';\n\nexport class MCPServer {\n private transport = new StdioTransport();\n private cg: KiroGraph | null = null;\n private toolHandler: ToolHandler;\n private projectPath: string | null;\n\n constructor(projectPath?: string) {\n this.projectPath = projectPath
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,eAAoD;AACpD,uBAA2C;AAC3C,
|
|
4
|
+
"sourcesContent": ["/**\n * KiroGraph MCP Server\n * Implements the Model Context Protocol over stdio.\n */\n\nimport * as path from 'path';\nimport KiroGraph, { findNearestKiroGraphRoot } from '../index';\nimport { StdioTransport, ErrorCodes } from './transport';\nimport { tools, ToolHandler, LIVE_SEARCH_TOOL_DEFINITION } from './tools';\nimport { PatternRunner } from '../patterns/runner';\nimport type { JsonRpcMessage } from './transport';\n\nconst SERVER_INFO = { name: 'kirograph', version: '0.1.0' };\nconst PROTOCOL_VERSION = '2024-11-05';\n\nexport class MCPServer {\n private transport = new StdioTransport();\n private cg: KiroGraph | null = null;\n private toolHandler: ToolHandler;\n private projectPath: string | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private config: any | null = null;\n\n constructor(projectPath?: string) {\n // Normalize to absolute path immediately to prevent any path traversal\n this.projectPath = projectPath ? path.resolve(projectPath) : null;\n this.toolHandler = new ToolHandler(null);\n }\n\n async start(): Promise<void> {\n this.transport.start(this.handleMessage.bind(this));\n process.on('SIGINT', () => this.stop());\n process.on('SIGTERM', () => this.stop());\n process.stdin.on('end', () => this.stop());\n process.stdin.on('close', () => this.stop());\n }\n\n private async tryInit(projectPath: string): Promise<void> {\n const root = findNearestKiroGraphRoot(projectPath);\n if (!root) { this.projectPath = projectPath; return; }\n this.projectPath = root;\n try {\n this.cg = await KiroGraph.open(root);\n this.toolHandler.setDefaultKiroGraph(this.cg);\n } catch (err) {\n process.stderr.write(`[KiroGraph MCP] Failed to open ${root}: ${err}\\n`);\n }\n try {\n const { loadConfig } = await Promise.resolve().then(() => require('../config.js'));\n this.config = await loadConfig(root);\n } catch {\n // config is optional \u2014 proceed without it\n }\n }\n\n private async handleMessage(msg: JsonRpcMessage): Promise<unknown> {\n const req = msg as any;\n\n switch (req.method) {\n case 'initialize': {\n const rootUri = req.params?.rootUri ?? req.params?.workspaceFolders?.[0]?.uri;\n if (rootUri) {\n const p = rootUri.startsWith('file://') ? decodeURIComponent(rootUri.replace(/^file:\\/\\/\\/?/, '')) : rootUri;\n await this.tryInit(p);\n } else if (this.projectPath) {\n await this.tryInit(this.projectPath);\n }\n return {\n protocolVersion: PROTOCOL_VERSION,\n capabilities: { tools: {} },\n serverInfo: SERVER_INFO,\n };\n }\n\n case 'tools/list': {\n const dynamicTools = [...tools];\n if (this.config?.enablePatterns && new PatternRunner().isAvailable()) {\n dynamicTools.push(LIVE_SEARCH_TOOL_DEFINITION);\n }\n return { tools: dynamicTools };\n }\n\n case 'tools/call': {\n const { name, arguments: args = {} } = req.params ?? {};\n try {\n return await this.toolHandler.handle(name, args);\n } catch (err) {\n return {\n content: [{ type: 'text', text: `Error: ${err instanceof Error ? err.message : String(err)}` }],\n isError: true,\n };\n }\n }\n\n case 'notifications/initialized':\n case 'ping':\n return {};\n\n default:\n this.transport.sendError(req.id, ErrorCodes.MethodNotFound, `Unknown method: ${req.method}`);\n return undefined;\n }\n }\n\n private stop(): void {\n this.cg?.close();\n this.toolHandler.closeAll();\n process.exit(0);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["KiroGraph"]
|
|
7
7
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-names.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-names.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,UA6DhC,CAAC"}
|
package/dist/mcp/tool-names.js
CHANGED
|
@@ -42,6 +42,11 @@ const KIROGRAPH_TOOL_NAMES = [
|
|
|
42
42
|
"kirograph_type_hierarchy",
|
|
43
43
|
"kirograph_exec",
|
|
44
44
|
"kirograph_gain",
|
|
45
|
+
"kirograph_read",
|
|
46
|
+
"kirograph_budget",
|
|
47
|
+
"kirograph_flows",
|
|
48
|
+
"kirograph_communities",
|
|
49
|
+
"kirograph_refactor",
|
|
45
50
|
"kirograph_mem_search",
|
|
46
51
|
"kirograph_mem_store",
|
|
47
52
|
"kirograph_mem_timeline",
|
|
@@ -58,7 +63,25 @@ const KIROGRAPH_TOOL_NAMES = [
|
|
|
58
63
|
"kirograph_data_search",
|
|
59
64
|
"kirograph_data_join",
|
|
60
65
|
"kirograph_data_correlations",
|
|
61
|
-
"kirograph_data_quality"
|
|
66
|
+
"kirograph_data_quality",
|
|
67
|
+
"kirograph_security",
|
|
68
|
+
"kirograph_vulns",
|
|
69
|
+
"kirograph_sbom",
|
|
70
|
+
"kirograph_vex",
|
|
71
|
+
"kirograph_reachability",
|
|
72
|
+
"kirograph_vuln_add",
|
|
73
|
+
"kirograph_vuln_suppress",
|
|
74
|
+
"kirograph_staleness",
|
|
75
|
+
"kirograph_licenses",
|
|
76
|
+
"kirograph_attack_surface",
|
|
77
|
+
"kirograph_secrets",
|
|
78
|
+
"kirograph_security_flows",
|
|
79
|
+
"kirograph_supply_chain",
|
|
80
|
+
"kirograph_dep_confusion",
|
|
81
|
+
"kirograph_remediation",
|
|
82
|
+
"kirograph_pattern_coverage",
|
|
83
|
+
"kirograph_pattern_save_baseline",
|
|
84
|
+
"kirograph_pattern_diff"
|
|
62
85
|
];
|
|
63
86
|
// Annotate the CommonJS export names for ESM import in node:
|
|
64
87
|
0 && (module.exports = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/mcp/tool-names.ts"],
|
|
4
|
-
"sourcesContent": ["export const KIROGRAPH_TOOL_NAMES = [\n 'kirograph_search',\n 'kirograph_context',\n 'kirograph_callers',\n 'kirograph_callees',\n 'kirograph_impact',\n 'kirograph_node',\n 'kirograph_status',\n 'kirograph_files',\n 'kirograph_dead_code',\n 'kirograph_circular_deps',\n 'kirograph_path',\n 'kirograph_architecture',\n 'kirograph_coupling',\n 'kirograph_package',\n 'kirograph_hotspots',\n 'kirograph_surprising',\n 'kirograph_diff',\n 'kirograph_type_hierarchy',\n 'kirograph_exec',\n 'kirograph_gain',\n 'kirograph_mem_search',\n 'kirograph_mem_store',\n 'kirograph_mem_timeline',\n 'kirograph_mem_status',\n 'kirograph_docs_toc',\n 'kirograph_docs_search',\n 'kirograph_docs_section',\n 'kirograph_docs_outline',\n 'kirograph_docs_refs',\n 'kirograph_data_list',\n 'kirograph_data_describe',\n 'kirograph_data_query',\n 'kirograph_data_aggregate',\n 'kirograph_data_search',\n 'kirograph_data_join',\n 'kirograph_data_correlations',\n 'kirograph_data_quality',\n];\n\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
|
|
4
|
+
"sourcesContent": ["export const KIROGRAPH_TOOL_NAMES = [\n 'kirograph_search',\n 'kirograph_context',\n 'kirograph_callers',\n 'kirograph_callees',\n 'kirograph_impact',\n 'kirograph_node',\n 'kirograph_status',\n 'kirograph_files',\n 'kirograph_dead_code',\n 'kirograph_circular_deps',\n 'kirograph_path',\n 'kirograph_architecture',\n 'kirograph_coupling',\n 'kirograph_package',\n 'kirograph_hotspots',\n 'kirograph_surprising',\n 'kirograph_diff',\n 'kirograph_type_hierarchy',\n 'kirograph_exec',\n 'kirograph_gain',\n 'kirograph_read',\n 'kirograph_budget',\n 'kirograph_flows',\n 'kirograph_communities',\n 'kirograph_refactor',\n 'kirograph_mem_search',\n 'kirograph_mem_store',\n 'kirograph_mem_timeline',\n 'kirograph_mem_status',\n 'kirograph_docs_toc',\n 'kirograph_docs_search',\n 'kirograph_docs_section',\n 'kirograph_docs_outline',\n 'kirograph_docs_refs',\n 'kirograph_data_list',\n 'kirograph_data_describe',\n 'kirograph_data_query',\n 'kirograph_data_aggregate',\n 'kirograph_data_search',\n 'kirograph_data_join',\n 'kirograph_data_correlations',\n 'kirograph_data_quality',\n 'kirograph_security',\n 'kirograph_vulns',\n 'kirograph_sbom',\n 'kirograph_vex',\n 'kirograph_reachability',\n 'kirograph_vuln_add',\n 'kirograph_vuln_suppress',\n 'kirograph_staleness',\n 'kirograph_licenses',\n 'kirograph_attack_surface',\n 'kirograph_secrets',\n 'kirograph_security_flows',\n 'kirograph_supply_chain',\n 'kirograph_dep_confusion',\n 'kirograph_remediation',\n 'kirograph_pattern_coverage',\n 'kirograph_pattern_save_baseline',\n 'kirograph_pattern_diff',\n];\n\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/mcp/tools.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* KiroGraph MCP Tool Definitions + Handlers
|
|
3
3
|
*/
|
|
4
4
|
import KiroGraph from '../index';
|
|
5
|
+
export { KIROGRAPH_TOOL_NAMES } from './tool-names';
|
|
5
6
|
export interface ToolDefinition {
|
|
6
7
|
name: string;
|
|
7
8
|
description: string;
|
|
@@ -17,13 +18,24 @@ export interface ToolDefinition {
|
|
|
17
18
|
};
|
|
18
19
|
}
|
|
19
20
|
export declare const tools: ToolDefinition[];
|
|
21
|
+
/**
|
|
22
|
+
* Dynamic tool definition for kirograph_live_search.
|
|
23
|
+
* NOT included in the static `tools` array — injected into tools/list at runtime
|
|
24
|
+
* only when config.enablePatterns === true AND @ast-grep/napi is available.
|
|
25
|
+
* NOT added to KIROGRAPH_TOOL_NAMES (which is a static list for Kiro autoApprove).
|
|
26
|
+
*/
|
|
27
|
+
export declare const LIVE_SEARCH_TOOL_DEFINITION: ToolDefinition;
|
|
20
28
|
export declare class ToolHandler {
|
|
21
29
|
private defaultCg;
|
|
22
30
|
private connections;
|
|
31
|
+
/** Anti-loop: track recent data_query calls per dataset for pagination detection. */
|
|
32
|
+
private queryTracker;
|
|
23
33
|
constructor(cg: KiroGraph | null);
|
|
24
34
|
setDefaultKiroGraph(cg: KiroGraph): void;
|
|
25
35
|
/** Close all cached cross-project connections. */
|
|
26
36
|
closeAll(): void;
|
|
37
|
+
/** Anti-loop: detect pagination patterns and warn the agent. */
|
|
38
|
+
private checkPaginationLoop;
|
|
27
39
|
private getConnection;
|
|
28
40
|
handle(toolName: string, args: Record<string, unknown>): Promise<{
|
|
29
41
|
content: Array<{
|
package/dist/mcp/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,SAAuC,MAAM,UAAU,CAAC;AAK/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAyDpD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACtG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,KAAK,EAAE,cAAc,EA4xBjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,cAczC,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,WAAW,CAAgC;IACnD,qFAAqF;IACrF,OAAO,CAAC,YAAY,CAA8D;gBAEtE,EAAE,EAAE,SAAS,GAAG,IAAI;IAIhC,mBAAmB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAIxC,kDAAkD;IAClD,QAAQ,IAAI,IAAI;IAOhB,gEAAgE;IAChE,OAAO,CAAC,mBAAmB;YAiCb,aAAa;IAerB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;YAoC/H,QAAQ;CA02FvB"}
|