ai-spector 0.9.21 → 0.9.24
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/contracts/bootstrap/config/prototype-screen-map.json +25 -0
- package/contracts/bootstrap/config/prototype.config.json +17 -0
- package/contracts/bootstrap/config/review-queue-pending.json +4 -0
- package/contracts/bootstrap/config/review-queue-registry.json +4 -0
- package/contracts/bootstrap/config/review.config.json +5 -0
- package/contracts/bootstrap/docs/ENTITY_REGISTRY_MIGRATION.md +192 -0
- package/contracts/bootstrap/docs/MIGRATION.md +463 -0
- package/contracts/bootstrap/docs/README.md +48 -0
- package/contracts/bootstrap/docs/adapters/README.md +32 -0
- package/contracts/bootstrap/docs/guides/COMMENTS_ENTITY_MIGRATION.md +195 -0
- package/contracts/bootstrap/docs/guides/DOCOPS_MANUAL_FALLBACK.md +177 -0
- package/contracts/bootstrap/docs/guides/PROJECT_LAYOUT.md +84 -0
- package/contracts/bootstrap/docs/modules/comments.md +77 -0
- package/contracts/bootstrap/docs/modules/generate.md +25 -0
- package/contracts/bootstrap/docs/modules/graph.md +31 -0
- package/contracts/bootstrap/docs/modules/prototype.md +26 -0
- package/contracts/bootstrap/docs/modules/review.md +25 -0
- package/contracts/bootstrap/docs/modules/translate.md +26 -0
- package/contracts/bootstrap/scripts/migrate-entity-registry.sh +55 -0
- package/contracts/bootstrap/templates/basic-design/db-design-template.md +177 -0
- package/contracts/bootstrap/templates/basic-design/detail-api-template.md +278 -0
- package/contracts/bootstrap/templates/basic-design/detail-screen-template.md +281 -0
- package/contracts/bootstrap/templates/basic-design/list-api-template.md +130 -0
- package/contracts/bootstrap/templates/basic-design/list-screen-template.md +242 -0
- package/contracts/bootstrap/templates/detail-design/common/architecture-overview-template.md +302 -0
- package/contracts/bootstrap/templates/detail-design/common/deployment-infrastructure-template.md +461 -0
- package/contracts/bootstrap/templates/detail-design/common/error-handling-patterns-template.md +460 -0
- package/contracts/bootstrap/templates/detail-design/common/integration-patterns-template.md +410 -0
- package/contracts/bootstrap/templates/detail-design/common/performance-standards-template.md +406 -0
- package/contracts/bootstrap/templates/detail-design/common/security-patterns-template.md +395 -0
- package/contracts/bootstrap/templates/detail-design/feature-detail-design-template.md +773 -0
- package/contracts/bootstrap/templates/detail-design/feature-list-template.md +39 -0
- package/contracts/bootstrap/templates/srs/1-introduction.md +58 -0
- package/contracts/bootstrap/templates/srs/2-overall-description.md +91 -0
- package/contracts/bootstrap/templates/srs/3-use-case-detail-template.md +142 -0
- package/contracts/bootstrap/templates/srs/3-use-cases.md +53 -0
- package/contracts/bootstrap/templates/srs/4-system-feature-detail-template.md +131 -0
- package/contracts/bootstrap/templates/srs/4-system-features-list-template.md +39 -0
- package/contracts/bootstrap/templates/srs/5-data-requirements.md +59 -0
- package/contracts/bootstrap/templates/srs/6-external-interfaces.md +56 -0
- package/contracts/bootstrap/templates/srs/7-quality-attributes.md +74 -0
- package/contracts/bootstrap/templates/srs/8-internationalization.md +36 -0
- package/contracts/bootstrap/templates/srs/9-other-requirements.md +46 -0
- package/contracts/examples/full-docops.config.json +54 -0
- package/contracts/examples/migrate-lifecycle.json +18 -0
- package/contracts/examples/minimal-comment-thread/comment-root.json +10 -0
- package/contracts/examples/minimal-comment-thread/meta_data.json +22 -0
- package/contracts/examples/minimal-docops.config.json +33 -0
- package/contracts/examples/minimal-lifecycle.json +17 -0
- package/contracts/examples/minimal-prototype.config.json +18 -0
- package/contracts/examples/minimal-screen-map.json +25 -0
- package/contracts/examples/registry/minimal-document.entity.json +15 -0
- package/contracts/examples/registry/minimal-manifest.json +7 -0
- package/contracts/examples/registry/minimal-screen.entity.json +11 -0
- package/contracts/examples/review/minimal-pending.json +14 -0
- package/contracts/examples/review/minimal-registry.json +31 -0
- package/contracts/examples/review/minimal-review.config.json +7 -0
- package/contracts/schemas/comments/comment_body.schema.json +19 -0
- package/contracts/schemas/comments/meta_data.schema.json +59 -0
- package/contracts/schemas/docops.config.schema.json +97 -0
- package/contracts/schemas/lifecycle.schema.json +43 -0
- package/contracts/schemas/prototype/config.schema.json +56 -0
- package/contracts/schemas/prototype/screen-map.schema.json +51 -0
- package/contracts/schemas/registry/document.entity.schema.json +38 -0
- package/contracts/schemas/registry/manifest.schema.json +18 -0
- package/contracts/schemas/registry/screen.entity.schema.json +28 -0
- package/contracts/schemas/review/registry.schema.json +72 -0
- package/contracts/schemas/review/review.config.schema.json +42 -0
- package/dist/cli.js +26 -1
- package/dist/cli.js.map +1 -1
- package/dist/core/docops/bootstrap.d.ts +4 -1
- package/dist/core/docops/bootstrap.d.ts.map +1 -1
- package/dist/core/docops/bootstrap.js +16 -9
- package/dist/core/docops/bootstrap.js.map +1 -1
- package/dist/core/docops/guide.d.ts +78 -0
- package/dist/core/docops/guide.d.ts.map +1 -0
- package/dist/core/docops/guide.js +554 -0
- package/dist/core/docops/guide.js.map +1 -0
- package/dist/core/docops/migrate.d.ts.map +1 -1
- package/dist/core/docops/migrate.js +40 -6
- package/dist/core/docops/migrate.js.map +1 -1
- package/dist/core/graph/doc-extract.d.ts.map +1 -1
- package/dist/core/graph/doc-extract.js +12 -0
- package/dist/core/graph/doc-extract.js.map +1 -1
- package/dist/core/graph/impact.d.ts.map +1 -1
- package/dist/core/graph/impact.js +2 -1
- package/dist/core/graph/impact.js.map +1 -1
- package/dist/core/graph/link-testcases.d.ts +14 -0
- package/dist/core/graph/link-testcases.d.ts.map +1 -0
- package/dist/core/graph/link-testcases.js +46 -0
- package/dist/core/graph/link-testcases.js.map +1 -0
- package/dist/core/operations/docops.d.ts +8 -0
- package/dist/core/operations/docops.d.ts.map +1 -1
- package/dist/core/operations/docops.js +40 -0
- package/dist/core/operations/docops.js.map +1 -1
- package/dist/core/operations/index.d.ts.map +1 -1
- package/dist/core/operations/index.js +25 -0
- package/dist/core/operations/index.js.map +1 -1
- package/dist/core/operations/task-gates.d.ts +8 -1
- package/dist/core/operations/task-gates.d.ts.map +1 -1
- package/dist/core/operations/task-gates.js +14 -0
- package/dist/core/operations/task-gates.js.map +1 -1
- package/dist/core/operations/task.d.ts +2 -0
- package/dist/core/operations/task.d.ts.map +1 -1
- package/dist/core/operations/task.js +40 -2
- package/dist/core/operations/task.js.map +1 -1
- package/dist/core/sync/audit.d.ts.map +1 -1
- package/dist/core/sync/audit.js +14 -6
- package/dist/core/sync/audit.js.map +1 -1
- package/dist/core/sync/baseline.d.ts.map +1 -1
- package/dist/core/sync/baseline.js +5 -2
- package/dist/core/sync/baseline.js.map +1 -1
- package/dist/core/sync/constants.d.ts.map +1 -1
- package/dist/core/sync/constants.js +2 -1
- package/dist/core/sync/constants.js.map +1 -1
- package/dist/core/sync/gaps.d.ts.map +1 -1
- package/dist/core/sync/gaps.js +23 -2
- package/dist/core/sync/gaps.js.map +1 -1
- package/dist/core/sync/git-diff.d.ts +1 -0
- package/dist/core/sync/git-diff.d.ts.map +1 -1
- package/dist/core/sync/git-diff.js +14 -0
- package/dist/core/sync/git-diff.js.map +1 -1
- package/dist/core/sync/repo-context.d.ts +23 -0
- package/dist/core/sync/repo-context.d.ts.map +1 -0
- package/dist/core/sync/repo-context.js +28 -0
- package/dist/core/sync/repo-context.js.map +1 -0
- package/dist/core/sync/snapshot.d.ts.map +1 -1
- package/dist/core/sync/snapshot.js +24 -18
- package/dist/core/sync/snapshot.js.map +1 -1
- package/dist/core/sync/types.d.ts +7 -2
- package/dist/core/sync/types.d.ts.map +1 -1
- package/dist/core/upgrade/checklist.json +2 -2
- package/dist/interfaces/mcp/schemas.d.ts +2 -0
- package/dist/interfaces/mcp/schemas.d.ts.map +1 -1
- package/dist/interfaces/mcp/schemas.js +4 -0
- package/dist/interfaces/mcp/schemas.js.map +1 -1
- package/dist/interfaces/mcp/server.js +0 -0
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
- package/scaffold/claude/.claude/skills/_skill-router.md +11 -8
- package/scaffold/claude/.claude/skills/ai-spector/references/cli-failures.md +3 -3
- package/scaffold/claude/.claude/skills/ai-spector/references/docops-migrate.md +112 -0
- package/scaffold/claude/.claude/skills/ai-spector/references/help.md +1 -1
- package/scaffold/claude/.claude/skills/ai-spector/references/runbook.md +49 -26
- package/scaffold/claude/.claude/skills/ai-spector/skill.md +3 -2
- package/scaffold/cursor/skills/_skill-router.md +11 -8
- package/scaffold/cursor/skills/ai-spector/SKILL.md +3 -2
- package/scaffold/cursor/skills/ai-spector/references/cli-failures.md +3 -3
- package/scaffold/cursor/skills/ai-spector/references/docops-migrate.md +112 -0
- package/scaffold/cursor/skills/ai-spector/references/help.md +1 -1
- package/scaffold/cursor/skills/ai-spector/references/runbook.md +49 -26
- package/schemas/rules.impact.json +3 -2
- package/schemas/schema.graph.json +4 -2
- package/dist/commands/analyze.d.ts +0 -12
- package/dist/commands/analyze.d.ts.map +0 -1
- package/dist/commands/analyze.js +0 -53
- package/dist/commands/analyze.js.map +0 -1
- package/dist/commands/bootstrap.d.ts +0 -4
- package/dist/commands/bootstrap.d.ts.map +0 -1
- package/dist/commands/bootstrap.js +0 -58
- package/dist/commands/bootstrap.js.map +0 -1
- package/dist/commands/comments.d.ts +0 -44
- package/dist/commands/comments.d.ts.map +0 -1
- package/dist/commands/comments.js +0 -79
- package/dist/commands/comments.js.map +0 -1
- package/dist/commands/graph-impact.d.ts +0 -28
- package/dist/commands/graph-impact.d.ts.map +0 -1
- package/dist/commands/graph-impact.js +0 -174
- package/dist/commands/graph-impact.js.map +0 -1
- package/dist/commands/graph-merge.d.ts +0 -32
- package/dist/commands/graph-merge.d.ts.map +0 -1
- package/dist/commands/graph-merge.js +0 -101
- package/dist/commands/graph-merge.js.map +0 -1
- package/dist/commands/graph-query.d.ts +0 -10
- package/dist/commands/graph-query.d.ts.map +0 -1
- package/dist/commands/graph-query.js +0 -24
- package/dist/commands/graph-query.js.map +0 -1
- package/dist/commands/graph-report.d.ts +0 -9
- package/dist/commands/graph-report.d.ts.map +0 -1
- package/dist/commands/graph-report.js +0 -10
- package/dist/commands/graph-report.js.map +0 -1
- package/dist/commands/graph-visualize.d.ts +0 -17
- package/dist/commands/graph-visualize.d.ts.map +0 -1
- package/dist/commands/graph-visualize.js +0 -44
- package/dist/commands/graph-visualize.js.map +0 -1
- package/dist/commands/hooks-constants.d.ts +0 -2
- package/dist/commands/hooks-constants.d.ts.map +0 -1
- package/dist/commands/hooks-constants.js +0 -2
- package/dist/commands/hooks-constants.js.map +0 -1
- package/dist/commands/hooks.d.ts +0 -28
- package/dist/commands/hooks.d.ts.map +0 -1
- package/dist/commands/hooks.js +0 -187
- package/dist/commands/hooks.js.map +0 -1
- package/dist/commands/index.d.ts +0 -22
- package/dist/commands/index.d.ts.map +0 -1
- package/dist/commands/index.js +0 -472
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/init.d.ts +0 -19
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -210
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/lang-queue.d.ts +0 -28
- package/dist/commands/lang-queue.d.ts.map +0 -1
- package/dist/commands/lang-queue.js +0 -49
- package/dist/commands/lang-queue.js.map +0 -1
- package/dist/commands/lang.d.ts +0 -16
- package/dist/commands/lang.d.ts.map +0 -1
- package/dist/commands/lang.js +0 -69
- package/dist/commands/lang.js.map +0 -1
- package/dist/commands/prototype.d.ts +0 -66
- package/dist/commands/prototype.d.ts.map +0 -1
- package/dist/commands/prototype.js +0 -370
- package/dist/commands/prototype.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -26
- package/dist/commands/setup.d.ts.map +0 -1
- package/dist/commands/setup.js +0 -259
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/sync-cursor.d.ts +0 -10
- package/dist/commands/sync-cursor.d.ts.map +0 -1
- package/dist/commands/sync-cursor.js +0 -18
- package/dist/commands/sync-cursor.js.map +0 -1
- package/dist/commands/template-regen.d.ts +0 -24
- package/dist/commands/template-regen.d.ts.map +0 -1
- package/dist/commands/template-regen.js +0 -240
- package/dist/commands/template-regen.js.map +0 -1
- package/dist/commands/template.d.ts +0 -3
- package/dist/commands/template.d.ts.map +0 -1
- package/dist/commands/template.js +0 -1285
- package/dist/commands/template.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -10
- package/dist/commands/validate.d.ts.map +0 -1
- package/dist/commands/validate.js +0 -89
- package/dist/commands/validate.js.map +0 -1
- package/dist/comments/anchor.d.ts +0 -16
- package/dist/comments/anchor.d.ts.map +0 -1
- package/dist/comments/anchor.js +0 -59
- package/dist/comments/anchor.js.map +0 -1
- package/dist/comments/inbox.d.ts +0 -82
- package/dist/comments/inbox.d.ts.map +0 -1
- package/dist/comments/inbox.js +0 -179
- package/dist/comments/inbox.js.map +0 -1
- package/dist/comments/paths.d.ts +0 -12
- package/dist/comments/paths.d.ts.map +0 -1
- package/dist/comments/paths.js +0 -54
- package/dist/comments/paths.js.map +0 -1
- package/dist/comments/plan.d.ts +0 -20
- package/dist/comments/plan.d.ts.map +0 -1
- package/dist/comments/plan.js +0 -62
- package/dist/comments/plan.js.map +0 -1
- package/dist/comments/storage.d.ts +0 -30
- package/dist/comments/storage.d.ts.map +0 -1
- package/dist/comments/storage.js +0 -272
- package/dist/comments/storage.js.map +0 -1
- package/dist/comments/types.d.ts +0 -54
- package/dist/comments/types.d.ts.map +0 -1
- package/dist/comments/types.js +0 -2
- package/dist/comments/types.js.map +0 -1
- package/dist/config/load.d.ts +0 -47
- package/dist/config/load.d.ts.map +0 -1
- package/dist/config/load.js +0 -148
- package/dist/config/load.js.map +0 -1
- package/dist/config/types.d.ts +0 -56
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js +0 -2
- package/dist/config/types.js.map +0 -1
- package/dist/core/adopt/apply.d.ts +0 -15
- package/dist/core/adopt/apply.d.ts.map +0 -1
- package/dist/core/adopt/apply.js +0 -127
- package/dist/core/adopt/apply.js.map +0 -1
- package/dist/core/adopt/bootstrap.d.ts +0 -16
- package/dist/core/adopt/bootstrap.d.ts.map +0 -1
- package/dist/core/adopt/bootstrap.js +0 -195
- package/dist/core/adopt/bootstrap.js.map +0 -1
- package/dist/core/adopt/classify.d.ts +0 -22
- package/dist/core/adopt/classify.d.ts.map +0 -1
- package/dist/core/adopt/classify.js +0 -295
- package/dist/core/adopt/classify.js.map +0 -1
- package/dist/core/adopt/paths.d.ts +0 -10
- package/dist/core/adopt/paths.d.ts.map +0 -1
- package/dist/core/adopt/paths.js +0 -16
- package/dist/core/adopt/paths.js.map +0 -1
- package/dist/core/adopt/plan.d.ts +0 -10
- package/dist/core/adopt/plan.d.ts.map +0 -1
- package/dist/core/adopt/plan.js +0 -269
- package/dist/core/adopt/plan.js.map +0 -1
- package/dist/core/adopt/scan.d.ts +0 -5
- package/dist/core/adopt/scan.d.ts.map +0 -1
- package/dist/core/adopt/scan.js +0 -169
- package/dist/core/adopt/scan.js.map +0 -1
- package/dist/core/adopt/setup.d.ts +0 -7
- package/dist/core/adopt/setup.d.ts.map +0 -1
- package/dist/core/adopt/setup.js +0 -64
- package/dist/core/adopt/setup.js.map +0 -1
- package/dist/core/adopt/tasks.d.ts +0 -9
- package/dist/core/adopt/tasks.d.ts.map +0 -1
- package/dist/core/adopt/tasks.js +0 -153
- package/dist/core/adopt/tasks.js.map +0 -1
- package/dist/core/adopt/types.d.ts +0 -75
- package/dist/core/adopt/types.d.ts.map +0 -1
- package/dist/core/adopt/types.js +0 -2
- package/dist/core/adopt/types.js.map +0 -1
- package/dist/core/adopt/validate.d.ts +0 -20
- package/dist/core/adopt/validate.d.ts.map +0 -1
- package/dist/core/adopt/validate.js +0 -129
- package/dist/core/adopt/validate.js.map +0 -1
- package/dist/core/docops/dual-write.d.ts +0 -12
- package/dist/core/docops/dual-write.d.ts.map +0 -1
- package/dist/core/docops/dual-write.js +0 -44
- package/dist/core/docops/dual-write.js.map +0 -1
- package/dist/core/engine/local-adapter.d.ts +0 -3
- package/dist/core/engine/local-adapter.d.ts.map +0 -1
- package/dist/core/engine/local-adapter.js +0 -18
- package/dist/core/engine/local-adapter.js.map +0 -1
- package/dist/core/graph/rules/default-impact.json +0 -24
- package/dist/core/operations/adopt-gates.d.ts +0 -19
- package/dist/core/operations/adopt-gates.d.ts.map +0 -1
- package/dist/core/operations/adopt-gates.js +0 -71
- package/dist/core/operations/adopt-gates.js.map +0 -1
- package/dist/core/operations/adopt-plan.d.ts +0 -15
- package/dist/core/operations/adopt-plan.d.ts.map +0 -1
- package/dist/core/operations/adopt-plan.js +0 -24
- package/dist/core/operations/adopt-plan.js.map +0 -1
- package/dist/core/operations/adopt.d.ts +0 -11
- package/dist/core/operations/adopt.d.ts.map +0 -1
- package/dist/core/operations/adopt.js +0 -150
- package/dist/core/operations/adopt.js.map +0 -1
- package/dist/core/operations/analyze.d.ts +0 -12
- package/dist/core/operations/analyze.d.ts.map +0 -1
- package/dist/core/operations/analyze.js +0 -53
- package/dist/core/operations/analyze.js.map +0 -1
- package/dist/core/prototype/spa-route-fallbacks.d.ts +0 -21
- package/dist/core/prototype/spa-route-fallbacks.d.ts.map +0 -1
- package/dist/core/prototype/spa-route-fallbacks.js +0 -93
- package/dist/core/prototype/spa-route-fallbacks.js.map +0 -1
- package/dist/graph/InMemoryGraph.d.ts +0 -2
- package/dist/graph/InMemoryGraph.d.ts.map +0 -1
- package/dist/graph/InMemoryGraph.js +0 -2
- package/dist/graph/InMemoryGraph.js.map +0 -1
- package/dist/graph/bundles.d.ts +0 -32
- package/dist/graph/bundles.d.ts.map +0 -1
- package/dist/graph/bundles.js +0 -109
- package/dist/graph/bundles.js.map +0 -1
- package/dist/graph/defaults.d.ts +0 -23
- package/dist/graph/defaults.d.ts.map +0 -1
- package/dist/graph/defaults.js +0 -25
- package/dist/graph/defaults.js.map +0 -1
- package/dist/graph/detail-sections.d.ts +0 -28
- package/dist/graph/detail-sections.d.ts.map +0 -1
- package/dist/graph/detail-sections.js +0 -220
- package/dist/graph/detail-sections.js.map +0 -1
- package/dist/graph/doc-extract.d.ts +0 -84
- package/dist/graph/doc-extract.d.ts.map +0 -1
- package/dist/graph/doc-extract.js +0 -821
- package/dist/graph/doc-extract.js.map +0 -1
- package/dist/graph/impact.d.ts +0 -5
- package/dist/graph/impact.d.ts.map +0 -1
- package/dist/graph/impact.js +0 -7
- package/dist/graph/impact.js.map +0 -1
- package/dist/graph/knowledge.d.ts +0 -11
- package/dist/graph/knowledge.d.ts.map +0 -1
- package/dist/graph/knowledge.js +0 -62
- package/dist/graph/knowledge.js.map +0 -1
- package/dist/graph/layer-audit.d.ts +0 -5
- package/dist/graph/layer-audit.d.ts.map +0 -1
- package/dist/graph/layer-audit.js +0 -29
- package/dist/graph/layer-audit.js.map +0 -1
- package/dist/graph/load.d.ts +0 -4
- package/dist/graph/load.d.ts.map +0 -1
- package/dist/graph/load.js +0 -12
- package/dist/graph/load.js.map +0 -1
- package/dist/graph/loadGraph.d.ts +0 -3
- package/dist/graph/loadGraph.d.ts.map +0 -1
- package/dist/graph/loadGraph.js +0 -7
- package/dist/graph/loadGraph.js.map +0 -1
- package/dist/graph/merge.d.ts +0 -27
- package/dist/graph/merge.d.ts.map +0 -1
- package/dist/graph/merge.js +0 -239
- package/dist/graph/merge.js.map +0 -1
- package/dist/graph/path-target-edges.d.ts +0 -2
- package/dist/graph/path-target-edges.d.ts.map +0 -1
- package/dist/graph/path-target-edges.js +0 -2
- package/dist/graph/path-target-edges.js.map +0 -1
- package/dist/graph/provenance.d.ts +0 -19
- package/dist/graph/provenance.d.ts.map +0 -1
- package/dist/graph/provenance.js +0 -199
- package/dist/graph/provenance.js.map +0 -1
- package/dist/graph/query.d.ts +0 -3
- package/dist/graph/query.d.ts.map +0 -1
- package/dist/graph/query.js +0 -2
- package/dist/graph/query.js.map +0 -1
- package/dist/graph/resolve.d.ts +0 -15
- package/dist/graph/resolve.d.ts.map +0 -1
- package/dist/graph/resolve.js +0 -117
- package/dist/graph/resolve.js.map +0 -1
- package/dist/graph/source-refs.d.ts +0 -2
- package/dist/graph/source-refs.d.ts.map +0 -1
- package/dist/graph/source-refs.js +0 -30
- package/dist/graph/source-refs.js.map +0 -1
- package/dist/graph/translation.d.ts +0 -14
- package/dist/graph/translation.d.ts.map +0 -1
- package/dist/graph/translation.js +0 -65
- package/dist/graph/translation.js.map +0 -1
- package/dist/index/doc-semantics.d.ts +0 -14
- package/dist/index/doc-semantics.d.ts.map +0 -1
- package/dist/index/doc-semantics.js +0 -101
- package/dist/index/doc-semantics.js.map +0 -1
- package/dist/index/docs-build.d.ts +0 -40
- package/dist/index/docs-build.d.ts.map +0 -1
- package/dist/index/docs-build.js +0 -136
- package/dist/index/docs-build.js.map +0 -1
- package/dist/index/docs-config.d.ts +0 -19
- package/dist/index/docs-config.d.ts.map +0 -1
- package/dist/index/docs-config.js +0 -5
- package/dist/index/docs-config.js.map +0 -1
- package/dist/interfaces/cli/format/adopt.d.ts +0 -23
- package/dist/interfaces/cli/format/adopt.d.ts.map +0 -1
- package/dist/interfaces/cli/format/adopt.js +0 -89
- package/dist/interfaces/cli/format/adopt.js.map +0 -1
- package/dist/interfaces/mcp/tools/adopt.d.ts +0 -22
- package/dist/interfaces/mcp/tools/adopt.d.ts.map +0 -1
- package/dist/interfaces/mcp/tools/adopt.js +0 -55
- package/dist/interfaces/mcp/tools/adopt.js.map +0 -1
- package/dist/lang/diff.d.ts +0 -12
- package/dist/lang/diff.d.ts.map +0 -1
- package/dist/lang/diff.js +0 -71
- package/dist/lang/diff.js.map +0 -1
- package/dist/lang/paths.d.ts +0 -16
- package/dist/lang/paths.d.ts.map +0 -1
- package/dist/lang/paths.js +0 -32
- package/dist/lang/paths.js.map +0 -1
- package/dist/lang/queue-layout.d.ts +0 -11
- package/dist/lang/queue-layout.d.ts.map +0 -1
- package/dist/lang/queue-layout.js +0 -56
- package/dist/lang/queue-layout.js.map +0 -1
- package/dist/lang/queue-store.d.ts +0 -23
- package/dist/lang/queue-store.d.ts.map +0 -1
- package/dist/lang/queue-store.js +0 -285
- package/dist/lang/queue-store.js.map +0 -1
- package/dist/lang/queue-types.d.ts +0 -122
- package/dist/lang/queue-types.d.ts.map +0 -1
- package/dist/lang/queue-types.js +0 -2
- package/dist/lang/queue-types.js.map +0 -1
- package/dist/lang/queue.d.ts +0 -17
- package/dist/lang/queue.d.ts.map +0 -1
- package/dist/lang/queue.js +0 -362
- package/dist/lang/queue.js.map +0 -1
- package/dist/lang/sections.d.ts +0 -26
- package/dist/lang/sections.d.ts.map +0 -1
- package/dist/lang/sections.js +0 -85
- package/dist/lang/sections.js.map +0 -1
- package/dist/markdown/parse.d.ts +0 -25
- package/dist/markdown/parse.d.ts.map +0 -1
- package/dist/markdown/parse.js +0 -100
- package/dist/markdown/parse.js.map +0 -1
- package/dist/prototype/build-base-path.d.ts +0 -11
- package/dist/prototype/build-base-path.d.ts.map +0 -1
- package/dist/prototype/build-base-path.js +0 -84
- package/dist/prototype/build-base-path.js.map +0 -1
- package/dist/prototype/build-manifest.d.ts +0 -21
- package/dist/prototype/build-manifest.d.ts.map +0 -1
- package/dist/prototype/build-manifest.js +0 -171
- package/dist/prototype/build-manifest.js.map +0 -1
- package/dist/prototype/config.d.ts +0 -21
- package/dist/prototype/config.d.ts.map +0 -1
- package/dist/prototype/config.js +0 -131
- package/dist/prototype/config.js.map +0 -1
- package/dist/prototype/deploy-path.d.ts +0 -9
- package/dist/prototype/deploy-path.d.ts.map +0 -1
- package/dist/prototype/deploy-path.js +0 -21
- package/dist/prototype/deploy-path.js.map +0 -1
- package/dist/prototype/htpasswd.d.ts +0 -8
- package/dist/prototype/htpasswd.d.ts.map +0 -1
- package/dist/prototype/htpasswd.js +0 -36
- package/dist/prototype/htpasswd.js.map +0 -1
- package/dist/prototype/nginx-config.d.ts +0 -16
- package/dist/prototype/nginx-config.d.ts.map +0 -1
- package/dist/prototype/nginx-config.js +0 -39
- package/dist/prototype/nginx-config.js.map +0 -1
- package/dist/prototype/parse-screen-index.d.ts +0 -10
- package/dist/prototype/parse-screen-index.d.ts.map +0 -1
- package/dist/prototype/parse-screen-index.js +0 -109
- package/dist/prototype/parse-screen-index.js.map +0 -1
- package/dist/prototype/preview-uri.d.ts +0 -8
- package/dist/prototype/preview-uri.d.ts.map +0 -1
- package/dist/prototype/preview-uri.js +0 -35
- package/dist/prototype/preview-uri.js.map +0 -1
- package/dist/prototype/relative-assets.d.ts +0 -9
- package/dist/prototype/relative-assets.d.ts.map +0 -1
- package/dist/prototype/relative-assets.js +0 -23
- package/dist/prototype/relative-assets.js.map +0 -1
- package/dist/prototype/resolve-default-screen.d.ts +0 -17
- package/dist/prototype/resolve-default-screen.d.ts.map +0 -1
- package/dist/prototype/resolve-default-screen.js +0 -31
- package/dist/prototype/resolve-default-screen.js.map +0 -1
- package/dist/prototype/rewrite-build-assets.d.ts +0 -8
- package/dist/prototype/rewrite-build-assets.d.ts.map +0 -1
- package/dist/prototype/rewrite-build-assets.js +0 -40
- package/dist/prototype/rewrite-build-assets.js.map +0 -1
- package/dist/prototype/route-defaults.d.ts +0 -43
- package/dist/prototype/route-defaults.d.ts.map +0 -1
- package/dist/prototype/route-defaults.js +0 -50
- package/dist/prototype/route-defaults.js.map +0 -1
- package/dist/prototype/screen-doc-paths.d.ts +0 -15
- package/dist/prototype/screen-doc-paths.d.ts.map +0 -1
- package/dist/prototype/screen-doc-paths.js +0 -38
- package/dist/prototype/screen-doc-paths.js.map +0 -1
- package/dist/prototype/spa-route-fallbacks.d.ts +0 -21
- package/dist/prototype/spa-route-fallbacks.d.ts.map +0 -1
- package/dist/prototype/spa-route-fallbacks.js +0 -93
- package/dist/prototype/spa-route-fallbacks.js.map +0 -1
- package/dist/prototype/theme-preview.d.ts +0 -17
- package/dist/prototype/theme-preview.d.ts.map +0 -1
- package/dist/prototype/theme-preview.js +0 -73
- package/dist/prototype/theme-preview.js.map +0 -1
- package/dist/prototype/themes.d.ts +0 -6
- package/dist/prototype/themes.d.ts.map +0 -1
- package/dist/prototype/themes.js +0 -55
- package/dist/prototype/themes.js.map +0 -1
- package/dist/prototype/types.d.ts +0 -160
- package/dist/prototype/types.d.ts.map +0 -1
- package/dist/prototype/types.js +0 -2
- package/dist/prototype/types.js.map +0 -1
- package/dist/prototype/validate.d.ts +0 -16
- package/dist/prototype/validate.d.ts.map +0 -1
- package/dist/prototype/validate.js +0 -149
- package/dist/prototype/validate.js.map +0 -1
- package/dist/registry/build.d.ts +0 -5
- package/dist/registry/build.d.ts.map +0 -1
- package/dist/registry/build.js +0 -71
- package/dist/registry/build.js.map +0 -1
- package/dist/registry/slug.d.ts +0 -4
- package/dist/registry/slug.d.ts.map +0 -1
- package/dist/registry/slug.js +0 -16
- package/dist/registry/slug.js.map +0 -1
- package/dist/registry/structure-patch.d.ts +0 -6
- package/dist/registry/structure-patch.d.ts.map +0 -1
- package/dist/registry/structure-patch.js +0 -49
- package/dist/registry/structure-patch.js.map +0 -1
- package/dist/template/scan.d.ts +0 -21
- package/dist/template/scan.d.ts.map +0 -1
- package/dist/template/scan.js +0 -84
- package/dist/template/scan.js.map +0 -1
- package/dist/template/validate.d.ts +0 -10
- package/dist/template/validate.d.ts.map +0 -1
- package/dist/template/validate.js +0 -64
- package/dist/template/validate.js.map +0 -1
- package/dist/util/fs.d.ts +0 -6
- package/dist/util/fs.d.ts.map +0 -1
- package/dist/util/fs.js +0 -24
- package/dist/util/fs.js.map +0 -1
- package/dist/util/git-diff.d.ts +0 -16
- package/dist/util/git-diff.d.ts.map +0 -1
- package/dist/util/git-diff.js +0 -93
- package/dist/util/git-diff.js.map +0 -1
- package/dist/util/gitignore.d.ts +0 -9
- package/dist/util/gitignore.d.ts.map +0 -1
- package/dist/util/gitignore.js +0 -44
- package/dist/util/gitignore.js.map +0 -1
- package/dist/util/open-browser.d.ts +0 -3
- package/dist/util/open-browser.d.ts.map +0 -1
- package/dist/util/open-browser.js +0 -24
- package/dist/util/open-browser.js.map +0 -1
- package/dist/util/paths.d.ts +0 -16
- package/dist/util/paths.d.ts.map +0 -1
- package/dist/util/paths.js +0 -19
- package/dist/util/paths.js.map +0 -1
- package/dist/util/prompt.d.ts +0 -14
- package/dist/util/prompt.d.ts.map +0 -1
- package/dist/util/prompt.js +0 -65
- package/dist/util/prompt.js.map +0 -1
- package/dist/visualize/html.d.ts +0 -13
- package/dist/visualize/html.d.ts.map +0 -1
- package/dist/visualize/html.js +0 -766
- package/dist/visualize/html.js.map +0 -1
- package/dist/visualize/stats.d.ts +0 -8
- package/dist/visualize/stats.d.ts.map +0 -1
- package/dist/visualize/stats.js +0 -9
- package/dist/visualize/stats.js.map +0 -1
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { getThread } from "../comments/storage.js";
|
|
2
|
-
import type { ThreadSummary } from "../comments/types.js";
|
|
3
|
-
import type { CommentInbox, CommentResolvePlan } from "../comments/inbox.js";
|
|
4
|
-
import type { ResolveThreadResult } from "../comments/storage.js";
|
|
5
|
-
export interface CommentsListOptions {
|
|
6
|
-
root?: string;
|
|
7
|
-
filePath?: string;
|
|
8
|
-
status?: "open" | "resolved" | "all";
|
|
9
|
-
}
|
|
10
|
-
export interface CommentsListResult {
|
|
11
|
-
threads: ThreadSummary[];
|
|
12
|
-
count: number;
|
|
13
|
-
}
|
|
14
|
-
export interface CommentsInboxOptions {
|
|
15
|
-
root?: string;
|
|
16
|
-
filePath?: string;
|
|
17
|
-
status?: "open" | "resolved" | "all";
|
|
18
|
-
}
|
|
19
|
-
export interface CommentsPlanOptions {
|
|
20
|
-
root?: string;
|
|
21
|
-
threadId: string;
|
|
22
|
-
filePath?: string;
|
|
23
|
-
pick?: string;
|
|
24
|
-
}
|
|
25
|
-
export interface CommentsShowOptions {
|
|
26
|
-
root?: string;
|
|
27
|
-
threadId: string;
|
|
28
|
-
filePath?: string;
|
|
29
|
-
}
|
|
30
|
-
export interface CommentsResolveOptions {
|
|
31
|
-
root?: string;
|
|
32
|
-
threadId: string;
|
|
33
|
-
filePath: string;
|
|
34
|
-
resolvedBy?: string;
|
|
35
|
-
commitSha?: string;
|
|
36
|
-
expectedVersion?: number;
|
|
37
|
-
dryRun?: boolean;
|
|
38
|
-
}
|
|
39
|
-
export declare function runCommentsList(opts: CommentsListOptions): Promise<CommentsListResult>;
|
|
40
|
-
export declare function runCommentsInbox(opts: CommentsInboxOptions): Promise<CommentInbox>;
|
|
41
|
-
export declare function runCommentsPlan(opts: CommentsPlanOptions): Promise<CommentResolvePlan>;
|
|
42
|
-
export declare function runCommentsShow(opts: CommentsShowOptions): Promise<NonNullable<Awaited<ReturnType<typeof getThread>>>>;
|
|
43
|
-
export declare function runCommentsResolve(opts: CommentsResolveOptions): Promise<ResolveThreadResult>;
|
|
44
|
-
//# sourceMappingURL=comments.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/commands/comments.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EAGV,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQ5F;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAOxF;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkC5F;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAa5H;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAWnG"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { resolveProjectPaths } from "../util/paths.js";
|
|
2
|
-
import { normalizeLogicalPath } from "../comments/paths.js";
|
|
3
|
-
import { buildCommentInboxPayload, buildCommentPlan, pickIdForThread, resolvePickId, } from "../comments/plan.js";
|
|
4
|
-
import { findThreadById, getThread, listThreads, resolveThread, } from "../comments/storage.js";
|
|
5
|
-
export async function runCommentsList(opts) {
|
|
6
|
-
const paths = await resolveProjectPaths(opts.root);
|
|
7
|
-
const threads = await listThreads({
|
|
8
|
-
projectRoot: paths.root,
|
|
9
|
-
filePath: opts.filePath,
|
|
10
|
-
status: opts.status ?? "open",
|
|
11
|
-
});
|
|
12
|
-
return { threads, count: threads.length };
|
|
13
|
-
}
|
|
14
|
-
export async function runCommentsInbox(opts) {
|
|
15
|
-
const paths = await resolveProjectPaths(opts.root);
|
|
16
|
-
return buildCommentInboxPayload({
|
|
17
|
-
projectRoot: paths.root,
|
|
18
|
-
filePath: opts.filePath,
|
|
19
|
-
status: opts.status ?? "open",
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
export async function runCommentsPlan(opts) {
|
|
23
|
-
const paths = await resolveProjectPaths(opts.root);
|
|
24
|
-
let threadId = opts.threadId;
|
|
25
|
-
let filePath = opts.filePath;
|
|
26
|
-
let pickId = opts.pick;
|
|
27
|
-
if (pickId || /^C-\d{3}$/i.test(threadId)) {
|
|
28
|
-
const token = pickId ?? threadId;
|
|
29
|
-
const inbox = await buildCommentInboxPayload({
|
|
30
|
-
projectRoot: paths.root,
|
|
31
|
-
filePath: opts.filePath,
|
|
32
|
-
status: "open",
|
|
33
|
-
});
|
|
34
|
-
const item = resolvePickId(inbox, token);
|
|
35
|
-
if (!item) {
|
|
36
|
-
throw new Error(`Unknown pick id or thread: ${token}. Run: npx ai-spector comments inbox --json`);
|
|
37
|
-
}
|
|
38
|
-
threadId = item.threadId;
|
|
39
|
-
filePath = item.filePath;
|
|
40
|
-
pickId = item.pickId;
|
|
41
|
-
}
|
|
42
|
-
else if (!filePath) {
|
|
43
|
-
const inbox = await buildCommentInboxPayload({ projectRoot: paths.root, status: "open" });
|
|
44
|
-
pickId = pickIdForThread(inbox, threadId);
|
|
45
|
-
}
|
|
46
|
-
return buildCommentPlan({
|
|
47
|
-
projectRoot: paths.root,
|
|
48
|
-
graphPath: paths.graph,
|
|
49
|
-
rulesPath: paths.rulesImpact,
|
|
50
|
-
threadId,
|
|
51
|
-
filePath,
|
|
52
|
-
pickId,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
export async function runCommentsShow(opts) {
|
|
56
|
-
const paths = await resolveProjectPaths(opts.root);
|
|
57
|
-
const thread = opts.filePath
|
|
58
|
-
? await getThread(paths.root, normalizeLogicalPath(opts.filePath), opts.threadId)
|
|
59
|
-
: await findThreadById(paths.root, opts.threadId);
|
|
60
|
-
if (!thread) {
|
|
61
|
-
throw new Error(opts.filePath
|
|
62
|
-
? `Thread not found: ${opts.threadId} under ${normalizeLogicalPath(opts.filePath)}`
|
|
63
|
-
: `Thread not found: ${opts.threadId}`);
|
|
64
|
-
}
|
|
65
|
-
return thread;
|
|
66
|
-
}
|
|
67
|
-
export async function runCommentsResolve(opts) {
|
|
68
|
-
const paths = await resolveProjectPaths(opts.root);
|
|
69
|
-
return resolveThread({
|
|
70
|
-
projectRoot: paths.root,
|
|
71
|
-
logicalPath: normalizeLogicalPath(opts.filePath),
|
|
72
|
-
threadId: opts.threadId,
|
|
73
|
-
resolvedBy: opts.resolvedBy,
|
|
74
|
-
resolvedInCommitSha: opts.commitSha,
|
|
75
|
-
expectedVersion: opts.expectedVersion,
|
|
76
|
-
dryRun: opts.dryRun,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=comments.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/commands/comments.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { loadInMemoryGraph } from "../graph/loadGraph.js";
|
|
2
|
-
import { type ResolvedOrigin } from "../graph/resolve.js";
|
|
3
|
-
import type { ImpactResult } from "ai-spector-graph";
|
|
4
|
-
export interface GraphImpactCliOptions {
|
|
5
|
-
graphPath: string;
|
|
6
|
-
rulesPath: string;
|
|
7
|
-
projectRoot: string;
|
|
8
|
-
originId?: string;
|
|
9
|
-
file?: string;
|
|
10
|
-
heading?: string;
|
|
11
|
-
git?: boolean;
|
|
12
|
-
change: string;
|
|
13
|
-
output?: string;
|
|
14
|
-
}
|
|
15
|
-
export declare function resolveImpactOriginId(g: Awaited<ReturnType<typeof loadInMemoryGraph>>, opts: Pick<GraphImpactCliOptions, "originId" | "file" | "heading">): {
|
|
16
|
-
originId: string;
|
|
17
|
-
resolved?: ResolvedOrigin;
|
|
18
|
-
};
|
|
19
|
-
export declare function runGraphImpactFromGit(g: Awaited<ReturnType<typeof loadInMemoryGraph>>, opts: GraphImpactCliOptions): Promise<ImpactResult>;
|
|
20
|
-
export declare function computeImpactForRegen(root: string, graphPath: string, rulesPath: string, originId?: string): Promise<{
|
|
21
|
-
affectedNodeIds: Set<string>;
|
|
22
|
-
affectedOutputPaths: string[];
|
|
23
|
-
noImpact: boolean;
|
|
24
|
-
reason: string;
|
|
25
|
-
graph: Awaited<ReturnType<typeof loadInMemoryGraph>>;
|
|
26
|
-
}>;
|
|
27
|
-
export declare function runGraphImpact(opts: GraphImpactCliOptions): Promise<ImpactResult>;
|
|
28
|
-
//# sourceMappingURL=graph-impact.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-impact.d.ts","sourceRoot":"","sources":["../../src/commands/graph-impact.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAwBD,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,EAChD,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC,GACjE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAE,CA0BjD;AAED,wBAAsB,qBAAqB,CACzC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,EAChD,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAsEvB;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IACT,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;CACtD,CAAC,CA8CD;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAYvF"}
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { mkdir } from "node:fs/promises";
|
|
2
|
-
import { dirname } from "node:path";
|
|
3
|
-
import { writeJson } from "../util/fs.js";
|
|
4
|
-
import { collectGitDiff } from "../util/git-diff.js";
|
|
5
|
-
import { loadInMemoryGraph } from "../graph/loadGraph.js";
|
|
6
|
-
import { computeImpact, loadImpactRules, mergeImpactResults } from "../graph/impact.js";
|
|
7
|
-
import { parseGitDiffRegions, pickPrimaryImpactOrigin, resolveFromGitDiff, resolveImpactOrigins, } from "../graph/resolve.js";
|
|
8
|
-
const PER_DOMAIN_FILE_RE = /(?:\/|^)(uc|f|ent)-\d+[_-]/i;
|
|
9
|
-
function buildResolveFailureHint(opts) {
|
|
10
|
-
const file = opts.file?.trim();
|
|
11
|
-
if (file && PER_DOMAIN_FILE_RE.test(file) && !opts.heading?.trim()) {
|
|
12
|
-
const slug = file.split("/").pop() ?? file;
|
|
13
|
-
const ucMatch = slug.match(/^(uc|f)-?(\d+)/i);
|
|
14
|
-
const nodeHint = ucMatch ? ` or \`graph impact UC-${ucMatch[2]}\`` : "";
|
|
15
|
-
return (`Could not resolve impact origin for per-domain projection file: ${file}\n` +
|
|
16
|
-
`Per-UC/feature projection files require a heading or domain node id to scope the seed.\n` +
|
|
17
|
-
`Use one of:\n` +
|
|
18
|
-
` npx ai-spector graph impact --git --json (recommended)\n` +
|
|
19
|
-
` npx ai-spector graph impact --file ${file} --heading "<heading text>" --json\n` +
|
|
20
|
-
` npx ai-spector graph impact <nodeId> --json${nodeHint}`);
|
|
21
|
-
}
|
|
22
|
-
return "Could not resolve impact origin. Provide <nodeId>, --file <path> [--heading <text>], or --git.";
|
|
23
|
-
}
|
|
24
|
-
export function resolveImpactOriginId(g, opts) {
|
|
25
|
-
if (opts.originId?.trim()) {
|
|
26
|
-
const id = opts.originId.trim();
|
|
27
|
-
if (!g.nodesById.has(id)) {
|
|
28
|
-
const docNodes = [...g.nodesById.values()]
|
|
29
|
-
.filter((n) => n.type === "document")
|
|
30
|
-
.map((n) => n.id)
|
|
31
|
-
.slice(0, 6);
|
|
32
|
-
const suggestion = docNodes.length > 0
|
|
33
|
-
? `\nDocument ids in current graph:\n${docNodes.map((d) => ` ${d}`).join("\n")}\n` +
|
|
34
|
-
`Run \`npx ai-spector template inspect <pack> --json\` to list all active pack documents.`
|
|
35
|
-
: "";
|
|
36
|
-
throw new Error(`Unknown node id: ${id}${suggestion}`);
|
|
37
|
-
}
|
|
38
|
-
return { originId: id };
|
|
39
|
-
}
|
|
40
|
-
const origins = resolveImpactOrigins(g, {
|
|
41
|
-
file: opts.file,
|
|
42
|
-
heading: opts.heading,
|
|
43
|
-
nodeId: opts.originId,
|
|
44
|
-
});
|
|
45
|
-
const primary = pickPrimaryImpactOrigin(origins);
|
|
46
|
-
if (!primary)
|
|
47
|
-
throw new Error(buildResolveFailureHint(opts));
|
|
48
|
-
return { originId: primary.id, resolved: primary };
|
|
49
|
-
}
|
|
50
|
-
export async function runGraphImpactFromGit(g, opts) {
|
|
51
|
-
const collected = await collectGitDiff(opts.projectRoot);
|
|
52
|
-
if (collected.notRepo) {
|
|
53
|
-
throw new Error("Not a git repository. Describe the change (/impact <description>) or select text in the editor.");
|
|
54
|
-
}
|
|
55
|
-
if (collected.empty) {
|
|
56
|
-
throw new Error("No unstaged or staged changes. Describe the change (/impact <description>) or select text in the editor.");
|
|
57
|
-
}
|
|
58
|
-
const origins = resolveFromGitDiff(g, collected.diff);
|
|
59
|
-
if (origins.length === 0) {
|
|
60
|
-
const files = parseGitDiffRegions(collected.diff).map((r) => r.file);
|
|
61
|
-
const noImpact = {
|
|
62
|
-
origin: { id: "(git diff)", type: "none", change: opts.change },
|
|
63
|
-
regenerate: [],
|
|
64
|
-
review: [],
|
|
65
|
-
affectedOutputPaths: [],
|
|
66
|
-
noTraceabilityImpact: true,
|
|
67
|
-
changedFiles: files,
|
|
68
|
-
};
|
|
69
|
-
if (opts.output) {
|
|
70
|
-
await mkdir(dirname(opts.output), { recursive: true });
|
|
71
|
-
await writeJson(opts.output, noImpact);
|
|
72
|
-
}
|
|
73
|
-
return noImpact;
|
|
74
|
-
}
|
|
75
|
-
const rules = await loadImpactRules(opts.rulesPath);
|
|
76
|
-
const regions = parseGitDiffRegions(collected.diff);
|
|
77
|
-
const seedsByRegion = [];
|
|
78
|
-
for (const region of regions) {
|
|
79
|
-
const regionOrigins = resolveImpactOrigins(g, {
|
|
80
|
-
file: region.file,
|
|
81
|
-
heading: region.heading,
|
|
82
|
-
sectionAnchor: region.sectionAnchor,
|
|
83
|
-
});
|
|
84
|
-
const primary = pickPrimaryImpactOrigin(regionOrigins);
|
|
85
|
-
if (primary)
|
|
86
|
-
seedsByRegion.push(primary);
|
|
87
|
-
}
|
|
88
|
-
const uniqueSeeds = new Map();
|
|
89
|
-
for (const o of seedsByRegion.length > 0 ? seedsByRegion : origins) {
|
|
90
|
-
if (!uniqueSeeds.has(o.id))
|
|
91
|
-
uniqueSeeds.set(o.id, o);
|
|
92
|
-
}
|
|
93
|
-
const results = [...uniqueSeeds.values()].map((seed) => {
|
|
94
|
-
const r = computeImpact(g, seed.id, opts.change, rules);
|
|
95
|
-
r.resolvedFrom = seed;
|
|
96
|
-
return r;
|
|
97
|
-
});
|
|
98
|
-
const gitSeeds = [...uniqueSeeds.values()].map((s) => {
|
|
99
|
-
const region = regions.find((r) => resolveImpactOrigins(g, { file: r.file, heading: r.heading, sectionAnchor: r.sectionAnchor }).some((o) => o.id === s.id));
|
|
100
|
-
return { id: s.id, type: s.type, reason: s.reason, file: region?.file, heading: region?.heading };
|
|
101
|
-
});
|
|
102
|
-
const result = results.length === 1 ? { ...results[0], gitSeeds } : mergeImpactResults(results, gitSeeds);
|
|
103
|
-
if (opts.output) {
|
|
104
|
-
await mkdir(dirname(opts.output), { recursive: true });
|
|
105
|
-
await writeJson(opts.output, result);
|
|
106
|
-
}
|
|
107
|
-
return result;
|
|
108
|
-
}
|
|
109
|
-
export async function computeImpactForRegen(root, graphPath, rulesPath, originId) {
|
|
110
|
-
const g = await loadInMemoryGraph(graphPath);
|
|
111
|
-
let nodeIds;
|
|
112
|
-
let outputPaths = [];
|
|
113
|
-
let reason;
|
|
114
|
-
if (originId) {
|
|
115
|
-
const { originId: resolvedId } = resolveImpactOriginId(g, { originId });
|
|
116
|
-
const rules = await loadImpactRules(rulesPath);
|
|
117
|
-
const result = computeImpact(g, resolvedId, "changed", rules);
|
|
118
|
-
nodeIds = new Set([resolvedId, ...result.regenerate.map((e) => e.id), ...result.review.map((e) => e.id)]);
|
|
119
|
-
outputPaths = result.affectedOutputPaths ?? [];
|
|
120
|
-
reason = `origin: ${resolvedId}`;
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
const collected = await collectGitDiff(root);
|
|
124
|
-
if (collected.notRepo || collected.empty) {
|
|
125
|
-
return { affectedNodeIds: new Set(), affectedOutputPaths: [], noImpact: true, reason: collected.notRepo ? "not a git repo" : "no changes", graph: g };
|
|
126
|
-
}
|
|
127
|
-
const origins = resolveFromGitDiff(g, collected.diff);
|
|
128
|
-
if (origins.length === 0) {
|
|
129
|
-
return { affectedNodeIds: new Set(), affectedOutputPaths: [], noImpact: true, reason: "changed files not in graph", graph: g };
|
|
130
|
-
}
|
|
131
|
-
const rules = await loadImpactRules(rulesPath);
|
|
132
|
-
const regions = parseGitDiffRegions(collected.diff);
|
|
133
|
-
const uniqueSeeds = new Map();
|
|
134
|
-
for (const region of regions) {
|
|
135
|
-
const regionOrigins = resolveImpactOrigins(g, { file: region.file, heading: region.heading, sectionAnchor: region.sectionAnchor });
|
|
136
|
-
const primary = pickPrimaryImpactOrigin(regionOrigins);
|
|
137
|
-
if (primary && !uniqueSeeds.has(primary.id))
|
|
138
|
-
uniqueSeeds.set(primary.id, primary);
|
|
139
|
-
}
|
|
140
|
-
for (const o of origins) {
|
|
141
|
-
if (!uniqueSeeds.has(o.id))
|
|
142
|
-
uniqueSeeds.set(o.id, o);
|
|
143
|
-
}
|
|
144
|
-
nodeIds = new Set();
|
|
145
|
-
for (const seed of uniqueSeeds.values()) {
|
|
146
|
-
const result = computeImpact(g, seed.id, "changed", rules);
|
|
147
|
-
nodeIds.add(seed.id);
|
|
148
|
-
for (const e of result.regenerate)
|
|
149
|
-
nodeIds.add(e.id);
|
|
150
|
-
for (const e of result.review)
|
|
151
|
-
nodeIds.add(e.id);
|
|
152
|
-
outputPaths.push(...(result.affectedOutputPaths ?? []));
|
|
153
|
-
}
|
|
154
|
-
outputPaths = [...new Set(outputPaths)];
|
|
155
|
-
reason = `git diff: ${uniqueSeeds.size} seed(s) — ${[...uniqueSeeds.keys()].join(", ")}`;
|
|
156
|
-
}
|
|
157
|
-
return { affectedNodeIds: nodeIds, affectedOutputPaths: outputPaths, noImpact: false, reason, graph: g };
|
|
158
|
-
}
|
|
159
|
-
export async function runGraphImpact(opts) {
|
|
160
|
-
const g = await loadInMemoryGraph(opts.graphPath);
|
|
161
|
-
if (opts.git)
|
|
162
|
-
return runGraphImpactFromGit(g, opts);
|
|
163
|
-
const { originId, resolved } = resolveImpactOriginId(g, opts);
|
|
164
|
-
const rules = await loadImpactRules(opts.rulesPath);
|
|
165
|
-
const result = computeImpact(g, originId, opts.change, rules);
|
|
166
|
-
if (resolved)
|
|
167
|
-
result.resolvedFrom = resolved;
|
|
168
|
-
if (opts.output) {
|
|
169
|
-
await mkdir(dirname(opts.output), { recursive: true });
|
|
170
|
-
await writeJson(opts.output, result);
|
|
171
|
-
}
|
|
172
|
-
return result;
|
|
173
|
-
}
|
|
174
|
-
//# sourceMappingURL=graph-impact.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-impact.js","sourceRoot":"","sources":["../../src/commands/graph-impact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,GAErB,MAAM,qBAAqB,CAAC;AAe7B,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AAEzD,SAAS,uBAAuB,CAC9B,IAAkE;IAElE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/B,IAAI,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,yBAAyB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,CACL,mEAAmE,IAAI,IAAI;YAC3E,0FAA0F;YAC1F,eAAe;YACf,0FAA0F;YAC1F,wCAAwC,IAAI,sCAAsC;YAClF,gDAAgD,QAAQ,EAAE,CAC3D,CAAC;IACJ,CAAC;IACD,OAAO,gGAAgG,CAAC;AAC1G,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,CAAgD,EAChD,IAAkE;IAElE,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;iBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;iBACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACf,MAAM,UAAU,GACd,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACjB,CAAC,CAAC,qCAAqC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBACjF,0FAA0F;gBAC5F,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,CAAC,EAAE;QACtC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,QAAQ;KACtB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,CAAgD,EAChD,IAA2B;IAE3B,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,0GAA0G,CAC3G,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YAC/D,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;YACV,mBAAmB,EAAE,EAAE;YACvB,oBAAoB,EAAE,IAAI;YAC1B,YAAY,EAAE,KAAK;SACO,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,aAAa,GAAqB,EAAE,CAAC;IAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,EAAE;YAC5C,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACvD,IAAI,OAAO;YAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACnE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrD,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,oBAAoB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CACzH,CAAC;QACF,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACpG,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE1G,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,SAAiB,EACjB,SAAiB,EACjB,QAAiB;IAQjB,MAAM,CAAC,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,OAAoB,CAAC;IACzB,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,IAAI,MAAc,CAAC;IAEnB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,qBAAqB,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9D,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1G,WAAW,GAAG,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;QAC/C,MAAM,GAAG,WAAW,UAAU,EAAE,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACzC,OAAO,EAAE,eAAe,EAAE,IAAI,GAAG,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACxJ,CAAC;QACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,eAAe,EAAE,IAAI,GAAG,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,4BAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACjI,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;QACtD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;YACnI,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;YACvD,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,aAAa,WAAW,CAAC,IAAI,cAAc,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3F,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC3G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAA2B;IAC9D,MAAM,CAAC,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9D,IAAI,QAAQ;QAAE,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC;IAC7C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { ValidationIssue } from "../types.js";
|
|
2
|
-
export interface GraphMergeOptions {
|
|
3
|
-
root?: string;
|
|
4
|
-
inputPath?: string;
|
|
5
|
-
fromKnowledge?: boolean;
|
|
6
|
-
/** Merge agent semantic-links.patch.json (edges only; no structure nodes). */
|
|
7
|
-
semantic?: boolean;
|
|
8
|
-
/** Merge knowledge.json into graph before applying the patch (ensures domain nodes exist). */
|
|
9
|
-
withKnowledge?: boolean;
|
|
10
|
-
graphPath?: string;
|
|
11
|
-
writePatch?: string;
|
|
12
|
-
validate?: boolean;
|
|
13
|
-
dryRun?: boolean;
|
|
14
|
-
}
|
|
15
|
-
export interface GraphMergeResult {
|
|
16
|
-
graphPath: string;
|
|
17
|
-
stats: {
|
|
18
|
-
nodesCreated: number;
|
|
19
|
-
nodesUpdated: number;
|
|
20
|
-
edgesAdded: number;
|
|
21
|
-
nodesSkipped: number;
|
|
22
|
-
};
|
|
23
|
-
dryRun: boolean;
|
|
24
|
-
patchWritten?: string;
|
|
25
|
-
knowledgePreMerged?: boolean;
|
|
26
|
-
knowledgeMissingWarning?: boolean;
|
|
27
|
-
validationOk?: boolean;
|
|
28
|
-
validationIssues?: ValidationIssue[];
|
|
29
|
-
validationWarnCount?: number;
|
|
30
|
-
}
|
|
31
|
-
export declare function runGraphMerge(opts: GraphMergeOptions): Promise<GraphMergeResult>;
|
|
32
|
-
//# sourceMappingURL=graph-merge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-merge.d.ts","sourceRoot":"","sources":["../../src/commands/graph-merge.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8FAA8F;IAC9F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAChG,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyFtF"}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
2
|
-
import { loadInMemoryGraph } from "../graph/loadGraph.js";
|
|
3
|
-
import { isKnowledgePayload, knowledgeHasDomainEntries, knowledgeToPatch, } from "../graph/knowledge.js";
|
|
4
|
-
import { mergePatch, normalizePatch } from "../graph/merge.js";
|
|
5
|
-
import { resolveProjectPaths } from "../util/paths.js";
|
|
6
|
-
import { pathExists, readJson, writeJson } from "../util/fs.js";
|
|
7
|
-
import { validateGraph } from "./validate.js";
|
|
8
|
-
export async function runGraphMerge(opts) {
|
|
9
|
-
const paths = await resolveProjectPaths(opts.root);
|
|
10
|
-
const graphPath = opts.graphPath ?? paths.graph;
|
|
11
|
-
const knowledgePath = join(paths.root, ".ai-spector/.docflow/analysis/knowledge.json");
|
|
12
|
-
const defaultPatchPath = join(paths.root, ".ai-spector/.docflow/extract/patch.json");
|
|
13
|
-
const semanticPatchPath = join(paths.root, ".ai-spector/.docflow/extract/semantic-links.patch.json");
|
|
14
|
-
let inputPath = opts.inputPath;
|
|
15
|
-
if (opts.semantic) {
|
|
16
|
-
inputPath = opts.inputPath ?? semanticPatchPath;
|
|
17
|
-
if (!(await pathExists(inputPath))) {
|
|
18
|
-
throw new Error(`No semantic patch at ${inputPath}. Run /link-graph in Cursor (agent writes semantic-links.patch.json), then merge.`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
else if (opts.fromKnowledge) {
|
|
22
|
-
inputPath = knowledgePath;
|
|
23
|
-
}
|
|
24
|
-
else if (!inputPath) {
|
|
25
|
-
inputPath = (await pathExists(defaultPatchPath)) ? defaultPatchPath : knowledgePath;
|
|
26
|
-
}
|
|
27
|
-
const raw = await readJson(inputPath);
|
|
28
|
-
const patch = await resolvePatch(raw, inputPath);
|
|
29
|
-
const result = {
|
|
30
|
-
graphPath,
|
|
31
|
-
stats: { nodesCreated: 0, nodesUpdated: 0, edgesAdded: 0, nodesSkipped: 0 },
|
|
32
|
-
dryRun: opts.dryRun === true,
|
|
33
|
-
};
|
|
34
|
-
if (opts.writePatch) {
|
|
35
|
-
await writeJson(opts.writePatch, patch);
|
|
36
|
-
result.patchWritten = opts.writePatch;
|
|
37
|
-
}
|
|
38
|
-
const graph = await loadInMemoryGraph(graphPath);
|
|
39
|
-
if (opts.withKnowledge && !opts.fromKnowledge && !opts.semantic) {
|
|
40
|
-
if (await pathExists(knowledgePath)) {
|
|
41
|
-
const rawKnowledge = await readJson(knowledgePath);
|
|
42
|
-
const knowledgePatch = await resolvePatch(rawKnowledge, knowledgePath);
|
|
43
|
-
mergePatch(graph, knowledgePatch);
|
|
44
|
-
result.knowledgePreMerged = true;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
result.knowledgeMissingWarning = true;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const { stats } = mergePatch(graph, patch, {
|
|
51
|
-
semanticOnly: opts.semantic === true,
|
|
52
|
-
patchSourcePath: inputPath,
|
|
53
|
-
});
|
|
54
|
-
result.stats = stats;
|
|
55
|
-
if (opts.dryRun) {
|
|
56
|
-
return result;
|
|
57
|
-
}
|
|
58
|
-
await writeJson(graphPath, graph.toTraceabilityGraph());
|
|
59
|
-
const statePath = join(paths.root, ".ai-spector/.docflow/state.json");
|
|
60
|
-
const state = await readJson(statePath).catch(() => ({
|
|
61
|
-
version: 1,
|
|
62
|
-
analysis: {},
|
|
63
|
-
}));
|
|
64
|
-
const analysis = state.analysis ?? {};
|
|
65
|
-
analysis.graphMergedAt = new Date().toISOString();
|
|
66
|
-
analysis.lastMergeSource = inputPath;
|
|
67
|
-
state.analysis = analysis;
|
|
68
|
-
await writeJson(statePath, state);
|
|
69
|
-
if (opts.validate !== false) {
|
|
70
|
-
const issues = await validateGraph({
|
|
71
|
-
graphPath,
|
|
72
|
-
schemaPath: paths.schema,
|
|
73
|
-
registryPath: paths.registry,
|
|
74
|
-
rulesPath: paths.rulesTraceability,
|
|
75
|
-
});
|
|
76
|
-
const errors = issues.filter((i) => i.severity === "error");
|
|
77
|
-
const warns = issues.filter((i) => i.severity === "warn");
|
|
78
|
-
result.validationIssues = issues;
|
|
79
|
-
result.validationOk = errors.length === 0;
|
|
80
|
-
result.validationWarnCount = warns.length;
|
|
81
|
-
if (errors.length > 0) {
|
|
82
|
-
throw new Error("Graph validation failed after merge");
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return result;
|
|
86
|
-
}
|
|
87
|
-
async function resolvePatch(raw, sourcePath) {
|
|
88
|
-
if (isKnowledgePayload(raw)) {
|
|
89
|
-
const knowledge = raw;
|
|
90
|
-
if (!knowledgeHasDomainEntries(knowledge)) {
|
|
91
|
-
throw new Error(`No domain entries in ${sourcePath} (useCases, features, actors, …). Run /analyze in Cursor first.`);
|
|
92
|
-
}
|
|
93
|
-
return knowledgeToPatch(knowledge);
|
|
94
|
-
}
|
|
95
|
-
const patch = normalizePatch(raw);
|
|
96
|
-
if (patch.nodes.length === 0 && patch.edges.length === 0) {
|
|
97
|
-
throw new Error(`Empty patch in ${sourcePath}`);
|
|
98
|
-
}
|
|
99
|
-
return patch;
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=graph-merge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-merge.js","sourceRoot":"","sources":["../../src/commands/graph-merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { GraphQueryResult } from "ai-spector-graph";
|
|
2
|
-
export interface GraphQueryCliOptions {
|
|
3
|
-
graphPath: string;
|
|
4
|
-
seedId: string;
|
|
5
|
-
direction?: "out" | "in" | "both";
|
|
6
|
-
depth?: number;
|
|
7
|
-
edges?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare function runGraphQuery(opts: GraphQueryCliOptions): Promise<GraphQueryResult>;
|
|
10
|
-
//# sourceMappingURL=graph-query.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-query.d.ts","sourceRoot":"","sources":["../../src/commands/graph-query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwBzF"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { loadInMemoryGraph } from "../graph/loadGraph.js";
|
|
2
|
-
import { querySubgraph } from "../graph/query.js";
|
|
3
|
-
export async function runGraphQuery(opts) {
|
|
4
|
-
const g = await loadInMemoryGraph(opts.graphPath);
|
|
5
|
-
if (!g.nodesById.has(opts.seedId)) {
|
|
6
|
-
const docNodes = [...g.nodesById.values()]
|
|
7
|
-
.filter((n) => n.type === "document")
|
|
8
|
-
.map((n) => n.id);
|
|
9
|
-
const suggestion = docNodes.length > 0
|
|
10
|
-
? `\nDocument ids in the current graph:\n${docNodes.map((d) => ` ${d}`).join("\n")}\n` +
|
|
11
|
-
`\nTip: if you switched packs, run \`npx ai-spector template inspect <pack>\` to list valid seed ids.`
|
|
12
|
-
: "\nThe graph appears empty — run \`npx ai-spector registry build\` then retry.";
|
|
13
|
-
throw new Error(`Unknown node id: ${opts.seedId}${suggestion}`);
|
|
14
|
-
}
|
|
15
|
-
const queryOpts = {
|
|
16
|
-
direction: opts.direction,
|
|
17
|
-
depth: opts.depth,
|
|
18
|
-
};
|
|
19
|
-
if (opts.edges) {
|
|
20
|
-
queryOpts.edgeTypes = opts.edges.split(",").map((s) => s.trim());
|
|
21
|
-
}
|
|
22
|
-
return querySubgraph(g, opts.seedId, queryOpts);
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=graph-query.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-query.js","sourceRoot":"","sources":["../../src/commands/graph-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAqB,MAAM,mBAAmB,CAAC;AAYrE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAA0B;IAC5D,MAAM,CAAC,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAElD,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;aACvC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,MAAM,UAAU,GACd,QAAQ,CAAC,MAAM,GAAG,CAAC;YACjB,CAAC,CAAC,yCAAyC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBACrF,sGAAsG;YACxG,CAAC,CAAC,+EAA+E,CAAC;QACtF,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,SAAS,GAAiB;QAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;IACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAe,CAAC;IACjF,CAAC;IAED,OAAO,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { auditGraphLayers } from "../graph/layer-audit.js";
|
|
2
|
-
import type { LayerAuditReport } from "ai-spector-graph";
|
|
3
|
-
export type GraphLayerReport = Awaited<ReturnType<typeof auditGraphLayers>>;
|
|
4
|
-
export interface GraphReportOptions {
|
|
5
|
-
root?: string;
|
|
6
|
-
graphPath?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare function runGraphReport(opts: GraphReportOptions): Promise<LayerAuditReport>;
|
|
9
|
-
//# sourceMappingURL=graph-report.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-report.d.ts","sourceRoot":"","sources":["../../src/commands/graph-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAKxF"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { auditGraphLayers } from "../graph/layer-audit.js";
|
|
2
|
-
import { loadInMemoryGraph } from "../graph/loadGraph.js";
|
|
3
|
-
import { resolveProjectPaths } from "../util/paths.js";
|
|
4
|
-
export async function runGraphReport(opts) {
|
|
5
|
-
const paths = await resolveProjectPaths(opts.root);
|
|
6
|
-
const graphPath = opts.graphPath ?? paths.graph;
|
|
7
|
-
const graph = await loadInMemoryGraph(graphPath);
|
|
8
|
-
return auditGraphLayers(graph, paths.root);
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=graph-report.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-report.js","sourceRoot":"","sources":["../../src/commands/graph-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAUvD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAwB;IAC3D,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACjD,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { computeKnowledgeStats } from "../visualize/stats.js";
|
|
2
|
-
export interface GraphVisualizeOptions {
|
|
3
|
-
root?: string;
|
|
4
|
-
graphPath?: string;
|
|
5
|
-
knowledgePath?: string;
|
|
6
|
-
output?: string;
|
|
7
|
-
open?: boolean;
|
|
8
|
-
skipKnowledge?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export interface GraphVisualizeResult {
|
|
11
|
-
outputPath: string;
|
|
12
|
-
nodeCount: number;
|
|
13
|
-
edgeCount: number;
|
|
14
|
-
knowledgeStats?: ReturnType<typeof computeKnowledgeStats>;
|
|
15
|
-
}
|
|
16
|
-
export declare function runGraphVisualize(opts: GraphVisualizeOptions): Promise<GraphVisualizeResult>;
|
|
17
|
-
//# sourceMappingURL=graph-visualize.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-visualize.d.ts","sourceRoot":"","sources":["../../src/commands/graph-visualize.ts"],"names":[],"mappings":"AAYA,OAAO,EAAqB,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;CAC3D;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAyClG"}
|