From 8860c27285c0fd74bbf75f8bb45925253bd1e932 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Mon, 17 Aug 2026 23:16:29 -0300 Subject: [PATCH 01/50] todo --- .vscode/settings.json | 1 + TODO.md | 2 - graphify-out/.graphify_labels.json | 12 +- graphify-out/GRAPH_REPORT.md | 246 ++-- graphify-out/graph.json | 2072 +++++++++++++++++++++------- graphify-out/manifest.json | 49 +- 6 files changed, 1759 insertions(+), 623 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/TODO.md b/TODO.md index b933293..e5e0c3d 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,3 @@ -- [ ] OpenUI and shadcn/ui - - [ ] Github OAuth - [ ] Implement an user management system so the user can customize its name, change password, profile picture and settings - [ ] Make an Password Recovery system and 2FA using the Email Protocol diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index f2f53dd..da3363e 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -207,9 +207,14 @@ "205": "Community 205", "206": "Community 206", "207": "Community 207", + "208": "Community 208", "209": "Community 209", "210": "Community 210", "211": "Community 211", + "212": "Community 212", + "213": "Community 213", + "214": "Community 214", + "215": "Community 215", "216": "Community 216", "217": "Community 217", "218": "Community 218", @@ -257,6 +262,7 @@ "260": "Community 260", "261": "Community 261", "262": "Community 262", + "263": "Community 263", "264": "Community 264", "265": "Community 265", "266": "Community 266", @@ -467,6 +473,7 @@ "471": "Community 471", "472": "Community 472", "473": "Community 473", + "474": "Community 474", "475": "Community 475", "476": "Community 476", "477": "Community 477", @@ -478,13 +485,16 @@ "483": "Community 483", "484": "Community 484", "485": "Community 485", + "486": "Community 486", "487": "Community 487", "488": "Community 488", "489": "Community 489", "490": "Community 490", + "491": "Community 491", "492": "Community 492", "493": "Community 493", "494": "Community 494", + "495": "Community 495", "496": "Community 496", "497": "Community 497", "498": "Community 498", @@ -497,14 +507,12 @@ "505": "Community 505", "506": "Community 506", "507": "Community 507", - "509": "Community 509", "510": "Community 510", "511": "Community 511", "513": "Community 513", "514": "Community 514", "515": "Community 515", "516": "Community 516", - "518": "Community 518", "520": "Community 520", "522": "Community 522", "527": "Community 527" diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index dd75a55..0320906 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ -# Graph Report - server (2026-08-16) +# Graph Report - server (2026-08-17) ## Corpus Check -- 102 files · ~46,927 words +- 105 files · ~49,247 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 5461 nodes · 7350 edges · 509 communities (284 shown, 225 thin omitted) -- Extraction: 83% EXTRACTED · 17% INFERRED · 0% AMBIGUOUS · INFERRED: 1221 edges (avg confidence: 0.69) +- 5515 nodes · 7407 edges · 517 communities (295 shown, 222 thin omitted) +- Extraction: 83% EXTRACTED · 17% INFERRED · 0% AMBIGUOUS · INFERRED: 1227 edges (avg confidence: 0.69) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `5f72f66a` +- Built from commit: `6e1a058c` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -223,9 +223,14 @@ - [[_COMMUNITY_Community 205|Community 205]] - [[_COMMUNITY_Community 206|Community 206]] - [[_COMMUNITY_Community 207|Community 207]] +- [[_COMMUNITY_Community 208|Community 208]] - [[_COMMUNITY_Community 209|Community 209]] - [[_COMMUNITY_Community 210|Community 210]] - [[_COMMUNITY_Community 211|Community 211]] +- [[_COMMUNITY_Community 212|Community 212]] +- [[_COMMUNITY_Community 213|Community 213]] +- [[_COMMUNITY_Community 214|Community 214]] +- [[_COMMUNITY_Community 215|Community 215]] - [[_COMMUNITY_Community 216|Community 216]] - [[_COMMUNITY_Community 217|Community 217]] - [[_COMMUNITY_Community 218|Community 218]] @@ -273,6 +278,7 @@ - [[_COMMUNITY_Community 260|Community 260]] - [[_COMMUNITY_Community 261|Community 261]] - [[_COMMUNITY_Community 262|Community 262]] +- [[_COMMUNITY_Community 263|Community 263]] - [[_COMMUNITY_Community 264|Community 264]] - [[_COMMUNITY_Community 265|Community 265]] - [[_COMMUNITY_Community 266|Community 266]] @@ -474,6 +480,7 @@ - [[_COMMUNITY_Community 471|Community 471]] - [[_COMMUNITY_Community 472|Community 472]] - [[_COMMUNITY_Community 473|Community 473]] +- [[_COMMUNITY_Community 474|Community 474]] - [[_COMMUNITY_Community 475|Community 475]] - [[_COMMUNITY_Community 476|Community 476]] - [[_COMMUNITY_Community 477|Community 477]] @@ -485,13 +492,16 @@ - [[_COMMUNITY_Community 483|Community 483]] - [[_COMMUNITY_Community 484|Community 484]] - [[_COMMUNITY_Community 485|Community 485]] +- [[_COMMUNITY_Community 486|Community 486]] - [[_COMMUNITY_Community 487|Community 487]] - [[_COMMUNITY_Community 488|Community 488]] - [[_COMMUNITY_Community 489|Community 489]] - [[_COMMUNITY_Community 490|Community 490]] +- [[_COMMUNITY_Community 491|Community 491]] - [[_COMMUNITY_Community 492|Community 492]] - [[_COMMUNITY_Community 493|Community 493]] - [[_COMMUNITY_Community 494|Community 494]] +- [[_COMMUNITY_Community 495|Community 495]] - [[_COMMUNITY_Community 497|Community 497]] - [[_COMMUNITY_Community 498|Community 498]] - [[_COMMUNITY_Community 499|Community 499]] @@ -503,9 +513,7 @@ - [[_COMMUNITY_Community 505|Community 505]] - [[_COMMUNITY_Community 506|Community 506]] - [[_COMMUNITY_Community 507|Community 507]] -- [[_COMMUNITY_Community 509|Community 509]] - [[_COMMUNITY_Community 510|Community 510]] -- [[_COMMUNITY_Community 518|Community 518]] - [[_COMMUNITY_Community 520|Community 520]] - [[_COMMUNITY_Community 522|Community 522]] - [[_COMMUNITY_Community 527|Community 527]] @@ -519,8 +527,8 @@ 6. `Pytest Testing` - 50 edges 7. `StocksQueryManager` - 48 edges 8. `Roles` - 45 edges -9. `Prometheus` - 41 edges -10. `TestQueryFundamental` - 38 edges +9. `cn()` - 43 edges +10. `Prometheus` - 41 edges ## Surprising Connections (you probably didn't know these) - `StocksCacheManager` --calls--> `test_cache_scheduler_starts_apscheduler()` [INFERRED] @@ -531,8 +539,8 @@ main/app/prometheus/state.py → tests/test_sandbox_tools.py - `HarnessState` --uses--> `TestDispatchToolCallSandbox` [INFERRED] main/app/prometheus/state.py → tests/test_sandbox_tools.py -- `get_state()` --calls--> `test_get_state_no_state_returns_error()` [INFERRED] - main/app/prometheus/tools.py → tests/test_prometheus_tools.py +- `ResultCache` --calls--> `cache()` [INFERRED] + main/app/prometheus/cache.py → tests/test_cache.py ## Hyperedges (group relationships) - **Authentication Module** — AuthenticationManager, SessionManager, auth_util, auth_constants, getGoogleSSO [INFERRED] @@ -542,7 +550,7 @@ - **Configuration & Database Infrastructure** — config_Config, config_engine, config_stocksEngine [INFERRED] - **User Authentication & Authorization** — user_service, authentication, user_roles, permission_system [INFERRED] -## Communities (509 total, 225 thin omitted) +## Communities (517 total, 222 thin omitted) ### Community 0 - "Stocks API Endpoints" Cohesion: 0.0 @@ -565,8 +573,8 @@ Cohesion: 0.11 Nodes (24): PrometheusSandbox, cleanup_expired_sandboxes(), Remove DB mappings for sandboxes that no longer exist in ForgeVM., _mock_forgevm(), Wire up mock forgevm AsyncClient that returns sandbox with all methods., Enforce one active sandbox per user via application logic., Enforce one active sandbox per user via application logic., Enforce one active sandbox per user via application logic. (+16 more) ### Community 5 - "Prometheus Services" -Cohesion: 0.22 -Nodes (13): AuthForm(), apiFetch(), authHeaders(), createSession(), deleteSession(), deleteWorkspaceFile(), googleAuthUrl(), listWorkspaceFiles() (+5 more) +Cohesion: 0.2 +Nodes (15): AuthForm(), apiFetch(), authHeaders(), createSession(), deleteSession(), deleteWorkspaceFile(), fetchHistory(), fetchSessions() (+7 more) ### Community 6 - "Database Schema" Cohesion: 0.04 @@ -578,7 +586,7 @@ Nodes (29): Algorithmic Compression (`compact.py`) Implementation Plan, code:pyt ### Community 8 - "Device Detection" Cohesion: 0.06 -Nodes (27): HarnessState, Retrieve a value from state. Returns default if key not found., Return a copy of the current state., Format state as a string for injection into the LLM context., Check if state changed since last reset., Reset the changed flag. Returns the previous state., Clear all state data., In-memory state dict that persists across loop iterations within a single reques (+19 more) +Nodes (28): HarnessState, Retrieve a value from state. Returns default if key not found., Return a copy of the current state., Format state as a string for injection into the LLM context., Check if state changed since last reset., Reset the changed flag. Returns the previous state., Clear all state data., In-memory state dict that persists across loop iterations within a single reques (+20 more) ### Community 9 - "Server Configuration" Cohesion: 0.11 @@ -597,8 +605,8 @@ Cohesion: 0.08 Nodes (13): LoopEvent, LoopEvent model for observable agent loops., LoopLogger, LoopLogger — batched event logging for observable agent loops., Queue events during a loop, flush to DB at end., Log a generic event with optional metadata., Log a tool invocation., Log end of a turn with timing. (+5 more) ### Community 13 - "Prometheus Tools" -Cohesion: 0.22 -Nodes (10): batchCosineSimilarity(), decodeEmbeddings(), Empty matrix → empty array., Single row matches cosine_similarity., Multiple rows ranked correctly., Zero query → all zeros., TestBatchCosineSimilarity, batch_cosine_similarity() (+2 more) +Cohesion: 0.27 +Nodes (9): batchCosineSimilarity(), Empty matrix → empty array., Single row matches cosine_similarity., Multiple rows ranked correctly., Zero query → all zeros., TestBatchCosineSimilarity, batch_cosine_similarity(), batchCosineSimilarity() (+1 more) ### Community 14 - "User Roles & Permissions" Cohesion: 0.05 @@ -609,8 +617,8 @@ Cohesion: 0.05 Nodes (38): code:block1 (User 123: "Analyze PETR4 vs VALE3 correlation"), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (TOOL_REGISTRY: dict[str, Any] = {), code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool), code:python (import pytest), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (async def streamMessage(self, query=None, sessionId=None, db), code:python (## Code Sandbox (On-Demand)) (+30 more) ### Community 16 - "Community 16" -Cohesion: 0.04 -Nodes (42): _make_prometheus_client(), Covers lines 95-98: session deleted., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}., Covers lines 95-98: session deleted., Covers lines 96-97: session not found. (+34 more) +Cohesion: 0.1 +Nodes (17): Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}., Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}., Covers lines 65-68: title updated successfully., Covers lines 65-68: title updated successfully., Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}., Covers lines 65-68: title updated successfully., Covers lines 62-63: not the session owner., Covers lines 62-63: not the session owner. (+9 more) ### Community 17 - "Community 17" Cohesion: 0.07 @@ -630,7 +638,7 @@ Nodes (35): 1. Memory System (B+), 2. Summarizer/Episodes (B), 3. Loop Events (A ### Community 21 - "Community 21" Cohesion: 0.05 -Nodes (39): AuthenticationManager, IntFlag, Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 28: GET /auth/health. (+31 more) +Nodes (38): AuthenticationManager, IntFlag, Covers line 28: GET /auth/health., Covers line 28: GET /auth/health., Covers line 13: UserManager.__init__., Covers line 13: UserManager.__init__., Covers line 13: UserManager.__init__., Covers line 13: UserManager.__init__. (+30 more) ### Community 22 - "Community 22" Cohesion: 0.07 @@ -678,7 +686,7 @@ Nodes (12): ToolContext — bundles all dependencies for tool execution. Replac ### Community 33 - "Community 33" Cohesion: 0.06 -Nodes (23): BaseHTTPMiddleware, BaseModel, Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter (+15 more) +Nodes (24): BaseHTTPMiddleware, BaseModel, app(), Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler (+16 more) ### Community 34 - "Community 34" Cohesion: 0.11 @@ -717,8 +725,8 @@ Cohesion: 0.09 Nodes (16): StocksCacheManager, Tests for dynamic ticker index feature, Ticker index should be built when cache is loaded, Ticker index should contain all tickers from cache, Ticker index should be case-insensitive, Looking up ticker should return valid row index, Ticker index should be rebuilt when cache refreshes, TestTickerIndex (+8 more) ### Community 43 - "Community 43" -Cohesion: 0.14 -Nodes (6): authenticateUser(), createUserAccount(), hashPassword(), verifyPassword(), TestAuthUtil, TestAuthUtilEdgeCases +Cohesion: 0.16 +Nodes (4): hashPassword(), verifyPassword(), TestAuthUtil, TestAuthUtilEdgeCases ### Community 44 - "Community 44" Cohesion: 0.14 @@ -737,12 +745,12 @@ Cohesion: 0.1 Nodes (17): _make_user_client(), Return (client, app) with user router and mocked deps., Covers line 24: GET /user/me returns currentUser., Covers line 24: GET /user/me returns currentUser., Covers line 24: GET /user/me returns currentUser., Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise., Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise., Covers lines 31-32, 36, 43-44, 48: upgrade developer starter/enterprise. (+9 more) ### Community 48 - "Community 48" -Cohesion: 0.19 -Nodes (7): Tests for thread safety utilities (Issues 5 & 6). Issue 5: DiscordHandler use, Verify getSession returns thread-local sessions under concurrency., getSession() must give each thread its own Session., connectivity.checkServiceConnection must call getSession(), not use a global Ses, connectivity.checkServiceConnection must call getSession(), not use a global Ses, TestConcurrentGetSession, TestConcurrentHttpProxy +Cohesion: 0.06 +Nodes (34): Backend (COMMIT), code:bash (cd frontend && pnpm add @openuidev/react-lang), code:bash (rm frontend/src/components/MdocMessage.jsx), code:python ("""OpenUI Lang system prompt section for Prometheus agent.), code:block12, code:block13, code:block14, code:block15 (+26 more) ### Community 49 - "Community 49" -Cohesion: 0.06 -Nodes (32): dispatchToolCall(), TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes, dispatchToolCall must route memory tool names via TOOL_REGISTRY., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., TOOL_REGISTRY pattern must work correctly. (+24 more) +Cohesion: 0.08 +Nodes (19): dispatchToolCall(), TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes, test_memory_tool_skipped_without_user(), test_non_memory_tool_not_routed_to_executeMemoryTool(), test_non_registry_tool_not_routed(), test_save_memory_routed_to_executeMemoryTool(), test_save_memory_routed_via_registry(), test_search_memory_routed_to_executeMemoryTool() (+11 more) ### Community 50 - "Community 50" Cohesion: 0.07 @@ -757,12 +765,12 @@ Cohesion: 0.08 Nodes (7): Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., TestPrometheusChatManager ### Community 53 - "Community 53" -Cohesion: 0.12 -Nodes (19): archiveDead(), count_memories(), countMemories(), decayScores(), deleteMemory(), extract(), findSimilarKey(), _fulltext_search() (+11 more) +Cohesion: 0.11 +Nodes (24): applyUpdate(), archiveDead(), count_memories(), countMemories(), decayScores(), deleteMemory(), extract(), findSimilarKey() (+16 more) ### Community 54 - "Community 54" Cohesion: 0.06 -Nodes (29): memoryMaintenance(), create_memories(), Zero access but score still above threshold → not archived., Even with low score, if accessed → not archived., Even with low score, if accessed → not archived., Already archived memories are skipped., Already archived memories are skipped., Decay happens first, then archive check with new scores. (+21 more) +Nodes (30): memoryMaintenance(), create_memories(), Zero access but score still above threshold → not archived., Even with low score, if accessed → not archived., Even with low score, if accessed → not archived., Already archived memories are skipped., Already archived memories are skipped., Decay happens first, then archive check with new scores. (+22 more) ### Community 55 - "Community 55" Cohesion: 0.11 @@ -781,8 +789,8 @@ Cohesion: 0.17 Nodes (14): getGoogleSSO(), createAccessToken(), googleCallback(), googleLogin(), isSecureScheme(), issueSessionCookie(), login(), logout() (+6 more) ### Community 59 - "Community 59" -Cohesion: 0.05 -Nodes (44): lifespan(), status(), Tests for main/utils/connectivity.py — covers all branches., checkServiceConnection — success, not found, errors., checkServiceConnection — success, not found, errors., checkMySqlConnection — success, errors, engine=None paths., checkMySqlConnection — success, errors, engine=None paths., test_both_engines_ok() (+36 more) +Cohesion: 0.08 +Nodes (32): lifespan(), status(), Tests for main/utils/connectivity.py — covers all branches., checkServiceConnection — success, not found, errors., checkServiceConnection — success, not found, errors., checkMySqlConnection — success, errors, engine=None paths., checkMySqlConnection — success, errors, engine=None paths., test_both_engines_ok() (+24 more) ### Community 60 - "Community 60" Cohesion: 0.09 @@ -793,8 +801,8 @@ Cohesion: 0.1 Nodes (20): architectures, attention_probs_dropout_prob, gradient_checkpointing, hidden_act, hidden_dropout_prob, hidden_size, initializer_range, intermediate_size (+12 more) ### Community 63 - "Community 63" -Cohesion: 0.15 -Nodes (11): normalizeKey(), Store a value in state. Marks state as changed for context injection., _filterCotationByDate(), filterCotationData(), _parseCotationDate(), Shared query pipeline for historical and fundamental endpoints., Fetch live prices for B3 tickers via yfinance. B3 tickers must match, Parse DD-MM-YYYY from COTACAO 10Y JSON DATA field. ponytail: stdlib datetime onl (+3 more) +Cohesion: 0.11 +Nodes (13): _filterCotationByDate(), filterCotationData(), _parseCotationDate(), Shared query pipeline for historical and fundamental endpoints., Fetch live prices for B3 tickers via yfinance. B3 tickers must match, Parse DD-MM-YYYY from COTACAO 10Y JSON DATA field. ponytail: stdlib datetime onl, Filter COTACAO 10Y JSON entries by their inner DATA field (DD-MM-YYYY)., sanitizeNanValues() (+5 more) ### Community 64 - "Community 64" Cohesion: 0.06 @@ -825,8 +833,8 @@ Cohesion: 0.11 Nodes (19): API Key System, B3 Scraper, Fundamental Data, Gemini Model, Historical Data, Ma'at Stock Algorithm, Mansa Server, MySQL Database (+11 more) ### Community 72 - "Community 72" -Cohesion: 0.2 -Nodes (4): B3Scraper, calculateInvestingScore(), runScraper(), ScraperService +Cohesion: 0.1 +Nodes (6): B3Scraper, getCurrentSelic(), getInitialData(), calculateInvestingScore(), runScraper(), ScraperService ### Community 73 - "Community 73" Cohesion: 0.16 @@ -854,19 +862,19 @@ Nodes (16): Covers line 16: empty password raises ValueError., Covers line 16: e ### Community 79 - "Community 79" Cohesion: 0.05 -Nodes (38): cn(), AlertDialogAction(), AlertDialogCancel(), AlertDialogContent(), AlertDialogDescription(), AlertDialogFooter(), AlertDialogHeader(), AlertDialogMedia() (+30 more) +Nodes (44): cn(), AlertDialogAction(), AlertDialogCancel(), AlertDialogContent(), AlertDialogDescription(), AlertDialogFooter(), AlertDialogHeader(), AlertDialogMedia() (+36 more) ### Community 80 - "Community 80" -Cohesion: 0.1 -Nodes (19): countTokens(), getTokenizer(), PrometheusSummarizer, Summarize conversation history into episode summaries., Check if accumulated tokens exceed episode threshold., Get messages since the last episode for summarization., Check if accumulated tokens exceed episode threshold., Check if accumulated tokens exceed episode threshold. (+11 more) +Cohesion: 0.12 +Nodes (16): countTokens(), getTokenizer(), PrometheusSummarizer, Summarize conversation history into episode summaries., Check if accumulated tokens exceed episode threshold., Get messages since the last episode for summarization., Check if accumulated tokens exceed episode threshold., Check if accumulated tokens exceed episode threshold. (+8 more) ### Community 81 - "Community 81" -Cohesion: 0.11 -Nodes (13): getLiveCotation(), JSONBytesResponse, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Sends pre-serialized JSON bytes without re-encoding (cache-friendly)., Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th (+5 more) +Cohesion: 0.2 +Nodes (10): getLiveCotation(), Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th (+2 more) ### Community 82 - "Community 82" -Cohesion: 0.18 -Nodes (10): arrowTypeFor(), buildCotationDateIndex(), buildFeatherCache(), optimizeDtypes(), Get cached stocks data with optional column filtering., Map a MySQL DATA_TYPE to a pyarrow type for columns that are all-None in th, Non-blocking cross-process lock around the feather build. Returns the lock file, tryBuildLock() (+2 more) +Cohesion: 0.2 +Nodes (9): arrowTypeFor(), buildCotationDateIndex(), buildFeatherCache(), optimizeDtypes(), Get cached stocks data with optional column filtering., Map a MySQL DATA_TYPE to a pyarrow type for columns that are all-None in th, Non-blocking cross-process lock around the feather build. Returns the lock file, tryBuildLock() (+1 more) ### Community 83 - "Community 83" Cohesion: 0.12 @@ -881,11 +889,11 @@ Cohesion: 0.1 Nodes (17): Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126, 131, 135-136., Covers lines 126, 131, 135-136., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126, 131, 135-136., Covers lines 127-129: session not found., Covers lines 127-129: session not found. (+9 more) ### Community 86 - "Community 86" -Cohesion: 0.08 -Nodes (30): check_cache(), _getDb(), Search user's saved memories, preferences, and past analysis context. Use t, Search user's saved memories, preferences, and past analysis context. Use t, Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the sandbox filesystem. Args: path: Absolute pa, Get a download link for a workspace file to share with the user. Use this, Search user's saved memories, preferences, and past analysis context. Use (+22 more) +Cohesion: 0.22 +Nodes (10): _getDb(), Search user's saved memories, preferences, and past analysis context. Use t, Search user's saved memories, preferences, and past analysis context. Use t, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use, Search user's saved memories, preferences, and past analysis context. Use (+2 more) ### Community 87 - "Community 87" -Cohesion: 0.17 +Cohesion: 0.16 Nodes (14): buildSummary(), charCount(), countTokens(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers(), extractToolCalls() (+6 more) ### Community 88 - "Community 88" @@ -913,8 +921,12 @@ Cohesion: 0.12 Nodes (10): System prompt should instruct LLM about harness state usage., System prompt should instruct LLM about harness state usage., System prompt should instruct LLM about harness state usage., System prompt should instruct LLM about memory vs state., System prompt should instruct LLM about memory vs state., System prompt should instruct LLM about memory vs state., System prompt should instruct LLM about memory vs state., TestSendMessageStateIntegration (+2 more) ### Community 94 - "Community 94" -Cohesion: 0.25 -Nodes (5): Many concurrent emit() calls must not create more threads than max_workers., Verify that DiscordHandler submits to a bounded executor, not raw threads., The module-level discordExecutor must exist with max_workers <= 5., DiscordHandler.emit() must use discordExecutor.submit, not Thread.start., TestDiscordHandlerThreadPool +Cohesion: 0.13 +Nodes (13): Covers lines 95-98: session deleted., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}., Covers lines 95-98: session deleted., Covers lines 96-97: session not found., Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}. (+5 more) + +### Community 95 - "Community 95" +Cohesion: 0.18 +Nodes (11): client(), TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with stocks router + verifyAPIKey + getCurrentUser overrides., TestClient with all routers mounted — no lifespan (no DB/service init). O (+3 more) ### Community 96 - "Community 96" Cohesion: 0.2 @@ -933,8 +945,8 @@ Cohesion: 0.18 Nodes (6): System prompt should include state context when provided., System prompt should not include state section when empty., State section should appear after memories section., All state entries should appear in the prompt., System prompt should work without state parameter., TestBuildSystemPromptState ### Community 100 - "Community 100" -Cohesion: 0.06 -Nodes (14): _assert_gemini_safe(), Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Regression: HarnessState must never leak into tool signatures., Regression: HarnessState must never leak into tool signatures., Assert a tool function has only Gemini-compatible parameter types., Assert a tool function has only Gemini-compatible parameter types., test_get_state_no_state_returns_error() (+6 more) +Cohesion: 0.08 +Nodes (18): Store a value in the harness state for this session. Use this to save inter, Store a value in the harness state for this session. Use this to save interm, Store a value in the harness state for this session. Use this to save inter, Store a value in the harness state for this session. Use this to save inter, Store a value in the harness state for this session. Use this to save inter, set_state(), _assert_gemini_safe(), Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl (+10 more) ### Community 101 - "Community 101" Cohesion: 0.13 @@ -942,7 +954,7 @@ Nodes (13): Covers lines 83-84: session not found., Covers lines 77, 83-84, 86: ### Community 102 - "Community 102" Cohesion: 0.12 -Nodes (11): BaseSettings, BaseMansaSettings, Config, DiscordSettings, MysqlSettings, PrometheusSettings, ScraperSettings, StocksApiSettings (+3 more) +Nodes (10): BaseSettings, BaseMansaSettings, DiscordSettings, MysqlSettings, PrometheusSettings, ScraperSettings, StocksApiSettings, UserSettings (+2 more) ### Community 103 - "Community 103" Cohesion: 0.13 @@ -989,8 +1001,8 @@ Cohesion: 0.17 Nodes (12): Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok, Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok, Covers line 67: HTTPException raised by verifyAccessToken is re-raised., Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok, Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok, Covers line 67: HTTPException raised by verifyAccessToken is re-raised., Covers line 67: HTTPException raised by verifyAccessToken is re-raised., Covers line 67: extractTokenPayload re-raises HTTPException from verifyAccessTok (+4 more) ### Community 115 - "Community 115" -Cohesion: 0.15 -Nodes (12): applyUpdate(), upsertMemory(), contentHash(), Same input → same hash., Different inputs → different hashes., Returns 32-char hex string., TestContentHash, ALL() (+4 more) +Cohesion: 0.21 +Nodes (9): Same input → same hash., Different inputs → different hashes., Returns 32-char hex string., TestContentHash, ALL(), content_hash(), contentHash(), MD5 hash for change detection. (+1 more) ### Community 116 - "Community 116" Cohesion: 0.14 @@ -1010,15 +1022,15 @@ Nodes (26): code:python ("""Tests for SandboxManager file mutation helpers (dele ### Community 120 - "Community 120" Cohesion: 0.1 -Nodes (33): _make_auth_client(), Tests to cover uncovered lines across controllers, UserManager, and auth util., Covers lines 87-93, 102: login success and failure paths., Covers lines 87-93, 102: login success and failure paths., Return (client, app) with auth + user routers and mocked getSession., Covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googleCallba, Covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googleCallba, test_callback_existing_user() (+25 more) +Nodes (34): _make_auth_client(), _make_prometheus_client(), Tests to cover uncovered lines across controllers, UserManager, and auth util., Covers lines 44-54, 63, 66-71: register success, ValueError, generic Exception., Covers lines 44-54, 63, 66-71: register success, ValueError, generic Exception., Return (client, app) with auth + user routers and mocked getSession., Covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googleCallba, Covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googleCallba (+26 more) ### Community 121 - "Community 121" Cohesion: 0.21 Nodes (12): code:python (import inspect), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (TOOL_REGISTRY: dict[str, Any] = {), code:python (## Code Sandbox (On-Demand)), code:bash (git add main/app/prometheus/agent.py), code:dockerfile (FROM python:3.11-slim), code:bash (git add Dockerfile.sandbox), Phase 6: Agent Integration (All Layers) (+4 more) ### Community 122 - "Community 122" -Cohesion: 0.2 -Nodes (15): Tests for main/utils/logging_config.py — covers DiscordHandler branches., test_discord_disabled(), test_discord_no_webhook(), test_exception_in_submit(), test_level_below_error(), test_message_truncation(), test_setup_discord_handler_disabled(), test_setup_discord_handler_enabled() (+7 more) +Cohesion: 0.06 +Nodes (33): Tests for main/utils/logging_config.py — covers DiscordHandler branches., test_discord_disabled(), test_discord_no_webhook(), test_exception_in_submit(), test_level_below_error(), test_message_truncation(), test_setup_discord_handler_disabled(), test_setup_discord_handler_enabled() (+25 more) ### Community 123 - "Community 123" Cohesion: 0.17 @@ -1049,17 +1061,13 @@ Cohesion: 0.2 Nodes (10): Tests for stocks API field validation — verifies the fields parameter accepts a, Integration: /stocks/fundamental must accept slash and dot fields., Minimal TestClient with just the stocks router for validation tests., GET /fundamental?fields=P/L must not return 422 (validation error)., GET /fundamental?fields=P/L must not return 422 (validation error)., Integration: /stocks/fundamental must accept slash and dot fields., GET /fundamental?fields=P/L must not return 422 (validation error)., GET /historical?fields=P/L must not return 422. (+2 more) ### Community 130 - "Community 130" -Cohesion: 0.25 -Nodes (13): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), toColumnar() (+5 more) +Cohesion: 0.38 +Nodes (9): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), toColumnar() (+1 more) ### Community 131 - "Community 131" Cohesion: 0.22 Nodes (7): verifyAccessToken(), Covers lines 50-51: jwt.InvalidTokenError., Covers lines 50-51: jwt.InvalidTokenError., Covers lines 50-51: jwt.InvalidTokenError., Covers lines 50-51: jwt.InvalidTokenError., Covers lines 50-51: jwt.InvalidTokenError., Covers lines 50-51: jwt.InvalidTokenError. -### Community 132 - "Community 132" -Cohesion: 0.11 -Nodes (4): FastAPI, Tests for inline pagination params (used in user + prometheus controllers)., TestPaginationParams, PaginationParams - ### Community 133 - "Community 133" Cohesion: 0.18 Nodes (11): code:python (import inspect), code:python (from main.app.prometheus.state import HarnessState), code:bash (git add main/app/prometheus/tools.py tests/test_tools.py), code:python (SYSTEM_PROMPT = """), code:bash (git add main/app/prometheus/agent.py), code:dockerfile (FROM python:3.11-slim), code:bash (git add Dockerfile.sandbox), Phase 6: Agent Integration (All Layers) (+3 more) @@ -1114,7 +1122,7 @@ Nodes (10): code:python (import logging), code:bash (git add main/app/prometheus ### Community 146 - "Community 146" Cohesion: 0.05 -Nodes (51): Base, PrometheusMemory, PrometheusMemory, MemoryManager, PrometheusMemory, All memory operations. Stateless class methods., PrometheusService, _count_memories() (+43 more) +Nodes (50): Base, PrometheusMemory, PrometheusMemory, MemoryManager, PrometheusMemory, All memory operations. Stateless class methods., PrometheusService, _count_memories() (+42 more) ### Community 147 - "Community 147" Cohesion: 0.23 @@ -1126,15 +1134,15 @@ Nodes (4): createSession(), getSessionById(), revokeSession(), validateSession() ### Community 150 - "Community 150" Cohesion: 0.12 -Nodes (7): extractHashToken(), fetchHistory(), fetchMe(), fetchSessions(), getCookie(), sendBtn, textarea +Nodes (5): extractHashToken(), fetchMe(), getCookie(), sendBtn, textarea ### Community 151 - "Community 151" Cohesion: 0.2 Nodes (3): MEMORY_TOOLS must be defined as a Tool wrapping FunctionDeclarations., MEMORY_TOOLS must be a list of callables with proper signatures., TestMemoryToolsDefinition ### Community 152 - "Community 152" -Cohesion: 0.1 -Nodes (21): list_files(), Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the sandbox filesystem. Args: path: Absolute pa (+13 more) +Cohesion: 0.17 +Nodes (13): list_files(), Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, List files in the workspace directory. Args: path: Directory pat, List files in the workspace directory. Args: path: Directory pat, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri (+5 more) ### Community 153 - "Community 153" Cohesion: 0.12 @@ -1180,6 +1188,10 @@ Nodes (7): Integration tests for all query optimizations, Integration tests for Cohesion: 0.22 Nodes (8): code:bash (# Build and start), code:env (#), code:bash (curl http://localhost:3200/health), Environment Setup, Health Check, License, Mansa Server, Run with Docker +### Community 164 - "Community 164" +Cohesion: 0.2 +Nodes (9): AccordionItem, BarChart, ContentCard, DataTable, Divider, ProgressFill, StatCard, TabGroup (+1 more) + ### Community 165 - "Community 165" Cohesion: 0.29 Nodes (6): Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143)., Exercises the expiresAt-is-None branch (line 143). @@ -1197,8 +1209,8 @@ Cohesion: 0.4 Nodes (4): compilerOptions, baseUrl, paths, @/* ### Community 169 - "Community 169" -Cohesion: 0.2 -Nodes (10): getCotations(), Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur (+2 more) +Cohesion: 0.11 +Nodes (13): getCotations(), JSONBytesResponse, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur (+5 more) ### Community 170 - "Community 170" Cohesion: 0.25 @@ -1261,8 +1273,8 @@ Cohesion: 0.29 Nodes (6): DEVELOPER:, PREMIUM:, Prometheus, STOCKS_API, USER:, User structure defined by string roles: ### Community 188 - "Community 188" -Cohesion: 0.14 -Nodes (14): execute_code(), Store a value in the harness state for this session. Use this to save inter, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Store a value in the harness state for this session. Use this to save interm (+6 more) +Cohesion: 0.25 +Nodes (8): execute_code(), Execute Python code in an isolated sandbox. Use for quantitative analysis,, Read a file from the workspace. Args: path: Path to the file (e., Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis, ### Community 189 - "Community 189" Cohesion: 0.36 @@ -1285,8 +1297,8 @@ Cohesion: 0.33 Nodes (6): normalizer, clean_text, handle_chinese_chars, lowercase, strip_accents, type ### Community 194 - "Community 194" -Cohesion: 0.31 -Nodes (3): buildClient(), MCPClientPool, _parseServers() +Cohesion: 0.27 +Nodes (4): buildClient(), MCPClientPool, _parseServers(), Config ### Community 195 - "Community 195" Cohesion: 0.33 @@ -1340,13 +1352,29 @@ Nodes (6): API Design (3), Architecture (7), Frontend (4), P0 — Must Fix (Crit Cohesion: 0.33 Nodes (6): API Design (6), Architecture (8), Frontend (7), P1 — Should Fix, Security (6), Testing (4) +### Community 208 - "Community 208" +Cohesion: 0.22 +Nodes (4): authenticateUser(), createUserAccount(), FastAPI, PaginationParams + ### Community 209 - "Community 209" Cohesion: 0.33 Nodes (6): 4.1 Sandbox Technology Landscape, 4.2 Instant Startup Patterns, 4.3 Cost & Scaling Math, 4.4 Anthropic Containment Patterns, 4.5 Hybrid Library Policy, 4. Background Research ### Community 211 - "Community 211" -Cohesion: 0.12 -Nodes (5): registry, SUGGESTIONS, { container }, nodes, { rerender } +Cohesion: 0.18 +Nodes (6): ALLOWED, COMPONENTS, registry, { container }, nodes, { rerender } + +### Community 212 - "Community 212" +Cohesion: 0.28 +Nodes (8): check_cache(), Get a download link for a workspace file to share with the user. Use this, Upload a file to the sandbox filesystem. Use this to push data files (CSV,, Get a download link for a workspace file to share with the user. Use this, Get a download link for a workspace file to share with the user. Use this, Check if a computed result exists in the cache. Use before executing expens, serve_file(), upload_to_sandbox() + +### Community 213 - "Community 213" +Cohesion: 0.22 +Nodes (9): Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback. (+1 more) + +### Community 215 - "Community 215" +Cohesion: 0.29 +Nodes (7): Read a file from the workspace. Args: path: Path to the file (e., Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the sandbox filesystem. Args: path: Absolute pa, List files in the workspace directory. Args: path: Directory pat, Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., read_file() ### Community 216 - "Community 216" Cohesion: 0.29 @@ -1489,16 +1517,16 @@ Cohesion: 0.5 Nodes (3): Basic fields like ROE must still pass., Basic fields like ROE must still pass., Basic fields like ROE must still pass. ### Community 256 - "Community 256" -Cohesion: 0.38 -Nodes (9): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), toColumnar() (+1 more) +Cohesion: 0.23 +Nodes (14): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), rebuildAbbrevs() (+6 more) ### Community 258 - "Community 258" Cohesion: 0.67 Nodes (3): checkMySqlConnection, MySQL Engine (user_db), MySQL Engine (stocks_db) ### Community 259 - "Community 259" -Cohesion: 0.33 -Nodes (4): Integration tests for all query optimizations, All optimizations should be implemented, Query filter should use ticker index, TestQueryOptimization +Cohesion: 0.29 +Nodes (6): Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., TestStocksApiHealth ### Community 261 - "Community 261" Cohesion: 0.67 @@ -1508,6 +1536,14 @@ Nodes (3): 3. Goals & Non-Goals, Goals, Non-Goals (YAGNI) Cohesion: 0.5 Nodes (4): code:python (def test_link_memory_to_entities(db_session, sample_user):), code:python (# Add to main/app/prometheus/memory.py), code:bash (git add main/app/prometheus/memory.py tests/test_memory_grap), Task 5: Graph Memory Operations +### Community 263 - "Community 263" +Cohesion: 0.33 +Nodes (5): Covers lines 33-36: GET /prometheus/sessions., Covers lines 33-36: GET /prometheus/sessions., Covers lines 33-36: GET /prometheus/sessions., Covers lines 33-36: GET /prometheus/sessions., TestPrometheusGetSessions + +### Community 474 - "Community 474" +Cohesion: 0.33 +Nodes (6): dispatchToolCall must route memory tool names via TOOL_REGISTRY., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., TestDispatchRoutesMemoryTools + ### Community 475 - "Community 475" Cohesion: 0.2 Nodes (10): getHistorical(), Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns (+2 more) @@ -1552,18 +1588,26 @@ Nodes (4): code:python (def test_count_tokens_portuguese():), code:python (# mai Cohesion: 0.5 Nodes (4): Priority 1: Fix Critical Gaps, Priority 2: Improve Retrieval, Priority 3: Lifecycle Improvements, What We Should Adopt from Mem0 +### Community 486 - "Community 486" +Cohesion: 0.33 +Nodes (6): makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., TestMakeChatIncludesMemoryTools + ### Community 487 - "Community 487" Cohesion: 0.16 Nodes (16): verifyAPIKey(), Tests to increase coverage for query.py, key.py, and cache.py in stocks_api., Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, test_cache_scheduler_starts_apscheduler(), test_cache_scheduler_starts_daemon_thread() (+8 more) ### Community 488 - "Community 488" -Cohesion: 0.1 -Nodes (16): Tests for connection pool configuration, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Query manager should have deserialize method, Tests for optimized search filtering, Filter should use ticker index for O(1) lookup, Performance tests for query operations, Query should respond within 1 second (+8 more) +Cohesion: 0.09 +Nodes (17): Tests for connection pool configuration, Stocks engine should have optimized pool settings, Integration tests for all query optimizations, All optimizations should be implemented, Query filter should use ticker index, Tests for optimized search filtering, Filter should use ticker index for O(1) lookup, Performance tests for query operations (+9 more) ### Community 489 - "Community 489" Cohesion: 0.6 Nodes (4): hammer_measured(), main(), Fire n requests with c concurrent workers, measuring ttfb + total per request., stats() +### Community 491 - "Community 491" +Cohesion: 0.67 +Nodes (3): countTokens(), _get_tokenizer(), Count tokens using Gemini's local tokenizer. Accurate for Portuguese. + ### Community 492 - "Community 492" Cohesion: 0.2 Nodes (9): Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing. (+1 more) @@ -1572,12 +1616,24 @@ Nodes (9): Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68- Cohesion: 0.05 Nodes (38): Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC (+30 more) +### Community 495 - "Community 495" +Cohesion: 0.67 +Nodes (3): Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the sandbox filesystem. Args: path: Absolute pa, read_sandbox_file() + +### Community 497 - "Community 497" +Cohesion: 0.07 +Nodes (7): Store a value in state. Marks state as changed for context injection., Verify the actual async tool functions have correct signatures., TOOL_REGISTRY pattern must work correctly., TestMemoryToolFunctions, TestToolRegistry, TestMemoryToolFunctions, TestToolRegistry + ### Community 498 - "Community 498" Cohesion: 0.25 Nodes (4): Authentication System, Google OAuth, JWT Authentication, TestSessionExpiryConfig +### Community 499 - "Community 499" +Cohesion: 0.14 +Nodes (8): Thread-safe proxy that delegates to per-thread sessions., SessionProxy, TestCleanup, cleanup(), get_session(), Return a requests.Session for the current thread. Sessions are created la, Close the main thread's session at interpreter shutdown., Return a requests.Session for the current thread. Sessions are created la + ### Community 500 - "Community 500" -Cohesion: 0.2 +Cohesion: 0.25 Nodes (3): Pytest Testing, Tests for main/utils/http_session.py — covers all branches., TestGetSession ### Community 501 - "Community 501" @@ -1585,8 +1641,8 @@ Cohesion: 0.22 Nodes (3): getCurrentSession(), getSessions(), sessionToDict() ### Community 502 - "Community 502" -Cohesion: 0.11 -Nodes (15): Tests for connection pool configuration, Tests for connection pool configuration, Stocks engine should have optimized pool settings, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Tests for lazy JSON deserialization, Query manager should have deserialize method, Query manager should have deserialize method (+7 more) +Cohesion: 0.08 +Nodes (20): Tests for connection pool configuration, Tests for connection pool configuration, Stocks engine should have optimized pool settings, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Tests for lazy JSON deserialization, Query manager should have deserialize method, Query manager should have deserialize method (+12 more) ### Community 503 - "Community 503" Cohesion: 0.22 @@ -1604,10 +1660,6 @@ Nodes (5): streamChat(), events, onChunk, onDone, onError Cohesion: 0.29 Nodes (6): chunks, events, fullText, onChunk, onDone, receivedChunks -### Community 509 - "Community 509" -Cohesion: 0.33 -Nodes (5): Tests for optimized search filtering, Tests for optimized search filtering, Filter should use ticker index for O(1) lookup, Filter should use ticker index for O(1) lookup, TestFilterBySearchTerms - ### Community 510 - "Community 510" Cohesion: 0.6 Nodes (3): bench(), main(), stats() @@ -1617,23 +1669,23 @@ Cohesion: 0.33 Nodes (6): Tests covering key.py lines 48-66., Tests covering key.py lines 48-66., Tests covering key.py lines 48-66., Tests covering key.py lines 48-66., Tests covering key.py lines 48-66., TestCreateKey ### Community 527 - "Community 527" -Cohesion: 0.09 -Nodes (17): client(), pytest_configure(), TestClient with all routers mounted — no lifespan (no DB/service init). O, Set required env vars before test collection. config.py eagerly instantia, Reset slowapi in-memory rate limiter between every test., Set required env vars before test collection. config.py eagerly instantia, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O (+9 more) +Cohesion: 0.17 +Nodes (6): pytest_configure(), Set required env vars before test collection. config.py eagerly instantia, Reset slowapi in-memory rate limiter between every test., Set required env vars before test collection. config.py eagerly instantia, Set required env vars before test collection. config.py eagerly instantia, _reset_rate_limiter() ## Knowledge Gaps -- **2740 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+2735 more) +- **2777 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+2772 more) These have ≤1 connection - possible missing edges or undocumented components. -- **225 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **222 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `Pytest Testing` connect `Community 500` to `Authentication Core`, `Frontend Components`, `Community 129`, `Community 132`, `Data Models & Types`, `Device Detection`, `Community 138`, `Community 527`, `Community 146`, `Community 18`, `Community 147`, `Community 24`, `Community 25`, `Community 27`, `Community 29`, `Community 32`, `Community 33`, `Community 40`, `Community 44`, `Community 45`, `Community 48`, `Community 49`, `Community 51`, `Community 54`, `Community 184`, `Community 59`, `Community 67`, `Community 93`, `Community 477`, `Community 482`, `Community 100`, `Community 487`, `Community 488`, `Community 234`, `Community 498`, `Community 115`, `Community 502`, `Community 120`, `Community 122`, `Community 125`, `Community 126`?** - _High betweenness centrality (0.165) - this node is a cross-community bridge._ -- **Why does `FastAPI` connect `Community 132` to `Community 129`, `Community 131`, `Community 18`, `Community 147`, `Community 33`, `Community 34`, `Community 37`, `Community 40`, `Community 43`, `Community 45`, `Community 181`, `Community 58`, `Community 59`, `Community 63`, `Community 71`, `Community 73`, `Community 81`, `Community 84`, `Community 477`, `Community 482`, `Community 487`, `Community 115`, `Community 501`, `Community 120`?** - _High betweenness centrality (0.055) - this node is a cross-community bridge._ -- **Why does `UserManager` connect `Community 21` to `Prometheus Agent`, `Community 520`, `Community 137`, `Prometheus Memory`, `Community 141`, `User Roles & Permissions`, `Community 16`, `Community 146`, `Community 22`, `Community 37`, `Community 47`, `Community 181`, `Community 56`, `Community 58`, `Community 61`, `Community 68`, `Community 78`, `Community 85`, `Community 221`, `Community 101`, `Community 487`, `Community 104`, `Community 492`, `Community 493`, `Community 110`, `Community 114`, `Community 120`, `Community 125`, `Community 126`?** - _High betweenness centrality (0.041) - this node is a cross-community bridge._ +- **Why does `Pytest Testing` connect `Community 500` to `Authentication Core`, `Frontend Components`, `Community 129`, `Data Models & Types`, `Device Detection`, `Community 138`, `Community 527`, `Community 146`, `Community 18`, `Community 147`, `Community 24`, `Community 25`, `Community 27`, `Community 29`, `Community 32`, `Community 33`, `Community 40`, `Community 44`, `Community 45`, `Community 49`, `Community 51`, `Community 54`, `Community 184`, `Community 59`, `Community 67`, `Community 208`, `Community 93`, `Community 477`, `Community 482`, `Community 100`, `Community 102`, `Community 487`, `Community 488`, `Community 490`, `Community 234`, `Community 498`, `Community 115`, `Community 502`, `Community 120`, `Community 122`, `Community 125`, `Community 126`?** + _High betweenness centrality (0.103) - this node is a cross-community bridge._ +- **Why does `UserManager` connect `Community 21` to `Community 259`, `Prometheus Agent`, `Community 263`, `Community 520`, `Community 137`, `Prometheus Memory`, `Community 141`, `User Roles & Permissions`, `Community 16`, `Community 146`, `Community 22`, `Community 37`, `Community 47`, `Community 181`, `Community 56`, `Community 58`, `Community 61`, `Community 68`, `Community 78`, `Community 85`, `Community 221`, `Community 94`, `Community 101`, `Community 487`, `Community 104`, `Community 492`, `Community 493`, `Community 110`, `Community 114`, `Community 120`, `Community 125`, `Community 126`?** + _High betweenness centrality (0.061) - this node is a cross-community bridge._ +- **Why does `FastAPI` connect `Community 208` to `Community 129`, `Community 131`, `Community 18`, `Community 147`, `Community 21`, `Community 33`, `Community 34`, `Community 37`, `Community 40`, `Community 169`, `Community 45`, `Community 181`, `Community 58`, `Community 59`, `Community 63`, `Community 71`, `Community 73`, `Community 84`, `Community 477`, `Community 482`, `Community 487`, `Community 490`, `Community 501`, `Community 120`?** + _High betweenness centrality (0.045) - this node is a cross-community bridge._ - **Are the 72 inferred relationships involving `StocksCacheManager` (e.g. with `TestStocksCacheManager` and `TestVerifyAPIKey`) actually correct?** _`StocksCacheManager` has 72 INFERRED edges - model-reasoned connections that need verification._ - **Are the 52 inferred relationships involving `HarnessState` (e.g. with `Prometheus` and `.streamMessage()`) actually correct?** diff --git a/graphify-out/graph.json b/graphify-out/graph.json index 78e1a47..0337dbe 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -246,7 +246,7 @@ "source_file": "config.py", "source_location": "L92", "id": "server_config_config", - "community": 102, + "community": 194, "norm_label": "config" }, { @@ -660,7 +660,7 @@ "source_file": "frontend/src/api.js", "source_location": "L85", "id": "src_api_fetchsessions", - "community": 150, + "community": 5, "norm_label": "fetchsessions()" }, { @@ -705,7 +705,7 @@ "source_file": "frontend/src/api.js", "source_location": "L126", "id": "src_api_fetchhistory", - "community": 150, + "community": 5, "norm_label": "fetchhistory()" }, { @@ -829,7 +829,7 @@ "label": "sendBtn", "file_type": "code", "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L72", + "source_location": "L87", "id": "src_app_resume_test_sendbtn", "community": 150, "norm_label": "sendbtn" @@ -838,7 +838,7 @@ "label": "textarea", "file_type": "code", "source_file": "frontend/src/App.resume.test.jsx", - "source_location": "L82", + "source_location": "L97", "id": "src_app_resume_test_textarea", "community": 150, "norm_label": "textarea" @@ -858,7 +858,7 @@ "source_file": "frontend/src/components/AgentLoop.jsx", "source_location": "L1", "id": "frontend_src_components_agentloop_jsx", - "community": 211, + "community": 214, "norm_label": "agentloop.jsx" }, { @@ -867,7 +867,7 @@ "source_file": "frontend/src/components/AgentLoop.jsx", "source_location": "L4", "id": "components_agentloop_agentloop", - "community": 211, + "community": 214, "norm_label": "agentloop()" }, { @@ -916,37 +916,28 @@ "norm_label": "mdocmessage.jsx" }, { - "label": "registry", + "label": "COMPONENTS", "file_type": "code", "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L4", - "id": "components_mdocmessage_registry", - "community": 211, - "norm_label": "registry" - }, - { - "label": "preprocessGeminiTags()", - "file_type": "code", - "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L14", - "id": "components_mdocmessage_preprocessgeminitags", + "source_location": "L5", + "id": "components_mdocmessage_components", "community": 211, - "norm_label": "preprocessgeminitags()" + "norm_label": "components" }, { - "label": "WorkspaceLink()", + "label": "ALLOWED", "file_type": "code", "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L61", - "id": "components_mdocmessage_workspacelink", + "source_location": "L88", + "id": "components_mdocmessage_allowed", "community": 211, - "norm_label": "workspacelink()" + "norm_label": "allowed" }, { "label": "MdocMessage()", "file_type": "code", "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L91", + "source_location": "L94", "id": "components_mdocmessage_mdocmessage", "community": 211, "norm_label": "mdocmessage()" @@ -957,7 +948,7 @@ "source_file": "frontend/src/components/MessageList.jsx", "source_location": "L1", "id": "frontend_src_components_messagelist_jsx", - "community": 211, + "community": 214, "norm_label": "messagelist.jsx" }, { @@ -966,7 +957,7 @@ "source_file": "frontend/src/components/MessageList.jsx", "source_location": "L8", "id": "components_messagelist_suggestions", - "community": 211, + "community": 214, "norm_label": "suggestions" }, { @@ -975,7 +966,7 @@ "source_file": "frontend/src/components/MessageList.jsx", "source_location": "L14", "id": "components_messagelist_messagelist", - "community": 211, + "community": 214, "norm_label": "messagelist()" }, { @@ -1221,6 +1212,69 @@ "community": 79, "norm_label": "button()" }, + { + "label": "card.jsx", + "file_type": "code", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L1", + "id": "frontend_src_components_ui_card_jsx", + "community": 79, + "norm_label": "card.jsx" + }, + { + "label": "Card()", + "file_type": "code", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L5", + "id": "ui_card_card", + "community": 79, + "norm_label": "card()" + }, + { + "label": "CardHeader()", + "file_type": "code", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L18", + "id": "ui_card_cardheader", + "community": 79, + "norm_label": "cardheader()" + }, + { + "label": "CardTitle()", + "file_type": "code", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L31", + "id": "ui_card_cardtitle", + "community": 79, + "norm_label": "cardtitle()" + }, + { + "label": "CardDescription()", + "file_type": "code", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L41", + "id": "ui_card_carddescription", + "community": 79, + "norm_label": "carddescription()" + }, + { + "label": "CardContent()", + "file_type": "code", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L51", + "id": "ui_card_cardcontent", + "community": 79, + "norm_label": "cardcontent()" + }, + { + "label": "CardFooter()", + "file_type": "code", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L57", + "id": "ui_card_cardfooter", + "community": 79, + "norm_label": "cardfooter()" + }, { "label": "context-menu.jsx", "file_type": "code", @@ -1527,6 +1581,96 @@ "community": 79, "norm_label": "separator()" }, + { + "label": "prometheus-components.jsx", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L1", + "id": "frontend_src_lib_prometheus_components_jsx", + "community": 164, + "norm_label": "prometheus-components.jsx" + }, + { + "label": "StatCard", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L9", + "id": "lib_prometheus_components_statcard", + "community": 164, + "norm_label": "statcard" + }, + { + "label": "DataTable", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L39", + "id": "lib_prometheus_components_datatable", + "community": 164, + "norm_label": "datatable" + }, + { + "label": "BarChart", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L82", + "id": "lib_prometheus_components_barchart", + "community": 164, + "norm_label": "barchart" + }, + { + "label": "ContentCard", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L123", + "id": "lib_prometheus_components_contentcard", + "community": 164, + "norm_label": "contentcard" + }, + { + "label": "TabGroup", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L148", + "id": "lib_prometheus_components_tabgroup", + "community": 164, + "norm_label": "tabgroup" + }, + { + "label": "TabPanel", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L158", + "id": "lib_prometheus_components_tabpanel", + "community": 164, + "norm_label": "tabpanel" + }, + { + "label": "AccordionItem", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L179", + "id": "lib_prometheus_components_accordionitem", + "community": 164, + "norm_label": "accordionitem" + }, + { + "label": "ProgressFill", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L202", + "id": "lib_prometheus_components_progressfill", + "community": 164, + "norm_label": "progressfill" + }, + { + "label": "Divider", + "file_type": "code", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L226", + "id": "lib_prometheus_components_divider", + "community": 164, + "norm_label": "divider" + }, { "label": "utils.js", "file_type": "code", @@ -1551,7 +1695,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L1", "id": "main_app_authentication_authentication_py", - "community": 43, + "community": 208, "norm_label": "authentication.py" }, { @@ -1569,7 +1713,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L16", "id": "authentication_authentication_createuseraccount", - "community": 43, + "community": 208, "norm_label": "createuseraccount()" }, { @@ -1578,7 +1722,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L51", "id": "authentication_authentication_authenticategoogleuser", - "community": 43, + "community": 208, "norm_label": "authenticategoogleuser()" }, { @@ -1587,7 +1731,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L65", "id": "authentication_authentication_authenticateuser", - "community": 43, + "community": 208, "norm_label": "authenticateuser()" }, { @@ -2226,7 +2370,7 @@ "source_file": "main/app/prometheus/memory.py", "source_location": "L46", "id": "prometheus_memory_normalizekey", - "community": 63, + "community": 53, "norm_label": "normalizekey()" }, { @@ -2271,7 +2415,7 @@ "source_file": "main/app/prometheus/memory.py", "source_location": "L93", "id": "prometheus_memory_upsertmemory", - "community": 115, + "community": 53, "norm_label": "upsertmemory()" }, { @@ -2586,7 +2730,7 @@ "source_file": "main/app/prometheus/tools.py", "source_location": "L1", "id": "main_app_prometheus_tools_py", - "community": 86, + "community": 212, "norm_label": "tools.py" }, { @@ -2604,7 +2748,7 @@ "source_file": "main/app/prometheus/tools.py", "source_location": "L48", "id": "prometheus_tools_save_memory", - "community": 86, + "community": 213, "norm_label": "save_memory()" }, { @@ -2622,7 +2766,7 @@ "source_file": "main/app/prometheus/tools.py", "source_location": "L110", "id": "prometheus_tools_read_file", - "community": 152, + "community": 215, "norm_label": "read_file()" }, { @@ -2649,7 +2793,7 @@ "source_file": "main/app/prometheus/tools.py", "source_location": "L153", "id": "prometheus_tools_serve_file", - "community": 86, + "community": 212, "norm_label": "serve_file()" }, { @@ -2676,7 +2820,7 @@ "source_file": "main/app/prometheus/tools.py", "source_location": "L49", "id": "prometheus_tools_rationale_49", - "community": 86, + "community": 213, "norm_label": "store a memory about the user's preferences, analysis results, or feedback." }, { @@ -2694,7 +2838,7 @@ "source_file": "main/app/prometheus/tools.py", "source_location": "L111", "id": "prometheus_tools_rationale_111", - "community": 152, + "community": 188, "norm_label": "read a file from the workspace. args: path: path to the file (e." }, { @@ -2721,7 +2865,7 @@ "source_file": "main/app/prometheus/tools.py", "source_location": "L154", "id": "prometheus_tools_rationale_154", - "community": 86, + "community": 212, "norm_label": "get a download link for a workspace file to share with the user. use this" }, { @@ -2730,7 +2874,7 @@ "source_file": "main/app/prometheus/vector.py", "source_location": "L1", "id": "main_app_prometheus_vector_py", - "community": 13, + "community": 53, "norm_label": "vector.py" }, { @@ -2748,7 +2892,7 @@ "source_file": "main/app/prometheus/vector.py", "source_location": "L14", "id": "prometheus_vector_decodeembeddings", - "community": 13, + "community": 53, "norm_label": "decodeembeddings()" }, { @@ -2766,7 +2910,7 @@ "source_file": "main/app/prometheus/vector.py", "source_location": "L35", "id": "prometheus_vector_contenthash", - "community": 115, + "community": 53, "norm_label": "contenthash()" }, { @@ -2784,7 +2928,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L1", "id": "main_app_scraper_b3_scraper_py", - "community": 95, + "community": 72, "norm_label": "scraper.py" }, { @@ -2793,7 +2937,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L34", "id": "scraper_b3_scraper_getcurrentselic", - "community": 95, + "community": 72, "norm_label": "getcurrentselic()" }, { @@ -2811,7 +2955,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L45", "id": "scraper_b3_scraper_b3scraper_init", - "community": 95, + "community": 72, "norm_label": ".__init__()" }, { @@ -2820,7 +2964,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L59", "id": "scraper_b3_scraper_getinitialdata", - "community": 95, + "community": 72, "norm_label": "getinitialdata()" }, { @@ -2829,7 +2973,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L114", "id": "scraper_b3_scraper_historicalrentability", - "community": 95, + "community": 72, "norm_label": "historicalrentability()" }, { @@ -2838,7 +2982,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L137", "id": "scraper_b3_scraper_historicaldividends", - "community": 95, + "community": 72, "norm_label": "historicaldividends()" }, { @@ -2847,7 +2991,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L168", "id": "scraper_b3_scraper_historicaldividendyields", - "community": 95, + "community": 72, "norm_label": "historicaldividendyields()" }, { @@ -2856,7 +3000,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L196", "id": "scraper_b3_scraper_historicalrevenue", - "community": 95, + "community": 72, "norm_label": "historicalrevenue()" }, { @@ -2865,7 +3009,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L217", "id": "scraper_b3_scraper_historicalcotationprofits", - "community": 95, + "community": 72, "norm_label": "historicalcotationprofits()" }, { @@ -2883,7 +3027,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L243", "id": "scraper_b3_scraper_historicalcotations", - "community": 95, + "community": 72, "norm_label": "historicalcotations()" }, { @@ -2892,7 +3036,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L260", "id": "scraper_b3_scraper_tagalong", - "community": 95, + "community": 72, "norm_label": "tagalong()" }, { @@ -2901,7 +3045,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L285", "id": "scraper_b3_scraper_stocknews", - "community": 95, + "community": 72, "norm_label": "stocknews()" }, { @@ -3333,7 +3477,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L18", "id": "stocks_api_util_dedupabbrev", - "community": 130, + "community": 256, "norm_label": "dedupabbrev()" }, { @@ -3342,7 +3486,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L27", "id": "stocks_api_util_autoabbreviate", - "community": 130, + "community": 256, "norm_label": "autoabbreviate()" }, { @@ -3351,7 +3495,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L48", "id": "stocks_api_util_generateabbreviations", - "community": 130, + "community": 256, "norm_label": "generateabbreviations()" }, { @@ -3387,7 +3531,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L97", "id": "stocks_api_util_detectnestedfields", - "community": 130, + "community": 256, "norm_label": "detectnestedfields()" }, { @@ -3621,7 +3765,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L1", "id": "main_controller_stocksapi_controller_py", - "community": 81, + "community": 169, "norm_label": "stocksapi_controller.py" }, { @@ -3630,7 +3774,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L24", "id": "controller_stocksapi_controller_health", - "community": 81, + "community": 169, "norm_label": "health()" }, { @@ -4218,11 +4362,29 @@ "community": 33, "norm_label": "errors.py" }, + { + "label": "ErrorResponse", + "file_type": "code", + "source_file": "main/utils/errors.py", + "source_location": "L11", + "id": "utils_errors_errorresponse", + "community": 33, + "norm_label": "errorresponse" + }, + { + "label": "BaseModel", + "file_type": "code", + "source_file": "", + "source_location": "", + "id": "basemodel", + "community": 33, + "norm_label": "basemodel" + }, { "label": "RequestContextFilter", "file_type": "code", "source_file": "main/utils/errors.py", - "source_location": "L10", + "source_location": "L20", "id": "utils_errors_requestcontextfilter", "community": 33, "norm_label": "requestcontextfilter" @@ -4231,7 +4393,7 @@ "label": ".filter()", "file_type": "code", "source_file": "main/utils/errors.py", - "source_location": "L11", + "source_location": "L21", "id": "utils_errors_requestcontextfilter_filter", "community": 33, "norm_label": ".filter()" @@ -4240,7 +4402,7 @@ "label": "buildErrorResponse()", "file_type": "code", "source_file": "main/utils/errors.py", - "source_location": "L16", + "source_location": "L26", "id": "utils_errors_builderrorresponse", "community": 33, "norm_label": "builderrorresponse()" @@ -4249,7 +4411,7 @@ "label": "httpExceptionHandler()", "file_type": "code", "source_file": "main/utils/errors.py", - "source_location": "L27", + "source_location": "L36", "id": "utils_errors_httpexceptionhandler", "community": 33, "norm_label": "httpexceptionhandler()" @@ -4258,7 +4420,7 @@ "label": "validationExceptionHandler()", "file_type": "code", "source_file": "main/utils/errors.py", - "source_location": "L34", + "source_location": "L43", "id": "utils_errors_validationexceptionhandler", "community": 33, "norm_label": "validationexceptionhandler()" @@ -4267,7 +4429,7 @@ "label": "genericExceptionHandler()", "file_type": "code", "source_file": "main/utils/errors.py", - "source_location": "L46", + "source_location": "L55", "id": "utils_errors_genericexceptionhandler", "community": 33, "norm_label": "genericexceptionhandler()" @@ -4276,7 +4438,7 @@ "label": "registerErrorHandlers()", "file_type": "code", "source_file": "main/utils/errors.py", - "source_location": "L55", + "source_location": "L64", "id": "utils_errors_registererrorhandlers", "community": 120, "norm_label": "registererrorhandlers()" @@ -4287,7 +4449,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L1", "id": "main_utils_http_session_py", - "community": 59, + "community": 499, "norm_label": "http_session.py" }, { @@ -4296,7 +4458,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L8", "id": "utils_http_session_getsession", - "community": 59, + "community": 499, "norm_label": "getsession()" }, { @@ -4404,7 +4566,7 @@ "source_file": "main/utils/roles.py", "source_location": "L1", "id": "main_utils_roles_py", - "community": 115, + "community": 21, "norm_label": "roles.py" }, { @@ -4449,7 +4611,7 @@ "source_file": "main/utils/roles.py", "source_location": "L29", "id": "utils_roles_checkaccess", - "community": 115, + "community": 21, "norm_label": "checkaccess()" }, { @@ -4458,7 +4620,7 @@ "source_file": "main/utils/roles.py", "source_location": "L42", "id": "utils_roles_requirepermission", - "community": 115, + "community": 21, "norm_label": "requirepermission()" }, { @@ -5113,7 +5275,7 @@ "label": "User structure defined by string roles:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L32", + "source_location": "L29", "id": "server_todo_user_structure_defined_by_string_roles", "community": 187, "norm_label": "user structure defined by string roles:" @@ -5122,7 +5284,7 @@ "label": "USER:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L41", + "source_location": "L38", "id": "server_todo_user", "community": 187, "norm_label": "user:" @@ -5131,7 +5293,7 @@ "label": "PREMIUM:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L44", + "source_location": "L41", "id": "server_todo_premium", "community": 187, "norm_label": "premium:" @@ -5140,7 +5302,7 @@ "label": "DEVELOPER:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L47", + "source_location": "L44", "id": "server_todo_developer", "community": 187, "norm_label": "developer:" @@ -6963,6 +7125,348 @@ "community": 55, "norm_label": "task 4: docker restart + e2e of /prometheus/chat/stream (performed by controller, not a subagent)" }, + { + "label": "2026-08-17-openui-migration.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L1", + "id": "docs_superpowers_plans_2026_08_17_openui_migration_md", + "community": 48, + "norm_label": "2026-08-17-openui-migration.md" + }, + { + "label": "OpenUI Migration Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L1", + "id": "plans_2026_08_17_openui_migration_openui_migration_plan", + "community": 48, + "norm_label": "openui migration plan" + }, + { + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L20", + "id": "plans_2026_08_17_openui_migration_global_constraints", + "community": 48, + "norm_label": "global constraints" + }, + { + "label": "File Structure", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L30", + "id": "plans_2026_08_17_openui_migration_file_structure", + "community": 48, + "norm_label": "file structure" + }, + { + "label": "Frontend (LOCAL ONLY \u2014 never committed)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L32", + "id": "plans_2026_08_17_openui_migration_frontend_local_only_never_committed", + "community": 48, + "norm_label": "frontend (local only \u2014 never committed)" + }, + { + "label": "Backend (COMMIT)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L43", + "id": "plans_2026_08_17_openui_migration_backend_commit", + "community": 48, + "norm_label": "backend (commit)" + }, + { + "label": "Task 1: Install OpenUI + Remove mdocUI", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L52", + "id": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "community": 48, + "norm_label": "task 1: install openui + remove mdocui" + }, + { + "label": "code:bash (cd frontend && pnpm add @openuidev/react-lang)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L58", + "id": "plans_2026_08_17_openui_migration_codeblock_1", + "community": 48, + "norm_label": "code:bash (cd frontend && pnpm add @openuidev/react-lang)" + }, + { + "label": "code:bash (cd frontend && pnpm remove @mdocui/core @mdocui/react)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L66", + "id": "plans_2026_08_17_openui_migration_codeblock_2", + "community": 48, + "norm_label": "code:bash (cd frontend && pnpm remove @mdocui/core @mdocui/react)" + }, + { + "label": "code:bash (cd frontend && grep -r \"mdocui\" src/ --include=\"*.jsx\" --inc)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L72", + "id": "plans_2026_08_17_openui_migration_codeblock_3", + "community": 48, + "norm_label": "code:bash (cd frontend && grep -r \"mdocui\" src/ --include=\"*.jsx\" --inc)" + }, + { + "label": "Task 2: Define Prometheus Component Library", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L80", + "id": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library", + "community": 48, + "norm_label": "task 2: define prometheus component library" + }, + { + "label": "Component Mapping", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L86", + "id": "plans_2026_08_17_openui_migration_component_mapping", + "community": 48, + "norm_label": "component mapping" + }, + { + "label": "code:javascript (import { defineComponent } from \"@openuidev/react-lang\";)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L101", + "id": "plans_2026_08_17_openui_migration_codeblock_4", + "community": 48, + "norm_label": "code:javascript (import { definecomponent } from \"@openuidev/react-lang\";)" + }, + { + "label": "code:javascript (import { createLibrary } from \"@openuidev/react-lang\";)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L339", + "id": "plans_2026_08_17_openui_migration_codeblock_5", + "community": 48, + "norm_label": "code:javascript (import { createlibrary } from \"@openuidev/react-lang\";)" + }, + { + "label": "Task 3: Create OpenUI Renderer", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L385", + "id": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "community": 48, + "norm_label": "task 3: create openui renderer" + }, + { + "label": "code:jsx (import { Renderer } from \"@openuidev/react-lang\";)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L396", + "id": "plans_2026_08_17_openui_migration_codeblock_6", + "community": 48, + "norm_label": "code:jsx (import { renderer } from \"@openuidev/react-lang\";)" + }, + { + "label": "code:diff (- import MdocMessage from \"./MdocMessage\";)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L428", + "id": "plans_2026_08_17_openui_migration_codeblock_7", + "community": 48, + "norm_label": "code:diff (- import mdocmessage from \"./mdocmessage\";)" + }, + { + "label": "code:diff (- )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L435", + "id": "plans_2026_08_17_openui_migration_codeblock_8", + "community": 48, + "norm_label": "code:diff (- )" + }, + { + "label": "code:diff (- )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L442", + "id": "plans_2026_08_17_openui_migration_codeblock_9", + "community": 48, + "norm_label": "code:diff (- )" + }, + { + "label": "code:bash (rm frontend/src/components/MdocMessage.jsx)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L449", + "id": "plans_2026_08_17_openui_migration_codeblock_10", + "community": 48, + "norm_label": "code:bash (rm frontend/src/components/mdocmessage.jsx)" + }, + { + "label": "Task 4: Backend System Prompt", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L455", + "id": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "community": 48, + "norm_label": "task 4: backend system prompt" + }, + { + "label": "code:python (\"\"\"OpenUI Lang system prompt section for Prometheus agent.)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L467", + "id": "plans_2026_08_17_openui_migration_codeblock_11", + "community": 48, + "norm_label": "code:python (\"\"\"openui lang system prompt section for prometheus agent.)" + }, + { + "label": "code:block12", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L486", + "id": "plans_2026_08_17_openui_migration_codeblock_12", + "community": 48, + "norm_label": "code:block12" + }, + { + "label": "code:block13", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L501", + "id": "plans_2026_08_17_openui_migration_codeblock_13", + "community": 48, + "norm_label": "code:block13" + }, + { + "label": "code:block14", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L542", + "id": "plans_2026_08_17_openui_migration_codeblock_14", + "community": 48, + "norm_label": "code:block14" + }, + { + "label": "code:block15", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L555", + "id": "plans_2026_08_17_openui_migration_codeblock_15", + "community": 48, + "norm_label": "code:block15" + }, + { + "label": "code:block16", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L572", + "id": "plans_2026_08_17_openui_migration_codeblock_16", + "community": 48, + "norm_label": "code:block16" + }, + { + "label": "code:block17 (\"\"\")", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L577", + "id": "plans_2026_08_17_openui_migration_codeblock_17", + "community": 48, + "norm_label": "code:block17 (\"\"\")" + }, + { + "label": "code:python (from .ui_schema import get_system_prompt_extra)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L590", + "id": "plans_2026_08_17_openui_migration_codeblock_18", + "community": 48, + "norm_label": "code:python (from .ui_schema import get_system_prompt_extra)" + }, + { + "label": "code:python ({get_system_prompt_extra()})", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L596", + "id": "plans_2026_08_17_openui_migration_codeblock_19", + "community": 48, + "norm_label": "code:python ({get_system_prompt_extra()})" + }, + { + "label": "code:bash (cd D:\\Repositories\\server && python -c \"from main.app.promet)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L602", + "id": "plans_2026_08_17_openui_migration_codeblock_20", + "community": 48, + "norm_label": "code:bash (cd d:\\repositories\\server && python -c \"from main.app.promet)" + }, + { + "label": "Task 5: Integration Test", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L610", + "id": "plans_2026_08_17_openui_migration_task_5_integration_test", + "community": 48, + "norm_label": "task 5: integration test" + }, + { + "label": "code:bash (cd D:\\Repositories\\server && docker-compose up -d --build)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L614", + "id": "plans_2026_08_17_openui_migration_codeblock_21", + "community": 48, + "norm_label": "code:bash (cd d:\\repositories\\server && docker-compose up -d --build)" + }, + { + "label": "code:bash (cd D:\\Repositories\\server\\frontend && pnpm dev)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L620", + "id": "plans_2026_08_17_openui_migration_codeblock_22", + "community": 48, + "norm_label": "code:bash (cd d:\\repositories\\server\\frontend && pnpm dev)" + }, + { + "label": "Verification Checklist", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L640", + "id": "plans_2026_08_17_openui_migration_verification_checklist", + "community": 48, + "norm_label": "verification checklist" + }, + { + "label": "registry", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L4", + "community": 211, + "norm_label": "registry", + "id": "components_mdocmessage_registry" + }, + { + "label": "preprocessGeminiTags()", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L14", + "community": 211, + "norm_label": "preprocessgeminitags()", + "id": "components_mdocmessage_preprocessgeminitags" + }, + { + "label": "WorkspaceLink()", + "file_type": "code", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L61", + "community": 211, + "norm_label": "workspacelink()", + "id": "components_mdocmessage_workspacelink" + }, { "label": "_safe_filter()", "file_type": "code", @@ -7031,7 +7535,7 @@ "file_type": "code", "source_file": "main/app/prometheus/compact.py", "source_location": "L222", - "community": 178, + "community": 87, "norm_label": ".__init__()", "id": "prometheus_compact_prometheuscompactor_init" }, @@ -7058,7 +7562,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L54", - "community": 86, + "community": 213, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_54" }, @@ -7076,7 +7580,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L113", - "community": 152, + "community": 215, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_113" }, @@ -7103,7 +7607,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L156", - "community": 86, + "community": 212, "norm_label": "get a download link for a workspace file to share with the user. use this", "id": "prometheus_tools_rationale_156" }, @@ -7130,7 +7634,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L24", - "community": 81, + "community": 169, "norm_label": "jsonbytesresponse", "id": "controller_stocksapi_controller_jsonbytesresponse" }, @@ -7139,7 +7643,7 @@ "file_type": "code", "source_file": "", "source_location": "", - "community": 81, + "community": 169, "norm_label": "fastapiresponse", "id": "fastapiresponse" }, @@ -7148,7 +7652,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L27", - "community": 81, + "community": 169, "norm_label": ".render()", "id": "controller_stocksapi_controller_jsonbytesresponse_render" }, @@ -7197,24 +7701,6 @@ "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", "id": "controller_stocksapi_controller_rationale_291" }, - { - "label": "ErrorResponse", - "file_type": "code", - "source_file": "main/utils/errors.py", - "source_location": "L12", - "community": 33, - "norm_label": "errorresponse", - "id": "utils_errors_errorresponse" - }, - { - "label": "BaseModel", - "file_type": "code", - "source_file": "", - "source_location": "", - "community": 33, - "norm_label": "basemodel", - "id": "basemodel" - }, { "label": "ServiceManager", "file_type": "code", @@ -7400,7 +7886,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L135", - "community": 152, + "community": 215, "norm_label": "list files in the workspace directory. args: path: directory pat", "id": "prometheus_tools_rationale_135" }, @@ -7409,7 +7895,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L145", - "community": 86, + "community": 212, "norm_label": "get a download link for a workspace file to share with the user. use this", "id": "prometheus_tools_rationale_145" }, @@ -7706,7 +8192,7 @@ "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L24", - "community": 81, + "community": 169, "norm_label": "sends pre-serialized json bytes without re-encoding (cache-friendly).", "id": "controller_stocksapi_controller_rationale_24" }, @@ -7760,7 +8246,7 @@ "file_type": "code", "source_file": "frontend/src/components/AgentLoop.jsx", "source_location": "L3", - "community": 211, + "community": 214, "norm_label": "toolchip()", "id": "components_agentloop_toolchip" }, @@ -7778,7 +8264,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L1", - "community": 518, + "community": 63, "norm_label": "response_cache.py", "id": "main_app_stocks_api_response_cache_py" }, @@ -7787,7 +8273,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L19", - "community": 518, + "community": 63, "norm_label": "responsecache", "id": "stocks_api_response_cache_responsecache" }, @@ -7796,7 +8282,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L20", - "community": 518, + "community": 63, "norm_label": ".__init__()", "id": "stocks_api_response_cache_responsecache_init" }, @@ -7805,7 +8291,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L29", - "community": 518, + "community": 63, "norm_label": ".makekey()", "id": "stocks_api_response_cache_responsecache_makekey" }, @@ -7814,7 +8300,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L34", - "community": 518, + "community": 63, "norm_label": ".get()", "id": "stocks_api_response_cache_responsecache_get" }, @@ -8714,7 +9200,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L46", - "community": 82, + "community": 256, "norm_label": "rebuildabbrevs()", "id": "stocks_api_compressor_rebuildabbrevs" }, @@ -9659,7 +10145,7 @@ "file_type": "code", "source_file": "main/app/prometheus/state.py", "source_location": "L14", - "community": 63, + "community": 497, "norm_label": ".set()", "id": "prometheus_state_harnessstate_set" }, @@ -9722,7 +10208,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L104", - "community": 188, + "community": 100, "norm_label": "set_state()", "id": "prometheus_tools_set_state" }, @@ -9731,7 +10217,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L105", - "community": 188, + "community": 100, "norm_label": "store a value in the harness state for this session. use this to save inter", "id": "prometheus_tools_rationale_105" }, @@ -9749,7 +10235,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L144", - "community": 152, + "community": 215, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_144" }, @@ -10217,7 +10703,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L48", - "community": 115, + "community": 53, "norm_label": "applyupdate()", "id": "prometheus_memory_applyupdate" }, @@ -10316,7 +10802,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tokenizer.py", "source_location": "L1", - "community": 80, + "community": 491, "norm_label": "tokenizer.py", "id": "main_app_prometheus_tokenizer_py" }, @@ -10325,7 +10811,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tokenizer.py", "source_location": "L10", - "community": 80, + "community": 491, "norm_label": "_get_tokenizer()", "id": "prometheus_tokenizer_get_tokenizer" }, @@ -10334,7 +10820,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tokenizer.py", "source_location": "L17", - "community": 80, + "community": 491, "norm_label": "counttokens()", "id": "prometheus_tokenizer_counttokens" }, @@ -10343,7 +10829,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tokenizer.py", "source_location": "L18", - "community": 80, + "community": 491, "norm_label": "count tokens using gemini's local tokenizer. accurate for portuguese.", "id": "prometheus_tokenizer_rationale_18" }, @@ -11135,7 +11621,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L44", - "community": 86, + "community": 213, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_44" }, @@ -11153,7 +11639,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L96", - "community": 188, + "community": 100, "norm_label": "store a value in the harness state for this session. use this to save inter", "id": "prometheus_tools_rationale_96" }, @@ -17417,7 +17903,7 @@ "file_type": "code", "source_file": "tests/conftest.py", "source_location": "L81", - "community": 527, + "community": 95, "norm_label": "stocks_http_client()", "id": "tests_conftest_stocks_http_client" }, @@ -17426,7 +17912,7 @@ "file_type": "code", "source_file": "tests/conftest.py", "source_location": "L106", - "community": 527, + "community": 95, "norm_label": "client()", "id": "tests_conftest_client" }, @@ -17453,7 +17939,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L82", - "community": 527, + "community": 95, "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", "id": "tests_conftest_rationale_82" }, @@ -17462,7 +17948,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L107", - "community": 527, + "community": 95, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_107" }, @@ -18263,7 +18749,7 @@ "file_type": "code", "source_file": "tests/test_config.py", "source_location": "L1", - "community": 500, + "community": 102, "norm_label": "test_config.py", "id": "tests_test_config_py" }, @@ -18551,7 +19037,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L57", - "community": 16, + "community": 120, "norm_label": "_make_prometheus_client()", "id": "tests_test_controllers_coverage_make_prometheus_client" }, @@ -18623,7 +19109,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L146", - "community": 21, + "community": 120, "norm_label": "testregisterendpoint", "id": "tests_test_controllers_coverage_testregisterendpoint" }, @@ -18668,7 +19154,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L215", - "community": 120, + "community": 21, "norm_label": "testloginendpoint", "id": "tests_test_controllers_coverage_testloginendpoint" }, @@ -19064,7 +19550,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L849", - "community": 16, + "community": 263, "norm_label": "testprometheusgetsessions", "id": "tests_test_controllers_coverage_testprometheusgetsessions" }, @@ -19073,7 +19559,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L852", - "community": 16, + "community": 263, "norm_label": ".test_get_sessions()", "id": "tests_test_controllers_coverage_testprometheusgetsessions_test_get_sessions" }, @@ -19082,7 +19568,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L867", - "community": 16, + "community": 21, "norm_label": "testprometheuscreatesession", "id": "tests_test_controllers_coverage_testprometheuscreatesession" }, @@ -19091,7 +19577,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L870", - "community": 16, + "community": 21, "norm_label": ".test_create_session()", "id": "tests_test_controllers_coverage_testprometheuscreatesession_test_create_session" }, @@ -19163,7 +19649,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L997", - "community": 16, + "community": 94, "norm_label": "testprometheusdeletesession", "id": "tests_test_controllers_coverage_testprometheusdeletesession" }, @@ -19172,7 +19658,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1000", - "community": 16, + "community": 94, "norm_label": ".test_delete_session_success()", "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_success" }, @@ -19181,7 +19667,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1010", - "community": 16, + "community": 94, "norm_label": ".test_delete_session_not_found()", "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_not_found" }, @@ -19235,7 +19721,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1144", - "community": 21, + "community": 259, "norm_label": "teststocksapihealth", "id": "tests_test_controllers_coverage_teststocksapihealth" }, @@ -19244,7 +19730,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1147", - "community": 21, + "community": 259, "norm_label": ".test_health()", "id": "tests_test_controllers_coverage_teststocksapihealth_test_health" }, @@ -19433,7 +19919,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1384", - "community": 78, + "community": 43, "norm_label": ".test_empty_password_raises()", "id": "tests_test_controllers_coverage_testhashpasswordempty_test_empty_password_raises" }, @@ -19532,7 +20018,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L58", - "community": 16, + "community": 120, "norm_label": "return (client, app) with prometheus router and mocked deps.", "id": "tests_test_controllers_coverage_rationale_58" }, @@ -19568,7 +20054,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L147", - "community": 21, + "community": 120, "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", "id": "tests_test_controllers_coverage_rationale_147" }, @@ -19613,7 +20099,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L216", - "community": 120, + "community": 21, "norm_label": "covers lines 87-93, 102: login success and failure paths.", "id": "tests_test_controllers_coverage_rationale_216" }, @@ -19928,7 +20414,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L850", - "community": 16, + "community": 263, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_850" }, @@ -19937,7 +20423,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L868", - "community": 16, + "community": 21, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_868" }, @@ -20009,7 +20495,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L998", - "community": 16, + "community": 94, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_998" }, @@ -20018,7 +20504,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1001", - "community": 16, + "community": 94, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_1001" }, @@ -20027,7 +20513,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1011", - "community": 16, + "community": 94, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1011" }, @@ -20081,7 +20567,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1145", - "community": 21, + "community": 259, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1145" }, @@ -20864,7 +21350,7 @@ "file_type": "code", "source_file": "tests/test_error_handlers.py", "source_location": "L25", - "community": 120, + "community": 33, "norm_label": "app()", "id": "tests_test_error_handlers_app" }, @@ -21989,7 +22475,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L84", - "community": 146, + "community": 54, "norm_label": "testarchive", "id": "tests_test_memory_maintenance_testarchive" }, @@ -22547,7 +23033,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L64", - "community": 49, + "community": 497, "norm_label": "testtoolregistry", "id": "tests_test_memory_tools_wiring_testtoolregistry" }, @@ -22556,7 +23042,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L67", - "community": 49, + "community": 497, "norm_label": ".test_registry_contains_memory_tools()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_contains_memory_tools" }, @@ -22565,7 +23051,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L71", - "community": 49, + "community": 497, "norm_label": ".test_registry_values_are_callable()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_values_are_callable" }, @@ -22574,7 +23060,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L75", - "community": 49, + "community": 497, "norm_label": ".test_registry_matches_tool_names()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_matches_tool_names" }, @@ -22583,7 +23069,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L79", - "community": 49, + "community": 486, "norm_label": "testmakechatincludesmemorytools", "id": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" }, @@ -22601,7 +23087,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L112", - "community": 49, + "community": 474, "norm_label": "testdispatchroutesmemorytools", "id": "tests_test_memory_tools_wiring_testdispatchroutesmemorytools" }, @@ -22655,7 +23141,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L65", - "community": 49, + "community": 497, "norm_label": "tool_registry pattern must work correctly.", "id": "tests_test_memory_tools_wiring_rationale_65" }, @@ -22664,7 +23150,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L80", - "community": 49, + "community": 486, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_80" }, @@ -22673,7 +23159,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L113", - "community": 49, + "community": 474, "norm_label": "dispatchtoolcall must route memory tool names via tool_registry.", "id": "tests_test_memory_tools_wiring_rationale_113" }, @@ -23231,7 +23717,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L1", - "community": 132, + "community": 490, "norm_label": "test_pagination.py", "id": "tests_test_pagination_py" }, @@ -23240,7 +23726,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L14", - "community": 132, + "community": 490, "norm_label": "app()", "id": "tests_test_pagination_app" }, @@ -23249,7 +23735,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L35", - "community": 132, + "community": 490, "norm_label": "client()", "id": "tests_test_pagination_client" }, @@ -23348,7 +23834,7 @@ "file_type": "rationale", "source_file": "tests/test_pagination.py", "source_location": "L1", - "community": 132, + "community": 490, "norm_label": "tests for inline pagination params (used in user + prometheus controllers).", "id": "tests_test_pagination_rationale_1" }, @@ -24077,7 +24563,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L44", - "community": 100, + "community": 497, "norm_label": "testmemorytoolfunctions", "id": "tests_test_prometheus_tools_testmemorytoolfunctions" }, @@ -24086,7 +24572,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L45", - "community": 100, + "community": 497, "norm_label": ".test_search_memory_has_docstring()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_docstring" }, @@ -24095,7 +24581,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L49", - "community": 100, + "community": 497, "norm_label": ".test_save_memory_has_docstring()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_docstring" }, @@ -24104,7 +24590,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L53", - "community": 100, + "community": 497, "norm_label": ".test_search_memory_signature()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_signature" }, @@ -24113,7 +24599,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L59", - "community": 100, + "community": 497, "norm_label": ".test_save_memory_signature()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_signature" }, @@ -24122,7 +24608,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L66", - "community": 100, + "community": 497, "norm_label": ".test_search_memory_has_type_hints()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_type_hints" }, @@ -24131,7 +24617,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L71", - "community": 100, + "community": 497, "norm_label": ".test_save_memory_has_type_hints()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_type_hints" }, @@ -24140,7 +24626,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L77", - "community": 100, + "community": 497, "norm_label": ".test_memory_tools_is_list_of_callables()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tools_is_list_of_callables" }, @@ -24149,7 +24635,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L83", - "community": 100, + "community": 497, "norm_label": ".test_memory_tool_names_unchanged()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tool_names_unchanged" }, @@ -24266,7 +24752,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L151", - "community": 100, + "community": 497, "norm_label": "testtoolregistry", "id": "tests_test_prometheus_tools_testtoolregistry" }, @@ -24275,7 +24761,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L152", - "community": 100, + "community": 497, "norm_label": ".test_registry_contains_memory_tools()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_contains_memory_tools" }, @@ -24284,7 +24770,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L156", - "community": 100, + "community": 497, "norm_label": ".test_registry_values_are_callable()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_values_are_callable" }, @@ -24293,7 +24779,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L160", - "community": 100, + "community": 497, "norm_label": ".test_registry_matches_tool_names()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_matches_tool_names" }, @@ -25472,7 +25958,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L6", - "community": 164, + "community": 49, "norm_label": "testsandboxtooldefinitions", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions" }, @@ -25481,7 +25967,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L7", - "community": 164, + "community": 49, "norm_label": ".test_execute_code_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_in_registry" }, @@ -25490,7 +25976,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L10", - "community": 164, + "community": 49, "norm_label": ".test_read_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_file_in_registry" }, @@ -25499,7 +25985,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L13", - "community": 164, + "community": 49, "norm_label": ".test_write_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_write_file_in_registry" }, @@ -25508,7 +25994,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L16", - "community": 164, + "community": 49, "norm_label": ".test_list_files_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_list_files_in_registry" }, @@ -25517,7 +26003,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L19", - "community": 164, + "community": 49, "norm_label": ".test_execute_code_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_has_docstring" }, @@ -26102,7 +26588,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L97", - "community": 188, + "community": 100, "norm_label": "test_set_state_no_state()", "id": "tests_test_state_tools_test_set_state_no_state" }, @@ -28919,7 +29405,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L1", - "community": 48, + "community": 122, "norm_label": "test_thread_safety.py", "id": "tests_test_thread_safety_py" }, @@ -28928,7 +29414,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L21", - "community": 59, + "community": 122, "norm_label": "testgetsession", "id": "tests_test_thread_safety_testgetsession" }, @@ -28937,7 +29423,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L24", - "community": 59, + "community": 122, "norm_label": ".test_same_session_within_same_thread()", "id": "tests_test_thread_safety_testgetsession_test_same_session_within_same_thread" }, @@ -28946,7 +29432,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L32", - "community": 59, + "community": 122, "norm_label": ".test_different_sessions_in_different_threads()", "id": "tests_test_thread_safety_testgetsession_test_different_sessions_in_different_threads" }, @@ -28955,7 +29441,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L52", - "community": 59, + "community": 122, "norm_label": ".test_isolation_under_high_concurrency()", "id": "tests_test_thread_safety_testgetsession_test_isolation_under_high_concurrency" }, @@ -28964,7 +29450,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L73", - "community": 59, + "community": 122, "norm_label": ".test_session_is_requests_session()", "id": "tests_test_thread_safety_testgetsession_test_session_is_requests_session" }, @@ -28973,7 +29459,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L87", - "community": 94, + "community": 122, "norm_label": "testdiscordhandlerthreadpool", "id": "tests_test_thread_safety_testdiscordhandlerthreadpool" }, @@ -28982,7 +29468,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L90", - "community": 94, + "community": 122, "norm_label": ".test_executor_exists_and_is_bounded()", "id": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_executor_exists_and_is_bounded" }, @@ -28991,7 +29477,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L98", - "community": 94, + "community": 122, "norm_label": ".test_emit_submits_to_executor()", "id": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_emit_submits_to_executor" }, @@ -29000,7 +29486,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L128", - "community": 94, + "community": 122, "norm_label": ".test_concurrent_emits_do_not_spawn_unbounded_threads()", "id": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_concurrent_emits_do_not_spawn_unbounded_threads" }, @@ -29009,7 +29495,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L175", - "community": 48, + "community": 122, "norm_label": "testconcurrentgetsession", "id": "tests_test_thread_safety_testconcurrentgetsession" }, @@ -29018,7 +29504,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L178", - "community": 48, + "community": 122, "norm_label": ".test_getsession_returns_thread_local_sessions()", "id": "tests_test_thread_safety_testconcurrentgetsession_test_getsession_returns_thread_local_sessions" }, @@ -29027,7 +29513,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L199", - "community": 48, + "community": 122, "norm_label": ".test_connectivity_uses_getsession()", "id": "tests_test_thread_safety_testconcurrentgetsession_test_connectivity_uses_getsession" }, @@ -29036,7 +29522,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L1", - "community": 48, + "community": 122, "norm_label": "tests for thread safety utilities (issues 5 & 6). issue 5: discordhandler use", "id": "tests_test_thread_safety_rationale_1" }, @@ -29045,7 +29531,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L22", - "community": 59, + "community": 122, "norm_label": "verify that getsession() returns per-thread session instances.", "id": "tests_test_thread_safety_rationale_22" }, @@ -29054,7 +29540,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L25", - "community": 59, + "community": 122, "norm_label": "calling getsession() twice in the same thread returns the same object.", "id": "tests_test_thread_safety_rationale_25" }, @@ -29063,7 +29549,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L33", - "community": 59, + "community": 122, "norm_label": "two threads must not share a session object.", "id": "tests_test_thread_safety_rationale_33" }, @@ -29072,7 +29558,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L53", - "community": 59, + "community": 122, "norm_label": "with 20 concurrent threads, every thread must get its own session.", "id": "tests_test_thread_safety_rationale_53" }, @@ -29081,7 +29567,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L74", - "community": 59, + "community": 122, "norm_label": "the returned object must be a real requests.session.", "id": "tests_test_thread_safety_rationale_74" }, @@ -29090,7 +29576,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L88", - "community": 94, + "community": 122, "norm_label": "verify that discordhandler submits to a bounded executor, not raw threads.", "id": "tests_test_thread_safety_rationale_88" }, @@ -29099,7 +29585,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L91", - "community": 94, + "community": 122, "norm_label": "the module-level discordexecutor must exist with max_workers <= 5.", "id": "tests_test_thread_safety_rationale_91" }, @@ -29108,7 +29594,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L99", - "community": 94, + "community": 122, "norm_label": "discordhandler.emit() must use discordexecutor.submit, not thread.start.", "id": "tests_test_thread_safety_rationale_99" }, @@ -29117,7 +29603,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L129", - "community": 94, + "community": 122, "norm_label": "many concurrent emit() calls must not create more threads than max_workers.", "id": "tests_test_thread_safety_rationale_129" }, @@ -29126,7 +29612,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L176", - "community": 48, + "community": 122, "norm_label": "verify getsession returns thread-local sessions under concurrency.", "id": "tests_test_thread_safety_rationale_176" }, @@ -29135,7 +29621,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L179", - "community": 48, + "community": 122, "norm_label": "getsession() must give each thread its own session.", "id": "tests_test_thread_safety_rationale_179" }, @@ -29144,7 +29630,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L200", - "community": 48, + "community": 122, "norm_label": "connectivity.checkserviceconnection must call getsession(), not use a global ses", "id": "tests_test_thread_safety_rationale_200" }, @@ -29252,7 +29738,7 @@ "file_type": "code", "source_file": "tests/test_user_deps.py", "source_location": "L1", - "community": 132, + "community": 208, "norm_label": "test_user_deps.py", "id": "tests_test_user_deps_py" }, @@ -29603,7 +30089,7 @@ "file_type": "code", "source_file": "frontend/src/components/AgentLoop.jsx", "source_location": "L3", - "community": 211, + "community": 214, "norm_label": "toolcard()", "id": "components_agentloop_toolcard" }, @@ -30827,7 +31313,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1138", - "community": 21, + "community": 259, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1138" }, @@ -31133,7 +31619,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L42", - "community": 86, + "community": 213, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_42" }, @@ -31151,7 +31637,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L94", - "community": 188, + "community": 100, "norm_label": "store a value in the harness state for this session. use this to save inter", "id": "prometheus_tools_rationale_94" }, @@ -31169,7 +31655,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L147", - "community": 152, + "community": 215, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_147" }, @@ -31484,7 +31970,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L131", - "community": 152, + "community": 215, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_131" }, @@ -31682,7 +32168,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L130", - "community": 152, + "community": 215, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_130" }, @@ -31817,7 +32303,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L41", - "community": 86, + "community": 213, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_41" }, @@ -31835,7 +32321,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L93", - "community": 188, + "community": 100, "norm_label": "store a value in the harness state for this session. use this to save inter", "id": "prometheus_tools_rationale_93" }, @@ -34022,7 +34508,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L114", - "community": 100, + "community": 8, "norm_label": "test_get_state_no_state_returns_error()", "id": "tests_test_prometheus_tools_test_get_state_no_state_returns_error" }, @@ -34175,7 +34661,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L139", - "community": 86, + "community": 495, "norm_label": "read_sandbox_file()", "id": "prometheus_tools_read_sandbox_file" }, @@ -34184,7 +34670,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L151", - "community": 86, + "community": 212, "norm_label": "upload_to_sandbox()", "id": "prometheus_tools_upload_to_sandbox" }, @@ -34193,7 +34679,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L165", - "community": 86, + "community": 212, "norm_label": "check_cache()", "id": "prometheus_tools_check_cache" }, @@ -34220,7 +34706,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L140", - "community": 86, + "community": 495, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_140" }, @@ -34229,7 +34715,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L152", - "community": 86, + "community": 212, "norm_label": "upload a file to the sandbox filesystem. use this to push data files (csv,", "id": "prometheus_tools_rationale_152" }, @@ -34238,7 +34724,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L166", - "community": 86, + "community": 212, "norm_label": "check if a computed result exists in the cache. use before executing expens", "id": "prometheus_tools_rationale_166" }, @@ -34463,7 +34949,7 @@ "file_type": "code", "source_file": "tests/test_config_sandbox.py", "source_location": "L1", - "community": 500, + "community": 102, "norm_label": "test_config_sandbox.py", "id": "tests_test_config_sandbox_py" }, @@ -34760,7 +35246,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L12", - "community": 164, + "community": 49, "norm_label": ".test_read_sandbox_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_in_registry" }, @@ -34769,7 +35255,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L15", - "community": 164, + "community": 49, "norm_label": ".test_check_cache_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_in_registry" }, @@ -34778,7 +35264,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L23", - "community": 164, + "community": 49, "norm_label": ".test_read_sandbox_file_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_has_docstring" }, @@ -34787,7 +35273,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L28", - "community": 164, + "community": 49, "norm_label": ".test_check_cache_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_has_docstring" }, @@ -34922,7 +35408,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L142", - "community": 86, + "community": 495, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_142" }, @@ -35534,7 +36020,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L91", - "community": 188, + "community": 100, "norm_label": "store a value in the harness state for this session. use this to save interm", "id": "prometheus_tools_rationale_91" }, @@ -35615,7 +36101,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L39", - "community": 86, + "community": 213, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_39" }, @@ -35678,7 +36164,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/state.py", "source_location": "L22", - "community": 63, + "community": 497, "norm_label": "store a value in state. marks state as changed for context injection.", "id": "prometheus_state_rationale_22" }, @@ -35741,7 +36227,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L38", - "community": 86, + "community": 213, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_38" }, @@ -35804,7 +36290,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L29", - "community": 86, + "community": 213, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_29" }, @@ -35939,7 +36425,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L52", - "community": 49, + "community": 486, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_52" }, @@ -35948,7 +36434,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L89", - "community": 49, + "community": 474, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_89" }, @@ -35975,7 +36461,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L57", - "community": 49, + "community": 486, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_57" }, @@ -35984,7 +36470,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L92", - "community": 49, + "community": 474, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_92" }, @@ -36758,7 +37244,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L56", - "community": 49, + "community": 486, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_56" }, @@ -36767,7 +37253,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L91", - "community": 49, + "community": 474, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_91" }, @@ -37091,7 +37577,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L48", - "community": 49, + "community": 486, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_48" }, @@ -37100,7 +37586,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L76", - "community": 49, + "community": 474, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_76" }, @@ -39593,7 +40079,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L74", - "community": 527, + "community": 95, "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", "id": "tests_conftest_rationale_74" }, @@ -39602,7 +40088,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L99", - "community": 527, + "community": 95, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_99" }, @@ -39764,7 +40250,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L846", - "community": 16, + "community": 263, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_846" }, @@ -39773,7 +40259,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L864", - "community": 16, + "community": 21, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_864" }, @@ -39845,7 +40331,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L994", - "community": 16, + "community": 94, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_994" }, @@ -39854,7 +40340,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L997", - "community": 16, + "community": 94, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_997" }, @@ -39863,7 +40349,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1007", - "community": 16, + "community": 94, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1007" }, @@ -39917,7 +40403,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1134", - "community": 21, + "community": 259, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1134" }, @@ -40376,7 +40862,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L844", - "community": 16, + "community": 263, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_844" }, @@ -40385,7 +40871,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L862", - "community": 16, + "community": 21, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_862" }, @@ -40457,7 +40943,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L992", - "community": 16, + "community": 94, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_992" }, @@ -40466,7 +40952,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L995", - "community": 16, + "community": 94, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_995" }, @@ -40475,7 +40961,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1005", - "community": 16, + "community": 94, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1005" }, @@ -40529,7 +41015,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1133", - "community": 21, + "community": 259, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1133" }, @@ -43121,7 +43607,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L63", - "community": 81, + "community": 169, "norm_label": "getrealtimecotation()", "id": "controller_stocksapi_controller_getrealtimecotation" }, @@ -43238,7 +43724,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L23", - "community": 81, + "community": 169, "norm_label": "apikeytest()", "id": "controller_stocksapi_controller_apikeytest" }, @@ -43292,7 +43778,7 @@ "file_type": "code", "source_file": "main/utils/http_session.py", "source_location": "L18", - "community": 59, + "community": 499, "norm_label": "cleanup()", "id": "utils_http_session_cleanup" }, @@ -43301,7 +43787,7 @@ "file_type": "code", "source_file": "main/utils/pagination.py", "source_location": "L1", - "community": 132, + "community": 208, "norm_label": "pagination.py", "id": "main_utils_pagination_py" }, @@ -43310,7 +43796,7 @@ "file_type": "code", "source_file": "main/utils/pagination.py", "source_location": "L4", - "community": 132, + "community": 208, "norm_label": "paginationparams", "id": "utils_pagination_paginationparams" }, @@ -43319,7 +43805,7 @@ "file_type": "code", "source_file": "main/utils/pagination.py", "source_location": "L5", - "community": 132, + "community": 208, "norm_label": ".__init__()", "id": "utils_pagination_paginationparams_init" }, @@ -43337,7 +43823,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L75", - "community": 527, + "community": 95, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_75" }, @@ -43562,7 +44048,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L148", - "community": 21, + "community": 120, "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", "id": "tests_test_controllers_coverage_rationale_148" }, @@ -43589,7 +44075,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L228", - "community": 120, + "community": 21, "norm_label": "covers lines 87-93, 102: login success and failure paths.", "id": "tests_test_controllers_coverage_rationale_228" }, @@ -43877,7 +44363,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L889", - "community": 16, + "community": 263, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_889" }, @@ -43886,7 +44372,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L907", - "community": 16, + "community": 21, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_907" }, @@ -43958,7 +44444,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1037", - "community": 16, + "community": 94, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_1037" }, @@ -43967,7 +44453,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1040", - "community": 16, + "community": 94, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_1040" }, @@ -43976,7 +44462,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1050", - "community": 16, + "community": 94, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1050" }, @@ -44030,7 +44516,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1181", - "community": 21, + "community": 259, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1181" }, @@ -44201,7 +44687,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L28", - "community": 59, + "community": 499, "norm_label": "testcleanup", "id": "tests_test_http_session_coverage_testcleanup" }, @@ -44210,7 +44696,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L29", - "community": 59, + "community": 499, "norm_label": ".test_cleanup_closes_session()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_closes_session" }, @@ -44219,7 +44705,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L37", - "community": 59, + "community": 499, "norm_label": ".test_cleanup_no_session()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_no_session" }, @@ -44228,7 +44714,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L46", - "community": 59, + "community": 499, "norm_label": ".test_cleanup_exception_during_close()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_exception_during_close" }, @@ -44606,7 +45092,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L175", - "community": 48, + "community": 122, "norm_label": "testconcurrenthttpproxy", "id": "tests_test_thread_safety_testconcurrenthttpproxy" }, @@ -44615,7 +45101,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L178", - "community": 48, + "community": 122, "norm_label": ".test_proxy_returns_thread_local_sessions()", "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_proxy_returns_thread_local_sessions" }, @@ -44624,7 +45110,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L203", - "community": 48, + "community": 122, "norm_label": ".test_connectivity_uses_getsession()", "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_connectivity_uses_getsession" }, @@ -44633,7 +45119,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L204", - "community": 48, + "community": 122, "norm_label": "connectivity.checkserviceconnection must call getsession(), not use a global ses", "id": "tests_test_thread_safety_rationale_204" }, @@ -45668,7 +46154,7 @@ "file_type": "code", "source_file": "main/utils/http_session.py", "source_location": "L9", - "community": 59, + "community": 499, "norm_label": "get_session()", "id": "utils_http_session_get_session" }, @@ -45677,7 +46163,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L10", - "community": 59, + "community": 499, "norm_label": "return a requests.session for the current thread. sessions are created la", "id": "utils_http_session_rationale_10" }, @@ -45686,7 +46172,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L23", - "community": 59, + "community": 499, "norm_label": "close the main thread's session at interpreter shutdown.", "id": "utils_http_session_rationale_23" }, @@ -45695,7 +46181,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L203", - "community": 48, + "community": 122, "norm_label": ".test_connectivity_uses_get_session()", "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_connectivity_uses_get_session" }, @@ -46091,7 +46577,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L9", - "community": 59, + "community": 499, "norm_label": "return a requests.session for the current thread. sessions are created la", "id": "utils_http_session_rationale_9" }, @@ -46730,7 +47216,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L62", - "community": 527, + "community": 95, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_62" }, @@ -46739,7 +47225,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L61", - "community": 527, + "community": 95, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_61" }, @@ -46748,7 +47234,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L57", - "community": 527, + "community": 95, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_57" }, @@ -46757,7 +47243,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L49", - "community": 527, + "community": 95, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_49" }, @@ -47423,7 +47909,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L299", - "community": 509, + "community": 502, "norm_label": "testfilterbysearchterms", "id": "tests_test_stocks_cache_testfilterbysearchterms" }, @@ -47432,7 +47918,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L302", - "community": 509, + "community": 502, "norm_label": ".test_filter_with_tickerindex()", "id": "tests_test_stocks_cache_testfilterbysearchterms_test_filter_with_tickerindex" }, @@ -47693,7 +48179,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L300", - "community": 509, + "community": 502, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_cache_rationale_300" }, @@ -47702,7 +48188,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L303", - "community": 509, + "community": 502, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_cache_rationale_303" }, @@ -47981,7 +48467,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L302", - "community": 509, + "community": 502, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_cache_rationale_302" }, @@ -47990,7 +48476,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L305", - "community": 509, + "community": 502, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_cache_rationale_305" }, @@ -48080,7 +48566,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L304", - "community": 509, + "community": 502, "norm_label": ".test_filter_with_tickerindex()", "id": "tests_test_stocks_cache_testfilterbysearchterms_test_filter_with_tickerIndex" }, @@ -48224,7 +48710,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L123", - "community": 488, + "community": 63, "norm_label": "testlazydeserialization", "id": "tests_test_stocks_optimization_testlazydeserialization" }, @@ -48233,7 +48719,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L126", - "community": 488, + "community": 63, "norm_label": ".test_query_manager_has_deserialize_method()", "id": "tests_test_stocks_optimization_testlazydeserialization_test_query_manager_has_deserialize_method" }, @@ -48242,7 +48728,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L137", - "community": 259, + "community": 488, "norm_label": "testqueryoptimization", "id": "tests_test_stocks_optimization_testqueryoptimization" }, @@ -48251,7 +48737,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L140", - "community": 259, + "community": 488, "norm_label": ".test_all_optimizations_present()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_all_optimizations_present" }, @@ -48260,7 +48746,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L155", - "community": 259, + "community": 488, "norm_label": ".test_query_filter_uses_optimization()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_query_filter_uses_optimization" }, @@ -48494,7 +48980,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L124", - "community": 488, + "community": 63, "norm_label": "tests for lazy json deserialization", "id": "tests_test_stocks_optimization_rationale_124" }, @@ -48503,7 +48989,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L127", - "community": 488, + "community": 63, "norm_label": "query manager should have deserialize method", "id": "tests_test_stocks_optimization_rationale_127" }, @@ -48512,7 +48998,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L138", - "community": 259, + "community": 488, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_optimization_rationale_138" }, @@ -48521,7 +49007,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L141", - "community": 259, + "community": 488, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_optimization_rationale_141" }, @@ -48530,7 +49016,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L156", - "community": 259, + "community": 488, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_optimization_rationale_156" }, @@ -48957,7 +49443,7 @@ "label": "FastAPI", "file_type": "rationale", "source_file": "README.md", - "community": 132, + "community": 208, "norm_label": "fastapi", "id": "fastapi" }, @@ -51358,52 +51844,72 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L4", + "source_location": "L5", "weight": 1.0, - "confidence_score": 1.0, "source": "frontend_src_components_mdocmessage_jsx", - "target": "components_mdocmessage_registry" + "target": "components_mdocmessage_components", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L14", + "source_location": "L88", + "weight": 1.0, + "source": "frontend_src_components_mdocmessage_jsx", + "target": "components_mdocmessage_allowed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, "source": "frontend_src_components_mdocmessage_jsx", - "target": "components_mdocmessage_preprocessgeminitags" + "target": "components_mdocmessage_mdocmessage" + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/MessageList.jsx", + "source_location": "L2", + "weight": 1.0, + "confidence_score": 1.0, + "source": "frontend_src_components_mdocmessage_jsx", + "target": "frontend_src_components_messagelist_jsx" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L61", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, "source": "frontend_src_components_mdocmessage_jsx", - "target": "components_mdocmessage_workspacelink" + "target": "components_mdocmessage_registry" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/MdocMessage.jsx", - "source_location": "L54", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, "source": "frontend_src_components_mdocmessage_jsx", - "target": "components_mdocmessage_mdocmessage" + "target": "components_mdocmessage_preprocessgeminitags" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "frontend/src/components/MessageList.jsx", - "source_location": "L2", + "source_file": "frontend/src/components/MdocMessage.jsx", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, "source": "frontend_src_components_mdocmessage_jsx", - "target": "frontend_src_components_messagelist_jsx" + "target": "components_mdocmessage_workspacelink" }, { "relation": "imports_from", @@ -51854,6 +52360,132 @@ "source": "ui_button_button", "target": "lib_utils_cn" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L5", + "weight": 1.0, + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_card", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L18", + "weight": 1.0, + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_cardheader", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L31", + "weight": 1.0, + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_cardtitle", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L41", + "weight": 1.0, + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_carddescription", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L51", + "weight": 1.0, + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_cardcontent", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L57", + "weight": 1.0, + "source": "frontend_src_components_ui_card_jsx", + "target": "ui_card_cardfooter", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L9", + "weight": 1.0, + "source": "ui_card_card", + "target": "lib_utils_cn" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L22", + "weight": 1.0, + "source": "ui_card_cardheader", + "target": "lib_utils_cn" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L35", + "weight": 1.0, + "source": "ui_card_cardtitle", + "target": "lib_utils_cn" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L45", + "weight": 1.0, + "source": "ui_card_carddescription", + "target": "lib_utils_cn" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L53", + "weight": 1.0, + "source": "ui_card_cardcontent", + "target": "lib_utils_cn" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "frontend/src/components/ui/card.jsx", + "source_location": "L61", + "weight": 1.0, + "source": "ui_card_cardfooter", + "target": "lib_utils_cn" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -52364,6 +52996,96 @@ "source": "ui_separator_separator", "target": "lib_utils_cn" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L9", + "weight": 1.0, + "source": "frontend_src_lib_prometheus_components_jsx", + "target": "lib_prometheus_components_statcard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L39", + "weight": 1.0, + "source": "frontend_src_lib_prometheus_components_jsx", + "target": "lib_prometheus_components_datatable", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L82", + "weight": 1.0, + "source": "frontend_src_lib_prometheus_components_jsx", + "target": "lib_prometheus_components_barchart", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L123", + "weight": 1.0, + "source": "frontend_src_lib_prometheus_components_jsx", + "target": "lib_prometheus_components_contentcard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L148", + "weight": 1.0, + "source": "frontend_src_lib_prometheus_components_jsx", + "target": "lib_prometheus_components_tabgroup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L158", + "weight": 1.0, + "source": "frontend_src_lib_prometheus_components_jsx", + "target": "lib_prometheus_components_tabpanel", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L179", + "weight": 1.0, + "source": "frontend_src_lib_prometheus_components_jsx", + "target": "lib_prometheus_components_accordionitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L202", + "weight": 1.0, + "source": "frontend_src_lib_prometheus_components_jsx", + "target": "lib_prometheus_components_progressfill", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "frontend/src/lib/prometheus-components.jsx", + "source_location": "L226", + "weight": 1.0, + "source": "frontend_src_lib_prometheus_components_jsx", + "target": "lib_prometheus_components_divider", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -53403,9 +54125,9 @@ "source_file": "main/app/prometheus/agent.py", "source_location": "L26", "weight": 1.0, + "confidence_score": 1.0, "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_safefilter", - "confidence_score": 1.0 + "target": "prometheus_agent_safefilter" }, { "relation": "contains", @@ -54470,9 +55192,9 @@ "source_file": "main/app/prometheus/compact.py", "source_location": "L93", "weight": 1.0, + "confidence_score": 1.0, "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_loadfielddata", - "confidence_score": 1.0 + "target": "prometheus_compact_loadfielddata" }, { "relation": "contains", @@ -54480,9 +55202,9 @@ "source_file": "main/app/prometheus/compact.py", "source_location": "L119", "weight": 1.0, + "confidence_score": 1.0, "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_gethistoricalfields", - "confidence_score": 1.0 + "target": "prometheus_compact_gethistoricalfields" }, { "relation": "contains", @@ -54490,9 +55212,9 @@ "source_file": "main/app/prometheus/compact.py", "source_location": "L123", "weight": 1.0, + "confidence_score": 1.0, "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_getfundamentalcolumns", - "confidence_score": 1.0 + "target": "prometheus_compact_getfundamentalcolumns" }, { "relation": "contains", @@ -54500,9 +55222,9 @@ "source_file": "main/app/prometheus/compact.py", "source_location": "L127", "weight": 1.0, + "confidence_score": 1.0, "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_invalidatefielddata", - "confidence_score": 1.0 + "target": "prometheus_compact_invalidatefielddata" }, { "relation": "contains", @@ -54510,9 +55232,9 @@ "source_file": "main/app/prometheus/compact.py", "source_location": "L133", "weight": 1.0, + "confidence_score": 1.0, "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_getmetricregex", - "confidence_score": 1.0 + "target": "prometheus_compact_getmetricregex" }, { "relation": "contains", @@ -54655,9 +55377,9 @@ "source_file": "main/app/prometheus/compact.py", "source_location": "L120", "weight": 1.0, + "confidence_score": 1.0, "source": "prometheus_compact_gethistoricalfields", - "target": "prometheus_compact_loadfielddata", - "confidence_score": 1.0 + "target": "prometheus_compact_loadfielddata" }, { "relation": "calls", @@ -54666,9 +55388,9 @@ "source_file": "main/app/prometheus/compact.py", "source_location": "L124", "weight": 1.0, + "confidence_score": 1.0, "source": "prometheus_compact_getfundamentalcolumns", - "target": "prometheus_compact_loadfielddata", - "confidence_score": 1.0 + "target": "prometheus_compact_loadfielddata" }, { "relation": "calls", @@ -54677,9 +55399,9 @@ "source_file": "main/app/prometheus/compact.py", "source_location": "L136", "weight": 1.0, + "confidence_score": 1.0, "source": "prometheus_compact_getmetricregex", - "target": "prometheus_compact_loadfielddata", - "confidence_score": 1.0 + "target": "prometheus_compact_loadfielddata" }, { "relation": "calls", @@ -54688,9 +55410,9 @@ "source_file": "main/app/prometheus/compact.py", "source_location": "L151", "weight": 1.0, + "confidence_score": 1.0, "source": "prometheus_compact_extractmetrics", - "target": "prometheus_compact_getmetricregex", - "confidence_score": 1.0 + "target": "prometheus_compact_getmetricregex" }, { "relation": "calls", @@ -63246,9 +63968,9 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L96", "weight": 1.0, + "confidence_score": 1.0, "source": "controller_stocksapi_controller_rationale_96", - "target": "controller_stocksapi_controller_gethistorical", - "confidence_score": 1.0 + "target": "controller_stocksapi_controller_gethistorical" }, { "relation": "rationale_for", @@ -63347,9 +64069,9 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L161", "weight": 1.0, + "confidence_score": 1.0, "source": "controller_stocksapi_controller_rationale_161", - "target": "controller_stocksapi_controller_getfundamental", - "confidence_score": 1.0 + "target": "controller_stocksapi_controller_getfundamental" }, { "relation": "rationale_for", @@ -63438,9 +64160,9 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L229", "weight": 1.0, + "confidence_score": 1.0, "source": "controller_stocksapi_controller_rationale_229", - "target": "controller_stocksapi_controller_getcotations", - "confidence_score": 1.0 + "target": "controller_stocksapi_controller_getcotations" }, { "relation": "rationale_for", @@ -63539,9 +64261,9 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L283", "weight": 1.0, + "confidence_score": 1.0, "source": "controller_stocksapi_controller_rationale_283", - "target": "controller_stocksapi_controller_getlivecotation", - "confidence_score": 1.0 + "target": "controller_stocksapi_controller_getlivecotation" }, { "relation": "rationale_for", @@ -63651,9 +64373,9 @@ "source_file": "main/controller/user_controller.py", "source_location": "L16", "weight": 1.0, + "confidence_score": 1.0, "source": "main_controller_user_controller_py", - "target": "controller_user_controller_sessiontodict", - "confidence_score": 1.0 + "target": "controller_user_controller_sessiontodict" }, { "relation": "contains", @@ -63752,9 +64474,9 @@ "source_file": "main/controller/user_controller.py", "source_location": "L67", "weight": 1.0, + "confidence_score": 1.0, "source": "controller_user_controller_getsessions", - "target": "controller_user_controller_sessiontodict", - "confidence_score": 1.0 + "target": "controller_user_controller_sessiontodict" }, { "relation": "calls", @@ -63763,9 +64485,9 @@ "source_file": "main/controller/user_controller.py", "source_location": "L87", "weight": 1.0, + "confidence_score": 1.0, "source": "controller_user_controller_getcurrentsession", - "target": "controller_user_controller_sessiontodict", - "confidence_score": 1.0 + "target": "controller_user_controller_sessiontodict" }, { "relation": "contains", @@ -65918,6 +66640,16 @@ "source": "main_utils_errors_py", "target": "fastapi" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L13", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_errors_py", + "target": "utils_errors_errorresponse" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -65978,16 +66710,6 @@ "source": "main_utils_errors_py", "target": "utils_errors_registererrorhandlers" }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L13", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_errorresponse" - }, { "relation": "contains", "confidence": "EXTRACTED", @@ -66038,6 +66760,140 @@ "source": "main_utils_errors_py", "target": "utils_errors_register_error_handlers" }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L13", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_errors_errorresponse", + "target": "basemodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_errors_errorresponse", + "target": "utils_errors_builderrorresponse" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_samplebody" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testerrorresponsemodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testrequestcontextfilter" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testhttpexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testvalidationexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testgenericexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testsuccesspassthrough" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L56", + "weight": 1.0, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_structure" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L65", + "weight": 1.0, + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_with_detail_and_request_id" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/errors.py", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_errors_errorresponse", + "target": "utils_errors_build_error_response" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "basemodel", + "target": "tests_test_error_handlers_samplebody" + }, { "relation": "method", "confidence": "EXTRACTED", @@ -66204,17 +67060,6 @@ "source": "utils_errors_builderrorresponse", "target": "utils_errors_genericexceptionhandler" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L28", - "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_errors_errorresponse", - "target": "utils_errors_builderrorresponse" - }, { "relation": "calls", "context": "call", @@ -70510,6 +71355,346 @@ "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", "target": "plans_2026_08_15_workspace_frontend_codeblock_10" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L1", + "weight": 1.0, + "source": "docs_superpowers_plans_2026_08_17_openui_migration_md", + "target": "plans_2026_08_17_openui_migration_openui_migration_plan", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L20", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_global_constraints", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L30", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_file_structure", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L52", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L80", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L385", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L455", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L610", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_5_integration_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L640", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_verification_checklist", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L32", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_file_structure", + "target": "plans_2026_08_17_openui_migration_frontend_local_only_never_committed", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L43", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_file_structure", + "target": "plans_2026_08_17_openui_migration_backend_commit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L58", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L66", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L72", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_3", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L86", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library", + "target": "plans_2026_08_17_openui_migration_component_mapping", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L101", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_component_mapping", + "target": "plans_2026_08_17_openui_migration_codeblock_4", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L339", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_component_mapping", + "target": "plans_2026_08_17_openui_migration_codeblock_5", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L396", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_6", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L428", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_7", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L435", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_8", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L442", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_9", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L449", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_10", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L467", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_11", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L486", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_12", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L501", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_13", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L542", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_14", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L555", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_15", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L572", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_16", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L577", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_17", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L590", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_18", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L596", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_19", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L602", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_20", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L614", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_5_integration_test", + "target": "plans_2026_08_17_openui_migration_codeblock_21", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L620", + "weight": 1.0, + "source": "plans_2026_08_17_openui_migration_task_5_integration_test", + "target": "plans_2026_08_17_openui_migration_codeblock_22", + "confidence_score": 1.0 + }, { "relation": "method", "confidence": "EXTRACTED", @@ -70706,129 +71891,6 @@ "source": "controller_stocksapi_controller_rationale_24", "target": "controller_stocksapi_controller_jsonbytesresponse" }, - { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L13", - "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_errors_errorresponse", - "target": "basemodel" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_samplebody" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testerrorresponsemodel" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testrequestcontextfilter" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testhttpexceptionhandler" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testvalidationexceptionhandler" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testgenericexceptionhandler" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testsuccesspassthrough" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L56", - "weight": 1.0, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_structure" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L65", - "weight": 1.0, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_with_detail_and_request_id" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L30", - "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_errors_errorresponse", - "target": "utils_errors_build_error_response" - }, - { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L20", - "weight": 1.0, - "confidence_score": 1.0, - "source": "basemodel", - "target": "tests_test_error_handlers_samplebody" - }, { "relation": "imports", "context": "import", @@ -124332,5 +125394,5 @@ "label": "User Authentication & Authorization" } ], - "built_at_commit": "5f72f66a6069e4eab04233b2f63287165e3c6e2e" + "built_at_commit": "6e1a058c2ce5e10b394883e230cd9a41a4e2a13a" } \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index 1750976..2a37898 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -50,8 +50,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\App.resume.test.jsx": { - "mtime": 1786301174.944186, - "ast_hash": "fbbfeb199b290c128c9f52528639eb2e", + "mtime": 1786987291.1863744, + "ast_hash": "6d91b377e625c4557b45c94c13efb7fe", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\main.jsx": { @@ -75,13 +75,13 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\components\\MdocMessage.jsx": { - "mtime": 1786814804.4387589, - "ast_hash": "da3af8747d95785d9121836eb82e48be", + "mtime": 1786987145.254399, + "ast_hash": "af1f1ebf72920ac108da4c49d4cdbac8", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\components\\MessageList.jsx": { - "mtime": 1786821222.7263086, - "ast_hash": "b452605e7bc482488e4d63a8dc241f78", + "mtime": 1786987180.4653556, + "ast_hash": "ad43d2815843620e01c3b577be498647", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\components\\SessionSidebar.jsx": { @@ -109,6 +109,11 @@ "ast_hash": "cedd91b920c88fab7a1da7bc1d876a79", "semantic_hash": "" }, + "D:\\Repositories\\server\\frontend\\src\\components\\ui\\card.jsx": { + "mtime": 1786942763.3927803, + "ast_hash": "4814ad5bbeab61dc6f3be6737303e08d", + "semantic_hash": "" + }, "D:\\Repositories\\server\\frontend\\src\\components\\ui\\context-menu.jsx": { "mtime": 1785641918.039597, "ast_hash": "c57e988648a098d8055ec22da70d4c2b", @@ -134,6 +139,11 @@ "ast_hash": "72fd324120103da27aca78c0019a155e", "semantic_hash": "" }, + "D:\\Repositories\\server\\frontend\\src\\lib\\prometheus-components.jsx": { + "mtime": 1786941354.6459155, + "ast_hash": "9a50212ca0fd600ffd7bf2407bba8b92", + "semantic_hash": "" + }, "D:\\Repositories\\server\\frontend\\src\\lib\\utils.js": { "mtime": 1785640918.5280218, "ast_hash": "eff53006b93cfdef4aef148f202f1c3c", @@ -165,7 +175,7 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\prometheus\\agent.py": { - "mtime": 1786911668.173201, + "mtime": 1786986973.6696217, "ast_hash": "e745fed9187a711f2470513cf32ee5c1", "semantic_hash": "" }, @@ -265,8 +275,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\stocksapi_controller.py": { - "mtime": 1786910450.1948988, - "ast_hash": "d8d6cef9351c99f43baf1f82795ec851", + "mtime": 1787001738.5619817, + "ast_hash": "f5a8bba62d4834f6c4b8902b9d33545e", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\user_controller.py": { @@ -350,8 +360,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\utils\\errors.py": { - "mtime": 1786910321.3720095, - "ast_hash": "ec4e3edafb614b6fe5d36ad03a1a46ab", + "mtime": 1787000940.049234, + "ast_hash": "c2b4821f5e848dfe9154343dcefda2d2", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\utils\\http_session.py": { @@ -385,7 +395,7 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\utils\\models\\loader.py": { - "mtime": 1786897539.3964214, + "mtime": 1786986973.324071, "ast_hash": "53d7f85c943e3cac2acb81fb5ebe5a79", "semantic_hash": "" }, @@ -475,8 +485,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\TODO.md": { - "mtime": 1786897268.9688492, - "ast_hash": "13818cf4bbf70ee14fe0d647c7e27c97", + "mtime": 1786988620.230098, + "ast_hash": "2d222fe1a0552615d4a4bbdf740368af", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\authentication.md": { @@ -524,14 +534,19 @@ "ast_hash": "c9a9738eb866a1790f5deaa70cc2a293", "semantic_hash": "" }, + "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-08-17-openui-migration.md": { + "mtime": 1786937102.5842636, + "ast_hash": "a7c372b7b69cde0e9b3980f0836753b2", + "semantic_hash": "" + }, "D:\\Repositories\\server\\frontend\\index.html": { "mtime": 1785641936.6961534, "ast_hash": "7bbc5e5a7693a5828d34f9f4d7eb8125", "semantic_hash": "" }, - "D:\\Repositories\\server\\latency_benchmark.png": { - "mtime": 1786899358.7689898, - "ast_hash": "ed293a820c45972b2fc172cd513c0bc0", + "D:\\Repositories\\server\\frontend\\pnpm-workspace.yaml": { + "mtime": 1786942994.3379312, + "ast_hash": "bfa208c19916cf140e4497bf3b3eaf25", "semantic_hash": "" } } \ No newline at end of file From 3f5c8da16a8bd501382b83f9fc5c15e0eedd81ed Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 18 Aug 2026 02:53:52 -0300 Subject: [PATCH 02/50] fix: serialize with orjson inside sync_cache, per-thread event loop Cache now stores pre-serialized bytes instead of raw dicts. FastAPI passes bytes through as Response directly - zero serialization overhead on cache hits. Per-thread event loop avoids asyncio.run() creating and tearing down a new loop on every cache call. Benchmark: 4.8x faster under 200req concurrency (0.46s to 0.097s). --- main/app/stocks_api/sync_cache.py | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/main/app/stocks_api/sync_cache.py b/main/app/stocks_api/sync_cache.py index 8cc99b2..e3040fb 100644 --- a/main/app/stocks_api/sync_cache.py +++ b/main/app/stocks_api/sync_cache.py @@ -1,7 +1,9 @@ import asyncio +import threading from functools import wraps from typing import Any, Callable, TypeVar +import orjson from cashews import cache from cashews.key import get_cache_key @@ -12,18 +14,34 @@ F = TypeVar("F", bound=Callable[..., Any]) +# ponytail: per-thread event loop — avoids asyncio.run() creating + tearing down +# a new loop on every cache call (~13x faster single-thread, ~4x under 200-thread +# concurrency). Loop lives for the thread's lifetime (process lifetime in a web +# server). Upgrade path: none needed unless cashews drops sync compat. +_threadlocal = threading.local() + + +def _get_loop() -> asyncio.AbstractEventLoop: + try: + return _threadlocal.loop + except AttributeError: + _threadlocal.loop = asyncio.new_event_loop() + return _threadlocal.loop + def sync_cache(ttl: str, key: str) -> Callable[[F], F]: def decorator(func: F) -> F: @wraps(func) def wrapper(*args: Any, **kwargs: Any) -> Any: cache_key = get_cache_key(func, key, args, kwargs) - cached = asyncio.run(cache.get(cache_key, default=_MISS)) + loop = _get_loop() + cached = loop.run_until_complete(cache.get(cache_key, default=_MISS)) if cached is not _MISS: - return cached + return cached # ponytail: pre-serialized bytes, FastAPI passes through result = func(*args, **kwargs) - asyncio.run(cache.set(cache_key, result, expire=ttl)) - return result + serialized = orjson.dumps(result) + loop.run_until_complete(cache.set(cache_key, serialized, expire=ttl)) + return serialized # ponytail: pre-serialized bytes, FastAPI passes through return wrapper # type: ignore[return-value] From 8e4423998819c183b20e75cf8743feaff756e0e0 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Wed, 19 Aug 2026 00:31:15 -0300 Subject: [PATCH 03/50] slop test --- main/app/stocks_api/sync_cache.py | 50 +++++++++++-------------- main/controller/stocksapi_controller.py | 4 -- main/controller/user_controller.py | 4 +- tests/test_prometheus_auth_coverage.py | 8 +--- 4 files changed, 25 insertions(+), 41 deletions(-) diff --git a/main/app/stocks_api/sync_cache.py b/main/app/stocks_api/sync_cache.py index e3040fb..2c046ed 100644 --- a/main/app/stocks_api/sync_cache.py +++ b/main/app/stocks_api/sync_cache.py @@ -1,47 +1,41 @@ import asyncio -import threading from functools import wraps from typing import Any, Callable, TypeVar -import orjson from cashews import cache from cashews.key import get_cache_key -try: - from cashews.defaults import _empty as _MISS -except ImportError: # pragma: no cover - private import fallback - _MISS = object() - F = TypeVar("F", bound=Callable[..., Any]) -# ponytail: per-thread event loop — avoids asyncio.run() creating + tearing down -# a new loop on every cache call (~13x faster single-thread, ~4x under 200-thread -# concurrency). Loop lives for the thread's lifetime (process lifetime in a web -# server). Upgrade path: none needed unless cashews drops sync compat. -_threadlocal = threading.local() - +cache.setup("mem://") -def _get_loop() -> asyncio.AbstractEventLoop: - try: - return _threadlocal.loop - except AttributeError: - _threadlocal.loop = asyncio.new_event_loop() - return _threadlocal.loop - -def sync_cache(ttl: str, key: str) -> Callable[[F], F]: +def sync_cache( + ttl: str, + key: str, +) -> Callable[[F], F]: def decorator(func: F) -> F: @wraps(func) def wrapper(*args: Any, **kwargs: Any) -> Any: cache_key = get_cache_key(func, key, args, kwargs) - loop = _get_loop() - cached = loop.run_until_complete(cache.get(cache_key, default=_MISS)) - if cached is not _MISS: - return cached # ponytail: pre-serialized bytes, FastAPI passes through + + loop = asyncio.new_event_loop() + try: + cached = loop.run_until_complete(cache.get(cache_key)) + if cached is not None: + return cached + finally: + loop.close() + result = func(*args, **kwargs) - serialized = orjson.dumps(result) - loop.run_until_complete(cache.set(cache_key, serialized, expire=ttl)) - return serialized # ponytail: pre-serialized bytes, FastAPI passes through + + loop = asyncio.new_event_loop() + try: + loop.run_until_complete(cache.set(cache_key, result, expire=ttl)) + finally: + loop.close() + + return result return wrapper # type: ignore[return-value] diff --git a/main/controller/stocksapi_controller.py b/main/controller/stocksapi_controller.py index 325f657..32ebb0d 100644 --- a/main/controller/stocksapi_controller.py +++ b/main/controller/stocksapi_controller.py @@ -1,8 +1,6 @@ from datetime import datetime, timezone import logging - -from cashews import cache from fastapi import APIRouter, Depends, Query, HTTPException, Response @@ -15,8 +13,6 @@ logger = logging.getLogger(__name__) -cache.setup("mem://") - router = APIRouter(prefix="/stocks", tags=["Stocks API"]) diff --git a/main/controller/user_controller.py b/main/controller/user_controller.py index 1124357..9c608b8 100644 --- a/main/controller/user_controller.py +++ b/main/controller/user_controller.py @@ -28,7 +28,6 @@ def sessionToDict(s, isCurrent=False): } - @router.get("/health") def health(request: Request): return {"status": "ok", "service": "user"} @@ -64,8 +63,7 @@ def getSessions( return { "sessions": [ - sessionToDict(s, s.sessionId == currentSessionId if currentSessionId else False) - for s in paginatedSessions + sessionToDict(s, s.sessionId == currentSessionId if currentSessionId else False) for s in paginatedSessions ], "total": total, "active": activeCount, diff --git a/tests/test_prometheus_auth_coverage.py b/tests/test_prometheus_auth_coverage.py index cd791c2..5a56653 100644 --- a/tests/test_prometheus_auth_coverage.py +++ b/tests/test_prometheus_auth_coverage.py @@ -121,9 +121,7 @@ async def fake_stream(*args, **kwargs): @patch("main.app.prometheus.agent.PrometheusChatManager") @patch("main.app.prometheus.agent.Config") @patch("main.app.prometheus.agent.genai") - async def test_stream_message_yields_text_chunks( - self, mock_genai, mock_config, mock_chat, mock_pool_cls - ): + async def test_stream_message_yields_text_chunks(self, mock_genai, mock_config, mock_chat, mock_pool_cls): """streamMessage must yield dict chunks from async iterator.""" mock_config.PROMETHEUS = MagicMock(GEMINI_API_KEY="key") mock_config.DEBUG_MODE = True @@ -170,9 +168,7 @@ async def fake_aiter(): @patch("main.app.prometheus.agent.PrometheusChatManager") @patch("main.app.prometheus.agent.Config") @patch("main.app.prometheus.agent.genai") - async def test_stream_message_handles_function_calls( - self, mock_genai, mock_config, mock_chat, mock_pool_cls - ): + async def test_stream_message_handles_function_calls(self, mock_genai, mock_config, mock_chat, mock_pool_cls): """streamMessage must handle function_calls as a list (not dict).""" mock_config.PROMETHEUS = MagicMock(GEMINI_API_KEY="key") mock_config.DEBUG_MODE = True From 31cddb40b4846774c3640dd52fe33c4f672c3a66 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Wed, 19 Aug 2026 02:29:26 -0300 Subject: [PATCH 04/50] slop cache --- graphify-out/.graphify_labels.json | 9 + graphify-out/GRAPH_REPORT.md | 303 +++--- graphify-out/graph.json | 1263 ++++++++++++----------- graphify-out/manifest.json | 16 +- main/app/stocks_api/sync_cache.py | 32 +- main/controller/stocksapi_controller.py | 29 +- 6 files changed, 898 insertions(+), 754 deletions(-) diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index da3363e..29e61f4 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -507,13 +507,22 @@ "505": "Community 505", "506": "Community 506", "507": "Community 507", + "508": "Community 508", + "509": "Community 509", "510": "Community 510", "511": "Community 511", + "512": "Community 512", "513": "Community 513", "514": "Community 514", "515": "Community 515", "516": "Community 516", + "517": "Community 517", + "518": "Community 518", + "519": "Community 519", "520": "Community 520", + "521": "Community 521", "522": "Community 522", + "523": "Community 523", + "524": "Community 524", "527": "Community 527" } diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 0320906..765d49d 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ -# Graph Report - server (2026-08-17) +# Graph Report - server (2026-08-19) ## Corpus Check -- 105 files · ~49,247 words +- 105 files · ~49,230 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 5515 nodes · 7407 edges · 517 communities (295 shown, 222 thin omitted) +- 5520 nodes · 7412 edges · 526 communities (303 shown, 223 thin omitted) - Extraction: 83% EXTRACTED · 17% INFERRED · 0% AMBIGUOUS · INFERRED: 1227 edges (avg confidence: 0.69) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `6e1a058c` +- Built from commit: `8e442399` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -513,9 +513,18 @@ - [[_COMMUNITY_Community 505|Community 505]] - [[_COMMUNITY_Community 506|Community 506]] - [[_COMMUNITY_Community 507|Community 507]] +- [[_COMMUNITY_Community 508|Community 508]] +- [[_COMMUNITY_Community 509|Community 509]] - [[_COMMUNITY_Community 510|Community 510]] +- [[_COMMUNITY_Community 512|Community 512]] +- [[_COMMUNITY_Community 517|Community 517]] +- [[_COMMUNITY_Community 518|Community 518]] +- [[_COMMUNITY_Community 519|Community 519]] - [[_COMMUNITY_Community 520|Community 520]] +- [[_COMMUNITY_Community 521|Community 521]] - [[_COMMUNITY_Community 522|Community 522]] +- [[_COMMUNITY_Community 523|Community 523]] +- [[_COMMUNITY_Community 524|Community 524]] - [[_COMMUNITY_Community 527|Community 527]] ## God Nodes (most connected - your core abstractions) @@ -535,12 +544,12 @@ main/app/stocks_api/cache.py → tests/test_stocks_api_coverage.py - `StocksCacheManager` --calls--> `test_cache_scheduler_starts_daemon_thread()` [INFERRED] main/app/stocks_api/cache.py → tests/test_stocks_api_coverage.py -- `HarnessState` --uses--> `TestCheckCache` [INFERRED] - main/app/prometheus/state.py → tests/test_sandbox_tools.py -- `HarnessState` --uses--> `TestDispatchToolCallSandbox` [INFERRED] - main/app/prometheus/state.py → tests/test_sandbox_tools.py -- `ResultCache` --calls--> `cache()` [INFERRED] - main/app/prometheus/cache.py → tests/test_cache.py +- `HarnessState` --uses--> `TestGetState` [INFERRED] + main/app/prometheus/state.py → tests/test_state_tools.py +- `HarnessState` --uses--> `TestSetState` [INFERRED] + main/app/prometheus/state.py → tests/test_state_tools.py +- `HarnessState` --uses--> `TestStateDispatch` [INFERRED] + main/app/prometheus/state.py → tests/test_state_tools.py ## Hyperedges (group relationships) - **Authentication Module** — AuthenticationManager, SessionManager, auth_util, auth_constants, getGoogleSSO [INFERRED] @@ -550,7 +559,7 @@ - **Configuration & Database Infrastructure** — config_Config, config_engine, config_stocksEngine [INFERRED] - **User Authentication & Authorization** — user_service, authentication, user_roles, permission_system [INFERRED] -## Communities (517 total, 222 thin omitted) +## Communities (526 total, 223 thin omitted) ### Community 0 - "Stocks API Endpoints" Cohesion: 0.0 @@ -565,8 +574,8 @@ Cohesion: 0.13 Nodes (21): Thin async wrapper around the CubeSandbox/E2B HTTP API. All methods are sta, SandboxManager, _mock_forgevm(), Unit tests for SandboxManager — HTTP calls mocked via a fake client class., Wire up mock forgevm AsyncClient that returns sandbox with all methods., Wire up mock forgevm AsyncClient that returns sandbox with all methods., test_create_sandbox(), test_destroy_sandbox() (+13 more) ### Community 3 - "Prometheus Agent" -Cohesion: 0.06 -Nodes (28): Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering cache.py lines 28-76., Non-JSON-dict/list string is left as-is., Tests covering cache.py lines 28-76. (+20 more) +Cohesion: 0.08 +Nodes (23): Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering cache.py lines 28-76., Tests covering cache.py lines 28-76., Regression: is_string_dtype fails when column has strings + None (pandas 2.x). (+15 more) ### Community 4 - "Data Models & Types" Cohesion: 0.11 @@ -586,7 +595,7 @@ Nodes (29): Algorithmic Compression (`compact.py`) Implementation Plan, code:pyt ### Community 8 - "Device Detection" Cohesion: 0.06 -Nodes (28): HarnessState, Retrieve a value from state. Returns default if key not found., Return a copy of the current state., Format state as a string for injection into the LLM context., Check if state changed since last reset., Reset the changed flag. Returns the previous state., Clear all state data., In-memory state dict that persists across loop iterations within a single reques (+20 more) +Nodes (15): HarnessState, Retrieve a value from state. Returns default if key not found., Return a copy of the current state., Format state as a string for injection into the LLM context., Check if state changed since last reset., Reset the changed flag. Returns the previous state., Clear all state data., In-memory state dict that persists across loop iterations within a single reques (+7 more) ### Community 9 - "Server Configuration" Cohesion: 0.11 @@ -605,7 +614,7 @@ Cohesion: 0.08 Nodes (13): LoopEvent, LoopEvent model for observable agent loops., LoopLogger, LoopLogger — batched event logging for observable agent loops., Queue events during a loop, flush to DB at end., Log a generic event with optional metadata., Log a tool invocation., Log end of a turn with timing. (+5 more) ### Community 13 - "Prometheus Tools" -Cohesion: 0.27 +Cohesion: 0.24 Nodes (9): batchCosineSimilarity(), Empty matrix → empty array., Single row matches cosine_similarity., Multiple rows ranked correctly., Zero query → all zeros., TestBatchCosineSimilarity, batch_cosine_similarity(), batchCosineSimilarity() (+1 more) ### Community 14 - "User Roles & Permissions" @@ -617,12 +626,12 @@ Cohesion: 0.05 Nodes (38): code:block1 (User 123: "Analyze PETR4 vs VALE3 correlation"), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (TOOL_REGISTRY: dict[str, Any] = {), code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool), code:python (import pytest), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (async def streamMessage(self, query=None, sessionId=None, db), code:python (## Code Sandbox (On-Demand)) (+30 more) ### Community 16 - "Community 16" -Cohesion: 0.1 -Nodes (17): Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}., Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}., Covers lines 65-68: title updated successfully., Covers lines 65-68: title updated successfully., Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}., Covers lines 65-68: title updated successfully., Covers lines 62-63: not the session owner., Covers lines 62-63: not the session owner. (+9 more) +Cohesion: 0.05 +Nodes (34): _make_prometheus_client(), Generic Exception in chat propagates to FastAPI's default 500 handler., Generic Exception in chat propagates to FastAPI's default 500 handler., Generic Exception in chat propagates to FastAPI's default 500 handler., Generic Exception in chat propagates via SSE error event., Covers line 125, 126-128: generic Exception in chat., Return (client, app) with prometheus router and mocked deps., Covers lines 33-36: GET /prometheus/sessions. (+26 more) ### Community 17 - "Community 17" -Cohesion: 0.07 -Nodes (26): Two dates in the range, both valid., Two dates in the range, both valid., Two dates in the range, both valid., Two dates in the range, both valid., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., search.strip() == '' should still dedup (line 181)., Search with no index match falls back to string startswith. (+18 more) +Cohesion: 0.08 +Nodes (24): Two dates in the range, both valid., Two dates in the range, both valid., Two dates in the range, both valid., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., search.strip() == '' should still dedup (line 181)., Search with no index match falls back to string startswith., Two dates in the range, both valid. (+16 more) ### Community 18 - "Community 18" Cohesion: 0.07 @@ -637,8 +646,8 @@ Cohesion: 0.06 Nodes (35): 1. Memory System (B+), 2. Summarizer/Episodes (B), 3. Loop Events (A-), 4. Core Architecture (B+), 5. Security (B+), 6. Performance (B), 7. Code Quality (B), After (B+) (+27 more) ### Community 21 - "Community 21" -Cohesion: 0.05 -Nodes (38): AuthenticationManager, IntFlag, Covers line 28: GET /auth/health., Covers line 28: GET /auth/health., Covers line 13: UserManager.__init__., Covers line 13: UserManager.__init__., Covers line 13: UserManager.__init__., Covers line 13: UserManager.__init__. (+30 more) +Cohesion: 0.06 +Nodes (38): AuthenticationManager, IntFlag, Covers line 28: GET /auth/health., Covers line 28: GET /auth/health., Covers line 16: empty password raises ValueError., Covers line 16: empty password raises ValueError., Covers line 16: empty password raises ValueError., Covers line 16: empty password raises ValueError. (+30 more) ### Community 22 - "Community 22" Cohesion: 0.07 @@ -685,8 +694,8 @@ Cohesion: 0.11 Nodes (12): ToolContext — bundles all dependencies for tool execution. Replace passing user, Single dependency bundle for tool execution. Created once per request in ag, Extract userId from user dict if not explicitly set., ToolContext, Unit tests for ToolContext dataclass., Dataclass equality works out of the box., Explicit userId takes precedence over user dict., Two contexts share no mutable defaults. (+4 more) ### Community 33 - "Community 33" -Cohesion: 0.06 -Nodes (24): BaseHTTPMiddleware, BaseModel, app(), Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler (+16 more) +Cohesion: 0.12 +Nodes (14): BaseHTTPMiddleware, BaseModel, Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter (+6 more) ### Community 34 - "Community 34" Cohesion: 0.11 @@ -709,8 +718,8 @@ Cohesion: 0.07 Nodes (27): code:json ([), code:javascript (const loadHistory = async (sid) => {), code:jsx (export default function MessageList({ messages, toolEvents, ), code:javascript (const loadHistory = async (sid) => {), code:jsx (export default function AgentLoop({ toolEvents, turnMetrics ), code:bash (git add frontend/src/App.jsx frontend/src/components/Message), code:bash (docker-compose up -d --build), code:sql (SELECT COUNT(*) FROM prometheus WHERE JSON_CONTAINS_PATH(his) (+19 more) ### Community 39 - "Community 39" -Cohesion: 0.06 -Nodes (31): Invalid date -> inner 400 passes through (not wrapped as 500)., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., search.strip() == '' should still dedup (line 181)., search.strip() == '' should still dedup (line 181)., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500. (+23 more) +Cohesion: 0.08 +Nodes (24): search.strip() == '' should still dedup (line 181)., search.strip() == '' should still dedup (line 181)., search.strip() == '' should still dedup (line 181)., DataFrame without TIME column., Invalid date -> inner 400 caught by outer except -> 500., DataFrame without TIME column., DataFrame without TIME column., search.strip() == '' should still dedup (line 181). (+16 more) ### Community 40 - "Community 40" Cohesion: 0.12 @@ -721,11 +730,11 @@ Cohesion: 0.08 Nodes (25): API Endpoints, Authentication Management, code:env (#), code:bash (curl http://localhost:3200/auth/health), code:bash (curl -X POST "http://localhost:3200/auth/register" \), code:bash (curl -X POST "http://localhost:3200/auth/login" \), code:bash (curl -X GET "http://localhost:3200/auth/me" \), code:bash (curl -X POST "http://localhost:3200/auth/logout" \) (+17 more) ### Community 42 - "Community 42" -Cohesion: 0.09 -Nodes (16): StocksCacheManager, Tests for dynamic ticker index feature, Ticker index should be built when cache is loaded, Ticker index should contain all tickers from cache, Ticker index should be case-insensitive, Looking up ticker should return valid row index, Ticker index should be rebuilt when cache refreshes, TestTickerIndex (+8 more) +Cohesion: 0.1 +Nodes (15): StocksCacheManager, Tests for dynamic ticker index feature, Ticker index should be built when cache is loaded, Ticker index should contain all tickers from cache, Ticker index should be case-insensitive, Looking up ticker should return valid row index, Ticker index should be rebuilt when cache refreshes, TestTickerIndex (+7 more) ### Community 43 - "Community 43" -Cohesion: 0.16 +Cohesion: 0.18 Nodes (4): hashPassword(), verifyPassword(), TestAuthUtil, TestAuthUtilEdgeCases ### Community 44 - "Community 44" @@ -737,8 +746,8 @@ Cohesion: 0.09 Nodes (5): Tests for main/utils/roles.py — covers requirePermission and edge cases., TestCheckAccess, TestPermissionAll, TestRequirePermission, TestRolesHierarchy ### Community 46 - "Community 46" -Cohesion: 0.09 -Nodes (21): Regression: queryFundamental must not mutate the shared cache TIME column., Regression: queryFundamental must not mutate the shared cache TIME column., Regression: queryFundamental must not mutate the shared cache TIME column., Single invalid date -> inner 400 passes through., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Invalid fields now raise 400 with actionable error message. (+13 more) +Cohesion: 0.11 +Nodes (17): Single invalid date -> inner 400 passes through., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Invalid fields now raise 400 with actionable error message., Fields that don't exist in the dataframe are filtered out., search.strip() == '' should still dedup (line 181)., Fields that don't exist in the dataframe are filtered out. (+9 more) ### Community 47 - "Community 47" Cohesion: 0.1 @@ -757,7 +766,7 @@ Cohesion: 0.07 Nodes (25): code:python (baseScore = Column(Float, default=1.0)), code:bash (git add main/app/prometheus/memory.py tests/test_memory_extr), code:python (from unittest.mock import patch), code:python (if session and session.history:), code:python (if session and session.history:), code:bash (git add main/app/prometheus/agent.py tests/test_streammessag), code:python (from main.app.prometheus.agent import SYSTEM_PROMPT), code:python (### Memory System) (+17 more) ### Community 51 - "Community 51" -Cohesion: 0.12 +Cohesion: 0.13 Nodes (10): Custom SQLAlchemy type for storing float32 embeddings as MySQL BLOB., VectorType, VectorType, VectorType: None passes through., VectorType: rejects wrong dimension., VectorType: handles negative floats., VectorType: random 384-dim vector roundtrips., VectorType: list → bytes → list preserves data. (+2 more) ### Community 52 - "Community 52" @@ -765,20 +774,20 @@ Cohesion: 0.08 Nodes (7): Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., TestPrometheusChatManager ### Community 53 - "Community 53" -Cohesion: 0.11 -Nodes (24): applyUpdate(), archiveDead(), count_memories(), countMemories(), decayScores(), deleteMemory(), extract(), findSimilarKey() (+16 more) +Cohesion: 0.12 +Nodes (21): archiveDead(), count_memories(), countMemories(), decayScores(), deleteMemory(), extract(), findSimilarKey(), _fulltext_search() (+13 more) ### Community 54 - "Community 54" -Cohesion: 0.06 -Nodes (30): memoryMaintenance(), create_memories(), Zero access but score still above threshold → not archived., Even with low score, if accessed → not archived., Even with low score, if accessed → not archived., Already archived memories are skipped., Already archived memories are skipped., Decay happens first, then archive check with new scores. (+22 more) +Cohesion: 0.1 +Nodes (16): initialize(), memoryMaintenance(), Zero access but score still above threshold → not archived., Even with low score, if accessed → not archived., Even with low score, if accessed → not archived., Already archived memories are skipped., Already archived memories are skipped., Score below threshold + accessCount=0 + 90+ days → archived. (+8 more) ### Community 55 - "Community 55" Cohesion: 0.11 Nodes (17): Backend Contract (source of truth for api.js), code:js (describe('workspace API', () => {), code:bash (git add frontend/src/components/InputBar.jsx frontend/tests/), code:js (export async function listWorkspaceFiles(path = '/workspace'), code:bash (git add frontend/src/api.js frontend/tests/api.test.js front), code:jsx (import { describe, it, expect, vi, beforeEach } from 'vitest), code:jsx (// SettingsDialog.jsx — workspace files grid), code:jsx (