diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index f3240b2..cb4c102 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,11 +1,11 @@ # Graph Report - 2e709500-79ab-403f-9ca0-3f027ac9f36e (2026-06-17) ## Corpus Check -- 57 files · ~323,606 words +- 58 files · ~324,818 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 522 nodes · 567 edges · 93 communities (86 shown, 7 thin omitted) +- 536 nodes · 580 edges · 94 communities (87 shown, 7 thin omitted) - Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 4 edges (avg confidence: 0.8) - Token cost: 0 input · 0 output @@ -23,9 +23,9 @@ - [[_COMMUNITY_Community 5|Community 5]] - [[_COMMUNITY_Community 6|Community 6]] - [[_COMMUNITY_Community 7|Community 7]] -- [[_COMMUNITY_Community 9|Community 9]] +- [[_COMMUNITY_Community 8|Community 8]] - [[_COMMUNITY_Community 10|Community 10]] -- [[_COMMUNITY_Community 12|Community 12]] +- [[_COMMUNITY_Community 11|Community 11]] - [[_COMMUNITY_Community 13|Community 13]] - [[_COMMUNITY_Community 14|Community 14]] - [[_COMMUNITY_Community 15|Community 15]] @@ -49,7 +49,8 @@ - [[_COMMUNITY_Community 33|Community 33]] - [[_COMMUNITY_Community 34|Community 34]] - [[_COMMUNITY_Community 35|Community 35]] -- [[_COMMUNITY_Community 40|Community 40]] +- [[_COMMUNITY_Community 36|Community 36]] +- [[_COMMUNITY_Community 41|Community 41]] ## God Nodes (most connected - your core abstractions) 1. `Performance Testing Scripts` - 12 edges @@ -73,7 +74,7 @@ - `POST()` --calls--> `logApiRequest()` [INFERRED] src/pages/api/newsletter.ts → src/utils/logger.ts -## Communities (93 total, 7 thin omitted) +## Communities (94 total, 7 thin omitted) ### Community 0 - "Community 0" Cohesion: 0.05 @@ -105,90 +106,94 @@ Nodes (15): 1. Modular Monolith Over Premature Microservices, 2. Role-Based Acce ### Community 7 - "Community 7" Cohesion: 0.14 -Nodes (13): 1. Multi-District Deployment Complexity, 2. Security and Compliance, 3. Reliability Under Constraint, Architecture Decisions That Paid Off, code:java (@Configuration), code:java (@Service), code:java (@Component), code:yaml (# District-specific feature configuration) (+5 more) +Nodes (13): 1. Database-per-district with central aggregation, 2. Offline-first for field-critical modules, 3. Audit logging baked into the data layer, Building something similar?, code:yaml (# Per-district deployment descriptor), code:java (@Scheduled(fixedDelay = 300_000) // every 5 minutes), code:yaml (features:), The Architecture We Committed To (+5 more) -### Community 9 - "Community 9" -Cohesion: 0.17 -Nodes (11): 1. Customer Service Automation, 2. Predictive Analytics, 3. Process Automation, 4. Intelligent Document Processing, code:python (from transformers import pipeline), code:python (import pandas as pd), code:python (# Example: Extracting structured data from forms), Implementation Considerations (+3 more) +### Community 8 - "Community 8" +Cohesion: 0.14 +Nodes (13): 1. Multi-District Deployment Complexity, 2. Security and Compliance, 3. Reliability Under Constraint, Architecture Decisions That Paid Off, code:java (@Configuration), code:java (@Service), code:java (@Component), code:yaml (# District-specific feature configuration) (+5 more) ### Community 10 - "Community 10" Cohesion: 0.17 +Nodes (11): 1. Customer Service Automation, 2. Predictive Analytics, 3. Process Automation, 4. Intelligent Document Processing, code:python (from transformers import pipeline), code:python (import pandas as pd), code:python (# Example: Extracting structured data from forms), Implementation Considerations (+3 more) + +### Community 11 - "Community 11" +Cohesion: 0.17 Nodes (11): Code Example, code:astro (---), code:javascript (// Traditional SPA: Everything loads upfront), code:typescript (// src/content/config.ts), code:bash (npm create astro@latest), Content Collections: Type-Safe Content, Getting Started, How Astro Differs from Traditional Frameworks (+3 more) -### Community 13 - "Community 13" +### Community 14 - "Community 14" Cohesion: 0.18 Nodes (10): code:hcl (# Define AWS EC2 instance), code:dockerfile (# Multi-stage build for a Go application), code:yaml (# AWS Cost allocation tags), Common Pitfalls, Conclusion, Containerization as a Migration Strategy, Cost Optimization Strategies, Infrastructure as Code (+2 more) -### Community 17 - "Community 17" +### Community 18 - "Community 18" Cohesion: 0.43 Nodes (6): trackCaseStudyView(), trackEvent(), trackExternalLink(), trackFormSubmit(), trackNewsletterSignup(), trackPortfolioFilter() -### Community 18 - "Community 18" +### Community 19 - "Community 19" Cohesion: 0.36 Nodes (7): extract_scores(), get_issues(), main(), Run Lighthouse audit on a URL, Extract key scores from Lighthouse data, Extract issues from Lighthouse audit, run_lighthouse() -### Community 19 - "Community 19" +### Community 20 - "Community 20" Cohesion: 0.46 Nodes (7): captureScreenshot(), ensureDir(), generateIndex(), main(), screenshotPath(), setTheme(), waitForPageReady() -### Community 20 - "Community 20" +### Community 21 - "Community 21" Cohesion: 0.36 Nodes (4): deleteFromDB(), getAllFromDB(), openDB(), processSyncQueue() -### Community 21 - "Community 21" +### Community 22 - "Community 22" Cohesion: 0.46 Nodes (7): checkRateLimit(), corsHeaders(), escapeHtml(), OPTIONS(), POST(), sendContactEmail(), validateContactForm() -### Community 22 - "Community 22" +### Community 23 - "Community 23" Cohesion: 0.43 Nodes (6): trackCaseStudyView(), trackEvent(), trackExternalLink(), trackFormSubmit(), trackNewsletterSignup(), trackPortfolioFilter() -### Community 23 - "Community 23" +### Community 24 - "Community 24" Cohesion: 0.36 Nodes (7): extract_scores(), get_issues(), main(), Run Lighthouse audit on a URL, Extract key scores from Lighthouse data, Extract issues from Lighthouse audit, run_lighthouse() -### Community 24 - "Community 24" +### Community 25 - "Community 25" Cohesion: 0.46 Nodes (7): captureScreenshot(), ensureDir(), generateIndex(), main(), screenshotPath(), setTheme(), waitForPageReady() -### Community 25 - "Community 25" +### Community 26 - "Community 26" Cohesion: 0.36 Nodes (4): deleteFromDB(), getAllFromDB(), openDB(), processSyncQueue() -### Community 26 - "Community 26" -Cohesion: 0.48 -Nodes (5): initAllAnimations(), initButtonRipple(), initCounters(), initProgressBars(), initScrollReveal() - ### Community 27 - "Community 27" Cohesion: 0.48 -Nodes (5): extractJsonLd(), main(), validateOpenGraph(), validatePage(), validateTwitterCard() +Nodes (5): initAllAnimations(), initButtonRipple(), initCounters(), initProgressBars(), initScrollReveal() ### Community 28 - "Community 28" Cohesion: 0.48 -Nodes (5): initAllAnimations(), initButtonRipple(), initCounters(), initProgressBars(), initScrollReveal() +Nodes (5): extractJsonLd(), main(), validateOpenGraph(), validatePage(), validateTwitterCard() ### Community 29 - "Community 29" Cohesion: 0.48 -Nodes (5): extractJsonLd(), main(), validateOpenGraph(), validatePage(), validateTwitterCard() +Nodes (5): initAllAnimations(), initButtonRipple(), initCounters(), initProgressBars(), initScrollReveal() ### Community 30 - "Community 30" +Cohesion: 0.48 +Nodes (5): extractJsonLd(), main(), validateOpenGraph(), validatePage(), validateTwitterCard() + +### Community 31 - "Community 31" Cohesion: 0.47 Nodes (5): main(), measure_response_time(), print_stats(), Measure response time for a URL over multiple iterations, Print statistics for response times -### Community 32 - "Community 32" +### Community 33 - "Community 33" Cohesion: 0.47 Nodes (5): main(), measure_response_time(), print_stats(), Measure response time for a URL over multiple iterations, Print statistics for response times -### Community 34 - "Community 34" -Cohesion: 0.6 -Nodes (3): formatUptime(), GET(), percentile() - ### Community 35 - "Community 35" Cohesion: 0.6 Nodes (3): formatUptime(), GET(), percentile() +### Community 36 - "Community 36" +Cohesion: 0.6 +Nodes (3): formatUptime(), GET(), percentile() + ## Knowledge Gaps -- **111 isolated node(s):** `Run Lighthouse audit on a URL`, `Extract key scores from Lighthouse data`, `Extract issues from Lighthouse audit`, `Measure response time for a URL over multiple iterations`, `Print statistics for response times` (+106 more) +- **120 isolated node(s):** `Run Lighthouse audit on a URL`, `Extract key scores from Lighthouse data`, `Extract issues from Lighthouse audit`, `Measure response time for a URL over multiple iterations`, `Print statistics for response times` (+115 more) These have ≤1 connection - possible missing edges or undocumented components. - **7 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. @@ -198,7 +203,7 @@ _Questions this graph is uniquely positioned to answer:_ - **Are the 2 inferred relationships involving `captureException()` (e.g. with `sendContactEmail()` and `subscribeToNewsletter()`) actually correct?** _`captureException()` has 2 INFERRED edges - model-reasoned connections that need verification._ - **What connects `Run Lighthouse audit on a URL`, `Extract key scores from Lighthouse data`, `Extract issues from Lighthouse audit` to the rest of the system?** - _111 weakly-connected nodes found - possible documentation gaps or missing edges._ + _120 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `Community 0` be split into smaller, more focused modules?** _Cohesion score 0.05 - nodes in this community are weakly interconnected._ - **Should `Community 1` be split into smaller, more focused modules?** diff --git a/graphify-out/cache/ast/2feace1a4304c7f76eb121c62cf676af113263ee31d1aef7b3021409a0c2f5e1.json b/graphify-out/cache/ast/2feace1a4304c7f76eb121c62cf676af113263ee31d1aef7b3021409a0c2f5e1.json new file mode 100644 index 0000000..7068f5a --- /dev/null +++ b/graphify-out/cache/ast/2feace1a4304c7f76eb121c62cf676af113263ee31d1aef7b3021409a0c2f5e1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "label": "contact.ts", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L1"}, {"id": "api_contact_checkratelimit", "label": "checkRateLimit()", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L17"}, {"id": "api_contact_validatecontactform", "label": "validateContactForm()", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L84"}, {"id": "api_contact_readsmtpconfig", "label": "readSmtpConfig()", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L147"}, {"id": "api_contact_gettransporter", "label": "getTransporter()", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L188"}, {"id": "api_contact_sendcontactemail", "label": "sendContactEmail()", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L295"}, {"id": "api_contact_escapehtml", "label": "escapeHtml()", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L468"}, {"id": "api_contact_corsheaders", "label": "corsHeaders()", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L482"}, {"id": "api_contact_options", "label": "OPTIONS()", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L507"}, {"id": "api_contact_post", "label": "POST()", "file_type": "code", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L514"}], "edges": [{"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "astro", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L1", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_utils_logger_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L2", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "utils_logger_logger", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L2", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "utils_logger_logapirequest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L2", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_utils_sentry_ts", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L3", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "utils_sentry_captureexception", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L3", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "api_contact_checkratelimit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L17", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "api_contact_validatecontactform", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L84", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "api_contact_readsmtpconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L147", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "api_contact_gettransporter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L188", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "api_contact_sendcontactemail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L295", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "api_contact_escapehtml", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L468", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "api_contact_corsheaders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L482", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "api_contact_options", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L507", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_pages_api_contact_ts", "target": "api_contact_post", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L514", "weight": 1.0}, {"source": "api_contact_sendcontactemail", "target": "api_contact_readsmtpconfig", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L296", "weight": 1.0}, {"source": "api_contact_sendcontactemail", "target": "api_contact_gettransporter", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L311", "weight": 1.0}, {"source": "api_contact_sendcontactemail", "target": "api_contact_escapehtml", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L370", "weight": 1.0}, {"source": "api_contact_options", "target": "api_contact_corsheaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L508", "weight": 1.0}, {"source": "api_contact_post", "target": "api_contact_checkratelimit", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L520", "weight": 1.0}, {"source": "api_contact_post", "target": "api_contact_corsheaders", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L522", "weight": 1.0}, {"source": "api_contact_post", "target": "api_contact_validatecontactform", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L599", "weight": 1.0}, {"source": "api_contact_post", "target": "api_contact_sendcontactemail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L622", "weight": 1.0}], "raw_calls": [{"caller_nid": "api_contact_checkratelimit", "callee": "now", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L18"}, {"caller_nid": "api_contact_checkratelimit", "callee": "get", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L21"}, {"caller_nid": "api_contact_checkratelimit", "callee": "filter", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L23"}, {"caller_nid": "api_contact_checkratelimit", "callee": "set", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L31"}, {"caller_nid": "api_contact_checkratelimit", "callee": "push", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L35"}, {"caller_nid": "api_contact_checkratelimit", "callee": "set", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L36"}, {"caller_nid": "api_contact_validatecontactform", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L85"}, {"caller_nid": "api_contact_validatecontactform", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L88"}, {"caller_nid": "api_contact_validatecontactform", "callee": "test", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L91"}, {"caller_nid": "api_contact_validatecontactform", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L91"}, {"caller_nid": "api_contact_validatecontactform", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L94"}, {"caller_nid": "api_contact_validatecontactform", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L97"}, {"caller_nid": "api_contact_validatecontactform", "callee": "test", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L97"}, {"caller_nid": "api_contact_validatecontactform", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L97"}, {"caller_nid": "api_contact_validatecontactform", "callee": "includes", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L100"}, {"caller_nid": "api_contact_validatecontactform", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L103"}, {"caller_nid": "api_contact_validatecontactform", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L106"}, {"caller_nid": "api_contact_readsmtpconfig", "callee": "Number", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L169"}, {"caller_nid": "api_contact_readsmtpconfig", "callee": "Number", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L179"}, {"caller_nid": "api_contact_readsmtpconfig", "callee": "Number", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L180"}, {"caller_nid": "api_contact_readsmtpconfig", "callee": "Number", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L181"}, {"caller_nid": "api_contact_gettransporter", "callee": "(async () => {\n const nodemailer = await import('nodemailer');\n const transport = nodemailer.default.createTransport({\n host: cfg.host,\n port: cfg.port,\n secure: false, // 587 uses STARTTLS, not implicit TLS\n requireTLS: cfg.requireTLS,\n auth: {\n user: cfg.user,\n pass: cfg.pass,\n },\n connectionTimeout: cfg.connectionTimeout,\n greetingTimeout: cfg.greetingTimeout,\n socketTimeout: cfg.socketTimeout,\n tls: {\n // Hostinger occasionally serves an intermediate cert chain that\n // node's default verifier rejects. Keep this off for parity with\n // the prior working configuration.\n rejectUnauthorized: false,\n },\n });\n\n // NOTE: we deliberately do NOT log cfg.pass. Logs go to platform\n // stdout and are user-visible in the Operations \u2192 Logs tab.\n console.log('[api.contact] SMTP transport created', {\n host: cfg.host,\n port: cfg.port,\n user: cfg.user,\n from: `\"${cfg.fromName}\" <${cfg.fromAddress}>`,\n adminRecipient: cfg.adminRecipient,\n requireTLS: cfg.requireTLS,\n timeouts: {\n connection: cfg.connectionTimeout,\n greeting: cfg.greetingTimeout,\n socket: cfg.socketTimeout,\n },\n });\n logger.info('api.contact', 'SMTP transport created', {\n host: cfg.host,\n port: cfg.port,\n user: cfg.user,\n requireTLS: cfg.requireTLS,\n });\n\n smtpTransporter = transport;\n return transport;\n })", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L192"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "info", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L300"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "sendMail", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L345"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "join", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L351"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "toISOString", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L365"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "toISOString", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L378"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "log", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L382"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "sendMail", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L390"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "join", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L394"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "toLocaleDateString", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L405"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "toLocaleDateString", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L422"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "log", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L432"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "includes", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L442"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "warn", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L443"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "error", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L451"}, {"caller_nid": "api_contact_sendcontactemail", "callee": "captureException", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L460"}, {"caller_nid": "api_contact_escapehtml", "callee": "replace", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L469"}, {"caller_nid": "api_contact_escapehtml", "callee": "replace", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L469"}, {"caller_nid": "api_contact_escapehtml", "callee": "replace", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L469"}, {"caller_nid": "api_contact_escapehtml", "callee": "replace", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L469"}, {"caller_nid": "api_contact_escapehtml", "callee": "replace", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L469"}, {"caller_nid": "api_contact_corsheaders", "callee": "includes", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L492"}, {"caller_nid": "api_contact_options", "callee": "get", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L508"}, {"caller_nid": "api_contact_post", "callee": "now", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L516"}, {"caller_nid": "api_contact_post", "callee": "get", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L517"}, {"caller_nid": "api_contact_post", "callee": "String", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L523"}, {"caller_nid": "api_contact_post", "callee": "String", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L524"}, {"caller_nid": "api_contact_post", "callee": "String", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L525"}, {"caller_nid": "api_contact_post", "callee": "ceil", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L525"}, {"caller_nid": "api_contact_post", "callee": "logApiRequest", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L529"}, {"caller_nid": "api_contact_post", "callee": "stringify", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L531"}, {"caller_nid": "api_contact_post", "callee": "parseInt", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L540"}, {"caller_nid": "api_contact_post", "callee": "get", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L540"}, {"caller_nid": "api_contact_post", "callee": "stringify", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L543"}, {"caller_nid": "api_contact_post", "callee": "get", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L551"}, {"caller_nid": "api_contact_post", "callee": "includes", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L552"}, {"caller_nid": "api_contact_post", "callee": "json", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L553"}, {"caller_nid": "api_contact_post", "callee": "formData", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L555"}, {"caller_nid": "api_contact_post", "callee": "fromEntries", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L556"}, {"caller_nid": "api_contact_post", "callee": "entries", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L556"}, {"caller_nid": "api_contact_post", "callee": "stringify", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L560"}, {"caller_nid": "api_contact_post", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L567"}, {"caller_nid": "api_contact_post", "callee": "String", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L567"}, {"caller_nid": "api_contact_post", "callee": "stringify", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L570"}, {"caller_nid": "api_contact_post", "callee": "toLowerCase", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L577"}, {"caller_nid": "api_contact_post", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L577"}, {"caller_nid": "api_contact_post", "callee": "String", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L577"}, {"caller_nid": "api_contact_post", "callee": "includes", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L578"}, {"caller_nid": "api_contact_post", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L583"}, {"caller_nid": "api_contact_post", "callee": "String", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L583"}, {"caller_nid": "api_contact_post", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L590"}, {"caller_nid": "api_contact_post", "callee": "String", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L590"}, {"caller_nid": "api_contact_post", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L591"}, {"caller_nid": "api_contact_post", "callee": "String", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L591"}, {"caller_nid": "api_contact_post", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L592"}, {"caller_nid": "api_contact_post", "callee": "String", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L592"}, {"caller_nid": "api_contact_post", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L593"}, {"caller_nid": "api_contact_post", "callee": "String", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L593"}, {"caller_nid": "api_contact_post", "callee": "trim", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L594"}, {"caller_nid": "api_contact_post", "callee": "String", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L594"}, {"caller_nid": "api_contact_post", "callee": "stringify", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L602"}, {"caller_nid": "api_contact_post", "callee": "log", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L616"}, {"caller_nid": "api_contact_post", "callee": "catch", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L622"}, {"caller_nid": "api_contact_post", "callee": "then", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L622"}, {"caller_nid": "api_contact_post", "callee": "logApiRequest", "is_member_call": false, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L673"}, {"caller_nid": "api_contact_post", "callee": "now", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L679"}, {"caller_nid": "api_contact_post", "callee": "stringify", "is_member_call": true, "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/pages/api/contact.ts", "source_location": "L682"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/4549952bbad371547e28ca81827e9c1bd5eb8deeeeb850a2115c7539f8fd244d.json b/graphify-out/cache/ast/4549952bbad371547e28ca81827e9c1bd5eb8deeeeb850a2115c7539f8fd244d.json new file mode 100644 index 0000000..5ce6498 --- /dev/null +++ b/graphify-out/cache/ast/4549952bbad371547e28ca81827e9c1bd5eb8deeeeb850a2115c7539f8fd244d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_content_blog_deploying_police_management_system_bihar_md", "label": "deploying-police-management-system-bihar.md", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L1"}, {"id": "blog_deploying_police_management_system_bihar_the_starting_point", "label": "The Starting Point", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L18"}, {"id": "blog_deploying_police_management_system_bihar_the_architecture_we_committed_to", "label": "The Architecture We Committed To", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L29"}, {"id": "blog_deploying_police_management_system_bihar_1_database_per_district_with_central_aggregation", "label": "1. Database-per-district with central aggregation", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L35"}, {"id": "blog_deploying_police_management_system_bihar_codeblock_1", "label": "code:yaml (# Per-district deployment descriptor)", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L39"}, {"id": "blog_deploying_police_management_system_bihar_2_offline_first_for_field_critical_modules", "label": "2. Offline-first for field-critical modules", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L51"}, {"id": "blog_deploying_police_management_system_bihar_codeblock_2", "label": "code:java (@Scheduled(fixedDelay = 300_000) // every 5 minutes)", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L55"}, {"id": "blog_deploying_police_management_system_bihar_3_audit_logging_baked_into_the_data_layer", "label": "3. Audit logging baked into the data layer", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L70"}, {"id": "blog_deploying_police_management_system_bihar_the_rollout_plan_that_actually_held_up", "label": "The Rollout Plan That Actually Held Up", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L74"}, {"id": "blog_deploying_police_management_system_bihar_codeblock_3", "label": "code:yaml (features:)", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L82"}, {"id": "blog_deploying_police_management_system_bihar_what_broke_because_something_always_does", "label": "What Broke (Because Something Always Does)", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L95"}, {"id": "blog_deploying_police_management_system_bihar_the_numbers", "label": "The Numbers", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L103"}, {"id": "blog_deploying_police_management_system_bihar_what_we_d_tell_anyone_attempting_this", "label": "What We'd Tell Anyone Attempting This", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L113"}, {"id": "blog_deploying_police_management_system_bihar_building_something_similar", "label": "Building something similar?", "file_type": "document", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L121"}], "edges": [{"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_content_blog_deploying_police_management_system_bihar_md", "target": "blog_deploying_police_management_system_bihar_the_starting_point", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L18", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_content_blog_deploying_police_management_system_bihar_md", "target": "blog_deploying_police_management_system_bihar_the_architecture_we_committed_to", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L29", "weight": 1.0}, {"source": "blog_deploying_police_management_system_bihar_the_architecture_we_committed_to", "target": "blog_deploying_police_management_system_bihar_1_database_per_district_with_central_aggregation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L35", "weight": 1.0}, {"source": "blog_deploying_police_management_system_bihar_1_database_per_district_with_central_aggregation", "target": "blog_deploying_police_management_system_bihar_codeblock_1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L39", "weight": 1.0}, {"source": "blog_deploying_police_management_system_bihar_the_architecture_we_committed_to", "target": "blog_deploying_police_management_system_bihar_2_offline_first_for_field_critical_modules", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L51", "weight": 1.0}, {"source": "blog_deploying_police_management_system_bihar_2_offline_first_for_field_critical_modules", "target": "blog_deploying_police_management_system_bihar_codeblock_2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L55", "weight": 1.0}, {"source": "blog_deploying_police_management_system_bihar_the_architecture_we_committed_to", "target": "blog_deploying_police_management_system_bihar_3_audit_logging_baked_into_the_data_layer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L70", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_content_blog_deploying_police_management_system_bihar_md", "target": "blog_deploying_police_management_system_bihar_the_rollout_plan_that_actually_held_up", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L74", "weight": 1.0}, {"source": "blog_deploying_police_management_system_bihar_the_rollout_plan_that_actually_held_up", "target": "blog_deploying_police_management_system_bihar_codeblock_3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L82", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_content_blog_deploying_police_management_system_bihar_md", "target": "blog_deploying_police_management_system_bihar_what_broke_because_something_always_does", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L95", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_content_blog_deploying_police_management_system_bihar_md", "target": "blog_deploying_police_management_system_bihar_the_numbers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L103", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_content_blog_deploying_police_management_system_bihar_md", "target": "blog_deploying_police_management_system_bihar_what_we_d_tell_anyone_attempting_this", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L113", "weight": 1.0}, {"source": "home_agent_ai_agent_backend_workspace_2e709500_79ab_403f_9ca0_3f027ac9f36e_src_content_blog_deploying_police_management_system_bihar_md", "target": "blog_deploying_police_management_system_bihar_building_something_similar", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/home/agent/ai-agent/backend/workspace/2e709500-79ab-403f-9ca0-3f027ac9f36e/src/content/blog/deploying-police-management-system-bihar.md", "source_location": "L121", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} \ No newline at end of file diff --git a/graphify-out/graph.html b/graphify-out/graph.html index eb64985..c445430 100644 --- a/graphify-out/graph.html +++ b/graphify-out/graph.html @@ -61,12 +61,12 @@
-