cgraphx 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +243 -0
- package/dist/.claude-template/commands/my-commit.md +9 -0
- package/dist/.claude-template/commands/my-query.md +4 -0
- package/dist/.claude-template/hooks/context-monitor/context-monitor.cjs +216 -0
- package/dist/.claude-template/plugins/claude-hud/dist/claude-config-dir.d.ts +4 -0
- package/dist/.claude-template/plugins/claude-hud/dist/claude-config-dir.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/claude-config-dir.js +24 -0
- package/dist/.claude-template/plugins/claude-hud/dist/claude-config-dir.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/config-reader.d.ts +8 -0
- package/dist/.claude-template/plugins/claude-hud/dist/config-reader.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/config-reader.js +204 -0
- package/dist/.claude-template/plugins/claude-hud/dist/config-reader.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/config.d.ts +46 -0
- package/dist/.claude-template/plugins/claude-hud/dist/config.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/config.js +220 -0
- package/dist/.claude-template/plugins/claude-hud/dist/config.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/constants.d.ts +10 -0
- package/dist/.claude-template/plugins/claude-hud/dist/constants.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/constants.js +10 -0
- package/dist/.claude-template/plugins/claude-hud/dist/constants.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/debug.d.ts +6 -0
- package/dist/.claude-template/plugins/claude-hud/dist/debug.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/debug.js +15 -0
- package/dist/.claude-template/plugins/claude-hud/dist/debug.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/extra-cmd.d.ts +23 -0
- package/dist/.claude-template/plugins/claude-hud/dist/extra-cmd.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/extra-cmd.js +103 -0
- package/dist/.claude-template/plugins/claude-hud/dist/extra-cmd.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/git.d.ts +16 -0
- package/dist/.claude-template/plugins/claude-hud/dist/git.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/git.js +86 -0
- package/dist/.claude-template/plugins/claude-hud/dist/git.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/index.d.ts +24 -0
- package/dist/.claude-template/plugins/claude-hud/dist/index.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/index.js +97 -0
- package/dist/.claude-template/plugins/claude-hud/dist/index.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/agents-line.d.ts +3 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/agents-line.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/agents-line.js +44 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/agents-line.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/colors.d.ts +12 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/colors.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/colors.js +58 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/colors.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/index.d.ts +3 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/index.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/index.js +379 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/index.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/environment.d.ts +3 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/environment.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/environment.js +30 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/environment.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/identity.d.ts +3 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/identity.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/identity.js +52 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/identity.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/index.d.ts +5 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/index.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/index.js +5 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/index.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/project.d.ts +3 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/project.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/project.js +74 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/project.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/usage.d.ts +3 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/usage.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/usage.js +92 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/lines/usage.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/session-line.d.ts +7 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/session-line.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/session-line.js +247 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/session-line.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/todos-line.d.ts +3 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/todos-line.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/todos-line.js +25 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/todos-line.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/tools-line.d.ts +3 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/tools-line.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/tools-line.js +43 -0
- package/dist/.claude-template/plugins/claude-hud/dist/render/tools-line.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/speed-tracker.d.ts +7 -0
- package/dist/.claude-template/plugins/claude-hud/dist/speed-tracker.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/speed-tracker.js +62 -0
- package/dist/.claude-template/plugins/claude-hud/dist/speed-tracker.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/stdin.d.ts +9 -0
- package/dist/.claude-template/plugins/claude-hud/dist/stdin.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/stdin.js +136 -0
- package/dist/.claude-template/plugins/claude-hud/dist/stdin.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/transcript.d.ts +3 -0
- package/dist/.claude-template/plugins/claude-hud/dist/transcript.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/transcript.js +189 -0
- package/dist/.claude-template/plugins/claude-hud/dist/transcript.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/types.d.ts +79 -0
- package/dist/.claude-template/plugins/claude-hud/dist/types.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/types.js +5 -0
- package/dist/.claude-template/plugins/claude-hud/dist/types.js.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/usage-api.d.ts +59 -0
- package/dist/.claude-template/plugins/claude-hud/dist/usage-api.d.ts.map +1 -0
- package/dist/.claude-template/plugins/claude-hud/dist/usage-api.js +733 -0
- package/dist/.claude-template/plugins/claude-hud/dist/usage-api.js.map +1 -0
- package/dist/.claude-template/skills/cgraphx/SKILL.md +143 -0
- package/dist/.claude-template/skills/cgraphx/agent-prompt.md +56 -0
- package/dist/.claude-template/skills/clarify-requirements/SKILL.md +425 -0
- package/dist/.claude-template/skills/code-impact-api/SKILL.md +143 -0
- package/dist/.claude-template/skills/code-impact-api/agent-prompt.md +51 -0
- package/dist/.claude-template/skills/code-impact-docgen/SKILL.md +366 -0
- package/dist/.claude-template/skills/code-impact-docgen/template-business-html.md +242 -0
- package/dist/.claude-template/skills/code-impact-docgen/template-business-md.md +107 -0
- package/dist/.claude-template/skills/code-impact-docgen/template-technical-html.md +205 -0
- package/dist/.claude-template/skills/code-impact-docgen/template-technical-md.md +155 -0
- package/dist/.claude-template/skills/code-impact-init/SKILL.md +800 -0
- package/dist/.claude-template/skills/code-impact-markdown/SKILL.md +345 -0
- package/dist/.claude-template/skills/code-impact-markdown/template-guide.md +68 -0
- package/dist/.claude-template/skills/code-impact-markdown/template-memory.md +82 -0
- package/dist/.claude-template/skills/code-impact-markdown/template-runbook.md +58 -0
- package/dist/.claude-template/skills/db-query/SKILL.md +166 -0
- package/dist/.claude-template/skills/db-query/agent-prompt.md +55 -0
- package/dist/.claude-template/skills/developer-timeline/SKILL.md +302 -0
- package/dist/.claude-template/skills/developer-timeline/demo-single-page-report.html +657 -0
- package/dist/.claude-template/skills/implementation/SKILL.md +136 -0
- package/dist/.claude-template/skills/subagent-implement/SKILL.md +225 -0
- package/dist/.claude-template/skills/subagent-implement/implementer-prompt.md +127 -0
- package/dist/.claude-template/skills/subagent-implement/quality-reviewer-prompt.md +130 -0
- package/dist/.claude-template/skills/subagent-implement/spec-reviewer-prompt.md +112 -0
- package/dist/.claude-template/skills/write-plan/SKILL.md +322 -0
- package/dist/.claude-template/skills/write-plan/plan-document-reviewer-prompt.md +134 -0
- package/dist/.claude-template/skills/write-prd/SKILL.md +242 -0
- package/dist/.claude-template/skills/write-spec/SKILL.md +278 -0
- package/dist/bin/codegraph.d.ts +26 -0
- package/dist/bin/codegraph.d.ts.map +1 -0
- package/dist/bin/codegraph.js +2014 -0
- package/dist/bin/codegraph.js.map +1 -0
- package/dist/bin/fatal-handler.d.ts +20 -0
- package/dist/bin/fatal-handler.d.ts.map +1 -0
- package/dist/bin/fatal-handler.js +118 -0
- package/dist/bin/fatal-handler.js.map +1 -0
- package/dist/bin/node-version-check.d.ts +51 -0
- package/dist/bin/node-version-check.d.ts.map +1 -0
- package/dist/bin/node-version-check.js +114 -0
- package/dist/bin/node-version-check.js.map +1 -0
- package/dist/bin/uninstall.d.ts +14 -0
- package/dist/bin/uninstall.d.ts.map +1 -0
- package/dist/bin/uninstall.js +36 -0
- package/dist/bin/uninstall.js.map +1 -0
- package/dist/context/formatter.d.ts +30 -0
- package/dist/context/formatter.d.ts.map +1 -0
- package/dist/context/formatter.js +263 -0
- package/dist/context/formatter.js.map +1 -0
- package/dist/context/index.d.ts +119 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +1296 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/markers.d.ts +19 -0
- package/dist/context/markers.d.ts.map +1 -0
- package/dist/context/markers.js +22 -0
- package/dist/context/markers.js.map +1 -0
- package/dist/db/index.d.ts +122 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +296 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrations.d.ts +44 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +140 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +401 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +1591 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.sql +152 -0
- package/dist/db/sqlite-adapter.d.ts +53 -0
- package/dist/db/sqlite-adapter.d.ts.map +1 -0
- package/dist/db/sqlite-adapter.js +117 -0
- package/dist/db/sqlite-adapter.js.map +1 -0
- package/dist/dbquery/cli.d.ts +17 -0
- package/dist/dbquery/cli.d.ts.map +1 -0
- package/dist/dbquery/cli.js +229 -0
- package/dist/dbquery/cli.js.map +1 -0
- package/dist/dbquery/config.d.ts +38 -0
- package/dist/dbquery/config.d.ts.map +1 -0
- package/dist/dbquery/config.js +244 -0
- package/dist/dbquery/config.js.map +1 -0
- package/dist/dbquery/constants.d.ts +40 -0
- package/dist/dbquery/constants.d.ts.map +1 -0
- package/dist/dbquery/constants.js +65 -0
- package/dist/dbquery/constants.js.map +1 -0
- package/dist/dbquery/drivers/mysql.d.ts +15 -0
- package/dist/dbquery/drivers/mysql.d.ts.map +1 -0
- package/dist/dbquery/drivers/mysql.js +102 -0
- package/dist/dbquery/drivers/mysql.js.map +1 -0
- package/dist/dbquery/drivers/postgres.d.ts +16 -0
- package/dist/dbquery/drivers/postgres.d.ts.map +1 -0
- package/dist/dbquery/drivers/postgres.js +105 -0
- package/dist/dbquery/drivers/postgres.js.map +1 -0
- package/dist/dbquery/errors.d.ts +40 -0
- package/dist/dbquery/errors.d.ts.map +1 -0
- package/dist/dbquery/errors.js +85 -0
- package/dist/dbquery/errors.js.map +1 -0
- package/dist/dbquery/executor.d.ts +30 -0
- package/dist/dbquery/executor.d.ts.map +1 -0
- package/dist/dbquery/executor.js +243 -0
- package/dist/dbquery/executor.js.map +1 -0
- package/dist/dbquery/format.d.ts +18 -0
- package/dist/dbquery/format.d.ts.map +1 -0
- package/dist/dbquery/format.js +174 -0
- package/dist/dbquery/format.js.map +1 -0
- package/dist/dbquery/index.d.ts +10 -0
- package/dist/dbquery/index.d.ts.map +1 -0
- package/dist/dbquery/index.js +23 -0
- package/dist/dbquery/index.js.map +1 -0
- package/dist/dbquery/init.d.ts +33 -0
- package/dist/dbquery/init.d.ts.map +1 -0
- package/dist/dbquery/init.js +125 -0
- package/dist/dbquery/init.js.map +1 -0
- package/dist/dbquery/logging.d.ts +22 -0
- package/dist/dbquery/logging.d.ts.map +1 -0
- package/dist/dbquery/logging.js +140 -0
- package/dist/dbquery/logging.js.map +1 -0
- package/dist/dbquery/mcp-tools.d.ts +29 -0
- package/dist/dbquery/mcp-tools.d.ts.map +1 -0
- package/dist/dbquery/mcp-tools.js +206 -0
- package/dist/dbquery/mcp-tools.js.map +1 -0
- package/dist/dbquery/queries.d.ts +31 -0
- package/dist/dbquery/queries.d.ts.map +1 -0
- package/dist/dbquery/queries.js +160 -0
- package/dist/dbquery/queries.js.map +1 -0
- package/dist/dbquery/safety.d.ts +35 -0
- package/dist/dbquery/safety.d.ts.map +1 -0
- package/dist/dbquery/safety.js +306 -0
- package/dist/dbquery/safety.js.map +1 -0
- package/dist/dbquery/types.d.ts +152 -0
- package/dist/dbquery/types.d.ts.map +1 -0
- package/dist/dbquery/types.js +10 -0
- package/dist/dbquery/types.js.map +1 -0
- package/dist/directory.d.ts +147 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +523 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +136 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +219 -0
- package/dist/errors.js.map +1 -0
- package/dist/extraction/astro-extractor.d.ts +79 -0
- package/dist/extraction/astro-extractor.d.ts.map +1 -0
- package/dist/extraction/astro-extractor.js +320 -0
- package/dist/extraction/astro-extractor.js.map +1 -0
- package/dist/extraction/dfm-extractor.d.ts +31 -0
- package/dist/extraction/dfm-extractor.d.ts.map +1 -0
- package/dist/extraction/dfm-extractor.js +151 -0
- package/dist/extraction/dfm-extractor.js.map +1 -0
- package/dist/extraction/extraction-version.d.ts +25 -0
- package/dist/extraction/extraction-version.d.ts.map +1 -0
- package/dist/extraction/extraction-version.js +28 -0
- package/dist/extraction/extraction-version.js.map +1 -0
- package/dist/extraction/function-ref.d.ts +118 -0
- package/dist/extraction/function-ref.d.ts.map +1 -0
- package/dist/extraction/function-ref.js +727 -0
- package/dist/extraction/function-ref.js.map +1 -0
- package/dist/extraction/generated-detection.d.ts +30 -0
- package/dist/extraction/generated-detection.d.ts.map +1 -0
- package/dist/extraction/generated-detection.js +83 -0
- package/dist/extraction/generated-detection.js.map +1 -0
- package/dist/extraction/grammars.d.ts +114 -0
- package/dist/extraction/grammars.d.ts.map +1 -0
- package/dist/extraction/grammars.js +477 -0
- package/dist/extraction/grammars.js.map +1 -0
- package/dist/extraction/index.d.ts +175 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +1887 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/languages/c-cpp.d.ts +12 -0
- package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
- package/dist/extraction/languages/c-cpp.js +275 -0
- package/dist/extraction/languages/c-cpp.js.map +1 -0
- package/dist/extraction/languages/csharp.d.ts +25 -0
- package/dist/extraction/languages/csharp.d.ts.map +1 -0
- package/dist/extraction/languages/csharp.js +175 -0
- package/dist/extraction/languages/csharp.js.map +1 -0
- package/dist/extraction/languages/dart.d.ts +3 -0
- package/dist/extraction/languages/dart.d.ts.map +1 -0
- package/dist/extraction/languages/dart.js +374 -0
- package/dist/extraction/languages/dart.js.map +1 -0
- package/dist/extraction/languages/go.d.ts +3 -0
- package/dist/extraction/languages/go.d.ts.map +1 -0
- package/dist/extraction/languages/go.js +111 -0
- package/dist/extraction/languages/go.js.map +1 -0
- package/dist/extraction/languages/index.d.ts +10 -0
- package/dist/extraction/languages/index.d.ts.map +1 -0
- package/dist/extraction/languages/index.js +53 -0
- package/dist/extraction/languages/index.js.map +1 -0
- package/dist/extraction/languages/java.d.ts +3 -0
- package/dist/extraction/languages/java.d.ts.map +1 -0
- package/dist/extraction/languages/java.js +315 -0
- package/dist/extraction/languages/java.js.map +1 -0
- package/dist/extraction/languages/javascript.d.ts +3 -0
- package/dist/extraction/languages/javascript.d.ts.map +1 -0
- package/dist/extraction/languages/javascript.js +106 -0
- package/dist/extraction/languages/javascript.js.map +1 -0
- package/dist/extraction/languages/kotlin.d.ts +3 -0
- package/dist/extraction/languages/kotlin.d.ts.map +1 -0
- package/dist/extraction/languages/kotlin.js +379 -0
- package/dist/extraction/languages/kotlin.js.map +1 -0
- package/dist/extraction/languages/lua.d.ts +3 -0
- package/dist/extraction/languages/lua.d.ts.map +1 -0
- package/dist/extraction/languages/lua.js +150 -0
- package/dist/extraction/languages/lua.js.map +1 -0
- package/dist/extraction/languages/luau.d.ts +3 -0
- package/dist/extraction/languages/luau.d.ts.map +1 -0
- package/dist/extraction/languages/luau.js +37 -0
- package/dist/extraction/languages/luau.js.map +1 -0
- package/dist/extraction/languages/objc.d.ts +3 -0
- package/dist/extraction/languages/objc.d.ts.map +1 -0
- package/dist/extraction/languages/objc.js +175 -0
- package/dist/extraction/languages/objc.js.map +1 -0
- package/dist/extraction/languages/pascal.d.ts +3 -0
- package/dist/extraction/languages/pascal.d.ts.map +1 -0
- package/dist/extraction/languages/pascal.js +77 -0
- package/dist/extraction/languages/pascal.js.map +1 -0
- package/dist/extraction/languages/php.d.ts +3 -0
- package/dist/extraction/languages/php.d.ts.map +1 -0
- package/dist/extraction/languages/php.js +196 -0
- package/dist/extraction/languages/php.js.map +1 -0
- package/dist/extraction/languages/python.d.ts +3 -0
- package/dist/extraction/languages/python.d.ts.map +1 -0
- package/dist/extraction/languages/python.js +56 -0
- package/dist/extraction/languages/python.js.map +1 -0
- package/dist/extraction/languages/r.d.ts +3 -0
- package/dist/extraction/languages/r.d.ts.map +1 -0
- package/dist/extraction/languages/r.js +314 -0
- package/dist/extraction/languages/r.js.map +1 -0
- package/dist/extraction/languages/ruby.d.ts +3 -0
- package/dist/extraction/languages/ruby.d.ts.map +1 -0
- package/dist/extraction/languages/ruby.js +149 -0
- package/dist/extraction/languages/ruby.js.map +1 -0
- package/dist/extraction/languages/rust.d.ts +3 -0
- package/dist/extraction/languages/rust.d.ts.map +1 -0
- package/dist/extraction/languages/rust.js +142 -0
- package/dist/extraction/languages/rust.js.map +1 -0
- package/dist/extraction/languages/scala.d.ts +3 -0
- package/dist/extraction/languages/scala.d.ts.map +1 -0
- package/dist/extraction/languages/scala.js +209 -0
- package/dist/extraction/languages/scala.js.map +1 -0
- package/dist/extraction/languages/swift.d.ts +3 -0
- package/dist/extraction/languages/swift.d.ts.map +1 -0
- package/dist/extraction/languages/swift.js +152 -0
- package/dist/extraction/languages/swift.js.map +1 -0
- package/dist/extraction/languages/typescript.d.ts +16 -0
- package/dist/extraction/languages/typescript.d.ts.map +1 -0
- package/dist/extraction/languages/typescript.js +167 -0
- package/dist/extraction/languages/typescript.js.map +1 -0
- package/dist/extraction/liquid-extractor.d.ts +59 -0
- package/dist/extraction/liquid-extractor.d.ts.map +1 -0
- package/dist/extraction/liquid-extractor.js +357 -0
- package/dist/extraction/liquid-extractor.js.map +1 -0
- package/dist/extraction/mybatis-extractor.d.ts +48 -0
- package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
- package/dist/extraction/mybatis-extractor.js +198 -0
- package/dist/extraction/mybatis-extractor.js.map +1 -0
- package/dist/extraction/parse-worker.d.ts +8 -0
- package/dist/extraction/parse-worker.d.ts.map +1 -0
- package/dist/extraction/parse-worker.js +97 -0
- package/dist/extraction/parse-worker.js.map +1 -0
- package/dist/extraction/razor-extractor.d.ts +42 -0
- package/dist/extraction/razor-extractor.d.ts.map +1 -0
- package/dist/extraction/razor-extractor.js +285 -0
- package/dist/extraction/razor-extractor.js.map +1 -0
- package/dist/extraction/svelte-extractor.d.ts +56 -0
- package/dist/extraction/svelte-extractor.d.ts.map +1 -0
- package/dist/extraction/svelte-extractor.js +275 -0
- package/dist/extraction/svelte-extractor.js.map +1 -0
- package/dist/extraction/tree-sitter-helpers.d.ts +28 -0
- package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-helpers.js +152 -0
- package/dist/extraction/tree-sitter-helpers.js.map +1 -0
- package/dist/extraction/tree-sitter-types.d.ts +239 -0
- package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
- package/dist/extraction/tree-sitter-types.js +10 -0
- package/dist/extraction/tree-sitter-types.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts +647 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -0
- package/dist/extraction/tree-sitter.js +5592 -0
- package/dist/extraction/tree-sitter.js.map +1 -0
- package/dist/extraction/vue-extractor.d.ts +51 -0
- package/dist/extraction/vue-extractor.d.ts.map +1 -0
- package/dist/extraction/vue-extractor.js +254 -0
- package/dist/extraction/vue-extractor.js.map +1 -0
- package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
- package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
- package/dist/extraction/wasm-runtime-flags.js +106 -0
- package/dist/extraction/wasm-runtime-flags.js.map +1 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +13 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/queries.d.ts +106 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +339 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/traversal.d.ts +127 -0
- package/dist/graph/traversal.d.ts.map +1 -0
- package/dist/graph/traversal.js +540 -0
- package/dist/graph/traversal.js.map +1 -0
- package/dist/index.d.ts +563 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1041 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/claude-assets.d.ts +45 -0
- package/dist/installer/claude-assets.d.ts.map +1 -0
- package/dist/installer/claude-assets.js +144 -0
- package/dist/installer/claude-assets.js.map +1 -0
- package/dist/installer/config-writer.d.ts +28 -0
- package/dist/installer/config-writer.d.ts.map +1 -0
- package/dist/installer/config-writer.js +91 -0
- package/dist/installer/config-writer.js.map +1 -0
- package/dist/installer/index.d.ts +101 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +692 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/installer/instructions-template.d.ts +41 -0
- package/dist/installer/instructions-template.d.ts.map +1 -0
- package/dist/installer/instructions-template.js +53 -0
- package/dist/installer/instructions-template.js.map +1 -0
- package/dist/installer/targets/antigravity.d.ts +57 -0
- package/dist/installer/targets/antigravity.d.ts.map +1 -0
- package/dist/installer/targets/antigravity.js +308 -0
- package/dist/installer/targets/antigravity.js.map +1 -0
- package/dist/installer/targets/claude.d.ts +66 -0
- package/dist/installer/targets/claude.d.ts.map +1 -0
- package/dist/installer/targets/claude.js +564 -0
- package/dist/installer/targets/claude.js.map +1 -0
- package/dist/installer/targets/codex.d.ts +18 -0
- package/dist/installer/targets/codex.d.ts.map +1 -0
- package/dist/installer/targets/codex.js +185 -0
- package/dist/installer/targets/codex.js.map +1 -0
- package/dist/installer/targets/cursor.d.ts +35 -0
- package/dist/installer/targets/cursor.d.ts.map +1 -0
- package/dist/installer/targets/cursor.js +254 -0
- package/dist/installer/targets/cursor.js.map +1 -0
- package/dist/installer/targets/gemini.d.ts +26 -0
- package/dist/installer/targets/gemini.d.ts.map +1 -0
- package/dist/installer/targets/gemini.js +165 -0
- package/dist/installer/targets/gemini.js.map +1 -0
- package/dist/installer/targets/hermes.d.ts +18 -0
- package/dist/installer/targets/hermes.d.ts.map +1 -0
- package/dist/installer/targets/hermes.js +359 -0
- package/dist/installer/targets/hermes.js.map +1 -0
- package/dist/installer/targets/kiro.d.ts +27 -0
- package/dist/installer/targets/kiro.d.ts.map +1 -0
- package/dist/installer/targets/kiro.js +178 -0
- package/dist/installer/targets/kiro.js.map +1 -0
- package/dist/installer/targets/opencode.d.ts +38 -0
- package/dist/installer/targets/opencode.d.ts.map +1 -0
- package/dist/installer/targets/opencode.js +288 -0
- package/dist/installer/targets/opencode.js.map +1 -0
- package/dist/installer/targets/registry.d.ts +35 -0
- package/dist/installer/targets/registry.d.ts.map +1 -0
- package/dist/installer/targets/registry.js +91 -0
- package/dist/installer/targets/registry.js.map +1 -0
- package/dist/installer/targets/shared.d.ts +101 -0
- package/dist/installer/targets/shared.d.ts.map +1 -0
- package/dist/installer/targets/shared.js +264 -0
- package/dist/installer/targets/shared.js.map +1 -0
- package/dist/installer/targets/toml.d.ts +52 -0
- package/dist/installer/targets/toml.d.ts.map +1 -0
- package/dist/installer/targets/toml.js +147 -0
- package/dist/installer/targets/toml.js.map +1 -0
- package/dist/installer/targets/types.d.ts +108 -0
- package/dist/installer/targets/types.d.ts.map +1 -0
- package/dist/installer/targets/types.js +16 -0
- package/dist/installer/targets/types.js.map +1 -0
- package/dist/markdown/cli.d.ts +16 -0
- package/dist/markdown/cli.d.ts.map +1 -0
- package/dist/markdown/cli.js +533 -0
- package/dist/markdown/cli.js.map +1 -0
- package/dist/markdown/constants.d.ts +22 -0
- package/dist/markdown/constants.d.ts.map +1 -0
- package/dist/markdown/constants.js +71 -0
- package/dist/markdown/constants.js.map +1 -0
- package/dist/markdown/dedup.d.ts +20 -0
- package/dist/markdown/dedup.d.ts.map +1 -0
- package/dist/markdown/dedup.js +64 -0
- package/dist/markdown/dedup.js.map +1 -0
- package/dist/markdown/errors.d.ts +22 -0
- package/dist/markdown/errors.d.ts.map +1 -0
- package/dist/markdown/errors.js +45 -0
- package/dist/markdown/errors.js.map +1 -0
- package/dist/markdown/extractor.d.ts +43 -0
- package/dist/markdown/extractor.d.ts.map +1 -0
- package/dist/markdown/extractor.js +152 -0
- package/dist/markdown/extractor.js.map +1 -0
- package/dist/markdown/frontmatter-parser.d.ts +47 -0
- package/dist/markdown/frontmatter-parser.d.ts.map +1 -0
- package/dist/markdown/frontmatter-parser.js +199 -0
- package/dist/markdown/frontmatter-parser.js.map +1 -0
- package/dist/markdown/indexer.d.ts +34 -0
- package/dist/markdown/indexer.d.ts.map +1 -0
- package/dist/markdown/indexer.js +256 -0
- package/dist/markdown/indexer.js.map +1 -0
- package/dist/markdown/mcp-tools.d.ts +33 -0
- package/dist/markdown/mcp-tools.d.ts.map +1 -0
- package/dist/markdown/mcp-tools.js +300 -0
- package/dist/markdown/mcp-tools.js.map +1 -0
- package/dist/markdown/query.d.ts +108 -0
- package/dist/markdown/query.d.ts.map +1 -0
- package/dist/markdown/query.js +570 -0
- package/dist/markdown/query.js.map +1 -0
- package/dist/markdown/schema-bootstrap.d.ts +40 -0
- package/dist/markdown/schema-bootstrap.d.ts.map +1 -0
- package/dist/markdown/schema-bootstrap.js +85 -0
- package/dist/markdown/schema-bootstrap.js.map +1 -0
- package/dist/markdown/schema.sql +124 -0
- package/dist/markdown/store.d.ts +77 -0
- package/dist/markdown/store.d.ts.map +1 -0
- package/dist/markdown/store.js +194 -0
- package/dist/markdown/store.js.map +1 -0
- package/dist/markdown/summary-extractor.d.ts +22 -0
- package/dist/markdown/summary-extractor.d.ts.map +1 -0
- package/dist/markdown/summary-extractor.js +66 -0
- package/dist/markdown/summary-extractor.js.map +1 -0
- package/dist/markdown/types.d.ts +159 -0
- package/dist/markdown/types.d.ts.map +1 -0
- package/dist/markdown/types.js +9 -0
- package/dist/markdown/types.js.map +1 -0
- package/dist/markdown/validator.d.ts +44 -0
- package/dist/markdown/validator.d.ts.map +1 -0
- package/dist/markdown/validator.js +95 -0
- package/dist/markdown/validator.js.map +1 -0
- package/dist/mcp/daemon-manager.d.ts +42 -0
- package/dist/mcp/daemon-manager.d.ts.map +1 -0
- package/dist/mcp/daemon-manager.js +129 -0
- package/dist/mcp/daemon-manager.js.map +1 -0
- package/dist/mcp/daemon-paths.d.ts +46 -0
- package/dist/mcp/daemon-paths.d.ts.map +1 -0
- package/dist/mcp/daemon-paths.js +125 -0
- package/dist/mcp/daemon-paths.js.map +1 -0
- package/dist/mcp/daemon-registry.d.ts +47 -0
- package/dist/mcp/daemon-registry.d.ts.map +1 -0
- package/dist/mcp/daemon-registry.js +229 -0
- package/dist/mcp/daemon-registry.js.map +1 -0
- package/dist/mcp/daemon.d.ts +220 -0
- package/dist/mcp/daemon.d.ts.map +1 -0
- package/dist/mcp/daemon.js +637 -0
- package/dist/mcp/daemon.js.map +1 -0
- package/dist/mcp/dynamic-boundaries.d.ts +41 -0
- package/dist/mcp/dynamic-boundaries.d.ts.map +1 -0
- package/dist/mcp/dynamic-boundaries.js +359 -0
- package/dist/mcp/dynamic-boundaries.js.map +1 -0
- package/dist/mcp/engine.d.ts +105 -0
- package/dist/mcp/engine.d.ts.map +1 -0
- package/dist/mcp/engine.js +278 -0
- package/dist/mcp/engine.js.map +1 -0
- package/dist/mcp/index.d.ts +113 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +499 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/liveness-watchdog.d.ts +18 -0
- package/dist/mcp/liveness-watchdog.d.ts.map +1 -0
- package/dist/mcp/liveness-watchdog.js +207 -0
- package/dist/mcp/liveness-watchdog.js.map +1 -0
- package/dist/mcp/ppid-watchdog.d.ts +44 -0
- package/dist/mcp/ppid-watchdog.d.ts.map +1 -0
- package/dist/mcp/ppid-watchdog.js +27 -0
- package/dist/mcp/ppid-watchdog.js.map +1 -0
- package/dist/mcp/proxy.d.ts +87 -0
- package/dist/mcp/proxy.d.ts.map +1 -0
- package/dist/mcp/proxy.js +641 -0
- package/dist/mcp/proxy.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +34 -0
- package/dist/mcp/server-instructions.d.ts.map +1 -0
- package/dist/mcp/server-instructions.js +106 -0
- package/dist/mcp/server-instructions.js.map +1 -0
- package/dist/mcp/session.d.ts +79 -0
- package/dist/mcp/session.d.ts.map +1 -0
- package/dist/mcp/session.js +330 -0
- package/dist/mcp/session.js.map +1 -0
- package/dist/mcp/stdin-teardown.d.ts +27 -0
- package/dist/mcp/stdin-teardown.d.ts.map +1 -0
- package/dist/mcp/stdin-teardown.js +49 -0
- package/dist/mcp/stdin-teardown.js.map +1 -0
- package/dist/mcp/tools.d.ts +547 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +4122 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/transport.d.ts +188 -0
- package/dist/mcp/transport.d.ts.map +1 -0
- package/dist/mcp/transport.js +359 -0
- package/dist/mcp/transport.js.map +1 -0
- package/dist/mcp/version.d.ts +19 -0
- package/dist/mcp/version.d.ts.map +1 -0
- package/dist/mcp/version.js +71 -0
- package/dist/mcp/version.js.map +1 -0
- package/dist/project-config.d.ts +36 -0
- package/dist/project-config.d.ts.map +1 -0
- package/dist/project-config.js +235 -0
- package/dist/project-config.js.map +1 -0
- package/dist/reasoning/config.d.ts +45 -0
- package/dist/reasoning/config.d.ts.map +1 -0
- package/dist/reasoning/config.js +171 -0
- package/dist/reasoning/config.js.map +1 -0
- package/dist/reasoning/credentials.d.ts +5 -0
- package/dist/reasoning/credentials.d.ts.map +1 -0
- package/dist/reasoning/credentials.js +83 -0
- package/dist/reasoning/credentials.js.map +1 -0
- package/dist/reasoning/login.d.ts +21 -0
- package/dist/reasoning/login.d.ts.map +1 -0
- package/dist/reasoning/login.js +85 -0
- package/dist/reasoning/login.js.map +1 -0
- package/dist/reasoning/reasoner.d.ts +43 -0
- package/dist/reasoning/reasoner.d.ts.map +1 -0
- package/dist/reasoning/reasoner.js +308 -0
- package/dist/reasoning/reasoner.js.map +1 -0
- package/dist/resolution/c-fnptr-synthesizer.d.ts +33 -0
- package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -0
- package/dist/resolution/c-fnptr-synthesizer.js +352 -0
- package/dist/resolution/c-fnptr-synthesizer.js.map +1 -0
- package/dist/resolution/callback-synthesizer.d.ts +15 -0
- package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
- package/dist/resolution/callback-synthesizer.js +2926 -0
- package/dist/resolution/callback-synthesizer.js.map +1 -0
- package/dist/resolution/frameworks/astro.d.ts +9 -0
- package/dist/resolution/frameworks/astro.d.ts.map +1 -0
- package/dist/resolution/frameworks/astro.js +169 -0
- package/dist/resolution/frameworks/astro.js.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
- package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
- package/dist/resolution/frameworks/cargo-workspace.js +225 -0
- package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
- package/dist/resolution/frameworks/csharp.d.ts +8 -0
- package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
- package/dist/resolution/frameworks/csharp.js +241 -0
- package/dist/resolution/frameworks/csharp.js.map +1 -0
- package/dist/resolution/frameworks/drupal.d.ts +51 -0
- package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
- package/dist/resolution/frameworks/drupal.js +367 -0
- package/dist/resolution/frameworks/drupal.js.map +1 -0
- package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
- package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
- package/dist/resolution/frameworks/expo-modules.js +148 -0
- package/dist/resolution/frameworks/expo-modules.js.map +1 -0
- package/dist/resolution/frameworks/express.d.ts +8 -0
- package/dist/resolution/frameworks/express.d.ts.map +1 -0
- package/dist/resolution/frameworks/express.js +308 -0
- package/dist/resolution/frameworks/express.js.map +1 -0
- package/dist/resolution/frameworks/fabric.d.ts +3 -0
- package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
- package/dist/resolution/frameworks/fabric.js +354 -0
- package/dist/resolution/frameworks/fabric.js.map +1 -0
- package/dist/resolution/frameworks/go.d.ts +8 -0
- package/dist/resolution/frameworks/go.d.ts.map +1 -0
- package/dist/resolution/frameworks/go.js +161 -0
- package/dist/resolution/frameworks/go.js.map +1 -0
- package/dist/resolution/frameworks/goframe.d.ts +41 -0
- package/dist/resolution/frameworks/goframe.d.ts.map +1 -0
- package/dist/resolution/frameworks/goframe.js +112 -0
- package/dist/resolution/frameworks/goframe.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +50 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/resolution/frameworks/index.js +169 -0
- package/dist/resolution/frameworks/index.js.map +1 -0
- package/dist/resolution/frameworks/java.d.ts +8 -0
- package/dist/resolution/frameworks/java.d.ts.map +1 -0
- package/dist/resolution/frameworks/java.js +509 -0
- package/dist/resolution/frameworks/java.js.map +1 -0
- package/dist/resolution/frameworks/laravel.d.ts +13 -0
- package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
- package/dist/resolution/frameworks/laravel.js +257 -0
- package/dist/resolution/frameworks/laravel.js.map +1 -0
- package/dist/resolution/frameworks/nestjs.d.ts +26 -0
- package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
- package/dist/resolution/frameworks/nestjs.js +698 -0
- package/dist/resolution/frameworks/nestjs.js.map +1 -0
- package/dist/resolution/frameworks/play.d.ts +19 -0
- package/dist/resolution/frameworks/play.d.ts.map +1 -0
- package/dist/resolution/frameworks/play.js +111 -0
- package/dist/resolution/frameworks/play.js.map +1 -0
- package/dist/resolution/frameworks/python.d.ts +10 -0
- package/dist/resolution/frameworks/python.d.ts.map +1 -0
- package/dist/resolution/frameworks/python.js +400 -0
- package/dist/resolution/frameworks/python.js.map +1 -0
- package/dist/resolution/frameworks/react-native.d.ts +3 -0
- package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
- package/dist/resolution/frameworks/react-native.js +410 -0
- package/dist/resolution/frameworks/react-native.js.map +1 -0
- package/dist/resolution/frameworks/react.d.ts +8 -0
- package/dist/resolution/frameworks/react.d.ts.map +1 -0
- package/dist/resolution/frameworks/react.js +334 -0
- package/dist/resolution/frameworks/react.js.map +1 -0
- package/dist/resolution/frameworks/ruby.d.ts +8 -0
- package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
- package/dist/resolution/frameworks/ruby.js +302 -0
- package/dist/resolution/frameworks/ruby.js.map +1 -0
- package/dist/resolution/frameworks/rust.d.ts +8 -0
- package/dist/resolution/frameworks/rust.d.ts.map +1 -0
- package/dist/resolution/frameworks/rust.js +304 -0
- package/dist/resolution/frameworks/rust.js.map +1 -0
- package/dist/resolution/frameworks/svelte.d.ts +9 -0
- package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
- package/dist/resolution/frameworks/svelte.js +253 -0
- package/dist/resolution/frameworks/svelte.js.map +1 -0
- package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
- package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift-objc.js +252 -0
- package/dist/resolution/frameworks/swift-objc.js.map +1 -0
- package/dist/resolution/frameworks/swift.d.ts +10 -0
- package/dist/resolution/frameworks/swift.d.ts.map +1 -0
- package/dist/resolution/frameworks/swift.js +400 -0
- package/dist/resolution/frameworks/swift.js.map +1 -0
- package/dist/resolution/frameworks/vue.d.ts +9 -0
- package/dist/resolution/frameworks/vue.d.ts.map +1 -0
- package/dist/resolution/frameworks/vue.js +303 -0
- package/dist/resolution/frameworks/vue.js.map +1 -0
- package/dist/resolution/go-module.d.ts +26 -0
- package/dist/resolution/go-module.d.ts.map +1 -0
- package/dist/resolution/go-module.js +78 -0
- package/dist/resolution/go-module.js.map +1 -0
- package/dist/resolution/goframe-synthesizer.d.ts +28 -0
- package/dist/resolution/goframe-synthesizer.d.ts.map +1 -0
- package/dist/resolution/goframe-synthesizer.js +158 -0
- package/dist/resolution/goframe-synthesizer.js.map +1 -0
- package/dist/resolution/import-resolver.d.ts +78 -0
- package/dist/resolution/import-resolver.d.ts.map +1 -0
- package/dist/resolution/import-resolver.js +1849 -0
- package/dist/resolution/import-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +196 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +1328 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/lru-cache.d.ts +24 -0
- package/dist/resolution/lru-cache.d.ts.map +1 -0
- package/dist/resolution/lru-cache.js +62 -0
- package/dist/resolution/lru-cache.js.map +1 -0
- package/dist/resolution/name-matcher.d.ts +93 -0
- package/dist/resolution/name-matcher.d.ts.map +1 -0
- package/dist/resolution/name-matcher.js +1212 -0
- package/dist/resolution/name-matcher.js.map +1 -0
- package/dist/resolution/path-aliases.d.ts +68 -0
- package/dist/resolution/path-aliases.d.ts.map +1 -0
- package/dist/resolution/path-aliases.js +238 -0
- package/dist/resolution/path-aliases.js.map +1 -0
- package/dist/resolution/strip-comments.d.ts +27 -0
- package/dist/resolution/strip-comments.d.ts.map +1 -0
- package/dist/resolution/strip-comments.js +443 -0
- package/dist/resolution/strip-comments.js.map +1 -0
- package/dist/resolution/swift-objc-bridge.d.ts +134 -0
- package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
- package/dist/resolution/swift-objc-bridge.js +256 -0
- package/dist/resolution/swift-objc-bridge.js.map +1 -0
- package/dist/resolution/types.d.ts +233 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +8 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/resolution/workspace-packages.d.ts +48 -0
- package/dist/resolution/workspace-packages.d.ts.map +1 -0
- package/dist/resolution/workspace-packages.js +208 -0
- package/dist/resolution/workspace-packages.js.map +1 -0
- package/dist/search/query-parser.d.ts +57 -0
- package/dist/search/query-parser.d.ts.map +1 -0
- package/dist/search/query-parser.js +177 -0
- package/dist/search/query-parser.js.map +1 -0
- package/dist/search/query-utils.d.ts +87 -0
- package/dist/search/query-utils.d.ts.map +1 -0
- package/dist/search/query-utils.js +449 -0
- package/dist/search/query-utils.js.map +1 -0
- package/dist/sync/git-hooks.d.ts +45 -0
- package/dist/sync/git-hooks.d.ts.map +1 -0
- package/dist/sync/git-hooks.js +225 -0
- package/dist/sync/git-hooks.js.map +1 -0
- package/dist/sync/index.d.ts +19 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +35 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/watch-policy.d.ts +48 -0
- package/dist/sync/watch-policy.d.ts.map +1 -0
- package/dist/sync/watch-policy.js +124 -0
- package/dist/sync/watch-policy.js.map +1 -0
- package/dist/sync/watcher.d.ts +350 -0
- package/dist/sync/watcher.d.ts.map +1 -0
- package/dist/sync/watcher.js +811 -0
- package/dist/sync/watcher.js.map +1 -0
- package/dist/sync/worktree.d.ts +54 -0
- package/dist/sync/worktree.d.ts.map +1 -0
- package/dist/sync/worktree.js +137 -0
- package/dist/sync/worktree.js.map +1 -0
- package/dist/telemetry/index.d.ts +143 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +541 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/timeline/bash-semantics.d.ts +52 -0
- package/dist/timeline/bash-semantics.d.ts.map +1 -0
- package/dist/timeline/bash-semantics.js +376 -0
- package/dist/timeline/bash-semantics.js.map +1 -0
- package/dist/timeline/cli.d.ts +50 -0
- package/dist/timeline/cli.d.ts.map +1 -0
- package/dist/timeline/cli.js +367 -0
- package/dist/timeline/cli.js.map +1 -0
- package/dist/timeline/constants.d.ts +62 -0
- package/dist/timeline/constants.d.ts.map +1 -0
- package/dist/timeline/constants.js +73 -0
- package/dist/timeline/constants.js.map +1 -0
- package/dist/timeline/errors.d.ts +27 -0
- package/dist/timeline/errors.d.ts.map +1 -0
- package/dist/timeline/errors.js +51 -0
- package/dist/timeline/errors.js.map +1 -0
- package/dist/timeline/hook-runner.d.ts +36 -0
- package/dist/timeline/hook-runner.d.ts.map +1 -0
- package/dist/timeline/hook-runner.js +61 -0
- package/dist/timeline/hook-runner.js.map +1 -0
- package/dist/timeline/hooks.d.ts +45 -0
- package/dist/timeline/hooks.d.ts.map +1 -0
- package/dist/timeline/hooks.js +364 -0
- package/dist/timeline/hooks.js.map +1 -0
- package/dist/timeline/index.d.ts +12 -0
- package/dist/timeline/index.d.ts.map +1 -0
- package/dist/timeline/index.js +28 -0
- package/dist/timeline/index.js.map +1 -0
- package/dist/timeline/indexer.d.ts +37 -0
- package/dist/timeline/indexer.d.ts.map +1 -0
- package/dist/timeline/indexer.js +76 -0
- package/dist/timeline/indexer.js.map +1 -0
- package/dist/timeline/installer.d.ts +33 -0
- package/dist/timeline/installer.d.ts.map +1 -0
- package/dist/timeline/installer.js +255 -0
- package/dist/timeline/installer.js.map +1 -0
- package/dist/timeline/payload.d.ts +31 -0
- package/dist/timeline/payload.d.ts.map +1 -0
- package/dist/timeline/payload.js +58 -0
- package/dist/timeline/payload.js.map +1 -0
- package/dist/timeline/post-tool-summary.d.ts +29 -0
- package/dist/timeline/post-tool-summary.d.ts.map +1 -0
- package/dist/timeline/post-tool-summary.js +190 -0
- package/dist/timeline/post-tool-summary.js.map +1 -0
- package/dist/timeline/recorder.d.ts +36 -0
- package/dist/timeline/recorder.d.ts.map +1 -0
- package/dist/timeline/recorder.js +42 -0
- package/dist/timeline/recorder.js.map +1 -0
- package/dist/timeline/schema-bootstrap.d.ts +42 -0
- package/dist/timeline/schema-bootstrap.d.ts.map +1 -0
- package/dist/timeline/schema-bootstrap.js +81 -0
- package/dist/timeline/schema-bootstrap.js.map +1 -0
- package/dist/timeline/schema.sql +37 -0
- package/dist/timeline/store.d.ts +69 -0
- package/dist/timeline/store.d.ts.map +1 -0
- package/dist/timeline/store.js +429 -0
- package/dist/timeline/store.js.map +1 -0
- package/dist/timeline/types.d.ts +78 -0
- package/dist/timeline/types.d.ts.map +1 -0
- package/dist/timeline/types.js +9 -0
- package/dist/timeline/types.js.map +1 -0
- package/dist/types.d.ts +392 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +81 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/glyphs.d.ts +42 -0
- package/dist/ui/glyphs.d.ts.map +1 -0
- package/dist/ui/glyphs.js +78 -0
- package/dist/ui/glyphs.js.map +1 -0
- package/dist/ui/shimmer-progress.d.ts +11 -0
- package/dist/ui/shimmer-progress.d.ts.map +1 -0
- package/dist/ui/shimmer-progress.js +90 -0
- package/dist/ui/shimmer-progress.js.map +1 -0
- package/dist/ui/shimmer-worker.d.ts +2 -0
- package/dist/ui/shimmer-worker.d.ts.map +1 -0
- package/dist/ui/shimmer-worker.js +118 -0
- package/dist/ui/shimmer-worker.js.map +1 -0
- package/dist/ui/types.d.ts +17 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +3 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/upgrade/index.d.ts +132 -0
- package/dist/upgrade/index.d.ts.map +1 -0
- package/dist/upgrade/index.js +498 -0
- package/dist/upgrade/index.js.map +1 -0
- package/dist/utils.d.ts +224 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +583 -0
- package/dist/utils.js.map +1 -0
- package/package.json +60 -0
- package/scripts/add-lang/bench.sh +60 -0
- package/scripts/add-lang/check-grammar.mjs +75 -0
- package/scripts/add-lang/dump-ast.mjs +103 -0
- package/scripts/add-lang/verify-extraction.mjs +70 -0
- package/scripts/agent-eval/ab-adoption.sh +91 -0
- package/scripts/agent-eval/ab-hook.sh +86 -0
- package/scripts/agent-eval/ab-impl.sh +78 -0
- package/scripts/agent-eval/ab-new-vs-baseline.sh +102 -0
- package/scripts/agent-eval/ab-sufficiency.sh +78 -0
- package/scripts/agent-eval/arms-F.sh +21 -0
- package/scripts/agent-eval/arms-matrix.sh +37 -0
- package/scripts/agent-eval/audit.sh +68 -0
- package/scripts/agent-eval/bench-readme.sh +28 -0
- package/scripts/agent-eval/bench-why-repo.sh +22 -0
- package/scripts/agent-eval/block-read-hook.sh +19 -0
- package/scripts/agent-eval/hook-settings.json +15 -0
- package/scripts/agent-eval/itrun.sh +120 -0
- package/scripts/agent-eval/offload-eval-3arm.sh +72 -0
- package/scripts/agent-eval/offload-eval-cost.mjs +133 -0
- package/scripts/agent-eval/offload-eval-effort.mjs +108 -0
- package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -0
- package/scripts/agent-eval/offload-eval-frontload.sh +47 -0
- package/scripts/agent-eval/offload-eval-ground-truth.json +18 -0
- package/scripts/agent-eval/offload-eval-hook.mjs +84 -0
- package/scripts/agent-eval/offload-eval-judge.mjs +103 -0
- package/scripts/agent-eval/offload-eval-matrix.sh +20 -0
- package/scripts/agent-eval/offload-eval-metrics.mjs +94 -0
- package/scripts/agent-eval/offload-eval-refs1.sh +50 -0
- package/scripts/agent-eval/offload-eval-setup.sh +24 -0
- package/scripts/agent-eval/offload-eval-styles.sh +72 -0
- package/scripts/agent-eval/offload-eval-summarize.mjs +68 -0
- package/scripts/agent-eval/offload-eval.md +76 -0
- package/scripts/agent-eval/parse-arms.mjs +116 -0
- package/scripts/agent-eval/parse-bench-readme.mjs +84 -0
- package/scripts/agent-eval/parse-run.mjs +45 -0
- package/scripts/agent-eval/parse-session.mjs +93 -0
- package/scripts/agent-eval/probe-context.mjs +21 -0
- package/scripts/agent-eval/probe-explore.mjs +40 -0
- package/scripts/agent-eval/probe-node.mjs +20 -0
- package/scripts/agent-eval/probe-sweep.mjs +119 -0
- package/scripts/agent-eval/probe-trace.mjs +20 -0
- package/scripts/agent-eval/redirect-read-hook.sh +38 -0
- package/scripts/agent-eval/run-agent.sh +34 -0
- package/scripts/agent-eval/run-all.sh +69 -0
- package/scripts/agent-eval/run-arms.sh +56 -0
- package/scripts/agent-eval/seq-matrix.mjs +137 -0
- package/scripts/build-bundle.sh +118 -0
- package/scripts/extract-release-notes.mjs +130 -0
- package/scripts/local-install.sh +41 -0
- package/scripts/npm-sdk.js +75 -0
- package/scripts/npm-shim.js +246 -0
- package/scripts/pack-npm.sh +118 -0
- package/scripts/prepare-release.mjs +270 -0
|
@@ -0,0 +1,800 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-impact-init
|
|
3
|
+
description: Explore an unfamiliar project automatically. Discovers entry points, spawns sub-agents to explore each one in depth, saves knowledge documents, then merges and deep-dives into cross-cutting concepts. Requires code-impact-markdown skill. Use when the user asks to explore, understand, or map out a new project, or wants to build knowledge base for a project from scratch.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Project Exploration
|
|
7
|
+
|
|
8
|
+
Automated project exploration skill. Discovers entry points, explores each in depth via sub-agents, saves knowledge to the local knowledge service, then merges cross-cutting concepts and deep-dives.
|
|
9
|
+
|
|
10
|
+
**Dependencies:**
|
|
11
|
+
- `code-impact-markdown` skill must be installed in the same project(沉淀业务理解到 `docs/knowledge/*.md`)
|
|
12
|
+
- cgraphx 已 `init` 的项目索引(提供代码结构事实:symbols / 调用链 / impact)。优先通过 `codegraph_explore` MCP 工具,不可用时走 Bash CLI(`cgraphx query` / `cgraphx callers` / `cgraphx callees` / `cgraphx impact` / `cgraphx affected`)。两者都不可用时降级为 grep 模式(精度损失,详见各 Phase 的 fallback 说明)
|
|
13
|
+
|
|
14
|
+
## Trigger
|
|
15
|
+
|
|
16
|
+
Use this skill when:
|
|
17
|
+
- The user wants to explore, understand, or map out an unfamiliar project
|
|
18
|
+
- The user wants to build a knowledge base for a project from scratch
|
|
19
|
+
- The user says things like "explore this project", "understand this codebase", "build knowledge for this repo"
|
|
20
|
+
|
|
21
|
+
Do NOT use for:
|
|
22
|
+
- Quick targeted questions about specific code (use `code-impact-api` instead)
|
|
23
|
+
- Creating a single knowledge document (use `code-impact-markdown` skill instead)
|
|
24
|
+
- 纯代码结构查询(直接用 `codegraph_explore` MCP 或 `cgraphx query` CLI 即可,无需走整套 exploration 流程)
|
|
25
|
+
|
|
26
|
+
## Service & Pre-flight Check
|
|
27
|
+
|
|
28
|
+
This skill assumes cgraphx CLI is available and the project is initialized.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
CODEGRAPH="cgraphx"
|
|
32
|
+
command -v "$CODEGRAPH" >/dev/null 2>&1 || {
|
|
33
|
+
echo "cgraphx 未在 PATH。先 npm install -g cgraphx,或在项目里跑 cgraphx init" >&2
|
|
34
|
+
exit 1
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
# 验证项目已 init(.cgraphx/ 存在)
|
|
38
|
+
$CODEGRAPH status | grep -qiE 'up to date|indexed' || {
|
|
39
|
+
echo "cgraphx 未 init 或索引 stale。跑:cgraphx init" >&2
|
|
40
|
+
exit 1
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
If cgraphx is not available: do **not** silently degrade. Ask the user to run `npm install -g cgraphx && cgraphx init`.
|
|
45
|
+
|
|
46
|
+
## Configuration
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
concurrent_agents: 2 # max sub-agents running in parallel(千万行级别建议 4-8)
|
|
50
|
+
max_explored: 5000 # max entry points to explore across both phases(千万行级可上调到 20000)
|
|
51
|
+
max_queue_size: 150 # max items in pending queue
|
|
52
|
+
wake_interval_seconds: 60 # seconds between loop iterations
|
|
53
|
+
max_fail_retries: 3 # 单个 entry point 最多重试次数,超过跳过并进 failed[]
|
|
54
|
+
use_cgraphx: true # 优先用 cgraphx 查代码结构;false 时降级为 grep 模式(精度损失)
|
|
55
|
+
use_persistent_dedup: true # true: Layer 1 dedup 走 cgraphx docs seen-names(SQLite 持久化,跨中断恢复);false: 仅在内存中(不建议,中断会丢)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**项目规模预期**:
|
|
59
|
+
|
|
60
|
+
| 项目规模 | 推荐 max_explored | queue 文件预期大小 | 服务端 explored_entry_names 预期条数 |
|
|
61
|
+
|---------|-------------------|-------------------|--------------------------------------|
|
|
62
|
+
| 小(< 5 万行) | 100-500 | 恒定 ~5 KB | < 500 |
|
|
63
|
+
| 中(5-50 万行) | 1000-3000 | 恒定 ~5 KB | 1000-3000 |
|
|
64
|
+
| 大(50-500 万行) | 3000-8000 | 恒定 ~5 KB | 3000-8000 |
|
|
65
|
+
| 超大(> 500 万行 / 千万行级) | 8000-20000 | 恒定 ~5 KB | 8000-20000 |
|
|
66
|
+
|
|
67
|
+
queue 文件大小主要由 `pending`(≤150 项 × 约 200 字节)+ `failed[]`(通常 < 5% 探索数)+ `progress`(恒定 ~200 字节)决定。**dedup 状态完全在服务端 `explored_entry_names` 表**,queue 文件不再随 explored_count 增长,恒定 ~5KB 与 max_explored 无关。
|
|
68
|
+
|
|
69
|
+
**千万行级别现实建议**:
|
|
70
|
+
|
|
71
|
+
- 单次跑完可能数天到数周——务必利用 Resuming 中断恢复
|
|
72
|
+
- `concurrent_agents` 调到 4-8(前提是 API 配额够)
|
|
73
|
+
- `max_explored` 别超过 20000——超过这个数 Phase 3 cross-cutting 会指数级慢
|
|
74
|
+
- Phase 2 完成后的全量 analyze 单次可能跑数十分钟到几小时
|
|
75
|
+
- 切勿跳过 Step 0 语言选择 + Step 1 排除规则——跨语种裸 grep 在千万行项目跑不通
|
|
76
|
+
|
|
77
|
+
## 与 cgraphx 的协作(Tools Coordination)
|
|
78
|
+
|
|
79
|
+
code-impact-init 协调 cgraphx 的**两个互补子系统**:
|
|
80
|
+
|
|
81
|
+
| 子系统 | 命令前缀 | 索引对象 | 提供什么 | 重建时机 |
|
|
82
|
+
|------|---------|---------|---------|---------|
|
|
83
|
+
| **代码图谱** | `cgraphx query/impact/...` | 代码(`.java` / `.rs` / `.go` / ...) | symbols / 调用链 / execution flows / impact | 一次性,代码变了再 `cgraphx sync` |
|
|
84
|
+
| **markdown 知识库** | `cgraphx docs ...` | 业务知识(`docs/knowledge/*.md`) | concept / domain / 决策文档 / dedup 状态 | Phase 2 末尾 + Phase 3 末尾各一次 `cgraphx docs index` |
|
|
85
|
+
|
|
86
|
+
**分工**:代码图谱提供**代码事实**(callers / callees / impact 都是 tree-sitter 解析的真实结构),markdown 知识库沉淀**业务理解**(人为或 AI 提炼的概念、决策、约束)。两者**互不依赖**——index 时序独立,谁先谁后都行。
|
|
87
|
+
|
|
88
|
+
**子 agent 调用方式**:
|
|
89
|
+
- **CLI(推荐)**:`cgraphx <cmd>`——全局 npm 装在 PATH,或项目本地 `npx cgraphx`。稳定,无进程依赖
|
|
90
|
+
- **MCP(可选)**:`codegraph_explore` / `codegraph_node` / `codegraph_callers` / `codegraph_callees` / `codegraph_impact`——已在 `.claude/settings.local.json` allow;MCP server 跑着时省去 CLI 启动开销
|
|
91
|
+
|
|
92
|
+
**降级路径**:
|
|
93
|
+
- `use_cgraphx: false` 或 cgraphx 不可用 → 退化为纯 grep 模式(精度损失,见 Phase 1 Step 3 fallback)
|
|
94
|
+
- `cgraphx init` 失败 → 同上
|
|
95
|
+
- markdown 知识库不可用(项目未 init)→ 整个 code-impact-init **不可启动**(dedup 和文档持久化都靠它)
|
|
96
|
+
|
|
97
|
+
**index 时序图**:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
Phase 1 Step 1.5: cgraphx init(一次性,几分钟,建代码图谱)
|
|
101
|
+
Phase 1-2: 查询用 cgraphx query / callers / callees / impact / affected(毫秒级,子 agent 主用)
|
|
102
|
+
Phase 2 末尾: cgraphx docs index(同步子 agent 写的 .md 到知识图谱)
|
|
103
|
+
Phase 3 Step 1: cgraphx impact 找高中心性 symbols
|
|
104
|
+
Phase 3 Step 2: cgraphx docs concepts --sort=doc-count 找高中心性 concepts
|
|
105
|
+
Phase 3 Step 3: 交叉验证 → cross-cutting pending
|
|
106
|
+
Phase 3 末尾: cgraphx docs index(同步 Phase 3 文档)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Queue File
|
|
110
|
+
|
|
111
|
+
All exploration state is persisted to:
|
|
112
|
+
|
|
113
|
+
```text
|
|
114
|
+
docs/knowledge/.exploration-queue.json
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Schema
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"project_name": "project-name",
|
|
122
|
+
"repo_id": "project-name",
|
|
123
|
+
"repo_path": "/absolute/path/to/project",
|
|
124
|
+
"started_at": "2026-05-01T10:00",
|
|
125
|
+
"config": {
|
|
126
|
+
"max_explored": 5000,
|
|
127
|
+
"concurrent_agents": 2,
|
|
128
|
+
"max_queue_size": 150,
|
|
129
|
+
"max_fail_retries": 3,
|
|
130
|
+
"languages": ["java", "kotlin"],
|
|
131
|
+
"excludes": {
|
|
132
|
+
"dirs": ["node_modules", "target", "build", "dist", "vendor", "third_party", ".git"],
|
|
133
|
+
"files": ["*.min.js", "*.lock", "package-lock.json"]
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"phase": "exploration",
|
|
137
|
+
"pending": [
|
|
138
|
+
{
|
|
139
|
+
"id": 2,
|
|
140
|
+
"name": "Markdown Analysis Pipeline",
|
|
141
|
+
"entry_files": ["src/analyzer/mod.rs"],
|
|
142
|
+
"type": "module"
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"next_id": 3,
|
|
146
|
+
"explored_count": 1,
|
|
147
|
+
"seen_normalized_names": [...], // ⚠️ DEPRECATED(本版本起不再使用):dedup 状态完全在 cgraphx docs seen-names 持久化的 SQLite 表里。保留字段定义仅为向后兼容
|
|
148
|
+
"failed": [
|
|
149
|
+
{
|
|
150
|
+
"id": 5,
|
|
151
|
+
"name": "Some Broken Module",
|
|
152
|
+
"entry_files": ["src/broken/mod.rs"],
|
|
153
|
+
"type": "module",
|
|
154
|
+
"fail_count": 3,
|
|
155
|
+
"last_error": "BLOCKED: compile errors prevent exploration",
|
|
156
|
+
"last_failed_at": "2026-05-01T10:45"
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
"progress": {
|
|
160
|
+
"batch_no": 5,
|
|
161
|
+
"last_batch_at": "2026-05-01T10:30",
|
|
162
|
+
"eta_hours": 12.5,
|
|
163
|
+
"pending_size": 47,
|
|
164
|
+
"top_concepts": ["OrderService", "PaymentGateway", "CustomerExport"]
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**设计要点**:
|
|
170
|
+
|
|
171
|
+
- **不存 `explored` 全量** —— 已完成的探索产物从 `docs/knowledge/*.md` 反查(每个文档对应一次探索)。queue 文件恒定大小,不随已探索项增长。
|
|
172
|
+
- **`explored_count` 是独立 int 计数器** —— 每完成一项 +1,用于触发 `max_explored` 上限判断,不依赖任何数组长度。
|
|
173
|
+
- **`seen_normalized_names`** —— **⚠️ DEPRECATED(本版本起不再使用)**:dedup 状态完全在 `cgraphx docs seen-names` 持久化的 SQLite 表(`markdown_explored_entry_names`)。resuming 时直接信任 SQLite 数据,不读 queue 文件此字段。保留字段定义仅为向后兼容。
|
|
174
|
+
- **`failed[]` 持久化失败项** —— 每项记 `fail_count`,达 `max_fail_retries` 上限后永久跳过(不再重派);千万行项目里少数 entry point 编译/解析失败不应阻塞整体进度。
|
|
175
|
+
- **`progress` 每批次更新** —— `batch_no` + `last_batch_at` + `eta_hours` + `pending_size` + `top_concepts`(最近 N 批次的高频 concept)。供 Resuming 与用户查询进度用。
|
|
176
|
+
- **`config.languages` / `config.excludes`** —— Phase 1 Step 0/1 的选择持久化到 queue 文件,Phase 2 子 agent prompt 读取它知道限定哪些后缀、排除哪些目录。
|
|
177
|
+
- **`next_id` 单调递增** —— 即使某项被剔除,id 不复用,便于日志对齐与调试。
|
|
178
|
+
|
|
179
|
+
`phase` values: `exploration` → `deep_dive` → `completed`
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Main Agent Workflow
|
|
184
|
+
|
|
185
|
+
### Phase 1: Seed Discovery
|
|
186
|
+
|
|
187
|
+
**Step 0 — 语言选择(必做,开始循环前)**
|
|
188
|
+
|
|
189
|
+
千万行项目跨语种 grep 等于全文搜索整个 monorepo,必须先用 `AskUserQuestion` 让用户选目标语言,把后续 grep/find 限定到对应后缀。
|
|
190
|
+
|
|
191
|
+
语言 → 后缀 + entry point 模式映射(用户可单选或多选 Mixed):
|
|
192
|
+
|
|
193
|
+
| 语言 | 后缀 | entry point 模式 |
|
|
194
|
+
|------|------|-----------------|
|
|
195
|
+
| Java | `.java` | `public static void main`、`@GetMapping`、`@PostMapping`、`@RabbitListener`、`@Scheduled`、`@KafkaListener` |
|
|
196
|
+
| Kotlin | `.kt` | `fun main`、Spring 注解同 Java |
|
|
197
|
+
| Go | `.go` | `func main`、`cobra.Command`、`flag.Parse` |
|
|
198
|
+
| Rust | `.rs` | `fn main`、`clap::Parser`、`#[tokio::main]` |
|
|
199
|
+
| Python | `.py` | `def main`、`argparse`、`click`、`@app.route`、`@celery.task` |
|
|
200
|
+
| TypeScript | `.ts` `.tsx` | `app.listen`、`router.get`、`router.post`、`@Controller` |
|
|
201
|
+
| JavaScript | `.js` `.jsx` `.mjs` `.cjs` | `app.listen`、`module.exports`、`require.main === module` |
|
|
202
|
+
| C/C++ | `.c` `.cpp` `.cc` `.h` `.hpp` | `int main`、`WINAPI WinMain` |
|
|
203
|
+
| C# | `.cs` | `static void Main`、`[HttpGet]`、`[HttpPost]` |
|
|
204
|
+
| Ruby | `.rb` | `Rails.application.routes`、`Rake::Task` |
|
|
205
|
+
| PHP | `.php` | Laravel routes、Symfony annotations |
|
|
206
|
+
| SQL | `.sql` | `CREATE TABLE`、`CREATE INDEX`、`CREATE PROCEDURE` |
|
|
207
|
+
| Mixed | 用户自选组合 | 多后缀 union |
|
|
208
|
+
|
|
209
|
+
用户选定后把后缀列表存入 queue 文件 `config.languages: ["java", "kotlin"]`,后续 Phase 1/2 命令读取它动态生成 `--include`。
|
|
210
|
+
|
|
211
|
+
**Step 1 — 排除规则(必做)**
|
|
212
|
+
|
|
213
|
+
千万行项目大量第三方库、build artifacts、test fixtures 会污染 grep 结果。两条规则同时生效:
|
|
214
|
+
|
|
215
|
+
1. **显式排除目录/文件**:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
EXCLUDE_DIRS=(node_modules target build dist out bin vendor third_party .venv vv env __pycache__ .git .idea .vscode .next .cache coverage)
|
|
219
|
+
EXCLUDE_FILES=('*.min.js' '*.min.css' '*.lock' 'package-lock.json' 'yarn.lock' 'go.sum' 'Cargo.lock' 'pom.xml.versionsBackup')
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
2. **尊重 .gitignore**:首选 `rg`(ripgrep,自动尊重 .gitignore 且并行);无 `rg` 时 fallback 到 `grep` + 显式 EXCLUDE_DIRS。**禁止裸 `grep -rn`**(千万行级别会跑数小时)。
|
|
223
|
+
|
|
224
|
+
**Step 1.5 — cgraphx 索引检查/构建(如 `use_cgraphx: true`)**
|
|
225
|
+
|
|
226
|
+
cgraphx 提供 tree-sitter 解析的代码结构图谱(symbols / 调用链 / execution flows / impact)。后续 Phase 1 找 entry points、Phase 2 子 agent 查调用链、Phase 3 cross-cutting 都依赖它。**千万行项目 `cgraphx init` 通常几分钟完成**——一次性投入,后续查询毫秒级。
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
CODEGRAPH="cgraphx"
|
|
230
|
+
command -v "$CODEGRAPH" >/dev/null 2>&1 || {
|
|
231
|
+
echo "cgraphx 未在 PATH。先 npm install -g cgraphx,或在项目里跑 cgraphx init" >&2
|
|
232
|
+
exit 1
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
# 1. 检查索引新鲜度
|
|
236
|
+
$CODEGRAPH status
|
|
237
|
+
|
|
238
|
+
# 2. 不存在或 stale 时跑 init 或 sync
|
|
239
|
+
if ! $CODEGRAPH status 2>&1 | grep -qiE 'up to date|indexed|fresh'; then
|
|
240
|
+
echo "cgraphx index missing or stale, running sync..."
|
|
241
|
+
$CODEGRAPH sync # 增量;首次或大规模结构变更用 $CODEGRAPH index(全量)
|
|
242
|
+
fi
|
|
243
|
+
|
|
244
|
+
# 3. 验证可用(应返回符号数据)
|
|
245
|
+
$CODEGRAPH query "main" --limit 5
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**失败降级**(任一失败时):
|
|
249
|
+
- `cgraphx status` 报"未安装/不可用" → 警告用户,把 `use_cgraphx` 设为 `false` 写回 queue 文件,后续走 grep 模式
|
|
250
|
+
- `cgraphx init` 失败 → 同上
|
|
251
|
+
- `cgraphx query` 返回空 → 可能 analyze 未成功,重试一次或降级
|
|
252
|
+
|
|
253
|
+
**MCP 模式(可选优化)**:如果 `cgraphx mcp` 已启动(或 Claude Code 自动启 MCP server),子 agent 可直接调 `codegraph_explore` / `codegraph_node` / `codegraph_callers` / `codegraph_callees` / `codegraph_impact` 等工具,省去 CLI 启动开销。`.claude/settings.local.json` 已 allow 这些 MCP 工具。
|
|
254
|
+
|
|
255
|
+
**Step 2 — Identify project root, repo_id, project name**
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
REPO_PATH=$(pwd)
|
|
259
|
+
REPO_ID=$(basename "$REPO_PATH")
|
|
260
|
+
PROJECT_NAME="$REPO_ID"
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**Step 3 — Scan structure & entry points**
|
|
264
|
+
|
|
265
|
+
**首选:cgraphx 语义查询(如 `use_cgraphx: true`)**
|
|
266
|
+
|
|
267
|
+
cgraphx 基于 tree-sitter 实际符号解析,能找到 grep 漏掉的(同名方法、interface 实现、跨语言调用、被注解但模式不规则的入口):
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# cgraphx 已在 PATH(全局装)或在已 init 的项目里直接可用
|
|
271
|
+
|
|
272
|
+
# 按业务概念搜索符号(让用户给 3-5 个核心业务词)
|
|
273
|
+
cgraphx query "订单" --limit 30
|
|
274
|
+
cgraphx query "导出" --limit 30
|
|
275
|
+
cgraphx query "payment" --limit 30
|
|
276
|
+
|
|
277
|
+
# 找 Spring/消息驱动入口(按符号类型过滤,比 grep 注解名更准)
|
|
278
|
+
cgraphx query "@PostMapping" --limit 30
|
|
279
|
+
cgraphx query "@RabbitListener" --limit 30
|
|
280
|
+
|
|
281
|
+
# 对每个候选符号用 codegraph_explore MCP 拿调用链做初步验证(看 callers/callees 是否构成完整流程)
|
|
282
|
+
# MCP 不可用时走 CLI:
|
|
283
|
+
cgraphx callers com.example.OrderService.createOrder
|
|
284
|
+
cgraphx callees com.example.OrderService.createOrder
|
|
285
|
+
|
|
286
|
+
# 找数据模型(@Entity / CREATE TABLE)
|
|
287
|
+
cgraphx query "@Entity" --limit 30
|
|
288
|
+
cgraphx query "CREATE TABLE" --limit 30
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
cgraphx 返回结构化 symbols + execution flows,**比 grep 字符串匹配更准**——尤其在千万行项目里,同名方法/继承链/接口实现这些 grep 必漏。
|
|
292
|
+
|
|
293
|
+
**Fallback:grep 模式(`use_cgraphx: false` 或 cgraphx 不可用)**
|
|
294
|
+
|
|
295
|
+
千万行级别必须用 `rg`(ripgrep)。示例 Java + Kotlin:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
# Project structure overview
|
|
299
|
+
rg --files -g '*.java' -g '*.kt' \
|
|
300
|
+
-g '!node_modules/**' -g '!target/**' -g '!build/**' -g '!vendor/**' -g '!.git/**' \
|
|
301
|
+
| head -100
|
|
302
|
+
|
|
303
|
+
# Entry points
|
|
304
|
+
rg --type java --type kotlin -n \
|
|
305
|
+
'@(GetMapping|PostMapping|PutMapping|DeleteMapping|RabbitListener|Scheduled|KafkaListener)|public static void main|fun main' \
|
|
306
|
+
| head -50
|
|
307
|
+
|
|
308
|
+
# Data models
|
|
309
|
+
rg --type java -n '@(Entity|Table)|CREATE TABLE' | head -30
|
|
310
|
+
rg --type sql -n '^CREATE TABLE' | head -30
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
**精度损失警告**:grep 模式会漏掉接口实现、跨语言调用、不规则命名的入口。建议在 cgraphx 不可用时降低 `max_explored` 上限或缩小语言范围。
|
|
314
|
+
|
|
315
|
+
**Step 4 — 构造 pending + 写 queue**
|
|
316
|
+
|
|
317
|
+
For each discovered entry point, create a pending item with `name`, `entry_files`, `type`。把 Step 0 选定语言 + Step 1 排除规则写入 `config.languages` 和 `config.excludes`——Phase 2 子 agent prompt 也会用到。
|
|
318
|
+
|
|
319
|
+
### Phase 2: Exploration Loop (Batch Mode)
|
|
320
|
+
|
|
321
|
+
**启动:**
|
|
322
|
+
|
|
323
|
+
1. 读取 `.exploration-queue.json`。
|
|
324
|
+
2. 如果 `pending` 为空,直接跳到 Phase 3。
|
|
325
|
+
3. 初始化计数器:`explored_count = 0`,`running_agents = 0`。
|
|
326
|
+
|
|
327
|
+
**批次循环:**
|
|
328
|
+
|
|
329
|
+
每轮循环执行以下步骤:
|
|
330
|
+
|
|
331
|
+
**Step 1 — 启动批次**
|
|
332
|
+
|
|
333
|
+
1. 计算本批次大小:`batch_size = min(concurrent_agents, pending.length)`。
|
|
334
|
+
2. 从 `pending` 头部取 `batch_size` 项。
|
|
335
|
+
3. 对每一项,用 `Agent` 工具启动后台 sub-agent(`run_in_background: true`),使用下方 Sub-Agent Template 作为 prompt。
|
|
336
|
+
4. 设置 `running_agents = batch_size`。
|
|
337
|
+
|
|
338
|
+
**Step 2 — 等待批次完成 + 失败分流 + 进度更新**
|
|
339
|
+
|
|
340
|
+
等待所有 `running_agents` 个 sub-agent 完成。收到每个完成通知时**按状态分流**:
|
|
341
|
+
|
|
342
|
+
**Case A — 成功**(返回正常 JSON,含 `document_path`)
|
|
343
|
+
|
|
344
|
+
1. 读取 sub-agent 返回的 JSON。
|
|
345
|
+
2. 更新队列文件(jq 原子改写):
|
|
346
|
+
- 把该项从 `pending` 移除
|
|
347
|
+
- `.explored_count` +1
|
|
348
|
+
- **不再写 `seen_normalized_names`**——completed entry name 通过 `cgraphx docs seen-names --add` 持久化到 SQLite 的 `markdown_explored_entry_names` 表(见下方写回脚本)
|
|
349
|
+
3. 对每个 `new_entry_point` 走 Dedup Rules(Layer 1 `cgraphx docs seen-names --check` + Layer 2 `cgraphx docs dedup`):
|
|
350
|
+
- 通过且 `pending.length < max_queue_size` 时,追加到 `pending`(`next_id++`)
|
|
351
|
+
- 超过 `max_queue_size` 的新候选直接丢弃
|
|
352
|
+
- entry point name 维度的 dedup 状态完全在 cgraphx 持久化的 SQLite 表(`markdown_explored_entry_names`)
|
|
353
|
+
|
|
354
|
+
**Case B — 失败**(子 agent 返回 `BLOCKED` / `NEEDS_CONTEXT` / error / 进程崩溃)
|
|
355
|
+
|
|
356
|
+
1. `fail_count++`(首次失败从 `pending` 移到 `failed[]`,记 `last_error`、`last_failed_at`)
|
|
357
|
+
2. **`fail_count < max_fail_retries`**:重新放回 `pending` 末尾,下批次重试(主 agent 可补上下文或换更强模型)
|
|
358
|
+
3. **`fail_count >= max_fail_retries`**:留在 `failed[]`,**永久跳过**——千万行项目里少数死项不应卡死整体流程
|
|
359
|
+
|
|
360
|
+
**Case C — 完成但产出可疑**(`DONE_WITH_CONCERNS` 或文档缺 Evidence)
|
|
361
|
+
|
|
362
|
+
按 Case A 处理,但把 `concerns` 记到 `progress.recent_concerns`(Phase 3 优先 review 这些项)。
|
|
363
|
+
|
|
364
|
+
**Step 2.5 — 批次结束更新 `progress`**
|
|
365
|
+
|
|
366
|
+
批次全部完成(`running_agents == 0`)后更新进度对象:
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
QUEUE="docs/knowledge/.exploration-queue.json"
|
|
370
|
+
|
|
371
|
+
# ETA: 已用小时 / explored_count × 剩余
|
|
372
|
+
ELAPSED_HOURS=$(jq -r 'now - (.started_at | fromdateiso8601) | floor / 3600' "$QUEUE" 2>/dev/null || echo 0)
|
|
373
|
+
REMAINING=$(jq -r '.config.max_explored - .explored_count' "$QUEUE")
|
|
374
|
+
ETA=$(awk "BEGIN { if ($ELAPSED_HOURS > 0 && $(jq .explored_count "$QUEUE") > 0) printf \"%.1f\", $ELAPSED_HOURS / $(jq .explored_count "$QUEUE") * $REMAINING; else print \"?\" }")
|
|
375
|
+
|
|
376
|
+
# top_concepts: 最近 5 篇 docs/knowledge/*.md 的 frontmatter concepts 取频率 top-5
|
|
377
|
+
TOP_CONCEPTS=$(ls -t docs/knowledge/*.md 2>/dev/null | head -5 | while read f; do
|
|
378
|
+
awk '/^---$/{c++; next} c==1 && /^concepts:/{flag=1; next} flag && /^ - /{gsub(/^ - /,""); print}' "$f"
|
|
379
|
+
done | sort | uniq -c | sort -rn | head -5 | awk '{print $2}')
|
|
380
|
+
|
|
381
|
+
jq --argjson batch "$(jq '.progress.batch_no + 1' "$QUEUE")" \
|
|
382
|
+
--arg last_at "$(date -u +%Y-%m-%dT%H:%M)" \
|
|
383
|
+
--arg eta "$ETA" \
|
|
384
|
+
--argjson pending "$(jq '.pending | length' "$QUEUE")" \
|
|
385
|
+
--argjson top "$(printf '%s\n' "$TOP_CONCEPTS" | jq -R . | jq -s 'map(select(. != ""))')" '
|
|
386
|
+
.progress.batch_no = $batch
|
|
387
|
+
| .progress.last_batch_at = $last_at
|
|
388
|
+
| .progress.eta_hours = $eta
|
|
389
|
+
| .progress.pending_size = $pending
|
|
390
|
+
| .progress.top_concepts = $top
|
|
391
|
+
' "$QUEUE" > "${QUEUE}.tmp" && mv "${QUEUE}.tmp" "$QUEUE"
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
**Step 2 成功项写回示例(cgraphx docs seen-names 持久化 + jq 改 pending/explored_count):**
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
QUEUE="docs/knowledge/.exploration-queue.json"
|
|
398
|
+
TMP="${QUEUE}.tmp"
|
|
399
|
+
DONE_ID=2
|
|
400
|
+
DONE_NAME="客户导出 Batch"
|
|
401
|
+
|
|
402
|
+
# Layer 1 持久化:完成的 entry name 加入 cgraphx docs seen-names
|
|
403
|
+
# (CLI 内部会自动 normalize,主 agent 不需要预先 normalize)
|
|
404
|
+
$CODEGRAPH docs seen-names --add="$DONE_NAME" --json >/dev/null
|
|
405
|
+
|
|
406
|
+
# queue 本地只改 pending 和 explored_count(不再维护 seen_normalized_names)
|
|
407
|
+
jq --argjson id "$DONE_ID" '
|
|
408
|
+
.pending |= map(select(.id != $id))
|
|
409
|
+
| .explored_count += 1
|
|
410
|
+
' "$QUEUE" > "$TMP" && mv "$TMP" "$QUEUE"
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
**Step 2 失败项写回示例(达上限进 failed[]):**
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
FAIL_ID=7
|
|
417
|
+
FAIL_ERROR="BLOCKED: compile errors"
|
|
418
|
+
FAIL_AT=$(date -u +%Y-%m-%dT%H:%M)
|
|
419
|
+
|
|
420
|
+
jq --argjson id "$FAIL_ID" --arg err "$FAIL_ERROR" --arg at "$FAIL_AT" '
|
|
421
|
+
(.pending | map(select(.id == $id))[0]) as $item
|
|
422
|
+
| .pending |= map(select(.id != $id))
|
|
423
|
+
| .failed = ((.failed // []) + [$item + {fail_count: 3, last_error: $err, last_failed_at: $at}])
|
|
424
|
+
' "$QUEUE" > "$TMP" && mv "$TMP" "$QUEUE"
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
**Step 3 — 批次结束判断(不再每批次 index)**
|
|
428
|
+
|
|
429
|
+
当 `running_agents == 0`(本批次全部完成)时:
|
|
430
|
+
|
|
431
|
+
1. **不再触发 index**(千万行项目每批次 index 跑不通)。
|
|
432
|
+
- Layer 2 dedup 仍可工作——它检查的是已 index 进图谱的 concept 名;新批次产出的 .md 在 Phase 2 末尾统一 index 时才进图谱。**代价**:Phase 2 内对全新 concept 的 Layer 2 dedup 会误判为"非重复"(因为图谱还没更新),但 Layer 1(cgraphx 持久化的 `markdown_explored_entry_names` 表)仍能挡住 entry point name 维度的重复,**这是可接受的精度损失**。
|
|
433
|
+
2. 如果 `.explored_count >= max_explored` 或 `pending` 为空,进入 **Step 4**(Phase 2 收尾 index)。
|
|
434
|
+
3. 否则回到 **Step 1** 继续下一批次。
|
|
435
|
+
|
|
436
|
+
**Step 4 — Phase 2 收尾全量 index(一次)**
|
|
437
|
+
|
|
438
|
+
Phase 2 全部完成后,触发**单次**全量 markdown 知识库 index:
|
|
439
|
+
|
|
440
|
+
```bash
|
|
441
|
+
$CODEGRAPH docs index --json
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
完成后进入 Phase 3。**千万行项目这步单次可能跑数十分钟到几小时**——耐心等,期间不读 queue 文件。
|
|
445
|
+
|
|
446
|
+
> `.explored_count` 是 queue 文件里的独立 int 计数器,每次 Step 2 Case A 完成一项时 +1(用 jq 原子操作)。
|
|
447
|
+
|
|
448
|
+
**Pipeline flow(每批次不 index,仅 Phase 2 末尾一次):**
|
|
449
|
+
|
|
450
|
+
```
|
|
451
|
+
Time →
|
|
452
|
+
批次 1: Agent 1 [===A===] Agent 2 [====B====]
|
|
453
|
+
批次 2: Agent 1 [===C===] Agent 2 [==D==]
|
|
454
|
+
批次 3: ...
|
|
455
|
+
批次 N: [最终项] → Phase 2 结束
|
|
456
|
+
↓ 一次性 docs index(阻塞,可能很久)
|
|
457
|
+
Phase 3(cross-cutting deep-dive)
|
|
458
|
+
↓ 最终 docs index(一次)
|
|
459
|
+
completed
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
**为什么不能每批次 index?**
|
|
463
|
+
|
|
464
|
+
- `cgraphx docs index` 是**全量重建** markdown 知识库(清表后重扫所有 `docs/knowledge/*.md`)
|
|
465
|
+
- 千万行项目 docs/knowledge/ 可能有上千-上万 .md,单次 index 数十分钟到几小时
|
|
466
|
+
- 每批次跑 = 累计 N 批次 × 单次耗时,几天到几周
|
|
467
|
+
- 根本解是 markdown 知识库做增量 index endpoint(P0 #1,留作下一轮)
|
|
468
|
+
|
|
469
|
+
### Phase 3: Cross-cutting Deep-dive(基于 cgraphx impact + cgraphx docs concepts 交叉)
|
|
470
|
+
|
|
471
|
+
**核心思路**:cross-cutting concern = **代码层面被多个 entry 依赖的高中心性 symbol**(`cgraphx impact` 的 `nodeCount` 测量)+ **业务层面已被多文档提及但无专属文档的 concept**(`cgraphx docs concepts --sort=doc-count` 测量)。两者交叉验证,比单纯靠 markdown concept 频率更准——concept 在 markdown 里出现可能是子 agent 主观判断,cgraphx impact 是代码事实。
|
|
472
|
+
|
|
473
|
+
**Step 1 — 代码层面:找高中心性 symbols(cgraphx impact nodeCount)**
|
|
474
|
+
|
|
475
|
+
`cgraphx impact <symbol> --json` 返回 `{ symbol, depth, nodeCount, edgeCount, affected[] }`。**`nodeCount` 是中心性指标**——影响半径内的节点数,数字越大中心性越高。
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
CODEGRAPH="cgraphx"
|
|
479
|
+
|
|
480
|
+
# 1. 从 docs/knowledge/*.md frontmatter related_code 提取 symbol 列表
|
|
481
|
+
# related_code 可能是文件路径或 symbol 名,两种都收
|
|
482
|
+
SYMBOLS=$(for f in docs/knowledge/*.md; do
|
|
483
|
+
awk '/^---$/{c++; next} c==1 && /^related_code:/{flag=1; next} flag && /^ - /{gsub(/^ - /,""); print}' "$f"
|
|
484
|
+
done | sort -u)
|
|
485
|
+
|
|
486
|
+
# 2. 对每个 symbol 跑 impact,按 nodeCount(中心性指标)排序
|
|
487
|
+
TMP=$(mktemp)
|
|
488
|
+
while IFS= read -r sym; do
|
|
489
|
+
[ -z "$sym" ] && continue
|
|
490
|
+
$CODEGRAPH impact "$sym" --json 2>/dev/null \
|
|
491
|
+
| jq -r --arg sym "$sym" '[.nodeCount // 0, $sym] | @tsv' >> "$TMP"
|
|
492
|
+
done <<< "$SYMBOLS"
|
|
493
|
+
|
|
494
|
+
# 3. 取 top 30
|
|
495
|
+
sort -t$'\t' -k1 -rn "$TMP" | head -30 > high-centrality-symbols.txt
|
|
496
|
+
rm -f "$TMP"
|
|
497
|
+
|
|
498
|
+
cat high-centrality-symbols.txt
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
**注释说明**:
|
|
502
|
+
- `cgraphx impact <symbol> --json` 输出 `{symbol, depth, nodeCount, edgeCount, affected[]}`
|
|
503
|
+
- **`nodeCount` 是中心性指标**(影响半径内的节点数,数字越大中心性越高)
|
|
504
|
+
- 如果 `related_code` 字段是文件路径而不是 symbol,需要先 `cgraphx query --kind=function --kind=method` 在该文件下找 symbol,再跑 impact
|
|
505
|
+
|
|
506
|
+
**MCP 优先路径**(可选):
|
|
507
|
+
> 把 Phase 2 探索到的 entry symbols 喂给 `codegraph_explore` MCP 工具,一次性返回各符号的 impact 信息。比 shell 循环 + 文件拼接快得多,而且 agent 能直接看结构化结果做判断。
|
|
508
|
+
|
|
509
|
+
**为什么这么设计**:cgraphx 用 `impact nodeCount` 排序找中心性,不需要 cypher 接口。
|
|
510
|
+
|
|
511
|
+
被多个 entry 依赖的 symbol 就是代码层面的 cross-cutting concern(如业务项目的 OrderService、PaymentGateway、AuthMiddleware——它们的 `nodeCount` 远高于工具类)。
|
|
512
|
+
|
|
513
|
+
**Step 2 — 业务层面:找高中心性 concepts(cgraphx docs concepts)**
|
|
514
|
+
|
|
515
|
+
```bash
|
|
516
|
+
# 拿所有 concept + 关联文档数,按 doc_count 排序(cgraphx docs concepts 已实现 --sort=doc-count)
|
|
517
|
+
$CODEGRAPH docs concepts --sort=doc-count --limit=30 --json \
|
|
518
|
+
> high-centrality-concepts.json
|
|
519
|
+
|
|
520
|
+
# cgraphx docs concepts 已经返回 documentCount 字段,直接用
|
|
521
|
+
jq '[.[] | {name, doc_count: .documentCount}] | sort_by(-.doc_count) | .[:30]' \
|
|
522
|
+
high-centrality-concepts.json
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
**Step 3 — 交叉验证:找"代码中心性高 + 业务无文档"的 concerns**
|
|
526
|
+
|
|
527
|
+
```text
|
|
528
|
+
对每个高中心性 symbol(Step 1,nodeCount >= 3):
|
|
529
|
+
- 该 symbol 对应的 concept 名是否已在 markdown 知识库?
|
|
530
|
+
- 该 concept 是否已有 type: architecture/decision 的专属文档?
|
|
531
|
+
- NO(代码中心性高 + 业务无专属文档)→ 加入 Phase 3 cross-cutting pending
|
|
532
|
+
- 边缘 case:symbol 是工具类(util/helper)跳过——不算业务 cross-cutting
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
**Step 4 — 派 cross-cutting 子 agent**
|
|
536
|
+
|
|
537
|
+
对每个 cross-cutting concern 创建 pending item:
|
|
538
|
+
- `type: "cross_cutting_concept"`
|
|
539
|
+
- `entry_symbol`: 高中心性 symbol
|
|
540
|
+
- `entry_files`: `cgraphx impact <symbol> --json` 输出的 `affected[].filePath`
|
|
541
|
+
- `related_documents`: markdown 知识库里连接到该 concept 的已有文档路径
|
|
542
|
+
|
|
543
|
+
跑 Phase 2 探索循环,但用下方的 **Cross-cutting Sub-Agent Template**(强调基于 `cgraphx impact` + 已有文档整合,不重读代码)。
|
|
544
|
+
|
|
545
|
+
**Step 5 — Finalize**
|
|
546
|
+
|
|
547
|
+
1. 触发最终 markdown 知识库全量 index(同步 Phase 2 + Phase 3 所有文档):
|
|
548
|
+
|
|
549
|
+
```bash
|
|
550
|
+
$CODEGRAPH docs index --json
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
2. (兜底)如果 Phase 3 期间代码有变化(不该有,但防御性检查),跑 cgraphx 同步代码索引:
|
|
554
|
+
|
|
555
|
+
```bash
|
|
556
|
+
$CODEGRAPH status | grep -qi 'up to date\|indexed' || $CODEGRAPH sync
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
3. 设置 `phase` 为 `completed`。
|
|
560
|
+
4. 告知用户探索完成,列出:已生成文档数 / 覆盖的 entry symbol 数 / 识别的 cross-cutting concern 数 / 永久跳过的 failed 项数。
|
|
561
|
+
|
|
562
|
+
### Dedup Rules (cgraphx docs seen-names Layer 1 + cgraphx docs dedup Layer 2)
|
|
563
|
+
|
|
564
|
+
Before adding new entry points to `pending`, run **two layers** of dedup. Layer 1 是 entry point name 维度(防功能重复入队),Layer 2 是 concept name 维度(防 markdown 知识库内重复 concept)—— 两者维度不同,都要做。
|
|
565
|
+
|
|
566
|
+
**Layer 1:Entry point name dedup(cgraphx docs seen-names --check,O(log N) SQLite 索引)**
|
|
567
|
+
|
|
568
|
+
主 agent 收集子 agent 返回的 new_entry_points names,一次性批量 check:
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
CODEGRAPH="cgraphx"
|
|
572
|
+
|
|
573
|
+
# 主 agent 收集子 agent 返回的 new_entry_points names,一次性批量 check
|
|
574
|
+
CANDIDATES=("客户导出 Batch" "export-customer-batch" "Knowledge Recall")
|
|
575
|
+
|
|
576
|
+
# 一次性 batch check(用逗号分隔 names)
|
|
577
|
+
CANDIDATES_CSV=$(IFS=,; echo "${CANDIDATES[*]}")
|
|
578
|
+
CHECK_RESP=$($CODEGRAPH docs seen-names --check="$CANDIDATES_CSV" --json)
|
|
579
|
+
|
|
580
|
+
# 提取通过 Layer 1 的候选(is_seen=false)
|
|
581
|
+
NEW=$(echo "$CHECK_RESP" | jq -r '.results[] | select(.is_seen == false) | .name')
|
|
582
|
+
echo "通过 Layer 1 的候选: $NEW"
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
cgraphx 内部 SQLite 的 `UNIQUE(project_path, normalized_name)` 索引提供 O(log N) 查询,比 bash grep O(N) 更快且 queue 文件不再增长。通过 Layer 1 的候选才进入 Layer 2(concept name dedup)。
|
|
586
|
+
|
|
587
|
+
**Layer 2:Concept name dedup(cgraphx docs dedup,单次批量)**
|
|
588
|
+
|
|
589
|
+
通过 Layer 1 的候选用逗号 join 后发给 `cgraphx docs dedup`:
|
|
590
|
+
|
|
591
|
+
```bash
|
|
592
|
+
# 把通过 Layer 1 的候选用逗号 join 后发给 cgraphx docs dedup
|
|
593
|
+
NEW_CSV=$(echo "$NEW" | paste -sd, -)
|
|
594
|
+
DEDUP_RESP=$($CODEGRAPH docs dedup --names="$NEW_CSV" --json)
|
|
595
|
+
|
|
596
|
+
# is_duplicate=true 的项 SKIP(concept 已在图谱);false 的项才入队
|
|
597
|
+
NEW_AFTER_DEDUP=$(echo "$DEDUP_RESP" | jq -r '.results[] | select(.is_duplicate == false) | .name')
|
|
598
|
+
echo "通过 Layer 2 的候选: $NEW_AFTER_DEDUP"
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
cgraphx docs dedup 内置 normalize + alias 匹配。`is_duplicate: true` 的项 SKIP(concept 已在 markdown 知识库);`false` 的项才入队,同时通过 Layer 1 的候选会在被探索完成时由 Phase 2 Step 2 写回脚本通过 `cgraphx docs seen-names --add` 持久化到 SQLite 表(`markdown_explored_entry_names`)。
|
|
602
|
+
|
|
603
|
+
**Fallback**(`use_cgraphx: false` 时):仅内存模式,主 agent 在 queue 文件维护 `seen_normalized_names`,但**不推荐**——中断会丢,且 queue 文件随 explored 增长,千万行项目性能不可接受。新项目一律用 cgraphx 持久化模式。
|
|
604
|
+
|
|
605
|
+
**File-level coverage is NOT a dedup signal** —— 一个文件可能含多个独立功能,已探索其中一个函数不代表整文件覆盖。
|
|
606
|
+
|
|
607
|
+
**框架 boilerplate 不进 dedup 流程**(根本不视为 entry point):Spring 的 `@SpringBootApplication`、Express 的 `app.listen`、Axum 的 `Router::new` 等。
|
|
608
|
+
|
|
609
|
+
### Resuming After Interruption
|
|
610
|
+
|
|
611
|
+
If the queue file exists with `phase` not `completed`:
|
|
612
|
+
|
|
613
|
+
1. Read the queue file.
|
|
614
|
+
2. **dedup 状态完全在 cgraphx docs seen-names 持久化的 SQLite 表(`markdown_explored_entry_names`),resuming 时直接信任 SQLite 数据**——天然持久,**无需重建**。
|
|
615
|
+
3. **`failed[]`**:**保留**——已永久跳过的项不应被重新发现(千万行项目里反复卡同一项是致命浪费)。重新启动后这些 id 不再进 `pending`。
|
|
616
|
+
4. **`progress`**:保留 `batch_no`、`last_batch_at`,**重置 `eta_hours` 为 null**(中断期间没探索,旧 ETA 失真,下批次 Step 2.5 会重算)。
|
|
617
|
+
5. **`pending`** 校验:剔除 `entry_files` 已不存在的项;剔除与 `failed[]` 同 id 的项(兜底)。
|
|
618
|
+
6. 如果 `phase == exploration`:从 Phase 2 Step 1 重启批次(已 `explored_count +1` 的不重跑)。
|
|
619
|
+
7. 如果 `phase == deep_dive`:从 Phase 3 Step 1 继续(concept 聚合)。
|
|
620
|
+
|
|
621
|
+
Do NOT restart from Phase 1.
|
|
622
|
+
|
|
623
|
+
旧版本 queue 文件如果含 `seen_normalized_names` 字段,直接忽略 —— 新版 dedup 状态完全在 SQLite,不依赖 queue 文件。不需要扫 `docs/knowledge/*.md` 反向重建,cgraphx 持久化的 SQLite 表是单一数据源。
|
|
624
|
+
|
|
625
|
+
---
|
|
626
|
+
|
|
627
|
+
## Sub-Agent Template
|
|
628
|
+
|
|
629
|
+
Each sub-agent receives this prompt structure. Fill in the `{placeholders}` before launching.
|
|
630
|
+
|
|
631
|
+
```text
|
|
632
|
+
你是一个代码探索 agent。请深入探索以下入口点,尽可能详细。
|
|
633
|
+
|
|
634
|
+
【入口点】
|
|
635
|
+
名称:{name}
|
|
636
|
+
类型:{type}
|
|
637
|
+
起始文件:{entry_files}
|
|
638
|
+
起始符号:{entry_symbol}(如 com.example.OrderService.createOrder,cgraphx 索引定位用)
|
|
639
|
+
|
|
640
|
+
【工具优先级:cgraphx > Read(铁律)】
|
|
641
|
+
|
|
642
|
+
**强制**:所有代码结构查询先走 cgraphx。**Read 仅在需要看具体实现细节**(算法、注释、边界条件、错误处理分支)时使用——且优先按 cgraphx 给的位置信息定位行号再 Read,**不要 Read 整个文件**。千万行项目里 Read 整个文件是 context 黑洞。
|
|
643
|
+
|
|
644
|
+
```bash
|
|
645
|
+
CODEGRAPH="cgraphx"
|
|
646
|
+
|
|
647
|
+
# 1. 拿该入口符号的完整调用链(callers + callees)
|
|
648
|
+
$CODEGRAPH callers {entry_symbol}
|
|
649
|
+
$CODEGRAPH callees {entry_symbol}
|
|
650
|
+
|
|
651
|
+
# 2. 找相关 execution flows(同 process 下的其他入口)
|
|
652
|
+
$CODEGRAPH query "{name}" --limit 10
|
|
653
|
+
|
|
654
|
+
# 3. 看改动影响面(哪些其他模块依赖这个符号)—— 识别跨模块依赖
|
|
655
|
+
# (返回 {symbol, depth, nodeCount, edgeCount, affected[]};用 nodeCount 作中心性指标)
|
|
656
|
+
$CODEGRAPH impact {entry_symbol} --json
|
|
657
|
+
|
|
658
|
+
# 4. callers/callees 返回的符号列表给出关联符号
|
|
659
|
+
# 对每个 callee 再 callers/callees 一次,递归追踪调用链
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
**Read 策略**:
|
|
663
|
+
- 仅当 cgraphx query/impact 输出指向某段具体实现,且需要看代码细节(算法、注释、错误分支)时
|
|
664
|
+
- 优先用 `Read offset/limit` 按 cgraphx 给的行号定位
|
|
665
|
+
- **单次任务最多 Read 30 个文件**,超过报 `DONE_WITH_CONCERNS` 并列出未覆盖部分
|
|
666
|
+
|
|
667
|
+
【已有业务知识 — 先查询再探索】
|
|
668
|
+
|
|
669
|
+
业务概念层面(不是代码层面)的已有知识用 cgraphx docs(markdown 知识库):
|
|
670
|
+
|
|
671
|
+
```bash
|
|
672
|
+
# 已有 concept(避免在自己写文档时创建重复 concept 名)
|
|
673
|
+
$CODEGRAPH docs concepts --json
|
|
674
|
+
|
|
675
|
+
# 已有相关文档
|
|
676
|
+
$CODEGRAPH docs find --q="{name}" --limit=5 --json
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
**职责分工**:entry point name 维度的去重由**主 agent** 在入队前完成,你不需要做。发现新入口点时**全部报告**给主 agent(不预先过滤)。
|
|
680
|
+
|
|
681
|
+
【项目信息】
|
|
682
|
+
项目路径:{repo_path}
|
|
683
|
+
项目名称:{project_name}
|
|
684
|
+
|
|
685
|
+
【任务】
|
|
686
|
+
1. 从起始符号开始,用 cgraphx 拿完整调用链:
|
|
687
|
+
- 跟踪函数调用链(至少 4-5 层深度,用 `cgraphx callers` / `cgraphx callees`)
|
|
688
|
+
- 识别数据模型、状态转换、错误处理路径(cgraphx 给位置,Read 看实现)
|
|
689
|
+
- 关注跨模块/跨文件的依赖关系(用 `cgraphx impact {entry_symbol} --json` 看 affected[])
|
|
690
|
+
- 记录外部服务调用(数据库、消息队列、HTTP 调用——通常在 callees 里)
|
|
691
|
+
|
|
692
|
+
2. 识别业务概念和非显而易见的约束:
|
|
693
|
+
- 核心业务实体和它们的关系
|
|
694
|
+
- 隐含的业务规则(代码里没写注释但行为有约束的)
|
|
695
|
+
- 潜在的陷阱和边缘情况
|
|
696
|
+
|
|
697
|
+
3. 发现新的独立入口点:
|
|
698
|
+
- 当前入口点触发但未被探索的独立功能/流程
|
|
699
|
+
- **全部报告**给主 agent,不预先过滤
|
|
700
|
+
|
|
701
|
+
【保存知识文档】
|
|
702
|
+
使用 code-impact-markdown skill 的完整流程保存文档:
|
|
703
|
+
1. 先调用 Skill 工具加载 code-impact-markdown skill,按其规范执行保存流程
|
|
704
|
+
2. 查询已有概念:$CODEGRAPH docs concepts --json
|
|
705
|
+
3. 复用已有概念名,新名称放 aliases
|
|
706
|
+
4. 文件名 kebab-case,基于入口点命名,保存到 docs/knowledge/
|
|
707
|
+
5. document_type 根据探索内容判断:流程探索→exploration,约束/陷阱→finding,架构模式→architecture,设计决策→decision
|
|
708
|
+
6. domains 填 [{project_name}]
|
|
709
|
+
7. source_type 填 ai_session
|
|
710
|
+
8. related_code 填实际探索过的文件路径(cgraphx query / impact 输出已有,直接复制)
|
|
711
|
+
9. 文档正文必须包含:Summary, Context, Findings, Evidence, Impact For Future Changes
|
|
712
|
+
|
|
713
|
+
完成后只返回以下 JSON(不要返回文档内容):
|
|
714
|
+
{
|
|
715
|
+
"document_path": "docs/knowledge/xxx.md",
|
|
716
|
+
"document_type": "exploration",
|
|
717
|
+
"files_explored": ["src/xxx.rs", ...],
|
|
718
|
+
"symbols_explored": ["com.example.X.foo", ...],
|
|
719
|
+
"concepts_found": ["ConceptA", "ConceptB"],
|
|
720
|
+
"new_entry_points": [
|
|
721
|
+
{"name": "Feature X", "entry_files": ["src/feature_x.rs"], "entry_symbol": "com.example.FeatureX.run", "type": "api_route"}
|
|
722
|
+
]
|
|
723
|
+
}
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
---
|
|
727
|
+
|
|
728
|
+
## Cross-cutting Sub-Agent Template
|
|
729
|
+
|
|
730
|
+
For Phase 3 deep-dive items with `type: "cross_cutting_concept"`:
|
|
731
|
+
|
|
732
|
+
```text
|
|
733
|
+
你是一个代码探索 agent,负责对跨多个模块的核心概念做**整合分析**——不再重读代码,基于已有事实综合。
|
|
734
|
+
|
|
735
|
+
【目标概念】
|
|
736
|
+
名称:{name}
|
|
737
|
+
中心性 symbol:{entry_symbol}(被 N 个 entry 依赖的高中心性代码符号)
|
|
738
|
+
关联已有文档(Read 这些):{document_paths}
|
|
739
|
+
|
|
740
|
+
【工具优先级:cgraphx impact > Read 已有文档 > Read 代码】
|
|
741
|
+
|
|
742
|
+
1. **先看代码影响面**(cgraphx impact)—— 知道这个 symbol 在多少模块/调用链里出现:
|
|
743
|
+
|
|
744
|
+
```bash
|
|
745
|
+
CODEGRAPH="cgraphx"
|
|
746
|
+
# 拿完整 impact 看覆盖广度
|
|
747
|
+
# 输出 {symbol, depth, nodeCount, edgeCount, affected[]}
|
|
748
|
+
# 用 nodeCount 作中心性,affected[] 看影响面涉及的文件/模块
|
|
749
|
+
$CODEGRAPH impact {entry_symbol} --json
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
2. **Read 关联已有文档**({document_paths})—— 知道业务层面已经记录了什么。
|
|
753
|
+
|
|
754
|
+
3. **不要 Read 代码**(除非前两步明确指向某个具体实现且需要细节)—— Phase 2 已经探索过这些代码,重复 Read 是浪费 token。
|
|
755
|
+
|
|
756
|
+
【项目信息】
|
|
757
|
+
项目路径:{repo_path}
|
|
758
|
+
项目名称:{project_name}
|
|
759
|
+
|
|
760
|
+
【任务】
|
|
761
|
+
1. 用 cgraphx impact 输出构建"代码影响面":哪些模块/调用链依赖这个 symbol(看 `affected[]` 的 `filePath` 分布),跨多少文件/包,`nodeCount` 多大
|
|
762
|
+
2. 用已有文档({document_paths})构建"业务已知":业务侧如何描述这个 concept
|
|
763
|
+
3. 找 gap:
|
|
764
|
+
- 代码影响面 ≠ 业务已知 → 缺失视角(例:代码层面 OrderService 被 5 个模块调用,但业务文档只覆盖了 2 个)
|
|
765
|
+
- 各文档之间矛盾(同一 concept 在不同文档描述不一致)
|
|
766
|
+
- 整合视角(concept 在不同模块的完整生命周期、数据流、控制流)
|
|
767
|
+
|
|
768
|
+
【输出】
|
|
769
|
+
在 docs/knowledge/ 目录下创建整合文档。
|
|
770
|
+
|
|
771
|
+
document_type 建议:
|
|
772
|
+
- 揭示整体架构 → architecture
|
|
773
|
+
- 设计决策总结 → decision
|
|
774
|
+
- 流程整合 → exploration
|
|
775
|
+
|
|
776
|
+
frontmatter:
|
|
777
|
+
- related_documents 填引用的已有文档
|
|
778
|
+
- related_code 填 cgraphx impact 输出 affected[] 里的高中心性文件
|
|
779
|
+
- concepts 填此核心 concept + 关联 concept
|
|
780
|
+
|
|
781
|
+
完成后返回 JSON:
|
|
782
|
+
{
|
|
783
|
+
"document_path": "docs/knowledge/xxx.md",
|
|
784
|
+
"document_type": "architecture",
|
|
785
|
+
"files_explored": [...],
|
|
786
|
+
"symbols_analyzed": [...],
|
|
787
|
+
"concepts_found": [...],
|
|
788
|
+
"new_entry_points": [...]
|
|
789
|
+
}
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
---
|
|
793
|
+
|
|
794
|
+
## Quality Rules
|
|
795
|
+
|
|
796
|
+
- Sub-agents must include `Evidence` section with actual file paths and code references.
|
|
797
|
+
- Documents without `Evidence` or `Impact For Future Changes` are flagged as low quality.
|
|
798
|
+
- Each sub-agent must explore at least 3 files (not just the entry file).
|
|
799
|
+
- New entry points must be genuinely independent — a helper function called by an already-explored entry is NOT a new entry point.
|
|
800
|
+
- When the project uses a framework (Spring, Express, Axum, Django), framework boilerplate is NOT an entry point. Only business logic matters.
|