design-graph 0.34.0__tar.gz
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.
- design_graph-0.34.0/.coverage +0 -0
- design_graph-0.34.0/.githooks/post-commit +13 -0
- design_graph-0.34.0/.github/workflows/publish.yml +44 -0
- design_graph-0.34.0/.github/workflows/tests.yml +39 -0
- design_graph-0.34.0/.gitignore +38 -0
- design_graph-0.34.0/.mcp.json +10 -0
- design_graph-0.34.0/Makefile +217 -0
- design_graph-0.34.0/PKG-INFO +575 -0
- design_graph-0.34.0/README.md +558 -0
- design_graph-0.34.0/audit/fixtures/live-item-basic-catalog-notice.html +1 -0
- design_graph-0.34.0/audit/fixtures/live-item-basic-tab.html +1 -0
- design_graph-0.34.0/audit/fixtures/live-item-editor-header.html +1 -0
- design_graph-0.34.0/audit/fixtures/live-item-editor-overlay.html +1 -0
- design_graph-0.34.0/audit/mcp-gap-analysis-item-basic-tab.md +428 -0
- design_graph-0.34.0/audit/prototipo.png +0 -0
- design_graph-0.34.0/audit/sistema.png +0 -0
- design_graph-0.34.0/coverage.xml +4881 -0
- design_graph-0.34.0/diagram.excalidraw +1120 -0
- design_graph-0.34.0/docs/changes/C01-core-parsing/T01-source-loader.md +116 -0
- design_graph-0.34.0/docs/changes/C01-core-parsing/T02-format-detector.md +91 -0
- design_graph-0.34.0/docs/changes/C01-core-parsing/T03-js-parser.md +180 -0
- design_graph-0.34.0/docs/changes/C01-core-parsing/T04-token-extractor.md +152 -0
- design_graph-0.34.0/docs/changes/C01-core-parsing/T05-html-parser.md +189 -0
- design_graph-0.34.0/docs/changes/C01-core-parsing/plan.md +103 -0
- design_graph-0.34.0/docs/changes/C01-core-parsing/spec.md +325 -0
- design_graph-0.34.0/docs/changes/C02-component-extraction/T06-component-extractor.md +243 -0
- design_graph-0.34.0/docs/changes/C02-component-extraction/T07-screen-extractor.md +163 -0
- design_graph-0.34.0/docs/changes/C02-component-extraction/T08-section-extractor.md +209 -0
- design_graph-0.34.0/docs/changes/C02-component-extraction/plan.md +170 -0
- design_graph-0.34.0/docs/changes/C02-component-extraction/spec.md +324 -0
- design_graph-0.34.0/docs/changes/C03-graph-layer/T09-graph-schema.md +105 -0
- design_graph-0.34.0/docs/changes/C03-graph-layer/T10-graph-writer.md +217 -0
- design_graph-0.34.0/docs/changes/C03-graph-layer/T11-graph-reader.md +191 -0
- design_graph-0.34.0/docs/changes/C03-graph-layer/T12-graph-diff.md +167 -0
- design_graph-0.34.0/docs/changes/C03-graph-layer/plan.md +159 -0
- design_graph-0.34.0/docs/changes/C03-graph-layer/spec.md +319 -0
- design_graph-0.34.0/docs/changes/C04-pipeline-mcp/T13-pipeline-coordinator.md +267 -0
- design_graph-0.34.0/docs/changes/C04-pipeline-mcp/T14-mcp-search.md +173 -0
- design_graph-0.34.0/docs/changes/C04-pipeline-mcp/T15-mcp-tools.md +213 -0
- design_graph-0.34.0/docs/changes/C04-pipeline-mcp/plan.md +180 -0
- design_graph-0.34.0/docs/changes/C04-pipeline-mcp/spec.md +235 -0
- design_graph-0.34.0/docs/changes/C05-chunker/T16-chunker.md +222 -0
- design_graph-0.34.0/docs/changes/C05-chunker/plan.md +170 -0
- design_graph-0.34.0/docs/changes/C05-chunker/spec.md +237 -0
- design_graph-0.34.0/docs/changes/C06-concurrency/spec.md +203 -0
- design_graph-0.34.0/docs/changes/C07-reader-query-correctness/T17-reader-transitive-fix.md +114 -0
- design_graph-0.34.0/docs/changes/C07-reader-query-correctness/plan.md +88 -0
- design_graph-0.34.0/docs/changes/C07-reader-query-correctness/spec.md +74 -0
- design_graph-0.34.0/docs/changes/C08-component-discovery-tools/T18-list-components-tool.md +122 -0
- design_graph-0.34.0/docs/changes/C08-component-discovery-tools/T19-get-component-spec-tool.md +182 -0
- design_graph-0.34.0/docs/changes/C08-component-discovery-tools/plan.md +217 -0
- design_graph-0.34.0/docs/changes/C08-component-discovery-tools/spec.md +140 -0
- design_graph-0.34.0/docs/changes/C09-style-token-linkage/T20-style-token-edge.md +193 -0
- design_graph-0.34.0/docs/changes/C09-style-token-linkage/plan.md +110 -0
- design_graph-0.34.0/docs/changes/C09-style-token-linkage/spec.md +115 -0
- design_graph-0.34.0/docs/changes/C10-css-class-resolution/T21-css-class-resolver.md +117 -0
- design_graph-0.34.0/docs/changes/C10-css-class-resolution/plan.md +198 -0
- design_graph-0.34.0/docs/changes/C10-css-class-resolution/spec.md +138 -0
- design_graph-0.34.0/docs/changes/C11-jsx-completeness/T22-jsx-typed-markers.md +177 -0
- design_graph-0.34.0/docs/changes/C11-jsx-completeness/plan.md +182 -0
- design_graph-0.34.0/docs/changes/C11-jsx-completeness/spec.md +107 -0
- design_graph-0.34.0/docs/changes/C12-stateful-interactions/T23-imperative-style-interactions.md +23 -0
- design_graph-0.34.0/docs/changes/C12-stateful-interactions/plan.md +54 -0
- design_graph-0.34.0/docs/changes/C12-stateful-interactions/spec.md +81 -0
- design_graph-0.34.0/docs/changes/C13-interaction-capture-completeness/T24-multi-mutation-handlers.md +27 -0
- design_graph-0.34.0/docs/changes/C13-interaction-capture-completeness/T25-state-toggle-ternary-correlation.md +30 -0
- design_graph-0.34.0/docs/changes/C13-interaction-capture-completeness/T26-digit-suffixed-component-names.md +42 -0
- design_graph-0.34.0/docs/changes/C13-interaction-capture-completeness/plan.md +86 -0
- design_graph-0.34.0/docs/changes/C13-interaction-capture-completeness/spec.md +117 -0
- design_graph-0.34.0/docs/changes/C14-domain-model-value-objects/T27-domain-model-value-objects.md +36 -0
- design_graph-0.34.0/docs/changes/C14-domain-model-value-objects/T29-wire-chunklevel-into-chunker.md +30 -0
- design_graph-0.34.0/docs/changes/C14-domain-model-value-objects/plan.md +55 -0
- design_graph-0.34.0/docs/changes/C14-domain-model-value-objects/spec.md +118 -0
- design_graph-0.34.0/docs/changes/C15-tooltip-text-classification/T28-tooltip-text-classification.md +22 -0
- design_graph-0.34.0/docs/changes/C15-tooltip-text-classification/plan.md +52 -0
- design_graph-0.34.0/docs/changes/C15-tooltip-text-classification/spec.md +70 -0
- design_graph-0.34.0/docs/changes/C16-chunk-export-extraction-reuse/T30-reuse-coordinator-extraction-in-chunk-export.md +31 -0
- design_graph-0.34.0/docs/changes/C16-chunk-export-extraction-reuse/plan.md +63 -0
- design_graph-0.34.0/docs/changes/C16-chunk-export-extraction-reuse/spec.md +77 -0
- design_graph-0.34.0/docs/changes/C17-screen-detection-and-strenum-consolidation/T31-remove-dead-screen-regexes-consolidate-strenum.md +28 -0
- design_graph-0.34.0/docs/changes/C17-screen-detection-and-strenum-consolidation/plan.md +55 -0
- design_graph-0.34.0/docs/changes/C17-screen-detection-and-strenum-consolidation/spec.md +72 -0
- design_graph-0.34.0/docs/changes/C18-mcp-token-efficiency/T32-mcp-token-efficiency.md +37 -0
- design_graph-0.34.0/docs/changes/C18-mcp-token-efficiency/plan.md +78 -0
- design_graph-0.34.0/docs/changes/C18-mcp-token-efficiency/spec.md +113 -0
- design_graph-0.34.0/docs/changes/C19-jsx-variant-disambiguation/T33-jsx-variant-disambiguation.md +31 -0
- design_graph-0.34.0/docs/changes/C19-jsx-variant-disambiguation/plan.md +62 -0
- design_graph-0.34.0/docs/changes/C19-jsx-variant-disambiguation/spec.md +84 -0
- design_graph-0.34.0/docs/changes/C20-search-and-impact-correctness/T34-search-and-impact-correctness.md +24 -0
- design_graph-0.34.0/docs/changes/C20-search-and-impact-correctness/plan.md +58 -0
- design_graph-0.34.0/docs/changes/C20-search-and-impact-correctness/spec.md +89 -0
- design_graph-0.34.0/docs/changes/C21-jsx-marker-balanced-collapse/T35-jsx-marker-balanced-collapse.md +56 -0
- design_graph-0.34.0/docs/changes/C21-jsx-marker-balanced-collapse/plan.md +104 -0
- design_graph-0.34.0/docs/changes/C21-jsx-marker-balanced-collapse/spec.md +112 -0
- design_graph-0.34.0/docs/changes/C22-icon-deduplication/T36-icon-deduplication.md +56 -0
- design_graph-0.34.0/docs/changes/C22-icon-deduplication/plan.md +100 -0
- design_graph-0.34.0/docs/changes/C22-icon-deduplication/spec.md +94 -0
- design_graph-0.34.0/docs/changes/C23-agent-context-fidelity/T37-mcp-search-tokenization.md +40 -0
- design_graph-0.34.0/docs/changes/C23-agent-context-fidelity/T38-jsx-sanitizer-ternary-and-handler-names.md +44 -0
- design_graph-0.34.0/docs/changes/C23-agent-context-fidelity/T39-style-ownership-root-vs-descendant.md +51 -0
- design_graph-0.34.0/docs/changes/C23-agent-context-fidelity/T40-token-label-normalization.md +54 -0
- design_graph-0.34.0/docs/changes/C23-agent-context-fidelity/T41-jsx-snippet-honesty.md +62 -0
- design_graph-0.34.0/docs/changes/C23-agent-context-fidelity/T42-contains-completeness-investigation.md +64 -0
- design_graph-0.34.0/docs/changes/C23-agent-context-fidelity/T43-overlay-screen-classification.md +99 -0
- design_graph-0.34.0/docs/changes/C23-agent-context-fidelity/plan.md +251 -0
- design_graph-0.34.0/docs/changes/C23-agent-context-fidelity/spec.md +353 -0
- design_graph-0.34.0/docs/changes/C24-css-style-resolution-completeness/T44-inner-html-style-tag-extraction.md +45 -0
- design_graph-0.34.0/docs/changes/C24-css-style-resolution-completeness/T45-tag-pseudo-class-selector-resolution.md +64 -0
- design_graph-0.34.0/docs/changes/C24-css-style-resolution-completeness/T46-style-spread-resolution.md +50 -0
- design_graph-0.34.0/docs/changes/C24-css-style-resolution-completeness/plan.md +121 -0
- design_graph-0.34.0/docs/changes/C24-css-style-resolution-completeness/spec.md +225 -0
- design_graph-0.34.0/docs/changes/C25-write-integrity/plan.md +81 -0
- design_graph-0.34.0/docs/changes/C25-write-integrity/spec.md +91 -0
- design_graph-0.34.0/docs/changes/C26-parsing-correctness/plan.md +57 -0
- design_graph-0.34.0/docs/changes/C26-parsing-correctness/spec.md +116 -0
- design_graph-0.34.0/docs/changes/C27-reader-mcp-quick-wins/plan.md +50 -0
- design_graph-0.34.0/docs/changes/C27-reader-mcp-quick-wins/spec.md +114 -0
- design_graph-0.34.0/docs/changes/C28-truncation-as-data/plan.md +70 -0
- design_graph-0.34.0/docs/changes/C28-truncation-as-data/spec.md +115 -0
- design_graph-0.34.0/docs/changes/C29-hover-focus-states/plan.md +65 -0
- design_graph-0.34.0/docs/changes/C29-hover-focus-states/spec.md +109 -0
- design_graph-0.34.0/docs/changes/C30-render-order/plan.md +71 -0
- design_graph-0.34.0/docs/changes/C30-render-order/spec.md +113 -0
- design_graph-0.34.0/docs/changes/C31-mcp-api-expansion/plan.md +82 -0
- design_graph-0.34.0/docs/changes/C31-mcp-api-expansion/spec.md +129 -0
- design_graph-0.34.0/docs/changes/C32-library-icons/plan.md +59 -0
- design_graph-0.34.0/docs/changes/C32-library-icons/spec.md +106 -0
- design_graph-0.34.0/docs/changes/C33-round-trip-validation/plan.md +73 -0
- design_graph-0.34.0/docs/changes/C33-round-trip-validation/spec.md +120 -0
- design_graph-0.34.0/docs/changes/C34-post-audit-fixes/plan.md +80 -0
- design_graph-0.34.0/docs/changes/C34-post-audit-fixes/spec.md +157 -0
- design_graph-0.34.0/docs/changes/C35-media-query-css-scoping/plan.md +191 -0
- design_graph-0.34.0/docs/changes/C35-media-query-css-scoping/spec.md +276 -0
- design_graph-0.34.0/docs/changes/C36-mcp-style-attribution-and-discoverability/plan.md +142 -0
- design_graph-0.34.0/docs/changes/C36-mcp-style-attribution-and-discoverability/spec.md +84 -0
- design_graph-0.34.0/docs/changes/C37-structural-detection-css-resolved-padding/plan.md +72 -0
- design_graph-0.34.0/docs/changes/C37-structural-detection-css-resolved-padding/spec.md +66 -0
- design_graph-0.34.0/docs/changes/C38-mcp-text-recovery-and-root-screen/plan.md +101 -0
- design_graph-0.34.0/docs/changes/C38-mcp-text-recovery-and-root-screen/spec.md +117 -0
- design_graph-0.34.0/docs/changes/C39-referenced-module-data/plan.md +120 -0
- design_graph-0.34.0/docs/changes/C39-referenced-module-data/spec.md +111 -0
- design_graph-0.34.0/docs/changes/C40-object-literal-comment-stripping/plan.md +17 -0
- design_graph-0.34.0/docs/changes/C40-object-literal-comment-stripping/spec.md +65 -0
- design_graph-0.34.0/docs/changes/C41-responsive-styles-full-escape-hatch/plan.md +16 -0
- design_graph-0.34.0/docs/changes/C41-responsive-styles-full-escape-hatch/spec.md +49 -0
- design_graph-0.34.0/docs/changes/C42-semantic-chrome-tags-as-sections/plan.md +37 -0
- design_graph-0.34.0/docs/changes/C42-semantic-chrome-tags-as-sections/spec.md +86 -0
- design_graph-0.34.0/docs/changes/README.md +116 -0
- design_graph-0.34.0/docs/investigation/design-graph-findings.md +68 -0
- design_graph-0.34.0/docs/plan/00-migration-strategy.md +124 -0
- design_graph-0.34.0/docs/plan/01-phase-parsing.md +103 -0
- design_graph-0.34.0/docs/plan/02-phase-extraction.md +170 -0
- design_graph-0.34.0/docs/plan/03-phase-graph.md +159 -0
- design_graph-0.34.0/docs/plan/04-phase-mcp.md +180 -0
- design_graph-0.34.0/docs/plan/05-phase-chunker.md +170 -0
- design_graph-0.34.0/docs/roadmap/v2-ast-based-extraction.md +178 -0
- design_graph-0.34.0/docs/spec/00-overview.md +143 -0
- design_graph-0.34.0/docs/spec/01-parsing.md +325 -0
- design_graph-0.34.0/docs/spec/02-extraction.md +324 -0
- design_graph-0.34.0/docs/spec/03-graph.md +319 -0
- design_graph-0.34.0/docs/spec/04-mcp.md +235 -0
- design_graph-0.34.0/docs/spec/05-chunker.md +237 -0
- design_graph-0.34.0/docs/spec/06-concurrency.md +203 -0
- design_graph-0.34.0/docs/tasks/T01-source-loader.md +116 -0
- design_graph-0.34.0/docs/tasks/T02-format-detector.md +91 -0
- design_graph-0.34.0/docs/tasks/T03-js-parser.md +180 -0
- design_graph-0.34.0/docs/tasks/T04-token-extractor.md +152 -0
- design_graph-0.34.0/docs/tasks/T05-html-parser.md +189 -0
- design_graph-0.34.0/docs/tasks/T06-component-extractor.md +243 -0
- design_graph-0.34.0/docs/tasks/T07-screen-extractor.md +163 -0
- design_graph-0.34.0/docs/tasks/T08-section-extractor.md +209 -0
- design_graph-0.34.0/docs/tasks/T09-graph-schema.md +105 -0
- design_graph-0.34.0/docs/tasks/T10-graph-writer.md +217 -0
- design_graph-0.34.0/docs/tasks/T11-graph-reader.md +191 -0
- design_graph-0.34.0/docs/tasks/T12-graph-diff.md +167 -0
- design_graph-0.34.0/docs/tasks/T13-pipeline-coordinator.md +267 -0
- design_graph-0.34.0/docs/tasks/T14-mcp-search.md +173 -0
- design_graph-0.34.0/docs/tasks/T15-mcp-tools.md +213 -0
- design_graph-0.34.0/docs/tasks/T16-chunker.md +222 -0
- design_graph-0.34.0/docs/tasks/backlog.md +167 -0
- design_graph-0.34.0/mcp-config.example.json +7 -0
- design_graph-0.34.0/prototipo.png +0 -0
- design_graph-0.34.0/pyproject.toml +50 -0
- design_graph-0.34.0/schema.svg +5 -0
- design_graph-0.34.0/scripts/auto_version.py +185 -0
- design_graph-0.34.0/setup.cfg +4 -0
- design_graph-0.34.0/sistema.png +0 -0
- design_graph-0.34.0/src/__init__.py +0 -0
- design_graph-0.34.0/src/design_graph/__init__.py +0 -0
- design_graph-0.34.0/src/design_graph/cli/__init__.py +0 -0
- design_graph-0.34.0/src/design_graph/cli/_logging.py +36 -0
- design_graph-0.34.0/src/design_graph/cli/build.py +586 -0
- design_graph-0.34.0/src/design_graph/cli/databases.py +181 -0
- design_graph-0.34.0/src/design_graph/cli/init.py +295 -0
- design_graph-0.34.0/src/design_graph/cli/query.py +235 -0
- design_graph-0.34.0/src/design_graph/cli/report.py +224 -0
- design_graph-0.34.0/src/design_graph/cli/status.py +230 -0
- design_graph-0.34.0/src/design_graph/cli/validate.py +326 -0
- design_graph-0.34.0/src/design_graph/core/__init__.py +0 -0
- design_graph-0.34.0/src/design_graph/core/constants.py +205 -0
- design_graph-0.34.0/src/design_graph/core/graph_catalog.py +280 -0
- design_graph-0.34.0/src/design_graph/core/models.py +786 -0
- design_graph-0.34.0/src/design_graph/core/patterns.py +367 -0
- design_graph-0.34.0/src/design_graph/extraction/__init__.py +0 -0
- design_graph-0.34.0/src/design_graph/extraction/alias_extractor.py +79 -0
- design_graph-0.34.0/src/design_graph/extraction/chunker.py +247 -0
- design_graph-0.34.0/src/design_graph/extraction/component_extractor.py +639 -0
- design_graph-0.34.0/src/design_graph/extraction/icon_extractor.py +81 -0
- design_graph-0.34.0/src/design_graph/extraction/jsx_sanitizer.py +174 -0
- design_graph-0.34.0/src/design_graph/extraction/module_data_extractor.py +95 -0
- design_graph-0.34.0/src/design_graph/extraction/module_text_extractor.py +113 -0
- design_graph-0.34.0/src/design_graph/extraction/plain_html_component_extractor.py +164 -0
- design_graph-0.34.0/src/design_graph/extraction/prop_extractor.py +137 -0
- design_graph-0.34.0/src/design_graph/extraction/screen_extractor.py +187 -0
- design_graph-0.34.0/src/design_graph/extraction/section_extractor.py +625 -0
- design_graph-0.34.0/src/design_graph/extraction/visual_function.py +23 -0
- design_graph-0.34.0/src/design_graph/graph/__init__.py +0 -0
- design_graph-0.34.0/src/design_graph/graph/diff.py +50 -0
- design_graph-0.34.0/src/design_graph/graph/reader.py +1602 -0
- design_graph-0.34.0/src/design_graph/graph/schema.py +210 -0
- design_graph-0.34.0/src/design_graph/graph/writer.py +713 -0
- design_graph-0.34.0/src/design_graph/mcp/__init__.py +0 -0
- design_graph-0.34.0/src/design_graph/mcp/aliases.py +67 -0
- design_graph-0.34.0/src/design_graph/mcp/metrics.py +222 -0
- design_graph-0.34.0/src/design_graph/mcp/search.py +214 -0
- design_graph-0.34.0/src/design_graph/mcp/server.py +352 -0
- design_graph-0.34.0/src/design_graph/mcp/tools.py +1942 -0
- design_graph-0.34.0/src/design_graph/parsing/__init__.py +0 -0
- design_graph-0.34.0/src/design_graph/parsing/css_class_resolver.py +666 -0
- design_graph-0.34.0/src/design_graph/parsing/format_detector.py +64 -0
- design_graph-0.34.0/src/design_graph/parsing/html_parser.py +230 -0
- design_graph-0.34.0/src/design_graph/parsing/js_parser.py +700 -0
- design_graph-0.34.0/src/design_graph/parsing/palette_extractor.py +113 -0
- design_graph-0.34.0/src/design_graph/parsing/source_loader.py +203 -0
- design_graph-0.34.0/src/design_graph/parsing/token_extractor.py +426 -0
- design_graph-0.34.0/src/design_graph/paths.py +67 -0
- design_graph-0.34.0/src/design_graph/pipeline/__init__.py +0 -0
- design_graph-0.34.0/src/design_graph/pipeline/build_progress.py +223 -0
- design_graph-0.34.0/src/design_graph/pipeline/coordinator.py +440 -0
- design_graph-0.34.0/src/design_graph/pipeline/state.py +199 -0
- design_graph-0.34.0/src/design_graph/resources/skills/design-graph-ui-context/SKILL.md +124 -0
- design_graph-0.34.0/src/design_graph/workspace.py +113 -0
- design_graph-0.34.0/src/design_graph.egg-info/PKG-INFO +575 -0
- design_graph-0.34.0/src/design_graph.egg-info/SOURCES.txt +357 -0
- design_graph-0.34.0/src/design_graph.egg-info/dependency_links.txt +1 -0
- design_graph-0.34.0/src/design_graph.egg-info/entry_points.txt +4 -0
- design_graph-0.34.0/src/design_graph.egg-info/requires.txt +10 -0
- design_graph-0.34.0/src/design_graph.egg-info/scm_file_list.json +353 -0
- design_graph-0.34.0/src/design_graph.egg-info/scm_version.json +8 -0
- design_graph-0.34.0/src/design_graph.egg-info/top_level.txt +1 -0
- design_graph-0.34.0/tests/__init__.py +0 -0
- design_graph-0.34.0/tests/conftest.py +19 -0
- design_graph-0.34.0/tests/fixtures/arrow_screen.html +29 -0
- design_graph-0.34.0/tests/fixtures/large_bundle.html +687 -0
- design_graph-0.34.0/tests/fixtures/plain.html +82 -0
- design_graph-0.34.0/tests/fixtures/root_screen_with_prefix_component.html +20 -0
- design_graph-0.34.0/tests/fixtures/simple.html +42 -0
- design_graph-0.34.0/tests/integration/__init__.py +0 -0
- design_graph-0.34.0/tests/integration/test_cli_end_to_end.py +354 -0
- design_graph-0.34.0/tests/integration/test_icon_deduplication_pipeline.py +83 -0
- design_graph-0.34.0/tests/integration/test_large_prototype_stress.py +185 -0
- design_graph-0.34.0/tests/integration/test_mcp_e2e.py +408 -0
- design_graph-0.34.0/tests/integration/test_pipeline.py +100 -0
- design_graph-0.34.0/tests/integration/test_plain_html_pipeline.py +173 -0
- design_graph-0.34.0/tests/integration/test_report_e2e.py +188 -0
- design_graph-0.34.0/tests/integration/test_status_command_e2e.py +176 -0
- design_graph-0.34.0/tests/test_architecture_guardrails.py +384 -0
- design_graph-0.34.0/tests/unit/__init__.py +0 -0
- design_graph-0.34.0/tests/unit/cli/__init__.py +0 -0
- design_graph-0.34.0/tests/unit/cli/test_build_cli.py +254 -0
- design_graph-0.34.0/tests/unit/cli/test_database_maintenance_cli.py +65 -0
- design_graph-0.34.0/tests/unit/cli/test_init_cli.py +257 -0
- design_graph-0.34.0/tests/unit/cli/test_json_output.py +213 -0
- design_graph-0.34.0/tests/unit/cli/test_query_cli.py +247 -0
- design_graph-0.34.0/tests/unit/cli/test_report_builder.py +258 -0
- design_graph-0.34.0/tests/unit/cli/test_report_cli.py +150 -0
- design_graph-0.34.0/tests/unit/cli/test_status_command.py +246 -0
- design_graph-0.34.0/tests/unit/cli/test_validate_coverage.py +262 -0
- design_graph-0.34.0/tests/unit/cli/test_version_flag.py +34 -0
- design_graph-0.34.0/tests/unit/core/__init__.py +0 -0
- design_graph-0.34.0/tests/unit/core/test_graph_catalog.py +123 -0
- design_graph-0.34.0/tests/unit/core/test_models.py +511 -0
- design_graph-0.34.0/tests/unit/extraction/__init__.py +0 -0
- design_graph-0.34.0/tests/unit/extraction/test_alias_extractor.py +101 -0
- design_graph-0.34.0/tests/unit/extraction/test_chunker.py +217 -0
- design_graph-0.34.0/tests/unit/extraction/test_chunker_edge_cases.py +158 -0
- design_graph-0.34.0/tests/unit/extraction/test_component_extractor.py +819 -0
- design_graph-0.34.0/tests/unit/extraction/test_component_extractor_single_pass_guards.py +774 -0
- design_graph-0.34.0/tests/unit/extraction/test_component_prop_extractor.py +125 -0
- design_graph-0.34.0/tests/unit/extraction/test_icon_extractor.py +95 -0
- design_graph-0.34.0/tests/unit/extraction/test_jsx_sanitizer.py +293 -0
- design_graph-0.34.0/tests/unit/extraction/test_module_data_extractor.py +79 -0
- design_graph-0.34.0/tests/unit/extraction/test_module_text_extractor.py +165 -0
- design_graph-0.34.0/tests/unit/extraction/test_plain_html_component_extractor.py +166 -0
- design_graph-0.34.0/tests/unit/extraction/test_plain_html_extractor_deduplication.py +113 -0
- design_graph-0.34.0/tests/unit/extraction/test_screen_extractor.py +224 -0
- design_graph-0.34.0/tests/unit/extraction/test_section_extractor.py +467 -0
- design_graph-0.34.0/tests/unit/extraction/test_section_extractor_fallbacks.py +240 -0
- design_graph-0.34.0/tests/unit/extraction/test_section_extractor_list_markup.py +220 -0
- design_graph-0.34.0/tests/unit/extraction/test_section_extractor_semantic.py +134 -0
- design_graph-0.34.0/tests/unit/graph/__init__.py +0 -0
- design_graph-0.34.0/tests/unit/graph/test_component_prop_graph.py +165 -0
- design_graph-0.34.0/tests/unit/graph/test_layout_profile_queries.py +308 -0
- design_graph-0.34.0/tests/unit/graph/test_reader_advanced_queries.py +707 -0
- design_graph-0.34.0/tests/unit/graph/test_referenced_data_graph.py +75 -0
- design_graph-0.34.0/tests/unit/graph/test_schema_and_diff.py +162 -0
- design_graph-0.34.0/tests/unit/graph/test_schema_error_paths.py +72 -0
- design_graph-0.34.0/tests/unit/graph/test_screen_full_query.py +437 -0
- design_graph-0.34.0/tests/unit/graph/test_section_style_nodes.py +136 -0
- design_graph-0.34.0/tests/unit/graph/test_section_text_nodes.py +169 -0
- design_graph-0.34.0/tests/unit/graph/test_shared_class_styles.py +92 -0
- design_graph-0.34.0/tests/unit/graph/test_write_session.py +182 -0
- design_graph-0.34.0/tests/unit/graph/test_writer_deduplication_guards.py +385 -0
- design_graph-0.34.0/tests/unit/graph/test_writer_reader.py +1070 -0
- design_graph-0.34.0/tests/unit/mcp/__init__.py +0 -0
- design_graph-0.34.0/tests/unit/mcp/test_capped_jsx.py +54 -0
- design_graph-0.34.0/tests/unit/mcp/test_component_props_tool.py +64 -0
- design_graph-0.34.0/tests/unit/mcp/test_graph_directory_snapshot.py +68 -0
- design_graph-0.34.0/tests/unit/mcp/test_layout_tool.py +117 -0
- design_graph-0.34.0/tests/unit/mcp/test_mcp_reload.py +121 -0
- design_graph-0.34.0/tests/unit/mcp/test_metrics.py +233 -0
- design_graph-0.34.0/tests/unit/mcp/test_prop_default_honesty.py +93 -0
- design_graph-0.34.0/tests/unit/mcp/test_screen_full_tool.py +244 -0
- design_graph-0.34.0/tests/unit/mcp/test_screen_structure_gap_notice.py +87 -0
- design_graph-0.34.0/tests/unit/mcp/test_search.py +457 -0
- design_graph-0.34.0/tests/unit/mcp/test_server_dispatch.py +38 -0
- design_graph-0.34.0/tests/unit/mcp/test_server_metrics_instrumentation.py +146 -0
- design_graph-0.34.0/tests/unit/mcp/test_server_sdk_wiring.py +77 -0
- design_graph-0.34.0/tests/unit/mcp/test_server_tool_exception_path.py +77 -0
- design_graph-0.34.0/tests/unit/mcp/test_style_dedup.py +110 -0
- design_graph-0.34.0/tests/unit/mcp/test_style_extraction_gap.py +42 -0
- design_graph-0.34.0/tests/unit/mcp/test_style_gap_notice.py +110 -0
- design_graph-0.34.0/tests/unit/mcp/test_tools.py +948 -0
- design_graph-0.34.0/tests/unit/mcp/test_tools_full_coverage.py +743 -0
- design_graph-0.34.0/tests/unit/parsing/__init__.py +0 -0
- design_graph-0.34.0/tests/unit/parsing/test_bundled_react_extraction.py +363 -0
- design_graph-0.34.0/tests/unit/parsing/test_css_class_resolver.py +609 -0
- design_graph-0.34.0/tests/unit/parsing/test_format_detector.py +84 -0
- design_graph-0.34.0/tests/unit/parsing/test_html_parser.py +137 -0
- design_graph-0.34.0/tests/unit/parsing/test_html_parser_edge_cases.py +227 -0
- design_graph-0.34.0/tests/unit/parsing/test_js_parser.py +706 -0
- design_graph-0.34.0/tests/unit/parsing/test_palette_extractor.py +122 -0
- design_graph-0.34.0/tests/unit/parsing/test_parsing_edge_cases.py +131 -0
- design_graph-0.34.0/tests/unit/parsing/test_source_loader.py +167 -0
- design_graph-0.34.0/tests/unit/parsing/test_token_extractor.py +503 -0
- design_graph-0.34.0/tests/unit/paths/__init__.py +0 -0
- design_graph-0.34.0/tests/unit/paths/test_graph_directory_resolution.py +176 -0
- design_graph-0.34.0/tests/unit/pipeline/__init__.py +0 -0
- design_graph-0.34.0/tests/unit/pipeline/test_build_progress.py +283 -0
- design_graph-0.34.0/tests/unit/pipeline/test_build_state_persistence.py +243 -0
- design_graph-0.34.0/tests/unit/pipeline/test_build_state_repository.py +59 -0
- design_graph-0.34.0/tests/unit/pipeline/test_coordinator_edge_paths.py +437 -0
- design_graph-0.34.0/tests/unit/pipeline/test_extraction_progress.py +211 -0
- design_graph-0.34.0/tests/unit/pipeline/test_kuzu_version_guard.py +76 -0
- design_graph-0.34.0/tests/unit/pipeline/test_plain_html_routing.py +142 -0
- design_graph-0.34.0/tests/unit/scripts/__init__.py +0 -0
- design_graph-0.34.0/tests/unit/scripts/test_auto_version.py +197 -0
- design_graph-0.34.0/tests/unit/test_graph_workspace.py +67 -0
- design_graph-0.34.0/watch_prototype.sh +31 -0
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
# post-commit hook — auto-tags the repo and updates README version badge.
|
|
3
|
+
# Install via: make install-hooks (sets core.hooksPath = .githooks)
|
|
4
|
+
#
|
|
5
|
+
# Lock file prevents recursion: the version-bump commit re-triggers this hook,
|
|
6
|
+
# but exits immediately when the lock is present.
|
|
7
|
+
LOCK=/tmp/.design_graph_version_lock
|
|
8
|
+
if [ -f "$LOCK" ]; then exit 0; fi
|
|
9
|
+
touch "$LOCK"
|
|
10
|
+
python3 scripts/auto_version.py
|
|
11
|
+
STATUS=$?
|
|
12
|
+
rm -f "$LOCK"
|
|
13
|
+
exit $STATUS
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- uses: actions/checkout@v4
|
|
12
|
+
with:
|
|
13
|
+
fetch-depth: 0 # full history so setuptools-scm can read tags
|
|
14
|
+
|
|
15
|
+
- uses: actions/setup-python@v5
|
|
16
|
+
with:
|
|
17
|
+
python-version: "3.12"
|
|
18
|
+
|
|
19
|
+
- name: Install build tooling
|
|
20
|
+
run: pip install build
|
|
21
|
+
|
|
22
|
+
- name: Build sdist and wheel
|
|
23
|
+
run: python -m build
|
|
24
|
+
|
|
25
|
+
- name: Upload build artifacts
|
|
26
|
+
uses: actions/upload-artifact@v4
|
|
27
|
+
with:
|
|
28
|
+
name: dist
|
|
29
|
+
path: dist/
|
|
30
|
+
|
|
31
|
+
publish:
|
|
32
|
+
needs: build
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
environment: pypi
|
|
35
|
+
permissions:
|
|
36
|
+
id-token: write # required for PyPI trusted publishing (OIDC)
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/download-artifact@v4
|
|
39
|
+
with:
|
|
40
|
+
name: dist
|
|
41
|
+
path: dist/
|
|
42
|
+
|
|
43
|
+
- name: Publish to PyPI
|
|
44
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
fetch-depth: 0 # full history so setuptools-scm can read tags
|
|
20
|
+
|
|
21
|
+
- uses: actions/setup-python@v5
|
|
22
|
+
with:
|
|
23
|
+
python-version: ${{ matrix.python-version }}
|
|
24
|
+
|
|
25
|
+
- name: Install package and dev dependencies
|
|
26
|
+
run: pip install -e ".[dev]"
|
|
27
|
+
|
|
28
|
+
- name: Check architecture guardrails (G1-G11)
|
|
29
|
+
run: pytest tests/test_architecture_guardrails.py -v --tb=short
|
|
30
|
+
|
|
31
|
+
- name: Run tests with coverage
|
|
32
|
+
run: pytest tests/ --cov=. --cov-report=term-missing --cov-report=xml -v
|
|
33
|
+
|
|
34
|
+
- name: Upload coverage report
|
|
35
|
+
uses: codecov/codecov-action@v4
|
|
36
|
+
if: matrix.python-version == '3.12'
|
|
37
|
+
with:
|
|
38
|
+
file: ./coverage.xml
|
|
39
|
+
fail_ci_if_error: false
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Graph databases (generated, can be large)
|
|
2
|
+
*.db
|
|
3
|
+
*.db/
|
|
4
|
+
.graph-state.json
|
|
5
|
+
graph-diff.md
|
|
6
|
+
|
|
7
|
+
# Private prototypes loaded for local testing (never commit these)
|
|
8
|
+
/*.html
|
|
9
|
+
|
|
10
|
+
# Generated context directories
|
|
11
|
+
agent-context/
|
|
12
|
+
|
|
13
|
+
# Personal MCP configs (contain local paths)
|
|
14
|
+
claude_mcp_config.json
|
|
15
|
+
*.local.json
|
|
16
|
+
|
|
17
|
+
# Python
|
|
18
|
+
_version.py
|
|
19
|
+
__pycache__/
|
|
20
|
+
*.pyc
|
|
21
|
+
*.pyo
|
|
22
|
+
*.egg-info/
|
|
23
|
+
dist/
|
|
24
|
+
build/
|
|
25
|
+
.venv/
|
|
26
|
+
venv/
|
|
27
|
+
*.egg
|
|
28
|
+
.eggs/
|
|
29
|
+
|
|
30
|
+
# OS
|
|
31
|
+
.DS_Store
|
|
32
|
+
Thumbs.db
|
|
33
|
+
|
|
34
|
+
# Editor
|
|
35
|
+
.idea/
|
|
36
|
+
.vscode/
|
|
37
|
+
*.swp
|
|
38
|
+
*.swo
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
PROTO ?= $(shell ls *.html 2>/dev/null | head -1)
|
|
2
|
+
DB_DIR ?= $(shell PYTHONPATH=$(CONTEXT)/src python3 -c "from design_graph.paths import resolve_graph_dir; print(resolve_graph_dir())" 2>/dev/null || echo "$(HOME)/.local/share/design-graph")
|
|
3
|
+
GRAPH_DB ?= $(DB_DIR)/$(basename $(PROTO)).db
|
|
4
|
+
MCP_PID := /tmp/design-mcp.pid
|
|
5
|
+
MCP_LOG := /tmp/design-mcp.log
|
|
6
|
+
PYTHON := python3
|
|
7
|
+
|
|
8
|
+
# Resolve the directory where this Makefile lives (works from any cwd)
|
|
9
|
+
CONTEXT := $(shell dirname "$(abspath $(lastword $(MAKEFILE_LIST)))")
|
|
10
|
+
|
|
11
|
+
# Commands are provided by the package installation (pip/pipx/editable install).
|
|
12
|
+
DESIGN_GRAPH := design-graph
|
|
13
|
+
DESIGN_MCP := design-mcp
|
|
14
|
+
DESIGN_QUERY := design-query
|
|
15
|
+
|
|
16
|
+
.DEFAULT_GOAL := help
|
|
17
|
+
|
|
18
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
19
|
+
help:
|
|
20
|
+
@echo ""
|
|
21
|
+
@echo " design-graph"
|
|
22
|
+
@echo ""
|
|
23
|
+
@echo " Graph"
|
|
24
|
+
@echo " make build PROTO=file.html Build / update the graph"
|
|
25
|
+
@echo " make diff PROTO=file.html Show what changed since last build"
|
|
26
|
+
@echo " make rebuild PROTO=file.html Force a full rebuild"
|
|
27
|
+
@echo " make databases List graph databases"
|
|
28
|
+
@echo " make use-db DOC='prototype' Select the default prototype"
|
|
29
|
+
@echo " make remove-db DOC='prototype' Remove a graph and its state"
|
|
30
|
+
@echo " make prune-dbs Preview orphan cleanup"
|
|
31
|
+
@echo ""
|
|
32
|
+
@echo " MCP Server"
|
|
33
|
+
@echo " make start Start MCP server in background"
|
|
34
|
+
@echo " make stop Stop MCP server"
|
|
35
|
+
@echo " make restart Restart MCP server"
|
|
36
|
+
@echo " make status Check if running"
|
|
37
|
+
@echo " make logs Tail server logs"
|
|
38
|
+
@echo ""
|
|
39
|
+
@echo " Direct queries (no Cursor needed)"
|
|
40
|
+
@echo " make screens List all screens"
|
|
41
|
+
@echo " make tokens List color tokens"
|
|
42
|
+
@echo " make search Q='button' Search the graph"
|
|
43
|
+
@echo " make inspect C='SectionCard' Component details"
|
|
44
|
+
@echo " make impact C='SectionCard' Impact analysis"
|
|
45
|
+
@echo " make screen S='RestaurantsPage' Screen details"
|
|
46
|
+
@echo ""
|
|
47
|
+
@echo " Developer setup"
|
|
48
|
+
@echo " make install-hooks Install git hooks (auto-versioning)"
|
|
49
|
+
@echo " make push Push commits + version tags to GitHub"
|
|
50
|
+
@echo " make version Show current and projected next version"
|
|
51
|
+
@echo " make release Push + publish a GitHub release (triggers PyPI)"
|
|
52
|
+
@echo ""
|
|
53
|
+
@echo " Maintenance"
|
|
54
|
+
@echo " make list-graphs List available graphs"
|
|
55
|
+
@echo " make clean-graph DB=~/graphs/x.db Remove a graph"
|
|
56
|
+
@echo " make clean-all Remove all graphs"
|
|
57
|
+
@echo ""
|
|
58
|
+
|
|
59
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
60
|
+
# Graph
|
|
61
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
62
|
+
|
|
63
|
+
build:
|
|
64
|
+
@test -n "$(PROTO)" || (echo "Error: PROTO not set. Ex: make build PROTO=file.html" && exit 1)
|
|
65
|
+
@test -f "$(PROTO)" || (echo "Error: file '$(PROTO)' not found" && exit 1)
|
|
66
|
+
@mkdir -p $(DB_DIR)
|
|
67
|
+
$(DESIGN_GRAPH) "$(PROTO)" --db $(GRAPH_DB)
|
|
68
|
+
|
|
69
|
+
diff:
|
|
70
|
+
@test -n "$(PROTO)" || (echo "Error: PROTO not set." && exit 1)
|
|
71
|
+
$(DESIGN_GRAPH) "$(PROTO)" --db $(GRAPH_DB) --diff
|
|
72
|
+
|
|
73
|
+
rebuild:
|
|
74
|
+
@test -n "$(PROTO)" || (echo "Error: PROTO not set." && exit 1)
|
|
75
|
+
$(DESIGN_GRAPH) "$(PROTO)" --db $(GRAPH_DB) --force
|
|
76
|
+
|
|
77
|
+
databases:
|
|
78
|
+
@GRAPH_DIR=$(DB_DIR) $(DESIGN_GRAPH) db list
|
|
79
|
+
|
|
80
|
+
use-db:
|
|
81
|
+
@test -n "$(DOC)" || (echo "Usage: make use-db DOC='prototype'" && exit 1)
|
|
82
|
+
@GRAPH_DIR=$(DB_DIR) $(DESIGN_GRAPH) db use "$(DOC)"
|
|
83
|
+
|
|
84
|
+
remove-db:
|
|
85
|
+
@test -n "$(DOC)" || (echo "Usage: make remove-db DOC='prototype'" && exit 1)
|
|
86
|
+
@GRAPH_DIR=$(DB_DIR) $(DESIGN_GRAPH) db remove "$(DOC)"
|
|
87
|
+
|
|
88
|
+
prune-dbs:
|
|
89
|
+
@GRAPH_DIR=$(DB_DIR) $(DESIGN_GRAPH) db prune --dry-run
|
|
90
|
+
|
|
91
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
92
|
+
# MCP Server
|
|
93
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
94
|
+
|
|
95
|
+
start:
|
|
96
|
+
@if [ -f $(MCP_PID) ] && kill -0 $$(cat $(MCP_PID)) 2>/dev/null; then \
|
|
97
|
+
echo "MCP already running (PID $$(cat $(MCP_PID)))"; \
|
|
98
|
+
else \
|
|
99
|
+
echo "Note: if Cursor is open with MCP active, the DB lock will prevent a second server."; \
|
|
100
|
+
GRAPH_DIR=$(DB_DIR) $(DESIGN_MCP) < /dev/null >> $(MCP_LOG) 2>&1 & \
|
|
101
|
+
echo $$! > $(MCP_PID); \
|
|
102
|
+
sleep 2; \
|
|
103
|
+
if kill -0 $$(cat $(MCP_PID)) 2>/dev/null; then \
|
|
104
|
+
echo "MCP started — PID $$(cat $(MCP_PID)) | make logs"; \
|
|
105
|
+
else \
|
|
106
|
+
echo "MCP failed to start — Cursor may already hold the DB lock. See: make logs"; \
|
|
107
|
+
rm -f $(MCP_PID); \
|
|
108
|
+
fi; \
|
|
109
|
+
fi
|
|
110
|
+
|
|
111
|
+
stop:
|
|
112
|
+
@if [ -f $(MCP_PID) ]; then \
|
|
113
|
+
PID=$$(cat $(MCP_PID)); \
|
|
114
|
+
if kill -0 $$PID 2>/dev/null; then \
|
|
115
|
+
kill $$PID && echo "MCP stopped (PID $$PID)."; \
|
|
116
|
+
else \
|
|
117
|
+
echo "PID $$PID was not running."; \
|
|
118
|
+
fi; \
|
|
119
|
+
rm -f $(MCP_PID); \
|
|
120
|
+
else \
|
|
121
|
+
STRAY=$$(pgrep -f mcp_server.py); \
|
|
122
|
+
if [ -n "$$STRAY" ]; then kill $$STRAY && echo "MCP stopped (PID $$STRAY)."; \
|
|
123
|
+
else echo "MCP is not running."; fi; \
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
restart: stop start
|
|
127
|
+
|
|
128
|
+
status:
|
|
129
|
+
@if [ -f $(MCP_PID) ] && kill -0 $$(cat $(MCP_PID)) 2>/dev/null; then \
|
|
130
|
+
echo "MCP running (PID $$(cat $(MCP_PID)))"; \
|
|
131
|
+
ls $(DB_DIR)/*.db 2>/dev/null || echo " (no graphs in $(DB_DIR))"; \
|
|
132
|
+
else \
|
|
133
|
+
echo "MCP is not running"; \
|
|
134
|
+
fi
|
|
135
|
+
|
|
136
|
+
logs:
|
|
137
|
+
@tail -f $(MCP_LOG)
|
|
138
|
+
|
|
139
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
140
|
+
# Direct queries
|
|
141
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
142
|
+
|
|
143
|
+
screens:
|
|
144
|
+
@GRAPH_DIR=$(DB_DIR) $(DESIGN_QUERY) screens
|
|
145
|
+
|
|
146
|
+
tokens:
|
|
147
|
+
@GRAPH_DIR=$(DB_DIR) $(DESIGN_QUERY) tokens color
|
|
148
|
+
|
|
149
|
+
search:
|
|
150
|
+
@test -n "$(Q)" || (echo "Usage: make search Q='term'" && exit 1)
|
|
151
|
+
@GRAPH_DIR=$(DB_DIR) $(DESIGN_QUERY) search $(Q)
|
|
152
|
+
|
|
153
|
+
inspect:
|
|
154
|
+
@test -n "$(C)" || (echo "Usage: make inspect C='ComponentName'" && exit 1)
|
|
155
|
+
@GRAPH_DIR=$(DB_DIR) $(DESIGN_QUERY) inspect $(C)
|
|
156
|
+
|
|
157
|
+
impact:
|
|
158
|
+
@test -n "$(C)" || (echo "Usage: make impact C='ComponentName'" && exit 1)
|
|
159
|
+
@GRAPH_DIR=$(DB_DIR) $(DESIGN_QUERY) impact $(C)
|
|
160
|
+
|
|
161
|
+
screen:
|
|
162
|
+
@test -n "$(S)" || (echo "Usage: make screen S='ScreenName'" && exit 1)
|
|
163
|
+
@GRAPH_DIR=$(DB_DIR) $(DESIGN_QUERY) screen $(S)
|
|
164
|
+
|
|
165
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
166
|
+
# Developer setup
|
|
167
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
168
|
+
|
|
169
|
+
install-hooks:
|
|
170
|
+
git config core.hooksPath .githooks
|
|
171
|
+
git config push.followTags true
|
|
172
|
+
@echo "Git hooks installed — post-commit will auto-tag versions."
|
|
173
|
+
@echo "push.followTags enabled — 'git push' will now include annotated tags."
|
|
174
|
+
@echo "Run 'git config --unset core.hooksPath' to remove hooks."
|
|
175
|
+
|
|
176
|
+
push:
|
|
177
|
+
@echo "Pushing commits and all annotated version tags…"
|
|
178
|
+
git push --follow-tags
|
|
179
|
+
@echo "Done. pip install --upgrade git+<url> will now see the latest version."
|
|
180
|
+
|
|
181
|
+
version:
|
|
182
|
+
@python scripts/auto_version.py --dry-run 2>/dev/null || \
|
|
183
|
+
python3 -c "import subprocess; print(subprocess.run(['git','describe','--tags','--abbrev=0'],capture_output=True,text=True).stdout.strip() or '(no tags yet)')"
|
|
184
|
+
|
|
185
|
+
release:
|
|
186
|
+
@command -v gh >/dev/null 2>&1 || (echo "Error: GitHub CLI 'gh' not found. Install: https://cli.github.com" && exit 1)
|
|
187
|
+
@TAG=$$(git describe --tags --abbrev=0 2>/dev/null); \
|
|
188
|
+
test -n "$$TAG" || (echo "Error: no version tag found yet. Commit with a feat/fix/chore/refactor prefix first." && exit 1); \
|
|
189
|
+
git push --follow-tags; \
|
|
190
|
+
if gh release view $$TAG >/dev/null 2>&1; then \
|
|
191
|
+
echo "Release $$TAG already exists on GitHub."; \
|
|
192
|
+
else \
|
|
193
|
+
echo "Publishing GitHub release $$TAG (this triggers the PyPI publish workflow)…"; \
|
|
194
|
+
gh release create $$TAG --title $$TAG --generate-notes; \
|
|
195
|
+
fi
|
|
196
|
+
|
|
197
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
198
|
+
# Maintenance
|
|
199
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
200
|
+
|
|
201
|
+
list-graphs:
|
|
202
|
+
@echo "Graphs in $(DB_DIR):"
|
|
203
|
+
@ls -lh $(DB_DIR)/*.db 2>/dev/null || echo " (none)"
|
|
204
|
+
|
|
205
|
+
clean-graph:
|
|
206
|
+
@test -n "$(DB)" || (echo "Usage: make clean-graph DB=~/graphs/file.db" && exit 1)
|
|
207
|
+
rm -rf "$(DB)"
|
|
208
|
+
@echo "Removed: $(DB)"
|
|
209
|
+
|
|
210
|
+
clean-all:
|
|
211
|
+
@printf "Remove all graphs in $(DB_DIR)? [y/N] " && read c && \
|
|
212
|
+
[ "$$c" = "y" ] && rm -rf $(DB_DIR)/*.db && echo "Done." || echo "Cancelled."
|
|
213
|
+
|
|
214
|
+
.PHONY: help build diff rebuild databases use-db remove-db prune-dbs start stop restart status logs \
|
|
215
|
+
screens tokens search inspect impact screen \
|
|
216
|
+
install-hooks push version release \
|
|
217
|
+
list-graphs clean-graph clean-all
|