tests: fix suite-wide collection and failures

- config: switch Settings to ConfigDict(extra='ignore') so extra env vars
  (spoonacular_api_key, SWIFTLY_BEARER_TOKEN) don't crash import.
  Remove deprecated class Config.
- email: wrap SendGrid imports in try/except so the module loads without
  the optional dependency. Update test_email_backend to patch Mail/RepyTo.
- planner_select: default PlannerConfig.set_size=21 (3 meals/day × 7) is
  way too large for the unit test assertion that checks 3-recipe diversity.
  Introduced _CFG_3 with set_size=3 and applied to all tests.
- Delete stale test_matcher.py importing removed functions.

Full suite: 46 passed, 74 skipped (Postgres), 0 failed, 120 collected.
This commit is contained in:
2026-05-18 17:43:30 -07:00
parent e92cc3a074
commit 019f9020ad
126 changed files with 34699 additions and 77 deletions
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_alembic_versions_0010_auto_llm_source_py", "label": "0010_auto_llm_source.py", "file_type": "code", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L1"}, {"id": "0010_auto_llm_source_upgrade", "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L15"}, {"id": "0010_auto_llm_source_downgrade", "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L21"}, {"id": "0010_auto_llm_source_rationale_1", "label": "Add auto_llm to ingredient_match_source_enum Revision ID: 0010 Revises: 0009 Cr", "file_type": "rationale", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L1"}], "edges": [{"source": "backend_alembic_versions_0010_auto_llm_source_py", "target": "alembic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_alembic_versions_0010_auto_llm_source_py", "target": "0010_auto_llm_source_upgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L15", "weight": 1.0}, {"source": "backend_alembic_versions_0010_auto_llm_source_py", "target": "0010_auto_llm_source_downgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L21", "weight": 1.0}, {"source": "0010_auto_llm_source_rationale_1", "target": "backend_alembic_versions_0010_auto_llm_source_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "0010_auto_llm_source_upgrade", "callee": "execute", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L18"}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_tests_test_resolve_ingredient_py", "label": "test_resolve_ingredient.py", "file_type": "code", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L1"}, {"id": "test_resolve_ingredient_admin", "label": "_admin()", "file_type": "code", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L6"}, {"id": "test_resolve_ingredient_seed_ingredient", "label": "_seed_ingredient()", "file_type": "code", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L10"}, {"id": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates", "label": "test_resolve_ingredient_returns_top_three_candidates()", "file_type": "code", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L19"}, {"id": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit", "label": "test_resolve_ingredient_handles_no_unit()", "file_type": "code", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L38"}], "edges": [{"source": "backend_tests_test_resolve_ingredient_py", "target": "pytest", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L1", "weight": 1.0}, {"source": "backend_tests_test_resolve_ingredient_py", "target": "test_resolve_ingredient_admin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L6", "weight": 1.0}, {"source": "backend_tests_test_resolve_ingredient_py", "target": "test_resolve_ingredient_seed_ingredient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L10", "weight": 1.0}, {"source": "backend_tests_test_resolve_ingredient_py", "target": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L19", "weight": 1.0}, {"source": "backend_tests_test_resolve_ingredient_py", "target": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L38", "weight": 1.0}, {"source": "test_resolve_ingredient_seed_ingredient", "target": "test_resolve_ingredient_admin", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L14", "weight": 1.0}, {"source": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates", "target": "test_resolve_ingredient_seed_ingredient", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L20", "weight": 1.0}, {"source": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates", "target": "test_resolve_ingredient_admin", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L27", "weight": 1.0}, {"source": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit", "target": "test_resolve_ingredient_seed_ingredient", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L39", "weight": 1.0}, {"source": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit", "target": "test_resolve_ingredient_admin", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L43", "weight": 1.0}], "raw_calls": [{"caller_nid": "test_resolve_ingredient_seed_ingredient", "callee": "post", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L11"}, {"caller_nid": "test_resolve_ingredient_seed_ingredient", "callee": "json", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L16"}, {"caller_nid": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates", "callee": "post", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L24"}, {"caller_nid": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates", "callee": "json", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L30"}, {"caller_nid": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit", "callee": "post", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L40"}, {"caller_nid": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit", "callee": "json", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L45"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_tests_test_scrape_endpoint_py", "label": "test_scrape_endpoint.py", "file_type": "code", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L1"}, {"id": "test_scrape_endpoint_admin_token", "label": "_admin_token()", "file_type": "code", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L20"}, {"id": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "label": "test_scrape_returns_202_and_log_id()", "file_type": "code", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L26"}, {"id": "test_scrape_endpoint_rationale_1", "label": "Async scrape endpoint contract. Verifies that ``POST /api/admin/scrape``: - r", "file_type": "rationale", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L1"}, {"id": "test_scrape_endpoint_rationale_27", "label": "Endpoint enqueues the scrape and returns 202 + scrape_log_id. We replace th", "file_type": "rationale", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L27"}], "edges": [{"source": "backend_tests_test_scrape_endpoint_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L11", "weight": 1.0}, {"source": "backend_tests_test_scrape_endpoint_py", "target": "uuid", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L12", "weight": 1.0}, {"source": "backend_tests_test_scrape_endpoint_py", "target": "pytest", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L14", "weight": 1.0}, {"source": "backend_tests_test_scrape_endpoint_py", "target": "test_scrape_endpoint_admin_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L20", "weight": 1.0}, {"source": "backend_tests_test_scrape_endpoint_py", "target": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L26", "weight": 1.0}, {"source": "test_scrape_endpoint_rationale_1", "target": "backend_tests_test_scrape_endpoint_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L1", "weight": 1.0}, {"source": "test_scrape_endpoint_rationale_27", "target": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L27", "weight": 1.0}], "raw_calls": [{"caller_nid": "test_scrape_endpoint_admin_token", "callee": "setenv", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L21"}, {"caller_nid": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "callee": "setattr", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L40"}, {"caller_nid": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "callee": "post", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L44"}, {"caller_nid": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "callee": "json", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L49"}, {"caller_nid": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "callee": "UUID", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L53"}, {"caller_nid": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "callee": "first", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L58"}, {"caller_nid": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "callee": "filter", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L58"}, {"caller_nid": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "callee": "query", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L58"}, {"caller_nid": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "callee": "len", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L67"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_pages_mealdetail_tsx", "label": "MealDetail.tsx", "file_type": "code", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L1"}], "edges": [{"source": "frontend_src_pages_mealdetail_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "react_query", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "react_router_dom", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L3", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "lucide_react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L4", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "frontend_src_pages_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L5", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "frontend_src_pages_types", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L6", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "frontend_src_pages_components_ui_button", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L7", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "frontend_src_pages_components_ui_badge", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L8", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "frontend_src_pages_components_ui_card", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L9", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "frontend_src_pages_components_ui_skeleton", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L10", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "frontend_src_pages_components_ui_select", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L11", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "frontend_src_pages_components_ui_textarea", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L12", "weight": 1.0}, {"source": "frontend_src_pages_mealdetail_tsx", "target": "frontend_src_pages_lib_toast", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L13", "weight": 1.0}], "raw_calls": []}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_components_ui_skeleton_tsx", "label": "Skeleton.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Skeleton.tsx", "source_location": "L1"}], "edges": [], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_vite_env_d_ts", "label": "vite-env.d.ts", "file_type": "code", "source_file": "frontend/src/vite-env.d.ts", "source_location": "L1"}], "edges": [], "raw_calls": []}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_schemas_never_suggest_py", "label": "never_suggest.py", "file_type": "code", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L1"}, {"id": "never_suggest_neversuggestcreate", "label": "NeverSuggestCreate", "file_type": "code", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L9"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "never_suggest_exactly_one_target", "label": "_exactly_one_target()", "file_type": "code", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L17"}, {"id": "never_suggest_neversuggestread", "label": "NeverSuggestRead", "file_type": "code", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L24"}], "edges": [{"source": "backend_app_schemas_never_suggest_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L3", "weight": 1.0}, {"source": "backend_app_schemas_never_suggest_py", "target": "uuid", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_app_schemas_never_suggest_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L6", "weight": 1.0}, {"source": "backend_app_schemas_never_suggest_py", "target": "never_suggest_neversuggestcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L9", "weight": 1.0}, {"source": "never_suggest_neversuggestcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L9", "weight": 1.0}, {"source": "backend_app_schemas_never_suggest_py", "target": "never_suggest_exactly_one_target", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L17", "weight": 1.0}, {"source": "backend_app_schemas_never_suggest_py", "target": "never_suggest_neversuggestread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L24", "weight": 1.0}, {"source": "never_suggest_neversuggestread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L24", "weight": 1.0}], "raw_calls": [{"caller_nid": "never_suggest_exactly_one_target", "callee": "sum", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L18"}, {"caller_nid": "never_suggest_exactly_one_target", "callee": "ValueError", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L20"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_alembic_versions_0002_seed_data_py", "label": "0002_seed_data.py", "file_type": "code", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L1"}, {"id": "0002_seed_data_upgrade", "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L17"}, {"id": "0002_seed_data_downgrade", "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L112"}, {"id": "0002_seed_data_rationale_1", "label": "Seed initial data Revision ID: 0002 Revises: 0001 Create Date: 2026-05-04", "file_type": "rationale", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L1"}], "edges": [{"source": "backend_alembic_versions_0002_seed_data_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_alembic_versions_0002_seed_data_py", "target": "alembic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L8", "weight": 1.0}, {"source": "backend_alembic_versions_0002_seed_data_py", "target": "sqlalchemy", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L9", "weight": 1.0}, {"source": "backend_alembic_versions_0002_seed_data_py", "target": "0002_seed_data_upgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L17", "weight": 1.0}, {"source": "backend_alembic_versions_0002_seed_data_py", "target": "0002_seed_data_downgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L112", "weight": 1.0}, {"source": "0002_seed_data_rationale_1", "target": "backend_alembic_versions_0002_seed_data_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "0002_seed_data_upgrade", "callee": "execute", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L22"}, {"caller_nid": "0002_seed_data_upgrade", "callee": "execute", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L27"}, {"caller_nid": "0002_seed_data_upgrade", "callee": "execute", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L105"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_tests_init_py", "label": "__init__.py", "file_type": "code", "source_file": "backend/tests/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_components_ui_input_tsx", "label": "Input.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Input.tsx", "source_location": "L1"}, {"id": "input_cn", "label": "cn()", "file_type": "code", "source_file": "frontend/src/components/ui/Input.tsx", "source_location": "L17"}], "edges": [{"source": "frontend_src_components_ui_input_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Input.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_components_ui_input_tsx", "target": "frontend_src_components_ui_lib_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Input.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_components_ui_input_tsx", "target": "input_cn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Input.tsx", "source_location": "L17", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_components_ui_select_tsx", "label": "Select.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Select.tsx", "source_location": "L1"}], "edges": [{"source": "frontend_src_components_ui_select_tsx", "target": "frontend_src_components_ui_lib_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Select.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_components_ui_select_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Select.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_components_ui_select_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Select.tsx", "source_location": "L3", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_services_orchestrator_init_py", "label": "__init__.py", "file_type": "code", "source_file": "backend/app/services/orchestrator/__init__.py", "source_location": "L1"}], "edges": [{"source": "backend_app_services_orchestrator_init_py", "target": "app_services_orchestrator_runner", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_services_planner_config_py", "label": "config.py", "file_type": "code", "source_file": "backend/app/services/planner/config.py", "source_location": "L1"}, {"id": "config_plannerconfig", "label": "PlannerConfig", "file_type": "code", "source_file": "backend/app/services/planner/config.py", "source_location": "L8"}, {"id": "config_plannerconfig_validate", "label": ".validate()", "file_type": "code", "source_file": "backend/app/services/planner/config.py", "source_location": "L35"}, {"id": "config_rationale_1", "label": "Planner constants. Tune here without touching algorithm code.", "file_type": "rationale", "source_file": "backend/app/services/planner/config.py", "source_location": "L1"}], "edges": [{"source": "backend_app_services_planner_config_py", "target": "dataclasses", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/config.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_app_services_planner_config_py", "target": "config_plannerconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/config.py", "source_location": "L8", "weight": 1.0}, {"source": "config_plannerconfig", "target": "config_plannerconfig_validate", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/config.py", "source_location": "L35", "weight": 1.0}, {"source": "config_rationale_1", "target": "backend_app_services_planner_config_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/config.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "config_plannerconfig_validate", "callee": "abs", "source_file": "backend/app/services/planner/config.py", "source_location": "L37"}, {"caller_nid": "config_plannerconfig_validate", "callee": "ValueError", "source_file": "backend/app/services/planner/config.py", "source_location": "L38"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_alembic_versions_0009_phase6_reminded_at_py", "label": "0009_phase6_reminded_at.py", "file_type": "code", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L1"}, {"id": "0009_phase6_reminded_at_upgrade", "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L16"}, {"id": "0009_phase6_reminded_at_downgrade", "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L23"}, {"id": "0009_phase6_reminded_at_rationale_1", "label": "Phase 6: add reminded_at to weekly_run Revision ID: 0009 Revises: 0008 Create D", "file_type": "rationale", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L1"}], "edges": [{"source": "backend_alembic_versions_0009_phase6_reminded_at_py", "target": "alembic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_alembic_versions_0009_phase6_reminded_at_py", "target": "sqlalchemy", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L8", "weight": 1.0}, {"source": "backend_alembic_versions_0009_phase6_reminded_at_py", "target": "0009_phase6_reminded_at_upgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L16", "weight": 1.0}, {"source": "backend_alembic_versions_0009_phase6_reminded_at_py", "target": "0009_phase6_reminded_at_downgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L23", "weight": 1.0}, {"source": "0009_phase6_reminded_at_rationale_1", "target": "backend_alembic_versions_0009_phase6_reminded_at_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "0009_phase6_reminded_at_upgrade", "callee": "add_column", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L17"}, {"caller_nid": "0009_phase6_reminded_at_upgrade", "callee": "Column", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L19"}, {"caller_nid": "0009_phase6_reminded_at_upgrade", "callee": "DateTime", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L19"}, {"caller_nid": "0009_phase6_reminded_at_downgrade", "callee": "drop_column", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L24"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_pages_shoppinglist_tsx", "label": "ShoppingList.tsx", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L1"}, {"id": "shoppinglist_shoppinglistskeleton", "label": "ShoppingListSkeleton()", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L12"}, {"id": "shoppinglist_skeletoncard", "label": "SkeletonCard()", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L33"}, {"id": "shoppinglist_storagekey", "label": "storageKey()", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L44"}, {"id": "shoppinglist_toggle", "label": "toggle()", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L77"}, {"id": "shoppinglist_clearall", "label": "clearAll()", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L86"}], "edges": [{"source": "frontend_src_pages_shoppinglist_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "react_query", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "lucide_react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L3", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "frontend_src_pages_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L4", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "frontend_src_pages_types", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L5", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "frontend_src_pages_components_ui_button", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L6", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "frontend_src_pages_components_ui_badge", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L7", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "frontend_src_pages_components_ui_card", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L8", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "frontend_src_pages_components_ui_skeleton", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L9", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "frontend_src_pages_components_ui_emptystate", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L10", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "shoppinglist_shoppinglistskeleton", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L12", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "shoppinglist_skeletoncard", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L33", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "shoppinglist_storagekey", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L44", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "shoppinglist_toggle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L77", "weight": 1.0}, {"source": "frontend_src_pages_shoppinglist_tsx", "target": "shoppinglist_clearall", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L86", "weight": 1.0}], "raw_calls": [{"caller_nid": "shoppinglist_toggle", "callee": "setChecked", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L78"}, {"caller_nid": "shoppinglist_clearall", "callee": "setChecked", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L86"}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_tests_test_email_backend_py", "label": "test_email_backend.py", "file_type": "code", "source_file": "backend/tests/test_email_backend.py", "source_location": "L1"}, {"id": "test_email_backend_test_sendgrid_send_calls_api", "label": "test_sendgrid_send_calls_api()", "file_type": "code", "source_file": "backend/tests/test_email_backend.py", "source_location": "L5"}, {"id": "test_email_backend_test_sendgrid_raises_on_4xx", "label": "test_sendgrid_raises_on_4xx()", "file_type": "code", "source_file": "backend/tests/test_email_backend.py", "source_location": "L26"}, {"id": "test_email_backend_rationale_1", "label": "Unit tests for SendGridEmailBackend \u2014 no Postgres needed.", "file_type": "rationale", "source_file": "backend/tests/test_email_backend.py", "source_location": "L1"}], "edges": [{"source": "backend_tests_test_email_backend_py", "target": "pytest", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_email_backend.py", "source_location": "L2", "weight": 1.0}, {"source": "backend_tests_test_email_backend_py", "target": "test_email_backend_test_sendgrid_send_calls_api", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_email_backend.py", "source_location": "L5", "weight": 1.0}, {"source": "backend_tests_test_email_backend_py", "target": "test_email_backend_test_sendgrid_raises_on_4xx", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_email_backend.py", "source_location": "L26", "weight": 1.0}, {"source": "test_email_backend_rationale_1", "target": "backend_tests_test_email_backend_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_email_backend.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "test_email_backend_test_sendgrid_send_calls_api", "callee": "setattr", "source_file": "backend/tests/test_email_backend.py", "source_location": "L17"}, {"caller_nid": "test_email_backend_test_sendgrid_send_calls_api", "callee": "FakeClient", "source_file": "backend/tests/test_email_backend.py", "source_location": "L17"}, {"caller_nid": "test_email_backend_test_sendgrid_send_calls_api", "callee": "SendGridEmailBackend", "source_file": "backend/tests/test_email_backend.py", "source_location": "L20"}, {"caller_nid": "test_email_backend_test_sendgrid_send_calls_api", "callee": "send", "source_file": "backend/tests/test_email_backend.py", "source_location": "L21"}, {"caller_nid": "test_email_backend_test_sendgrid_send_calls_api", "callee": "len", "source_file": "backend/tests/test_email_backend.py", "source_location": "L23"}, {"caller_nid": "test_email_backend_test_sendgrid_raises_on_4xx", "callee": "setattr", "source_file": "backend/tests/test_email_backend.py", "source_location": "L35"}, {"caller_nid": "test_email_backend_test_sendgrid_raises_on_4xx", "callee": "FakeClient", "source_file": "backend/tests/test_email_backend.py", "source_location": "L35"}, {"caller_nid": "test_email_backend_test_sendgrid_raises_on_4xx", "callee": "SendGridEmailBackend", "source_file": "backend/tests/test_email_backend.py", "source_location": "L38"}, {"caller_nid": "test_email_backend_test_sendgrid_raises_on_4xx", "callee": "raises", "source_file": "backend/tests/test_email_backend.py", "source_location": "L39"}, {"caller_nid": "test_email_backend_test_sendgrid_raises_on_4xx", "callee": "send", "source_file": "backend/tests/test_email_backend.py", "source_location": "L40"}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_services_init_py", "label": "__init__.py", "file_type": "code", "source_file": "backend/app/services/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "scripts_seed_family_py", "label": "seed_family.py", "file_type": "code", "source_file": "scripts/seed_family.py", "source_location": "L1"}], "edges": [{"source": "scripts_seed_family_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "scripts/seed_family.py", "source_location": "L12", "weight": 1.0}, {"source": "scripts_seed_family_py", "target": "sys", "relation": "imports", "confidence": "EXTRACTED", "source_file": "scripts/seed_family.py", "source_location": "L13", "weight": 1.0}, {"source": "scripts_seed_family_py", "target": "app_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "scripts/seed_family.py", "source_location": "L32", "weight": 1.0}, {"source": "scripts_seed_family_py", "target": "app_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "scripts/seed_family.py", "source_location": "L33", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_config_py", "label": "config.py", "file_type": "code", "source_file": "backend/app/config.py", "source_location": "L1"}, {"id": "config_settings", "label": "Settings", "file_type": "code", "source_file": "backend/app/config.py", "source_location": "L6"}, {"id": "basesettings", "label": "BaseSettings", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "config_config", "label": "Config", "file_type": "code", "source_file": "backend/app/config.py", "source_location": "L41"}, {"id": "config_require_database_url", "label": "_require_database_url()", "file_type": "code", "source_file": "backend/app/config.py", "source_location": "L45"}], "edges": [{"source": "backend_app_config_py", "target": "pydantic_settings", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/config.py", "source_location": "L1", "weight": 1.0}, {"source": "backend_app_config_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/config.py", "source_location": "L2", "weight": 1.0}, {"source": "backend_app_config_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/config.py", "source_location": "L3", "weight": 1.0}, {"source": "backend_app_config_py", "target": "config_settings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/config.py", "source_location": "L6", "weight": 1.0}, {"source": "config_settings", "target": "basesettings", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/config.py", "source_location": "L6", "weight": 1.0}, {"source": "backend_app_config_py", "target": "config_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/config.py", "source_location": "L41", "weight": 1.0}, {"source": "backend_app_config_py", "target": "config_require_database_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/config.py", "source_location": "L45", "weight": 1.0}], "raw_calls": [{"caller_nid": "config_require_database_url", "callee": "RuntimeError", "source_file": "backend/app/config.py", "source_location": "L47"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_tests_test_recipe_schema_py", "label": "test_recipe_schema.py", "file_type": "code", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L1"}, {"id": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids", "label": "test_recipe_create_requires_canonical_ingredient_ids()", "file_type": "code", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L9"}, {"id": "test_recipe_schema_test_recipe_create_rejects_empty_ingredients", "label": "test_recipe_create_rejects_empty_ingredients()", "file_type": "code", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L25"}, {"id": "test_recipe_schema_test_resolve_ingredient_request_round_trip", "label": "test_resolve_ingredient_request_round_trip()", "file_type": "code", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L39"}], "edges": [{"source": "backend_tests_test_recipe_schema_py", "target": "uuid", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L1", "weight": 1.0}, {"source": "backend_tests_test_recipe_schema_py", "target": "pytest", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L3", "weight": 1.0}, {"source": "backend_tests_test_recipe_schema_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_tests_test_recipe_schema_py", "target": "app_schemas_recipe", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L6", "weight": 1.0}, {"source": "backend_tests_test_recipe_schema_py", "target": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L9", "weight": 1.0}, {"source": "backend_tests_test_recipe_schema_py", "target": "test_recipe_schema_test_recipe_create_rejects_empty_ingredients", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L25", "weight": 1.0}, {"source": "backend_tests_test_recipe_schema_py", "target": "test_recipe_schema_test_resolve_ingredient_request_round_trip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L39", "weight": 1.0}], "raw_calls": [{"caller_nid": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids", "callee": "uuid4", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L10"}, {"caller_nid": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids", "callee": "RecipeCreate", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L11"}, {"caller_nid": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids", "callee": "RecipeIngredientRef", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L18"}, {"caller_nid": "test_recipe_schema_test_recipe_create_rejects_empty_ingredients", "callee": "raises", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L26"}, {"caller_nid": "test_recipe_schema_test_recipe_create_rejects_empty_ingredients", "callee": "RecipeCreate", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L27"}, {"caller_nid": "test_recipe_schema_test_resolve_ingredient_request_round_trip", "callee": "ResolveIngredientRequest", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L40"}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_api_auth_py", "label": "auth.py", "file_type": "code", "source_file": "backend/app/api/auth.py", "source_location": "L1"}, {"id": "auth_loginrequest", "label": "LoginRequest", "file_type": "code", "source_file": "backend/app/api/auth.py", "source_location": "L26"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "auth_login", "label": "login()", "file_type": "code", "source_file": "backend/app/api/auth.py", "source_location": "L31"}, {"id": "auth_logout", "label": "logout()", "file_type": "code", "source_file": "backend/app/api/auth.py", "source_location": "L64"}, {"id": "auth_rationale_1", "label": "Family-shared session login. POST /api/auth/login \u2014 body ``{\"password\": \"...\"}`", "file_type": "rationale", "source_file": "backend/app/api/auth.py", "source_location": "L1"}], "edges": [{"source": "backend_app_api_auth_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L14", "weight": 1.0}, {"source": "backend_app_api_auth_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L15", "weight": 1.0}, {"source": "backend_app_api_auth_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L16", "weight": 1.0}, {"source": "backend_app_api_auth_py", "target": "app_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L18", "weight": 1.0}, {"source": "backend_app_api_auth_py", "target": "app_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L19", "weight": 1.0}, {"source": "backend_app_api_auth_py", "target": "app_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L20", "weight": 1.0}, {"source": "backend_app_api_auth_py", "target": "app_security", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L21", "weight": 1.0}, {"source": "backend_app_api_auth_py", "target": "auth_loginrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L26", "weight": 1.0}, {"source": "auth_loginrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L26", "weight": 1.0}, {"source": "backend_app_api_auth_py", "target": "auth_login", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L31", "weight": 1.0}, {"source": "backend_app_api_auth_py", "target": "auth_logout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L64", "weight": 1.0}, {"source": "auth_rationale_1", "target": "backend_app_api_auth_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "auth_login", "callee": "HTTPException", "source_file": "backend/app/api/auth.py", "source_location": "L34"}, {"caller_nid": "auth_login", "callee": "HTTPException", "source_file": "backend/app/api/auth.py", "source_location": "L39"}, {"caller_nid": "auth_login", "callee": "first", "source_file": "backend/app/api/auth.py", "source_location": "L43"}, {"caller_nid": "auth_login", "callee": "query", "source_file": "backend/app/api/auth.py", "source_location": "L43"}, {"caller_nid": "auth_login", "callee": "str", "source_file": "backend/app/api/auth.py", "source_location": "L47"}, {"caller_nid": "auth_login", "callee": "issue_session", "source_file": "backend/app/api/auth.py", "source_location": "L48"}, {"caller_nid": "auth_login", "callee": "Response", "source_file": "backend/app/api/auth.py", "source_location": "L50"}, {"caller_nid": "auth_login", "callee": "set_cookie", "source_file": "backend/app/api/auth.py", "source_location": "L51"}, {"caller_nid": "auth_logout", "callee": "Response", "source_file": "backend/app/api/auth.py", "source_location": "L65"}, {"caller_nid": "auth_logout", "callee": "delete_cookie", "source_file": "backend/app/api/auth.py", "source_location": "L66"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_main_py", "label": "main.py", "file_type": "code", "source_file": "backend/app/main.py", "source_location": "L1"}, {"id": "main_health_check", "label": "health_check()", "file_type": "code", "source_file": "backend/app/main.py", "source_location": "L19"}, {"id": "main_health_check_db", "label": "health_check_db()", "file_type": "code", "source_file": "backend/app/main.py", "source_location": "L24"}], "edges": [{"source": "backend_app_main_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L1", "weight": 1.0}, {"source": "backend_app_main_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L2", "weight": 1.0}, {"source": "backend_app_main_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L3", "weight": 1.0}, {"source": "backend_app_main_py", "target": "app_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_app_main_py", "target": "app_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L5", "weight": 1.0}, {"source": "backend_app_main_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L6", "weight": 1.0}, {"source": "backend_app_main_py", "target": "main_health_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L19", "weight": 1.0}, {"source": "backend_app_main_py", "target": "main_health_check_db", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L24", "weight": 1.0}, {"source": "backend_app_main_py", "target": "app_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L32", "weight": 1.0}, {"source": "backend_app_main_py", "target": "app_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L33", "weight": 1.0}, {"source": "backend_app_main_py", "target": "app_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L34", "weight": 1.0}, {"source": "backend_app_main_py", "target": "app_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L35", "weight": 1.0}, {"source": "backend_app_main_py", "target": "app_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L36", "weight": 1.0}, {"source": "backend_app_main_py", "target": "app_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L37", "weight": 1.0}, {"source": "backend_app_main_py", "target": "app_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L38", "weight": 1.0}], "raw_calls": [{"caller_nid": "main_health_check_db", "callee": "execute", "source_file": "backend/app/main.py", "source_location": "L26"}, {"caller_nid": "main_health_check_db", "callee": "text", "source_file": "backend/app/main.py", "source_location": "L26"}, {"caller_nid": "main_health_check_db", "callee": "str", "source_file": "backend/app/main.py", "source_location": "L29"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_app_tsx", "label": "App.tsx", "file_type": "code", "source_file": "frontend/src/App.tsx", "source_location": "L1"}, {"id": "app_isactive", "label": "isActive()", "file_type": "code", "source_file": "frontend/src/App.tsx", "source_location": "L13"}, {"id": "app_linkclass", "label": "linkClass()", "file_type": "code", "source_file": "frontend/src/App.tsx", "source_location": "L15"}], "edges": [{"source": "frontend_src_app_tsx", "target": "react_router_dom", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_app_tsx", "target": "react_query", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_app_tsx", "target": "frontend_src_components_errorboundary", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L3", "weight": 1.0}, {"source": "frontend_src_app_tsx", "target": "frontend_src_pages_dashboard", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L4", "weight": 1.0}, {"source": "frontend_src_app_tsx", "target": "frontend_src_pages_mealdetail", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L5", "weight": 1.0}, {"source": "frontend_src_app_tsx", "target": "frontend_src_pages_pantry", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L6", "weight": 1.0}, {"source": "frontend_src_app_tsx", "target": "frontend_src_pages_shoppinglist", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L7", "weight": 1.0}, {"source": "frontend_src_app_tsx", "target": "app_isactive", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L13", "weight": 1.0}, {"source": "frontend_src_app_tsx", "target": "app_linkclass", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L15", "weight": 1.0}, {"source": "app_linkclass", "target": "app_isactive", "relation": "calls", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L17", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_tests_test_ingredient_schema_py", "label": "test_ingredient_schema.py", "file_type": "code", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L1"}, {"id": "test_ingredient_schema_test_ingredient_create_normalizes_aliases", "label": "test_ingredient_create_normalizes_aliases()", "file_type": "code", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L7"}, {"id": "test_ingredient_schema_test_ingredient_match_read_round_trip", "label": "test_ingredient_match_read_round_trip()", "file_type": "code", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L18"}], "edges": [{"source": "backend_tests_test_ingredient_schema_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L1", "weight": 1.0}, {"source": "backend_tests_test_ingredient_schema_py", "target": "uuid", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L2", "weight": 1.0}, {"source": "backend_tests_test_ingredient_schema_py", "target": "app_schemas_ingredient", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_tests_test_ingredient_schema_py", "target": "test_ingredient_schema_test_ingredient_create_normalizes_aliases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_tests_test_ingredient_schema_py", "target": "test_ingredient_schema_test_ingredient_match_read_round_trip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L18", "weight": 1.0}], "raw_calls": [{"caller_nid": "test_ingredient_schema_test_ingredient_create_normalizes_aliases", "callee": "IngredientCreate", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L8"}, {"caller_nid": "test_ingredient_schema_test_ingredient_match_read_round_trip", "callee": "uuid4", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L19"}, {"caller_nid": "test_ingredient_schema_test_ingredient_match_read_round_trip", "callee": "uuid4", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L20"}, {"caller_nid": "test_ingredient_schema_test_ingredient_match_read_round_trip", "callee": "uuid4", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L22"}, {"caller_nid": "test_ingredient_schema_test_ingredient_match_read_round_trip", "callee": "Decimal", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L25"}, {"caller_nid": "test_ingredient_schema_test_ingredient_match_read_round_trip", "callee": "Decimal", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L28"}, {"caller_nid": "test_ingredient_schema_test_ingredient_match_read_round_trip", "callee": "Decimal", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L29"}, {"caller_nid": "test_ingredient_schema_test_ingredient_match_read_round_trip", "callee": "model_validate", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L32"}, {"caller_nid": "test_ingredient_schema_test_ingredient_match_read_round_trip", "callee": "Decimal", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L33"}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_components_errorboundary_tsx", "label": "ErrorBoundary.tsx", "file_type": "code", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L1"}, {"id": "errorboundary_getderivedstatefromerror", "label": "getDerivedStateFromError()", "file_type": "code", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L19"}, {"id": "errorboundary_componentdidcatch", "label": "componentDidCatch()", "file_type": "code", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L23"}], "edges": [{"source": "frontend_src_components_errorboundary_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_components_errorboundary_tsx", "target": "lucide_react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_components_errorboundary_tsx", "target": "frontend_src_components_ui_button", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L3", "weight": 1.0}, {"source": "frontend_src_components_errorboundary_tsx", "target": "errorboundary_getderivedstatefromerror", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L19", "weight": 1.0}, {"source": "frontend_src_components_errorboundary_tsx", "target": "errorboundary_componentdidcatch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L23", "weight": 1.0}], "raw_calls": [{"caller_nid": "errorboundary_componentdidcatch", "callee": "error", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L24"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_components_ui_button_tsx", "label": "Button.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Button.tsx", "source_location": "L1"}, {"id": "button_button", "label": "Button()", "file_type": "code", "source_file": "frontend/src/components/ui/Button.tsx", "source_location": "L11"}], "edges": [{"source": "frontend_src_components_ui_button_tsx", "target": "lucide_react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Button.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_components_ui_button_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Button.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_components_ui_button_tsx", "target": "button_button", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Button.tsx", "source_location": "L11", "weight": 1.0}], "raw_calls": []}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_alembic_versions_0004_family_profile_calorie_target_py", "label": "0004_family_profile_calorie_target.py", "file_type": "code", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L1"}, {"id": "0004_family_profile_calorie_target_upgrade", "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L22"}, {"id": "0004_family_profile_calorie_target_downgrade", "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L29"}, {"id": "0004_family_profile_calorie_target_rationale_1", "label": "Add calorie_target to family_profile Revision ID: 0004 Revises: 0003 Create Dat", "file_type": "rationale", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L1"}], "edges": [{"source": "backend_alembic_versions_0004_family_profile_calorie_target_py", "target": "alembic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L12", "weight": 1.0}, {"source": "backend_alembic_versions_0004_family_profile_calorie_target_py", "target": "sqlalchemy", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L13", "weight": 1.0}, {"source": "backend_alembic_versions_0004_family_profile_calorie_target_py", "target": "0004_family_profile_calorie_target_upgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L22", "weight": 1.0}, {"source": "backend_alembic_versions_0004_family_profile_calorie_target_py", "target": "0004_family_profile_calorie_target_downgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L29", "weight": 1.0}, {"source": "0004_family_profile_calorie_target_rationale_1", "target": "backend_alembic_versions_0004_family_profile_calorie_target_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "0004_family_profile_calorie_target_upgrade", "callee": "add_column", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L23"}, {"caller_nid": "0004_family_profile_calorie_target_upgrade", "callee": "Column", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L25"}, {"caller_nid": "0004_family_profile_calorie_target_upgrade", "callee": "Integer", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L25"}, {"caller_nid": "0004_family_profile_calorie_target_downgrade", "callee": "drop_column", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L30"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_pages_pantry_tsx", "label": "Pantry.tsx", "file_type": "code", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L1"}, {"id": "pantry_handleadd", "label": "handleAdd()", "file_type": "code", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L59"}], "edges": [{"source": "frontend_src_pages_pantry_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "react_query", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "lucide_react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L3", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "frontend_src_pages_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L4", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "frontend_src_pages_types", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L5", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "frontend_src_pages_components_ui_button", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L6", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "frontend_src_pages_components_ui_card", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L7", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "frontend_src_pages_components_ui_input", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L8", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "frontend_src_pages_components_ui_select", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L9", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "frontend_src_pages_components_ui_skeleton", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L10", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "frontend_src_pages_components_ui_emptystate", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L11", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "frontend_src_pages_lib_toast", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L12", "weight": 1.0}, {"source": "frontend_src_pages_pantry_tsx", "target": "pantry_handleadd", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L59", "weight": 1.0}], "raw_calls": [{"caller_nid": "pantry_handleadd", "callee": "mutate", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L61"}, {"caller_nid": "pantry_handleadd", "callee": "parseFloat", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L63"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_services_orchestrator_alerts_py", "label": "alerts.py", "file_type": "code", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L1"}, {"id": "alerts_send_admin_alert", "label": "send_admin_alert()", "file_type": "code", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L9"}], "edges": [{"source": "backend_app_services_orchestrator_alerts_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L1", "weight": 1.0}, {"source": "backend_app_services_orchestrator_alerts_py", "target": "app_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L3", "weight": 1.0}, {"source": "backend_app_services_orchestrator_alerts_py", "target": "app_services_email", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_app_services_orchestrator_alerts_py", "target": "alerts_send_admin_alert", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L9", "weight": 1.0}], "raw_calls": [{"caller_nid": "alerts_send_admin_alert", "callee": "warning", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L11"}, {"caller_nid": "alerts_send_admin_alert", "callee": "send", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L14"}, {"caller_nid": "alerts_send_admin_alert", "callee": "get_email_backend", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L14"}, {"caller_nid": "alerts_send_admin_alert", "callee": "exception", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L21"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_components_ui_emptystate_tsx", "label": "EmptyState.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/EmptyState.tsx", "source_location": "L1"}], "edges": [{"source": "frontend_src_components_ui_emptystate_tsx", "target": "lucide_react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/EmptyState.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_components_ui_emptystate_tsx", "target": "frontend_src_components_ui_button", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/EmptyState.tsx", "source_location": "L2", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_alembic_versions_0003_grocery_item_description_py", "label": "0003_grocery_item_description.py", "file_type": "code", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L1"}, {"id": "0003_grocery_item_description_upgrade", "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L24"}, {"id": "0003_grocery_item_description_downgrade", "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L31"}, {"id": "0003_grocery_item_description_rationale_1", "label": "Add nullable description column to grocery_item. The Lucky California parser pr", "file_type": "rationale", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L1"}], "edges": [{"source": "backend_alembic_versions_0003_grocery_item_description_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L12", "weight": 1.0}, {"source": "backend_alembic_versions_0003_grocery_item_description_py", "target": "alembic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L14", "weight": 1.0}, {"source": "backend_alembic_versions_0003_grocery_item_description_py", "target": "sqlalchemy", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L15", "weight": 1.0}, {"source": "backend_alembic_versions_0003_grocery_item_description_py", "target": "0003_grocery_item_description_upgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L24", "weight": 1.0}, {"source": "backend_alembic_versions_0003_grocery_item_description_py", "target": "0003_grocery_item_description_downgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L31", "weight": 1.0}, {"source": "0003_grocery_item_description_rationale_1", "target": "backend_alembic_versions_0003_grocery_item_description_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "0003_grocery_item_description_upgrade", "callee": "add_column", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L25"}, {"caller_nid": "0003_grocery_item_description_upgrade", "callee": "Column", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L27"}, {"caller_nid": "0003_grocery_item_description_upgrade", "callee": "Text", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L27"}, {"caller_nid": "0003_grocery_item_description_downgrade", "callee": "drop_column", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L32"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_scraper_init_py", "label": "__init__.py", "file_type": "code", "source_file": "backend/app/scraper/__init__.py", "source_location": "L1"}], "edges": [{"source": "backend_app_scraper_init_py", "target": "backend_app_scraper_base_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/__init__.py", "source_location": "L1", "weight": 1.0}, {"source": "backend_app_scraper_init_py", "target": "backend_app_scraper_lucky_ca_scraper_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/__init__.py", "source_location": "L2", "weight": 1.0}], "raw_calls": []}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_schemas_meal_plan_generation_py", "label": "meal_plan_generation.py", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L1"}, {"id": "meal_plan_generation_generaterequest", "label": "GenerateRequest", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L11"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "meal_plan_generation_regeneraterequest", "label": "RegenerateRequest", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L16"}, {"id": "meal_plan_generation_generationitem", "label": "GenerationItem", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L25"}, {"id": "meal_plan_generation_generationdebug", "label": "GenerationDebug", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L33"}, {"id": "meal_plan_generation_generationresponse", "label": "GenerationResponse", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L39"}], "edges": [{"source": "backend_app_schemas_meal_plan_generation_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L3", "weight": 1.0}, {"source": "backend_app_schemas_meal_plan_generation_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_app_schemas_meal_plan_generation_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L5", "weight": 1.0}, {"source": "backend_app_schemas_meal_plan_generation_py", "target": "uuid", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L6", "weight": 1.0}, {"source": "backend_app_schemas_meal_plan_generation_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L8", "weight": 1.0}, {"source": "backend_app_schemas_meal_plan_generation_py", "target": "meal_plan_generation_generaterequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L11", "weight": 1.0}, {"source": "meal_plan_generation_generaterequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L11", "weight": 1.0}, {"source": "backend_app_schemas_meal_plan_generation_py", "target": "meal_plan_generation_regeneraterequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L16", "weight": 1.0}, {"source": "meal_plan_generation_regeneraterequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L16", "weight": 1.0}, {"source": "backend_app_schemas_meal_plan_generation_py", "target": "meal_plan_generation_generationitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L25", "weight": 1.0}, {"source": "meal_plan_generation_generationitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L25", "weight": 1.0}, {"source": "backend_app_schemas_meal_plan_generation_py", "target": "meal_plan_generation_generationdebug", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L33", "weight": 1.0}, {"source": "meal_plan_generation_generationdebug", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L33", "weight": 1.0}, {"source": "backend_app_schemas_meal_plan_generation_py", "target": "meal_plan_generation_generationresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L39", "weight": 1.0}, {"source": "meal_plan_generation_generationresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L39", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_vite_config_ts", "label": "vite.config.ts", "file_type": "code", "source_file": "frontend/vite.config.ts", "source_location": "L1"}], "edges": [{"source": "frontend_vite_config_ts", "target": "vite", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/vite.config.ts", "source_location": "L1", "weight": 1.0}, {"source": "frontend_vite_config_ts", "target": "plugin_react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/vite.config.ts", "source_location": "L2", "weight": 1.0}], "raw_calls": []}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_api_index_ts", "label": "index.ts", "file_type": "code", "source_file": "frontend/src/api/index.ts", "source_location": "L1"}], "edges": [{"source": "frontend_src_api_index_ts", "target": "axios", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/api/index.ts", "source_location": "L1", "weight": 1.0}], "raw_calls": []}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_alembic_versions_0005_grocery_item_external_id_py", "label": "0005_grocery_item_external_id.py", "file_type": "code", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L1"}, {"id": "0005_grocery_item_external_id_upgrade", "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L26"}, {"id": "0005_grocery_item_external_id_downgrade", "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L45"}, {"id": "0005_grocery_item_external_id_rationale_1", "label": "Add nullable indexed external_id and source columns to grocery_item. The Swiftl", "file_type": "rationale", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L1"}], "edges": [{"source": "backend_alembic_versions_0005_grocery_item_external_id_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L14", "weight": 1.0}, {"source": "backend_alembic_versions_0005_grocery_item_external_id_py", "target": "alembic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L16", "weight": 1.0}, {"source": "backend_alembic_versions_0005_grocery_item_external_id_py", "target": "sqlalchemy", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L17", "weight": 1.0}, {"source": "backend_alembic_versions_0005_grocery_item_external_id_py", "target": "0005_grocery_item_external_id_upgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L26", "weight": 1.0}, {"source": "backend_alembic_versions_0005_grocery_item_external_id_py", "target": "0005_grocery_item_external_id_downgrade", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L45", "weight": 1.0}, {"source": "0005_grocery_item_external_id_rationale_1", "target": "backend_alembic_versions_0005_grocery_item_external_id_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "0005_grocery_item_external_id_upgrade", "callee": "add_column", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L27"}, {"caller_nid": "0005_grocery_item_external_id_upgrade", "callee": "Column", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L29"}, {"caller_nid": "0005_grocery_item_external_id_upgrade", "callee": "String", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L29"}, {"caller_nid": "0005_grocery_item_external_id_upgrade", "callee": "add_column", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L31"}, {"caller_nid": "0005_grocery_item_external_id_upgrade", "callee": "Column", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L33"}, {"caller_nid": "0005_grocery_item_external_id_upgrade", "callee": "String", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L34"}, {"caller_nid": "0005_grocery_item_external_id_upgrade", "callee": "create_index", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L37"}, {"caller_nid": "0005_grocery_item_external_id_downgrade", "callee": "drop_index", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L46"}, {"caller_nid": "0005_grocery_item_external_id_downgrade", "callee": "drop_column", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L47"}, {"caller_nid": "0005_grocery_item_external_id_downgrade", "callee": "drop_column", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L48"}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_database_py", "label": "database.py", "file_type": "code", "source_file": "backend/app/database.py", "source_location": "L1"}, {"id": "database_get_db", "label": "get_db()", "file_type": "code", "source_file": "backend/app/database.py", "source_location": "L11"}], "edges": [{"source": "backend_app_database_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/database.py", "source_location": "L1", "weight": 1.0}, {"source": "backend_app_database_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/database.py", "source_location": "L2", "weight": 1.0}, {"source": "backend_app_database_py", "target": "app_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/database.py", "source_location": "L3", "weight": 1.0}, {"source": "backend_app_database_py", "target": "database_get_db", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/database.py", "source_location": "L11", "weight": 1.0}], "raw_calls": [{"caller_nid": "database_get_db", "callee": "SessionLocal", "source_file": "backend/app/database.py", "source_location": "L12"}, {"caller_nid": "database_get_db", "callee": "close", "source_file": "backend/app/database.py", "source_location": "L16"}]}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_main_tsx", "label": "main.tsx", "file_type": "code", "source_file": "frontend/src/main.tsx", "source_location": "L1"}], "edges": [{"source": "frontend_src_main_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/main.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_main_tsx", "target": "client", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/main.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_main_tsx", "target": "react_hot_toast", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/main.tsx", "source_location": "L3", "weight": 1.0}, {"source": "frontend_src_main_tsx", "target": "frontend_src_app", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/main.tsx", "source_location": "L4", "weight": 1.0}, {"source": "frontend_src_main_tsx", "target": "frontend_src_index_css", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/main.tsx", "source_location": "L5", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_postcss_config_js", "label": "postcss.config.js", "file_type": "code", "source_file": "frontend/postcss.config.js", "source_location": "L1"}], "edges": [], "raw_calls": []}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_tests_test_thin_phase4_smoke_py", "label": "test_thin_phase4_smoke.py", "file_type": "code", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L1"}, {"id": "test_thin_phase4_smoke_admin", "label": "_admin()", "file_type": "code", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L7"}, {"id": "test_thin_phase4_smoke_test_seed_data_present_and_resolvable", "label": "test_seed_data_present_and_resolvable()", "file_type": "code", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L11"}, {"id": "test_thin_phase4_smoke_test_resolve_against_seeded_ingredients", "label": "test_resolve_against_seeded_ingredients()", "file_type": "code", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L18"}, {"id": "test_thin_phase4_smoke_test_match_job_runs_against_seeded_data", "label": "test_match_job_runs_against_seeded_data()", "file_type": "code", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L30"}, {"id": "test_thin_phase4_smoke_rationale_1", "label": "End-to-end: ingredient + recipe + match all wired together.", "file_type": "rationale", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L1"}], "edges": [{"source": "backend_tests_test_thin_phase4_smoke_py", "target": "pytest", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L2", "weight": 1.0}, {"source": "backend_tests_test_thin_phase4_smoke_py", "target": "test_thin_phase4_smoke_admin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_tests_test_thin_phase4_smoke_py", "target": "test_thin_phase4_smoke_test_seed_data_present_and_resolvable", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L11", "weight": 1.0}, {"source": "backend_tests_test_thin_phase4_smoke_py", "target": "test_thin_phase4_smoke_test_resolve_against_seeded_ingredients", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L18", "weight": 1.0}, {"source": "backend_tests_test_thin_phase4_smoke_py", "target": "test_thin_phase4_smoke_test_match_job_runs_against_seeded_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L30", "weight": 1.0}, {"source": "test_thin_phase4_smoke_test_resolve_against_seeded_ingredients", "target": "test_thin_phase4_smoke_admin", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L22", "weight": 1.0}, {"source": "test_thin_phase4_smoke_rationale_1", "target": "backend_tests_test_thin_phase4_smoke_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "test_thin_phase4_smoke_test_seed_data_present_and_resolvable", "callee": "get", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L12"}, {"caller_nid": "test_thin_phase4_smoke_test_seed_data_present_and_resolvable", "callee": "json", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L14"}, {"caller_nid": "test_thin_phase4_smoke_test_seed_data_present_and_resolvable", "callee": "len", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L15"}, {"caller_nid": "test_thin_phase4_smoke_test_seed_data_present_and_resolvable", "callee": "len", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L15"}, {"caller_nid": "test_thin_phase4_smoke_test_resolve_against_seeded_ingredients", "callee": "post", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L19"}, {"caller_nid": "test_thin_phase4_smoke_test_resolve_against_seeded_ingredients", "callee": "json", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L25"}, {"caller_nid": "test_thin_phase4_smoke_test_resolve_against_seeded_ingredients", "callee": "lower", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L27"}, {"caller_nid": "test_thin_phase4_smoke_test_match_job_runs_against_seeded_data", "callee": "run_match_job", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L33"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_services_planner_select_py", "label": "select.py", "file_type": "code", "source_file": "backend/app/services/planner/select.py", "source_location": "L1"}, {"id": "select_set_diversity_penalty", "label": "set_diversity_penalty()", "file_type": "code", "source_file": "backend/app/services/planner/select.py", "source_location": "L16"}, {"id": "select_set_score", "label": "_set_score()", "file_type": "code", "source_file": "backend/app/services/planner/select.py", "source_location": "L29"}, {"id": "select_select_set", "label": "select_set()", "file_type": "code", "source_file": "backend/app/services/planner/select.py", "source_location": "L33"}, {"id": "select_rationale_1", "label": "Top-K set enumeration with diversity penalty. Takes the top K (=20) scored reci", "file_type": "rationale", "source_file": "backend/app/services/planner/select.py", "source_location": "L1"}], "edges": [{"source": "backend_app_services_planner_select_py", "target": "itertools", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L9", "weight": 1.0}, {"source": "backend_app_services_planner_select_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L10", "weight": 1.0}, {"source": "backend_app_services_planner_select_py", "target": "app_services_planner_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L12", "weight": 1.0}, {"source": "backend_app_services_planner_select_py", "target": "app_services_planner_types", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L13", "weight": 1.0}, {"source": "backend_app_services_planner_select_py", "target": "select_set_diversity_penalty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L16", "weight": 1.0}, {"source": "backend_app_services_planner_select_py", "target": "select_set_score", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L29", "weight": 1.0}, {"source": "backend_app_services_planner_select_py", "target": "select_select_set", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L33", "weight": 1.0}, {"source": "select_set_score", "target": "select_set_diversity_penalty", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L30", "weight": 1.0}, {"source": "select_select_set", "target": "select_set_score", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L41", "weight": 1.0}, {"source": "select_rationale_1", "target": "backend_app_services_planner_select_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "select_set_diversity_penalty", "callee": "combinations", "source_file": "backend/app/services/planner/select.py", "source_location": "L21"}, {"caller_nid": "select_set_score", "callee": "sum", "source_file": "backend/app/services/planner/select.py", "source_location": "L30"}, {"caller_nid": "select_select_set", "callee": "list", "source_file": "backend/app/services/planner/select.py", "source_location": "L37"}, {"caller_nid": "select_select_set", "callee": "len", "source_file": "backend/app/services/planner/select.py", "source_location": "L40"}, {"caller_nid": "select_select_set", "callee": "sort", "source_file": "backend/app/services/planner/select.py", "source_location": "L43"}, {"caller_nid": "select_select_set", "callee": "float", "source_file": "backend/app/services/planner/select.py", "source_location": "L47"}, {"caller_nid": "select_select_set", "callee": "combinations", "source_file": "backend/app/services/planner/select.py", "source_location": "L48"}, {"caller_nid": "select_select_set", "callee": "list", "source_file": "backend/app/services/planner/select.py", "source_location": "L49"}, {"caller_nid": "select_select_set", "callee": "list", "source_file": "backend/app/services/planner/select.py", "source_location": "L52"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_components_ui_loadingspinner_tsx", "label": "LoadingSpinner.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/LoadingSpinner.tsx", "source_location": "L1"}, {"id": "loadingspinner_loadingspinner", "label": "LoadingSpinner()", "file_type": "code", "source_file": "frontend/src/components/ui/LoadingSpinner.tsx", "source_location": "L10"}], "edges": [{"source": "frontend_src_components_ui_loadingspinner_tsx", "target": "lucide_react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/LoadingSpinner.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_components_ui_loadingspinner_tsx", "target": "frontend_src_components_ui_lib_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/LoadingSpinner.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_components_ui_loadingspinner_tsx", "target": "loadingspinner_loadingspinner", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/LoadingSpinner.tsx", "source_location": "L10", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_components_ui_card_tsx", "label": "Card.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L1"}, {"id": "card_card", "label": "Card()", "file_type": "code", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L8"}, {"id": "card_cardheader", "label": "CardHeader()", "file_type": "code", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L17"}, {"id": "card_cardbody", "label": "CardBody()", "file_type": "code", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L26"}, {"id": "card_cardfooter", "label": "CardFooter()", "file_type": "code", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L35"}], "edges": [{"source": "frontend_src_components_ui_card_tsx", "target": "frontend_src_components_ui_lib_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_components_ui_card_tsx", "target": "card_card", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L8", "weight": 1.0}, {"source": "frontend_src_components_ui_card_tsx", "target": "card_cardheader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L17", "weight": 1.0}, {"source": "frontend_src_components_ui_card_tsx", "target": "card_cardbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L26", "weight": 1.0}, {"source": "frontend_src_components_ui_card_tsx", "target": "card_cardfooter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L35", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_lib_utils_ts", "label": "utils.ts", "file_type": "code", "source_file": "frontend/src/lib/utils.ts", "source_location": "L1"}, {"id": "utils_cn", "label": "cn()", "file_type": "code", "source_file": "frontend/src/lib/utils.ts", "source_location": "L4"}], "edges": [{"source": "frontend_src_lib_utils_ts", "target": "clsx", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/lib/utils.ts", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_lib_utils_ts", "target": "tailwind_merge", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/lib/utils.ts", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_lib_utils_ts", "target": "utils_cn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/lib/utils.ts", "source_location": "L4", "weight": 1.0}], "raw_calls": [{"caller_nid": "utils_cn", "callee": "twMerge", "source_file": "frontend/src/lib/utils.ts", "source_location": "L5"}, {"caller_nid": "utils_cn", "callee": "clsx", "source_file": "frontend/src/lib/utils.ts", "source_location": "L5"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_app_services_planner_types_py", "label": "types.py", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L1"}, {"id": "types_ingredientcost", "label": "IngredientCost", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L11"}, {"id": "types_recipecost", "label": "RecipeCost", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L26"}, {"id": "types_sale_coverage_pct", "label": "sale_coverage_pct()", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L37"}, {"id": "types_pantry_hit_pct", "label": "pantry_hit_pct()", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L43"}, {"id": "types_filterresult", "label": "FilterResult", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L50"}, {"id": "types_scoredrecipe", "label": "ScoredRecipe", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L56"}, {"id": "types_generationresult", "label": "GenerationResult", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L66"}, {"id": "types_rationale_1", "label": "Shared planner data structures.", "file_type": "rationale", "source_file": "backend/app/services/planner/types.py", "source_location": "L1"}], "edges": [{"source": "backend_app_services_planner_types_py", "target": "dataclasses", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_app_services_planner_types_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L5", "weight": 1.0}, {"source": "backend_app_services_planner_types_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L6", "weight": 1.0}, {"source": "backend_app_services_planner_types_py", "target": "uuid", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_app_services_planner_types_py", "target": "types_ingredientcost", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L11", "weight": 1.0}, {"source": "backend_app_services_planner_types_py", "target": "types_recipecost", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L26", "weight": 1.0}, {"source": "backend_app_services_planner_types_py", "target": "types_sale_coverage_pct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L37", "weight": 1.0}, {"source": "backend_app_services_planner_types_py", "target": "types_pantry_hit_pct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L43", "weight": 1.0}, {"source": "backend_app_services_planner_types_py", "target": "types_filterresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L50", "weight": 1.0}, {"source": "backend_app_services_planner_types_py", "target": "types_scoredrecipe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L56", "weight": 1.0}, {"source": "backend_app_services_planner_types_py", "target": "types_generationresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L66", "weight": 1.0}, {"source": "types_rationale_1", "target": "backend_app_services_planner_types_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_components_ui_textarea_tsx", "label": "Textarea.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Textarea.tsx", "source_location": "L1"}, {"id": "textarea_cn", "label": "cn()", "file_type": "code", "source_file": "frontend/src/components/ui/Textarea.tsx", "source_location": "L17"}], "edges": [{"source": "frontend_src_components_ui_textarea_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Textarea.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_components_ui_textarea_tsx", "target": "frontend_src_components_ui_lib_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Textarea.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_components_ui_textarea_tsx", "target": "textarea_cn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Textarea.tsx", "source_location": "L17", "weight": 1.0}], "raw_calls": []}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_pages_login_tsx", "label": "Login.tsx", "file_type": "code", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L1"}, {"id": "login_login", "label": "Login()", "file_type": "code", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L8"}], "edges": [{"source": "frontend_src_pages_login_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_pages_login_tsx", "target": "lucide_react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_pages_login_tsx", "target": "frontend_src_pages_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L3", "weight": 1.0}, {"source": "frontend_src_pages_login_tsx", "target": "frontend_src_pages_components_ui_button", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L4", "weight": 1.0}, {"source": "frontend_src_pages_login_tsx", "target": "frontend_src_pages_components_ui_card", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L5", "weight": 1.0}, {"source": "frontend_src_pages_login_tsx", "target": "frontend_src_pages_components_ui_input", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L6", "weight": 1.0}, {"source": "frontend_src_pages_login_tsx", "target": "login_login", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L8", "weight": 1.0}], "raw_calls": [{"caller_nid": "login_login", "callee": "useState", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L9"}, {"caller_nid": "login_login", "callee": "useState", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L10"}, {"caller_nid": "login_login", "callee": "useState", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L11"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_tests_test_smoke_py", "label": "test_smoke.py", "file_type": "code", "source_file": "backend/tests/test_smoke.py", "source_location": "L1"}, {"id": "test_smoke_test_app_imports", "label": "test_app_imports()", "file_type": "code", "source_file": "backend/tests/test_smoke.py", "source_location": "L15"}, {"id": "test_smoke_test_health", "label": "test_health()", "file_type": "code", "source_file": "backend/tests/test_smoke.py", "source_location": "L21"}, {"id": "test_smoke_test_health_db", "label": "test_health_db()", "file_type": "code", "source_file": "backend/tests/test_smoke.py", "source_location": "L28"}, {"id": "test_smoke_test_router_list_endpoints", "label": "test_router_list_endpoints()", "file_type": "code", "source_file": "backend/tests/test_smoke.py", "source_location": "L49"}, {"id": "test_smoke_rationale_1", "label": "Smoke tests: app boots, routers wire up, no import-time crashes. The router-lis", "file_type": "rationale", "source_file": "backend/tests/test_smoke.py", "source_location": "L1"}, {"id": "test_smoke_rationale_50", "label": "Each canonical GET must respond. 200 (handled), 401 (admin-gated), 404 (hand", "file_type": "rationale", "source_file": "backend/tests/test_smoke.py", "source_location": "L50"}], "edges": [{"source": "backend_tests_test_smoke_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L11", "weight": 1.0}, {"source": "backend_tests_test_smoke_py", "target": "pytest", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L12", "weight": 1.0}, {"source": "backend_tests_test_smoke_py", "target": "test_smoke_test_app_imports", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L15", "weight": 1.0}, {"source": "backend_tests_test_smoke_py", "target": "test_smoke_test_health", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L21", "weight": 1.0}, {"source": "backend_tests_test_smoke_py", "target": "test_smoke_test_health_db", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L28", "weight": 1.0}, {"source": "backend_tests_test_smoke_py", "target": "test_smoke_test_router_list_endpoints", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L49", "weight": 1.0}, {"source": "test_smoke_rationale_1", "target": "backend_tests_test_smoke_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L1", "weight": 1.0}, {"source": "test_smoke_rationale_50", "target": "test_smoke_test_router_list_endpoints", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L50", "weight": 1.0}], "raw_calls": [{"caller_nid": "test_smoke_test_health", "callee": "get", "source_file": "backend/tests/test_smoke.py", "source_location": "L22"}, {"caller_nid": "test_smoke_test_health", "callee": "json", "source_file": "backend/tests/test_smoke.py", "source_location": "L24"}, {"caller_nid": "test_smoke_test_health_db", "callee": "get", "source_file": "backend/tests/test_smoke.py", "source_location": "L29"}, {"caller_nid": "test_smoke_test_health_db", "callee": "json", "source_file": "backend/tests/test_smoke.py", "source_location": "L31"}, {"caller_nid": "test_smoke_test_health_db", "callee": "get", "source_file": "backend/tests/test_smoke.py", "source_location": "L32"}, {"caller_nid": "test_smoke_test_router_list_endpoints", "callee": "get", "source_file": "backend/tests/test_smoke.py", "source_location": "L56"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_components_ui_badge_tsx", "label": "Badge.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Badge.tsx", "source_location": "L1"}, {"id": "badge_badge", "label": "Badge()", "file_type": "code", "source_file": "frontend/src/components/ui/Badge.tsx", "source_location": "L9"}], "edges": [{"source": "frontend_src_components_ui_badge_tsx", "target": "frontend_src_components_ui_lib_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Badge.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_components_ui_badge_tsx", "target": "badge_badge", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Badge.tsx", "source_location": "L9", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_alembic_env_py", "label": "env.py", "file_type": "code", "source_file": "backend/alembic/env.py", "source_location": "L1"}, {"id": "env_run_migrations_offline", "label": "run_migrations_offline()", "file_type": "code", "source_file": "backend/alembic/env.py", "source_location": "L22"}, {"id": "env_run_migrations_online", "label": "run_migrations_online()", "file_type": "code", "source_file": "backend/alembic/env.py", "source_location": "L35"}], "edges": [{"source": "backend_alembic_env_py", "target": "logging_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/env.py", "source_location": "L1", "weight": 1.0}, {"source": "backend_alembic_env_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/env.py", "source_location": "L2", "weight": 1.0}, {"source": "backend_alembic_env_py", "target": "alembic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/env.py", "source_location": "L3", "weight": 1.0}, {"source": "backend_alembic_env_py", "target": "sys", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/alembic/env.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_alembic_env_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/alembic/env.py", "source_location": "L5", "weight": 1.0}, {"source": "backend_alembic_env_py", "target": "app_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/env.py", "source_location": "L9", "weight": 1.0}, {"source": "backend_alembic_env_py", "target": "app_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/alembic/env.py", "source_location": "L10", "weight": 1.0}, {"source": "backend_alembic_env_py", "target": "env_run_migrations_offline", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/env.py", "source_location": "L22", "weight": 1.0}, {"source": "backend_alembic_env_py", "target": "env_run_migrations_online", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/env.py", "source_location": "L35", "weight": 1.0}], "raw_calls": [{"caller_nid": "env_run_migrations_offline", "callee": "get_main_option", "source_file": "backend/alembic/env.py", "source_location": "L23"}, {"caller_nid": "env_run_migrations_offline", "callee": "configure", "source_file": "backend/alembic/env.py", "source_location": "L24"}, {"caller_nid": "env_run_migrations_offline", "callee": "begin_transaction", "source_file": "backend/alembic/env.py", "source_location": "L31"}, {"caller_nid": "env_run_migrations_offline", "callee": "run_migrations", "source_file": "backend/alembic/env.py", "source_location": "L32"}, {"caller_nid": "env_run_migrations_online", "callee": "engine_from_config", "source_file": "backend/alembic/env.py", "source_location": "L36"}, {"caller_nid": "env_run_migrations_online", "callee": "get_section", "source_file": "backend/alembic/env.py", "source_location": "L37"}, {"caller_nid": "env_run_migrations_online", "callee": "connect", "source_file": "backend/alembic/env.py", "source_location": "L42"}, {"caller_nid": "env_run_migrations_online", "callee": "configure", "source_file": "backend/alembic/env.py", "source_location": "L43"}, {"caller_nid": "env_run_migrations_online", "callee": "begin_transaction", "source_file": "backend/alembic/env.py", "source_location": "L48"}, {"caller_nid": "env_run_migrations_online", "callee": "run_migrations", "source_file": "backend/alembic/env.py", "source_location": "L49"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_pages_dashboard_tsx", "label": "Dashboard.tsx", "file_type": "code", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L1"}, {"id": "dashboard_handlesend", "label": "handleSend()", "file_type": "code", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L282"}], "edges": [{"source": "frontend_src_pages_dashboard_tsx", "target": "react_query", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L1", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L2", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "react_router_dom", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L3", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "lucide_react", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L4", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "react_hot_toast", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L8", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "dnd", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L9", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "frontend_src_pages_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L20", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "frontend_src_pages_types", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L21", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "frontend_src_pages_components_ui_badge", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L22", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "frontend_src_pages_components_ui_card", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L23", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "frontend_src_pages_components_ui_skeleton", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L24", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "frontend_src_pages_components_ui_emptystate", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L25", "weight": 1.0}, {"source": "frontend_src_pages_dashboard_tsx", "target": "dashboard_handlesend", "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L282", "weight": 1.0}], "raw_calls": [{"caller_nid": "dashboard_handlesend", "callee": "setSendingVoteEmail", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L283"}, {"caller_nid": "dashboard_handlesend", "callee": "triggerOrchestrate", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L285"}, {"caller_nid": "dashboard_handlesend", "callee": "success", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L287"}, {"caller_nid": "dashboard_handlesend", "callee": "error", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L289"}, {"caller_nid": "dashboard_handlesend", "callee": "setSendingVoteEmail", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L291"}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_tests_test_config_py", "label": "test_config.py", "file_type": "code", "source_file": "backend/tests/test_config.py", "source_location": "L1"}, {"id": "test_config_test_database_url_required", "label": "test_database_url_required()", "file_type": "code", "source_file": "backend/tests/test_config.py", "source_location": "L12"}, {"id": "test_config_rationale_1", "label": "Config fail-fast: importing app.config with DATABASE_URL unset must raise.", "file_type": "rationale", "source_file": "backend/tests/test_config.py", "source_location": "L1"}, {"id": "test_config_rationale_13", "label": "Settings() with empty DATABASE_URL \u2192 RuntimeError at instantiation.", "file_type": "rationale", "source_file": "backend/tests/test_config.py", "source_location": "L13"}], "edges": [{"source": "backend_tests_test_config_py", "target": "importlib", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_config.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_tests_test_config_py", "target": "pytest", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_config.py", "source_location": "L9", "weight": 1.0}, {"source": "backend_tests_test_config_py", "target": "test_config_test_database_url_required", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_config.py", "source_location": "L12", "weight": 1.0}, {"source": "test_config_rationale_1", "target": "backend_tests_test_config_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_config.py", "source_location": "L1", "weight": 1.0}, {"source": "test_config_rationale_13", "target": "test_config_test_database_url_required", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_config.py", "source_location": "L13", "weight": 1.0}], "raw_calls": [{"caller_nid": "test_config_test_database_url_required", "callee": "setenv", "source_file": "backend/tests/test_config.py", "source_location": "L16"}, {"caller_nid": "test_config_test_database_url_required", "callee": "raises", "source_file": "backend/tests/test_config.py", "source_location": "L18"}, {"caller_nid": "test_config_test_database_url_required", "callee": "Settings", "source_file": "backend/tests/test_config.py", "source_location": "L19"}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "backend_tests_test_alembic_py", "label": "test_alembic.py", "file_type": "code", "source_file": "backend/tests/test_alembic.py", "source_location": "L1"}, {"id": "test_alembic_test_alembic_upgrade_head_roundtrip", "label": "test_alembic_upgrade_head_roundtrip()", "file_type": "code", "source_file": "backend/tests/test_alembic.py", "source_location": "L21"}, {"id": "test_alembic_rationale_1", "label": "Alembic round-trip test. Verifies that ``alembic upgrade head`` followed by ``a", "file_type": "rationale", "source_file": "backend/tests/test_alembic.py", "source_location": "L1"}], "edges": [{"source": "backend_tests_test_alembic_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_alembic.py", "source_location": "L12", "weight": 1.0}, {"source": "backend_tests_test_alembic_py", "target": "pathlib", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_alembic.py", "source_location": "L13", "weight": 1.0}, {"source": "backend_tests_test_alembic_py", "target": "subprocess", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_alembic.py", "source_location": "L14", "weight": 1.0}, {"source": "backend_tests_test_alembic_py", "target": "pytest", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/tests/test_alembic.py", "source_location": "L15", "weight": 1.0}, {"source": "backend_tests_test_alembic_py", "target": "test_alembic_test_alembic_upgrade_head_roundtrip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_alembic.py", "source_location": "L21", "weight": 1.0}, {"source": "test_alembic_rationale_1", "target": "backend_tests_test_alembic_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_alembic.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "test_alembic_test_alembic_upgrade_head_roundtrip", "callee": "get", "source_file": "backend/tests/test_alembic.py", "source_location": "L22"}, {"caller_nid": "test_alembic_test_alembic_upgrade_head_roundtrip", "callee": "get", "source_file": "backend/tests/test_alembic.py", "source_location": "L22"}, {"caller_nid": "test_alembic_test_alembic_upgrade_head_roundtrip", "callee": "copy", "source_file": "backend/tests/test_alembic.py", "source_location": "L25"}, {"caller_nid": "test_alembic_test_alembic_upgrade_head_roundtrip", "callee": "run", "source_file": "backend/tests/test_alembic.py", "source_location": "L31"}, {"caller_nid": "test_alembic_test_alembic_upgrade_head_roundtrip", "callee": "str", "source_file": "backend/tests/test_alembic.py", "source_location": "L33"}, {"caller_nid": "test_alembic_test_alembic_upgrade_head_roundtrip", "callee": "run", "source_file": "backend/tests/test_alembic.py", "source_location": "L40"}, {"caller_nid": "test_alembic_test_alembic_upgrade_head_roundtrip", "callee": "str", "source_file": "backend/tests/test_alembic.py", "source_location": "L42"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_tailwind_config_js", "label": "tailwind.config.js", "file_type": "code", "source_file": "frontend/tailwind.config.js", "source_location": "L1"}], "edges": [], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_types_index_ts", "label": "index.ts", "file_type": "code", "source_file": "frontend/src/types/index.ts", "source_location": "L1"}], "edges": [], "raw_calls": []}
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"nodes": [{"id": "frontend_src_lib_toast_ts", "label": "toast.ts", "file_type": "code", "source_file": "frontend/src/lib/toast.ts", "source_location": "L1"}], "edges": [{"source": "frontend_src_lib_toast_ts", "target": "react_hot_toast", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "frontend/src/lib/toast.ts", "source_location": "L1", "weight": 1.0}], "raw_calls": []}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More